指令系統實例分析
指令系統實例分析
一、教學計算機指令系統介紹
1、教學計算機指令系統概述
(1)6位固定長度的操作碼,最多有64條指令。
(2)指令分類
①按指令長度分:有單字、雙字指令
②按操作數的個數分:有無操作數、單操作數和雙操作數指令
③按尋址方式分:有寄存器尋址、寄存器間接尋址、立即數尋址、變址尋址、相對尋址、直接尋址和堆棧尋址。
(3)指令格式
15 10? 9 8? 7 0?
6位操作碼? 2位條件碼? 目的寄存器編號? 源寄存器編號?
輸入、出端口地址/相對轉移的位移量?
立即數/絕對地址/變址位移量?
?
操作碼:在最高6位,最多64條指令。
條件碼:占2位,用作條件轉移指令的判斷條件(對應狀態字C、Z、V、S)
最低8位:不同指令有不同的用法。
●輸入或輸出端口地址
●相對尋址的位移量(-128~+127)
●分成兩個4位字段,表示雙操作數的寄存器編號
2、教學計算機指令系統詳述
(1)按操作數的個數分類
①無操作數指令:11條
NOP 空操作指令 DI 關中斷指令
PSHF 狀態字入棧指令 STC 進位位置1(C←1)
POPF 狀態字出棧指令 CLC 進位位置0(C←0)
EI 開中斷指令
RET 子程序返回指令
IRET 中斷返回指令
LDMC 裝入微指令代碼指令
HALT 動態停機指令
②單操作數指令:有兩種格式,共12條
格式1: 15 10? 9 8? 7 4? 3 0?
操作碼6位? 不用? 不用? SR?
MUL SR 無符號乘, R0 R1 ←R1×SR
DIV SR 無符號除, R0(余數)R1(商) ← R0 R1 /SR
格式2: 15 10? 9 8? 7 4? 3 0?
操作碼6位? 不用? DR? 不用?
指令:PUSH DR 將DR壓入堆棧
POP DR 將棧頂元素彈出送入DR
INC DR DR ←DR+1
DEC DR DR←DR-1
NOT DR DR ←DR
SHL DR DR邏輯左移,最低位補0,最高位移入C
SHR DR DR邏輯右移,最高位補0,最低位移入C
RCL DR DR與C循環左移,C移入最低位,最高位移入C
RCR DR DR與C循環右移,C移入最高位,最低位移入C
③雙操作數指令,有兩種格式,共17條
格式1: 15 10? 9 8? 7 4? 3 0?
OP? 不用? DR? SR?
指令:ADD DR,SR 功能: DR DR+SR
ADC DR,SR 功能: DR DR+SR+C
SUB DR,SR 功能: DR DR-SR
SBB DR,SR 功能: DR DR-SR-C
CMP DR,SR 功能: DR-SR
TEST DR,SR 功能: DR&SR
OR DR,SR 功能: DR DR or SR
XOR DR, SR 功能: DR DR xor SR
AND DR, SR 功能: DR DR & SR
MOV DR,SR 功能: DR SR
MOV DR,[SR] 功能: DR [SR]
MOV [DR],SR 功能: [DR] SR
格式2: 15 10? 9 8? 7 4? 3 0?
OP? 不用? DR? SR?
DATA/ADR/OFFSET
?
DATA:立即數 ADR:內存地址
OFFSET:偏移量
指令: 功能:
MOV DR, DATA DR DATA
MOV DR, [ADR] DR [ADR]
MOV [ADR],SR [ADR] SR
MOV DR , OFFSET[SR] DR [OFFSET+SR]
MOV OFFSET [SR],DR [OFFSET+SR] DR
④I/O指令,輸入、輸出指令各1條
格式: 15 10? 9 8? 7 0?
OP? 不用? IO/ PORT?
指令:
IN PORT R0 [PORT],從外設讀入一字節到R0低8位
OUT PORT [PORT] R0, 把R0的低8位數據寫到外設
⑤轉移指令,3種格式,共6條相對轉移指令
格式1: 15 10? 9 8? 7 0?
OP? CND? 位移量?
JR ADR CND不用,必轉ADR地址,ADR為原PC值+位移量
JR CND,ADR 當條件滿足時轉ADR所指的地址,ADR 為原PC值+位移量,條件 不滿足則順序執行
通過通用寄存器給出轉移地址的轉移指令
格式2: 15 10? 9 8? 7 4? 3 0?
OP? CND? 不 用? SR?
指令:
JP SR CND不用,無條件轉SR 所指的地址
JP CND,SR 當條件滿足時轉SR 所指的地址,條件不滿足則順序執行
按絕對地址實現的轉移指令
格式3: 15 10? 9 8? 7 4? 3 0?
OP? CND? 不用? 不用?
ADR
?
指令:
JP ADR CND不用,無條件轉移到ADR地址
JP CND,ADR 當條件滿足時轉移到ADR地址,條件不滿足則順序執行 ,
⑥子程序調用指令,兩種格式,共兩條。
格式1: 15 10? 9 8? 7 4? 3 0?
OP? 不用? 不用? SR?
指令:CALL SR 調用SR指定的子程序,SP <---SP-1,
[SP] <---PC,PC <---- SR
格式: 15 10? 9 8? 7 4? 3 0?
OP? 不用? 不用? 不用?
ADR
?
指令:
CALL ADR 調用通過ADR指定的子程序,SP SP-1
[SP] PC,PC ADR
可以看出,子程序調用指令的兩種格式與無條件轉移指令的后兩種格式是一樣的。
(2)按指令實現的功能分類
①算邏指令:19條(見教材P139頁)
②傳送指令:12條(見教材P140頁)
③輸入、輸出指令:2條(見教材P140頁)
④控制類指令:17條(每條條件轉移指令按兩條計算)
⑤其它指令,3條
3、匯編語言程序設計
計算機語言按層次分為三級:
①機器語言 ②匯編語言 ③高級語言
匯編語言程序舉例:
例1 設計一個小程序,用次數控制在終端屏幕上輸出0~9十個數字符。(注:字符0~9的ASCII碼為30H ~39H)
A820
MOVE R2, 0A ;R2為計數器,初值送10
MOVE R0, 30 ;R0初值送‘0'的ASCII碼30H
(824) OUT 80 ;輸出R0中存放的字符,80為端口地址
DEC R2 ; R2計數器減1,置狀態標志位
JR Z,830 ;若為0,就轉移到830處執行;否則順序執行
PUSH R0 ; R0入棧,為了輸入外部設備狀態字
IN 81 ;將端口地址為81的外設狀態字輸入到R0中
SHR R0 ;R0邏輯右移一位,最低位進入C
JP NC,828;C=0,表示沒有就緒,循環等待;
C=1,順序執行
POP R0;棧頂元素彈出進R0
INC R0;R0內容+1
JP 824 ;無條件轉移到824
(830) RET ;返回主程序
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
相關閱讀:
- [電子說] 微處理器的指令集和指令系統有什么不同 2024-10-05
- [電子說] 寄存器尋址和直接尋址的區別 2024-07-12
- [電子說] 汽車診斷儀算法保護芯片LKT4305GM介紹 2024-04-29
- [電子說] 嵌入式微處理器的指令系統包括哪些 2024-05-04
- [電子說] 微機原理和計算機組成原理的區別 2024-01-14
- [電子說] 龍芯3A6000問世,國產自研CPU最新里程碑 2023-12-06
- [電子說] 龍芯上新!新一代國產CPU 龍芯3A6000發布 2023-11-29
- [電子說] LoongArch和RISC-V對比分析 2023-11-14
( 發表人:admin )