首页 > 代码库 > #程序媛生活#大二暑假小学期#X86-32汇编语言
#程序媛生活#大二暑假小学期#X86-32汇编语言
X86-32汇编语言
0.示例helloworld程序
a.生成汇编文件
使用命令 $gcc -On -S helloworld.c -m32 会生成32位汇编文件
b.helloworld.s汇编代码内容简析
以“.”开头的是汇编指示,以“:”结尾表示函数或变量地址,其余为汇编指令
1.第一个汇编程序
a.linux汇编命令
使用命令as -o --32 my-object-file.o helloworld.s运行汇编文件
使用命令ld -o -m elf_i386 my-exe-file my-object-file.o运行.o文件
b.汇编程序分析
数据段: .data(声明带初始值的数据).bss(声明无需初始化的数据)
代码正文段: .text
入口: .globl _start,如同c中的main函数
退出: movl $0, %ebx
系统调用(通过中断指令):int $0x80 (在执行int $0x80指令,从eax寄存器存放系统调用的功能号,调用参数顺序放在ebx,ecx,edx,esi,edi中,大于5个时全部参数依次放在一块连续的内存区域里,并在ebx中保存指向该内存区域的指针,返回值从eax中获得。关于系统调用的参考资料:http://syscalls.kernelgrok.com/)($1 是退出符)
c.汇编程序示例
处理命令行参数、调用lib_c库函数
3.汇编示例程序
a.过程调用示例-幂计算
b.递归调用示例-阶乘
c.文件处理示例-小写字母转大写、数据记录处理
d.共享库文件
e.内存管理功能
#程序媛生活#大二暑假小学期#X86-32汇编语言