X86 汇编/例

维基教科书,自由的教学读本

世界你好之汇编程序

源码[编辑]

; 程序名: 嗨.asm
; 源文件编码: UTF-8 
; FASM语法下的'世界你好'汇编程序

format ELF executable 3
entry 开始

segment readable executable

开始:

        mov     eax,4   ;系统函数号(sys_write)
        mov     ebx,1   ;文件描述符, 1=stdout
        mov     ecx,问候语
        mov     edx,问候语长度
        int     0x80    ;呼叫操作系统内核

        mov     eax,1   ;调用系统退出函数(sys_exit)
        mov     ebx,0
        int     0x80

segment readable writeable

问候语 db '世界你好!',0xA
问候语长度 = $-问候语

编译运行与调试[编辑]

1. 编译

fasm之使用简单明了:

fasm 源码文件名 {输出可执行文件名, 默认值源文件名} {-m 编译时使用最大内存KB} {-p 编译遍数, 默认值100}

花括号参数可选, 输出可执行文件格式在源码中指定.

编译结果显示:

  • 编译错误

  • 编译成功总结信息
$ fasm .asm
flat assembler  version 1.71.63  (16384 kilobytes memory)
3 passes, 164 bytes.

2. 运行

$ ./嗨
世界你好!

3. 调试

  • 用fdbg单步调试
$ fdbg 
0000000008048074  > mov eax,00000004
s
0000000008048079  > mov ebx,00000001
s
000000000804807E  > mov ecx,08049096
s
0000000008048083  > mov edx,0000000E
s
0000000008048088  > int 80
s
世界你好!
000000000804808A  > mov eax,00000001
s
000000000804808F  > mov ebx,00000000
s
0000000008048094  > int 80
s
WEXITSTATUS: 00h