天天看點

彙編 | 寄存器記憶體通路記憶體中字的存儲

前幾篇文章中,主要從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)的字單元中的高位位元組單元和低位位元組單元。