实验要求:
实现16位二进制对十进制的转换。要求当二进制输入完成后立即显示十进制的结果。
方法一:通过比较法实现转换
.486
CMPDISP MACRO NN ;十进制逐位输出,DL存储的就是每一位的值
LOCAL LAST,NEXT
MOV DL,0
LAST:CMP BX,NN
JC NEXT
INC DL
SUB BX,NN
JMP LAST
NEXT:ADD DL,30H
MOV AH ,2
INT 21H
ENDM
;-------------------------------------
DATA SEGMENT USE16
MSG1 DB 'Please input a 16-bit binary number',0DH,0AH,'$'
DATA ENDS
;-------------------------------------
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV AH,9
MOV DX,OFFSET MSG1 ;显示提示标志,请输入
INT 21H
MOV CX,16
MOV BX,0 ;BX作为存储转换后的值
AGAIN:MOV AH,1
INT 21H ;逐个键入
SUB AL,30H
SHL BL,1
ADD BL,AL ;将数据存入到BL中,
CMP CX,9 ;BL是最多存储8位(9-16),如果超过8位,把BL向BH移动
JZ