博客园第二章寄存器
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