計算機組成原理 指令系統(一)
本文主要介紹指令的基本格式以及定址方式:
指令其實就是一組有特殊意義的二進位制數,指示計算機執行某種操作的命令,也叫機器字或指令字,是計算機執行的最小功能單位。一臺計算機的所有指令的集合構成該機的指令系統,也稱為指令集。指令系統是計算機的主要屬性,位於硬體和軟體的交介面上。
指令字長度:一個指令包含的二進位制數的位數
機器字長:計算機能直接處理的二進位制數的位數,通常與主存單元的位數一致
①指令字長度 = 機器字長度 稱為單字長指令
②指令字長度 = 0.5 × 機器字長 稱為半字長指令
③指令字長度 = 2 × 機器字長 稱為雙字長指令
一、基本格式:
一條指令通常包括操作碼和地址碼兩部分
操作碼(OP)指出執行什麼操作,如加減乘除、存數、取數等。CPU中有專閘電路來解釋操作碼,從而執行相應的操作。3位操作碼最多可表示8條不同的指令
地址碼(A)給出資料或者指令的地址
根據指令中運算元地址碼的數目的不同,可將指令分為以下幾種:
1.零地址指令:
只有運算元,沒有地址碼,這種指令有兩種可能:
①不需要運算元,如停機指令
②零地址的運算類指令僅用在堆疊計算機中,通常參與運算的兩個運算元隱含地從棧頂和次棧頂彈出,送到運算器進行運算,運算結果再隱含地壓入到堆疊中
2.一地址指令:
只有一個地址碼,有兩種可能:
①單運算元指令,如自增1.自減1,求反,求補等
OP(A1) -> (A1)
②另一個運算元的地址是隱含的,可約定由ACC(累加器)提供
(ACC)OP(A1) -> ACC
若指令字長為32位,操作碼佔8位,地址碼佔24位,則該指令運算元的直接定址範圍為:
3.二地址指令:
A1給出目的運算元的地址,A2給出源運算元的地址
(A1)OP(A2) -> A1
若指令字長為32位,操作碼佔8位,2個地址碼各佔12位,則該指令運算元的直接定址範圍為:
4.三地址指令:
A1給出目的運算元的地址,A2給出源運算元的地址,A3存放操作結果
(A1)OP(A2) -> (A3)
若指令字長為32位,操作碼佔8位,3個地址碼各佔8位,則該指令運算元的直接定址範圍為:
5.四地址指令:
A1給出目的運算元的地址,A2給出源運算元的地址,A3存放操作結果,A4給出下一條將要執行的指令的地址
(A1)OP(A2) -> (A3)
若指令字長為32位,操作碼佔8位,4個地址碼各佔6位,則該指令運算元的直接定址範圍為:
二、定址方式:
定址方式就是定址指令或運算元有效地址的方式,也就是確定資料地址以及下一條將要執行的指令的地址。因此定址方式分為指令定址和資料定址
指令定址
就是找下一條要執行的指令的地址
1.順序定址
在記憶體中按順序取指令,然後一條一條執行,由程式計數器(PC)來記錄順序
2.跳躍定址
跳躍就是本條指令給出下條指令地址的計算方式,是否跳躍可能受狀態暫存器和運算元的控制,跳躍的結果是當前指令修改PC值,下一條指令仍然是通過程式計數器PC給出
資料定址
就是找這個指令的運算元的地址
1.隱含定址
運算元地址隱含在操作碼中,如累加暫存器(AC)
2.立即定址
運算元就在指令中,取指令的時候就已經拿到了運算元
3.直接定址
指令中給出運算元的地址,然後到記憶體中取運算元
4.間接定址
指令中給出運算元的定址特徵位,再根據這個特徵位到記憶體中取運算元
5.暫存器定址
指令給出運算元的地址,然後到暫存器中取運算元
6.暫存器間接定址
指令給出暫存器的地址,然後到暫存器中拿到運算元的地址,然後到記憶體中取運算元
7.偏移定址
①相對定址
把當前指令的地址存在在PC中,然後用形式地址+PC得到有效地址
②基址定址
在CPU中用一個暫存器來儲存一部分地址,然後再加上指令中的形式地址得到有效地址
③變址定址
在CPU中用一個暫存器來儲存一部分地址(這個地址是變動的),然後再加上指令中的形式地址得到有效地址,如遍歷陣列,陣列下標就可以儲存在變址中
8.堆疊定址
將資料以棧的形式儲存在記憶體或暫存器中,進棧出棧都只在棧頂操作
暫存器堆疊稱為硬堆疊,主存中劃分出來的堆疊稱為軟堆疊
定址方式 | 有效地址 | 訪存次數 |
隱含定址 | 程式指定 | 0 |
立即定址 | A即是運算元 | 0 |
直接定址 | EA=A | 1 |
一次間接定址 | EA=(A) | 2 |
暫存器定址 | EA=Ri | 0 |
暫存器間接一次定址 | EA=(Ri) | 1 |
相對定址 | EA=(PC)+A | 1 |
基址定址 | EA=(BR)+A | 1 |
變址定址 | EA=(IX)+A | 1 |