彙編基本語法

2021-10-21 15:06:10 字數 1434 閱讀 7612

直接來看一段**

section	.text

global _start ;must be declared for linker (ld)

_start: ;tells linker entry point

mov edx,len ;message length

mov ecx,msg ;message to write

mov ebx,1 ;file descriptor (stdout)

mov eax,4 ;system call number (sys_write)

int 0x80 ;call kernel

mov eax,1 ;system call number (sys_exit)

int 0x80 ;call kernel

section .data

msg db 'hello, world!', 0xa ;string to be printed

len equ $ - msg ;length of the string

一臉懵逼對嗎,別著急。

首先,我們先來看這段**的開頭

section .text

golbal _start

_start:

這是什麼玩意兒呢?其實就相當於咱們平時用的main函式,是程式的入口

然後,**第11行的section .data,是乙個用來宣告常量的語法,你可以在這行**的下方宣告常量。

上面的**就宣告了乙個msg常量和乙個len常量。

宣告變數又該使用什麼語法呢?用section .bss,用法與section .data一樣。

接下來,你可以看到中間的一大段**,後面都接著乙個以分號;開始的語句,這其實是彙編語法的注釋

**的第四行,有一句mov edx, len

mov資料傳送指令,那這行**的意思是將len這個資料,傳送到edx暫存器

也可以這樣用:mov total 48,意思是將48賦值給total這個變數。

與它類似的有add ah, bh

意思是將bh暫存器的內容加到ah暫存器上。

ATT 彙編語法

在研華的pc104上使用看門狗要使用彙編。使用彙編來修改cmos裡面的引數。也就是內聯彙編。linux下gcc只支援att彙編。所以這兒有必要將att語法學習學習。以後需要的時候翻出來溫習溫習。1,運算元的長度 運算元的長度用加在指令後的符號表示 b byte,8 bit w word,16 bit...

Linux 彙編語法格式

絕大多數 linux 程式設計師以前只接觸過 dos windows 下的組合語言,這些彙編 都是 intel 風格的。但在 unix 和linux 系統中,更多採用的還是 at t 格式,兩者在語法格式上有著很大的不同 在 at t 彙編格式中,暫存器名要加上 作為字首 而在 intel 彙編格式...

AT T彙編語法格式

1.暫存器的引用要在暫存器前加 如mov eax,ebx 2.運算元排列是左源右目的,如上例表示把值從eax暫存器mov到ebx暫存器 3.常數 立即數前面要加 如mov 4,ebx 4.對於變數加 表示取位址。如mov value,ebx表示傳值給ebx,而mov value,ebx表示傳位址給e...