定址方式

定址方式

定址方式就是處理器根據指令中給出的地址信息來尋找有效地址的方式,是確定本條指令的數據地址以及下一條要執行的指令地址的方法。

簡介

在存儲器中,運算元或指令字寫入或讀出的方式,有地址指定方式、相聯存儲方式和堆疊存取方式。幾乎所有的計算機,在記憶體中都採用地址指定方式。當採用地址指定方式時,形成運算元或指令地址的方式稱為定址方式。定址方式分為兩類,即指令定址方式和數據定址方式,前者比較簡單,後者比較複雜。值得注意的是,在傳統方式設計的計算機中,記憶體中指令的定址與數據的定址是交替進行的。

指令定址

指令的定址方式有以下兩種。

順序定址方式

由於指令地址在記憶體中按順序安排,當執行一段程式時,通常是一條指令接一條指令地順序進行。也就是說,從存儲器取出第1條指令,然後執行這條指令;接著從存儲器取出第2條指令,再執行第二條指令;接著再取出第3條指令。

這種程式順序執行的過程,稱為指令的順序定址方式。為此,必須使用程式計數器(又稱 指令計數器)PC來計數指令的順序號,該順序號就是指令在記憶體中的地址。

跳躍定址方式

當程式轉移執行的順序時,指令的定址就採取跳躍定址方式。所謂跳躍,是指下條指令的地址碼不是由程式計數器給出,而是由本條指令給出。注意,程式跳躍後,按新的指令地址開始順序執行。因此,程式計數器的內容也必須相應改變,以便及時跟蹤新的指令地址。

採用指令跳躍定址方式,可以實現程式轉移或構成循環程式,從而能縮短程式長度,或將某些程式作為公共程式引用。指令系統中的各種條件轉移或無條件轉移指令,就是為了實現指令的跳躍定址而設定的。

注意是否跳躍可能受到狀態暫存器的運算元的控制,而跳躍到的地址分為絕對地址(由標記符直接得到)和相對地址(對於當前指令地址的偏移量),跳躍的結果是當前指令修改PC程式計數器的值,所以下一條指令仍是通過程式計數器PC給出。

運算元定址

形成運算元的有效地址的方法稱為運算元的定址方式。由於大型機、小型機、微型機和單片機結構不同,從而形成了各種不同的運算元定址方式。下面介紹一些比較典型又常用的運算元定址方式。

隱含定址

這種類型的指令,不是明顯地給出運算元的地址。而是在指令中隱含著運算元的地址。例如,單地址的指令格式,就不明顯地在地址欄位中指出第2運算元的地址,而是規定累加暫存器AC作為第2運算元地址。指令格式明顯指出的僅是第1運算元的地址D。因此,累加暫存器AC對單地址指令格式來說是隱含地址。 如:DAA ;

立即定址

指令的地址欄位指出的不是運算元的地址,而是運算元本身,這種定址方式稱為立即定址。立即定址方式的特點是指令執行時間很短,因為它不需要訪問記憶體取數,從而節省了訪問記憶體的時間。 如:MOV AX,#5678H 注意:立即數只能作為源運算元,不能作為目的運算元。

直接定址

直接定址是一種基本的定址方法,其特點是:在指令格式的地址的欄位中直接指出運算元在記憶體的地址。由於運算元的地址直接給出而不需要經過某種變換,所以稱這種定址方式為直接定址方式。在指令中直接給出參與運算的運算元及運算結果所存放的主存地址,即在指令中直接給出有效地址

間接定址

間接定址是相對直接定址而言的,在間接定址的情況下,指令地址欄位中的形式地址不是運算元的真正地址,而是運算元地址的指示器,或者說此形式地址單元的內容才是運算元的有效地址。

暫存器定址方式和暫存器間接定址方式

當運算元不放在記憶體中,而是放在CPU的通用暫存器中時,可採用暫存器定址方式。顯然,此時指令中給出的運算元地址不是記憶體的地址單元號,而是通用暫存器的編號(可以是8位也可以是16位(AX,BX,CX,DX))。指令結構中的RR型指令,就是採用暫存器定址方式的例子。如:MOV DS,AX

暫存器間接定址方式與暫存器定址方式的區別在於:指令格式中的暫存器內容不是運算元,而是運算元的地址,該地址指明的運算元在記憶體中。

相對定址方式

相對定址是把程式計數器PC的內容加上指令格式中的形式地址D而形成運算元的有效地址。程式計數器的內容就是當前指令的地址。“相對”定址,就是相對於當前的指令地址而言。採用相對定址方式的好處是程式設計師無須用指令的絕對地址編程,因而所編程式可以放在記憶體的任何地方。 指令格式:MOV AX,[BX+1200H] 運算元物理地址PA=(DS/SS)*16H+EA EA=(BX/BP/SI/DI)+(6/8)位偏移量Disp 對於BX,SI,DI暫存器來說段暫存器默認為DS,對於BP來說,段暫存器默認為SS

基址定址方式

在基址定址方式中將CPU中的基址暫存器的內容,加上變址暫存器的內容而形成運算元的有效地址。基址定址的優點是可以擴大定址能力,因為與形式地址相比,基址暫存器的位數可以設定得很長,從而可以在較大的存儲空間中定址。

變址定址方式

變址定址方式與基址定址方式計算有效地址的方法很相似,它把CPU中某個變址暫存器的內容與偏移量D相加來形成運算元有效地址。

但使用變址定址方式的目的不在於擴大定址空間,而在於實現程式塊的規律變化。為此,必須使變址暫存器的內容實現有規律的變化(如自增1、自減1、乘比例係數)而不改變指令本身,從而使有效地址按變址暫存器的內容實現有規律的變化。

塊定址方式

塊定址方式經常用在輸入輸出指令中,以實現外存儲器或外圍設備同記憶體之間的數據塊傳送。塊定址方式在記憶體中還可用於數據塊移動。

相關詞條

相關搜尋

熱門詞條

聯絡我們