汇编第二章_寄存器
一个典型的CPU由 运算器,控制器,寄存器等器件构成.
(1) 运算器进行信息处理.
(2) 寄存器进行信息存储.
(3) 控制器控制各种器件进行工作.
(4) 内部总线连接各种器件,在它们之间进行数据的传送.
寄存器是CPU中程序员可以用指令读写的部件,
通过改变各种寄存器中的内容可以实现对CPU的控制.
8086CPU有14个寄存器,且都是16位的:
AX BX CX DX SI DI SP BP IP CS SS DS ES PSW
为了与上一代CPU兼容,8086CPU的AX BX CX DX这4个寄存器都可以分成两个独立使用8位寄存器.
AX : AH AL
BX : BH BL
CX : CH CL
DX : DH DL
注意 AL 和 AH 都是作为独立的8为寄存器来使用的.
8086CPU可以一次性处理以下两种尺寸的数据:
字节 字(word) 1 word = 2 byte(高位字节 低位字节)
通用寄存器: AX BX CX DX 这4个寄存器通常用来存放一般性的数据.
十六进制后面一般加H 二进制后边加B
8086CPU有20位地址总线,但是是16位结构,所以使用两个16位地址合成的方法来形成一个20位的物理地址.
地址加法器采用: 物理地址 = 段地址 * 16 + 偏移地址
同时定义: 段地址 = 起始地址(基础地址) / 16
本质含义是:
CPU在访问内存时,
用一个基础地址(段地址 * 16) 和
一个相对于基础地址的偏移地址相加,
给出内存单元的物理地址.
内存并没有分段, 端的划分来自于CPU.
在编程需要的时候,可以将若干地址连续的内存单元看作一个段,
用 段地址 * 16 定位段的 起始地址, 用 偏移地址 定位段中 内存单元.
由于段地址 * 16 是 16的倍数,所以一个段的起始地址一定也是16的倍数.
偏移地址为16位, 16位地址的寻址能力为64KB, 所以一个段的长度最大为64KB.
CPU如何区别内存中的数据和指令的: CS:IP寄存器指向的内存单元的内容是指令.