修改CS、IP指令
- 事实:执行何处的指令,取决于CS:IP
- 应用:可以通过改变CS、IP中的内容,来控制CPU要执行的目标指令
- 问题:如何改变CS、IP的值?
-
方法1:Debug中的R命令可以改变寄存器的值 – rcs、ripDebug 是调试手段,并非程序方式!
-
方法2:用指令修改mov cs:2000mov ip:0000
8086CPU不提供对CS和IP修改的指令!
ip希望是cpu自增长机制改变
转移指令jmp
- 同时修改CS、IP的内容
jmp段地址:偏移地址
jmp 2AE3:3
jmp 3:0B16
功能:用指令总给出的段地址改变CS,偏移地址修改IP - 仅修改IP的内容
jmp某一合法寄存器
jmp ax(类似于mov IP,ax当然,这条“类似”的指令是不存在的)(这里ax存的是下一条指令的偏移地址)
jmp bx
功能:用寄存器中的值改变IP
问题分析
假设,从20000H开始,执行的序列是:
- mov ax,6622
- jmp 1000:3
- mov ax,0000
- mov bx,ax
- jmp bx
- mov ax,0123H
- mov ax,0000
- mov bx,ax
- jmp bx
- …
…