JR CND,ADR;条件满足时相对转移到ADR,ADR为原PC值+位移量
通过下列程序来理解相对条件转移、相对无条件转移如何翻译成机器码。
??
1FF0:MOV R0,R1 ??
1FFF:CMP R8,R9 2000: JR NZ,1FF0 2001:ADD R10,R9
??
2010: JR 2080 2011: AND R10,R9 ??
2080: ADD R8,R9 ?? 第二种格式:
15 10 9 8
操作码 CND 7
不用 4 3
SR 0
察看附录1 各条指令的操作码及微程序入口地址表格可得机器码为101000××,与CND无关。位移量为2080-2010=70H=111 0000B,其8位补码为0111 0000B,即F0H,因此该机器指令为A070H。 察看附录1 各条指令的操作码及微程序入口地址表格可得机器码为10011CND,因为判断条件为NZ,所以CND为001。位移量为1FF0-2000= -10H=-001 0000B,其8位补码为1111 0000B,即F0H,因此该机器指令为99F0H。 通过通用寄存器给出转移地址的转移指令。 JP SR;无条件转SR所指的地址
JP CND,SR;当条件满足时转SR所指的地址
第三种格式:
15 10 操作码 9 8 CND 7 不用 ADR 4 3 不用 0 按绝对地址实现的转移指令
JP ADR;无条件转移到ADR地址; JP CND,ADR;当条件满足时转移到ADR。
通过下列程序来理解绝对条件转移、绝对无条件转移如何翻译成机器码。
??
0FF0:MOV R0,R1
11
??
1FFF:CMP R8,R9 2000: JP Z,0FF0 2002: ADD R10,R12 ??
2008: JP 2080 200A:XOR R9,R8 ?? ??
2080: ADD R8,R9 ??
(6)子程序调用指令 两种格式,共2条。 格式一:
15 10 9 8
操作码 不用 7
不用 4 3
SR 0
察看附录1 各条指令的操作码及微程序入口地址表格可得机器码为11000CND,因为判断条件为Z,所以CND为101。转移地址为0FF0,该机器指令为1100 0101 ×××× ××××B 和0000 1111 1111 0000 B,即C500H 0FF0H,该指令占2个字。 察看附录1 各条指令的操作码及微程序入口地址表格可得机器码为110010××,与CND无关。转移地址为2080,因此该机器指令为C800H 2080H,占2个字。
CALL SR;调用SR指明的子程序,即SP←SP-1、[SP]←PC、PC←SR。 格式二:
15 10 操作码 9 8 7不用 不用 ADR 4 3 不用 0 CALL ADR;调用通过ADR指明的子程序,即SP←SP-1、[SP]← PC、PC←ADR。 汇编语言指令 CALL 1800 的机器码为 1100 11×× ×××× ×××× B 0001 1000 0000 0000B,即CC00H 1800H,占2个字。
2.2 按功能分类
按实现的功能划分,可以把指令划分为5类: 算逻指令,共19条: NOT DR;
INC DR;
DEC DR; ADD DR,SR;
AND DR,SR; SUB DR,SR; ADC DR,SR; OR DR,SR;
12
SBB DR,SR; CMP DR,SR; XOR DR,SR; TEST DR,SR; ASR DR; RCR DR;
SHL DR; RCL DR; SHR SR; MUL SR;
DIV SR
传送指令,共12条: MOV DR,SR;
MOV DR,DATA; MOV DR,DATA[SR];
MOV DR,[SR]; MOV DR,[ADR]; MOV DATA[SR],DR; MOV [DR],SR;
MOV [ADR],SR; PSHF;
PUSH DR; POPF; POP DR 入/出指令,共2条:
IN PORT; OUT PORT
控制类指令,共17条(每条转移指令按两条指令计算):
JR ADR; JP SR; JP ADR; JR CND,ADR; JP CND,SR; JP CND,ADR; CALL SR; CALL ADR; RET; IRET; EI; DI; STC; CLS; 其它指令,共3条:
NOP; LDMC; HALT;
3.TEC-2机汇编程序设计简介
汇编语言程序有顺序、循环、分支和子程序四种结构。限于篇幅,在此以实例讲解各种结构,有兴趣的同学可参考其它书籍,进一步学习汇编语言的程序设计方法。
3.1 顺序结构
例1 将内存900单元的内容乘以10,存放到901单元中,不能用乘法。
MOV MOV ADD ADD 共九次 MOV MOV SHL MOV
[901],R0 R0,[900] R0 R1,R0
用下述程序同样可实现上述功能。
R0,[900] R1,R0 R0,R1 R0,R1
13
SHL SHL R0 R0
ADD R1,R0 MOV [901],R1
如果可以用乘法,下述程序可实现上述功能。
MOV MOV MUL MOV
R1,0A R2,[900] R2
[901],R1
3.2 条件分支结构
例2 将900、901单元中较大的一个数送入902单元(无符号数)。
MOV
MOV INC MOV INC CMP JP MOV JR LP1: MOV LP2: ?? 3.3 循环结构
例3求内存900~910单元的累加和,将结果存入920单元中。
MOV R0,0
MOV MOV
LP1: MOV
ADD
INC CMP JR
R1,900 R3,911 R2,[R1] R0,R2 R1
R1,R3 NZ,LP1 R0,900 R1,[R0] R0 R2,[R0] R0
R1,R2 NC,LP1
[R0],R2
LP2 ;初学汇编语言的同学要特别注意该条语句的作用 [902],R1
MOV [920],R0
例4 用循环结构实现例1。
MOV
R1,[900]
14
MOV MOV LP:ADD DEC JP MOV 3.4 子程序结构
R2,0A R0,0 R0,R1 R2 NZ,LP [901],R0
例5将900~910单元中的奇数加10,偶数加20。
MOV MOV MOV
INC CMP
JR ?? SUB1:MOV TEST JR ADD JP LP2: ADD LP3: MOV
RET
TEC-2系统提供的部分子程序如下表1.2.2所示:
例如 CALL 005A,用于输入一个字符到R0的低字节。
通过上述实例,可以看到汇编语言程序是由顺序、循环、分支和子程序四种结构组合而成的,并不是一种结构的简单应用。
R2,[R0] R2,R3 Z,LP2 R2,10 LP3 R2,20 [R0],R2 R0,900 R1,910 R3,1 R0 R1,R0 NC,LP1
LP1: CALL SUB1
4.学习汇编语言的目的
(1)对TEC-2机每条指令的格式、功能及用途要有全面地了解,为学习计算机控制器设计,即微程序设计打牢基础。
(2)调试新指令的微程序,做内存扩展实验,做各种入/出接口实验,都要用到相应的
15