第3部分-Linux x86 64位彙編Intel彙編語法二

第3部分-Linux x86 64位彙編Intel彙編語法二

特殊符號

    $和$$是編譯器 NASM 預留的關鍵字,用來表示當前行和本 section 的地址,起到了標號的作用,是 NASM 提供的,並不是 CPU 原生支持的,相當於僞指令一樣。

    $是編譯器給當前行安排的地址,每行都有。

    $$指代本 section 的起始地址,此地址同樣是編譯器給安排的。

    nasm 默認全部代碼同爲一個 section,起始地址爲 0。section 也稱爲節、段,程序中的一小塊。

    vstart=來修飾後,可以被賦予一個虛擬起始地址 virtual start address

 

彙編乘法MUL

    MUL是進行無符號乘法的指令。MUL(無符號乘法)指令有三種格式:第一種是將8位的操作數於al相乘(乘積位於ax)。第二種是將16位的操作數與ax相乘(乘積位於dx:ax); 第三種是將32位的操作數與eax進行相乘(乘積位於edx:eax)。

 

7種尋址方式

 

    基址尋址、變址尋址、基址變址尋址,這三種形式中的基址寄存器只能是 bx、 bp,變址寄存器只能是 si、 di。其中 bx 默認的段寄存器是 ds,經常用於訪問數據段, bp默認的段寄存器是 ss,它經常用於訪問棧。

 

 前綴指令

定義(define)變量時就用5個不同的關鍵字:DB,DW,DD,DQ,DT

DW(DEFINE WORD)定義一個字(兩個字節)長度

DD(DEFINE DOUBLE WORD)定義雙字(4個字節)長度

DQ(DEFINE QUARTET WORD)定義四字(8個字節)長度

DT(DEFINE TEN BYTE)定義十字節長度

 

堆棧

    關於棧部分,下篇涉及。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章