我一直想弄清楚为什么我的代码不起作用.
我需要在此代码的更大版本中实现此cmp作为主菜单,要求选项继续执行某些操作,但是当比较al, '1'无法识别je并且直接跳转到jne.
我知道这可能是比较时的错误但是正确的方法是什么?
.model small
.stack 100h
.data
wm db 0ah, 0dh, "Welcome! please select one of the following options: $"
op1 db 0ah, 0dh, "Please submit 1 to true and 2 to false: $"
op1_1 db 0ah, 0dh, "its true!!! $"
op1_2 db 0ah, 0dh, "its false!!!! $"
.code
main PROC
mov ax,@data
mov ds, ax
mov dx, offset wm
mov ah, 09h
int 21h
mov dx, offset op1
mov ah, 09h
int 21h
mov ah, 0ah
int 21h
cmp al, '1'
je true
jne false
success:
mov ah,4ch ; function: DOS Exit Program
mov al, 0 ; specify return code 0
int 21h ; adios amigo!
true:
mov dx, offset op1_1
mov ah, 09h
int 21h
jmp success
false:
mov dx, offset op1_2
mov ah, 09h
int 21h
jmp success
main ENDP
END main
Run Code Online (Sandbox Code Playgroud)
您还没有传递足够的信息来运作0ah与
mov ah, 0ah
int 21h
Run Code Online (Sandbox Code Playgroud)
这需要缓冲区信息并将一系列字符输入到用户提供的缓冲区中.我建议你用
mov ah, 08h
int 21h
Run Code Online (Sandbox Code Playgroud)
它会al像您期望的那样返回单个字符.它没有回应角色,但功能01h确实如此.