溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何訪問存儲器時(shí)使用bp尋址

發(fā)布時(shí)間:2021-01-22 14:15:06 來源:億速云 閱讀:287 作者:小新 欄目:互聯(lián)網(wǎng)科技

小編給大家分享一下如何訪問存儲器時(shí)使用bp尋址,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

如果訪問存儲器時(shí)使用bp尋址,則默認(rèn)的段寄存器是“SS”,即堆棧段。SS堆棧段通常是指采用堆棧方式工作的一段內(nèi)存區(qū)域;在采用段式內(nèi)存管理方式進(jìn)行程序內(nèi)存分配的架構(gòu)中,堆棧段用來存放局部變量和函數(shù)返回地址。

段寄存器是因?yàn)閷?nèi)存的分段管理而設(shè)置的。計(jì)算機(jī)需要對內(nèi)存分段,以分配給不同的程序使用(類似于硬盤分頁)。在描述內(nèi)存分段時(shí),需要有如下段的信息:1.段的大?。?.段的起始地址;3.段的管理屬性(禁止寫入/禁止執(zhí)行/系統(tǒng)專用等)。需要用8個字節(jié)(64位)存儲這些信息,但段寄存器只有16位,因此段寄存器中只能存儲段號(segment selector,也譯作“段選擇符”),再由段號映射到存在內(nèi)存中的GDT(global (segment) descriptor table,全局段號記錄表),讀取段的信息。

8086CPU有20根地址線,最大可尋址內(nèi)存空間為1MB。而8086的寄存器只有16位,指令指針(IP)和變址寄存器(SI、DI)也是16位的。用16位的地址尋址1MB空間是不可能的。所以就要把內(nèi)存分段,也就是把1MB空間分為2^4,即16個段,每段不超過64KB(2^16,16位數(shù)據(jù)線就可以尋址)。在8086中設(shè)置4個16位的段寄存器,用于管理4種段:CS是代碼段,DS是數(shù)據(jù)段,SS是堆棧段,ES是附加段。把內(nèi)存分段后,每一個段就有一個段基址,段寄存器保存的就是這個段基址的高16位,這個16位的地址左移四位(后面加上4個0)就可構(gòu)成20位的段基址。

段寄存器CS指向存放程序的內(nèi)存段,IP是用來存放下條待執(zhí)行的指令在該段的偏移量,把它們合在一起可在該內(nèi)存段內(nèi)取到下次要執(zhí)行的指令。

段寄存器SS指向用于堆棧的內(nèi)存段,SP是用來指向該堆棧的棧頂,把它們合在一起可訪問棧頂單元。另外,當(dāng)偏移量用到了指針寄存器BP,則其缺省的段寄存器也是SS,并且用BP可訪問整個堆棧,不僅僅是只訪問棧頂。

段寄存器DS指向數(shù)據(jù)段,ES指向附加段,在存取操作數(shù)時(shí),二者之一和一個偏移量合并就可得到存儲單元的物理地址。該偏移量可以是具體數(shù)值、符號地址和指針寄存器的值等之一,具體情況將由指令的尋址方式來決定。

通常,缺省的數(shù)據(jù)段寄存器是DS,只有一個例外,即:在進(jìn)行串操作時(shí),其目的地址的段寄存器規(guī)定為ES。當(dāng)然,在一般指令中,我們還可以通過改變前綴中的“段取代”字段來改變操作數(shù)的段寄存器。

“可選用的段寄存器”即是可以用強(qiáng)置說明這些段寄存器的值來作為其操作數(shù)地址的段地址。

以上是“如何訪問存儲器時(shí)使用bp尋址”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI