残阳汇编基础学习(一)

文章转自 http://www.mcany.cn/article/202.htm

博主:滑落的残阳

 

   因为汇编指令,寄存器,标志位等我觉得没什么必要给大家在列成一节课程去讲,即使去讲。也没什么成效。因为一节课程,大家根本就不可能消化掉。。

   我想到了一个方法。那就是每天我给大家讲解一个汇编指令。每天大家只需几分钟的时间上论坛来消化掉一个,10天就10个。100天就是100个。而且因为仅是一个,这样大家100%能记住。。而且后面我会留一些小作业。。大家写完后一定要把相应的小作业写完。。

   每天多抽出一分钟,让你的人生不留遗憾......

  
寄存器是什么?大致说寄存器是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]
  
  
   不要觉得简单,问题很多往往处在简单的一瞬间。。。

   记得把写完后的答案。回到论坛的帖子中。。。

 

   翻到这里不要往下翻了。。。    呵呵,不然就看到别的同学的答案了。。 记住一定要学会自觉,只有这样技术才有提高。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值