彙編2 段暫存器

2021-08-31 19:05:14 字數 1426 閱讀 4207

8086cpu有20根位址線,最大可定址記憶體空間為1mb。而8086的暫存器只有16位,指令指標(ip)和變址暫存器(si、di)也是16位的。用16位的位址定址1mb空間是不可能的。所以就要把記憶體分段(保證0000h ~ ffffh 能將整個段尋遍)也就是把1mb空間分為24,即16個段,每段不超過64kb(216,16位資料線就可以定址)。

在8086中設定4個16位的段暫存器,用於管理4種段:cs是**段,ds是資料段,ss是堆疊段,es是附加段。把記憶體分段後,每乙個段就有乙個段基址,段暫存器儲存的就是這個段基址的高16位,這個16位的位址左移四位(後面加上4個0)就可構成20位的段基址在8086中設定4個16位的段暫存器,用於管理4種段:cs是**段,ds是資料段,ss是堆疊段,es是附加段。把記憶體分段後,每乙個段就有乙個段基址,段暫存器儲存的就是這個段基址的高16位,這個16位的位址左移四位(後面加上4個0)就可構成20位的段基址

段暫存器cs指向存放程式的記憶體段ip是用來存放下條待執行的指令在該段的偏移量,把它們合在一起可在該記憶體段內取到下次要執行的指令。

段暫存器ss指向用於堆疊的記憶體段,sp是用來指向該堆疊的棧頂,把它們合在一起可訪問棧頂單元。另外,當偏移量用到了指標暫存器bp,則其預設的段暫存器也是ss,並且用bp可訪問整個堆疊,不僅僅是只訪問棧頂。

段暫存器ds指向資料段,es指向附加段,在訪問運算元時,二者之一和乙個偏移量合併就可得到儲存單元的實體地址。該偏移量可以是具體數值、符號位址和指標暫存器的值等之一,具體情況將由指令的定址方式來決定。

通常,預設的資料段暫存器是ds,只有乙個例外,即:在進行串操作時,其目的位址的段暫存器規定為es。當然,在一般指令中,我們還可以通過改變字首中的「段取代」欄位來改變運算元的段暫存器。

段暫存器中儲存位址,通過段基位址,和偏移量。得到實體地址,再去記憶體中根據得到的位址找到相應的資料儲器分段只是為了好定址,是人為的將符合的位址分為一段,儲存器中也有對應的資料段,**段,堆疊段,附加段(儲存的是對應的資料),段暫存器中的資料段,**段,堆疊段,附加段,儲存的是相應的段基位址和部分的偏移量

定址的方法一共有七種。

關於儲存器定址:指令中,通常給出的是儲存單元位址或產生儲存單元位址的有關資訊。執行指令時,需要首先計算出資料存放的有效位址,接著計算出其在儲存器中的實體地址,然後訪問儲存器,讀取資料,再執行指令規定的基本操作。

8086彙編 段暫存器

段暫存器存放記憶體中不同位址段的儲存,專門的暫存器存放段位址來提供使用。8086cpu中主要使用4個段暫存器下面會有說明。將段位址放在 ds中用mov add sub等訪問記憶體單元的指令時,cpu將我們定義的資料段中的內容當作資料段來訪問 將段位址放在 cs中,將段中第一條指令的偏移位址放在ip中...

組合語言 暫存器(記憶體訪問 ds資料段暫存器)

這段話的主要意思是 乙個字 2b 16bit,cpu中是用兩個記憶體單元儲存乙個字 假如獲取0位址存放的字型資料,就是獲取它的高位位元組0 1位和低位位元組0位的資料,資料由高位址位向低位址位讀 1 0位址單元中存放的位元組型資料是多少?20h 2 0位址字單元中存放的字型資料是多少?4e20h 3...

彙編學習筆記(2)暫存器

本篇文章是組合語言 王爽 一書的學習筆記,對應書中的第 二 三章,暫存器。cpu主要是由運算器 暫存器和控制器組成,這一篇筆記主要是暫存器相關知識的學習總結,考慮到通用性,用8086cpu來學習。本次筆記共涉及8086cpu中的7個暫存器 總數14個 分別是ax,bx,cs,ip,ds,ss,sp。...