組合語言第七、八章總結
-
and和or指令
1. and指令——邏輯與指令,按位進行與運算,通過該指令可將操作物件的相應位設為0,其他位不變
2. or指令——邏輯或指令,按位進行或運算,通過該指令可將操作物件的相應位設為1,其他位不變
-
以字元形式給出的資料
1. 以“...”的方式指明資料是以字元的形式給出的,編譯器把它們轉化為相應的ASCII碼
-
大小寫轉換的問題
1. 大寫字母+20H=小寫字母;小寫字母-20H=大寫字母
2. and al,11011111B 可將小寫字母變為大寫字母;or al,00100000B 可將大寫字母變為小寫字母
-
[bx+idata]
1. 表示一個記憶體單元,它的偏移地址為(bx)+idata(bx中的數值加上idata)
-
si和di
1. 是和bx功能相近的暫存器,但是si和di不能夠分成兩個8位暫存器來使用
-
[bx+si]和[bx+di]
1. [bx+si]表示一個記憶體單元,它的偏移地址為(bx)+(si)(即bx中的數值加上si中的數值)
-
[bx+si+idata]和[bx+di+idata]
1. [bx+si+idata]表示一個記憶體單元,它的偏移地址為(bx)+(si)+idata(即bx中的數值加上si中的數值再加上idata)
(一般來說,在需要暫存資料的時候,我們都應該使用棧
-
bx、si、di和bp
1. 只有這四個暫存器可以用在[...]中進行記憶體單元的定址
2. 可以單獨出現,或只能以四種組合出現
(1)單獨:mov ax,[bx] mov ax,[si] mov ax,[di] mov ax,[bp]
(2)加上si或di:mov ax,[bx+si] mov ax,[bx+di] mov ax,[bp+si] mov ax,[bp+di]
(3)再加上idata:mov ax,[bx+si+idata] mov ax,[bx+di+idata] mov ax,[bp+si+idata] mov ax,[bp+di+idata]
- 定址方式的總結
定址方式 | 名稱 | 含義 |
[idata] | 直接定址 | EA=idata,SA=(ds) |
[bx]、[si]、[di]、[bp] | 暫存器間接定址 | EA=(暫存器),SA=(ds) |
[bx+idata]、[si+idata]、[di+idata]、[bp+idata] | 暫存器相對定址 | EA=(暫存器)+idata,SA=(ds) |
[bx+si]、[bx+di]、[bp+si]、[bp+di] | 基址變址定址 | EA=(bx或bp)+(si或di),SA=(ds) |
[bx+si+idata]、[bx+di+idata]、 [bp+si+idata]、[bp+di+idata] |
相對基址變址定址 | EA=(bx或bp)+(si或di)+idata,SA=(ds) |
-
指令處理資料的長度
1. 8086中可以處理byte和word兩種長度的資料,在機器指令中要指明是字操作還是位元組操作
(1)通過暫存器指明,例如ax或者al
(2)用操作符X ptr指明記憶體單元的長度(X可以為word或byte)
(3)在push和pop指令當中則是默認了為字操作
-
div指令
1. div為除法指令
(1)當被除數是16位,除數為8位時:被除數預設放在ax當中,最後的商放在al中,餘數放在ah中
(2)當被除數是32位,除數為16位時:被除數的高16位放在dx中,低16位放在ax中,最後的商放在ax中,餘數放在dx中
-
偽指令dd
1. 與db、dw類似,dd是用來定義dword(double word,雙字)型資料的
-
dup
1. dup是一個操作符,由彙編器識別處理的符號,和db、dw、dd等資料定義偽指令配合使用的,用來進行資料的重複
2.例:db 3 dup (0) 定義了三個位元組,值都為0,相當於db 0,0,0;db 3 dup (0,1,2) 定義了9個位元組,相當於 db 0,1,2,0,1,2,0,1,2
3.格式:
(1)db 重複的次數 dup (重複的位元組型資料)
(2)dw 重複的次數 dup (重複的字型資料)
(3)dd 重複的次數 dup (重複的雙字型資料)