【第三章】 暫存器(記憶體訪問)(總結)
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.棧段