1. 程式人生 > 其它 >彙編 | 暫存器記憶體訪問記憶體中字的儲存

彙編 | 暫存器記憶體訪問記憶體中字的儲存

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

The desire of his soul is the prophecy of his fate
你靈魂的慾望,是你命運的先知。