汇编第2课(上):通用寄存器

    科技2022-08-11  96

    通用寄存器

    类型64位32位16位8位编号(二进制)编号(十进制)累加寄存器RAXEAXAXAL0000计数寄存器RCXECXCXCL0011数据寄存器RDXEDXDXDL0102基址寄存器RBXEBXBXBL0113堆栈顶指针RSPESPSPAH1004堆栈基指针RBPEBPBPCH1015变址寄存器RSIESISIDH1106指令寄存器RDIEDIDIBH1117

    基础理论:

    一、在16位CPU的时代,16位的通用寄存器分别命名为:AX、BX、CX、DX;到了32位CPU时代后,就在它们的名字前面加个“E”来区别是32位还是16位。

    二、32位CPU有4个32位的通用寄存器EAX、EBX、ECX、EDX,用于保存临时数据。

    三、“E”是“Expand”的首字母,代表含义是“扩展”。

    四、这4个32位的通用寄存器可以当作16位使用,也可以当作8位使用。当作8位使用时,就将AX折开为AH和AL,AH中的“H”代表“high”,意思是高位的意思,AL中的“L”代表“low”,意思是低位的意思。同理,BX、CX和DX可折开为BH、BL、CH、CL、DH、DL来使用。如下图所示:

    总的来说,4个16位寄存器可分割成8个独立的8位寄存器:

    AX可分为:AH和ALBX可分为:BH和BLCX可分为:CH和CLDX可分为:DH和DL

    五、每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。

    六、一些寄存器是别的寄存器的一部分,例如:如果EAX保存了值12782345,其他寄存器的值(红色部分)如下图:

    EAX

    12

    78

    23

    45

    AX

    12

    78

    23

    45

    AH

    12

    78

    23

    45

    AL

    12

    78

    23

    45

    七、通用寄存器概念:

    寄存器AX称为累加器(Accumulator),常用于算数运算(加减乘除)、布尔操作、逻辑操作、输入/输出、返回函数结果等,累加器的使用频率很高; 

    寄存器BX称为基地址寄存器(Base Register),常用于存档内存地址,它可作为存储器指针来使用。

    寄存器CX称为计数寄存器(Count Register),常用于存放循环语句的循环次数,字符串操作中也常用。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数。

    寄存器DX称为数据寄存器(Data Register),常常和EAX一起使用,在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。

    注意:上面所述的4个通用寄存器的专门用途不是一成不变的,编译器在编译程序的时候会根据很多因素,例如编译器、编译条件、操作系统等做出相应的改变,首先得知道是用什么编译器编译,然后针对具体的编译器,参考该编译器的说明。

    Processed: 0.030, SQL: 8