将ASCII码表示的十进制数转换为二进制数(汇编语言)

DATA SEGMENT ;定义源数据段
MSR DB '00012'
LEN EQU $-MSR
DATA ENDS
CODE SEGMENT ;定义代码段
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS,AX
MOV SI, OFFSET MSR
MOV CX,LEN-1
MOV AL, DS:[SI] ;开始传输数据
MOV AH,0
SUB AX,30H
NEXT1: MOV BX, 0AH
MUL BX ; 将AX中的数乘以10,所得的结果高位保存到DX中,低位保存到AX中
INC SI
MOV DL,DS:[SI]
MOV DH,0
SUB DX,30H ;将数字对应的ASCII码转换成响应的二进制数
ADD AX,DX
DEC CX
JNZ NEXT1
MOV CL,16 ; CL用作循环NEXT2的计数器,因为5位十进制数转化成二进制只有十六位,所以循环次数为16次
MOV BX,AX
NEXT2: ROL BX,1
MOV DL,BL
AND DL,01H
ADD DL,30H ;把BX中的数以二进制形式输出
MOV AH,2H
INT 21H
DEC CL
JNZ NEXT2
MOV AX,4C00H
INT 21H
CODE ENDS
END START

原文地址:https://www.cnblogs.com/rourou123/p/7751783.html