汇编代码学习一

原创 2013年12月03日 22:04:22

一个IA32的cpu包含八个存储32位值的寄存器。这些寄存器可以用来存储寄存器和指针。每个寄存器一%开头,如下图所示:


大多情况下,前六个可以看作通用寄存器,多他们没有特别的使用限制。最后两个保存着指向程序最重要的两个指针。栈指针和帧指针(基址指针)。

操作数指示符

1 立即数,也称常数,在ATT汇编代码中用 '$'后面跟一个标准C表示的常数。如:$ox1F;

2 寄存器,表示某个寄存器的内容,对双字操作来说,可以是8个32位寄存器其中一个如:%eax; 对单字操作来说,可以表示8个16位寄存器其中的一个如:%ax,对字节操作来说,可以表示8个8位寄存器其中的一个:%ai;

3 存储器,他会根据计算出来的地址访问,访问某个存储器位置。如;4(%eax),表示访问 %eax  + 4 这个地址的内容。



上图所示,是操作数指示符的一些操作。

数据传送指令

movb:移动一个byte

movw:移动一个字(2byte)

movl:移动双字 (4byte)

movl     $0x12F %eax         immediate -> register  4bytes

movw  %bp       %sp           register -> register       2bytes

movb   (%edi,%ecx)  %ah  memmory -> register   1byte

movl     $0x12    4(%eax)             immediate -> memory   4bytes

-------------------------------------------------------------

pushl: 把数据压入栈顶,指令只有一个操作数,动作为:先把栈指针减四4(栈向低地址扩展),然后把值写到新的栈顶地址

 如在函数调用的时候经常看到的 pushl %ebp,其行为等价于下面两条:

subl  $0x4    %esp

movl %ebp   (%esp)


popl:把数据弹出栈顶,指令也只有一个操作数,动作:先把栈顶值读出,然后栈指针加4

如 popl %eax 其行为等价于下面两条指令;

movl     (%esp)   %eax

addl      $0x4       %esp


加载有效地址指令 lean

如: lean   (%eax)     %ecx

表面上看上去是将存储器的内容传给%ecx,实际上根本没有用到存储器引用,而是把有效地址加载给%ecx,即 把%eax -> %ecx;

淡然还有其他的整数算数操作,如下图:








版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C/C++学习 - gcc编译过程查看汇编代码

GCC GCC参数 举例 GCCgcc大家都很熟悉,是个编译器,功能强大,全称是:GUN GCC。平时大家都简单的称为:GCC, 功能强大,能够编译很多的语言。包括:c, c++, java, ada...

从汇编代码学习C++语言2—类复制构造函数

从汇编代码学习C++语言2—类复制构造函数         类的复制构造函数同样是C++类的重要函数。         Code 1没有复制构造函数,我们将从汇编代码分析: class Obje...

《网络渗透技术》学习笔记(3)——一段穿透防火墙的Shellcode汇编代码分析 zz

http://blog.sina.com.cn/s/blog_492101c7010002sz.html 通过前面两节的笔记,对程序栈结构、函数调用、系统调用等基础知识已经形成了一定程度的认识,本节...

java汇编代码学习(一)基本类型与数组类型

测试的代码块: void typeTest(){ int arr[] = {1,2,3}; int a = 100; }这里省略了类的主体部分仅仅是把我用到的代码贴了出来,利用 javap ...

从汇编代码学习C++语言1—类对象构造函数与析构函数

从汇编代码学习C++语言1—类对象构造函数与析构函数         类对象必须经历初始化与销毁两个过程,类的构造函数与析构函数担当此重任。本文作为从汇编代码学习C++语言系列的...

java汇编代码学习(二)正确的给switch添加break

这是java汇编代码学习的第二篇,本文介绍一个比较简单的知识点,也是比较常用的知识点,希望大家在平时编程中注意。 switch是我们比较常用的控制语句之一,我们都知道,switch 语句就是对输入值进...

VS中的反汇编代码学习

title: VS中的反汇编代码学习 date: 2016-06-02 11:06:16 categories: 汇编 tags: - 汇编 - Visual Studio反汇编...

51汇编代码实例

  • 2014年10月25日 23:48
  • 130KB
  • 下载

64位WIN7下debug汇编代码

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/tobyaries/article/details...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汇编代码学习一
举报原因:
原因补充:

(最多只允许输入30个字)