📄 hw10-2.asm
字号:
TITLE DECIMAL TO BINARY
DATA SEGMENT
P1 DB 'Input DECIMAL(5): $' ;提示信息
BIN16 DW ?
DEC5 DB 5 DUP(0) ;转换后的十进制数
CONST DW 10000,1000,100,10,1
COUNT EQU 5
P2 DB 0AH,0DH,'The Result is: $'
BINASC DB 0AH,0DH,16 DUP(0),'$'
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK1,DS:DATA
MAIN: MOV AX,DATA
MOV DS,AX
MOV CH,5 ;设置十进制ASCII码的输入个数
XOR BX,BX ;将BX寄存器清零
LEA DI,DEC5 ;取转换后的十进制首址
LEA DX,P1 ;显示提示信息
MOV AH,09H
INT 21H
LOP1: MOV AH,01H ;DOS系统功能调用,从键盘输入数字
INT 21H
CMP AL,'0' ;若输入的数字小于‘0’,则重新输入
JB LOP1
CMP AL,'9' ;若输入的数字大于‘9’,则重输
JA LOP1
SUB AL,30H ;转换成十进制数数字
MOV [DI],AL ;保存转换后的十进制数
INC DI
DEC CH ;输入字符满5个了吗?若没有,请继续
JNZ LOP1
CALL DECtoBIN ;调用函数
LEA DI,BINASC
CALL BINtoASC ;调用函数
LEA DX,P2
MOV AH,09H
INT 21H
LEA DX,BINASC
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
DECtoBIN PROC
XOR AX,AX
LEA DI,DEC5
LEA SI,CONST
MOV CH,COUNT
LOP2: MOV CL,[DI]
CMP CL,0
JE NEXT1
LOP3: ADD AX,[SI]
DEC CL
JNE LOP3
NEXT1: INC DI
INC SI
INC SI
DEC CH
JNE LOP2
MOV BIN16,AX
RET
DECtoBIN ENDP
BINtoASC PROC
MOV CX,16
LOP4: ROL AX,1
MOV BL,AL
AND BL,01H
OR BL,30H
MOV [DI],BL
INC DI
LOOP LOP4
RET
BINtoASC ENDP
MOV AH,4CH
INT 21H
CODE ENDS
END MAIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -