一、CS、IP与代码段
1.CS:代码段寄存器
IP:指令指针寄存器
CS:IP:CPU将内存中CS:IP指向的内容当作指令执行。
2.8086读取和执行指令演示
(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP=IP+所读取指令的长度,从而指向下一条指令;
(3)执行指令。转到步骤(1),重复这一过程。
二、Debug的使用:
用R命令查看、改变CPU寄存器的内容;
用D命令查看内存中的内容;
用E命令改变内存中的内容;
用U命令将内存中的机器指令翻译为汇编指令;
用A命令以汇编指令的格式在内存中写入机器指令;
用T命令执行机器指令。
1.R命令:
2.D命令:
3.E命令:
4.U命令
5.A命令:
6.使用q-退出Debug
三、jmp指令
1.修改CS、IP的指令
事实:执行何处的指令,取决于CS:IP。
应用:可以通过改变CS、IP中的内容,来控制CPU要执行的目标指令。
问题:如何改变CS、IP的值?
方法1:Debug中的R命令可以改变寄存器的值–rcs,rip Debug是调试手段,并非程序方式!
方法2:用指令修改
方法3:转移指令jmp
2.同时修改CS、IP的内容
jmp段地址:偏移地址
jmp 2AE3:3
jmp 3;0B16
功能:用指令给出的段地址修改CS,偏移地址修改IP。
3.仅修改IP内容
jmp某一合法寄存器
jmp ax(类似于mov IP,ax)
jmp bx
功能:用寄存器中的值修改IP。