1.无条件转移指令JMP
CPU执行指令通常是按顺序一条一条地去执行,但实际上并非如此,CS:IP经常会跳过某些程序代码去执行另一个程序代码.当CS:IP遇到无条件跳转指令JMP时,就会停下当前要做的工作,而是去执行JMP交给的任务.这就如我们在办公室工作时一样,突然老总来到身边,交待我们马上去完成另一项任务,我们要无条件的去执行老总交给我们的任务,马上放下手头的工作,立即行动去执行老总的命令,并及时地完成另一项任务.此时JMP就相当于老总,CS:IP就相当于员工.
我们理解了无条件转移指令JMP的含义后,看一下它的分类.
JMP为两类:1.段内转移 2.段间转移
1.段内转移:是指在同一段的范围内进行转移,此时只改变IP或EIP寄存器的内容.
段内转移又分为两种:(1)段内直接短转移 (2)段内直接近转移
(1)段内直接短转移:
格式:JMP SHORT OPR
执行操作:把(IP)+8位位移量送入(IP)中
386及后继机型:把(EIP)+8位位移量送入(EIP)中
如果操作数长度为16位,则还需(EIP)AND 0000FFFFHUDO 送入(EIP)中
段内直接短转移只修改IP的值,修改范围在(-2*7-2*7-1)即在-128---127(用补码表示)的范围内.
2.段间转移:是指从当前段转移到另一个段去执行程序,此时要修改CS,IP或EIP寄存器.
- [jvhybg] 谢谢你,younggay .我看完后面的章节才明白过来.真的谢谢你. 08/18 11:08
- [younggay] 程序代码的长度是和你的指令有关的,你可以观察一下你填不同内容的时候,那条指令的长度是不一样的。 在 08/18 09:57