我看在汇编 中经常用到 jmp指令,我想问问怎么从中跳出呢,好像一直在循环啊,那JMP后面的语句永远也执行
我看在汇编中经常用到jmp指令,我想问问怎么从中跳出呢,好像一直在循环啊,那JMP后面的语句永远也执行不到啊,不成了死循环吗?...
我看在汇编 中经常用到 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指令,除非特殊情况。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询