Linux 彙編環境

Linux 彙編語法格式

DOS/Windows 下的彙編語言,這些彙編代碼都是 Intel 風格的。但在 Unix 和 Linux 系統中,更多采用的還是 AT&T 格式,兩者在語法格式上有着很大的不同 針對Intel風格,我們來配置我們的環境

安裝NASM

$ sudo apt-get install nasm

新建hello.asm文件

; hello.asm
section .data ; 數據段聲明
msg db “Hello, world!”, 0xA ; 要輸出的字符串
len equ $ - msg ; 字串長度
section .text ; 代碼段聲明
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 ; 調用內核功能

編譯

NASM 採用的是人工編寫的語法分析器,因而執行速度要比 GAS 快很多,更重要的是它使用的是 Intel 彙編語法,可以用來編譯用 Intel 語法格式編寫的彙編程序

nasm -f elf64  hello.asm  # 32位改成 elf32       產生hello.o

鏈接

彙編器產生的目標代碼是不能直接在計算機上運行的,它必須經過鏈接器的處理才能生成可執行代碼。

ld -s -o hello   hello.o

運行

./hello                   #屏幕上打印出 "Hello,world"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章