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

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

當然還有很(hen)多(duo)區別 但考試(shi)內容注(zhu)重X86匯編指(zhi)令 所(suo)以看這個(ge)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 跳轉到
調用
參考:
過程調用:

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

到此結束(shu) 然(ran)后計組(zu)最后一個強大敵人CPU 攻克之(zhi)后 基(ji)本總線(xian)和IO一路平坦





































