x86 32組合語言基礎彙總

2021-08-07 16:54:03 字數 1139 閱讀 1189

從c**生成彙編**

gcc -o2 -s code.c -m32 -fno-omit-frame-pointer

編譯.s檔案為.o檔案

as -o code.o code.s --32

使用gdb除錯則加

-gstabs

鏈結.o檔案生成可執行檔案

ld -o exe code1.o code2.o -m elf_i386

呼叫lib_c庫函式

ld命令加上引數,-m引數也不能丟

-lc -dynamic-linker /lib/ld-linux.so.2

output:

.asciz "the number is %d\n"

num:

.long 666

.section .text

.globl _start

_start:

movl $num, %eax

pushl (%eax)

push

$output

call printf

addl $8, %esp

push

$0 call exit

儲存為test.s,然後使用命令

as test.s -o test.o --32

ld test.o -o test -m elf_i386 -lc -dynamic-linker /lib/ld-linux.so.2

./test

即可觀察到輸出。

1.資料

c宣告intel資料型別

彙編**字尾

大小(位元組)

char位元組b

1short字w

2int雙字l

4long int雙字l

4char*雙字l

4float

單精度s

4double

雙精度l

8long double

擴充套件精度

t10/12

組合語言指令所處理的資料型別一般是採用組合語言的字尾來進行區分。

組合語言基礎

1.資料格式 26d 十進位制 1ah 十六進製制 42 o g 八進位制 以字母開頭的十六進製制常量前面必須加乙個0,以防止彙編器將其解釋為識別符號 2.盡量在表示式中使用圓括號顯式表明運算順序 3.彙編器大量使用 符號做為預定義符號的字首,因此應盡量避免在自己定義的標誌符前用 但 myfile為...

組合語言基礎

暫存器 暫存器是處理器內部的高速緩衝區,用於暫時存放資料。暫存器的分類 透明暫存器 這類暫存器不需要程式設計師進行操作。可程式設計的暫存器 這是我們程式設計師需要學習的這類暫存器又分為通用暫存器和專用暫存器 32位通用暫存器 eax ebx ecx edx edi esi ebp esp 16位通用...

組合語言基礎

標誌暫存器flags of df iftf sfzf afpf cf標誌暫存器flags cf 進製標誌 pf 奇偶標誌 af 調整標誌 zf 零標誌 sf 符號標誌 of 溢位標誌 df 方向標誌 if 中斷允許標誌 tf 陷阱標誌 r8 r16 任意乙個8 16位通用暫存器 reg代表r8或r1...