我看在汇编 中经常用到 jmp指令,我想问问怎么从中跳出呢,好像一直在循环啊,那JMP后面的语句永远也执行不到啊,不成了死循环吗?
JMP只是一个无条件跳转指令,可以任意跳转。
按照你说一直在循环是这种结构
NEXT:......
.......
JMP NEXT (只是随便举个例子)
这结构如果在中间不加任何跳转就是个死循环 ,因为程序是顺序执行的,跳到NEXT时,又顺序往下执行,所以是死循环。
要让程序跳转出,可以通过其他有条件的条件的跳转指令(如 JC JZ JNZ等等)跳出,不过跳出的地址一定不能是在刚才例子的程序内部(NEXT~JMP之间),不然还是死循环。
而其他结构如
NEXT:.....
.......
JMP LP
..........
LP: .........
这程序就不是死循环,因为它直接跳到了下面只是不执行 JMP 和 LP 之间的程序了。有一些程序还是用这种结构的。
由于JMP不具有判断等原因,所以一般不建议用JMP指令,除非特殊情况。。。
按照你说一直在循环是这种结构
NEXT:......
.......
JMP NEXT (只是随便举个例子)
这结构如果在中间不加任何跳转就是个死循环 ,因为程序是顺序执行的,跳到NEXT时,又顺序往下执行,所以是死循环。
要让程序跳转出,可以通过其他有条件的条件的跳转指令(如 JC JZ JNZ等等)跳出,不过跳出的地址一定不能是在刚才例子的程序内部(NEXT~JMP之间),不然还是死循环。
而其他结构如
NEXT:.....
.......
JMP LP
..........
LP: .........
这程序就不是死循环,因为它直接跳到了下面只是不执行 JMP 和 LP 之间的程序了。有一些程序还是用这种结构的。
由于JMP不具有判断等原因,所以一般不建议用JMP指令,除非特殊情况。。。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-12-07
JMP是无条件转移指令啊,只要写了这个指令,程序就会跳转,所以你就不要把它写成一个死循环了.而它的作用之一就是跳过jmp后面的语句,让它执行不成啊