指令系統
終于有個簡單的一掌讓我整整了 學習周期很短結束

一.指令系統概述
指令系統:指令集體系結構(ISA)中最核心的部分 其完整定于了硬件和軟件之間的接口
ISA規定內容:
1.指令格式 指令尋址方式 操作類型
2.操作數類型 尋址方式 大小端方式對齊
3.可訪問的寄存器編號 個數和位數 存儲空間大小和編址方式
4.執行過程的控制方式
指令的基本格式
一條指令就是機器語言的一個語句 一組二進制代碼
指令字長指一條指令所包含的二進制代碼位數 其和機器字長無固定關系
定長指令字結構:所有指令長度相等
變長指令字結構:指令長度有異
單字長指令:指令長度=機器字長
半字長指令:指令長度=半個機器字長
指令字長通常為字節的整數倍
然后我們來劃分幾個地址指令
零地址指令
一地址指令
二地址指令
理論上,指令地址的數量可以非常多,但在實際設計中,我們通常只討論0地址、1地址、2地址、3地址指令,偶爾會提到4地址指令
指令操作類型
1.數據傳送指令
mov 進出棧
2.算術和邏輯運算
加減乘除 與或取反
3.移位
算術邏輯移位
4.轉移操作(程序控制類指令)
無條件轉移 調用 返回等
5.輸入輸出操作
看題:
CPU執行指令過程中 指令地址由PC(程序計數器)給出
程序控制類指令功能是改變程序執行順序
某指令系統有200條指令 對操作碼采用固定長度二進制編碼 最少用幾位
二.尋址方式
就是找有效地址 確定本條指令地址及下一條指令地址
1.指令尋址
- 順尋尋址 PC+1(按字編址) 自動形成下一條指令地址
- 跳躍尋址 轉移指令實現 執行結果修改PC值
2.數據尋址
表示一個操作數的地址或計算出操作數地址
位數決定了尋址方式的種類
搞懂幾個概念 然后重點就是尋址方式的規則算法
A 形式地址
EA 有效地址
(A) A的內容即數值
不同尋址方式 為的是縮短指令字長 擴大尋址空間 提高編程的靈活性
隱含地址
立即尋址
地址字段就是操作數本身(立即數) 最快能找到操作數
直接尋址
間接尋址
寄存器尋址
原理同直接尋址一樣 把主存換成寄存器 速度快
寄存器間接尋址
相對尋址(偏移尋址)
基址尋址(偏移尋址)
主要用于解決程序邏輯空間與存儲器物理空間的無關性
變址尋址(偏移尋址)
變址尋址 基址尋址 相對尋址如出一轍 共屬于偏移尋址
堆棧尋址
后進先出原則管理的存儲區 讀寫單元用堆棧指針(SP)給出
硬堆棧(寄存器堆棧) 成本高 軟堆棧適合大容量堆棧
題目中將理解以上尋址方式的作用
簡化地址結構基本方法盡量采用 隱含地址
縮短指令中某個地址段位數 采用寄存器尋址
尋址方式中 最快獲得操作數的方式 立即尋址
相對尋址方式的相對地址實質上是一種 以下條指令在內存中首地址為基準位置的偏移量
下面兩道題同種類型
注意主存按字編址還是按字節編址
求范圍同類型題
求LSB(最低有效字節)
三.機器代碼
機器代碼就是0和1組成的 但可讀性差
我們學過高級語言java c啥的 這節考點是匯編語言 一種低級語言
一條匯編語言對應一個機器代碼
主要寄存器
匯編指令分為Intel格式和AT&T格式
區別:

當然還有很多區別 但考試內容注重X86匯編指令 所以看這個Intel的
<reg> 任意寄存器
<mem> 內存地址
<con> 常數
dword ptr[] 32bit
word ptr[] 16bit
byte ptr[] 8bit
常用的一些指令:
選擇
#include <stdio.h>
int main(void) {
int a = 7, b = 6, c;
if (a > b) {
c = a;
} else {
c = b;
}
}
實現過程:
mov eax,7 ---a
mov ebx,6 ---b
cmp eax.ebx 比較a和b
jg Next 如果a>b 跳到Next執行
mov ecx,ebx 就是不滿足a>b 把b賦給c
jmp End 跳到END
Next:
mov ecx,eax 把a賦給c
End:
循環
不再舉列子 就說其特殊的
loop:循環體
goto 跳轉到
調用
參考:
過程調用:

題目:
記得加上jle指令字節
四.CISC RISC
簡言之就是:
CISC 復雜指令系統計算機
RISC 精簡指令系統計算機
然后對比:

到此結束 然后計組最后一個強大敵人CPU 攻克之后 基本總線和IO一路平坦






































浙公網安備 33010602011771號