📄 4.asm
字号:
;将键盘输入的4位十六进制数转换成等值的十进制数送屏幕显示
DATA SEGMENT
MESG1 DB 'You NO. is 0237.',0AH,0DH,'$'
MESG2 DB 'Please input a 4-bit hexadecimal number:',0AH,0DH,'$'
H DB 4 DUP (?)
N DW 10000,1000,100,10,1
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BIG: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESG1
MOV AH,9
INT 21H
MOV DX,OFFSET MESG2 ;显示提示信息Please input a 4-bit hexadecimal number:
MOV AH,9
INT 21H
DISP MACRO NNN
MOV AH,0EH; 打字方式显示字符。
MOV AL,NNN
INT 10H ; BIOS 10号功能调用
ENDM
;接收键盘输入合法的4个十六进制字符存于H存储区,高位在低地址。
MOV DI,OFFSET H
MOV CX,4
L1: MOV AH,07H
INT 21H
CMP AL,'0'
JB L9
CMP AL,'9'
JA L2
MOV DL,AL
MOV AH,02H
INT 21H
MOV [DI],AL
INC DI
JMP L3
L2: CMP AL,'A'
JB L9
CMP AL,'F'
JA L9
MOV DL,AL
MOV AH,02H
INT 21H
MOV [DI],AL
INC DI
JMP L3
L9:DISP 7
JMP L1
L3: LOOP L1
MOV DL,'H' ;输出'H'字符
MOV AH,02H
INT 21H
MOV DL,'=' ;输出'='字符
MOV AH,02H
INT 21H
;将4位十六进制字符转换成二进制数存于BX
XOR BX,BX
MOV CX,4
MOV SI,OFFSET H
L4: SHL BX,4
LODSB
CMP AL,'A'
JB L5
SUB AL,07H
L5: SUB AL,30H
OR BL,AL
LOOP L4
;将BX中的二进制字数据转换成十进制数并显示在屏幕上
MOV SI,OFFSET N
MOV CX,5
L6: LODSW
XOR DL,DL
L7: SUB BX,AX
JC L8
INC DL
JMP L7
L8: ADD BX,AX
MOV AH,02H
ADD DL,30H ;将数转换成ASC码
INT 21H
LOOP L6
MOV AH,4CH
INT 21H
CODE ENDS
END BIG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -