我正在使用 8086 TASM 在汇编中做一些练习,我遇到了一个我试图解决一段时间的问题。主程序,一个用于加减大数字的基本计算器。我达到了存储用户输入的目的,并尝试从中减去 48,成为一个真正的十进制数。问题是它写出了笑脸和扑克符号而不是实际数字。这是读取和打印的代码:
READNUM PROC
PUSH SI
MOV CX, 0
READ:
MOV AH, 1h
INT 21h
CMP CX, 9
JE ENDREAD
CMP AL, 0dh
JE ENDREAD
SUB AL, 48d
MOV [SI], AL
INC CX
INC SI
JMP READ
ENDREAD:
MOV byte ptr [SI], 0
MOV AX, 0e0ah
INT 10h
POP SI
CALL PRINTER
RET
READNUM ENDP
PRINTER PROC
CYCLE:
LODSB
CMP AL, 0
JE OVER
MOV AH, 14
INT 10H
JMP CYCLE
VER:
RET
PRINTER ENDP