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 + -
显示快捷键?