8086定址方式和指令系統

2021-10-02 10:37:37 字數 3478 閱讀 1141

1、立即定址

運算元為立即數,位於在指令中,存放在**段中,執行指令時從指令佇列中獲得,取用速度較快。但只能用於源運算元定址,不可用於目的運算元定址。

例:mov al,80h ;位元組長度要對應

mov ax,0a3ffh ;以字母為開頭的資料要在前加0

2、暫存器定址

運算元存在在暫存器中;可用於源運算元和目的運算元定址,訪問速度快。

例:mov ax,dx ;長度要對應

mov ah,al

可用的暫存器有:

(16位)ax,bx,cx,dx,si,di,sp,bp

(8位)al,ah,bl,bh,cl ,ch,dl,dh

3、直接定址

運算元位址在指令中,

例mov ax,[0867h]

mov ax,addr ;符號位址

符號可以是變數:addr dw 0867h

也可以是立即數:addr equ 0867h

預設的段位址為ds

也可用段超越字首:mov ax,es:[addr]

或:mov ax,es:addr

4、暫存器間接定址

運算元儲存在儲存器中,但運算元的位址在暫存器中,並且暫存器只能是:bx、bp、di、si。

例:mov ax,[bx]

注:當暫存器為:bx、di、si時,預設段暫存器為ds。

當暫存器位:bp時,預設段暫存器位ss。

可用段超越字首修改段位址。

5、暫存器相對定址

6、基址變址定址

運算元的位址由基址暫存器(bx或bp)和變址暫存器(di或si)決定,

例:mov ax,[si][bx]

其中,當基址為bx時,段位址在ds中;當基址為bp時,段位址在ss中。

7、相對基址變址暫存器

上面各種定址方式中,方括號「」表示「相加」的意思

8、其他定址方式

(1)直接埠定址

(2)間接埠定址

(3)隱含定址

部分指令預設了運算元位址,而不用人為指定。

mov dst,src

位元組或字的傳送

push src

入棧指令

pop dst

出棧指令

xchg opr1,opr2

交換字或位元組

xlat (opr)

表交換in al,(dx/8位立即數)

輸入out dx/8位立即數,al

輸出lea reg,src

裝入有效位址

lds reg,src

裝入資料段寄存去

les reg,src

裝入附加段暫存器

lahf

標誌暫存器低位元組送ah

sahf

ah的內容送標誌暫存器

pushf

標誌暫存器入棧指令

popf

出棧,並送標誌暫存器

add dst,src

加法指令

adc dst,src

帶進製加法指令

inc opr

自增1指令

sub dst,src

減法指令

sbb dst,src

帶借位的減法指令

dec opr

自減1指令

neg opr

取負指令

cmp opr1,opr2

比較指令

mul src

乘法指令

imul src

帶符號數的乘法指令

div src

除法指令

idiv src

帶符號數的除法指令

cbw位元組轉換成字指令

cwd字轉換為雙字指令

daa加法的十進位制調整指令

aaaascii十進位制加法調整指令

das減法的十進位制調整指令

aasascii十進位制減法調整指令

aam乘法的十進位制調整指令

aad除法的調整指令

指令指令作用

not opr

邏輯非shl opr,1/cl

邏輯左移

salopr,1/cl

算術左移

shr opr,1/cl

邏輯右移

sar opr,1/cl

算術右移

rol opr,1/cl

迴圈左移

ror opr,1/cl

迴圈右移

rcl opr,1/cl

帶進製的迴圈左移(cf)

rcr opr,1/cl

帶進製的迴圈右移

and dst,src

邏輯與指令

or dst,src

邏輯或指令

xor dst,src

邏輯異或指令

test opr1,opr2

測試指令

指令指令作用

movs dst,src

字串傳送

cmps dst,src

字串比較

scas dst,src

字串掃瞄

lods dst,src

字串裝入

stos dst,src

字串儲存

指令指令作用

call dst(子程式名)

呼叫子程式指令

retjmp

轉移指令

jc進製為1則轉移

jnc進製為0則轉移

jc/jb/jnae

低於、不高於或等於則轉移

jnc/jnb/jae

不低於、高於或等於則轉移

jz/je

結果為0則轉移

jnz/jne

結果不為0則轉移

js結果為負則轉移

jns結果為正則轉移

jp/jpe

奇偶位為1則轉移

jnp/jpo

奇偶位為0則轉移

jo溢位則轉移

jno不溢位則轉移

無條件數比較結果轉移

ja高於、不低於且不等於轉移

jna不高於、低於或等於轉移

帶符號數比較結果轉移

jg大於、不小於且不等於轉移

jge不小於、大於或等於轉移

jl小於則轉移

jle小於或等於則轉移

jcxz

cx為0則轉移

loop

迴圈指令

int n(中斷號)

中斷指令

into

溢位中斷

iret

中斷返回

指令指令作用

clc進製標誌位置零

cmc進製位取反

stc進製標誌置1

cld方向標誌位清0

std方向標誌位置1

cli中斷標誌位清0

sti中斷標誌位置1

nop無操作

hlt停機

wait

等待esc

換碼lock

封鎖

組合語言筆記 8086 定址方式與指令系統

組合語言中 cpu在訪問儲存器時,必須指明 notes 在程式設計中,可以把乙個程式劃分為任意個儲存段。但只要在程式執行時,最多只有四個段,它們分別由cs,ds,es和ss指定因為我們只有四個段暫存器呀 ip 指令指標 的內容不能直接被訪問,不能直接用指令去讀ip的值,也不能用指令為其賦值。但可通過...

8086定址方式

8086定址 8086為16位機,所能表示的位址為0 65535 64k 而8086cpu提供了20條位址線所能發出的位址資訊範圍0 fffffh 1m 所以8086採用 段位址 16 偏移位址 的方式進行定址 cs ip 0c2ch 0010h 得到的最終實體地址為 0c2ch 16 0010h ...

8086定址方式

在8086 8088中,運算元在記憶體中的有效位址是段的偏移位址。8位暫存器 ah al bh bl ch cl dh dl 16位暫存器 ax bx cx dx si di bp sp 4個段暫存器 cs ds ss es 有效位址由基址暫存器 bx或bp 的內容加上變址暫存器 si或di 的內容...