第三章 暫存器知識總結

2022-06-04 16:21:12 字數 1577 閱讀 9492

記憶體中字的儲存

用16位暫存器來儲存乙個字,乙個字要用兩個位址連續的記憶體單元來存放(乙個單元存放乙個位元組),⚠️其順序是高-高,低-低,即小端法。

字單元概念:即存放乙個字型資料(16位)的記憶體單元,由兩個位址連續的記憶體單元組成。高位址記憶體單元中存放字型資料的高位位元組,低位址記憶體單元中存放字型資料的低位位元組,取低位址記憶體單元位址為字資料位址。

ds和【address】

mov指令的兩種傳送:

1.將資料直接送入暫存器(兩個運算元要一樣長)

2.將乙個暫存器的內容送入另乙個暫存器

3.將乙個記憶體單元中的內容送入乙個暫存器中:mov 暫存器名,記憶體單元位址。(兩個記憶體單元之間不能直接傳送資料。)

⚠️8086cpu不支援將資料直接送入段暫存器的操作。只好用乙個暫存器進行中轉。

mov,add,sub指令

⚠️在mov,add,sub等彙編指令中,訪問記憶體單元時,預設情況下,指的是資料段

mov指令有如下三種形式:

(1)mov 暫存器,段暫存器

(2)mov 記憶體單元,段暫存器

(3)mov 段暫存器,記憶體單元

(ss) × 16 + (sp)  → 棧頂的實體地址

棧是一種具有特殊的訪問方式的儲存空間。

特殊型:最後進入這個空間的資料,最先出去。後進先出

兩個基本操作:

入棧:將乙個新的元素放到棧頂。

出棧:從棧頂取乙個元素。

cpu提供的棧機制

最基本的兩個指令:(都是以字為單位進行的;操作物件不能是常數)

push(入棧)

pop(出棧)

段暫存器ss,sp

入棧(push)步驟:

(1)sp=sp-2,ss:sp指向當前棧頂前面的單元,以當前棧頂前面的單元為新的棧頂。

(2)將暫存器中的內容送入ss:sp指向的記憶體單元處,ss:sp指向新棧頂。

出棧(pop)步驟:ss:sp指向當前棧頂下面的單元,以當前棧頂下面的單元為新的棧頂。

(1)將ss:sp指向的記憶體單元處的資料送入ax中。

(2)sp=sp+2,

⚠️出棧的記憶體仍然存在,只是不在棧中。

棧頂超界的問題:

超出了棧空間,其他記憶體將被覆蓋。8086cpu不保證我們對棧的操作不會超界。因此我們在程式設計的時候要自己操心棧頂超界的問題。

push,pop指令

格式:push:暫存器,段暫存器,記憶體單元(讓資料入棧)。

pop :暫存器,段暫存器,記憶體單元(接收出棧的資料)。

⚠️不能直接向段暫存器ss中送入位址。

point

push,pop等棧操作指令,修改的只是sp。棧頂的變化範圍最大為0~ffffh。因此,乙個棧段的最大容量為64kb。

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

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