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位暫存器來儲存乙個字 具體儲存採用小端法,乙個字單元由連續的兩個記憶...