1. 程式人生 > >第三章知識梳理

第三章知識梳理

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表示其段地址)。