自相對定址

自相對定址

自相對定址也稱程式計數器定址(Program Counter Addressing)。這種定址方式的運算元的有效地址是指令形式地址與程式計數器內容之和。程式計數器指示的是指令地址,若把程式計數器看作是變址器,自相對定址就是相對於指令本身地址的一種編制定址,而指令的形式地址是運算元有效地址與指令地址的間距。

概念

自相對定址也稱程式計數器定址(Program Counter Addressing)。這種定址方式的運算元的有效地址是指令形式地址與程式計數器內容之和。程式計數器指示的是指令地址,若把程式計數器看作是變址器,自相對定址就是相對於指令本身地址的一種編制定址,而指令的形式地址是運算元有效地址與指令地址的間距。

當指令地址變化時,只要保持運算元地址與指令地址的相對距離不變,程式仍能正確地執行。這樣,使得指令與運算元在可用的存儲區內一起移動,仍能保持程式的正確執行。所以,這種定址方式有稱為浮動定址(Floating Addressing)。

工作原理

對於指令地址而言,運算元的地址可能在指令地址之前,也可能在指令地址之後。因此,計算運算元有效地址時,可以是(PC)+D,也可以是(PC)-D。要根據指令中的某些定址特徵加以標誌。如PDP-11機變址指令中,有3位定址方式碼,可以區分位移的方向,如圖2-1。

圖2-1 圖2-1

從上例可見,指令給出的形式地址D是運算元有效地址與指令地址的間距。

自相對定址方式為軟體實現程式浮動提供了有效的定址方式。當一道標準程式為不同用戶使用時,若能使該程式裝入不同存儲區並能就地運行,對用戶來說是很方便的。若該標準程式採用自相對定址方式,通過使用浮動地址碼,就可實現程式的浮動。當然,在程式中有些指令需要自相對定址,有些指令不需要自相對定址,而有些指令還可能要求自相對間接定址等。這就要求自相對定址也應有多種方式。在VAX-11機中就有4種方式,使得它能十分有效地實現程式浮動。

相關詞條

熱門詞條

聯絡我們