第三章知識梳理
1.字單元:存放一個字型資料(16)位的記憶體單元,有兩個地址連續的記憶體單元組成。高地址記憶體單元存放字形資料的高位位元組,低地址記憶體單元存放字形資料的低位位元組。
將起始地址為N的字單元簡稱為N地址字單元。
2.DS:8086CPU中的一個段暫存器,存放將要訪問資料的段地址。
[...]:表示一個記憶體單元,[...]中的值表示記憶體單元的偏移地址.
8086CPU:自動取ds中的資料為記憶體單元的段地址。
記憶體單元的地址:DS中的值*16+[...]
3.mov指令:
mov 暫存器,資料
mov 暫存器,暫存器
mov 暫存器,記憶體單元
mov 記憶體單元,暫存器
mov 段暫存器,暫存器
mov 暫存器,段暫存器
mov 記憶體單元,段暫存器
mov 段暫存器,記憶體單元
mov 記憶體單元,常數
4.add指令:可以進行傳送的所有操作物件。
add 暫存器,資料
add 暫存器,暫存器
add 暫存器,記憶體單元
add 記憶體單元,暫存器
add 記憶體單元,常數
5.sub指令:可以進行傳送的所有操作物件。
sub 暫存器,資料
sub 暫存器,暫存器
sub 暫存器,記憶體單元
sub 記憶體單元,暫存器
sub 記憶體單元,常數
6.資料段:一組長度為N,地址連續,起始地址為16的倍數的記憶體單元當作專門儲存資料的記憶體空間。
只是程式設計的一種安排,可以用DS指向資料段的段地址,[...]具體的指向。
7.CPU提供的棧機制。
8086CPU:提供相關的指令以棧的形式來訪問記憶體空間,既在基於8086CPU程式設計的時候,將一段記憶體空間當作棧來使用。
提供的入棧和出棧指令為:PUSH,POP.
以字為單位來進行。
棧頂位置:段暫存器SS,暫存器SP來表示,SS:SP=棧頂的位置。
CPU執行PUSH,POP指令時從SS和SP獲取棧頂的位置。
8.棧頂超界問題:8086CPU不保證我們對棧的操作不會越界,8086CPU只知道棧頂在哪裡,而不知道我們安排的棧空間有多大,所以需要自己注意棧頂超界問題。
9.push和pop指令。
(1)操作物件。
push (段暫存器,記憶體單元)暫存器 將(段暫存器,記憶體單元)暫存器中的值入棧
pop (段暫存器,記憶體單元)暫存器 出棧,用一個(段暫存器,記憶體單元)暫存器接受出棧的資料
(2)CPU執行過程。
push指令:先改變SP,再向SS:SP處傳送入棧。
pop指令:先讀取SS:SP處的資料,再改變SP,移動棧頂。
10.棧段:長度為N的一組地址連續,起始地址為16的倍數的記憶體單元,當作棧空間來使用。
僅僅是程式設計的一種安排,必須用SS:SP來指向。
以棧的方式來訪問這段記憶體單元即為棧段。
11.一段記憶體單元是可以同時被認為是資料段(DS表示其段地址),程式碼段(CS表示其段地址),棧段(SS表示其段地址)。