彙編 | 暫存器記憶體訪問記憶體中字的儲存
前幾篇文章中,主要從CPU如何執行指令的角度講解了8086CPU的邏輯結構、形成實體地址的方法、相關的暫存器以及一些指令。這一章中,我們從訪問記憶體的角度繼續學習幾個暫存器。
CPU中,用 \(16\) 位暫存器來儲存一個字。高 \(8\) 位存放高位位元組,低 \(8\) 位存放低位位元組。
在記憶體中儲存時,由於記憶體單元是位元組單元(一個單元存放一個位元組),則一個字要用兩個地址連續的記憶體單元來存放,這個字的低位位元組存放在低地址單元中,高位位元組存放在高地址單元中。
比如我們從 \(0\) 地址開始存放 \(20000\) ,這種情況如圖3.1 所示。
先說一下,字單元的概念:字單元,即存放一個字型資料(16 位),由兩個地址連續的記憶體單元組成。高地址記憶體單元中存放字型資料的高位位元組,低地址記憶體單元中存放字型資料的低位位元組。
在圖3.1中,我們用 \(0, 1\) 兩個記憶體單元存放資料 \(20000(4E20H), 0, 1\) 兩個記憶體單元用來儲存一個字,這兩個單元可以看作一個起始地址為 \(0\) 的字單元(存放一個字的記憶體單元,由 \(0, 1\) 兩個位元組單元組成)。對於這個字單元來說,\(0\) 號單元是低地址單元,\(1\) 號單元是高地址單元,則字型資料 \(4E20H\) 的低位位元組存放在 \(0\) 號單元中,高位位元組存放在 \(1\)
這裡涉及新的概念:字單元,即存放一個字型資料( \(16\) 位)的記憶體單元,由兩個地址連續的記憶體單元組成。高地址記憶體單元中存放字型資料的高位位元組,低地址記憶體單元中存放字型資料的低位位元組。
在以後的文章中,將起始地址為 \(N\) 的字單元簡稱為 \(N\) 地址字單元。比如一個字單元由 \(2. 3\) 兩個記憶體單元組成,則這個字單元的起始地址為 \(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\)的字單元中的高位位元組單元和低位位元組單元。
The desire of his soul is the prophecy of his fate
你靈魂的慾望,是你命運的先知。