匯編中偏移地址的理解
偏移地址也稱(chēng)為偏移量,由于8086/8088CPU內(nèi)部的ALU只能進(jìn)行16位(16進(jìn)制的話4X4,用4位表示,0x0000-0xFFFF)的運(yùn)算,而8086/8088有20(16進(jìn)制的話4X5,用5位表示,0x00000-0xFFFFF)條地址線。為了方便只能進(jìn)行16運(yùn)算的8086/8088CPU,于是我們便將5位變成兩個(gè)4位,也即把物理地址分成段地址和偏移地址,如下圖所示:
那么通過(guò)段地址和偏移地址怎么得到物理地址呢?
物理地址=段地址*16(10進(jìn)制)+偏移地址。(2進(jìn)制的話,也就是段地址《《4|偏移地址)。
有效地址的理解
有效地址EA是一16位無(wú)符號(hào)數(shù),表示操作數(shù)所在單元到段首的距離即邏輯地址的偏移地址。當(dāng)操作數(shù)是存放在存儲(chǔ)器中時(shí),存儲(chǔ)器的存儲(chǔ)單元的物理地址有兩部分組成。一部分是偏移地址;一部分是段地址。在8086/8088的各種尋址方式中,尋找存儲(chǔ)單元所需的偏移地址可由各種成分組成,稱(chēng)為有效地址,用EA表示。可以通過(guò)存儲(chǔ)器尋址方式獲得有效地址。
有效地址可以由幾部分組成:基址寄存器內(nèi)容、變址寄存器內(nèi)容、比例因子和位移量。
如何由有效地址求得物理地址
物理地址指CPU尋址主存時(shí)使用的20位地址,它確定了某一實(shí)際位置的內(nèi)存單元。(2分)內(nèi)存單元物理地址可由段址和段內(nèi)的偏移量確定。內(nèi)存單元在段內(nèi)的偏移量稱(chēng)為有效地址(EA)。
物理地址=段址×16+段內(nèi)的偏移量。
有效操作地址尋址方式
根據(jù)指令內(nèi)容確定操作數(shù)地址的過(guò)程稱(chēng)為尋址。完善的尋址方式可為用戶(hù)組織和使用數(shù)據(jù)提供方便。
①直接尋址:指令地址域中表示的是操作數(shù)地址。
②間接尋址:指令地址域中表示的是操作數(shù)地址的地址即指令地址碼對(duì)應(yīng)的存儲(chǔ)單元所給出的是地址A,操作數(shù)據(jù)存放在地址A指示的主存單元內(nèi)。有的計(jì)算機(jī)的指令可以多次間接尋址,如A指示的主存單元內(nèi)存放的是另一地址B,而操作數(shù)據(jù)存放在B指示的主存單元內(nèi),稱(chēng)為多重間接尋址。
③立即尋址:指令地址域中表示的是操作數(shù)本身。
④變址尋址:指令地址域中表示的是變址寄存器號(hào)i和位移值D。將指定的變址寄存器內(nèi)容E與位移值D相加,其和E+D為操作數(shù)地址。許多計(jì)算機(jī)具有雙變址功能,即將兩個(gè)變址寄存器內(nèi)容與位移值相加,得操作數(shù)地址。變址尋址有利于數(shù)組操作和程序共用。同時(shí),位移值長(zhǎng)度可短于地址長(zhǎng)度,因而指令長(zhǎng)度可以縮短。
⑤相對(duì)尋址:指令地址域中表示的是位移值D。程序計(jì)數(shù)器內(nèi)容(即本條指令的地址)K與位移值D相加,得操作數(shù)地址K+D。當(dāng)程序在主存儲(chǔ)器浮動(dòng)時(shí),相對(duì)尋址能保持原有程序功能。此外,還有自增尋址、自減尋址、組合尋址等尋址方式。尋址方式可由操作碼確定,也可在地址域中設(shè)標(biāo)志,指明尋址方式。
匯編語(yǔ)言中有效地址和偏移地址的區(qū)別
在8086的機(jī)子上,有效地址=段地址左移4位+偏移地址,偏移地址與有效地址是一樣的。但是就ibm的硬件來(lái)說(shuō),他們的尋址方式也分為2種,一是實(shí)地址尋址方式,另一種是保護(hù)虛地址尋址方式。此兩種尋址方式非常不同,在8086的機(jī)子上,有效地址=段地址左移4位+偏移地址,因?yàn)樗挥袑?shí)地址尋址方式,而在286之后,就存在虛地址尋址方式,這就涉及到有關(guān)段以及描述符,描述符表,和其他的問(wèn)題,請(qǐng)您自己參見(jiàn)有關(guān)接口的書(shū)。
-
偏移地址
+關(guān)注
關(guān)注
0文章
3瀏覽量
7475
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論