首页 > 代码库 > #程序媛生活#大二暑假小学期#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汇编语言