1. 程式人生 > >計原與彙編筆記-- 指令系統(一)

計原與彙編筆記-- 指令系統(一)

第四章 指令系統(一)

指令格式

一、操作碼結構設計

固定長度操作碼結構

操作碼集中存放在指令的一個欄位內,其長度是定長的
優點:譯碼時間短,便於硬體的設計和實現(MIPS指令的操作碼欄位為6位定長操作碼結構

可變長度操作碼結構 P83

特點:以16位指令字長為例,將最高四位o’b0000~o’b1110設定為三地址指令,剩下的o’b1111作為擴充套件標誌,以接下來四位作為實際指令。
除了這種擴充套件方式,還可以有其他擴充套件方法。例如可以設計成15條三地址、14條2地址、31條1地址指令

二、地址碼結構的設計

1. 四地址指令

共有五個欄位。從高位到低位:OP, A1, A2, A3, A4
OP: 操作碼,表示操作性質
A1:第一運算元地址(源運算元地址)
A2:第二運算元地址(源運算元地址)
A3:存放結果地址;
A4:下一指令的地址
指令的意義為:

(A1)OP(A2)->A3

優點: 結構簡單。
缺點:地址碼佔用了指令子的大量資訊,降低了資訊的有效利用率。
改進: 大部分程式順序執行,因此可以設計程式計數器 PC(programme counter),程式預儲存,計算機自動執行,故可將地址4去掉

2. 三地址指令(OP|A1|A2|A3)

指令意義:(A1)OP(A2)->A3
特點與四地址完成同樣操作。但後續指令地址不在指令中,而是由PC發出。
優點 縮短一個長度,在指令執行後,第一、第二運算元不會被破壞,可以共後續指令繼續使用
缺點佔用地址欄位長
用途:中型機或大型機器

3. 二地址指令(OP|A1|A2)

指令意義:

(A1)OP(A2)->A2
或者
(A1)OP(A2)->A1

會破壞一個運算元
用途:小型機或者中型機

4. 一地址指令(OP|A1)

· 單運算元:OP(A1)->A1
·雙運算元:(REG)OP(A1)->(REG)
REG地址在設計指令系統是是預先隱含設定的

5. 零地址指令

兩種型別:
1) 置零不需要操作碼。例如停機置零、空造作指令(只佔用CPU時鐘週期和儲存空間)
2)指令的運算元是隱含指定的(例如8086的出棧指令)

三、指令助記符與機器指令程式碼

四、指令格式舉例

1. Intel 80x86指令格式(這一部分沒咋講,書上寫的看不懂)

這裡寫圖片描述

第零位元組:段超越字首(1byte, 8bit)

|001|SEG|110|||2|110

五、定址方式

1. 指令定址

· 順序定址方式 (PC) + 1 -> PC
其中,1 並不是每一臺計算機的情況
如果記憶體單元編制單位是位元組,每一條指令為四個位元組,則每次加的就是4.
· 跳躍定址轉移指令(JMP)指出
這裡寫圖片描述

2. 資料定址

這裡寫圖片描述
形式地址:指令字中的地址
有效地址:運算元的真是地址
1) 立即定址
形式地址A就是運算元。在取指令的過程中,需要執行的書已經被取入到CPU中。
這裡寫圖片描述
指令執行階段不需要放存
2)直接定址(有效地址即為形式地址)
這裡寫圖片描述

3)隱含定址(運算元隱含在操作碼中)
這裡寫圖片描述
減少了一個地址碼欄位,可以縮短指令字長
4)間接定址
有效地址有形式地址間接提供。
指令中的地址碼欄位存放的是存放運算元有效地址的貯存單元地址(運算元地址的地址)
這裡寫圖片描述
5)暫存器間接定址
在指令的地址碼部分給出暫存器編號,在給定的暫存器中存放運算元所在主存單元的地址。按照地址去訪問運算元。
優點:字長較短,可以通過修改暫存器中的內容來訪問不同的主存地址,利於程式設計
6)暫存器定址
指令中的運算元存放在暫存器中。指令的地址碼直接給出暫存器編號。訪問此編號的暫存器得到運算元。
7)基址定址
採用專用暫存器作為基址暫存器

EA=(BR)+A

這裡寫圖片描述
優點:擴大定址範圍、有利於多道程式(程式動態定位)
注意: BR內容由作業系統或者管理程式確定,使用者不可自己修改;
在程式執行過程中,BR內容不變,形式地址A可變
**採用通用暫存器作為基址暫存器
這裡寫圖片描述**
可以由使用者指定那個通用暫存器作為基址暫存器
基址暫存器內容有管理程式確定
8)變址定址
與基址定址類似,由IX變址暫存器和形式地址相加得到運算元地址。
不同點: IX(變址暫存器)內容可以由使用者指定
便於處理陣列問題

//DIRECT ADDRESSING
LDA D
ADD D+1
ADD D+2
...
ADD D+(N-1)
DIV #N
STA ANS



// INDEXED ADDRESSING
LDA

參考文獻

[1] 易小林,魯鵬程.計算機組成原理與組合語言.清華大學出版社.9787302193319