我根据用户给出的数字制作了一个生成斐波那契序列元素的代码,它工作正常,但我想让用户输入一个[1-25]范围内的数字,如果用户输入任何其他数字,它应该给他一个警告,在这个范围内重新输入一个合适的数字..所以我做了这部分代码来继续这个但我仍然有一个问题,无论数字是什么,大于或小于25代码的工作原理无论如何..这是我的代码实现这一部分:
main proc
mov ax,@data ; set up data segment
mov ds,ax
mov ah,9 ; send message with instructions for user
mov dx,offset msg1
int 21h
call keyin ;gets user input
SUB AL, 48 ;changes ASCII value into numeric value for further processing
MOV AH,0
MOV num1 , AX ;saves user input to variable num1
call keyin ;gets user input
SUB AL, 48 ;changes ASCII value into numeric value for further processing
MOV AH,0
MOV num2 , AX ;saves user input to variable num2, so now we have both digits
CHECKINPUT:
CMP AX,25
JAE WARNING
JMP STEP1
WARNING:
mov ah,09
mov dx,offset msg4
int 21h
JMP CHECKINPUT
谢谢
答案 0 :(得分:1)
您放错了支票代码!
必须在额外检查号码之前完成 step1 计算。
STEP1:
...
CHECKINPUT:
mov ax, input
CMP AX,25
JA WARNING
有效范围[1,25],您不会使用jae
但使用ja
发出警告。