主题:[原创]十进制转化成二进制
wanghuifang052035
[专家分:0] 发布于 2008-11-26 21:29:00
帮帮忙··· 十进制转化成二进制的程序用汇编语言
指的是所有的十进制 要有写程序的思路
回复列表 (共5个回复)
沙发
死活人他哥哥活死人 [专家分:10] 发布于 2008-11-27 11:13:00
code segment
assume cs:code
next:mov ah,1;从键盘输入一个十进制数
int 21h
cmp al,30h
jb next
cmp al,39h
ja next
and al,0fh
mov bl,al
mov cx,8
next1:rol bl,1:运用循环左移输出每一位
mov dl,bl
and dl,1
add dl,30h
mov ah,2
int 21h
loop next1
mov ah,4ch
int 21h
code ends
end next
板凳
wanghuifang052035 [专家分:0] 发布于 2008-11-27 13:38:00
不是指一个十进制的数 而是所以的十进制数
在运行程序后可以在里面加任意数字 多能显示出二进制的相应数
3 楼
wanghuifang052035 [专家分:0] 发布于 2008-11-27 21:23:00
你会不会用除法取余的方法做这个题 把随意的十进制数放到程序里多能用 利用除了以后取余的方法编写这个十进制转换二进制的编译器的程序
4 楼
wanghuifang052035 [专家分:0] 发布于 2008-11-28 13:50:00
DATAS SEGMENT
INF1 DB "PLEASE INPUT A NUMBER(0-65536)$:" ;提示信息
IBUF DB 7,0,6 DUP(77H);键盘接收缓冲区
DATAS ENDS
CODE SEGMENT
ASSUME: CS:CODE,DS:DATAS
START:
MOV DX,OFFSET INF1 ;3条指令的功能为在屏幕上显示提出信息字符串
MOV AH,09H
INT 21H
MOV DX,OFFSET IBUF ;3条指令的功能为从键盘接收字符串
MOV AH,0AH
INT 21H
MOV CL,IBUF+1;2条指令的功能为将实际接收的字符数存入CX
MOV CH,0
MOV SI,OFFSET IBUF+2 ;将存储实际接收字符的首地址送SI
MOV AX,0 ;
AGAIN:
MOV DX,10 ;2条指令的功能为(AX) <=(AX)*10
MUL DX ;
AND BYTE PTR[SI],0FH ;将相应存储单元中的字符ASCII转换为数字
ADD AL,[SI];2条指令的功能为(AX) <=(AX)+数字
ADC AH,0;
INC SI ;调整SI指向下一个单元
LOOP AGAIN;循环执行,完成(AX) <=(AX)*10+[SI]
MOV AH,4CH
INT 21H
CODE ENDS
END START
帮我把这个十进制转换二进制的程序改改 有几处错的
5 楼
小牛斑斑 [专家分:1210] 发布于 2008-11-28 16:28:00
告诉你一个思路,所有的数据在寄存器中都是以二进制的形式存储的,如果你想把它们以二进制的方式显示出来,可以通过移位的方法来获得,比如输入21,它会以15h的形式在计算机中存储也就是00010101,把最右边(或最左边)一位移到标志位中,然后判断是0或者1,显示出来,就ok了
我来回复