寄存器
寄存器的概念: 计算机CPU由运算器、控制器、寄存器以及内部总线等器件构成,其中运算器是进行数据处理,控制器负责控制各种器件进行工作,寄存器负责存储数据和指令。学习汇编语言主要掌握寄存器相关知识,已8086CPU为例。
8086CPU特点介绍:
- 共有14个16位寄存器:通用寄存器(AX BX CX DX) SI DI SP BP IP CS DS ES SS PSW;
- 共有16根数据线,即一次可以访问两种类型数据:字节数据(1 byte=8 bit)和字型数据(2 byte = 16 bit);
- 共有20根地址线,寻址空间最大为1MB;
- 共包括 总线接口部BIU 和 执行部件EU。
1.通用寄存器(AX BX CX DX): 用于存放一般性数据,为16位寄存器,其逻辑结构如下所示
为了保持兼容性,8086CPU可分为两个独立8位寄存器使用:AX的低8位构成AL寄存器,AX的高8位构成AH寄存器,即
AX = AH+AL BX = BH + BL CX = CH + CL DX = DH + DL,如下图所示:
注意:
- 数据与寄存器之间应该保持 位数一致性:16位数据只能给16位寄存器;
- 寄存器之间是相互独立的;
2.段寄存器和偏移寄存器:
(1)问题的引出:
8086CPU有20位地址总线,其寻址能力最大为1MB,但8086CPU寄存器为16位,在内部一次性处理、传输、暂时存储的地址为16位,如果地址从内部简单的发出,那么它只能发出16位,表现出的寻址能力只有64KB,故其寄存器位数限制了寻址能力。为了解决上述问题,引入段寄存器(ds es ss cs)和** 偏移寄存器(SP BP SI DI IP BX)的概念,段寄存器存储段地址,偏移寄存器存储偏移地址,其物理内存地址 = 段地址×16(10H) + 偏移地址。
(2)增加段地址和偏移地址的概念后,8086CPU写入内存执行步骤:
- CPU中的相关部件提供两个16的地址,一个称为段地址,另一个称为偏移地址;
- 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
- 地址减法器将两个16位地址合成一个20位的物理地址;
- 地址加法器通过内部总线将20位物理地址送入输入输出控制电路;
- 输入输出控制电路将20位物理地址送上地址总线;
- 20位物理地址被地址总线传送到存储器。
(3)"段地址×16+偏移地址 = 物理地址"的本质含义
CPU在访问内存时,用一个基础地址(段地址×16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
(4)注意:
- CPU可以用 不同的段地址和偏移地址形成同一个物理地址。
- 如果给定一个段地址,仅通过变化偏移地址来进行寻址,最多可以定位64KB个内存单元。