[ 汇编 ] --- 关于jmp、ja、jb等跳转指令 书写注意点

以下把 jmp ,ja ,jb,jn , jne 等统称为“

jmp若干


注意:

①,跳的长度,位置会决定代码的不同。


②,长跳 和 短跳 代码长度 是不同的。


第一点 我就不解释了,字面意思。


第二点虽然是字面意思,不过我还是要说一下,

长跳 : 就是 jmp到离当前位置非常远 的 内存位置


短跳 : 就是跳到附近


这两者代码长度不同。


这里必须引起高度重视,写代码的时候,

如果要跳转到附近的代码,但是不清楚代码的准确位置(因为后面代码还没写嘛 23333)

所以,可以先用 附近的位置做个替换,因为都是短跳,所以代码长度没变化,最后写完代码后,再修改。


比如 我的初始代码位置在 4B3500 ,但是我想要跳转到后面 4B3560处。

但是写代码的时候,一开始不知道后面代码的初始位置,也不想做估计,那么可以先用4B3500做替代。(或者4B3500之前的任意位置也可以,比如 4B34F0)

遇到jmp若干,全部跳到 4B3500。等所有代码写结束后,再通过“注释法”找到相应位置,再把准确的位置,写到jmp若干的后面,进行精准的跳跃。



对于已经写好的代码,移动起来很麻烦,因为移动到其他位置后,“短跳”就变成“长跳”,这样会导致 16进制码乱掉。很麻烦。我经常就是代码写好后,出现这个问题,然后重新写。


但是,如果实现把所有jmp若干后面的跳转(短跳),全部替换成你要写的代码的位置,然后写好代码之后再修改成准确位置的话 .........

至于,我为何说上面那番话,你懂的。




 
评论
 
回到顶部