返回列表 发帖

[分享] 汇编基础一日一学习1

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

   我想到了一个方法。那就是每天我给大家讲解一个汇编指令。每天大家只需几分钟的时间上论坛来消化掉一个,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 指令来获取相应内存单元的有效地址并传送到相应的目的操作数中。

存储单元  存储单元一般应具有存储数据和读写数据的功能,一般以8位二进制作为一个存储单元,也就是一个字节。每个单元有一个地址,是一个整数编码,可以表示为二进制整数。程序中的变量和主存储器的存储单元相对应。变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。指针的内容是存储地址
  在存储器中有大量的存储元,把它们按相同的位划分为组,组内所有的存储元同时进行读出或写入操作,这样的一组存储元称为一个存储单元。一个存储单元通常可以存放一个字或若干个字节;存储单元是CPU访问存储器的基本单位。

   

   小作业:
      
     判断是否正确

   1. lea  eax, edx      

   2. lea  eax, 50H

   3. lea  esp, [ebp-30]
   
   
   不要觉得简单,问题很多往往处在简单的一瞬间。。。

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



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


答案回复可见

本帖隐藏的内容需要回复才可以浏览
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

于智者同行,你会不同凡响;与高人为伍,你会登上巅峰

沙发???  :lol
都是对的吧

TOP

第一个是错的把

TOP

哎呦,不错噢:handshake 支持支持

TOP

噢。忘记回答问题了……俺选A

TOP

看看是什么东西、!
黑色的方向留有一个我的席位

TOP

以后每天都来 看 嘿嘿

TOP

第一个?

  (*^__^*) 嘻嘻……

TOP

都不怎么懂 不过做对了作业 呵呵!主要是以前计算机课基础知识没好好学 计算进制什么的没有一点概念 还要补习下!呵呵忽然发现好多都该学啊 有点学部过来了!

TOP

参观课堂!
偷偷来看

TOP

第一天,我迟到了

TOP

第一个和第二个是对的吧 解答下 嘻嘻

TOP

看卡我都不知道是什么

TOP

我认为是最后一个  其实也是蒙的   以前基础没学好    没怎么看懂

TOP

第一个是错的吧……

TOP

学习了 Y荡阿.em66.

TOP

我来的太晚了

TOP

学习了 LZ辛苦了

TOP

应该是1,2错吧

TOP

学习学习.

TOP

返回列表