如何限制用户在asm8086中给出的输入

时间:2016-12-11 00:54:44

标签: assembly input x86-16 emu8086

我根据用户给出的数字制作了一个生成斐波那契序列元素的代码,它工作正常,但我想让用户输入一个[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 
  • BTW正在使用emu8086
  • 如果需要,
  • here是我的代码

谢谢

1 个答案:

答案 0 :(得分:1)

您放错了支票代码!
必须在额外检查号码之前完成 step1 计算。

STEP1:
    ...
CHECKINPUT:
    mov     ax, input
    CMP     AX,25
    JA      WARNING 

有效范围[1,25],您不会使用jae但使用ja发出警告。