写于印象笔记中的 Markdown, 显示效果与预览有所区别
CPU 概述
一个典型 CPU 由运算器, 控制器和寄存器等器件组成.
内部总线实现 CPU 内部各个部件之间的联系.
外部总线实现 CPU 和主板上其他器件的联系.
X 位 CPU, 通常用字长表示.
CPU 字长: CPU 在单位时间内能一次处理的二进制位数. 反应内部运算处理的速度.
位宽: CPU 通过外部数据总线与内存之间一次能够传送的数据位.
ISA -Instruction Set Architecture: 一个处理器支持的指令和指令的字节级编码称为它的 ISA.
通用寄存器
8086CPU 所用的寄存器都是 16 位的, 可以存放 2 个字节. AX,BX,CX,DX 这四个寄存器都唱用来存放一般性数据, 被称为通用寄存器
为了保证与上一代 8 位 CPU 兼容, 8086CPU 的 AX,BX,CX,DX 可分为两个可独立使用的 8 位寄存器:
AX 可分为 AH 和 AL
BX 可分为 BH 和 BL
CX 可分为 CH 和 CL
DX 可分为 DH 和 DL
寄存器 | 全称 |
---|---|
AX | Accumulator Register |
BX | Base Register |
CX | Count Register |
CS | Code Segment Register |
IP | Instruction Pointer Register |
字在寄存器中的存储
出于对兼容性的考虑, 8086CPU 可以一次性处理以下两种尺寸的数据.
字节: 内存划分的基本单位
字: 两个字节, 分别称为高位字节, 和低位字节.
双字: 四个字节
四字: 八个字节
几条汇编指令
汇编指令举例
汇编指令 | 控制 CPU 完成的操作 | 用高级的语法描述 |
---|---|---|
mov ax,18 | 将 18 送入寄存器 AX | AX=18 |
mov ah,78 | 将 78 送入寄存器 AH | AH=78 |
add ax,8 | 将寄存器 AX 的数值加上 8 | AX=AX+8 |
mov ax,bx | 将寄存器 BX 中的数据送入寄存器 AX | AX=BX |
add ax,bx | 将 AX 和 BX 中的数值相加,结果存在 AX 中 | AX=AX+BX |
修改 CS 和 IP 的指令 jmp
同时修改 CS,IP 的内容:
jmp 段地址: 偏移地址
只修改 IP 的内容:
jmp 某一合法寄存器
物理地址
所有的内存单元构成的空间是一个一维的线性地址, 每一个内存单元在这个空间中都有唯一的地址, 我们将这个唯一的地址称为物理地址.
CPU 通过地址总线送入存储器的, 必须是一个内存单元的物理地址.
16 位结构的 CPU
概括地讲, 16 位结构描述了一个描述了一个 CPU 具有以下几方面的结构特性:
运算器一次最多可以处理 16 位的数据.
寄存器的最大宽度为 16 位.
寄存器和运算器之间的通路为 16 位.
8086CPU 给出物理地址的方法
8086CPU 有 20 位地址总线, 可以传送 20 位地址, 达到 1MB 寻址能力. 8086CPU 又是 16 位地址, 表现出的寻址能力只有 64KB. 采用一种在内部用 2 个 16 位地址合成的方法来形成一个 20 位地址.
当 8086CPU 要读写内存时:
CPU 中的相关部件提供两个 16 位地址, 一个称为段地址, 另一个称为偏移地址.
段地址和偏移地址通过内部总线送入一个称为地址加法器的部件.
地址加法器将两个 16 位地址合成为一个 20 位的物理地址.
地址加法器通过内部总线将 20 位物理地址送入输入输出控制电路.
输入输出控制电路将 20 位物理地址送上地址总线.
20 位物理地址北地址总线传送到存储器.
地址加法器采用 物理地址 = 段地址 $\times$ 16 + 偏移地址 的方法合成物理地址.
"段地址 $\times$ 16 + 偏移地址 = 物理地址" 的本质含义
段地址: 偏移地址 也称为 逻辑地址 .
段地址 $\times$ 16 构成短的起始物理地址.
段寄存器
8086CPU 有 4 个段寄存器中: CS,DS,SS,ES.
CS 和 IP
CS 和 IP 是 8086CPU 中最关键的寄存器.
CS 为代码段寄存器, 用于存放代码段的段地址.
IP 为指令指针寄存器, 用于存放 CPU 将要读取的指令在代码段中的偏移地址.
CS:IP 对应的物理地址存放是 CPU 将要读取的指令.
8086 机中, CPU 将 CS:IP 指向内容当作指令执行.
来源: http://www.bubuko.com/infodetail-2790578.html