3.asm
来自「将用户从键盘输入的十进制数(不超过65535)转换成为十六进制数并显示。如果输入」· 汇编 代码 · 共 50 行
ASM
50 行
.MODEL SMALL
.DATA
MESSAGE DB 0DH,0AH,'ERROR!$'
TABLE DB '0123456789ABCDEF' ;十六进制数对应ASCII表
SHOW DB 0DH,0AH,'$'
.CODE
.STARTUP
MOV BX,10
MOV SI,0 ;保存转换后的十六进制数
MOV CX,4
AGAIN:MOV AH,1
INT 21H
CMP AL,0DH ;输入的是结束符(回车)
JE DISP
CMP AL,3AH ;若输入的不是数字,则显示信息提示
JNC ERROR
CMP AL,30H
JC ERROR
AND AX,000FH ;ASCII码转换为数字
XCHG AX,SI ;SI<=SI*10+AX
MUL BX
ADD SI,AX
JMP AGAIN
;显示十六进制数
DISP: LEA DX,SHOW
MOV AH,9
INT 21H
MOV DX,SI
LEA BX,TABLE
NEXT: ROL DX,1
ROL DX,1
ROL DX,1
ROL DX,1 ;从最高位到最低位依次转换
PUSH DX
MOV AL,DL
AND AL,0FH
XLAT ;查表得ASCII码并输出
MOV DL,AL
MOV AH,2
INT 21H
POP DX
LOOP NEXT
JMP EXIT
ERROR:LEA DX,MESSAGE
MOV AH,9
INT 21H
EXIT: MOV AH,4CH
INT 21H
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?