目录:https://blog.csdn.net/qq_43098197/article/details/124532401
CPU 内部包括:
- 运算器:负责信息处理。
- 寄存器:负责信息存储。
- 控制器:协调控制各个器件的运作。
- 内部总线:连接各个器件。
对于汇编程序,CPU 最主要的部件是寄存器。
8086 CPU 有 14 个寄存器,分别是 AX、BX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
通用寄存器
8086 CPU 所有寄存器都是 16 位的,可以存在两个字节。
通用寄存器: AX、BX、CX、DX
作用: 存储一般性的数据。
寄存器逻辑结构:
为了兼容某些 CPU 寄存器是 8 位的,8086 CPU 的 这四个寄存器都可以分为两个独立使用的 8 位寄存器:
物理地址
- 每个单元都有一个唯一的地址,我们称为物理地址。
- 不同的 CPU 可以有不同形成物理地址的方式。
16 位结构的 CPU
特性:
- 运算器一次性最多可以处理 16 位的数据。
- 寄存器的最大宽度为 16 位。
- 寄存器和运算器之间的通路为 16 位。
8086 CPU 物理地址的计算方式
- 它有 20 位地址总线,可以传输 20 位地址,达到 1MB 寻址能力。
- 8086CPU 又是 16 位结构,因此内部一次性处理、传输、暂时存储的地址为 16 位。
- 8086CPU 合成 20 位地址的方式:
物理地址 = 段地址 × 16 + 偏移地址(0~FFFF)
注意:
- 段地址 × 16 必然是 16 的倍数,因此一个段的起始地址也一定是 16 的倍数。
- 偏移地址为 16 位,即寻址能力为 64KB,因此一个段的长度最大为 64KB。
段寄存器
8086CPU 在访问内存时,需要将段地址和偏移地址合成为 20 位的物理地址。
- 提供段地址的寄存器:CS、DS、SS、ES
CS 与 IP
- CS:代码段寄存器
- IP:指令指针寄存器
作用: 在 8086PC 机中,任意时刻,CPU 将 CS:IP
指向的内容当作指令执行。
修改 CS、IP 指令
jmp 段地址:偏移地址
:将 CS 修改为给出的段地址,IP 修改为给出的偏移地址。jmp 合法寄存器
:用寄存器中的值修改 IP。
代码段
若存在长度为 N ( N ≤ 64 K B ) N(N \le 64KB) N(N≤64KB) 一组地址连续、起始地址为 16 的倍数的内存单元,则可以认为这段内存是用来存放代码的。
如何执行代码段中的指令:将 CS:IP
指向这段连续内存单元的开头即可(第一条指令的首地址)。