助记符 | 英文翻译 | 说明 |
JE | Jump if left Equals right | 相等跳转 (左操作数=右操作数) |
JNE | Jump if left Not Equals right | 不相等跳转 (左操作数≠右操作数) |
JCXZ | Jump if CX equals Zero | CX=0 跳转 |
JECXZ | Jump if ECX equals Zero | ECX=0 跳转 |
JRCXZ | Jump if RCX equals Zero | RCX=0 跳转(64 位模式) |
下述示例使用了 JE、JNE、JCXZ 和 JECXZ 指令。仔细阅读注释,以保证理解为什么条件跳转得以实现(或不实现)。
以下例子用0A523h减去0A523h,如果等于0,则ZF=1,jne和je则根据ZF标志位判断。
mov edx, 0A523h
cmp edx, 0A523h
jne L5 ;不发生跳转
je L1 ;跳转
以下例子没有使用cmp指令,但是实际上只要是能修改标志位值的指令,都可以做为jne、je的依据。 sub和cmp指令的区别是,sub会修改寄存器和标志位的值,而cmp只是修改标志位的值。
mov bx,1234h
sub bx,1234h
jne L5 ;不发生跳转
je L1 ;跳转
以下注意,当CX的值为0FFFFh时,再加1,只会回滚到0而不会等于10000h,不会进位到上一级寄存器ECX。就像时钟那样周而复始。
mov cx, 0FFFFh
inc cx
jcxz L2 ;跳转