1. 程式人生 > >計算機組成原理 指令系統(一)

計算機組成原理 指令系統(一)

本文主要介紹指令的基本格式以及定址方式

指令其實就是一組有特殊意義的二進位制數,指示計算機執行某種操作的命令,也叫機器字或指令字,是計算機執行的最小功能單位。一臺計算機的所有指令的集合構成該機的指令系統,也稱為指令集。指令系統是計算機的主要屬性,位於硬體和軟體的交介面上。

指令字長度:一個指令包含的二進位制數的位數

機器字長:計算機能直接處理的二進位制數的位數,通常與主存單元的位數一致

指令字長度 = 機器字長度 稱為單字長指令

指令字長度 = 0.5 × 機器字長 稱為半字長指令

指令字長度 = 2 × 機器字長 稱為雙字長指令

一、基本格式:

一條指令通常包括操作碼和地址碼兩部分

操作碼(OP)指出執行什麼操作,如加減乘除、存數、取數等。CPU中有專閘電路來解釋操作碼,從而執行相應的操作。3位操作碼最多可表示8條不同的指令

地址碼(A)給出資料或者指令的地址

根據指令中運算元地址碼的數目的不同,可將指令分為以下幾種:

1.零地址指令:

只有運算元,沒有地址碼,這種指令有兩種可能:

不需要運算元,如停機指令

零地址的運算類指令僅用在堆疊計算機中,通常參與運算的兩個運算元隱含地從棧頂和次棧頂彈出,送到運算器進行運算,運算結果再隱含地壓入到堆疊中

2.一地址指令:

只有一個地址碼,有兩種可能:

單運算元指令,如自增1.自減1,求反,求補等

OP(A1) -> (A1)

另一個運算元的地址是隱含的,可約定由ACC(累加器)提供

(ACC)OP(A1) -> ACC

若指令字長為32位,操作碼佔8位,地址碼佔24位,則該指令運算元的直接定址範圍為:2^{24} = 16M

3.二地址指令:

A1給出目的運算元的地址,A2給出源運算元的地址

(A1)OP(A2) -> A1

若指令字長為32位,操作碼佔8位,2個地址碼各佔12位,則該指令運算元的直接定址範圍為:2^{12} = 4K

4.三地址指令:

A1給出目的運算元的地址,A2給出源運算元的地址,A3存放操作結果

(A1)OP(A2) -> (A3)

若指令字長為32位,操作碼佔8位,3個地址碼各佔8位,則該指令運算元的直接定址範圍為:2^{8} = 256

5.四地址指令:

A1給出目的運算元的地址,A2給出源運算元的地址,A3存放操作結果,A4給出下一條將要執行的指令的地址

(A1)OP(A2) -> (A3)

若指令字長為32位,操作碼佔8位,4個地址碼各佔6位,則該指令運算元的直接定址範圍為:2^{6} = 64

二、定址方式:

定址方式就是定址指令或運算元有效地址的方式,也就是確定資料地址以及下一條將要執行的指令的地址。因此定址方式分為指令定址資料定址

指令定址

就是找下一條要執行的指令的地址

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