(一) 寄存器

 一个典型的 CPU 由运算器、控制器、寄存器等器件组成,不同 CPU 寄存器的个数和结构都是不相同的,8086 CPU14 个寄存器,这些寄存器分别是:AX BX CX DX SI DI SP BP IP CS SS DS ES PSW

1、通用寄存器

8086 CPU 所有寄存器都是 16 位的,可以存放两个字节。AX BX CX DX 这四个寄存器通常用来存放一般性数据,称为通用寄存器。
8086 CPU 的上一代 CPU 中的寄存器是 8 位的,为保证兼容,使原来基于上一代 CPU 编写的程序稍加修改就可以运行在 8086 上,8086 CPUAX BX CX DX 这四个寄存器都可分为两个独立使用的 8 位寄存器来用:


AX

可分为

AH

AL


BX

可分为

BH

BL


CX

可分为

CH

CL


DX

可分为

DH

DL

(一) 寄存器_第1张图片

2、8086 CPU 物理地址

8086 CPU 有20位地址总线,可以传送20位地址,达到 1 M 寻址能力,8086 CPU 又是 16 位结构,在内部一次性处理、传输、暂时存储的地址为 16 位。所以 8086 CPU 采用一种在内部用两个 16 位地址合成的方法来形成一个 20 位的物理地址

(一) 寄存器_第2张图片
1. CPU 的相关部件提供两个 16 位的地址,一个称为段地址,另一个称为偏移地址;
2. 段地址和偏移地址被送入到一个称为地址加法器的部件合成一个 20 位的物理地址;
3. 地址加法器通过内部总线将 20 位物理地址送入输入输出控制电路;
4. 然后通过地址总线传送到存储器;

物理加法器采用 物理地址 = 段地址 * 16 + 偏移地址 的方法用段地址和偏移地址合成物理地址。
例:段地址 = 1230,偏移地址 = A5
123A5 = 1230 * 16 + A5 所以计算得出物理地址为 123A5

3、段寄存器

8086 CPU 有四个段寄存器:CS DS SS ES

CS :代码段
DS :数据段
SS :堆栈段
ES :拓展段

CSIP8086 CPU 中两个最关键的寄存器,他们指示了 CPU 当前要读取指令的地址,CS 为代码段寄存器,IP 为指令指针寄存器。在 8086 PC 机中,任意时刻,CPUCS:IP 指向的内容当做指令执行。
8086 CPU 工作过程简单简述如下

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

8086 CPU 加电启动或复位后 CSIP 被设置为 CS = FFFFHIP = 0000H,即 8086 PC 机启动时执行的第一条指令是 FFFF0。如果内存中的一段信息曾被 CPU 执行过,那么它所在的内存单元必定被 CS:IP 指向过。
CPU 从何处执行指令是由 CS:IP 决定的,所以我们可以通过修改 CS:IP 中的内容来控制 CPU 目标指令。
传送指令 MOV 大部分寄存器的值,但是不能用于设置 CS:IP 的值,因为8086 CPU 没有提供这样的功能,能够改变 CS:IP 的指令被统称为转移指令,如 JMP 指令。

例:
同时修改 CS 和 IP 的值,指令格式:JMP 短地址:偏移地址
jmp 2B5A:6,执行后 CS = 2B5AH,IP = 0006H,CPU 将从 2B5A6H 处读取指令。
只修改 IP 的值 指令格式:jmp 某一合法寄存器
JMP AX,执行前:AX = 1000H,CS = 2000H,IP = 0002H
执行后:AX = 1000H,CS = 2000H,IP = 1000H

你可能感兴趣的:((一) 寄存器)