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,第三步执行另外一次读、写内存的操作。
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的内存单元之中。
§1.2.1 基本指令汇总表
1