2.3通用寄存器上
本节必须掌握的知识点:
u8位、16位、32位通用寄存器
u寄存器逻辑结构图
u寄存器的编号、顺序、及能存储数据的最大值
计算机存储数据的地方有三个:处理器(CPU)、内存和硬盘。处理器的读写速度比内存快,内存的读写速度高于硬盘。寄存器就是处理器中用来存储数据的地方,寄存器的读写速度要高于内存。那么寄存器有多大,取决于计算机的位数,在32位计算机里最大宽度为32位,在64位计算机里最大宽度为64位。32位和64位CPU提供的所有宽度如下:
·32位处理器:8位 16位 32位
·64位处理器:8位 16位 32位 64位
2.3.1【32位通用寄存器】
32位处理器中:EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI这8个寄存器通常存放一般性的数据,被称为通用寄存器。它们都有各自的用途。【本节不做详细介绍,用到时会详细介绍】
EAX、ECX、EDX、EBX为数据寄存器;
ESP、EBP为指针寄存器;
ESI、EDI变址寄存器。
每个寄存器都有自己的逻辑结构,接下来看一下它们的逻辑结构是什么样的。
2.3.2【寄存器逻辑结构】
以EAX为例,寄存器的逻辑结构图如图2-3-1所示。
EAX寄存器它本身是一个32位寄存器,那么它可以存储一个32位的数据。EAX寄存器是在32位处理器中工作的,它的上一代处理器是16位处理器,而16位处理器的上一代是8位处理器,为了保证兼容,使之前的处理器经过程序的修改可以在32位处理器上运行。使得EAX寄存器包含了16位、8位的寄存器。
EAX寄存器可分为一个可独立使用的16位寄存器:AX(16位);16位寄存器还可以分为两个可以独立使用的8位寄存器: AH(8位~15位为高8位)、AL(0位~7位为低8位)。
同理可得出ECX、EDX、 EBX。
·ECX可分为:CX、CH、CL;
·EDX可分为:DX、DH、DL;
·EBX可分为:BX、BH、BL。
而ESP、EBP、ESI、EDI这四个寄存器是分成了两段。
以ESP为例,寄存器的逻辑结构图如图2-3-2所示。
同理可得出EBP、ESI、EDI。
·EBP可分为:SP;
·ESI可分为:SI;
·EDI可分为:DI。
举例介绍了个别的寄存器逻辑结构,接下来我们来画出32位、16位、8位的通用寄存器逻辑结构图。
2.3.3【通用寄存器逻辑结构图】
通用寄存器逻辑结构必须记住,对以后学习有帮助,如图2-3-3所示
从图2-3-3可以看出,这些寄存器排列是有顺序的,都是在0~31位之间,接下来我们来简单介绍他们各自存在的顺序和编号。切记它们的编号和顺序不能错,就像你的身份证号码,是唯一的。
2.3.4【寄存器有自己的编号】
32位寄存器有自己的编号,16位寄存器也有属于自己的独立的编号,同样8位寄存器也有属于自己的编号。当然,他们是重叠的,当改变了32位的寄存器,相应的16位寄存器也会跟着改变。切记它们的顺序不能记错。
以通用寄存器为例,展示寄存器的编号,如图2-3-4所示。
根据图2-3-4简单说明一下,32位的寄存器有8个:EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI,每个寄存器都对应一个编号:0号,1号,2号,3号……还有16位的寄存器:AX,CX,DX,BX,SP,BP,SI,DI。对应的编号:0号,1号,2号,3号……同样8位的寄存器:AL,CL,DL,BL,AH,CH,DH,BH。对应的编号:0号,1号,2号,3号……。
我们知道了通用寄存器有顺序有编号,那么它们有各自的名称及用途吗?
2.3.5【32位通用寄存器的指定名称及用途】
·EAX:累加器(Accumulator),操作数和结果数据累加器;
·ECX:计数(Counter),字符串和循环操作的计数器;
·EDX:用于保存乘法形成的部分结果或者除法之前部分被除数;
·EBX:基地址(Base), DS段的数据指针,在内存寻址时存放基地址;
·ESP:堆栈(Stack)指针,被形象地称为栈顶指针;
·EBP:基址指针(BASE POINTER), SS段的数据指针;
·ESI:字符串操作的源(Source)指针,SS段的数据指针;
·EDI:字符串操作的目标(Destination)指针,ES段的数据指针.
【本节只是简单的描述,详细知识请参考Intel白皮书】
我们知道了通用寄存器有顺序有编号有名字有用途,那么它们有多大哪?
2.3.6【寄存器能存储数据的最大值】
·8位寄存器能存储数据的最大值为28;
·16位寄存器能存储数据的最大值为216;
·32位寄存器能存储数据的最大值为232。
总结:本节需要掌握的内容比较多希望大家能记住,对以后学习有帮助。
u下一节介绍通用寄存器下。
练习:
1、自己在纸上能够按顺序写出8位、16位、32位通用寄存。
2、自己在纸上画一遍8位、16位、32位通用寄存器逻辑图并熟练写出它们对应的编号。