1、通用寄存器

         寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。在计算机领域,寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制寄存器。

           通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。

32位 16位 8位 8位
EAX AX AH AL
EBX BX BH BL
ECX CX CH CL
EDX DX DH DL
ESP SP
EBP BP
ESI SI
EDI DI

     其中EAX、EBX、ECX和EDX的结构都相一致,如下:

             精简汇编语言笔记(三) ——通用寄存器及内存地址

     八个寄存器都可以作为普通的数据寄存器使用。

     但有的有特殊的用途:
     EAX为累加器,常用于存放数据计算得到的结果;
     ECX为计数器,在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;
     EBX为基址寄存器,它可作为存储器指针来使用;
     EDX称为数据寄存器。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。
     EBP为基址寄存器,它可作为存储器指针来使用;
     ESI为源变址寄存器,EDI为目的变址寄存器,它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便;
     EBP位基址寄存器,通常指向栈低,也可以用来寻址,见EBP寻址;
     ESP为堆栈指针寄存器,指向当前栈顶;

 

2、内存地址

<1> 内存太大没法起名字,所以只能用编号。当我们想向内存中存储数据,或者从内存中读取数据时,必须用到这个编号,就像写信必须要写收信人地址一样。
<2> 这个编号又称为内存地址(32位,前面0可以省略)。
       因为32位机器寻址范围为2^32=4GB,所以32计算机最多为每个进程分配4GB的逻辑空间

汇编语言中对内存书写的格式
Byte ptr ds:[地址编号]
Word ptr ds:[地址编号]
Dword ptr ds:[地址编号]
如果地址编号处使用ESP和EBP,则ds换成ss:
Byte ptr ss:[地址编号]
Word ptr ss:[地址编号]
Dword ptr ss:[地址便还]

内存地址的五种形式

1、形式一:[立即数]

MOV EAX,DWORD PTR DS:[0x13FFC4]

2、形式二:[reg]  reg代表寄存器 可以是8个通用寄存器中的任意一个

MOV ECX,0x13FFD0

MOV EAX,DWORD PTR DS:[ECX]

3、形式三:[reg+立即数]

MOV ECX,0x13FFD0

MOV EAX,DWORD PTR DS:[ECX+4]

4、形式四:[reg+reg*{1,2,4,8}]

MOV EAX,13FFC4

MOV ECX,2

MOV EDX,DWORD PTR DS:[EAX+ECX*4]

  1. 形式五:[reg+reg*{1,2,4,8}+立即数]

MOV EAX,13FFC4

MOV ECX,2

MOV EDX,DWORD PTR DS:[EAX+ECX*4+4]

 

 

 

 

 

相关文章:

  • 2021-07-24
  • 2022-12-23
  • 2021-08-11
  • 2021-05-13
  • 2021-12-05
  • 2021-04-18
  • 2022-12-23
  • 2021-10-15
猜你喜欢
  • 2021-05-06
  • 2022-12-23
  • 2021-09-14
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案