博客园第二章寄存器

CPU中的运算器、控制器、寄存器等器件考内部总线相连。

在CPU中:运算器进行信息处理;寄存器进行信息存储;控制器控制各种器件进行工作;内部总线连接各种器件在他们之间进行数据的传输,

不同的CPU种寄存器的个数结构是不相同的。8086CPU由14个寄存器分别是:AX、BX、CX、DX、SI、DI、SP、IP、CS、SS、DS、ES、PSW

一.通用寄存器

8086CPU中所有的寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX这四个寄存器通常用于存放一般性的数据,被称为通用寄存器。

AX、BX、CX、DX都可以分为两个独立使用的8位寄存器(H表示的是高8位,L表示的是低8位)

cpu在执行指令时会认为ah和al是两个互不相关的寄存器。不能错误地认为,诸如add al, 93H指令产生的进位会存储与ah中,add al, 93H进行的是8位运算。(最高位丢失,指的是进位之不能在8位寄存器中保存,但是CPU并不真的丢弃这个进位值)在进行数据传送或运算时,要注意两个操作对象的为数应当是一致的。

二.8086CPU给出物理地址的方法

1.8086CPU时是16位结构的CPU

*运算器一次最多可以处理16位的数据

*寄存器的最大宽度是16位

*寄存器和运算器之间的通路是16位

2.8086CPU有20位地址总线

8086CPU采用一种用两个16位地址合成的方法来形成一位20位的物理地址

(1)CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;

(2)段地址和偏移地址通过内部总线送入一个成为地址加法器的部件;

(3)地址加法器将两个16位地址和成为一个20位的物理地址

(4)地址加法器通过内部总线将20位的物理地址送入输入输出控制电路;

(5)输入输出控制电路将20位的物理地址送上地址总线;

(6)20为物理地址为地址总线传到存储器。

地址加法器采用  物理地址=段地址*16+偏移地址  合成物理地址

(内存中并没有分段,端的划分来自于CPU,由于8086CPU用“段地址*16+偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方法来管理内存。)

三.CS和IP

CS伪代码段寄存器,IP位指令指针寄存器。

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

1.CS、IP中的内容送入地址加法器中完成:段地址*16+偏移地址=物理地址

2.地址加法器将物理地址送入输入输出控制电路

3.输入输出控制电路将物理地址送上地址总线

4.内存从指定单元将机器指令通过数据总线传入cpu

5.读取一条指令后IP的之自动增加,意识CPU可以读取下一条指令

(2)修改CS、IP的指令

若想同时修改cs、ip中的内容可以用形如“jmp段地址:偏移地址”的指令完成

eg.jmp 2AE3:3,执行后CS=2AE3H,iP=0003H.

若仅想修改IP的内容可用 jmp 某一合法寄存器 的指令完成

jmp ax,指令执行前 ax=1000H CS=2000H IP=0003H

           指令执行后ax=1000H CS=2000H IP=1000H

 

posted @ 2018-10-14 16:53  Assembly123  阅读(219)  评论(0编辑  收藏  举报