Linux匯編語法簡介._第1頁
Linux匯編語法簡介._第2頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Linux匯編語法簡介一、通用語法指令格式: 操作碼 源操作數(shù), 目的操作數(shù)(在有兩個操作數(shù)的情況下)。常量表示: 在常量前加上$,例:$1$的另一種用法:用于符號時,表示的是一個首地址。例:string:.ascii hello worldn0movl $string, %eax #首地址復(fù)制到eax寄存器表示: 在寄存器名前加上%,例:%eax對不同長度的操作數(shù)操作:分別在指令后加上b、w、I,表示字節(jié)(8位)、字(16位)、雙字(32位)例:movb $1, %al, movw $1, %ax, movl $1, %eax(注:一般情況下,都是32位操作)。不同進制數(shù)的表示:十六進制以0

2、 x開頭,例:$0 xffff十進制沒有符號,例:$1八進制以0開頭,例:$0777二進制以0b開頭,例:$0b1111注釋:#號開頭用于單行/*/用于多行。每條匯編語句以換行和回車這兩個字符為結(jié)束。(注意:當(dāng)寫完程序的最后一條語句,不要忘記按enter鍵,否則編譯時會提示最后一條語句的出錯)二、尋址通用內(nèi)存尋址:地址或偏移量(%首地址或偏移量, %索引,字節(jié)數(shù)),其中所有的參量都是可選的。以下的幾種尋址是通用方式的變形: 直接尋址:movl 0 xff11, %eax索引尋址:movl string(, %ecx, 1), %eax # string是事先已定義過的標(biāo)簽,代表一個首地址。整個

3、意思是讀取一組數(shù)據(jù)的某一個,長度為一個字節(jié),復(fù)制到eax。(相當(dāng)于數(shù)組)適用于數(shù)據(jù)段尋址。間接尋址:movl (%eax), %ebx #把eax所指向的值復(fù)制到ebx(相當(dāng)于指針操作)基址尋址:movl 4(%ebp), %ebx #據(jù))。適用于堆棧尋址。把ebp的地址偏移4個字節(jié)所取得的值復(fù)制到ebx(通過基址指針加偏移量來尋找數(shù)立即數(shù)尋址:movl $1, %eax #把一個常量直接復(fù)制到寄存器三、常用偽指令段表示:.data數(shù)據(jù)段.bss(block started by symbol)符號開始段.text代碼段基本數(shù)據(jù)類型(可以用逗號分割多個表達式或字符串):.byte表達式:8位(

4、0 - 255)例:.byte 100, 200, 300.int表達式:16位(0 - 65535)例:.int 1000.long表達式:32位(0 - 4294967295)例:.long 100000.ascii 字符串:以0為結(jié)束符,例:.ascii hello0.global(或.globl)符號:定義全局符號,例:.global _start,這是每個Linux下的匯編程序代碼段的第一個定義,它指定了 整個程序與運行環(huán)境交互的入口(相當(dāng)于C中的main函數(shù))。.equ符號,表達式:等價替換(可用于局部變量的定義)。例:.equ LINUX_SYSCALL 0 x80 .lcomm

5、符號,字節(jié)數(shù):在.bss段中聲明未初始化變量的內(nèi)存空間(適用于全局和靜態(tài)變量的聲明) 例:.bss.lcomm buffer, 256函數(shù)表示:.type符號, function例:.type func, functionfunc:.include文件:外部文件的調(diào)用 例:.include outside.s四、程序基本結(jié)構(gòu).data.bss.text.global _start_start:五、系統(tǒng)調(diào)用Linux的系統(tǒng)調(diào)用的中斷號是0 x80,參數(shù)的傳遞要通過通用寄存器來完成。 這里對寄存器的使用有一些約定:eax存放系統(tǒng)調(diào) 用的編號,參數(shù)依次放入ebx,ecx,edx,esi,edi,最后用int $0 x80指令完成調(diào)用。例:程序結(jié)束后的正常退出movl $1, %eaxmovl $0, %ebxint 0 x80這相當(dāng)于在C中執(zhí)行了exit(0)。六、程序的編譯匯編器命令:as參數(shù):-gstabs:產(chǎn)生符號表,用于調(diào)試-o:自定義輸出的文件名,由于通過匯編器產(chǎn)生的是目標(biāo)文件,因此,必須是后綴名為.o的文件-help:幫助例:as -gstabs test.s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論