彙編指令總結

2021-08-26 09:39:56 字數 1675 閱讀 6024

【連續第1天總結】

筆記**於《組合語言》王爽著,主要對平常用到的彙編中暫存器指令進行總結

暫存器進行資訊儲存;通俗的理解為——變數(cpu中的)

8086cpu有14個暫存器:

​ ax、bx、cx、dx、

​ si、di、

​ ip、sp、bp、

​ cs、ds、ss、es、

​ psw

通用暫存器:ax,bx,cx,dx;這4個暫存器通常用來存放一般性的資料,被稱為通用暫存器

**段暫存器:cs 指令指標暫存器:ip

​ (cpu將cs:ip 指向的內容當作指令執行)

​ ([address]表示乙個偏移位址為address的記憶體單元)

​ (用mov指令訪問記憶體單元,可以在mov指令中只給出單元的偏移位址,此時,段位址預設在ds暫存器中)

​ (任意時刻,ss:sp指向棧頂元素)

[bx]也表示乙個記憶體單元,bx存放偏移位址

(ax):表示ax中的內容

標誌暫存器:flag;其中儲存的資訊通常被稱為程式狀態字(psw),它的每一位都有特殊的功能

zf標誌:

cpu訪問記憶體單元時,必須向記憶體提供記憶體單元的實體地址。8086cpu在內部用段位址和偏移位址移位相加的方法形成最終的實體地址。

mov ax,bx       將暫存器bx中的資料送入暫存器ax(ax=bx)

mov al,[o] 從1000:0單元的資料到al的傳送;cpu會自動從資料段位址中ds中取出段位址,然後加上偏移位址,找到記憶體單元,然後讀取資料

add ax,bx 將ax和bx中的數值相加,結果存在ax中(ax=ax+bx)

sub 暫存器,暫存器

jmp 某一合法暫存器 僅修改ip的內容;用暫存器中的值修改ip

jmp ax

push ax 入棧;表示將暫存器ax中的資料送入棧中

pop ax 出棧;表示從棧頂取出資料送入ax

8086cpu的入棧和出棧都是以字為單位進行的

loop 有迴圈的含義

//轉移指令call和ret它們都修改ip,或同時修改cs和ip。經常被共同用來實現子程式的設計

call指令

ret指令用棧中的資料,修改ip的內容,從而實現近轉移

呼叫函式時,需要使用棧資料結構

(1)傳遞引數

函式呼叫時,需要傳遞引數,而在彙編中是將引數放到棧中來呼叫乙個函式

呼叫棧

push 引數3

push 引數2

push 引數1

call ***x //呼叫函式,並返回位址壓入棧中

push ebp //將之前的ebp壓入

mov ebp,esp //建立新的空棧

sub esp,***x //開闢新的棧空間,之後往棧中放入區域性變數

...... //函式**

mov esp,ebp //將esp回到ebp處,為了取之前的ebp

pop ebp //取之前的ebp

ret //結束

AT T彙編指令總結

記錄一下,方便以後檢視 引用暫存器要在暫存器號前加百分號 如 movl eax,ebx 80386有如下暫存器 8個32 bit暫存器 eax,ebx,ecx,edx,edi,esi,ebp,esp 8個16 bit暫存器 它們事實上是上面8個32 bit暫存器的低16位 ax,bx,cx,dx,d...

AT T彙編指令總結

1.暫存器引用 引用暫存器要在暫存器號前加百分號 如 movl eax,ebx 80386有如下暫存器 8個32 bit暫存器 eax,ebx,ecx,edx,edi,esi,ebp,esp 8個16 bit暫存器 它們事實上是上面8個32 bit暫存器的低16位 ax,bx,cx,dx,di,si...

彙編quad ARM 彙編指令集(總結)

arm彙編指令集 指令 偽指令 彙編 指令 是機器碼的助記符,經過彙編器編譯後,由cpu執行。彙編 偽指令 用來指導指令執行,是彙編器的產物,最終不會生成機器碼。有兩種不同風格的arm指令 1 arm官方的arm彙編風格 指令一般用大寫,windows中的ide開發環境。2 gnu風格的arm彙編 ...