一、總覽
二、指令的定義
指令(又稱機器指令):
是指示計算機執行某種操作的命令,是計算機運行的最小功能單位。
一臺計算機的所有指令的集合構成該機的指令系統,也稱爲指令集。
注:一臺計算機只能執行自己指令系統中的指令,不能執行其他系統的指令。
三、指令格式
一條指令就是機器語言的一個語句,它是一組有意義的二進制代碼。
一條指令通常要包括操作碼字段和地址碼字段兩部分:
A1這個地址裏面的值 與 A2這個地址裏面的值 執行OP操作後,將結果存到A3這個地址中
四、指令格式-地址碼
指令含義:(A1)OP(A2)——>A3,A4=下一條將要執行指令的地址
設指令字長爲32位,操作碼佔8位,4個地址碼字段各佔6位
設存儲字長爲32位,即4B
- Ai可直接表示2^6=64個不同的位置
- 一條指令的執行(假設每個地址都是主存地址):
取指令訪存1次(假設指令字長=存儲字長)
取兩個操作數訪存2次
存回結果訪存1次
共訪存4次
設指令字長及存儲字長均爲32位,操作碼佔8位:
定長指令字結構:指令長度固定 指令字長=存儲字長
變長指令字結構:指令長度不等 按字節的倍數變化
定長操作碼:n位——>2^n條指令
擴展操作碼:操作碼長度可變
指令含義:(A1)OP(A2)→A3,A4=下一條將要執行指令的地址
4個地址碼字段各佔6位,指令操作數直接尋址範圍爲2^6=64;完成一條指令需要訪存4次
指令含義:(A1)OP(A2)→A3
3個地址碼字段各佔8位,指令操作數直接尋址範圍爲2^8=256;完成一條指令需要訪存4次
指令含義:(A1)OP(A2)→A1
2個地址碼字段各佔12位,指令操作數直接尋址範圍爲2^12=4K;完成一條指令需要訪存4次
指令含義:
- OP(A1)→A1,如加1、減1、取反、求補等,完成一條指令需要訪存3次
- (ACC)OP(A1)→ACC,隱含約定的目的地址爲ACC完成一條指令需要訪存2次,1個地址碼字段佔24位,指令操作數直接尋址範圍爲2^24=16M
注:ACC爲累加器
指令含義:
1.不需要操作數,如空操作、停機、關中斷等指令
2.堆棧計算機,兩個操作數隱含存放在棧頂和次棧頂,計算結果壓回棧頂
小結:
當用一些硬件資源代替指令字中的地址碼字段後
- 可擴大指令的尋址範圍
- 可縮短指令字長
- 可減少訪存次數
五、擴展操作碼
在設計擴展操作碼指令格式時,必須注意以下兩點:
1)不允許短碼是長碼的前綴,即短操作碼不能與長操作碼的前面部分的代碼相同。
2)各指令的操作碼一定不能重複。
通常情況下,對使用頻率較高的指令,分配較短的操作碼;對使用頻率較低的指令,分配較長的操作碼,從而儘可能減少指令譯碼和分析的時間。也還有其他擴展操作碼設計方法。
六、指令操作碼
操作碼指出指令中該指令應該執行什麼性質的操作和具有何種功能。
操作碼是識別指令、瞭解指令功能與區分操作數地址內容的組成和使用方法等的關鍵信息。例如,指出是算術加運算,還是減運算;是程序轉移,還是返回操作。
操作碼分類:
- 定長操作碼:在指令字的最高位部分分配固定的若干位(定長)表示操作碼。
- 一般n位操作碼字段的指令系統最大能夠表示2”條指令。
- 優:定長操作碼對於簡化計算機硬件設計,提高指令譯碼和識別速度很有利;
- 缺:指令數量增加時會佔用更多固定位,留給表示操作數地址的位數受限。
- 擴展操作碼(不定長操作碼):全部指令的操作碼字段的位數不固定,且分散地放在指令字的不同位置上。
- 最常見的變長操作碼方法是擴展操作碼,使操作碼的長度隨地址碼的減少而增加,不同地址數的指令可以具有不同長度的操作碼,從而在滿足需要的前提下,有效地縮短指令字長。
- 優:在指令字長有限的前提下仍保持比較豐富的指令種類;
- 缺:增加了指令譯碼和分析的難度,使控制器的設計複雜化。