8086CPU的段寄存器

段地址由段寄存器提供。

 

8086CPU的段寄存器有4个,包括:CS,DS,SS,ES

 

CS

 

而CS是提供代码段的段地址(code segment),而偏移地址是由IP寄存器提供。

 

在8086CPU中,任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M x 16 + N单元开始读取一条指令并执行。

 

(注意:当CPU读取一条指令之后,IP中的值会根据读取当前指令的长度自动增加到下一条指令的偏移地址)。

 

可以通过修改CS,IP寄存器的值控制CPU执行目标指令。可以通过:jmp 段地址:偏移地址来实现修改CS和IP的值。

jmp 2AE3:3,执行后:CS=2AE3H,IP=0003H。

若只想修改IP的值,可以使用“jmp 某一合法寄存器”的指令实现,如:jmp AX 执行后 IP = AX。

 

8086CPU的工作过程:

(1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器。

(2)IP指向下一条指令。

(3)执行指令。(从步骤(1)开始重复这个过程)

 

 

DS

 

CPU要读取一个内存单元时,必须先给出这个单元的地址。8086中有一个DS寄存器,通常是用来存放要访问数据的段地址。比如我们要读取10000H单元的内容,可以用如下的程序进行:

mov bx, 1000H

mov ds, bx

mov al, [0]

上面的代码中,“[...]”表示一个内存单元,“[...]”中的0表示内存单元的偏移地址,而段地址就默认在DS寄存器中。

 

 

你可能感兴趣的:(工作)