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

汇编语言学习系列 打印数组实现

 
阅读更多

假如汇编语言要实现如下C语言的功能,编译环境Ubuntu14.04(32位)。

复制代码
#include<stdio.h>
int main(){

    int a[] = {3, 0, 5, 1, 4, 6, 2, 9, 8, 7};
    int i;
    for(i = 0; i< 10; i++)
        printf("%d\n", a[i]);
    return 0;
}
复制代码
  • 代码
复制代码
.section .data
        array: .int 3, 0, 5, 1, 4, 6, 2, 9, 8, 7
        len: .int 10
        format: .asciz "%d\n"
.section .text
.global _start
_start:
        pushl %ebp
        movl %esp, %ebp
        subl $20, %esp    #allocate space
        
        movl $array, %edx
        movl %edx, (%esp)    #store &array on the stack
        
        movl len, %ecx
        movl %ecx, 4(%esp)    #store len on the stack
        
        call parray  
        
        addl $20, %esp
        popl %ebp

        movl $0, (%esp)    #deallocate space
        call exit
parray:
        pushl %ebp
        movl %esp, %ebp
        push %ebx        
        
        movl 8(%ebp), %edx    #get &array
        movl 12(%ebp), %ebx    #get len
        
        movl $0, %ecx  #计数器i初始化为0
        cmp %ecx, %ebx
        jle .done
.loop:
        movl (%edx, %ecx, 4), %eax
        
        call print
        
        inc %ecx  #i每次加1
        cmp %ecx, %ebx
        jg .loop        
.done:
        popl %ebx
        popl %ebp
        ret
        
print:
        pushl %edx
        pushl %ecx
        
        pushl %eax
        pushl $format
        call printf
        
        addl $8, %esp
        popl %ecx
        popl %edx
        
        ret
        
复制代码
  • 编译

as parray.s -o parray.o

  • 链接

ld -lc -I /lib/ld-linux.so.2 parray.o -oparray

  • 执行

./parray

分享到:
评论

相关推荐

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

    本文将深入探讨如何使用汇编语言接口程序来实现打印图形的功能,这在早期计算机系统和嵌入式系统开发中尤其常见。通过理解和掌握这个主题,开发者能够更好地理解底层计算机工作原理,提高程序执行效率。 首先,我们...

    汇编语言学习课件

    《汇编语言学习课件》是一份在高等教育领域广受欢迎的教学资源,旨在深入浅出地讲解汇编语言这一计算机科学的基础部分。汇编语言,作为机器语言的一种抽象表示,是程序员与计算机硬件直接交流的语言,它以易于人类...

    汇编语言设计通讯录

    《汇编语言设计通讯录》是一项技术性强、实践性高的编程任务,旨在通过汇编语言实现一个基础的通讯录系统,具备插入、列表显示、添加和删除联系人等基本功能。汇编语言作为计算机硬件与软件之间的桥梁,是低级编程的...

    汇编语言实现的五子棋游戏

    总的来说,使用汇编语言实现五子棋游戏是一个挑战性但极其有益的学习过程,它将提升你对计算机底层运作的理解,提高你的编程技巧,同时也让你能更有效地解决实际问题。尽管现代高级编程语言提供了更多便利,但掌握...

    8086汇编:输入输出和数组操作的一些函数

    17. **ARR_PRINT**: 打印数组内容。 - 实现原理:遍历数组并打印每个元素。 以上函数提供了强大的输入输出与数组操作能力,对于编写高效的8086汇编程序非常有用。通过灵活运用这些函数,可以显著提高程序的开发...

    汇编课程设计 实现折半查找

    通过阅读和理解这份代码,学生可以深入学习汇编语言的使用,理解折半查找和排序算法的实现细节,同时还能提升在有限资源下优化程序的技能。 总之,这个汇编课程设计不仅涵盖了汇编语言的基本概念,还强调了数据结构...

    汇编语言学生成绩管理

    尽管汇编语言的学习曲线较陡峭,但通过这个项目,开发者不仅可以深化对计算机底层运作的理解,还能提升解决实际问题的能力,对于理解和优化程序性能有极大帮助。 总的来说,“汇编语言学生成绩管理”项目是一个实践...

    汇编语言排序实验程序

    这个"汇编语言排序实验程序"是学习汇编语言和理解底层计算机制的宝贵资源。通过实际编写和运行这样的程序,学生不仅可以掌握基本的汇编语法,还能深入了解如何高效地利用硬件资源执行复杂的算法。同时,这也是锻炼...

    8个简单的汇编程序,数组排序、计算最大数,字符串比较,打印图形

    7. **数组排序**:汇编语言实现数组排序可以使用各种算法,如冒泡排序、选择排序等。这些算法通常包含嵌套循环,比较元素并交换位置。 8. **寻找三个数中的最大值**:这是一个简单的比较任务,可以使用CMP和条件...

    汇编语言课程设计 学生成绩管理系统

    在本项目中,“汇编语言课程设计 学生成绩管理系统”是一个使用汇编语言开发的系统,旨在实现对学生成绩的有效管理。这个系统包含了多种功能,包括查询、删除、添加、修改、浏览、退出、统计以及打印,这些都是在...

    汇编语言学习笔记 .doc

    - **基本控制流程**: 在汇编语言中,可以通过一系列连续的指令实现简单任务。例如,示例程序中的`mov eax, num`和`imul eax, eax, PRICE`等指令按照顺序执行。 - **指令解释**: 指令如`call printf`用于调用库函数`...

    汇编语言程序设计实验教程

    《汇编语言程序设计实验教程》是一门深入探讨计算机底层操作的课程,旨在帮助学习者理解计算机硬件与软件之间的交互机制。汇编语言是计算机科学的基础之一,它是一种低级编程语言,每条指令直接对应于机器语言的一个...

    汇编语言大作业报告

    2. **掌握子程序设计方法**:学习如何在汇编语言中定义和调用子程序,理解参数传递的方式,包括直接传递和通过堆栈传递。此外,还包括子程序的嵌套调用和递归调用。 3. **培养问题解决能力**:通过具体的编程任务,...

    汇编语言资料

    2. 系统调用:了解如何通过汇编语言进行系统调用,实现与操作系统的交互,如打印字符串、读写文件等。 3. BIOS与中断:学习BIOS的基本功能和中断服务,以及如何在启动阶段使用汇编语言进行系统初始化。 五、实践...

    汇编语言课程设计学生成绩统计管理

    【汇编语言课程设计...总之,“汇编语言课程设计学生成绩统计管理”项目涵盖了汇编语言编程的多个核心概念,包括数据存储、程序控制、输入/输出、算法实现等,对于学习者来说是一个全面了解和掌握汇编语言的好实践。

    汇编语言实验指导书代码与汇编考核报告.docx

    【汇编语言实验与考核详解】 汇编语言是计算机科学中的低级编程语言,它直接对应于计算机硬件的指令集。在本次实验和考核中,主要涵盖了以下几个关键知识点: 1. **数据输入与输出**: - 题目1要求输入4位16进制...

    Linux汇编语言开发指南

    ### Linux汇编语言开发指南知识点总结 #### 一、简介 **汇编语言的重要性与应用场景...通过上述内容的学习和理解,读者可以深入了解Linux汇编语言的特点、语法以及在实际项目中的应用技巧,从而更好地掌握这门语言。

    汇编语言:汇编语言程序设计项目

    这个"汇编语言:汇编语言程序设计项目"很可能是为了帮助学习者深入理解和实践汇编语言编程。 汇编语言的基础知识点包括: 1. **指令集架构**:每个处理器都有自己的指令集,如x86、ARM等。汇编语言就是这些指令集...

    汇编语言加减编写程序

    在汇编语言编程中,程序通常由一系列指令构成,这些指令直接对应计算机硬件的操作。给定的文件描述了一个简单的汇编语言程序,该程序旨在执行无符号数的加减乘除运算。它可以在DOS或Windows环境下的虚拟DOS模式中...

    汇编语言经典代码大全

    【汇编语言经典代码大全】涉及的汇编语言编程知识点主要集中在如何实现基本的算术操作和数据处理上。以下是对这些代码的详细解析: 1. **数据存储和内存管理**: - 在汇编语言中,数据通常存储在内存单元中。在本...

Global site tag (gtag.js) - Google Analytics