【學習計算機組成原理】指令格式(術語少,俗話多)

指令的基本格式

包括操作碼和地址碼
在這裏插入圖片描述
操作碼:表示指令是幹什麼的
地址碼:表示操作數的地址

比喻:
在軍隊中,長官命令士兵:“開槍擊殺張三罪犯”,相應的,操作碼就是開槍擊殺,地址碼就是張三。張三是用來標識一個人的名字,和地址的功能相同。知道了名字張三,就知道目標是哪個具體的人。同樣,知道了操作數地址,就知道了操作的是哪個具體的數。
(理解時,和現實生活結合是個不錯的方法)

指令長度
一條指令中所包含的二進制的位數,等於操作碼字段與地址碼字段的二進制位數和。
有些電腦的指令長度固定,有些電腦的指令長度不固定。

比喻:
對應就是長官發出的命令的字數,對於上面的比喻,8個字,指令長度就是8。


下面開始學習操作碼和地址碼😀

操作碼

說白了就是一串數字,每個數字代表一個具體的功能。比如,我規定1代表加,2代表減,3代表乘,4代表除
根據長度是否固定分爲規整型和非規整型
規整型
一聽它的名字就知道這串數字很規整,所以它是定長編碼

由於數字是2進制,假如我用長度是3的操作碼,那麼它最多可表示23個功能,也就是8個功能。當有9個功能需要表示時,我只能增加操作碼的長度,規定長度是4,此時它最多可表示16個功能,儘管我只有9個功能,我用掉其中的9個數字,剩下7個數字就浪費掉了,叫它們非法操作碼。
非規整型
與上面相反,是變長編碼
由於大多數電腦的指令長度是定長的,所以操作碼字段的長度和地址碼字段的長度相互制約。

總長一定,其中一個長了,另一個就短

所以呢,操作數地址個數少的指令,它的操作碼就長

介紹一種最常用的非規整型編碼方式【擴展操作碼法】
基本思想就是:較短的操作碼不能是較長的操作碼的前綴。
下面是用11來區分操作碼的長度,假如指令是11 11 10 01 10,我一看,高位有4個1(兩組11),說明該操作碼是6位長。
用指令長度是8位的指令示意
3地址指令
在這裏插入圖片描述
2地址指令
在這裏插入圖片描述
1地址指令
在這裏插入圖片描述
0地址指令
在這裏插入圖片描述
這樣就可以表示3種3地址指令,3種2地址指令,3種1地址指令,4種0地址指令,共13種指令。
如果是規整型的,我們只能以3地址指令爲基準,用最高2位表示指令,這樣只能表示4種指令(00、01、10、11)

是不是有種木桶效應的感覺呢?


讓我們看看地址碼是個什麼鬼😜

地址碼的結構

根據操作數地址的多少,介紹以下5種常用的結構:
下面2,3,4,5呢,針對的都是需要2個操作數的運算,比如加減乘除,需要2個輸入,並有1個輸出
通常情況下,有個東西(叫PC)保存着指令執行的先後次序,如果沒有指定下一條指令的地址,就按順序執行指令。

  1. 零地址指令
    無操作數,只有操作碼
  2. 一地址指令
    一個操作數加一個操作碼
    1個輸入數的地址
    另一個輸入數到固定的地方取就行,輸出數到固定的地方存
  3. 二地址指令
    兩個操作數加一個操作碼
    2個輸入數的地址
    輸出數保存在1個輸入數的地址
  4. 三地址指令
    三個操作數加一個操作碼
    2個輸入數的地址,1個輸出數的地址
  5. 四地址指令
    四個操作數加一個操作碼
    2個輸入數的地址,1個輸出數的地址,1個下條指令的地址。

~bye

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