.model small
.stack 64
.data
STR1 DB 'Enter the first number: $';
STR2 DB 'Enter the second number: $';
STR3 DB 'Number 1 is greater than number 2$';
STR4 DB 'Number 1 is less than number 2$';
STR5 DB 'Number 1 is equal to number 2$';
KB_INPUT LABEL BYTE
MAX_LEN DB 20
ACT_LEN DB ?
KB_DATA DB 20 DUP ('$')
KB1_INPUT LABEL BYTE
MAX1_LEN DB 20
ACT1_LEN DB ?
KB1_DATA DB 20 DUP ('$')
.code
main proc far
mov ax, @data
mov ds, ax
LEA DX, STR1
MOV AH, 09H
INT 21H
MOV AH,01H
LEA DX, KB_INPUT
INT 21H
MOV DL, 0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
MOV AH, 02H
INT 21H
LEA DX, STR2
MOV AH, 09H
INT 21H
MOV AH,01H
LEA DX, KB1_INPUT
INT 21H
MOV DL, 0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
MOV AH, 02H
INT 21H
mov al, KB_DATA+0
CMP al,KB1_DATA+0
JE eqll
JG gtr
JL lesss
eqll:
LEA DX, STR5
MOV AH, 09H
INT 21H
gtr:
LEA DX, STR3
MOV AH, 09H
INT 21H
lesss:
LEA DX, STR4
MOV AH, 09H
INT 21H
exit:
mov ax,4C00H
int 21h
main endp
end main
我想显示两个数字之间的关系。但是当我输入数字1的“5”和数字2的“4”时,会出现错误,为什么?
答案 0 :(得分:0)
您需要在每个案例之后添加JMP,例如
eqll:
LEA DX, STR5
MOV AH, 09H
INT 21H
JMP exit
在您显示的每条消息之后没有JuMP指令,处理器将继续运行并打印其他消息。 这就像在高级语言中编写switch(..)case:...但忘记在每个case语句之后放置。 我认为你的意思是错误,你得到多条消息?