文章目录
- 修改CS、IP的指令
- 转移指令jmp
- 问题分析
修改CS、IP的指令
- 理论:CPU执行何处的指令,取决于CS:IP
- 应用:程序员可以通过改变CS、IP中的内容,进行控制CPU即将要执行的目标指令;
- 问题:如何改变CS、IP中的值?
- 设想:
- 1、通过使用Debug中的R命令进行修改寄存器的值,例如rcs, rip。 结论:不可以。原因是:Debug是调试手段,并非程序方式;
- 2、通过mov指令修改。结论:不可以。原因是:CPU不提供对CS、IP修改的指令;
- 3、转移指令jmp。 结论:可行。
转移指令jmp
- 1、同时修改CS、IP的内容
# jmp 段地址:偏移地址
# 作用: 使用指令中给出的段地址修改CS,偏移地址修改IP。
jmp 2AE3:3
jmp 3:0B16
- 2、仅修改IP的内容
# jmp 某一合法寄存器
# 作用:用于修改IP值
jmp ax(类似于 mov IP, ax)
jmp bx
问题分析
jmp具体过程
CPU执行指令从20000H开始,执行的序列是:
1. mov ax 6622
2. jmp 1000:3
3. mov ax, 0000
4. mov bx, ax
5. jmp bx
6. mov ax, 0123H
7. 循环转至第三步执行