組合語言 第三章暫存器 記憶體訪問

2022-03-21 10:34:22 字數 1409 閱讀 5973

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暫存器,它用來...