1.指令:又稱機器指令:
1.是指計算機執行某種操作的命令,
2.是計算機運行的最小功能單位。
3.一台計算機的所有指令的集合構成該機的指令系統,也稱為指令集
指令是由**操作碼**和**地址碼**構成
操作碼:指明做什么
地址碼:指明對誰動手
注:1.有的指令不需要地址碼(例:停機指令等)
2.一台計算機只能執行自己指令系統中的指令,不能執行其他系統的指令
換句話說:因為不同設備之間的指令集可能不同,例:手機和電腦之間的指令集不同,因此有的軟件只能在電腦上運行,有的軟件只能在手機上運行
2.指令有很多種格式,也就是有很多種分類方式
1.根據地址碼的數目進行分類
2.根據指令長度進行分類
3.根據操作碼的長度進行分類
4.根據操作類型進行分類
2.1根據地址碼的數目進行分類
1.零地址指令:只有一個操作碼(op),沒有地址碼
常用於:
1.不需要操作數,如空操作,停機,關中斷等指令
2.堆棧計算機,兩個操作數隱含存放在棧頂和次棧頂,計算結果壓回棧頂,(例如:計算機實現后綴表達式時)
2.一地址指令:一個操作碼(op),一個地址碼(A1(放結果))
常用於:
1.只需要單操作數,(如:加一,減一,取反,求補等)
指令含義:op(A1)->A1
將A1地址中的數據執行op操作后再放回A1中
完成一條指令需要3次訪存:取出整條指令->讀取A1中的數據->將結果寫回A1中
2.需要兩個操作數,但其中一個操作數隱含在某個寄存器中(如:隱含在ACC加法器中數進行加法指令)
指令含義:(ACC)op (A1) -> A1
將A1地址中的數據和ACC中的數據執行op操作后再放回A1中
完成一條指令需要3次訪存:取出整條指令->讀取A1中的數據->將結果寫回A1中
3.二地址指令:一個操作碼(op),兩個地址碼(A1(放結果),A2)(一定放回A1中而不是A2中)
常用於:1.需要兩個操作數的算數運算,邏輯運算的相關指令
指令含義:(A1)op(A2)->A1
將A1地址中的數據和A2中的數據執行op操作后再放回A1中
完成一條指令需要4次訪存:取出整條指令->讀取A1中的數據->讀取A2中的數據->將結果寫回A1中
4.三地址指令:一個操作碼(op),兩個地址碼(A1,A2,A3(放結果))(與二地址指令類似)
常用於:1.需要兩個操作數的算數運算,邏輯運算的相關指令
指令含義:(A1)op(A2)->A3
將A1地址中的數據和A2中的數據執行op操作后再放回A3中
完成一條指令需要4次訪存:取出整條指令->讀取A1中的數據->讀取A2中的數據->將結果寫回A3中
5.四地址指令:一個操作碼(op),兩個地址碼(A1,A2,A3(放結果),A4(下一個指令的地址))
常用於:1.需要兩個操作數的算數運算,邏輯運算的相關指令
指令含義:(A1)op(A2)->A3
將A1地址中的數據和A2中的數據執行op操作后再放回A3中,執行A4地址指向的指令
A4放的是:下一條將要執行指令的地址
完成一條指令需要4次訪存:取出整條指令->讀取A1中的數據->讀取A2中的數據->將結果寫回A3中
**注意:**
1.正常情況下:取出指令后,PC所指向的地址自動加"1",指向下一條指令,開始執行
2.四地址指令:執行指令后,將PC的值修改為A4所指向的地址
3.n位地址碼的直接尋址范圍為2的n次方
4.若指令總長度固定不變,則地址碼數量越多,尋址能力越差
2.2根據指令的長度進行分類
(定長操作碼/可變長操作碼)
1.預備知識:
指令字長:一條指令的長度
機器字長:CPU進行一次整數運算所能處理的二進制數據的位數(通常與ALU直接相關)
存儲字長:一個存儲單元中的二進制位數(通常與MDR位數相同)
2.常見指令字長:(指令長度通常是機器字長的整數倍)半字長指令,單字長指令,雙字長指令
注意:指令字長會影響取指令所需的時間
如:機器字長=存儲字長=16bit時,則取出一條雙字長指令需要進行兩次訪存
3.1定長指令字結構:指令系統中所有指令的長度都相等
3.2變長指令字結構:指令系統中指令的長度可變的
3.3定長操作碼:指令系統中所有指令的操作碼的長度都相等
n位操作碼位數->2的n次方條指令
注意(優缺點):控制器的譯碼電路設計簡單,但靈活性較低
3.4可變長度操作碼:指令系統中各種指令的操作碼的長度可變
注意(優缺點):控制器的譯碼電路設計復雜,但靈活性較高
3.5定長指令字結構+可變長操作碼-->擴展操作碼指令格式
擴展操作碼指令格式:不同的地址數目不同的指令使用不同長度的操作碼
2.3根據指令的長度進行分類
1.數據傳送類
**(數據傳送類:進行主存與CPU之間的數據傳送)**
LOAD 作用:把存儲器中的數據放到寄存器中
STOPE 作用:把寄存器中的數據放到存儲器中
2.算術邏輯操作
**(運算類)**
算術運算:加,減,乘,除,增1,減1,求補,浮點運算,十進制運算
邏輯運算:與,或,非,異或,位操作,位測試,位清除,位求反
3.移位操作
**(運算類)**
算數移位,邏輯移位,循環移位(帶進位,不帶進位)
4.轉移操作(相當於改變指令流)(相當於改變PC的值)
**(程序控制類:改變程序指行的順序)**
無條件轉移 JMP
條件轉移 (相當於if else語句)JZ:結果為0 JO:結果溢出 JC:結果有進位
調用和返回 CALL(goto)和RETURN(return)
陷阱(TRAP)與陷阱指令
5.輸入輸出操作
**(輸入輸出類:進行CPU和IO設備之間的數據傳輸)**
CPU寄存器與IO端口之間的數據傳送(端口即為IO接口中的寄存器)
本人的csdn賬號
https://blog.csdn.net/qq_52048801/article/details/120873092