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 的內容...