指令操作码由8位组成(记作“IR15~IR8”),各位的控制作用有所不同: (1) IR15、IR14用于区分指令组:0X表示A组,10表示B组,11表示C、D组; 还要用IR11区分C、D组:IRH11=0为C组,IRH11=1为D组。
(2) IR13用于区分基本和扩展指令:IRH13=0为基本指令,IRH13=1为扩展指令。 (3) IR12用于简化控制器实现,暂定该位的值均为0。 (4) IR11~IR8用于区分同一指令组中的不同指令。
按不同的分类标准,可以把16位机的指令划分成不同的指令组,例如: 从指令长度区分,有单字指令和双字指令,也允许定义与使用3字指令。 从操作数的个数区分,有双操作数指令、单操作数指令和无操作数指令。
从使用的寻址方式区分,有采用寄存器寻址、寄存器间接寻址、立即数寻址、直接寻址、变址寻址、相对寻址、堆栈寻址等多种基本寻址方式的不同类别指令。
从指令功能区分,有算术和逻辑运算类指令、读写内存类指令、输入/输出类指令、转 移指令、子程序调用和返回类指令,还有传送、移位、置进位标志和清进位标志等指令。 依照指令的执行步骤,可以把教学计算机的指令划分为如下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、CI、JRS、JRNS、JMPR B组:基本指令JMPA、LDRR、STRR、PUSH、POP、PSHF、POPF、MVRD、IN、OUT、RET
C组:扩展指令CALR、LDRA、STRA、LDRX、STRX D组:基本指令CALA 扩展指令IRET
这种分类办法,是为了突出指令执行步骤的划分结果,有利于讲解控制器设计技术。 A组指令完成的是通用寄存器之间的数据运算或传送,或其它几项特殊的操作,在取指 之后可一步完成。
B组指令完成的是一次内存或I/O读、写操作,在取指之后可两步完成,第一步把要使用的地址传送到地址寄存器AR中,第二步执行内存或I/O读、写操作。
C组指令在取指之后可三步完成,其中CALR指令在用两步完成一次写内存之后,第三步执行寄存器之间的数据传送;而其它指令在第一步置地址寄存器AR,第二步读内存(即取得一个内存单元的地址)并传送到地址寄存器AR,第三步执行另外一次读、写内存的操
9
作。
D组指令完成的是两次读、写内存操作,在取指之后可四步完成。
十六位的教学机系统,实现了上面4组中的29条基本指令,用于支持教学机的监控程序和简单的汇编语言程序设计。保留了其余19条扩展指令,供学生在教学实验中进行扩展,即完成对这些指令的设计与调试,当然,还可以扩展另外一些指令。
为了支持汇编语言程序设计,每一条指令分配了一个汇编语句名,其命名规则是: 用一个英文单词或其缩写形式(2~4个字母)给出一个汇编语句名,例如ADD、SUB、MVRR、MVRD、JR、JMPA、STRX 等。
其中的1~2个字母可能涉及到操作数寻址方式,具体规定如下:
用R代表寄存器寻址,例如ADD R0,R1 语句表示R0←R0+R1;MVRR R0,R1 语句表示把 寄存器R1的内容传送到寄存器R0;在R字母两侧加上方括号,代表寄存器间接寻址,例如 STRR [R8],R9 语句表示把R9的内容传送到以寄存器R8的内容为地址的内存单元之中; 用D表示立即数寻址,例如MVRD R3,1234语句表示R0←立即数1234;
用X表示变址寻址,例如LDRX R1,12[R2]语句表示把变址寄存器R2的内容与变址偏移量12 相加作为内存地址,进行读操作,读出的数据传送的寄存器R1;
用A表示直接地址寻址,例如JMPA 2008语句表示转移到2008 单元之处, STRA [2000], R2 语句表示把R2 的内容写入到地址为2000 的内存单元之中。
二、基本指令汇总表
10
表1.2.1 基本指令汇总表
注:① 表中CZVS 一列,* 表示对应的状态位在该指令执行后会被重置; · 表示对应状态位在该指令执行后不会被修改。
② 运算器芯片中有16 个通用寄存器(累加器)R0~R15,其中: R4 用作16 位的堆栈指针SP; R5 用作16 位的程序计数器PC;
其余寄存器用作通用寄存器,即多数双操作数指令和单操作数指令中的DR、SR。
11
三、 扩展指令汇总表
表1.2.2 扩展指令汇总表
注:① 表中CZVS 一列,* 表示对应的状态位在该指令执行后会被重置;
· 表示对应状态位在该指令执行后不会被修改。
② 扩展指令的功能、格式、操作码和操作数地址字段的确定,留给同学自己设计。表中给出的只是
可能的一种选择,但同学们一定要认识到,这里的基本指令和扩展指令共同构成教学计算机的完整的指令系统,彼此需要协调,至少不能有冲突。
§1.3 TEC-XP16机运算器部件
运算器是计算机硬件系统传统的5大功能部件之一,承担执行运算和暂存运算数据的功
12
能,通常由执行算术逻辑运算功能的ALU线路、暂存参加ALU运算的数据和中间运算结果的通用寄存器组、支持乘除法运算的专用寄存器三部分组成,三个部分之间通过多路选择器线路实现连接,从而构成一个完整的运算器部件。
TEC-XP16教学计算机的运算器部件,主体部分由4片4位长度的位片结构的运算器芯片Am2901组成,每片Am2901可以接收来自内部总线IB的4位输入数据,其4位输出都直接送到地址寄存器AR的不同字段(AR不属于运算器的组成部分,图中用虚线框表示),并且经过支持三态功能的开关门电路送到内部总线IB。还要使用MACH芯片内部的部分电路提供ALU最低位的进位输入信号和最高、最低位的移位输入信号,使用一片GAL20V8实现4位的标志位寄存器FLAG,接收ALU输出的4个标志位信号和来自内存堆栈区的4位数据(用于恢复现场状态信息),FLAG的4位输出可以经过一片带支持三态功能的开关门电路送到内部总线IB,用于保存现场状态信息到堆栈区。教学机运算器部件的组成线路和信息连接关系如图1.3.1所示。
图1.3.1 运算器组成线路和信息连接关系
运算器部件的教学实验,要在教学计算机主板上进行,既可以在脱机方式下完成,也可 以在联机方式下完成。
13