搜尋
首頁常見問題如果存取記憶體時使用bp尋址,預設的段暫存器是什麼?

如果存取記憶體時使用bp尋址,則預設的段暫存器是“SS”,即堆疊段。 SS堆疊段通常是指採用堆疊方式工作的一段記憶體區域;在採用段式記憶體管理方式進行程式記憶體分配的架構中,堆疊段用來存放局部變數和函數傳回位址。

如果存取記憶體時使用bp尋址,預設的段暫存器是什麼?

段暫存器是因為對記憶體的分段管理而設定的。電腦需要對記憶體分段,以分配給不同的程式使用(類似於硬碟分頁)。在描述記憶體分段時,需要有如下段的資訊:1.段的大小;2.段的起始位址;3.段的管理屬性(禁止寫入/禁止執行/系統專用等)。需要用8個位元組(64位元)儲存這些訊息,但段寄存器只有16位,因此段寄存器中只能儲存段號(segment selector,也譯作「段選擇符」),再由段號對應到存在記憶體中的GDT(global (segment) descriptor table,全域段號記錄表),讀取段的資訊。

8086CPU有20根位址線,最大可定址記憶體空間為1MB。而8086的暫存器只有16位,指令指標(IP)和變址暫存器(SI、DI)也是16位的。用16位元的位址尋址1MB空間是不可能的。所以就要把記憶體分段,也就是把1MB空間分成2^4,也就是16個段,每段不超過64KB(2^16,16位元資料線就可以尋址)。在8086設定4個16位元的段暫存器,用於管理4種段:CS是程式碼段,DS是資料段,SS是堆疊段,ES是附加段。把記憶體分段後,每一個段就有一個段基址,段寄存器保存的就是這個段基址的高16位,這個16位的地址左移四位(後面加上4個0)就可構成20位的段基址。

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

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

段寄存器DS指向資料段,ES指向附加段,在存取操作數時,二者之一和一個偏移量合併就可得到儲存單元的實體位址。此偏移量可以是具體數值、符號位址和指標暫存器的值等之一,具體情況將由指令的尋址方式來決定。

通常,缺省的資料段暫存器是DS,只有一個例外,即:在進行字串操作時,其目的位址的段暫存器規定為ES。當然,在一般指令中,我們也可以透過改變前綴中的「段取代」欄位來改變運算元的段暫存器。

「可選用的段暫存器」即是可以用強置說明這些段暫存器的值來作為其運算元位址的段位址。

以上是如果存取記憶體時使用bp尋址,預設的段暫存器是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。