一、指令的基本概念
1)指令
含義:計(jì)算機(jī)能直接識別、執(zhí)行的操作命令(機(jī)器指令)
是馮諾依曼結(jié)構(gòu)計(jì)算機(jī)“程序控制”原理實(shí)現(xiàn)的載體
2)指令系統(tǒng)(指令集)
含義:一臺計(jì)算機(jī)中所有機(jī)器指令的集合
系列機(jī):同一公司不同時(shí)期生產(chǎn),基本系統(tǒng)結(jié)構(gòu)和指令系統(tǒng)相同的計(jì)算機(jī)。
兼容機(jī):不同公司生產(chǎn),基本系統(tǒng)結(jié)構(gòu)和指令系統(tǒng)相同的計(jì)算機(jī)。
3)指令字長
含義:指令中包含的二進(jìn)制位數(shù)
與機(jī)器字長相比:單字長、雙字長、半字長等長度指令
-
多字長指令:
- 解決尋址較大存儲空間的問題
- 取指會多次訪問內(nèi)存,影響速度,占用空間大
等長指令:指令字長度固定
變長指令:指令字長度根據(jù)需要可變
二、指令的分類
1)根據(jù)計(jì)算機(jī)層次結(jié)構(gòu)分類
屬于指令集架構(gòu)層(機(jī)器語言指令)
2)根據(jù)指令中地址碼字段的個(gè)數(shù)分類
三、二、一、零地址指令
3)根據(jù)指令中操作數(shù)的物理位置分類
存儲器--存儲器 (SS)型(這種形式現(xiàn)在已經(jīng)淘汰,因?yàn)閮纱味家L問主存,太慢)
寄存器--寄存器 (RR)型
寄存器---存儲器(RS)型
4)根據(jù)指令的功能分類
傳送指令:MOV、PUSH/POP、IN/OUT等
頂點(diǎn)算術(shù)運(yùn)算指令:ADD、SUB、INC、CMP、MUL等
位運(yùn)算指令:NOT、AND、OR、SHL、SAL
控制轉(zhuǎn)移指令:JMP、JNE、CALL、RET等
三、指令格式
操作碼+數(shù)據(jù)源+尋址方式
用二進(jìn)制代碼表示指令的結(jié)構(gòu)形式:
指令要求計(jì)算機(jī)完成什么功能?---》設(shè)置操作碼
指令要求計(jì)算機(jī)處理什么數(shù)據(jù)?----》設(shè)置數(shù)據(jù)源/目
計(jì)算機(jī)怎樣得到要處理的數(shù)據(jù)?----》設(shè)置尋址方式
操作碼字段的位數(shù)與支持的最大指令數(shù)量有關(guān)
對于定長操作碼而言,LengthOP=log2n(向上取整)
支持邊長操作碼時(shí),操作碼向不用的地址碼字段擴(kuò)展
尋址方式字段的位數(shù)與支持的尋址方式種類有關(guān)
地址碼字段的作用及影響與其位數(shù)和尋址方式有關(guān)
四、指令認(rèn)識
計(jì)算機(jī)能直接識別、執(zhí)行的某種操作命令(機(jī)器指令)是指揮計(jì)算機(jī)指令特定操作的命令
馮諾依曼結(jié)構(gòu)計(jì)算機(jī)“程序控制”原理實(shí)現(xiàn)的載體
是軟、硬件界面和程序員操作計(jì)算機(jī)硬件的接口
是硬件設(shè)計(jì)的依據(jù)和軟件設(shè)計(jì)的基礎(chǔ),直接影響計(jì)算機(jī)系統(tǒng)的性能
五、尋址方式
1)、尋址方式的概念
根據(jù)馮諾依曼計(jì)算機(jī)的工作原理,需要根據(jù)物理地址從內(nèi)存中去取指令和數(shù)據(jù)。包括指令尋址方式和數(shù)據(jù)的尋址方式
2)、指令的尋址方式
含義:計(jì)算指令有效地址的方法
指令的尋址方式只有兩種:
順序?qū)ぶ?/p>
跳躍尋址
順序?qū)ぶ?/h4>
程序的指令序列在主存順序存放。執(zhí)行時(shí)從第一條指令開始,逐條取出并執(zhí)行,這種程序的順序執(zhí)行過程,稱為順序?qū)ぶ贩绞?/p>
-
cpu中設(shè)置程序計(jì)數(shù)器(PC)對指令的順序號進(jìn)行計(jì)算。PC開始時(shí)存放程序的首地址,每執(zhí)行一條指令,PC加1,指出下條指令的地址,直到程序結(jié)束
- 加1的含義:存儲1條指令占用的字節(jié)單元數(shù)與存儲字長有關(guān)
跳躍尋址
- 當(dāng)程序要轉(zhuǎn)移執(zhí)行的順序時(shí),指令的尋址就采取跳躍尋址方式
- 跳躍,又稱跳轉(zhuǎn),是指下條指令的地址碼不是由程序計(jì)數(shù)器給出,而是由本條指令給出
- 注意!程序跳躍后,按新的指令地址開始順序執(zhí)行;指令計(jì)數(shù)器的內(nèi)容也必須相應(yīng)改變,以便及時(shí)跟蹤新的指令地址
3)操作數(shù)尋址方式
含義:形成操作數(shù)有效地址的方法
-
立即數(shù)尋址:地址碼字段是操作數(shù)本身 MOV AX, 200H
-
寄存器尋址:地址碼字段是寄存器地址 MOV AX, BX
-
直接尋址:地址碼字段是內(nèi)存地址 MOV AX, [200H]
-
間接尋址:地址碼字段是內(nèi)存地址的地址 MOV AX, I[200H]
-
寄存器間接尋址:地址碼字段是存內(nèi)存地址的寄存器地址 MOV AX, [BX]
-
相對尋址:操作數(shù)地址 + 當(dāng)前PC的值
-
基址尋址:操作數(shù)地址 + 基址寄存器的值(一段程序中不變) MOV AX, 32[B]
-
變址尋址:操作數(shù)地址 + 變址寄存器的值(隨程序不斷變化) MOV AX, 32[SI]
1、立即數(shù)尋址
程序的指令序列在主存順序存放。執(zhí)行時(shí)從第一條指令開始,逐條取出并執(zhí)行,這種程序的順序執(zhí)行過程,稱為順序?qū)ぶ贩绞?/p>
cpu中設(shè)置程序計(jì)數(shù)器(PC)對指令的順序號進(jìn)行計(jì)算。PC開始時(shí)存放程序的首地址,每執(zhí)行一條指令,PC加1,指出下條指令的地址,直到程序結(jié)束
- 加1的含義:存儲1條指令占用的字節(jié)單元數(shù)與存儲字長有關(guān)
含義:形成操作數(shù)有效地址的方法
- 立即數(shù)尋址:地址碼字段是操作數(shù)本身 MOV AX, 200H
- 寄存器尋址:地址碼字段是寄存器地址 MOV AX, BX
- 直接尋址:地址碼字段是內(nèi)存地址 MOV AX, [200H]
- 間接尋址:地址碼字段是內(nèi)存地址的地址 MOV AX, I[200H]
- 寄存器間接尋址:地址碼字段是存內(nèi)存地址的寄存器地址 MOV AX, [BX]
- 相對尋址:操作數(shù)地址 + 當(dāng)前PC的值
- 基址尋址:操作數(shù)地址 + 基址寄存器的值(一段程序中不變) MOV AX, 32[B]
- 變址尋址:操作數(shù)地址 + 變址寄存器的值(隨程序不斷變化) MOV AX, 32[SI]
地址碼字段是操作數(shù)本身
例:MOV AX,200H(AX<---200H)
S=D
特點(diǎn):
取指操作將數(shù)據(jù)與指令一并讀入CPU內(nèi)部的寄存器,指令執(zhí)行速度塊
便于程序設(shè)計(jì)(變量賦初值)
數(shù)據(jù)大小受字段位數(shù)限制
2、寄存器尋址
操作數(shù)在cpu的內(nèi)部寄存器中
例 MOV AX,BX(AX<---(BX) )
特點(diǎn):
操作數(shù)在寄存器中,指令執(zhí)行速度快
能訪問的數(shù)據(jù)大小一般與計(jì)算機(jī)字長有關(guān)
地址字段的位數(shù)與計(jì)算機(jī)通用寄存器數(shù)量相關(guān)
3、直接尋址
地址碼字段直接給出操作數(shù)在內(nèi)存的地址,
例 MOV AX,[200H]
特點(diǎn):
提供訪問主存的操作
獲得數(shù)據(jù)要訪問主存,指令執(zhí)行速度慢
地址字段的位數(shù)決定了訪存空間大小
4、間接尋址
地址碼字段給出的是操作數(shù)主存地址的地址
例 MOV AX,I[200H]
特點(diǎn):
解決了直接尋址方式下地址字段的位數(shù)限制訪存范圍大小的問題
獲得數(shù)據(jù)要訪問主存2次,指令執(zhí)行速度太慢
5、寄存器間接尋址
地址碼給出的是寄存器編碼R
特點(diǎn):
解決了直接尋址方式下地址字段的位數(shù)限制訪存范圍大小的問題
獲得數(shù)據(jù)只需訪問主存1次
6、相對尋址
操作數(shù)地址 + 當(dāng)前PC的值
指令所提供的相對地址是:本條指令的下條指令在內(nèi)存中的首地址為基準(zhǔn)位置的偏移量
特點(diǎn):
可節(jié)省指令中的地址位數(shù),便于程序在內(nèi)存中成塊移動
注意PC的改變對計(jì)算E的影響,計(jì)算機(jī)字長十六位則加2(16 / 8)
若計(jì)算機(jī)字長32位,且PC的值在取值階段修改,則讀完地址后,PC要加4,因?yàn)?2位占了四個(gè)字節(jié)
7、基址尋址
指定一個(gè)基址寄存器B,與本指令地址無關(guān)
E=D+(B),D為指令中地址字段的值
例:MOV AX,32[B]
特點(diǎn):
使用基址寄存器可以訪問更大的主存空間(基址寄存器可以設(shè)置成比通用寄存器還大的位數(shù))
對某一程序而言,基址值設(shè)定后不變,故要訪問不同數(shù)據(jù)需修改D
8、變址尋址
指定一個(gè)變址寄存器X,與本指令地址無關(guān),內(nèi)容可隨便要求改變
E=D+(X),D為指令中地址字段的值
MOV AX,32[SI] SI,DI都稱為變址寄存器
特點(diǎn):
不改變指令即可改變數(shù)據(jù)的有效地址,可在循環(huán)中使用
在字符串處理,向量運(yùn)算等等成批數(shù)據(jù)處理中非常有用
9、數(shù)據(jù)尋址方式總結(jié)
| 數(shù)據(jù)尋址方式 | 地址表達(dá)式E | 特點(diǎn) |
|---|---|---|
| 立即尋址 | S=D | 快,便于程序設(shè)計(jì),賦初值,初值大小受限 |
| 寄存器尋址 | S=R | 快,便于程序設(shè)計(jì),不能訪問主存 |
| 直接尋址 | E=D | 慢,便于程序設(shè)計(jì),提供訪存,范圍受限 |
| 間接尋址 | E=(D) | 很慢,解決直接尋址訪存范圍受限的問題 |
| 寄存器間接 | E=(R) | 慢,便于程序設(shè)計(jì),提供訪存,范圍增大 |
| 相對尋址 | E=(PC)+D | 慢,提供訪存,不能在循環(huán)中使用 |
| 變址尋址 | E=(X)+D | 慢,便于程序設(shè)計(jì),提供訪存,可在循環(huán)中用 |
| 基址尋址 | E=(B)+D | 慢,提供更大的范圍的訪存能力,不能在循環(huán)中用 |
六、指令格式設(shè)計(jì)
1、指令格式設(shè)計(jì)的主要內(nèi)容
操作碼字段+尋址方式+地址碼字段
根據(jù)指令數(shù)量的要求及是否支持操作碼擴(kuò)展,確定操作碼字段的位數(shù)
根據(jù)對操作數(shù)的要求確定地址碼字段的個(gè)數(shù)
根據(jù)尋址方式的要求,為每個(gè)地址碼字段確定尋址方式字段位數(shù)。
確定采用定長指令還是變長指令

七、MIPS
三種指令格式
- R型指令
- I型指令
- J型指令