1- 字單元:即存放乙個字元資料(16位)的記憶體單元,由兩個位址連續的記憶體單元組成,高位址單元中存放字型資料的高位位元組,低位址單元中存放字型資料的低位位元組.我們將起始位址為n的字單元,簡稱n位址字單元.比如乙個字單元由2,3兩個記憶體單元組成,則這個字單元的起始位址為2,我們可以說這是2位址字單元.
2- 位址單元中存放的位元組型資料 位址單元佔1位元組
位址字單元中存放的字型資料 位址字單元佔2位元組
3- ds暫存器,通常來存放訪問資料的段位址
mov bx,1000h
mov bs, bx
mov al,[0] //[...]記憶體單元的偏移位址,1000h段位址
將10000h(1000:0)中得資料,讀入al中.
4- 8086cpu 不支援將資料直接送入到段暫存器中(屬於8086cpu硬體設計問題).如 mov ds,1000h (錯) 需要轉 mov bx,1000h mov ds,bx
5- 將al中得資料送入到記憶體單元10000h中
mov bx,1000h
mov ds,bx
mov [0],al
6- 記憶體和暫存器之間傳送字型資料時,高位址單元和高8位暫存器,低位址單元和低8位暫存器相對應.
7- 棧:後進入先出 last in first out
8- ss:sp指向棧頂元素
9- push ax (1) sp = sp -2 (2) ax中得內容,送入ss:sp指向的記憶體單元 (棧頂從高位址像低位址增長)
pop ax (1) ss:sp指向的記憶體單元的資料放入ax (2) sp = sp +2
10- 如果(10000h-10000fh)為空棧, ss:sp指向10010h 為最底部字單元的位址(e)+2,或者為最底部記憶體單元(f)+1
11- cpu沒有設定棧頂越界的問題,要自己處理
12- 在10000h寫入字型資料2266h
方法一:
mov ax,1000h
mov ds,ax
mov ax,2266h
mov [0],ax
方法二:
mov ax,1000h
mov ss,ax
mov sp,2
mov ax,2266h
push ax
push,pop等棧操作指令,修改的只是sp,也就是說,棧頂的變化範圍最大為:0~ffffh
13- 任何時候ss:sp都指向棧頂元素
14- 記憶體單元存放資料,定義為"資料段"
記憶體單元存放**,定義為"**段"
記憶體單元存放棧,定義為"棧段"
15- 一段記憶體既可以是**的儲存空間,又是資料的儲存空間,還可以是棧空間,也可以什麼都不是.關鍵在於cpu中暫存器的設定,即:cp,ip,ss,sp,ds的指向.
《組合語言》第三章 暫存器(記憶體訪問)
在記憶體單元中,位址高的是高位,位址低的是低位。我們在讀取記憶體時喜歡從0開始讀,但我們在讀取數字的時候一定不喜歡從最低位開始讀,所以如果這個分不清,那麼是這個是相當 痛苦的 所以,乙個資料如果確定是乙個字,那麼直接從高位開始讀取,這樣更好理解。如果直接將記憶體單元送入暫存器中,那麼預設送入乙個字,...
彙編 第三章 暫存器(記憶體訪問)
之前第二章講的重點是理解8086位址的組成方式,相關的暫存器以及6個命令的使用 r,d,a,e,t,u 第三章繼續從訪問記憶體的角度學習暫存器。3.1 記憶體中字的儲存 乙個字由兩個位元組組成,而乙個位元組佔乙個儲存單元,所以用16位暫存器來儲存乙個字 具體儲存採用小端法,乙個字單元由連續的兩個記憶...
第三章 暫存器(記憶體訪問)
cpu中,用16位暫存器來儲存乙個字,高8位存放高位位元組,低8位存放低位位元組。例如 資料20000 4e20 h 在記憶體中存放的方式為 低 20 h 棧頂 高 4e h 棧底 cpu要讀寫乙個記憶體的時候,必須先給出這個記憶體單元的位址,同樣是由段位址和偏移位址組成。這個是靠ds暫存器,它用來...