回 帖 发 新 帖 刷新版面

主题:[原创]十进制转化成二进制

帮帮忙··· 十进制转化成二进制的程序用汇编语言
   指的是所有的十进制   要有写程序的思路

回复列表 (共5个回复)

沙发


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
   






板凳

不是指一个十进制的数  而是所以的十进制数  
     在运行程序后可以在里面加任意数字  多能显示出二进制的相应数

3 楼

你会不会用除法取余的方法做这个题  把随意的十进制数放到程序里多能用  利用除了以后取余的方法编写这个十进制转换二进制的编译器的程序

4 楼

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 楼

告诉你一个思路,所有的数据在寄存器中都是以二进制的形式存储的,如果你想把它们以二进制的方式显示出来,可以通过移位的方法来获得,比如输入21,它会以15h的形式在计算机中存储也就是00010101,把最右边(或最左边)一位移到标志位中,然后判断是0或者1,显示出来,就ok了

我来回复

您尚未登录,请登录后再回复。点此登录或注册