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