官术网_书友最值得收藏!

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]

主站蜘蛛池模板: 周至县| 石景山区| 芷江| 琼中| 玉林市| 旅游| 石林| 青龙| 萨嘎县| 萨嘎县| 金阳县| 平度市| 灌云县| 克什克腾旗| 博罗县| 安义县| 肃宁县| 尖扎县| 余江县| 米林县| 老河口市| 星子县| 威宁| 凤台县| 渝中区| 乡宁县| 且末县| 高邮市| 淅川县| 威远县| 栾城县| 丰城市| 雅安市| 巧家县| 彭阳县| 澎湖县| 静乐县| 繁昌县| 湘阴县| 龙口市| 开化县|