【发布时间】:2023-03-05 21:58:02
【问题描述】:
我试图弄清楚为什么jz equ 命令在我的代码中不起作用。
显然,它之前的命令 (xor bl, bh) 将零标志设置为 1
并且当我调试程序时它仍然没有跳转到 equ。
我在这里错过了什么?
我似乎无法以任何方式使跳转零工作...... 尝试使用跳转零的其他代码测试也失败了 我错过了关于跳转零命令的一些内容,但它是什么?
.model small
.stack 10h
.data
.code
start:
mov ax, @data
mov ds, ax
mov ch, 0
mov cl, 0
mov bh, 21h
mov bl, 21h
xor bl, bh
jz equ
not ch
and ch, cl
jmp end
equ:
add bh, bl
end:
mov ah, 4ch
int 21h
End start
【问题讨论】:
-
代码肯定会跳转到
equ(注意equ是一个不好的名称选择,因为它也是一个汇编指令)。我会说你的调试器有问题,或者你使用调试器的方式有问题。 -
add bh, bl在您将bl归零后,xor在两个相等的值之间毫无意义。除非您在 XOR 之后使用调试器修改寄存器值。