【发布时间】:2016-12-11 00:54:44
【问题描述】:
我编写了一个代码来根据用户给出的数字生成斐波那契序列元素,它工作正常,但我想让用户输入一个 [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
- 顺便说一句,我正在使用 emu8086
- here 是我的代码(如果需要)
谢谢
【问题讨论】:
-
"BTW" 不要创建重复的用户帐户。无论如何,使用模拟器单步执行代码,您会看到错误。
-
抱歉,我非常需要完成这段代码,所以我这样做了...
-
我多次使用单个步骤,但最后我什么也没得到:/ .. 任何帮助!
-
好的,你知道检查输入有问题。在
cmp ax, 25处单步执行代码(或放置断点)。然后检查AX的值是否正确。你会看到它没有。然后向后工作,看看它是如何设置的,以及为什么它是错误的。 -
仍然无法解决错误,非常感谢您的指导:)
标签: assembly input x86-16 emu8086