【发布时间】:2014-05-24 02:39:49
【问题描述】:
我正在尝试从用户那里获取输入,然后我想根据用户输入的内容输出一些文本。
我的问题是由于某种原因它总是认为它是 A,我不知道为什么。 你可以在下面找到我的代码:
bits 16
org 0x100
jmp main
message: db 'Please enter a A or B:',0ah,0dh,'$'
character: db 1
outp_a: db 'IT IS A',0ah,0dh,'$'
outp_b: db 'IT IS B',0ah,0dh,'$'
finish db 'good bye',0ah,0dh,'$'
clearscreen:
mov dx, 10
mov bh, 0
mov ah, 2
int 10h
mov cx, 2000
mov bh, 0
mov bl, 01Eh
mov al, 20h
mov ah, 09h
int 10h
ret
disply:
mov ah,09h
int 21h
ret
get_input: mov ah,01h
int 21h
ret
input_a: mov dx,outp_a
call disply
ret
input_b: mov dx,outp_b
call disply
ret
compare: mov cl,'A'
cmp [character],cl
JAE input_a
mov cl,'B'
cmp [character],cl
JAE input_b
ret
main: call clearscreen
mov dx,message
call disply
call get_input
mov [character],ax
call compare
mov dx,finish
call disply
int 20h
【问题讨论】:
-
使用
JE而不是JAE。 -
上一条评论的补充:CMP 通过减法进行比较,66 ('B') - 65 ('A') 将给出 1(上图),因此 JAE 将始终跳转(0 如果等于,1 或任何字符大于 65 的更多)。
-
JE 正在工作,谢谢。您能否将其发布为答案,以便我可以将其标记为已解决
-
我已经发布了答案。