以下代码示范交换a和b两个整数的函数,编译环境Ubuntu14.04(32位)
假如要实现以下C代码
#include <stdio.h>
void swap(int *xp, int *yp)
{
int x = *xp;
int y = *yp;
*xp = y;
*yp = x;
}
int main()
{
int a = 534, b = 1057;
swap(&a, &b);
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
.section .data
a: .int 534
b: .int 1057
format: .asciz "%d\n"
.section .text
.global _start
_start:
pushl %ebp
movl %esp, %ebp
subl $24, %esp #给栈分配内存24字节保存局部变量
movl $a, %eax
movl %eax, 4(%esp)
movl $b, %eax
movl %eax, (%esp)
call swap #调用swap函数
pushl a #打印a
pushl $format
call printf
pushl b #打印b
pushl $format
call printf
movl $0, (%esp)
call exit
swap:
pushl %ebp #保存调用前栈帧地址
movl %esp, %ebp
pushl %ebx #根据习惯,保存寄存器ebx
movl 8(%ebp), %edx #get xp
movl 12(%ebp), %ecx #get yp
movl (%edx), %ebx #get x
movl (%ecx), %eax #get y
movl %eax, (%edx)
movl %ebx, (%ecx)
popl %ebx
popl %ebp
ret
as swap.s -o swap.o
ld -lc -I /lib/ld-linux.so.2 swap.o -oswap
./swap
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
本书的第二部分适合已基本掌握8086/8088汇编语言的程序员,可作为学习保护方式编程技术的教材或参考书,也可作为其他人员了解高档微处理器和保护方式编程技术的参考书,还可作为程序员透彻地了解Windows程序设计技术...
本书的第二部分适合已基本掌握8086/8088汇编语言的程序员,可作为学习保护方式编程技术的教材或参考书,也可作为其他人员了解高档微处理器和保护方式编程技术的参考书,还可作为程序员透彻地了解Windows程序设计技术...
本书的第二部分适合已基本掌握8086/8088汇编语言的程序员,可作为学习保护方式编程技术的教材或参考书,也可作为其他人员了解高档微处理器和保护方式编程技术的参考书,还可作为程序员透彻地了解Windows程序设计技术...
本书以X86系列微机为背景,从简单的Hello程序开始,系统而详细地阐述了X86微机汇编语言编程的行种基础知识和编程技巧,内容涉及到数据表示、存储器管理、各种数据类型、过程、与汇编语言相关的体系结构、控制结构、...
汇编语言:使用助记符对应机器语言中的指令,可直接操作计算机硬件。不同计算机结构的汇编指令不同。 机器语言和汇编语言都直接操作计算机硬件并基于此设计,统称"低级语言"。 (完整版)Python基础学习笔记全文共69...
在学会使用汇编语言后,学习C 语言编程是一件比较容易的事,我们将通过一系列的 实例介绍C 语言编程的方法。图1-1 所示电路图使用89S52 单片机作为主芯片,这种单片 机性属于80C51 系列,其内部有8K 的FLASH ROM,...
先修课 程:数字电子技术、单片机的汇编语言、汇编语言、C语言程序设计。 (二)教学目的 本课程教学所要达到的目的是:从应用为目的出发,通过对C语言基本概念、基本语 句、单片机应用系统的初步设计的学习,使学生...
3.4 汇编语言 54 3.4.1 概述 55 3.4.2 程序的本质 57 3.4.3 寄存器 58 3.4.4 寻址方式 60 3.4.5 汇编指令 61 3.4.6 C/C++ 语言和汇编 62 3.4.7 小结 63 3.5 其他语言 63 3.5.1 Forth 63 3.5.2 Lisp 64 3.5.3 Java 64...
3.4 汇编语言 54 3.4.1 概述 55 3.4.2 程序的本质 57 3.4.3 寄存器 58 3.4.4 寻址方式 60 3.4.5 汇编指令 61 3.4.6 C/C++ 语言和汇编 62 3.4.7 小结 63 3.5 其他语言 63 3.5.1 Forth 63 3.5.2 Lisp 64 3.5.3 Java 64...
OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...
OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...
《Liunx内核注释》同样提供了对流行的功能强大的Liunx操作系统的结构和函数实现的内 幕介绍。本书的主要目标是: 1.提供一个最新的和完整的服务器版本的完整源代码。(这本书分析的版本是2.2.5版,也 是写这...
《Liunx内核注释》同样提供了对流行的功能强大的Liunx操作系统的结构和函数实现的内幕介绍。本书的主要目标是: 1.提供一个最新的和完整的服务器版本的完整源代码。(这本书分析的版本是2.2.5版,也是写这本书时...
编程涉及诸如分析,发展理解,生成算法需求(包括算法和资源消耗)以及实现(通常称为编码)的活动。 目标中的算法)。 用一个或多个写成。 编程的目的是找到一系列指令,这些指令将自动执行特定任务或解决给定问题...
OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...
源代码是公开的库函数,使得我们可以摒弃晦涩难懂的汇编语言,在不需要了解底层寄存器的操作细节的情况下,用C语言就可以完成我们需要的功能。所有这些特点使得我们学习ARM处理器的门槛得以降低。同时建议大家尽量去...
OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...
OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...
3.6 第一个汇编语言工程:控制小灯闪烁 117 3.6.1 汇编工程文件的组织 118 3.6.2 Light构件汇编程序 122 3.6.3 Light测试工程主程序 124 3.6.4 理解第一个汇编工程的执行过程 126 第4章 基于硬件构件的嵌入式...