1. 程式人生 > >【第三章】 暫存器(記憶體訪問)(總結)

【第三章】 暫存器(記憶體訪問)(總結)

3.1.記憶體中字的儲存

1.概念:CPU中,用16位暫存器來儲存一個字,即一個只要用兩個地址連續的記憶體單元來存放。

2.字單元:存放一個字型資料(16位)的記憶體單元,由兩個地址連續的記憶體單元組成。

    通常情況下,我們將起始地址為N的字單元簡稱為N地址單元。

3.2.DS和[address]

1.DS暫存器(段暫存器)的作用:通常用來存放訪問資料的段地址。

   8086CPU不支援將資料直接送入段暫存器的操作。

3.3.字的傳送(8086CPU可以一次性傳送一個字)

3.4.mov,add,sub指令

1.mov指令:(1) 兩個運算元長度要一致。

                     (2) 關於常數(也叫立即數):① 不能作為第1個運算元(目的運算元)

                                                                     ② 作第2個運算元(源運算元)時,如果最高位是十六進位制的a~f或A~F,前面要加零!

                     (3) 兩個記憶體單元之間不能直接傳送資料。

                     (4) 不能使用mov指令修改CS和IP的值。

                     (5) 關於段暫存器:① 兩個段暫存器之間不能直接傳送; ② 不能把常數送到段暫存器。

2.add指令:(1) add指令的運算元不能同時是記憶體單元

                    (2) add指令的運算元不能是段暫存器。

3.sub指令:(1) 兩個記憶體單元不能直接使用sub指令相減。

                    (2) sub指令的運算元不能是段暫存器。

3.5.資料段

1.定義:將一組長度為N(N<=64KB),地址連續,起始地址為16的倍數的記憶體單元當作專門儲存資料的記憶體空間。

3.6.棧

1.定義:一種具有特殊的訪問方式的儲存空間。

2.特殊性:後進先出。

3.兩個基本操作:入棧push和出棧pop(都是以字為單位進行)。

3.7.CPU提供的棧機制

1.CPU訪問棧頂位置的方式:棧頂的段地址存放在SS中,偏移地址存放在SP中,且任意時刻,SS:SP指向棧頂元素。

2.push指令的執行步驟:a.SP=SP-2;   b.向SS:SP指向的字單元中送入資料。

   pop指令的執行步驟:a.從SS:SP指向的字單元中讀取資料;     b.SP=SP+2。

3.8.棧頂超界的問題

1.以下兩種情形會發生「棧頂超界」問題: 當棧滿的時候,再使用push指令入棧; 當棧空的時候,再使用pop指令出棧; 8086CPU不會自動考慮棧頂超界,需要程式設計師 在程式設計設計時自己考慮。棧區長度不同,棧頂超界的具體情形也不同。

3.9.push和pop指令

1.在push  記憶體單元和pop 記憶體單元中,指令中只需給出「偏移地址」。預設,段地址在DS中。

2.

3.10.棧段