組合語言基礎

2022-08-21 10:42:12 字數 3693 閱讀 7457

標誌暫存器flags

of df

iftf

sfzf

afpf

cf標誌暫存器flags

cf:進製標誌       pf:奇偶標誌              af:調整標誌

zf:零標誌          sf:符號標誌              of:溢位標誌

df:方向標誌      if:中斷允許標誌        tf:陷阱標誌

r8/r16

任意乙個8/16位通用暫存器

reg代表r8或r16

seg段暫存器

m8/m16

乙個8/16位儲存器運算元單元(包括所有主存定址方式)

mem代表m8或m16

i8/i16

乙個8/16位立即數

imm代表i8或i16

dest

目的運算元

src源運算元

運算元代號

一、通用資料傳送指令

1.    mov

mov reg/mem,imm              //注意不允許立即數傳至段暫存器

mov reg/mem/seg,reg //不能同時為儲存單元

mov reg/seg,mem         //ip不能為目的運算元

mov reg/mem,seg         //不能直接改變cs的值,會引起程式執行混亂

2.    xchg:交換指令

xchg reg,reg/mem        //不能為cs,cs不能更改,不能同時為段暫存器

xchg reg/mem,reg        //不能同時為儲存器

3.    xlat:換碼指令用於將bx指定的快取區中,al指定的位移處的資料取出賦值給al

xlat label

xlat                 ;al

二、堆疊操作指令

1. push:進棧指令

push r16/m16/seg           ;sp

2. pop:出棧指令

popr16/m16/seg

三、標誌傳送指令

(1)標誌暫存器傳送

1. lahf                ;ah

2. sahf                ;flags的低位元組

3. pushf              ;sp

4. popf                ;flags

(2)標誌位操作

clc cf

stccf

cmccf

clddf

stddf

cliif

stiif

四、位址傳送指令

1.lea有效位址傳送指令

lear16,mem               ;r16

2.指標傳送指令

ldsr16,mem               ;r16

lesr16,mem                ;r16

五、算數運算子指令

(1)加法指令

1.add

addreg,imm/reg/mem

addmem,imm/reg

2.adc:帶進製加法(同上)

3.inc增量指令

increg/mem

(2)減法指令    

1.sub(似add)

2.sbb(似adc)

3.dec(似inc)

4.neg:求補指令(取反)

negreg/mem              ;reg/mem

5.cmp:將目的運算元減去源運算元,但結果不送回目的運算元。引向標誌。

cmpreg,imm/reg/mem              ;reg-imm/reg/mem

cmpmem,imm/reg                    ;mem-imm/reg

(3)乘法指令

1.mul:無符號數乘法指令

mulr8/m8                   ;無符號位元組乘:ax

mulr16/m16                ;無符號字乘:dx.ax

2.imul:有符號數乘法指令

imulr8/m8                   ;有符號位元組乘

imulr16/m16               ;有符號字乘

(4)除法指令

1.div無符號除法

divr8/m8                     ;無符號除法:al

;ahdivr16/m16                 ;無符號除法:ax

;dx2.idiv有符號除法

idivr8/m8

idivr16/m16

(5)符號擴充套件指令

1.cbw                                  ;al符號擴充套件成ax

2.cwb                                  ;ax符號擴充套件為dx.ax

(6)十進位制調整指令

1.壓縮bcd碼調整指令

daa                              ;al

;在add/adc al,x ;語句之後對al調整

das                              ;al

daa和das指令對of標誌沒有定義,按結果影響其他標誌

2.非壓縮bcd碼指令

aaa                              ;al

aas                              ;al

aam                             ;ax

aad                              ;ax

;即:al

三、位運算類操作

(1)邏輯運算指令

1.邏輯與指令and

anddest,src              ;dest

2.邏輯或指令or

ordest,src                 ;dest

3.邏輯抑或指令xor

xordest,src               ;dest

4.邏輯非指令not

notreg,mem             ;reg

5.測試指令test

testdest,src               ;dest^src,對兩個運算元執行按位與運算,但結果不回

;到目的數

(2)位移指令

1.邏輯左移shl reg/mem,1/cl            ;補0

2.邏輯右移shr reg/mem,1/cl           ;補0

3.算術左移sal reg/mem,1/cl            ;補0

4.算數術右移sar reg/mem,1/cl        ;最高位不變

(3)迴圈移位指令

1.不帶進製

rolreg/mem,1/cl                    ;左移

rcrreg/mem,1/cl

2.帶進製

rclreg/mem,1/cl                    ;右移

rcrreg/mem,1/cl

組合語言基礎

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

組合語言基礎

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

彙編 1 2 組合語言基礎

1.彙編工作過程 程式設計師 彙編指令 編譯器 機器碼 計算機 2.組合語言組成 1 彙編指令 機器碼助記符,有對應的機器碼。2 偽指令 沒有對應的機器碼,由編譯器執行,計算機不執行。3 其他符號 如 等,編譯器識別,沒有對應的機器碼。組合語言的核心就是機器碼!3.儲存器 在一台pc機中,記憶體的作...