第三章暫存器(記憶體訪問) 其一

2022-06-23 12:33:09 字數 2860 閱讀 8191

3.1記憶體中字的儲存

在0位址處開始存放20000(4e20h)

0號單元是低位址單元,1號單元是高位址單元

問題:1)0位址單元種存放的位元組型資料是多少?

20h2)0位址單元中存放的字型資料是多少?

4e20h

3)2位址字單元中存放的位元組型資料是多少?

12h4)2位址單元中存放的字型資料是多少?

0012h

5)1位址字單元中存放的字型資料是多少?

124eh

結論:任何兩個位址連續的記憶體單元,n號單元和n+1號單元,可以將它們看成兩個記憶體單元,也可以看成乙個位址為n的字單元中的高位位元組單元和低位位元組單元。

3.2  ds和[address]

cpu要讀取乙個記憶體單元的時候,必須先給出這個記憶體單元的位址;

在8086pc中,記憶體位址由段位址和偏移位址組成。

8086cpu有乙個ds暫存器,通常用來存放要訪問的資料的段位址。

例如:我們要讀取的10000h單元的內容可以用如下程式段進行:

mov  bx,1000h

mov  ds,  bx

mov  al,[0]

上面三條指令將10000h(1000:0)中的資料讀到al中。

從哪個記憶體單元送到哪個暫存器中呢?

mov指令的格式:

mov  暫存器名,記憶體單元位址

[...]表示乙個記憶體單元,[...]中的0表示記憶體單元的偏移位址。

那麼記憶體單元的段位址是多少呢?

執行指令時,8086cpu自動取ds中的資料為記憶體單元的段位址。

如何用mov指令從10000h中讀取資料?

10000h表示為1000:0

將段位址1000h放入ds

用mov  al,[0]完成傳送(mov指令中的說明操作物件是乙個記憶體單元,中的0說明這個記憶體單元的偏移位址是0,它的段位址預設放在ds中)

如何把1000h送入ds?

傳送指令mov   ax,1

相似的方式   mov   ds,1000h?

8086cpu不支援將資料直接送入段暫存器的操作,ds是乙個段暫存器。(硬體設計的問題)

mov  ds,1000h是非法的。

資料-》一般的暫存器-》段暫存器

問題:將al中的資料送入記憶體單元10000h

結論: 

mov   bx,1000h

mov  ds,bx

mov  [0],al

(一種合理的回答)

3.3字的傳送

因為8086cpu是16位結構,有16跟資料線,所以,可以一次性傳送16位的資料,也就是一次性傳送乙個字。

mov  bx,1000h

mov  ds,bx

mov  ax,[0]  ;1000:0處的字型資料送入ax

mov  [0],cx  ;cx中的16位資料送到1000:0處

3.4    mov、add、sub指令

已學mov指令的幾種形式

mov   暫存器,資料

mov   暫存器,   暫存器

mov   暫存器   ,   記憶體單元

mov   記憶體單元   ,   暫存器

mov   段暫存器,   暫存器

mov    暫存器,   段暫存器

add和sub指令同mov一樣,都有兩個操作物件

add和sub不能對段暫存器操作

3.5  資料段

前面講過,對於8086pc機,我們可以根據需要將一組記憶體單元定義為乙個段。

我們可以將一組長度為n(n≤64k)、位址連續、起始位址為16的倍數的記憶體單元當作專門儲存資料的記憶體空間,從而定義了乙個資料段。

比如我們用123b0h~123b9h這段空間來存放資料:

長度:10位元組

如何訪問資料段中的資料呢?

將一段記憶體當作資料段,是我們在程式設計時的一種安排,我們可以在具體操作的時候,用ds存放資料段的段位址,再根據需要,用相關指令訪問資料段中的具體單元。

我們將123b0h~123bah的記憶體單元定義為資料段,我們現在要累加這個資料段中的前3個單元中的資料,**如下:

寫幾條指令,累加資料段中的前3個字型資料

3.1~3.5  小結

1)字在記憶體中儲存時,要用兩個位址連續的記憶體單元來存放,字的低位位元組存放在低位址單元中,高位位元組存放在高位址單元中。

2)用mov指令要訪問記憶體單元,可以在mov指令中只給出單元的偏移位址,此時,段位址預設在ds暫存器中。

3)[address]表示乙個偏移位址為address的記憶體單元。

4)在記憶體和暫存器之間傳送字型資料時,高位址單元和高8位暫存器對應、低位址單元和低8位暫存器對應。

5)mov、add、sub是具有兩個操作物件的指令。jmp是具有乙個操作物件的指令。

第三章 暫存器(記憶體訪問)

cpu中,用16位暫存器來儲存乙個字,高8位存放高位位元組,低8位存放低位位元組。例如 資料20000 4e20 h 在記憶體中存放的方式為 低 20 h 棧頂 高 4e h 棧底 cpu要讀寫乙個記憶體的時候,必須先給出這個記憶體單元的位址,同樣是由段位址和偏移位址組成。這個是靠ds暫存器,它用來...

第三章 暫存器(記憶體訪問)

3.1 記憶體中字的儲存 cpu中用16位暫存器儲存乙個字,高八位放高位位元組,第八位放低位位元組,我們的儲存有兩種方式,一種是大端法,一種是小端法 3.2 ds和 address cpu要讀寫記憶體單元的時候,必須先給出這個記憶體單元的位址,記憶體單元的位址由段位址和偏移位址組成 ds暫存器是用來...

彙編 第三章 暫存器(記憶體訪問)

之前第二章講的重點是理解8086位址的組成方式,相關的暫存器以及6個命令的使用 r,d,a,e,t,u 第三章繼續從訪問記憶體的角度學習暫存器。3.1 記憶體中字的儲存 乙個字由兩個位元組組成,而乙個位元組佔乙個儲存單元,所以用16位暫存器來儲存乙個字 具體儲存採用小端法,乙個字單元由連續的兩個記憶...