问题描述:
- 从键盘上接收一位十进制数 X,计算 Y 值,并以十六进制形式显示出来,Y 按
下列公式计算。
汇编代码,已调试
DATA SEGMENT
TABLE DW L1,L2,L3,L4,L5,L6
MSG1 DB 'Please input an integer :$'
MSG2 DB 'Y=$'
MSG3 DB 'Illegally input!$'
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,09H
INT 21H ;输出提示信息
MOV AH,01H
INT 21H ;输入一个数字
CMP AL,33H
JB GEND
CMP AL,36H
JA GEND
AND AL,0FH ;转换为数字
XOR AH,AH ;高位清零
DEC AL ;获取x-1
SHL AL,1 ;计算L几
MOV BX,OFFSET TABLE ;获取table的内容
ADD BX,AX
JMP [BX]
GEND:
MOV DL,0AH
MOV AH,02H
INT 21H ;换行
LEA DX,MSG3
MOV AH,09H
INT 21H ;显示提示错误信息
JMP L7
L1: JMP GEND
L2: JMP GEND
L3:
CALL HHSC
MOV DL,31H
MOV AH,02H
INT 21H
MOV DL,32H
MOV AH,02H
INT 21H
JMP L7
L4:
CALL HHSC
MOV DL,38H
MOV AH,02H
INT 21H
JMP L7
L5:
CALL HHSC
MOV DL,32H
MOV AH,02H
INT 21H
MOV DL,35H
MOV AH,02H
INT 21H
JMP L7
L6:
CALL HHSC
MOV DL,31H
MOV AH,02H
INT 21H
MOV DL,38H
MOV AH,02H
INT 21H
JMP L7
L7: MOV AH,4CH
INT 21H ;终止程序
HHSC PROC
MOV DL,0AH
MOV AH,02H
INT 21H ;换行
LEA DX,MSG2
MOV AH,09H
INT 21H ;显示输出信息
RET
HHSC ENDP
CODE ENDS
END START
结果展示