在下面的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, '$'
答案 0 :(得分:6)
跳转到紧跟jmp指令的标签,所以无论是否跳转都没关系,你总是在标签处结束。
答案 1 :(得分:0)
是的,Goldenmean,就像西蒙对你说的那样,
如果您遵循程序的逻辑FLOW,您会发现在条件跳转的两种情况下,右边执行的下一条指令将是:
int 0x21
我的意思是,
如果JE不正确---> next instruction = int 0x21 如果JE是真的-------> next instruction = int 0x21
希望这对你来说足够清楚了。