前幾篇文章中,主要從CPU如何執行指令的角度講解了8086CPU的邏輯結構、形成實體位址的方法、相關的寄存器以及一些指令。這一章中,我們從通路記憶體的角度繼續學習幾個寄存器。
CPU中,用 (16) 位寄存器來存儲一個字。高 (8) 位存放高位位元組,低 (8) 位存放低位位元組。
在記憶體中存儲時,由于記憶體單元是位元組單元(一個單元存放一個位元組),則一個字要用兩個位址連續的記憶體單元來存放,這個字的低位位元組存放在低位址單元中,高位位元組存放在高位址單元中。
比如我們從 (0) 位址開始存放 (20000) ,這種情況如圖3.1 所示。
容量:一個 字 = 2 個位元組
先說一下,字單元的概念:字單元,即存放一個字型資料(16 位),由兩個位址連續的記憶體單元組成。高位址記憶體單元中存放字型資料的高位位元組,低位址記憶體單元中存放字型資料的低位位元組。
在圖3.1中,我們用 (0, 1) 兩個記憶體單元存放資料 (20000(4E20H), 0, 1) 兩個記憶體單元用來存儲一個字,這兩個單元可以看作一個起始位址為 (0) 的字單元(存放一個字的記憶體單元,由 (0, 1) 兩個位元組單元組成)。對于這個字單元來說,(0) 号單元是低位址單元,(1) 号單元是高位址單元,則字型資料 (4E20H) 的低位位元組存放在 (0) 号單元中,高位位元組存放在 (1) 号單元中。同理,将 (2, 3) 号單元看作一個字單元,它的起始位址為 (2)。在這個字單元中存放資料 (18(0012H)),則在 (2) 号單元中存放低位位元組(12H),在 (3) 号單元中存放高位位元組 (00H)
這裡涉及新的概念:字單元,即存放一個字型資料( (16) 位)的記憶體單元,由兩個位址連續的記憶體單元組成。高位址記憶體單元中存放字型資料的高位位元組,低位址記憶體單元中存放字型資料的低位位元組。
在以後的文章中,将起始位址為 (N) 的字單元簡稱為 (N) 位址字單元。比如一個字單元由 (2. 3) 兩個記憶體單元組成,則這個字單元的起始位址為 (2) ,我們可以說這是 (2) 位址字單元.
問題3.1
對于圖3.1
(1) (0) 位址單元中存放的位元組型資料是多少?
(2) (0) 位址字單元中存放的字型資料是多少?
(3) (2) 位址單元中存放的位元組型資料是多少?
(4) (2) 位址字單元中存放的字型資料是多少?
(5) (1) 位址字單元中存放的字型資料是多少?
思考後看分析。
[QAQ
]
分析:
(1) (0)位址單元中存放的位元組型資料:(20H);
(2) (0)位址字單元中存放的字型資料:(4E20H);
(3) (2)位址單元中存放的位元組型資料:(12H);
(4) (2)位址字單元中存放的字型資料:(0012H);
(5) (1) 位址字單元,即起始位址為兩個單元存儲一個字型資料,高位放在即:(4EH),它們組成字型資料是(124EH) .的字單元,它由 (1) 号單元和 (2) 号單元組成,用這 (2) 号單元中,即:(12H),低位放在1号單元中,大小為:(46860)
從上面的問題中我們看到,任何兩個位址連續的記憶體單元,(N)号單元和(N+1)号單元,可以将它們看成兩個記憶體單元,也可看成一個位址為(N)的字單元中的高位位元組單元和低位位元組單元。