- 計算機系統平臺
- 王曉英 曹騰飛 孟永偉 黃建強
- 1909字
- 2019-10-18 19:26:04
2.3.2 TEC-2008指令系統
TEC-2008是由清華大學自主設計并研制的16位教學計算機系統,該系統是一臺硬件組成相對完備的計算機系統,CPU、主存、I/O接口及總線均具有一定的典型性,并能夠驅動常見的輸入/輸出設備。更重要的是,該系統能夠提供計算機組成原理部分教學所要求的教學實驗功能,學生能夠深入到計算機內部,查看、測試主要信號與部件的工作狀態。
1.指令分類
16位機的指令按不同的分類標準可劃分為:
①從指令長度區分,有單字指令和雙字指令。
②從操作數的個數區分,有三操作數指令、雙操作數指令、單操作數指令和無操作數指令。
③從使用的尋址方式區分,有寄存器尋址、寄存器間接尋址、立即數尋址、直接地址、相對尋址等多種基本尋址方式。
④從指令功能區分,給出了算術和邏輯運算類指令、讀寫內存類指令、輸入/輸出類指令、轉移指令、子程序調用和返回類指令,還有傳送、移位、置進位標志和清進位標志等指令。
⑤按照指令的功能和它們的執行步驟,可以把該機的指令劃分為如下4組。在后面幾節中給出的指令流程框圖、指令流程表都是以此為標準進行指令劃分的。
A組:基本指令ADD、SUB、AND、OR、XOR、CMP、TEST、MVRR、DEC、INC、SHL、SHR、JR、JRC、JRNC、JRZ、JRNZ;擴展指令ADC、SBB、RCL、RCR、ASR、NOT、CLC、STC、EI、DI、JRS、JRNS、JMPR。
B組:基本指令JMPA、LDRR、STRR、PUSH、POP、PUSHF、POPF、MVRD、IN、OUT、RET。
C組:擴展指令CALR、LDRA、STRA、LDRX、STRX。
D組:基本指令CALA;擴展指令IRET。
說明:
①A組指令完成的是通用寄存器之間的數據運算或傳送,在取指之后可一步完成。
②B組指令完成的是一次內存或I/O讀、寫操作,在取指之后可兩步完成,第一步把要使用的地址傳送到地址寄存器ARH、ARL中,第二步執行內存或I/O讀、寫操作。
③C組指令在取指之后可三步完成,其中CALR指令在用兩步讀、寫內存之后,第三步執行寄存器之間的數據傳送;而其他指令在第一步置地址寄存器ARH、ARL,第二步讀內存(即取地址操作數)、計算內存地址、置地址寄存器ARH、ARL,第三步讀、寫內存。
④D組指令完成的是兩次讀、寫內存操作,在取指之后可四步完成。
2.指令格式
TEC-2008教學機是16位機,實現29條基本指令,用于編寫教學機的監控程序和支持簡單的匯編語言程序設計。同時保留了19條擴展指令,供學生在教學實驗中完成對這些指令的設計與調試。16位教學機的指令格式,支持單字和雙字指令,第一個指令字的高8位是指令操作碼字段,低8位和雙字指令的第二個指令字是操作數、地址字段,分別有3種用法,如圖2-2所示。

圖2-2 TEC-2008指令格式示意圖
這8位指令操作碼(記作“IR15~IR8”),含義如下:
①IR15、IR14用于區分指令組:0X表示A組,10表示B組,11表示C、D組,C、D組的區分還要用IR11,IR11=0為C組,IR11=1為D組。
②IR13用于區分基本指令和擴展指令:基本指令該位為0,擴展指令該位為1。
③IR12用于簡化控制器實現,其值恒為0。
④IR11~IR8用于區分同一指令組中的不同指令。
16位機根據指令字長、操作數不同可劃分為如下5種指令格式:
(1)單字、無操作數指令:
格式:

基本指令:
PSHF;狀態標志(C、Z、V、S、P1、P0)入棧
POPF;彈出棧頂數據送狀態標志寄存器
RET;子程序返回
擴展指令:
CLC;清進位標志位C=0
STC;置進位標志位C=1
EI;開中斷,置中斷允許位INTE=1
DI;關中斷,置中斷允許位INTE=0
IRET;中斷返回
(2)單字、單操作數指令:
格式:

基本指令:
DEC DR;DR←DR-1
INC DR;DR←DR+1
SHL DR;DR邏輯左移,最低位補0,最高位移入C
SHR DR;DR邏輯右移,最高位補0,最低位移入C
JR OFFSET;無條件跳轉到ADR,ADR=原PC值+OFFSET
JRC OFFSET;當C=1時,跳轉到ADR,ADR=原PC值+OFFSET
JRNC OFFSET;當C=0時,跳轉到ADR,ADR=原PC值+OFFSET
JRZ OFFSET;當Z=1時,跳轉到ADR,ADR=原PC值+OFFSET
JRNZ OFFSET;當Z=0時,跳轉到ADR,ADR=原PC值+OFFSET
IN I/O PORT;R0←[I/O PORT],從外設I/O PORT端口讀入數據到R0
OUT I/O PORT;[I/O PORT]←R0,將R0中的數據寫入外設I/O PORT端口
PUSH SR;SR入棧
POP DR;彈出棧頂數據送DR
擴展指令:
RCL DR;DR與C循環左移,C移入最低位,最高位移入C
RCR DR;DR與C循環右移,C移入最高位,最低位移入C
ASR DR;DR算術右移,最高位保持不變,最低位移入C
NOT DR;DR求反,即DR←/DR
JMPR SR;無條件跳轉到SR指向的地址
CALR SR;調用SR指向的子程序
JRS OFFSET;當S=1時,跳轉到ADR,ADR=原PC值+OFFSET
JRNS OFFSET;當S=0時,跳轉到ADR,ADR=原PC值+OFFSET
(3)單字、雙操作數指令:
格式:

基本指令:
ADD DR,SR;DR←DR+SR
SUB DR,SR;DR←DR-SR
AND DR,SR;DR←DR and SR
CMP DR,SR;DR-SR
XOR DR,SR;DR←DR xor SR
TEST DR,SR;DR and SR
OR DR,SR;DR←DR or SR
MVRR DR,SR;DR←SR
LDRR DR,[SR];DR←[SR]
STRR [DR],SR;[DR]←SR
擴展指令:
ADC DR,SR;DR←DR+SR+C
SBB DR,SR;DR←DR-SR-C
(4)雙字、單操作數指令:
格式:

基本指令:
JMPA ADR;無條件跳轉到地址ADR
CALA ADR;調用首地址在ADR的子程序
(5)雙字、雙操作數指令:
格式1:

基本指令:MVRD DR,DATA;DR←DATA擴展指令:LDRA DR,[ADR];DR←[ADR]STRA [ADR],SR;[ADR]←SR格式2:

擴展指令:
LDRX DR,OFFSET[SR];DR←[OFFSET+SR]
STRX DR,OFFSET[SR];[OFFSET+SR]←[DR]
- Windows Server 2019 Cookbook
- Implementing Cisco UCS Solutions
- PLC控制程序精編108例
- BPEL and Java Cookbook
- 計算機系統開發與優化實戰
- Python基礎教程(第3版)
- 新手學電腦從入門到精通(Windows 10+Office 2016版)
- Docker+Kubernetes應用開發與快速上云
- Linux就該這么學
- Delphi Programming Projects
- Linux內核設計的藝術:圖解Linux操作系統架構設計與實現原理
- RHCSARHCE 紅帽Linux認證學習指南(第7版)EX200 & EX300
- 寫給架構師的Linux實踐:設計并實現基于Linux的IT解決方案
- Cassandra 3.x High Availability(Second Edition)
- 統信UOS應用開發進階教程