假如汇编语言要实现如下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
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
超详细的汇编语言学习教程,适合零基础的同学 一、基础介绍 汇编语言简介 80×86 计算机组织 80×86 的指令系统和寻址方式 汇编语言程序格式 汇编语言程序的运行 子程序结构 二、汇编实验 打印输出"Hello World!" ...
1、计算S=1+2+3+4+……+N直到和大于500为止 ...5、编写打印图形程序 6、用子程序结构编写程序:从键盘入一个二位十进制数的月份(01~12),然后显示相应的英文缩写名 7、数组排序 8、求三个数中最大的数
稍显枯燥的是,它们和Windows内核无关,是纯C语言与汇编语言的关系的字节。如果读者已经精通汇编语言,并能顺利阅读汇编代码,请直接跳进本部分。 第1章 汇编指令与C语言 1.1 上机建立第一个工程 1.1.1 用Visual ...
1-1 汇编语言介绍 1-1-1 程序设计语言分类 1-1-2 汇编语言程序设计的意义 1-2 位及字节 1-3 二进制数 1-3-1 数字系统 1-3-2 补码 1-3-3 BCD码 1-4 十六进制表示法 1-5 ASCII码 1-6 个人计算机组成 1-6-1 处理器 1-6-...
稍显枯燥的是,它们和Windows内核无关,是纯C语言与汇编语言的关系的章节。如果读者已经精通汇编语言,并能顺利阅读汇编代码,请直接跳过本部分。 第1章 汇编指令与C语言 2 1.1 上机建立第一个工程 4 1.1.1 用...
稍显枯燥的是,它们和Windows内核无关,是纯C语言与汇编语言的关系的章节。如果读者已经精通汇编语言,并能顺利阅读汇编代码,请直接跳过本部分。 第1章 汇编指令与C语言 2 1.1 上机建立第一个工程 4 1.1.1 用...
稍显枯燥的是,它们和Windows内核无关,是纯C语言与汇编语言的关系的章节。如果读者已经精通汇编语言,并能顺利阅读汇编代码,请直接跳过本部分。 第1章 汇编指令与C语言 2 1.1 上机建立第一个工程 4 1.1.1 用...
C#学习笔记(2)【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号:日期:2004-07-11 人气:8092 出处: write by cash(天下第七) 2002.01.20 版权所有,翻录不究 cashcao@...
交替打印数字和字母 判断字符串中字符是否全都不同 翻转字符串 判断两个给定的字符串排序后是否一致 字符串替换问题 机器人坐标计算 语法题目一 语法题目二 goroutine和channel使用一 实现阻塞读的并发安全Map 高...
为了完成二进制炸弹拆除任务,需要使用gdb调试器和objdump来反汇编炸弹的可执行文件,并单步跟踪调试每一阶段的机器代码,从中理解每一汇编语言代码的行为或作用,进而设法“推断”出拆除炸弹所需的目标字符串。...
1.13 汇编语言 18 1.13.1 I386汇编简介 18 1.13.2 VS反汇编 19 1.14 IDE工具 19 1.14.1 QT常用快捷键 19 1.14.2 VS常用快捷键 19 1.14.3 VS断点,调试 19 2 C语言中的数据类型 19 2.1 常量 19 2.1.1 #define 19 ...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工...
15.4 接口的实现 .182 15.5 抽象类与接口 .195 15.6 小 结 .196 第十六章 组织应用程序 .198 16.1 基 本 概 念 .198 16.2 使用名字空间 .200 16.3 使用指示符 .203 16.4 程 序 示 例 .206 16.5 小 ...
1.6 机器语言、汇编语言和高级语言 4 1.7 Visual Basic的历史 5 1.8 其他高级语言 5 1.9 结构化编程 6 1.10 什么是Visual Basic 6 1.11 关于Visual Basic和本书的一般性提示 7 1.12 本书概览 7 小结 12 自测练习 14 ...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...