一个典型的CPU通常由运算器/控制器/寄存器等器件组成,这些器件由内部总线相连接,外部总线则实现CPU与主板上其他器件的联系. 其中寄存器是可以由程序员用与指令读写的部件,即程序员通过改变各个寄存器的内容来实现对CPU的控制. 不同类型的CPU,它们的寄存器个数,结构可能是不同的,例如8086CPU有着14个寄存器,分别是:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DE,ES,PSW. 数据寄存器 32位CPU有4个32位的数据寄存器EAX,EBX,ECX,EDX.并且完全兼容16位CPU的AX,BX,CX,DX数据寄存器. 在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU中,其32位寄存器EAX,EBX,ECX,EDX不仅可传送数据,暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。 16位CPU中有4组是数据寄存器,也简称通用寄存器,分别是AX,BX,CX,DX;而在32位CPU上则有8组数据寄存器;到了64位CPU,则扩展到了16组数据寄存器. 16位CPU的所有寄存器都是16位,分为高8位和低8位.所以一个寄存器可以存放两个字节,连个字节组成一个字,即: – AX分高AH和低AL; – BX分高BH和低BL; – CX分高CH和低CL; – DX分高DH和低DL; 变址寄存器 32位CPU有2个32位变址寄存器ESI,EDI,完全兼容16位CPU中的SI,DI.对低16位数据的存取,不影响高16位的数据. 变址寄存器主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便. 变址寄存器不可分割成8位寄存器.作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果.它们可作一般的存储器指针使用.在字符串操作指令的执行过程中, 对它们有特定的要求,而且还具有特殊的功能. 指针寄存器 32位CPU有2个32位通用寄存器EBP,ESP,完全兼容16位CPU中的BP,SP.对低16位数据的存取,不影响高16位的数据. 指针寄存器主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便. 指针寄存器不可分割成8位寄存器.作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果. 它们主要用于访问堆栈内的存储单元,并且规定: – BP 为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据; – SP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶. 指令指针寄存器 32位CPU的指令指针为EIP,它的低16位与先前CPU中的IP作用相同. … “汇编-寄存器”
Read More