`
Ydoing
  • 浏览: 105967 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

汇编语言学习系列 函数实现

 
阅读更多

以下代码示范交换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


分享到:
评论

相关推荐

    汇编语言写的计算器(含源码)

    在这个“汇编计算器”项目中,你将看到如何用汇编语言实现基本的算术运算,包括加、减、乘、除。计算器的核心在于处理用户输入的数字和执行相应的运算。这通常涉及到以下几个关键步骤: 1. **输入处理**:在汇编中...

    汇编语言编写的简易贪食蛇游戏

    总结来说,这个项目不仅提供了有趣的贪食蛇游戏,更是汇编语言学习者的一份实践教材,通过实际操作,可以加深对微机原理的理解,提升编程技能。无论是对专业学习还是兴趣探索,都具有很高的价值。

    王爽汇编语言学习课程工具资料

    此外,掌握汇编语言与高级语言(如C语言)之间的接口,了解如何通过汇编语言实现C语言的函数调用,也是汇编语言学习的重要环节。这将有助于你理解编译器的工作原理,以及优化代码性能的方法。 总之,王爽教授的...

    汇编语言入门例子

    "汇编语言入门例子"这个压缩包文件提供了一些基础的汇编语言编程实例,非常适合想要入门汇编的朋友们学习。 汇编语言的核心概念包括指令集、寄存器、地址和操作码。每个汇编程序都是由一系列指令构成的,这些指令...

    汇编语言语法学习 汇编语言语法学习

    汇编语言的语法由一系列指令组成,这些指令包括数据定义、运算指令、转移指令、输入/输出指令等。每种汇编语言都有其特定的语法和约定,这里我们以描述中的关键词“Linux下ARM汇编语法”为例,来深入了解ARM架构下的...

    用汇编语言来实现汇编语言小程序设计

    根据给定的文件信息,我们可以...通过对各个部分的详细解析,我们不仅了解了汇编语言的基本语法和结构,还学习了如何在汇编语言中处理字符串和进行基本的数学运算。这对于理解低级编程和操作系统底层实现具有重要意义。

    汇编语言实现文本编辑器

    然而,通过学习汇编语言实现文本编辑器,我们可以深入理解计算机系统的底层工作原理。 首先,我们需要了解文本编辑器的基本功能。一个简单的文本编辑器至少应具备打开、创建、保存和编辑文本文件的能力。在汇编语言...

    汇编语言课设源码

    3. **函数调用**:虽然汇编语言没有高级语言中的函数概念,但可以模拟函数调用。学生会学习如何保存和恢复寄存器状态,以及如何通过栈来传递参数和返回值。 4. **中断处理**:中断是计算机响应外部事件的一种机制。...

    X86汇编语言原版图书

    3. **编程模型**:解释X86汇编语言的编程模型,如栈操作、调用和返回过程、中断处理,以及如何在汇编语言中实现高级语言的结构,如循环和函数。 4. **内存管理**:讨论地址空间、段和页表的概念,以及如何通过汇编...

    汇编语言教程基于X86处理器.rar

    X86处理器系列是个人计算机领域最广泛使用的处理器架构,因此,掌握X86汇编语言对于硬件开发者、系统程序员以及对底层操作感兴趣的IT专业人士来说是必备技能。 本教程将深入讲解X86汇编语言的基本概念,包括指令集...

    WIN32汇编程序源码级调试_VS2019_vs2019win32汇编_vs2019win32汇编_Win32汇编程序_汇编语言

    在汇编语言中,创建窗口通常涉及调用像`CreateWindowEx`或`CreateWindow`这样的API函数,设置窗口类、消息处理函数等。学习这些示例可以帮助初学者理解如何将汇编语言与Windows API相结合。 "Masm32"可能指的是MASM...

    汇编语言实现的计算器

    ### 汇编语言实现的计算器:一位数的四则运算 #### 知识点解析: **1. 汇编语言基础与程序结构** 在《汇编语言实现的计算器》这...通过这个项目,学习者可以深入了解汇编语言的工作机制及其在实际应用中的使用场景。

    intel汇编语言 汇编语言学习文档

    【标题】:“Intel汇编语言 汇编语言学习文档” 【内容】: Intel汇编语言是编程领域中的一种低级语言,它直接对应于计算机硬件的机器指令系统,主要用于编写系统级软件、驱动程序以及优化性能的关键部分。在本...

    51系列汇编语言开发工具

    51系列汇编语言开发工具是针对51单片机进行程序开发的...通过学习和熟练使用51系列汇编语言开发工具,开发者不仅可以编写高效、精确的单片机程序,还能深入了解硬件工作原理,从而更好地应对各种嵌入式系统的设计挑战。

    汇编语言学习经典教程

    《汇编语言学习经典教程》是一本针对汇编语言初学者和进阶者精心编写的教程,旨在帮助读者深入理解计算机底层运作原理,并掌握汇编语言的编程技能。汇编语言,作为计算机科学中的基础语言之一,对于硬件控制、系统级...

    汇编语言学习课件

    【汇编语言学习课件】是一份专门为初学者设计的教育资源,旨在帮助那些对计算机底层运作原理感兴趣的学员理解和掌握汇编语言。汇编语言是一种低级编程语言,它与机器语言紧密相关,每条指令都对应着计算机硬件可以...

    一步一步学习linux汇编语言程序设计

    此书标题明确指出其内容将聚焦于 Linux 下的汇编语言学习。对于初学者而言,“一步一步”意味着本书将按照循序渐进的方式介绍汇编语言的相关知识,便于理解和掌握。Linux 作为一种广泛使用的操作系统,其底层架构的...

    汇编语言全接触(精)

    《汇编语言全接触(精)》是一本深入浅出的汇编语言学习教材,它为初学者提供了全面而详尽的汇编语言知识体系。汇编语言是计算机科学的基础,是与硬件交互的直接桥梁,理解并掌握汇编语言对于计算机专业人员来说至关...

    汇编语言接口程序实现打印图形的程序

    汇编语言程序通常包含一系列机器码指令,这些指令与具体的硬件密切相关,因此能实现高效的执行效率和控制打印设备的能力。 “接口程序”表明这并不是一个单一的打印函数,而是一个设计来处理打印任务的模块或程序集...

    微机原理与应用 汇编语言学习

    《微机原理与应用 汇编语言学习》是一门深入理解计算机系统底层运作和编程技术的课程。汇编语言,作为计算机科学的基础,是直接对应机器指令的编程语言,对于计算机专业人士而言,掌握汇编语言是提升技能的重要一步...

Global site tag (gtag.js) - Google Analytics