Linux下用匯編輸出Hello, world

下列是Intel彙編語法實現的 Hello, world!程序。函數

;; hello.asm
;; nasm -f elf hello.asm; will output hello.o
;; ld -s -o hello hello.o

;; section, same to segment
segment .data      ; 數據段聲明, 下列代碼將放在數據段中
    msg db "Hello, world!", 0xA   ; 要輸出的字符串
    len equ $ - msg         ; 字串長度

section .text      ; 代碼段聲明,下列代碼將放入代碼段中
global _start      ; 指定入口函數,global修飾是爲了讓外部能夠引用_start
_start:         ; 在屏幕上顯示一個字符串
    mov edx, len   ; 參數三:字符串長度
    mov ecx, msg   ; 參數二:要顯示的字符串
    mov ebx, 1    ; 參數一:文件描述符(stdout)
    mov eax, 4    ; 系統調用號(sys_write)
    int 0x80     ; 調用內核功能
             ; 退出程序
    mov ebx, 0    ; 參數一:退出代碼
    mov eax, 1    ; 系統調用號(sys_exit)
    int 0x80     ; 調用內核功能

在Linux下能夠用nasm編譯成ELF格式的目標文件,而後連接成可執行文件。code

nasm -f elf hello.asm  #將生成hello.o
ld -s -o hello hello.o  #連接生成可執行文件hello.

執行./hello就能看到"Hello, world!"的輸出了。字符串

相關文章
相關標籤/搜索