若没有中断请求,则执行A5H微指令。它要依据功能开关FS3的状态,检查是连续执行程序(FS1~FS4为1010或1110)还是单条指令方式执行程序(FS1~FS4为1100),并完成PC内容送地址寄存器,保留PC值到IP中。若为连续执行时,则转回19H进入下一条指令的取指过程。
(2)TEC-2机53条基本指令的微程序总体结构
下面看一看TEC-2机53条基本指令的微程序的总体结构。
① 从00H~15H这16条微指令,用于判别TEC-2机上3个功能开关FSl、FS2、FS3的位置状态,以决定TEC-2机的运行方式,具体规定在前面已给出,并表示在TEC-2机的简明操作卡上。这包括运行微程序、装入微码、存储器读写(包括在监控命令支持下读写或用开关、按钮方式读写),控制程序运行的方式(单步还是连续),运行程序的首地址等。前面还以FS1、FS2、FS3处于101,且FS4处于0状态为例,讲解了这里有关的几条微指令的功能与运行次序。
② 17H~18H两条微指令用于加电后启动监控程序,即把0地址值送入PC,PC值送地址寄存器,做好读取头一条指令的准备工作。
③ 19H这条微指令完成取指,并实现PC值增量。这条微指令公用于所有指令,是所有指令必须首先完成的共同操作,它与指令的操作码无关。1AH微指令,实现按新取来的指令的操作码找到实现该条指令功能的微程序段的入口地址,是接在取指后必须完成的一项操作。
④ 1CH~A3H这些微指令用于实现TEC-2机53条基本指令的执行功能。每一条机器指令用l条或多条微指令实现,每条指令都有各自的一个微程序段入口地址。在前边我们已具体看了几条指令,诸如ADD、ADC、SUB、SBB的执行过程。
⑤ A4H~ABH这几条微指令用于在每条指令结束后,判有无中断请求,是连续还是单步执行程序。A4H还用于保存状态寄存器到Q。有中断请求时,转向由ADH~B6H实现的中断响应功能。无中断请求,则完成PC→AR,为顺序执行或转移取下一条指令做好准备。A5H与18H两条微指令的功能有些类似,差别在于,18H在初始加电后准备监控程序的首地址,A5H是执行完一条指令后,准备下一条指令的地址。A5H还要判连续还是单步执行程序,即判FS3功能开关处于1还是0状态。连续时直接转19H完成取指,单步执行时,用下边的几条微指令处理等待,即等用户按下STEP键。注意,此时FSl、FS2、FS3必须处于101的状态,否则无法结束等待状态。
⑥ ADH~B6H完成中断响应,包括处理机状态入栈,中断入口地址(由中断优先级拼接固定的高位地址形成,参见逻辑图纸)送进PC等。中断实验中有更详细些的说明。
36
⑦ B8H~BAH 3条微指令是手工装入微码和写存储器用到的等待微子程序;BCH~BEH是手动读存储器用到的等待微子程序。
有了上述说明,我们给出当FS1~FS4为1010时,机器为从0地址连续执行状态,在无中断请求的情况下,整个微程序的流程图(如下图1.5.2所示), 并对一段汇编语言程序的微程序执行过程进行分析。
下述微程序流程图1.5.2中A5H、19H的功能是取指令,1AH类似于分析指令,1CH~A3H是执行指令。
现在假设在内存单元800H处开始存放如下表1.5.6所示的程序段和数据,并且(PC)=0800H、(R11)=700H。下面逐条分析微指令的执行过程。
→8CH
NOP
→1CH
ADD DR,SR
→1EH
ADC DR,SR 00H→10H→11H→17H→18H→19H→1AH→→32H→33H→27H MOV DR,DATA[SR]
循环未结束
………… 3CH →38H→39H→3AH→3BH→→3EH→3DH
循环结束
MUL SR
循环未结束
……
→78H→→79H
JR CND,ADR →……………
A5H←A4H
图 1.5.2 微程序的流程图
37
表 1.5.6
地址 …… 07F0H …… 0800H 0801H 0802H 0803H 0804H 0805H …… 0820H 机器码或数据 …… 0CAB …… 0489 38AB MOV R10,120[R11] 0120 9DED 4003 …… …… 0AB0 JR Z,07F0 MUL R3 ……… ……… …… 汇编指令 …… SUB R10,R11 …… ADD R8,R9 我们从(μPC)=A5H开始分析,分析过程见下表1.5.7,在分析栏中给出了主要的分析要点,比较详细的分析过程,是通过仔细分析56位微指令各字段的含义,确定其具有的功能。
表 1.5.7
微指令地址 微指令分析及功能描述 寄存器μPC 微指令 A5H 功能 寄存器的值 微指令 19H 功能 寄存器的值 微指令 功能 1AH 分析 IR15~IR10作为地址01H输入到MAPROM,读出1CH,作为下条微指令的地址 06 43 80 B0 C5 60 02 CI3~CI0=3 PC→AR,PC→IP,CC#=/FS3; FS3=1连续执行,FS3=0单步执行 (μPC)= 19H (AR)=0800H,(IP)= 0800H 00 0E 00 30 B0 54 01 CI3~CI0=14 PC+1→PC,MEM→IR;取指令到IR寄存器 (μPC)= 1AH (PC)=0801H,(IR)= 0489H 00 02 00 90 80 00 00 CI3~CI0=2 产生/MAP,转入相应微程序入口 (μPC)= 1CH 38
微指令 功能 1CH 分析 微指令 A4H 功能 分析 微指令 A5H 功能 寄存器的值 微指令 19H 功能 寄存器的值 微指令 功能 1AH 分析 29 03 01 B0 90 00 88 CI3~CI0=3 SR+DR→DR,CC#=0 (μPC)= A4H Am2901的A、B口地址来自IR3~IR0、IR7~IR4;其它控制位的作用请察看TEC-2机的简明操作卡 2B 43 C0 80 F0 00 30 CI3~CI0=3 STR→Q,CC#=INT#;保存状态于Q寄存器 (μPC)= A5H DC1选择/FTOIB,Am2901将D输入到Q。 06 43 80 B0 C5 60 02 CI3~CI0=3 PC→AR,PC→IP,CC#=/FS3; FS3=1连续执行,FS3=0单步执行 (μPC)= 19H (AR)=0801H,(IP)= 0801H 00 0E 00 30 B0 54 01 CI3~CI0=14 PC+1→PC,MEM→IR;取指令到IR寄存器 (μPC)= 1AH (PC)=0802H,(IR)=38ABH 00 02 00 90 80 00 00 CI3~CI0=2 产生/MAP,转入相应微程序入口 (μPC)=32H IR15~IR10作为地址0EH输入到MAPROM,读出32H,作为下条微指令的地址 微指令 功能 32H 分析 00 0E 00 A0 B5 54 02 CI3~CI0=14 PC→AR,PC+1→PC (μPC)= 33H (AR)=0802H,(PC)= 0803H; 特别注意A口、B口地址均选为5,且MI8~MI6的值为010 微指令 功能 33H 分析 09 C3 00 10 D0 00 8A CI3~CI0=3 MEM+SR→AR (μPC)= 27H 此处 (0802)+R11→AR,也就是(AR)=120H+700H=820H; 此时(AR)=0820H,(PC)= 0803H; 微指令 功能 27H 分析 29 03 00 30 F0 00 88 CI3~CI0=3 MEM→DR; (μPC)= A4H 根据地址寄存器的内容读内存(AR)=0820H,(820)=0AB0H,(R10)=0AB0H; 39
微指令 A4H 功能 分析 微指令 A5H 功能 2B 43 C0 80 F0 00 30 CI3~CI0=3 STR→Q,CC#=INT#;保存状态于Q寄存器 (μPC)= A5H DC1选择/FTOIB,Am2901将D输入到Q。 06 43 80 B0 C5 60 02 CI3~CI0=3 PC→AR,PC→IP,CC#=/FS3; FS3=1连续执行,FS3=0单步执行 (μPC)= 19H 寄存器的值 微指令 19H 功能 寄存器的值 微指令 功能 1AH 分析 (AR)=0803H,(IP)= 0803H 00 0E 00 30 B0 54 01 CI3~CI0=14 PC+1→PC,MEM→IR;取指令到IR寄存器 (μPC)= 1AH (PC)=0804H,(IR)=9DEDH 00 02 00 90 80 00 00 CI3~CI0=2 /MAP 转入相应微程序入口 (μPC)=78H IR15~IR10作为地址10011X输入到MAPROM,IR10不论是0还是1,均读出78H,作为下条微指令的地址。 微指令 29 03 E0 90 80 00 00 CI3~CI0=3 测试转移条件是否成立,不成立不修改PC,(μPC)=A4H,此时汇编功能 语言指令顺序执行;测试条件成立,修改PC,(μPC)=79H,此时汇编语言指令转移执行; 78H IR10~IR8=101作为CND的测试条件,判断Z; ① Z=0,CC#=0,CI3~CI0=3,微指令转移,选择本条微指令的二进制分析 高10位作为下条微指令的地址,即290H=0010 1001 0000B,去掉二进制地址最后两个00后,微指令的后继地址为00 1010 0100B,(μPC)=A4H,此时汇编语言指令顺序执行; ② Z=1,CC#=1,CI3~CI0=3,微指令顺序执行,(μPC)=79H; 微指令 功能 29 03 00 B0 D6 50 20 CI3~CI0=3 修改PC,此时汇编语言指令转移执行; IP+OFFSET→PC,OFFSET的值为指令寄存器中的IR7~IR0,即EDH,分析 是一个8位补码,将OFFSET表示的8位补码进行符号扩展,得到16位的补码FFEDH,则IP+OFFSET=0803H+FFEDH=07F0H,即(PC)=07F0H,程序转移到07F0H处执行,实现了汇编语言指令的转移执行。 79H
40