对于一个汇编程序员来说,CPU中的主要部件是寄存器。寄存器是CPU中程序员可以用指令读写的部件。
不同的CPU,寄存器的个数,结构是不相同的。8086CPU有14个寄存器,每个寄存器都有一个名称:AX,BA,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
通用寄存器:
8086CPU中所有寄存器都是16位的,可以存放两个字节。AX,BX,CX,DX,这四个寄存器通常用来存放一般性数据,称为通用寄存器。
8086CPU上一代CPU中的寄存器都是8位的,为了保证兼容,这四个通用寄存器都可以分为两个独立使用的8位寄存器来用:
AX可分为AH和AL
BX可分为BH和BL
CX可分为CH和CL
DX可分为DH和DL
字在寄存器中的存储:
出于对兼容性的考虑,8086CPU可以一次性处理以下两种尺寸的数据
1.字节:记为byte,一个字节由8个bit组成,可以存在8位寄存器中。
2.字: 记为word,一个字由两个字节组成,字可以分为高位字节和低位字节
物理地址:
CPU访问内存单元时,要给出内存单元的地址。所有内存单元存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。
16位结构的CPU:
1个16位结构的CPU具有以下几方面的特性:
(1)运算器一次最多可以处理16位的数据
(2)寄存器的最大宽度为16位
(3)寄存器和运算器之间的通路为16位
8086CPU给出物理地址的方法:
物理地址 = 段地址*16 + 偏移地址
段寄存器:
8086CPU有四个段寄存器:CS , DS , SS , ES
CS和IP是8086CPU中最关键的两个寄存器,它们指示了当前CPU要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器。
任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M*16 + N单元出开始,读取一条指令并执行。
任意时刻,CPU将CS:IP指向的内容当做指令来执行