这个汇编代码有什么问题,有条件的jmp

时间:2011-06-20 14:28:37

标签: assembly intel

在下面的intel汇编代码中,我在条件跳转之前使用了cmp(compare)指令,但是对于下面的代码,它不应该跳转但是它会&打印字符串。

出了什么问题。(Flat assembler,Win-7 x32)。

ORG 100h
USE16


        mov ah, 09
        mov dx, message
        cmp ah, 10d
        je condjmp


condjmp:
        int 21h

        mov ah,01
        int 21h

        mov ah,4ch
        int 21h

 message db 'conditional jump', 0Ah, '$'

2 个答案:

答案 0 :(得分:6)

跳转到紧跟jmp指令的标签,所以无论是否跳转都没关系,你总是在标签处结束。

答案 1 :(得分:0)

是的,Goldenmean,就像西蒙对你说的那样,

如果您遵循程序的逻辑FLOW,您会发现在条件跳转的两种情况下,右边执行的下一条指令将是:

int 0x21

我的意思是,

如果JE不正确---> next instruction = int 0x21 如果JE是真的-------> next instruction = int 0x21

希望这对你来说足够清楚了。