指令尋址方式總結

引言

在這裏,主要是要說明什麼是尋址方式。以及每一種CPU爲什麼使用這樣的尋址方式。在說明什麼是尋址方式之前,首先需要了解指令的構成,或者說指令的編碼格式。

指令編碼格式

一條指令(指的是機器碼)由操作碼(opcode)和操作數(operand)構成。操作數可以是1個,也可以是多個,甚至可以沒有。操作碼則是每一條指令都必須有。操作碼錶示該指令要做什麼動作,例如跳轉,加減等等。操作數則表示操作對象,操作數可能還會分爲目的操作數和源操作數。操作數當然是一個數字,該操作數可以由多種來源,例如寄存器,存儲器或者立即數。 本節介紹的處理器的尋址方式就是討論指令中操作數的來源問題。

在這裏插入圖片描述
每一條指令(指的是機器碼)一般對應一條彙編語句(指的是使用匯編語言書寫的一條指令),所以我們一般就將指令等同於彙編語言,沒怎麼關心指令的概念。在學習尋址方式時,更加關注的是指令本身。也有一條彙編語句對應多條指令的情況,在編譯時,彙編器會將該彙編語句轉化成對應的多條指令。

尋址方式

尋址模式是大多數中央處理器 (CPU)設計中的指令集架構的一個方面。 在給定指令集架構中定義的各種尋址模式決定了該架構中的機器語言指令如何識別每個指令的操作數。尋址模式指定如何通過使用寄存器中保存的信息和/或機器指令中包含的常量或其他地方包含的常量來計算操作數的有效存儲器地址。 —— 《維基百科》,詞條翻譯自英文,譯者本人
簡單來說尋址方式就是“CPU找數據/指令”的方式。

指令尋址

在這裏插入圖片描述

數據尋址

立即(數)尋址

指令的地址字段指出的不是操作數的地址,而是操作數本身,這種尋址方式稱爲立即尋址。立即尋址方式的特點是指令執行時間很短,因爲它不需要訪問內存取數,從而節省了訪問內存的時間。 [2] 如:MOV AX,#5678H 注意:立即數只能作爲源操作數,不能作爲目的操作數。
操作數直接放在指令中,作爲指令的一部分存放在代碼段中。
在這裏插入圖片描述

直接尋址

直接尋址是一種基本的尋址方法,其特點是:在指令格式的地址的字段中直接指出操作數在內存的地址。由於操作數的地址直接給出而不需要經過某種變換,所以稱這種尋址方式爲直接尋址方式。在指令中直接給出參與運算的操作數及運算結果所存放的主存地址,即在指令中直接給出有效地址
操作數在內存中,將操作數的有效地址(EA)直接放在指令中,
形式:[操作數地址]

MOV AX,[2345H]       ; 將地址 DS:[0001 2345H] 所指向的數據放入目標寄存器中
MOV ES:[5678H], BL    ; 源操作數是寄存器尋址,目的寄存器是直接尋址

通常可見到這樣的指令形式: MOV AX, num  
其中,num表示的是高級語言中的變量名,比如C語言中 short num = 12H。則上述指令相當於將 num 的值 12H 放入目標寄存器AX中

在這裏插入圖片描述

寄存器直接尋址

操作數放在寄存器中,寄存器標識作爲指令的一部分。CPU從寄存器中獲取數據比內存中快的多,所以寄存器尋址是一種非常常見的尋址方式。
在這裏插入圖片描述

間接尋址

指令地址字段中的形式地址不是操作數的真正地址,而是操作數地址的指示器。
在這裏插入圖片描述
在這裏插入圖片描述
注意:多重間接尋址一般不建議使用,會大量耗費CPU資源。

寄存器間接尋址

操作數在內存中,將操作數的有效地址(EA)放到寄存器中
在這裏插入圖片描述
在這裏插入圖片描述

隱含尋址

這種類型的指令,不是明顯地給出操作數的地址。而是在指令中隱含着操作數的地址。例如,單地址的指令格式,就不明顯地在地址字段中指出第2操作數的地址,而是規定累加寄存器AC作爲第2操作數地址。指令格式明顯指出的僅是第1操作數的地址D。因此,累加寄存器AC對單地址指令格式來說是隱含地址。
在這裏插入圖片描述

堆棧尋址

堆棧尋址堆棧是一個按特定順序進行存取的存儲區,操作順序爲“後進先出” 。 堆棧尋址是隱含的,它使用一個專門的寄存器(堆棧指針) 指向一塊存儲區域(堆棧),指針所指向的存儲單元即是堆棧的棧頂。
在這裏插入圖片描述

相對尋址

相對尋址是把程序計數器PC的內容加上指令格式中的形式地址D而形成操作數的有效地址。程序計數器的內容就是當前指令的地址。“相對”尋址,就是相對於當前的指令地址而言。採用相對尋址方式的好處是程序員無須用指令的絕對地址編程,因而所編程序可以放在內存的任何地方。 [2] 指令格式: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、乘比例係數)而不改變指令本身,從而使有效地址按變址寄存器的內容實現有規律的變化。
在這裏插入圖片描述
在這裏插入圖片描述

小結

在這裏插入圖片描述

練習

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章