【第二章】寄存器(2)

2.10 段寄存器CS和指令寄存器IP

8086CPU有四个段寄存器:CS代码段寄存器、DS数据段寄存器、SS栈段寄存器、ES堆栈段寄存器,当CPU要访问内存时由这4个内存单元提供段地址。在本章中只讨论CS

CS(Code Segment)为代码段寄存器,IP(Instruction Pointer)为指令指针寄存器。设CS中的内容为M,IP中的内容为N,8086CPU将从内存$M\times 16 +N$单元开始。

8086CPU的工作过程如下:

  1. 从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
  2. IP=IP+所读取指令的长度,从而指向下一条指令
  3. 执行指令。转到步骤1,重复这个过程

2.11 修改CS、IP的指令

在CPU中,程序员能够修改的部件只有寄存器。因此,我们也可以通过改变CS、IP的值控制CPU从何处执行指令。

为了专门改变CS、IP的值,8086CPU为其提供了另外的jmp指令。

语法:jmp 段地址:偏移地址

Assembly> jmp 2AE:003

执行后,CS中的值变为2AE,IP中的值变为003

注:mov CS, 2AE不是合法的指令

如何单独修改IP的内容?

语法:jmp 某一合法寄存器