汇编基础一日一学习1

来源:互联网 发布:usb加密狗复制软件 编辑:程序博客网 时间:2024/04/30 10:13
寄存器是什么?大致说寄存器是cpu的部件(一般用于信息储存)。也可以说寄存器是我们可以进行指令读写的部件。  我们目前80386的cpu的每个寄存器是4个字节的。也就是32位。(也可以说80386cpu有32条地址线)。8个通用寄存器eax ebx ecx edx esp ebp esi edi 。 也就是我们cpu每次读取内存中二进制数据的时候,每次只能读取32个二进制位的数据。因为我们cpu是通过数据总线去读取的。80386数据总线32根。。

   1.lea指令。
  
  此指令是将源操作数(也就是存储单元)的有效地址(也可以叫做偏移地址)传送到目的操作数。。 举例
  

  lea    eax,  [ebp-4C]
      目的操作数  源操作数
    
  这里有两个注意的地方:
  
  (1)源操作数必须是一个存储单元。不能是立即数。

  (2)目的操作数必须是8个通用的寄存器。eax ebx ecx edx esp ebp esi edi


  讲解:此示例表示的存储单元的有效地址是 ebp-4c 这个结果被传送到eax寄存器中。


  课外知识:这个指令一般被用于我们程序中子程序堆栈分配来确定存储单元的有效地址。因为我们局部变量分配内存,我们不可能确定其相应的地址,因为堆栈分配是按照你声明局部变量的大小来分配的。所以我们只能采用lea指令来获取相应内存单元的有效地址并传送到相应的目的操作数中。


 
 

   小作业:
      
    判断是否正确

   1.lea  eax,edx      

   2.lea  eax, 50H

   3.lea  esp,[ebp-30]
0 0
原创粉丝点击