Transcript Document

第4章
指令、指令系统和控制器部件
1
控制器的作用:
向整机每个部件(包括控制器本身)
提供协同运行所需的控制信号
计算机最本质的功能 :
连续执行指令,而每一条指令往往
分成几个步骤来完成。
2
控制器的基本功能 :
依据当前正在执行的指令和它所处
的执行步骤,形成并提供在这一时刻整
机各部件要用到的控制信号。
执行一条指令要经过读取指令、分
析指令、执行指令三个阶段,控制器要
保证按程序设定的指令运行次序,自动
地连续执行指令序列。
3
控制器的组成:
① 程序计数器PC 提供指令在内存中的地址,并接受下一条
要执行的指令的地址。
② 指令寄存器IR 保存指令本身的信息。
③ 脉冲源和启停控制逻辑、步骤标记线路
给出每条指令的各执行步骤的相对次序关系
④ 控制信号产生部件
提供在指令执行各步骤,当前各部件要用到的控制信号
微程序控制器
控制器的分类
组合逻辑控制器(硬布线控制器)
控制器组成及其在整机中的地位(见下页)
4
主振
控制条件
控制
下
地
址
启停
映射
存储器
IR
微程序
方案的
控制器
PC
….
微指令寄存器
数据总线
控制总线
地址总线
输出
输入
主
设备
设备
存
地
址
寄
存
器
运算器
部件
5
主振
时序控制
译码
信号
时
序
控制条件
形成部件
IR
硬布线
方案的
控制器
PC
….
启停
控制器信号
数据总线
控制总线
地址总线
输出
输入
主
设备
设备
存
地
址
寄
存
器
运算器
部件
6
4.1 指令格式和指令系统概述
硬件
计算机系统
CPU
主存
输入/输出设备
系统软件
软件
用户程序软件
指令代码(机器指令)——
的软件程序
计算机能直接识别和运行
计算机指令——
是用户使用计算机与计算机运行的最小功能单位。是一台
计算机支持的全部指令构成该机的指令系统。
指令系统直接与计算机的性能和硬件结构的复杂程度密切
相关。
7
设计与评价指令系统应考虑的方面:
(1)指令系统的完备性,常用指令齐全,编程方便;
(2)指令系统的高效性,指令占用内存空间少,运
行速度快;
(3)指令系统的规整性,指令和数据使用规则统一
简单,易学易记;
(4)指令系统的兼容性,同一系列低档计算机的程序能
在高档机上直接运行。
8
2000年7月试题 二、1.在设计指令系统时,
通常应从哪4个方面考虑?
答:(1)指令系统的完备性,常用指令齐全,
编程方便;
(2)指令系统的高效性,程序占用内存空间
少,运行速度快。
(3)指令系统的规整性,指令和数据使用规
则统一简化,易学易记;
(4)指令系统的兼容性,同一系列的低档计
算机的程序能放到新的高档机上直接运行。
9
指令格式
操作码
地址码
操作码:指明本条指令的操作功能。
例如:算术加运算,算术减运算
逻辑与运算,逻辑或运算
读内存,写内存
程序转移,子程序调用和返回
地址码:指明被操作的信息(指令数据)的地址
包括:操作数的地址,运算结果的保存地址
程序的转移地址,子程序的入口地址
10
4.1.1 操作码的组织与编码
三种编码方案:
(1)定长的操作码
(2)变长的操作码
(3)操作码与操作数地址交叉
11
(1)定长的操作码
用指令高位部分表示操作码
例如8位,可有256个编码状态,表
示256条指令
应用于字长位数多的计算机
优点:简化计算机的硬件设计,提
高指令译码和识别速度
12
(2)变长的操作码
不同的指令操作码长度不同
对常用的、操作码地址位数多的指
令,操作码位数少; 对操作码位数少的
指令,操作码的位数可多;无操作数指
令,整个指令字均用作操作码,可表示
较多的指令条数。
应用于字长短的计算机。
13
(3)操作码与操作数地址交叉
操作码与操作数地址有所交叉, 不
很常用
14
作业2.1.一条指令通常由哪两部分组成?指令的操作码一般
有哪几种组织形式?各自应用在什么场合?各自的优点是
什么?
答:一条指令通常由操作码和操作数地址组成。
指令的操作码组织形式有定长操作码、变长的操作码和操作码
字段与操作数地址交叉的形式。
定长操作码应用于字位数长的计算机。优点是利于简化计算机
的硬件设计,提高指令译码和识别的速度。缺点是会使操
作数的地址不足。
变长操作码应用于字位数短的计算机。优点是可给操作数地址
留给更多的位数,对操作数位数要求较少的指令分配多几
位操作码,既能表示出比较多的指令条数,又能尽量满足
给出相应的操作数地址要求。
操作码字段与操作数地址交叉的形式比较特殊,不很常用。特
15
点是操作码与表示操作数地址的一些字段交叉。
4.1.2. 操作数的个数、来源、去向和
地址安排
1. 操作数的个数
(1)无操作数指令
(2)单操作数指令
(3)双操作数指令
(4)多操作数指令
16
(1)无操作数指令
用于:
不涉及操作数的地址。如停机指令,空
操作指令,关中断指令;或 约定了操作数的
指令。
(2)单操作数指令
用于:
只用一个操作数的指令,如寄存器内容
加1,减1 ;
约定了某个操作数的指令。如读外设指
令,写外设指令。
约定目的操作数的指令。例如加、减运
算指令约定被加数、被减数在累加器。
17
(3)双操作数指令
用于算术运算和逻辑运算指令。给出目的
操作数和源操作数的地址。目的操作数还保
存运算结果。
(4)多操作数指令(如3个操作数)
分别给出目的操作数、源操作数和运算结
果的地址。
18
2.操作数的来源、去向和地址安排
① 通用寄存器
指令中给出寄存器编号(寄存器名), 通用寄存器的的
数量一般为几个、十几个,为其分配2、3、4、5位表示一
个寄存器。寄存器的内容可以是数据,也可以是操作数的
地址。
② 外设接口中的一个寄存器
用外设编号或I/O端口地址表示,因为外设接口较少,可
以在一个指令中直接给出地址。
③ 内存中的一个存储单元
指令给出存储单元地址,在指令中操作数地址字段给出。
19
4.1.3 指令的分类
按指令完成的功能进行分类
(1)算术和逻辑运算指令
(2)移位操作命令
(3)数据传送指令
(4)转移指令、子程序调用与返回指令
(5)特权指令
(6)其它指令
20
(1)算术和逻辑运算指令
给出算术和逻辑运算的结果,以及结果
的有关特征。
(2)移位操作命令
包括算术移位、逻辑移位、循环移位。
(3)数据传送指令
用于实现通用寄存器之间、通用寄存器
与内存单元之间、内存不同存储单元之间、
通用寄存器与外设接口之间的数据传送功能
21
(4)转移指令、子程序调用与返回指令
用于改变程序中指令的执行次序
无条件转移指令
转移指令
条件转移指令
无条件转移指令——必定执行转移
条件转移指令——根据程序状态字中的C、Z、
V、S的值转移到指定地址
22
子程序调用与返回指令
转入子程序段执行指令,其最后一条指令必定是返回指令,
程序运行结束后,返回到调用指令之后的那条指令继续执行。
一般的转移指令不存在再次转移回来的问题。
(5)特权指令
用于操作系统或其它系统软件的指令,不提供给用户使用
(6)其它指令
如:动态停机指令, 空操作指令, 开中断指令
关中断指令, 堆栈操作指令
用于完成某些特定的处理功能
23
作业2.4.
为读写输入/输出设备,通常有哪几种
常用的方式用以指定被读写的设备?
可以在指令字中用设备编号或设备入
出口地址或设备映像地址(与内存地址
统一编址的一个设备地址编号)来指定
被读写的设备。设备编号或设备入出口
地址位数较少,可以在第一个指令字直
接给出;设备映像地址的处理方案与处
理一个内存单元地址的办法相同。
24
作业2.5. CISC(复杂指令系统计算机)和RISC
(精简指令系统计算机)计算机的指令系统
的区别表现在哪里?它们各自追求的目标是
什么?
答:CISC(复杂指令系统计算机 )和
RISC(精简指令系统计算机)计算机的指令
系统的区别表现在指令系统的复杂程度。前
者追求计算机指令系统的完备,指令条数多,
寻址方式多样化,能直接处理的数据类型多,
能方便编程且能编出功能强的程序。后者追
求精简的指令系统,采用定长指令,有固定
字长,简单的编址、寻址方式,简单而统一
的指令译码,多数指令在单周期内完成等技
术。
25
4.2
寻址方式概述与应用实例
寻址方式是指如何在指令中表示
一个操作数的地址,如何用这种表示得
到操作数或怎样计算出操作数的地址。
形成地址——表示在指令中的操
作数地址;
物理(有效)地址——操作数在
存储器中的存储单元地址。
26
八种寻址方式:
(1) 立即数寻址
(2) 直接寻址
(3) 寄存器寻址、寄存器间接寻址
(4) 变址寻址
(5) 相对寻址
(6) 基地址寻址
(7) 间接寻址
(8) 堆栈寻址
27
1. 立即数寻址
操作数直接给出在指令字中,即指令字中直接给
出的不是操作数地址,而是操作数本身。
主要用法:把一个确定的数据传送到一个通用寄
存器中。
单指令字:
操作码
Ri
立即数
双指令字:
操作码
Ri
立即数
28
2. 直接寻址
在指令的操作码地址字段直接给出操作数在存储器
中的地址
单字指令
操作码
Ri
直接地址
双指令字
操作码
Ri
直接地址
29
(3)寄存器寻址、寄存器间接寻址
寄存器寻址
寄存器中存放操作数,指令中给出寄存器
编号(名字、地址),寄存器寻址在指令中
占用位数少,有利于缩短指令字长度,取数、
保存结果迅速方便,是最基本、最简单的寻
址方式。
30
寄存器间接寻址
寄存器中存放操作数的地址,根据该地址
去读写存储器,形式地址为寄存器编号(名
字)
操作码
Ri
存储器
操作数
操作数的地
址
通用寄存器
31
(4)变址寻址
形式地址为寄存器名(编号)和变址偏移量,
两者之和为操作数地址,用于读写存储器。
操作码
Ri
变址偏移量
存储器
操作数
变址寄存器
通用寄存器
32
(5)相对寻址
形式地址为相对寻址偏移量,该数值与程序计数
器PC的内容相加,得到操作数的地址转移指令的
转移地址。所用寄存器为PC,无需在指令中指定,
相对地址偏移量可正可负。
操作码
变址偏移量
相加
存储器
操作数或指令
程序计数器PC
33
(6)基地址寻址
把程序中所用的地址与一个特定的寄存
器(称为基地址寄存器)的内容相加作为操
作数的地址或指令的地址。
与变址寻址、相对寻址形式上有某些类似
之处。主要用于为多道程序或浮动地址程序
定位存储空间。
基地址寄存器中的值是由系统程序用特权
指令设定的,用户不能在自己的程序中对其
进行修改。
34
(7)间接寻址
形式地址是操作数(或指令)地址的地址。
读写数据需两次访问存储器。
操作码
地址字段
存储器
操作数地址
操作数
35
(8)堆栈寻址
堆栈——是存储器中一块特定的按“后进先出”原则管理
的
存储区,该存储区被读写单元的地址(称为“栈顶”)由一个
特
定的寄存器(称为“堆栈指针”)SP给出的。或者说,SP总
是指
存储器
向栈顶。
栈顶
SP
× ×
× ×
× ×
× ×
堆栈
已入栈
的数据
36
堆栈寻址,通常在形式中给出入栈数据
所在的寄存器名(或编号)或接收出栈数据
的寄存器名(或编号)。指令中不直接给出
内存地址,而默认堆栈指针的内容为存储器
的地址。读写堆栈总是伴随修改堆栈指针的
操作。
数据入栈时,先执行 SP←SP—1 的操
作,使堆栈指针指向一个空的存储单元,然
后再压入数据。
数据出栈时,先将栈顶数据弹出到指定
的寄存器,然后执行 SP ←SP+1,使堆栈指
针SP指向新的栈顶。
37
作业2.2 计算机指令中要用到的操作数一般可来自
哪些部件?如何在指令中表示这些操作数的地址?
通常使用哪些寻址方式?
答:计算机指令中要用到的操作数一般可来自:①
CPU内部的通用寄存器,应在字中给出用的的寄存
器编号(寄存器名);②外围设备(接口)中的一
个寄存器,通常在指令字中用设备编号设备入出端
口地址来表示;③内存储器的一个单元,应在指令
字中给出该存储单元的地址。
通常使用立即数寻址、直接寻址、寄存器寻址、
寄存器间接寻址、变址寻址、相对寻址、基地址寻
址、间接寻址和堆栈寻址等寻址方式。
38
作业2.3.什么是形式地址?简述对变址寻址、相对
寻址、基地址寻址应在指令中给出什么信息?如何
得到相应的实际(有效)地址?各自有什么样的主
要用法?
答:表示在指令中的操作数地址通常称为形式地
址。
变址寻址应在指令中给出个数值(变址偏移量)
与指定的一个寄存器(变址寄存器)编号(寄存器
名)。把变址寄存器中的内容与变址偏移值相加得
到相应的实际地址(操作数地址)。其主要用法是
将变址偏移量作为基准地址,变址寄存器的内容作
为修改量,通过修改寄存器的内容可以访问数组、
表格、字符串等中的不同元素。
39
相对寻址应在指令中给出一个数值(相对
地址偏移量)。相对地址偏移量与程序计数
器PC内容相加之和即为相应的实际地址(操
作数地址或转移指令的地址)。其主要用法
是用作程序转移。
基 地 址 寻 址 应在指令中给出一个寄存器
(基地址寄存器)。基地址寄存器的内容与
程序中所用到的地址相加之和即为相应的实
际地址(操作数的地址或指令的地址)。其
主要用法是为多道程序或浮动地址程序定位
存储器空间。
40
2001年7月试题 二、2
在计算机硬件系统中,在指令的操作
数字段中所表示的内存地址被称为( ),
用它计算出来的送到内存用以访问一个
存储器单元的地址被称为( )。
A. 有效地址 B.内存地址 C.形式地
址 D.文件地址 E.物理地址 F.逻辑
地址 H.指令地址 I.指令地
址 J.CACHE地址
答案:C A
41
模拟试题 二、2 (试题五 二、1)
(8分) 举例说明计算机中常用的四种
寻址方式(寄存器寻址,寄存器间接寻址,
变址寻址,堆栈寻址),从形式地址到得到
操作数的寻址处理过程。
答案:
(1)寄存器寻址,形式地址为寄存器名
(或编号),寄存器中的内容为操作数;
(2)寄存器间接寻址,形式地址为寄
存器名(或编号),寄存器中的内容为操作
数的地址,再读一次内存得到操作数;
42
(3)变址寻址,形式地址为变址寄存器
名(或编号)和变址偏移值,把变址寄存器
中的内容与变址偏移值相加得到操作数的地
址,再读一次内存得到操作数;
(4)堆栈寻址,通常形式地址为将写
入堆栈的、或接收堆栈读出内容的寄存器名
(或编号),指令中不直接给出内存地址,
而是选用默认的堆栈指针寄存器中的内容为
内存地址,读写堆栈总伴有修改堆栈指针的
操作。
43
4.2.2 寻址方式应用举例(了解)
44
4.3 指令系统和汇编语言设计举例
4.3.1 教学计算机的指令系统说明
1 . 确定教学计算机指令系统的原则
(1)尽量少的指令集,指令数目要少,较短的指
令格式,简化的寻址方式,单字节指令为主,每条
指令的广泛内尽量简单。这样可简化结构。减低成
本,容易讲清楚指令系统,实现控制器设计。
(2)指令系统有一定的完备程度,有较好的典型
性, 指令格式适当规范,指令分类合理,指令执
行步骤容易理解。
(3)适当的扩充性,能让学生通过实验扩展新的
指令。
(4)符合教学计算机的特定要求。对16位机,操
作码为固定长度,寄存器寻址使用4位的形式地址。
45
2005年1月试题
1.简单说明确定16位教学机指令系统的原则。
答:
(1)尽可能小的指令集,指令数目要适当地少,
较短的指令格式,简化的寻址方式,单字指令
为主,每条指令的功能要尽可能地简单。
(2)令系统要有一定的完备程度,有较好的典
型性。
(3)适当的扩充性。
(4)符合教学计算机的特定要求。
46
作业2.7. 8位的教学计算机系统的指令的特
点是什么?为什么必须采用操作码扩展技术?
为什么只能用4个通用寄存器?为什么要采
用16位的地址总线?
8位的教学计算机系统的指令的特点是:
指令集较小;指令系统有一定的完备程度和
较好的典型性;有适当的扩展性;指令的操
作码部分选用逐位扩展技术。
采用操作码扩展技术,可结合所选用的运
算器部件Am2901芯片内含的16个通用寄存器
的特点,可以在指令中使用多个专用的寄存
器,以便最大程度地缩短指令字的长度,简
化指令流程设计。
47
在双操作数指令中,由于受到指令字长度
的限制,只能为每个寄存器分配2位地址编
码,故只能使用4个通用寄存器和4位操作码。
其余的寄存器用作专用寄存器,如程序计数
器PC、堆栈指针SP、16位的内存地址和转移
指令的地址或子程序调用的入口地址。
采用16位的地址总线,可使系统有较大
的存储空间,使存储空间达到64k。
48
2. 16位TEC-2000机的指令系统说明与指令分类
单字节指令
按指令长度分类 双字节指令
三字节指令
按操作数个数分类
按寻址方式分类
单操作数指令
双操作数指令
无操作数指令
寄存器寻址
寄存器间址
立即数寻址
直接寻址
相对寻址
堆栈寻址
49
算术和逻辑运算 类指令
读写内存类指令
输入/ 输出类指令
转移指令
按指令功能分类
子程序调用/ 返回指令
数据传送指令
移位指令
置进位标志/清进位标志指令
50
按指令功能和它们的执行步骤,可把指令分为4组
A组指令:基本指令有 ADD,SUB,AND,OR,
XOR,TEST,MVRR,,DEC,INC,SHL,
SHR,JR,JRC,JRNC,JRZ,JRNZ
扩展指令有ADC,SBB,RCL,RCR,ASR,
NOT,CLC,STC,EI,DI,TRS,JRNS,JMPS,
JMPR
B组指令:基本指令有JMPA。LDRR,STRR,
PUSH,POP,PSHF,POPF,MVRD,IN,OUT,
RET
C组指令:扩展指令有CALR,LDRA,STRA,
LDRX,STRX
D组指令:基本指令有CALA
扩展指令有IRET
51
A组指令完成的是通用寄存器之间的数据运算或传送
或其他几项,取指令和可一步完成。
B组指令完成的是一次内存或I/O读写操作,取指以
后分两步完成,第一步把要使用的地址传送到地
址寄存器AR中,第二步执行内存或I/O读、写操
作。
C组指令在取指以后可分三步完成,其中CALR指令
在用两步完成写内存之后,第三步执行寄存器间
的数据传送;而其他指令是第一步置地址寄存器
AR,第二步读内存(即取地址操作数)并且计算
内存地址再次写入地址寄存器AR,第三步读、写
内存。
D组指令完成的是两次读写内存操作,在取指之后分
52
四步完成。
3. 16位教学机指令汇总表
(1)基本指令
——A组指令
指令格式
汇编语言
操作数
个数
CZVS
功能说明
00000000DRSR
ADD
DR,SR
2
* * * *
DR←DR+SR
00000001DRSR
SUB
DR,SR
2
* * * *
DR←DR-SR
00000010DRSR
AND
DR,SR
2
* * * *
DR←DR∧SR
00000011DRSR
CMP
DR,SR
2
* * * *
DR-SR
00000100DRSR
XOR
DR,SR
2
* * * *
DR←DR⊙SR
00000101DRSR
TEST DR,SR
2
* * * *
DR∧SR
00000110DRSR
OR
DR,SR
2
* * * *
DR←DR∨SR
00000111DRSR
MVRR DR,SR
2
. .
DR←SR
. .
53
3. 16位教学机指令汇总表
(1)基本指令
——A组指令(续)
指令格式
汇编语言
操作数
个数
CZVS
功能说明
00001000DR0000
DEC
DR
1
* * * *
DR←DR-1
00001001DR0000
INC
DR
1
* * * *
DR←DR+1
00001010DR0000
SHL
DR
1
* . . .
DR←DR*2
00001011DR0000
SHR
DR
1
* . . .
DR←DR/2
01000001OFFSET
JR
ADR
1
. . . .
无条件跳转的ADR
01000100OFFSET
JRC
ADR
1
. . . .
C=1 时跳转的ADR
01000101OFFSET
JRNC ADR
1
. . . .
C=0 时跳转的ADR
01000110OFFSET
JRZ
ADR
1
. . . .
Z=1 时跳转的ADR
01000111OFFSET
JRNZ ADR
1
. . . .
Z=0 时跳转的ADR
54
3. 16位教学机指令汇总表
(1)基本指令 ——B组指令
指令格式
汇编语言
操作数
个数
CZVS
功能说明
. . . .
无条件跳转到ADR
2
. . . .
DR←[SR]
I/O PORT
1
. . . .
R0←[I/O,PORT]
10000100 DRSR
STRR [DR],SR
2
. . . .
[DR] ←SR
10000100 00000000
PSHF
0
. . . .
FLAG入栈
10000110 0000SR
PUSH SR
1
. . . .
SR 入栈
10000110 I/O PORT
OUT
I/O POR
1
. . . .
[I/O,PORT] ← R0
10000111 DR0000
POP
DR
1
. . . .
DS ←出栈
10001000 DR0000
DATA(16位)
MVRD DATA
. . . .
DR ←DATA
10001100 00000000
POPF
0
. . . .
FLAG ←出栈
10001111 00000000
RET
0
. . . .
子程序返回
10000000 00000000
ADR(16位)
JMPA ADR
10000001 DRSR
LDRR DR,[SR]
10000010 I/O PORT IN
1
2
55
3. 16位教学机指令汇总表
(1)基本指令 ——D组指令
指令格式
11001110 00000000
ADR(16位)
汇编语言
CALL ADR
操作数
个数
CZVS
功能说明
1
. . . .
调用首地址为ADR
的子程序
说明:
运算器中有16个通用寄存器(累加器)R0~R15,其中:
R4用作16位的堆栈指针SP;
R5用作16位的程序计数器PC;
其余寄存器用作通用寄存器,即有关指令中的DR,SR。
56
3. 16位教学机指令汇总表
(1)扩展指令——A组指令
汇编语言
操作数
个数
CZVS
00100000 DRSR
ADC DR,SR
2
****
DR←DR+SR+C
00100001 DRSR
SBB DR,SR
2
****
DR←DR-SR-C
00100010 DR0000
RCL DR
1
* . . .
DR←DR带进位C循环左移
00101011 DR0000
RCR DR
1
* . . .
DR←DR带进位C循环右移
00101100 DR0000
ASR DR
1
* . . .
DR←DR算术右移
01101101 DR0000
NOT DR
1
****
DR←/DR
01100000 0000SR
JMPR SR
1
. . . .
跳转到SR指明的地址
01100100 OFFSET
JRS ADR
1
. . . .
S=1 跳转到ADR
01100101 OFFSET
JRNS ADR
1
. . . .
S=0 跳转到ADR
01101100 00000000
CLC
0
0 . . .
C=0
01101101 00000000
STC
0
1 . . .
C=1
01101110 00000000
EI
0
. . . .
开中断,INTE ←1
01101111 00000000
DI
0
. . . .
关中断,INTE ←0
指令格式
功能说明
57
3. 16位教学机指令汇总表
(1)扩展指令——C组指令
指令格式
汇编语言
操作
数
个数
CZVS
功能说明
11100000 0000SR
CALR SR
1
. . . .
调用SR指明的子程序
11000100 DR0000
ADR(16位)
LDRA DR,[ADR]
2
. . . .
DR←[ADR]
11100101 DRSR
OFFSET(16位)
LDRX DR,
OFFSET[SR]
2
. . . .
DR←[OFFSETT+SR]
11100110 DRSR
OFFSET(16位)
STRX DR,
OFFSET[SR]
2
11100111 0000SR
ADR(16位)
STRA [ADR],SR
1
. . . .
. . . .
[OFFSETT+SR] ← DR
[ADR] ←SR
D组指令
11101111 0000000
IRET
0
. . . .
中断返回
58
4. 教学计算机的指令格式
16位教学机的指令,支持单字和双字指令,第一
个指令字的高8位是指令操作码字段,低8位和
双指令字的第二个指令字扭送操作数地址字段。
操作码
DR
SR
IO端口地址/相对偏移量
立即数/直接内存地址/变址偏移量
59
(1)8位指令操作码(记作“IR15~IR8)的含义
①IR15、IR14用于区分指令主,0X表示A组,10
表示B组,11表示C、D组;IR11用于区分C、D
组,IR11=0为C组,IR11=1为D组。
②IR13用于区分基本指令和扩展指令,基本指令
为0,扩展指令为1。
③IR12用于简化控制器实现,暂定为0。
④IR10~IR8用于区分同一指令组的不同指令。
60
(2)16位机根据指令字长、操作数不同所划分的5
种指令格式
①单字、无操作数指令
格式:
操作码
0000 0000
基本指令及功能:
PSHF ;状态标志(C、Z、V、S、P1、P0、0、0)入栈。
POPF ;弹出状态标志送状态标志寄存器。
RET ;子程序返回。
扩展指令及其功能:]
CLC
;清进位标志,C=0
STC
;置进位标志,C=1
EI
;开中断,置字段运行标志位INTE=1
DI
;关中断,置字段运行标志位INTE=0
IRET
;中断返回
61
②单字、单操作数指令
格式:
操作码
DR 0000
0000 SR
OFFSET
I/O PORT
基本指令及功能:
DEC DR ;DR←DR-1,置标志位
INC DR ;DR←DR+1,置标志位
SHL DR ;DR逻辑左移,最低位补0,最高位移入C
SH6 DR ;DR逻辑右移,最高位补0,最低位移入C
JR ADR ;无条件跳转到ADR,ADR=PC值+OFFSET
JRC ADR ;当C=1时 跳转到ADR,ADR=PC值+OFFSET
JRNC ADR ;当C=0时 跳转到ADR,ADR=PC值+OFFSET
JRZ ADR ;当Z=1时 跳转到ADR,ADR=PC值+OFFSET
JRNZ ADR ;当Z=0时 跳转到ADR,ADR=PC值+OFFSET
62
②单字、单操作数指令
格式:
操作码
DR 0000
0000 SR
OFFSET
I/O PORT
基本指令及功能:
IN I/O PORT ;R0←[I/O PORT],从I/O端口读入数据到R0低字节
OUT I/O PORT; [I/O PORT] ← R0,R0低字节的数据写入I/O端口
PUSH SR
;入栈
POP DR
;弹出堆栈顶数据送DR
63
②单字、单操作数指令
格式:
DR 0000
0000 SR
OFFSET
I/O PORT
操作码
扩展指令及功能:
RCL DR ;DR与C循环左移,C移入最低位,最高位移入C
C
RCR
DR
DR; DR与C循环右移,C移入最高位,最低位移入C
DR
ASR
C
DR;DR算术右移,最该位保持不变,置低位移入C。
DR
C
64
②单字、单操作数指令
格式:
操作码
DR 0000
0000 SR
OFFSET
I/O PORT
扩展指令及功能:
NOT
JMPR
CALR
JSR
JNSR
DR ;DR求反,即DR←/DR
SR ;无条件跳转到SR指向的地址
SR ;调用SR指向的子程序
ADR ;当S=1时,跳转到ADR,ADR=PC值+OFFSET
ADR ;当S=0时,跳转到ADR,ADR=PC值+OFFSET
65
③单字、双操作数指令
格式:
操作码
DR
SR
基本指令及功能:
ADD DR,SR ;DR←DR+SR,置标志位
SUB DR,SR ;DR←DR-SR,置标志位
AND DR,SR ;DR←DR and SR,置标志位
CMP DR,SR ;DR←DR-SR
XOR DR,SR ;DR←DR xor SR,置标志位
TEST DR,SR ;DR←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
66
③单字、双操作数指令
格式:
操作码
DR
SR
扩展指令及功能:
ADC DR,SR ;DR←DR+SR+C,置标志位
SBB DR,SR ;DR←DR-SR-C,置标志位
67
④双字、单操作数指令
格式:
操作码
0000 0000
ADR
基本指令及功能:
JMPA ADR
CALA ADR
;无条件跳转到地址ADR
;跳转到首地址为ADR的子程序
68
4.3.2 教学计算机的汇编程序设计举例
1.指令功能与在程序中的作用
例1.在显示器屏幕上循环显示95个(包括空格字符)可打印字符的程序。
A2000
;从内存的2000单元开始建立用户的第一个程序
2000 MVRD R1,7E ;向寄存器传送直接数
2002 MVRD R0, 20 ;
2004 OUT 80
;通过串行接口输出R0低位字节内容到显示器屏幕
2005 PUSH R0
;保存R0寄存器的内容到堆栈中
2006 IN
81
;读串行口的状态寄存器的内容到寄存器R0
2007 SHR R0 ;R0寄存器的内容右移一位,最低位的值移入标志位C
2008 JRNC 2006 ;条件转移指令,当标志位C不是1时就转移到2006地址
2009 POP
80 ;从堆栈中恢复R0寄存器的原内容
200A CMP R0,R1 ;比较两个寄存器的内容,若相同置标志位Z=1
200B JRZ
2000
;条件转移指令,当标志位Z=1时,转移到2000地址
200C INC
R0
;R0寄存器内容增加1
200D JR
2004
;无条件转移指令,转移到2000地址
200E RET
;程序结束
69
例2.下面的程序的功能是首先把字符“A”~”F”写到内存的
2031~2036单元,之后再读出来显示在屏幕上。
A2020
2020 MVRD
2022 MVRD
2024 MVRD
2026 INC
2007 INC
2028 STRR
2029 LDRR
202A OUT
202B IN
202C SHR
202D JRNC
202E DEC
202F JRNZ
2030 RET
;从内存的2000单元开始建立用户的第一个程序
R3,06 ;给出写内存操作的次数
R2, 2030 ;
R1,40 ;
R2
;给出写内存操作的内存地址
R1
;给出写内存操作的数据内容(初始字母为“A”)
[R2],R1;写寄存器R1的内容到由R2指定地址的内存单元中
R0,[R2] ;读出内存单元的内容到R0寄存器
80
;通过串行接口输出R0低位字节内容到显示器屏幕
81
;读串行口的状态寄存器的内容到寄存器R0
R0
; R0寄存器的内容右移一位,最低位的值移入标志位C
202B ;条件转移指令,当标志位C不是1时就转移到2006地址
R3
;检查6次写内存操作是否完成
2026 ;未完成开始小一次写内存操作
;程序结束
70
例3.下面的程序的功能是从键盘输入字符送到显示器屏幕上显示,其中使用了子程序
调用指令和转移指令,在子程序中,可以完成变英文大写字母为小写字母并将
其显示出来。
A2040
2040 IN 81
;读串行口的状态寄存器的内容到寄存器R0
2041 SHR RO
; R0寄存器的内容右移一位,最低位的值移入标志位C
2042 SHR R0
; R0寄存器的内容右移一位,最低位的值移入标志位C
2043 JRNC 2040 ;条件转移指令,当标志位C不是1时就转移到2040地址
2044 IN 80
;把从键盘输入的一个字符送到R0低字节
2045 OUT 80
;输出R0低字节内容到屏幕显示
2046 PUSH R0 ;暂存R0到堆栈
2047 IN 81
;读串行口的状态寄存器的内容到寄存器R0
2048 SHR R0
; R0寄存器的内容右移一位,最低位的值移入标志位C
2049 JRNC 2047 ;条件转移指令,当标志位C不是1时就转移到2047地址
204A POP R0
;恢复堆栈中原R0内容到R0
204B CALA 2050 ;调用子程序,子程序入口地址为2050
204D JMPA 2040 ;转移指令,转移地址为2040
204F RET
;主程序结束
;以下是一个子程序
2050
2052
2053
2054
MVRD R1,20;将小写字母与大写字母的ASCII码差值送R1寄存器
ADD R0,R1 ;将小写字母变为大写字母
OUT 80
;将R0中的大写字母送屏幕显示
RET
71
2. 汇编语言程序设计中的有关概念
(1)教学计算机的机器语言
机器语言:是用二进制编码的指令。
( P131表给出了各种指令的二进制编码,即
机器指令。)
用机器语言编程,即是用二进制的机器
指令编写程序。
因为机器指令难学难用,一般不用机器
语言编程。
72
(2)教学计算机的汇编语言
在不使用作为仿真终端,而是使用计算机终端设
备时,使用的PC机时,一般使用监控程序提供的
单条汇编命令A,通过计算机的终端,逐跳输入一
个汇编语句。具体操作步骤是:
A跟一个空格字符再跟指定的内存地址并回车
功能:完成单条指令的汇编操作,把产生出来
的执行代码放入对应的内存单元中。命令名后的地
址是头一条汇编语言的执行码的内存单元地址。
每条语句汇编完成后,系统自动修改地址,以
便处理下条汇编语句。在应输入汇编语句时,若不
给出汇编语句而直接回车,结束A命令。
73
例1:设计一个程序,实现在屏幕上输出显示一个字符“6”。
A 2000
;地址从十六进制的2000开始
2000 MVRD R0,0036 ;把字符“6”的ASCII码送R0
2002 OUT 80
;在屏幕上输出显示字符“6”,80为串行口地址
2003 RET
;每个用户程序都必须用RET指令结束
2004 (按回车键即结束源程序的输入过程)
74
例2 设计一个程序,实现用次数在屏幕上输出0到9这10个数字符。
A 2020
MVRD
MVRD
OUT
DEC
JRZ
PUSH
(2028) IN
SHR
JRNC
POP
INC
JR
(202E)
R2, 000A
R0, 0030
80
R2
202E
R0
81
R0
2028
R0
R0
2024
RET
;送入输出字符的个数
;0字符的ASCII码送寄存器R0
;输出保存在R0低字节的字符
;输出字符数减1
;判10个字符输出完否,已完,则转移到程序结束处
;未完,保存R0到堆栈中
;查询串行接口状态,判断字符的串行输出过程结束否
;R0右移一位,最低位移入状态标志位C
;未完成,则循环等待
;已完成,准备继续输出下一字符,从堆栈恢复R0的值
;将R0中的ASCII码加1,得到下一个要输出的字符
;转去生产字符
75
例3 设计一个程序,实现从键盘上连续输入多个属于0到9 范围的苏子符并在屏
幕上此时,遇非数字符结束程序.
A 2040
MVRD
MVRD
(2044) IN
SHR
SHR
JRNC
IN
MVRD
AND
CMP
JRNC
CMP
JRC
OUT
JMPA
(2053)
R2, 2030 ;用于判断数字符的下界值
R3, 0039 ;用于判断数字符的上界值
81
;判断键盘上是否按了一个键
R0
;R0右移一位,最低位移入状态标志位C
R0
;即串行口是否有了输入的字符
2044
;尚没有输入则循环测试
80
;把输入字符读到R0低字节
R1, 00FF ;
R0, R1 ;将R0的高字节清0
R0, R2 ;判断输入的字符<字符0否
2053
;是, 转到程序结束处
R3, R0 ;判断输入的字符>字符9否
2053
;是, 转到程序结束处
80
;输出刚输入的数字符
2044
;转去程序前边等待输入下一 个字符
RET
76
例4 设计一个程序,计算1到10的累加和.
A 2060
MVRD R1, 0000
MVRD R2, 000A
SUB
R3, R3
(2065) INC R3
ADD R1, R3
CMP R3, R2
JRNZ 2065
RET
;置累加和的初值为0
;最大的加数
;预参加累加的数为0
;得到下一个参加累加的数
;累加计算
;判断是否累加完
;未完,开始下轮累加
77
例5 设计一个有读写内存和子程序调用指令的程序,功能是读出指
定内存中的大写字母字符,将其显示在屏幕上,转换为小写字母
后再写回存储器的原存储单元.
E 20F0 (送入将被显示的6个字符“A”~”F”的ASCII码到内存20F0开始的存储
区域中)
41,42,43,44,45,46
A 2080
MVRD R3, 0006 ;指定被读数据的字符
MVRD R2, 20F0 ;指定被读写数据的内存区首地址
(2084) LDRR R0, [R2] ;低内存中的一个字母到R0寄存器
CALL 2100
;调用子程序,入口地址为2100,完成显示和字符转换及写入
;内存功能
DEC
R3
;检查输出的字符个数
JRZ
208B
;完成输出则结束程序的执行过程
INC
R2
;未完成修改内存地址
JR
2084
;转移到程序的2084处,循环执行规定的处理
78
例5 设计一个有读写内存和子程序调用指令的程序,功能是读出指
定内存中的大写字母字符,将其显示在屏幕上,转换为小写字母
后再写回存储器的原存储单元.
A 2100
OUT
80
MVRD R1 0020
ADD
R0, R1
STRR [R2], R0
(2105) IN 81
SHR
R0
JNRC 2105
RET
;输出保存在R0寄存器中的字符
;转换保存在R0中的大写字母为小写字母
;
;写R0的字符到内存,地址用LDRR所用的地址
;测试串行接口是否完成输出过程
;
;未完成输出过程则循环测试
79
(3) 教学计算机的交叉汇编语言(了解)
4.3.3 Pentium II机的指令系统(了解)
4.4.4 Ultra SPARC II 机的指令系统(了解)
80
4.4 控制器的功能、组成和指令执行步骤
3.4.1 控制器部件的功能和组成概述
控制器的作用:
向整机每个部件(包括控制器本身)提供协同运行所需的
控制信号
计算机最本质的功能:
连续执行指令,而每一条指令往往分成几个步骤来完成。
控制器的基本功能:
依据当前正在执行的指令和它所处的执行步骤,形成并提
供在这一时刻整机各部件要用到的控制信号。
执行一条指令要经过读取指令、分析指令、执行指令三个
阶段,控制器要保证按程序设定的指令运行次序,自动地连续
执行指令序列。
81
控制器的组成:
① 程序计数器PC 提供指令在内存中的地址,并
接受下一条要执行的指令的地址。
② 指令寄存器IR 保存指令本身的信息。
③ 脉冲源和启停控制逻辑、步骤标记线路
给出每条指令的各执行步骤的相对次序关系
④控制信号产生部件
提供在指令执行各步骤,当前各部件要用到的控
制信号
微程序控制器
控制器的分类
组合逻辑控制器(硬布线控制器)
82
主振
时序控制
译码
信号
时
序
控制条件
形成部件
IR
硬布线
方案的
控制器
PC
….
启停
控制器信号
数据总线
控制总线
地址总线
输出
输入
主
设备
设备
存
地
址
寄
存
器
运算器
部件
83
2005年1月试题
2.简述计算机的控制器(组合逻辑或微程序控制器,二者选一)
的组成及每个子部件的作用。1.
答:以组合逻辑控制器为例:
(1)组合逻辑控制器由4个主要部件组成:程序计数器PC,指
令寄存器,脉冲源和启停控制逻辑、节拍发生器,时序控制
信号产生部件。
(2)程序计数器PC,用于保存一条指令在内存中的地址;指
令寄存器IR,用于保存从内存读出的指令内容。脉冲源和启
停控制逻辑向计算机各部件提供连续(单个)的主振脉冲;
节拍发生器用于标记每个指令的执行步骤的相对次序关系。
时序控制信号产生部件,用于形成并提供计算机各部件当前
时刻要用到的控制信号。
84
4.4.2 指令的执行步骤概述
(1)指令的操作码指明该条指令的操作功能。指令的操作数
及转移指令用到的指令地址,由指令的操作数地址字段提
供。指令中涉及的操作数和指令地址,主要保存在运算器
中的累加器、内存储器的存储单元以及输入输出设备接口
的寄存器中。
(2)累加器的内容可以是操作数、操作数的地址、指令的地
址或用于完成寻址计算的有关内容等,读写累加器通常总
是要通过运算器中的ALU才能完成。
(3)读写内存某一单元的内容要用两个步骤:第一步,将存
储单元地址送地址寄存器以驱动地址总线,以选择某一存
储单元;第二步,向内存发出读写命令。读操作时,读出
的内容保存到指令寄存器;写操作时,要写入内存的数据
要先送到数据总线。
85
4.4.2 指令的执行步骤概述
(4)输入输出设备接口的寄存器读写控制,主要出现在输入
输出指令。多数情况下是在CPU与相应设备的接口卡的某
一寄存器之间完成。通常执行两个步骤:第一步,将输入
输出设备的入出口送到地址寄存器以驱动地址总线,以选
择某一接口电路中的一个寄存器;第二步,向接口卡发出
读写命令。读操作时,读出的内容保存到相关的寄存器中;
写操作时,要写入接口的数据要先送到数据总线。
读写内存与读写输入输出设备的区别:读写内存所用到的地址
位数多,读写输入输出设备所用的地址位数少,前者有多
种不同的寻址方式,后者直接IN、OUT指令的低位字段给
出I/O端口地址。
86
为了理解指令的执行步骤,请看一段小程序:
2000
0001 ADD R0,R1
;两个累加器求和并保存结果R0
;两寄存器之间传送数据
2001 0720
MVRR R2,R0
2002 8890
2008 MVRD R9, 2008 ;把十六进制数传送到R9字指令
2004 8392
STRR [R9], R2 ;写R2的内容到R9给出地址的内存单元中
2005 8280
IN, 80
;从串行口(键盘)读进输入的数据到R0低字节
2006 4409
JRC 20
;若进位C为1,则相对转移到2000地址
2007 8F00
RET
;子程序调用返回指令,教学机必须用RET技术程序
每条指 机器
令在内 指令
存中的 代码
地址
每条指令的
汇编指令代
码
操 寻址
作 信息
码
指令的注释, 描述指令的功能
87
指令执行步骤示意图:
读取指令
指令地址(在PC中)送到地址寄存器
读主存,读出内容(指令代码)送入
指令寄存器IR
分析指令
执行指令
形成下一条指令
的地址并放到
PC中
用一到几个执行步骤,完成指令的运
算、操作功能,不同指令用到步骤数
和要求的运算、操作功能均不相同
检查有无
中断请求
无中断请求,进入下一条指令的执行过程
88
指令执行步骤举例:
加法指令 ADD R0,R1
(1)AR←PC, PC ←PC+1 ;送指令地址, 并形成下一条指令的地址
(2)读主存,IR←读出内容
;读取数据的指令寄存器
(3)R0←R0+R1,保存状态信息 ;双累加器完成相加运算
本指令结束,检查中断请求,无中断请求, 进入下一条指令的执行过程
传送指令 MVRR R9,R0
(1)AR←PC, PC ←PC+1
(2)读主存,IR←读出内容
PC←PC+1
(3)R0←R0+0
;寄存器之间传送数据
本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程
89
指令执行步骤举例:
取立即数指令 MVRD R9,2008
(1)AR←PC,PC←PC+1
(2)读主存,IR←读出内容
(3)AR ←PC, PC←PC+1 ;用两步分别送地址和执行读出操作,
(4)读主存,R9←读出内容 ;切不可忘记在此形成下一条指令的地址
;取出立即数(在指令的第二字节),
本指令 结束,检查中断请求,无中断请求,进入下一条指令的执行过程
写内存指令 STRR [R9],R2
(1)AR←PC,PC←PC+1
(2)读主存,IR←读出内容
(3)AR←R9+0
;用两步分别送地址和执行操作
(4)写主存:数据总线←R2+0
;送内存地址(保存在R9中)的AR,
;写R2的内容的内存储器指定单元
本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程。
90
输入指令: IN 80
(1)AR←PC, PC←PC+1
(2)读主存,IR←读出内容
(3)AR←I/O PORT
;送外设I/O端口地址的到地址寄存器
(4)读外设,数据总线←读出内容 ;读外设送来的数据到寄存器R0
R0 ←数据总线内容+0
本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程。
相对条件转移指令 JRC 20
(1)AR←PC, PC←PC+1
(2)读主存,IR←读出内容
(3)若C=1,则PC ←指令地址+相对寻址偏移量(在IR的低字节中),
否则本步什么操作都不做(即保持PC内容不变,仍为顺序执行)
本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程
91
子程序返回指令 RET
(1)AR←PC, PC←PC+1
(2)读主存,IR←读出内容
(3)AR ←SP
;堆栈指针内容送地址寄存器
SP ←SP+1
;修改堆栈地址内容
(4)读主存,PC ←读出内容 ;读出保存在堆栈中的程序断点到PC中
本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程
92
2000年7月试题 二、2 简要说明减法指令SUB
R2和子程序调用指令的执行步骤。
R3,
答:(1)减法指令执行流程:
① AR←PC ,PC←PC+1
② 读内存,IR←读出的内容
③ R3←R3—R2,保存状态信息
本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程。
(2)子程序调用指令执行流程;
① AR←PC ,PC←PC+1
② 读内存,IR←读出的内容
③ AR←SP—1
④ 写内存,PC内容进栈保存
⑤ PC←子程序入口地址
本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程。
93
2001年7试题
三、1
按你自己的理解和想象的计算机的硬件
(应有中断功能)组成,写出完成下面给定指
令格式的指令的执行流程。
(1)累加器内容完成“异或”运算。“异
或”指令格式:
操作码
DR
SR
(2)把一个内存单元中的的内容读到所选
择的一个累加器中。“读内存”指令格式:
操作码 DR
SR
94
(1)累加器内容完成“异或”运算。“异或”指令格式: 操作
码
DR SR
答:(1)指令流程:
① AR←PC ,PC←PC+1
② 读内存,IR←读出的内容
③ R3←R3 ⊙R2,保存状态信息
④ 检查有无中断请求,有,则进行相应处理;无,则转入下一条指令的执
行过程。
(2)把一个内存单元中的的内容读到所选择的一个累加器中。“读内存”
指令格式:操作码 DR SR
① AR←PC ,PC←PC+1
② 读内存,IR←读出的内容
③ 地址寄存器AR(寄存器间接寻址方式) ← SR的内容
④ 读内存, DR ←读出的数据
④检查有无中断请求,有,则响应中断,无则转入下一条指令的执行过程。
95
模拟试题
二、2
6. 原理性地说明ADD R0,R1指令、条件相对转移指
令的指令格式和执行步骤。
答案:(1) ADD R0,R1,指令中给出操作码和R0、R1的编
号, 指令执行步骤:
① AR←PC ,PC←PC+1
② 读内存,IR←读出的内容
③ R3←R3∧R2,保存状态信息
④ 检查有无中断请求,有,则进行相应处理;无,则转
入下一条指令的执行过程。
(2)执行条件转移指令时,要判别指定的条件,若为真,才
执行:尚未修改的PC内容送ALU,相对转移偏移值送ALU,
ALU执行加操作,结果送入PC;否则顺序地进入下一条指
令的执行过程;检查有无中断请求,有,则响应中断,无
则转入下一条指令的执行过程。
96
4.5
微程序控制器部件
4.5.1 微程序控制器的基本组成和工作原理
微程序控制器的功能:通过几条微指令来“解释执行”
一条机器指令。一条机器指令的执行过程包括的内
容有:到内存储器读取一条机器指令,接着分析这
条指令并执行其操作运算功能,最后检查有无中断,
有中断请求并且优先级较高,则响应中断并转入中
断处理,负责进入下一条机器指令的执行过程。
97
微指令控制器的工作原理:
用一条微指令的控制命令字段,来提供一条机器指令的一个执
行步骤所需要的控制信号,用这条指令的下地址字段,指
明下一条微指令在控制存储器中的地址,以便在控制存储
器中读出下一条微命令。即每一条微指令对应一条机器指
令的一个执行步骤。
一条微指令具有两项功能:
(1)提供一条机器指令的一个执行步骤所需要的控制信号,
以实现该执行步骤的操作功能。
(2)提供读出下一条待用微指令的地址,以便自动有序地读
出每一条微指令,解决机器指令各执行步骤之间的正确的
接续关系。
98
微程序控制器的组成:
程序计数器PC
指令寄存器IR
微程序控制器
控制存储器
微指令寄存器
下地址形成逻辑
99
主振
控制条件
控制
下
地
址
启停
映射
存储器
IR
微程序
方案的
控制器
PC
….
微指令寄存器
数据总线
控制总线
地址总线
输出
输入
主
设备
设备
存
地
址
寄
存
器
运算器
部件
100
微程序控制器的流程
当前微指令信号
下地址字段
(微指令寄存器)控制命令字段
下一条微指令信号
控制存储器
(存放微程序)
下地址形成部件
状态
指令操作码
101
控制存储器的组成和功能
控制存储器通常由ROM器件实现。其功能是存储微
程序控制器的全部微程序(几百到上千条)。每一
个存储单元(几十到一二百位)保存一条微指令,
每一次读操作可取得一条微指令的内容。每一条微
指令由两个字段组成:控制命令字段由执行一条指
令的一个步骤用到的全部控制信号组成;下地址字
段由指明下一条将读出的指令在控制存储器中的地
址信息组成。
计算机的这种执行方式,通常被称为用几条微指令
“解释执行”机器指令。解释执行一条机器指令的
几条微指令构成一个(段)微程序(微程序段)。
“解释执行”指令系统中全部指令的全体微程序就
组成一台计算机的完整微程序。
102
微指令寄存器的功能:
用以保存从控制寄存器中读出的一条微指令。
它支持相邻运行的两条微指令同时存在,当
前的微指令(已保存在该寄存器中)正在发
挥控制作用的期间,可以把下一条微指令读
出来并送到该寄存器的输入端,以解决执行
当前指令与读出下一条微指令的流水线处理
问题。
下地址形成逻辑的能够:
用多种组合方式,为自己形成并提供下一次要
用到的微指令在控制存储器中的地址。
103
4.5.2 微程序设计中下地址形成逻辑的硬件技术
1. 得到下一条微指令地址的有关技术
① 微程序顺序执行时,下地址为本条微指令地址加1。
② 在微程序必定转向某一微地址时,可以在微指令字中下地
址字段中给出该地址值。
③ 按微指令(上一条或本条)的某一执行结果的状态,选择
顺序执行或转向某一地址,此时必须在微指令中指明需判
断的所依据的条件及转移地址。要判断的条件,可以是运
算器的标志位状态,控制器的执行状态,如多次的微指令
循环是否结束,外设是否请求中断等。
④ 微指令的调用及返回控制,会用到堆栈。
⑤ 依条件判断转向多条微指令地址中的某一地址的控制。
⑥依据取来的机器指令车组码,找到对应该条指令的执行过程
的一端微程序的入口地址。
104
2000年7月试题 二、3.2001年1月试题 二、3)
在微程序控制系统中,通常有哪5种得到下一
条微指令地址的方式?
答:在微程序控制系统中,通常有以下5种得到下一
条微指令地址的方式:
(1)微程序顺序执行时,下地址为本条微地址加1。
(2)在微程序必定转向某一微地址时,可以在微指
令中的相关字段中给出该地址值。
(3)按微指令(上一条或本条)的某一执行结果的
状态,选择顺序执行或转向某一地址。
(4)从微堆栈中取出从微子程序返回到微主程序断
点的返回地址,用于微子程序返回处理。
(5)依条件判断转向多条微指令地址中的某一地址
控制。
105
得到下一条微指令地址的实现方法:
① 在微指令字中,分配相应的几个字段,用于给出
微指令转移地址(完整的一个地址或部分的多个地
址),并且指明是顺序执行,或无条件转移或条件
转移及其判断条件,以及是否功能分支转移,是否
微子程序调用及返回等。
② 应有相应的专门的硬件支持,用于实现微指令地
址加1,按判断条件给出判定结果为真还是假,给
出微堆栈组织并实现入栈及出栈管理,解决指令操
作码与各自的微程序段入口地址的对应关系以及实
现微程序中的功能分支转移等。
106
2. 形成下一条微指令地址的核心硬件
——Am2901器件
D11~D0
寄存器和
计数器R/C
/RLD
CP
/FULL
微堆栈
指针μSP
零检测
/CC
/CCEN
I3~I0
5字×12位
微堆栈
命
令
译
码
器
D R F μ PC
多路地址选择器
/VECT
/PL
/OE
/MAP
微程序计数器
寄存器μPC
增量器
Y11~Y0
CI
107
(1)Am2910芯片内部组成
AM2901能提供12位微指令地址,器件内部
部件的位数也是12位,最大寻址空间为4096
个字。
① 4输入的多路选择器 用于选则以下数
据来源:
a. 计数器/寄存器(R/C)输出
b. 直接输入D11~D0
c. 微程序计数器寄存器μPC的输出
d. 微堆栈F的输出
108
微程序定序器Am2910芯片的组成
CP
D11~D0
寄存器和
计数器R/C
/RLD
/FULL
微堆栈
指针μSP
零检测
5字×12位
微堆栈
/CC
/CCEN
I3~I0
/PL
命
令
译
码
器
微程序计数器
寄存器μPC
D R F μ PC
多路地址选择器
/VECT
/OE
/MAP
增量器
Y11~Y0
CI
109
② 计数器/寄存器
由12个D触发器构成,其作用是:
a. 作寄存器时,用于保存一个微地址,实现微程
序转移。
b. 作计数器时,具有减1功能,用于控制微程序
的循环次数,若装入的初值微为N,则可执行N+1
次循环。
③ 微程序计数器
由12位增量器和12位寄存器μPC组成。其作用是:
a. 具有μPC← Y+1功能,实现微程序的顺序执行
(CI=1时)
b. 具有μPC←Y功能,实现同一微程序的多次执
行( μPC← Y )。(CI=0时)
110
微程序定序器Am2910芯片的组成
CP
D11~D0
寄存器和
计数器R/C
/RLD
/FULL
微堆栈
指针μSP
零检测
5字×12位
微堆栈
/CC
/CCEN
I3~I0
/PL
命
令
译
码
器
微程序计数器
寄存器μPC
D R F μ PC
多路地址选择器
/VECT
/OE
/MAP
增量器
Y11~Y0
CI
111
④ 微堆栈
由5字×12位的寄存器堆栈和微堆栈指针
μSP组成。其作用是:
a. 保存微子程序调用时的返回地址
b. 保存微程序循环的首地址
微堆栈指针总是指向最后一次压入的数据,
执行微循环时,允许不执行弹出操作而直接
访问微堆栈的栈顶。当微堆栈数据达到5 个
时,就发出堆栈已满信号 FULL 0 ,此后任
何压入操作都将覆盖栈顶原有的数据。
112
微程序定序器Am2910芯片的组成
CP
D11~D0
寄存器和
计数器R/C
/RLD
/FULL
微堆栈
指针μSP
零检测
5字×12位
微堆栈
/CC
/CCEN
I3~I0
/PL
命
令
译
码
器
微程序计数器
寄存器μPC
D R F μ PC
多路地址选择器
/VECT
/OE
/MAP
增量器
Y11~Y0
CI
113
⑤ 命令译码器及3个使能信号
命令译码器接收外部送来的命令码I3~I0、条件输入码
CC 和条件允许 CCEN 信号,并对其译码,产生片内工
作所需要的控制信号和外部要用到的3个控制选择信号/PL ,
/MAP,/VECT,这3个输出信号用于决定外部直接输入D的
数据来源。
/PL 为0时,D来源于微指令的下地址字段,用于给出微
程序转移地址;
/MAP 为0时,D来源于MAPROM,用于实现从机器指令
操作码找到相应的微程序段首地址。
/VECT 为0时,原意是D来源于其它一路外部输入,(本
机目前未使用)。
114
微程序定序器Am2910芯片的组成
CP
D11~D0
寄存器和
计数器R/C
/RLD
/FULL
微堆栈
指针μSP
零检测
5字×12位
微堆栈
/CC
/CCEN
I3~I0
/PL
命
令
译
码
器
微程序计数器
寄存器μPC
D R F μ PC
多路地址选择器
/VECT
/OE
/MAP
增量器
Y11~Y0
CI
115
(2)Am2910引脚的意义
输入信号
D11~D0 外部直接输入的数据,既可作寄存器/计数器的初值,
也可经多路选择器直接从Y 输出,作为下一条微指令的地
址。
I3~I0
命令码,来自微指令字的有关字段,用于选择16条命
令之一。
/CCEN
/CC
共同确定测试条件是否通过,若/CCEN=0且
/CC=1,说明测试失效;若/CCEN=1或/CC=0,
均表明测试通过。
若把/CCEN接地,则/CC=0是测试通过;
/CC=1则测试失效。(教学机采用后一用法)
116
微程序定序器Am2910芯片的组成
CP
D11~D0
寄存器和
计数器R/C
/RLD
/FULL
微堆栈
指针μSP
零检测
5字×12位
微堆栈
/CC
/CCEN
I3~I0
/PL
命
令
译
码
器
微程序计数器
寄存器μPC
D R F μ PC
多路地址选择器
/VECT
/OE
/MAP
增量器
Y11~Y0
CI
117
/PLD
寄存器/计数器装入信号,为0时强行
将D11~D0装入寄存器/计数器
CI
增量器进位输入,CI=1时, μPC←
Y+1;CI=0时, μPC←Y
/OE
Y输出允许信号,/OE=0时,Y允许输
出;/OE=1时,Y为高阻态。
CP
时钟触发信号,上升沿触发所有的内
部状态变化。
118
微程序定序器Am2910芯片的组成
CP
D11~D0
寄存器和
计数器R/C
/RLD
/FULL
微堆栈
指针μSP
零检测
5字×12位
微堆栈
/CC
/CCEN
I3~I0
/PL
命
令
译
码
器
微程序计数器
寄存器μPC
D R F μ PC
多路地址选择器
/VECT
/OE
/MAP
增量器
Y11~Y0
CI
119
输出信号
Y11~Y0 下一条微指令地址,它直接用作读控
制存储器的地址。
/FULL 微堆栈满信号,低电平有效
/PL
三个使能信号,用于决定直接决定输入D 的来源
/MAP
/VECT
120
微程序定序器Am2910芯片的组成
CP
D11~D0
寄存器和
计数器R/C
/PLD
/FULL
微堆栈
指针μSP
零检测
5字×12位
微堆栈
/CC
/CCEN
I3~I0
/PL
命
令
译
码
器
微程序计数器
寄存器μPC
D R F μ PC
多路地址选择器
/VECT
/OE
/MAP
增量器
Y11~Y0
CI
121
(3) Am2910的功能具体用法
Am2910器件的部分功能及其控制条件
完成功能
R/C
内容
R/
C
操
作
使能
信号
/CCEN=0
/CC高
/CC低
Y输出
堆栈
Y输出
堆栈
0
初始化
/
/PL
0
清除
0
清除
2
指令功能分支
/
/MAP
D
/
D
/
3
条件微转移
/
/PL
μPC
/
D
/
/
/PL
μPC
/
μPC
弹出
14 顺序执行
122
说明:
0号命令:用于初始化,即无条件清除内部微堆栈,使Y输出
一定为0。系统加电时 确保系统从0号微地址开始执行微程
序。
2号命令:用于指令功能分支,即输出信号 /MAP为低,使D输
入信号从 MAPROM(微地址映射部件)得到,并作为输
出微地址Y的值,实现从指令操作码找 到对应该指令的
微程序段的入口地址。
3号命令:用于条件转移控制,当/CC=0时,将微指令字中的
下地址字段(转移地址)经过D送Y输出,实现指令转移。
当/CC=1时,微指令顺序执行,即PC← μPC+1。
14号命令: 顺序执行,即执行紧跟在本条微指令后面的那条
微指令。
123
4.5.3 TEC-2000教学计算机微程序控制
器的实际组成
设计思想:
在以下的前提下,使微程序控制器也能正
常运行:
① 不变更控制器之外的几个功能部件的设
计;
② 不变更指令格式和指令系统;
③ 不变更已有全部软件。
因此,必须协调、折中地处理两种处理器
之间的各种技术问题。
124
TEC-3机的微程序控制器的基本组成
微命令
微下地址
…
9
地址
微指令寄存器
/VECT
8
/PL
/MAP
CI3~CI0
/OE
微地址映射部件
MAPROM
微程序定序器
Am2910
/OE
IR15~IR8
指令寄存器
微地址
CP
微指令
控制存储器
μCM
/CCEN
CP CC
条件判断线路
SCC
125
说明:
1)微程序定序器Am2910和下地址形成逻辑
作用是形成下一条微指令在控制存储器中的地址。
①/OE端接地,使输出Y11~Y0总保持有效。
②/CCEN接地,使Am2910的的条件判断只取决于/CC。
③CI接电源,使微指令地址加1总能执行。
④分别用/MAP、/PL两个使能信号把MAPROM输出的微地址
和微指令下地址字段输出的微地址送到Am2910的D输入端,
从而形成D输入端的二选一 逻辑功能。
⑤与Am2910配套的电路,主要包括指令微地址映射部件
(MAPROM)和用于形成/CC信号逻辑值的条件判定线路
SCC 。它们共同构成了微指令下地址形成逻辑。
126
TEC-3机的微程序控制器的基本组成
微命令
微下地址
…
9
地址
微指令寄存器
/VECT
8
/PL
/MAP
CI3~CI0
/OE
微地址映射部件
MAPROM
微程序定序器
Am2910
/OE
IR15~IR8
指令寄存器
微地址
CP
微指令
控制存储器
μCM
/CCEN
CP CC
条件判断线路
SCC
127
2)微指令地址映射部件 MAPROM
教学机中由一片28C64静态存储器芯片实现,
记作“MAPROM”。 MAPROM的地址输入为
指令寄存器IR给出但外指令操作码IR15~IR8,
其输出内容为当前指令对应的微程序段的入口
地址。
MAPROM的输出允许/OE引脚与微程序定
序器Am2910的/MAP引脚相连,仅当使用
Am2910的2号命令时,才会把MAPROM的输
出作为读取控制存储器的微指令的地址使用。
128
TEC-3机的微程序控制器的基本组成
微命令
微下地址
…
9
地址
微指令寄存器
/VECT
8
/PL
/MAP
CI3~CI0
/OE
微地址映射部件
MAPROM
微程序定序器
Am2910
/OE
IR15~IR8
指令寄存器
微地址
CP
微指令
控制存储器
μCM
/CCEN
CP CC
条件判断线路
SCC
129
3)微指令转移的条件判断线路
教学机中用一片GAL20V8器件实现,记作“SCC GAL”。其
功能有两个:
(1)产生清零信号,完成对微程序定序器Am2910初始化操
作。
当按下“RESET”按键时,SCC产生一 清零信号CLR,
使控制信号CI3~CI0=0000,微程序定序器仅到初始化状态,
确保从00h微地址开始执行微程序。
(2)产生微程序定序器Am2910的/CC信号。
根据控制信号SCC3~SCC0规定的判断条件C、Z、V、
S的取值,结合指令操作码,给出CC信号的取值。
130
TEC-3机的微程序控制器的基本组成
微命令
微下地址
…
9
地址
微指令寄存器
/VECT
8
/PL
/MAP
CI3~CI0
/OE
微地址映射部件
MAPROM
微程序定序器
Am2910
/OE
IR15~IR8
指令寄存器
微地址
CP
微指令
控制存储器
μCM
/CCEN
CP CC
条件判断线路
SCC
131
4) 控制存储器μCM
是微程序控制器的核心的部分。使用7片
28C64(8位×8192字)ROM芯片实现,用于存放微
程序。
微程序定序器Am2910的地址输出Y7~Y0用作微
程序控制器的地址线A7~A0;7片控制存储器芯片的
数据线D7~D0给出56位控制信号(实际使用53位)。
5) 微指令寄存器PLR
存放从控制器读出来的微指令。
132
TEC-3机的微程序控制器的基本组成
微命令
8
地址
/MAP
/VECT
8
MAPROM
8
OP
选
通
门
IR
指令寄存器
/MAP
/PL
Am2910
CI3~CI0
CP
…
9
PLR
/PL
/OE
微指令
寄存器
CP
微指令
微地址 控制存储器
μCM
9
/CCEN
/CC(条件判定电路)
GAL20V8
133
2. 微指令格式和控制信号设计
1)控制信号组成情况
(1)运算器部件所需的控制信号
先复习一下运算器的组成(见下页)
134
输出Y
/OE
F
F3
F=0000
OVR
Cn+4
A L U
R
S
三选一
乘商寄存器Q
Q3
三选一
Q0
二选一
A
通用寄存器
RAM3
I2~I0
三选一
算逻运算部件
16 个 累加器
输入D
A锁存器
16个
组成
Cn
二选一
B锁存器
B
Am2901内部组成
I5~I3
A口地址
B口地址
I8~I6
RAM0
乘商寄存器 Q
功能
8种运算功能
8种数据组合
8种结果处理
135
Am2901芯片之外的线路设计
SST
SSH
Cin
最
低
位
进
位
0
1
C
SHIFT GAL
右
运算器
RAM0
移 RAM15
输
Q0
Q
15
入
CP
信
D15~0
B A
号
地址 I8~I0
0,1,RAM0
Q0,RAM15
16位的
SHIFT GAL
四
位
标
志
位
SHIFT GAL
0
C
Cy
RAM0
Cy
F=0
OVR
F15
Y15~0 SCi
FLAG GAL
C
Z
V
S
来自内部总线
左
移
输
入
信
号
0
C
Q15
SSH
136
4位的A口地址,4位的B口地址,用于选择读写的通用寄
存器(累加器)。
3组3位的控制码I8~I6、I5~I3、I2~I0,用于选择结果处理
方案、运算功能、数据来源。
I8~I6用于选择结果处理方案
选择码
I8 I7 I6
处 理 方 式
通用寄存器
Q寄存器
Y输出
F→Q
F
0
0
0
0
0
1
0
1
0
F→B
A
0
1
1
F→B
F
1
0
0
F/2→B
1
0
1
F/2→B
1
1
0
2F→B
1
1
1
2F→B
F
Q/2→Q
F
F
2Q→Q
F
F
137
I5~I3用于选择运算功能
选择码
I5 I4 I3
运算功能
0
0
0
0
0
1
R+S
S-R
0
1
0
R-S
0
1
1
1
1
1
0
0
1
1
1
0
1
0
1
R∨S
R∧S
R∧S
R⊙S
R⊙S
138
I2~I0用于选择数据来源
选择码
I2 I1 I0
数 据 来 源
R端
S端
0
0
0
A
Q
0
0
1
A
B
0
1
0
0
Q
0
1
1
0
B
1
0
0
0
A
1
0
1
D
A
1
1
0
D
Q
1
1
1
D
0
139
3组共7位的控制信号,控制配套的两片GAL20V8。
3位SST,用于控制记忆ALU的状态标志位
选择码
标志寄存器内容变化
SST2 SST1 SST0
C
Z
V
S
V
S
说 明
0
0
0
C
Z
0
0
1
Cy
F=0
0
1
0
内部总线对硬的一位
0
1
1
0
Z
V
S
C置“0”,另3个标志位不变
1
0
0
1
Z
V
S
C置“1”,另3个标志位不变
1
0
1
RAM0 Z
V
S
右移操作,另3个标志位不变
1
1
0
RAM15Z
V
S
左移操作,另3个标志位不变
1
1
1
Q0
V
Z
OVR F15
S
4个标志位的值保持不变
接收ALU的标志位输出的值
恢复标志位原来的现场值
联合右移,另3个标志位不变
140
3组共7位的控制信号,控制配套的两片GAL20V8。
2位SCI,用于控制产生运算器产生最低位的进位输入信号
选择码
SCI1 SCI0
指令举例
Cin
0
0
0
1
ADD,SUB
INC,DEC
0
1
1
0
ADC,SBB
C
141
3组共7位的控制信号,控制配套的两片GAL20V8。
(3)左、右移位时,最高、最低位的移位输入信号的形成
控制
码
SSH
左
移
右
移
说
RAM0
Q0
RAM15
明
Q15
0
0
0
×
0
×
通用寄存器逻辑移位
0
1
C
×
C
×
通用寄存器与C循环移位
1
0
Q15
/ F15
Cy
RAM0
原码除(左移)
原码乘(右移)
1
1
×
×
F15
OVR
RAM0
右移用于补码乘法
142
(2)内存储器和I/O接口部件所需的控制信号
用3位编码区分读/写内存,读写接口
/ MIO
REQ
/ WE
操作功能
0
0
0
内存写
0
0
1
内存读
0
1
0
I / O写
0
1
1
I / O读
1
×
×
无读写
143
(3)CPU内部总线数据来源所需的控制信号
用3位DC1编码内部总线数据来源
DC1码
000
译码信号
操 作 说 明
/ SWTOIB 送开关内容到CPU内部总线
001
/ RTOIB
送ALU输出到CPU内部总线
010
/ ETOIB
16位机送IR低字节内容到数据总线
011
/ FTOIB
送程序状态字到内部总线
100
/ STOIB
16位机中不用
101
/INTVH
16位机中不用
110
/ INTV
送中断向量到内部总线
111
/ DI
无操作功能,不向内部总线发送数据
144
(4)CPU内部特定寄存器接受输入所需的控制信号
用3位DC2编码控制特定寄存器接受输入
DC2
000
001
010
011
100
110
111
译码信号
NC
/ GIR
/ GAR
/INTR
/INTN
/EI
/DI
操 作 说 明
不操作
指令寄存器接收
地址寄存器接收
恢复原中断优先级
接收新中断优先级
开中断
关中断
145
小结:需要控制器形成并提供的几个功能
部件的33位时序控制信号:
用于运算器的24位;
用于内存和I/O接口的3位;
用于内部总线的3位;
用于几个特定寄存器的3位。
146
2)微程序控制器专用的控制信息,即16位下地址字段的内容
微命令
微下地址
…
9
地址
微指令寄存器
/VECT
8
/PL
/MAP
CI3~CI0
/OE
微地址映射部件
MAPROM
微程序定序器
Am2910
/OE
IR15~IR8
指令寄存器
微地址
CP
微指令
控制存储器
μCM
/CCEN
CP CC
条件判断线路
SCC
147
(1)8位的微下地址:给出当前微指令的转移操作用到
的转移地址,但仅当Am2910D的输出信号/PL有效时,
该值才有意义(被使用)。
完成功能
R/C
内容
R/
C
操
作
使能
信号
/CCEN=0
/CC高
/CC低
Y输出
堆栈
Y输出
堆栈
0
初始化
/
/PL
0
清除
0
清除
2
指令功能分支
/
/MAP
D
/
D
/
3
条件微转移
/
/PL
μPC
/
D
/
/
/PL
μPC
/
μPC
弹出
14 顺序执行
148
2)微程序控制器专用的控制信息,即16位下地址字段的内容
微命令
微下地址
…
9
地址
微指令寄存器
/VECT
8
/PL
/MAP
CI3~CI0
/OE
微地址映射部件
MAPROM
微程序定序器
Am2910
/OE
IR15~IR8
指令寄存器
微地址
CP
微指令
控制存储器
μCM
/CCEN
CP CC
条件判断线路
SCC
149
(2) CI3~CI0 :为Am2910提供的命令码CI3~CI0。使用
最多的是以下4种命令码:
完成功能
CI3 CI2 CI1CI0
0 0 0 0
初始化
0 0 1 0
MAPROM映射
0 0 1 1
条件微转移
1 1 1 0
顺序执行
CI3~CI0确定Am2901使用16个命令中的哪一个命令,当其为
0000时,给出的下地址字段为全0,与8位的其它另外两个
字段(微下地址字段和判断条件SCC)无关。当其为0010
时,从MAPROM取下地址,也与另外两个字段无关,当其
为1110时,一定是顺序执行,当其为0011时,是条件转移,
用SCC字段给出是否转移所依据的条件,因8位的下地址给
出转移地址,条件成立时执行转移指令,条件不成立时则
顺序执行。
150
2)微程序控制器专用的控制信息,即16位下地址字段的内容
微命令
微下地址
…
9
地址
微指令寄存器
/VECT
8
/PL
/MAP
CI3~CI0
/OE
微地址映射部件
MAPROM
微程序定序器
Am2910
/OE
IR15~IR8
指令寄存器
微地址
CP
微指令
控制存储器
μCM
/CCEN
CP
/CC
条件判断线路
SCC
151
(3)SCC3~SCC0:
指出Am2910使用的/CC信号所依据的判断条件。
功
能
(下面的条件满足时,使/CC=00)
SCC3 SCC2 SCC1 SCC0
(CI3~CI0=0011)
0000
必转移
0010
/INT=0时,转移
0100
JRC,JRNC,JRZ ,JNRZ条件不成立时,转移
0101
JRS,JRNS 条件不成立时,转移
0110
IRH2=0时,转移
0111
IRH0=1时,转移
以上3项内容共16位,构成一条微指令的下地址字段,其作用是
形成下一条指令的地址。
152
(4)SA、SB:用于指定运算器A口、B口的地址信号是由微
指令中的A3~A0、B3~B0字段给出,还是由当前指令的操作
数地址字段给出。
编 码
SA SB
A口
B口
0
0
微指令A口
微指令B口
1
1
IR的SR字段
IR的DR字段
微指令控制器所提供的全部控制信号:
运算器:24位
内存和I/O接口:3位
内部总线:3位
51位
特定寄存器:3位
微程序控制器:16位
A、B口地址:2位
153
51位控制信号在微程序控制器中的安排:
将33位控制信号和16位下地址划分成若干小段,
分配到微指令字的相应位置。
尽量将每4位或每3位信息的字段划分到同一字
节的半个字节中,以便于阅读和理解。
51位控制信号在微程序控制器中的安排
微下地址
CI3~CI0,SCC3~SCC0
0, /MIO,REQ,
/WE,0,I2~I0
SA,I8~I6,SB,I5~I3
8位
8位
2位备用, 使用8位
8位
A3~A0, B3~B0
0, SST,SSH, SCI
0, DC2, DC1
8位
1位备用, 使用7位
8位
154
3. 16位TEC-2000机的微程序设计
1) 16位机基本指令微程序流程图
(见下页)
155
各组指令所用的执行步骤:
A组指令各用一个执行步骤(对应一条微指令),
完成CPU内部的寄存器之间的数据运算和传送
操作。
B组指令各用两个执行步骤(对应两条微指令)
完成主存储器的、或者I/O接口的读写操作。
D组指令用4个执行步骤(对应4条微指令)完成
两次主存储器的读写操作。
156
公用于全部指令的几条读取指令:
00地址:是控制存储器的第一条微指令,完成把
0值传送到PC中,实现教学机加电启动时,从
主存储器的0地址开始运行,主存储器从0地址
开始的8千字的存储空间是ROM存储区,固化
的是教学计算机的监控程序。
01,02地址:完成读取指令操作,是一次读主存储
器的操作;
03地址:通过指令的操作码,映射出相应指令的
微地址,并从控制存储器中读出这条微指令到
微指令寄存器,接下来变开始这条微指令的具
体操作。
157
关于对中断请求的处理的说明:
每条指令在结束本身所要求的运算、操作
功能后,开始下一条指令执行之前,都
要检查是否有中断请求不进行相应的处
理。在讲授有关中断的知识之前,这里
暂安排一个假的中断处理过程(伪中断
指令)。
158
00
加电启动, 按RESET按钮
0→PC, 关中断
01 PC →AR, PC+1 →PC
02
MEM →IR
03
/MAP
B、D组
12
15
17
19
1B
1D
1E
1F
23
PORT→AR
SP-1 →SP,AR
SP →AR,SP+1 →SP
DR→AR
SR →AR
PC→AR ,PC+1 →PC
PC→AR ,PC+1 →PC
PC→AR ,PC+1 →PC
SP→AR ,SP+1 →SP
04
05
06
07
A组 08
09
0A
0B
0C
0D
0E
0F
10
转移
11
DR+SR→DR
DR-SR→DR
DR and SR→DR
DR or SR→DR
DR xor SR→DR
DR → SR
DR and SR
SR →DR
DR+1 →DR
DR-1 →DR
SHL DR
SHR DR
判断是否转移
PC+OFFSET →PC
31
PC→AR ,PC+1 →PC
3A
伪中断指令,空操作
30
STR →Q, 判中断
不转移
B组
13
R0→IO
14
IO →R0
FLAG →MEM 16
MEM→FLAG 18
1A
SR →MEM
1C
MEM→DR
20 D组
MEM →Q
24
MEM →PC
PC→MEM ,Q →PC
SP-1→SP , AR
159
2)16位微程序入口地址映射表
序号
指令
编码
1
ADD DR, SR
0000 0000
2
SUB DR, SR
0000 0001
3
AND DR, SR
0000 0010
4
OR
DR, SR
0000 0110
5
XOR DR, SR
0000 0100
6
CMP DR, SR
0000 0011
7
TEST DR, SR
0000 0101
8
MVRR DR, SR
0000 0111
9
INC DR
0000 1001
10
DEC DR
0000 1000
11
SHL DR
0000 1010
12
SHR DR
0000 1011
13
JRC OFFSET
0100 0100
14
JRNC OFFSET
0100 0110
入口地址
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
10
备注
A组
A组
A组
A组
A组
A组
A组
A组
A组
A组
A组
A组
A组
A组
160
2)16位微程序入口地址映射表
序号
指令
编码
15
JRZ OFFSET
0100 0100
16
JRNZ OFFSET
0100 0111
17
JR OFFSET
0100 0001
18
IN PORT
1000 0010
19
OUT PORT
1000 0010
20
PSHF
1000 0100
21
PUSH SR
1000 0101
22
POP DR
1000 0111
23
POPF
1000 1100
24
STRR [DR], SR
1000 0011
25
LDRR DR, [SR]
1000 0001
26 MVRD DR, DATA 1000 1000
27
JMPA ADR
1000 0000
28
CALA ADR
1100 1110
29
RET
1000 1110
入口地址
10
10
11
12
12
15
15
17
17
19
1B
1D
1E
0E
23
备注
A组
A组
A组
B组
B组
B组
B组
B组
B组
B组
B组
B组
B组
C组
161
B组
控制存储器存储单元分配的情况:
对A组指令为每条指令用到的一条微指令各自分配一
个控制存储器单元,它们之间不存在制约关系,可
以从空闲的单元依次向后存放,因此A组的12条指
令对应的12 条微指令被依次分配到04~0F的控存单
元中。
对B组指令,理论上说,每条指令用到两条微指令;
对D组指令,每条指令用到4条微指令。但考虑到
有些微指令可以同时用于几条指令,适当设计好它
们之间的衔接关系,可少用一些控制存储器单元。
这是减少控制存储器容量的有效措施之一。几条不
同指令的微程序段可以有相同的入口地址,不同指
令的微程序段可能用到相同的微指令。
162
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器的控制
I2~I0必须为001
I5~I3必须为000
I8~I6为011(或010)
SST的值应为001(见下页)
SCI为00
SSH为00
SA、SB应为1
选择码
I2 I1 I0
数 据 来 源
R端
S端
0
0
0
A
Q
0
0
1
A
B
0
1
0
0
Q
0
1
1
0
B
1
0
0
0
A
1
0
1
D
A
1
1
0
D
Q
1
1
1
D
0163
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器的控制
I2~I0必须为001
I5~I3必须为000
I8~I6为011(或010)
SST的值应为001(见下页)
SCI为00
SSH为00
SA、SB应为1
选择码
I5 I4 I3
运算功
能
0
0
0
R+S
0
0
1
S-R
0
1
0
R-S
0
1
1
R∨S
1
0
0
R∧S
1
0
1
R∧S
1
1
0
R⊙S
1
1
1
R⊙S
164
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器的控制
I2~I0必须为001
I5~I3必须为000
I8~I6为011(或010)
SST的值应为001(见下页)
SCI为00
SSH为00
SA、SB应为1
I8 I7 I6
通 用
寄存器
000
Q
寄存器
Y
输出
F→Q
F
001
F
010
F→B
A
011
F→B
F
100
F/2→B
101
F/2→B
110
2F→B
111
2F→B
Q/2→Q
F
F
2Q→Q
F
F
165
输出Y
/OE
F
F3
F=0000
OVR
Cn+4
A L U
R
S
三选一
乘商寄存器Q
Q3
三选一
Q0
二选一
A
通用寄存器
RAM3
I2~I0
三选一
算逻运算部件
16 个 累加器
输入D
A锁存器
16个
组成
Cn
二选一
B锁存器
B
Am2901内部组成
I5~I3
A口地址
B口地址
I8~I6
RAM0
乘商寄存器 Q
功能
8种运算功能
8种数据组合
8种结果处理
166
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器的控制
I2~I0必须为001
I5~I3必须为000
I8~I6为011(或010)
SST的值应为001(见下页)
SCI为00
SSH为00
SA、SB应为1
167
选择码
标志寄存器内容变化
SST2 SST1 SST0
C
Z
V
S
V
S
说 明
0
0
0
C
Z
0
0
1
Cy
F=0
0
1
0
内部总线对硬的一位
0
1
1
0
Z
V
S
C置“0”,另3个标志位不变
1
0
0
1
Z
V
S
C置“1”,另3个标志位不变
1
0
1
RAM0 Z
V
S
右移操作,另3个标志位不变
1
1
0
RAM15Z
V
S
左移操作,另3个标志位不变
1
1
1
Q0
V
Z
OVR F15
S
4个标志位的值保持不变
接收ALU的标志位输出的值
恢复标志位原来的现场值
联合右移,另3个标志位不变
168
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器的控制
I2~I0必须为001
I5~I3必须为000
I8~I6为011(或010)
SST的值应为001
SCI为00
SSH为00
SA、SB应为1
选择码
SCI1 SCI0
指令举例
Cin
0
0
ADD,SUB
0
0
1
INC,DEC
1
1
0
ADC,SBB
C
169
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器的控制
I2~I0必须为001
I5~I3必须为000
I8~I6为011(或010)
SST的值应为001
SCI为00
SSH为00
SA、SB应为1
SSH
左
移
RAM0 Q0
右
移
RAM15 Q15
说
明
00
0
×
0
×
逻辑移位
01
C
×
C
×
与C循环移位
10
Q15 / F15
Cy
RAM0
11
×
×
F15 RAM0
OVR
原码除(左移)
原码乘(右移)
右移用于
补码乘法
170
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器的控制
I2~I0必须为001
I5~I3必须为000
I8~I6为011(或010)
SST的值应为001
SCI为00
SSH为00
SA、SB应为1
编 码
SA SB
A口
B口
0
0
微指令A口
微指令B口
1
1
IR的SR字段
IR的DR字段
171
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器之外的部件的控制
/MIO为1,REQ和/W为无关位
无专用寄存器接收
无其它数据送内部总线
/ MIO
REQ
/ WE
操作功
能
0
0
0
内存写
0
0
1
内存读
0
1
0
I / O写
0
1
1
I / O读
1
×
×
无读写
172
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器之外的部件的控制
/MIO为1,REQ和/W为无关位
无专用寄存器接收
无其它数据送内部总线
DC2 译码信号
操 作 说 明
不操作
000
NC
001
/ GIR
指令寄存器接收
010
/ GAR
地址寄存器接收
011
/INTR
恢复原中断优先级
100
/INTN
接收新中断优先级
110
/EI
开中断
111
/DI
关中断
173
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器之外的部件的控制
/MIO为1,REQ和/W为无关位
无专用寄存器接收,
无其它数据送内部总线时把数据开关 内容送到IB.(见下页)
174
DC1码
000
译码信号
操 作 说 明
/ SWTOIB 送开关内容到CPU内部总线
001
/ RTOIB
送ALU输出到CPU内部总线
010
/ ETOIB
16位机送IR低字节内容到数据总线
011
/ FTOIB
送程序状态字到内部总线
100
/ STOIB
16位机中不用
101
/INTVH
16位机中不用
110
/ INTV
送中断向量到内部总线
111
/ DI
无操作功能,不向内部总线发送数据
175
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器之外的部件的控制
/MIO为1,REQ和/W为无关位
无专用寄存器接收,
无其它数据送内部总线
下一条指令应转移到检查是否有中断请求,因此下地址字段
的内容应为30
176
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器之外的部件的控制
/MIO为1,REQ和/W为无关位
无专用寄存器接收,
无其它数据送内部总线
下一条指令应转移到检查是否有
中断请求,因此下地址字段的内容
应为30
CI3~CI0应为0011,指明是条件微转移
CI3 ~CI0
完成功能
0 0 0 0
初始化
0 0 1 0
MAPROM映射
0 0 1 1
条件微转移
1 1 1 0
顺序执行
177
4. 对设计结果的有关说明(见P166表4.6)
1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1000
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器之外的部件的控制
/MIO为1,REQ和/W为无关位
无专用寄存器接收,
无其它数据送内部总线
下一条指令应转移到检查是否有中断请求,因此下地址字段的内容
应为30
CI3~CI0应为0011,指明是条件微转移
SCC3~SCC0应为0000,指明必定转移(见下页)
178
功
能
(下面的条件满足时,使/CC=00)
SCC3 SCC2 SCC1 SCC0
(CI3~CI0=0011)
0000
必转移
0010
/INT=0时,转移
0100
JRC,JRNC,JRZ ,JNRZ条件不成立时,转移
0101
JRS,JRNS 条件不成立时,转移
0110
IRH2=0时,转移
0111
IRH0=1时,转移
179
4. 对设计结果的有关说明(见P166表4.6)
1)完成 “OR R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1011
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器的控制
I2~I0必须为001
I5~I3必须为011
I8~I6为011(或010)
SST的值应为001(见下页)
SCI为00
SSH为00
SA、SB应为1
选择码
I5 I4 I3
运算功
能
0
0
0
R+S
0
0
1
S-R
0
1
0
R-S
0
1
1
R∨S
1
0
0
R∧S
1
0
1
R∧S
1
1
0
R⊙S
1
1
1
R⊙S
180
4. 对设计结果的有关说明(见P166表4.6)
1)完成 “AND R0, R1”双操作数指令的微指令
CI ~ SCC3~ 0, /M, 0, SA, SB,
下址 CI3
0 SCC0 R, /W I2~I0 I8~I6 I5~I3
ADD DR+SR→DR 30 0011 0000 0100 0001 1011 1100
微址 指令 操作功能
04
SSH, DC DC
B口 A口 0,SST
2
1
SCI
0000 0000 0001 0000 0000 0000
(1)对运算器的控制
I2~I0必须为001
I5~I3必须为100
I8~I6为011(或010)
SST的值应为001(见下页)
SCI为00
SSH为00
SA、SB应为1
选择码
I5 I4 I3
运算功
能
0
0
0
R+S
0
0
1
S-R
0
1
0
R-S
0
1
1
R∨S
1
0
0
R∧S
1
0
1
R∧S
1
1
0
R⊙S
1
1
1
R⊙S
181
对指令的理解,我们只是略举了
“ADD DR,SR”为例进行说明。还有很
多指令,限于时间关系,没有一一讲解,
同学们可按此方法自行去理解。理解一
条指令要花费很多的时间,要翻阅前面
将过的各种控制信号的功能表,所以理
解一两条指令就可以了。注意理解指令
不是教学重点,教学要求的关键是掌握
微程序控制器的具体组成以及各组成的
功能。
182
模拟试题 二、3
说明计算机的组合逻辑控制器和微程序控
制器在组成和运行原理两个方面的同异之处,
比较它们的优缺点。
答案:
组合逻辑的控制器和微程序的控制器是
计算机中两种不同类型的控制器,其共同点
是:基本功能都是提供计算机各个部件协同
运行所需要的控制信号,组成部分都有程序
计数器PC,指令寄存器IR,都分成几个执行
步骤完成每一条指令的具体功能;
183
不同点主要表现在:处理指令执行步骤的办法,
提供控制信号的方案不一样,组合逻辑控制器是用
节拍发生器指明指令执行步骤,用组合逻辑电路直
接给出应提供的控制信号,其优点是运行速度明显
地快,缺点是设计与实现复杂些,但随着大规模现
场可编程集成电路的出现,该缺点已得到很大缓解;
微程序的控制器是通过微指令地址的衔接区分指令
执行步骤,应提供的控制信号是从控制存储器中读
出来的,并经过一个微指令寄存器送到被控制部件
的,其缺点是运行速度要慢一些,优点是设计与实
现简单些,易于用于实现系列计算机产品的控制器,
理论上可实现动态微程序设计。
184
2003年1月试题 三、6.在微程序的控制器中,使用
哪个部件来接续每条指令不同的执行步骤?有哪些
从当前微指令找到下一条微指令地址的办法(至少
说出3种)?(9分)
答:在微程序的控制器中,使用微程序定序器来
接续每条指令不同的执行步骤。
在微程序控制系统中,通常有以下办法找到下一
条微指令地址:①微程序顺序执行时,下地址为本
条微地址加1;②在微程序必定转向某一微地址时,
可以在微指令中的相关字段中给出该地址值;③按
微指令(上一条或本条)的某一执行结果的状态,
选择顺序执行或转向某一地址;④从微堆栈中取出
从微子程序返回到微主程序断点的返回地址,用于
微子程序返回处理;⑤依条件判断转向多条微指令
地址中的某一地址控制。
185
2004年7月试题
4.微程序控制器中,机器指令与微指令的关系
是(
)。
A.每一条机器指令由一条微指令来执行
B.每一条机器指令由一段微指令编成的微程序
来执行
C.一段机器指令组成的程序可由一条微指令来
执行
D.一条微指令由若干条机器指令组成
答案:B
186
2004年1月试题
4.微指令是指(
)。
A.一段机器指令
B.一条语句指令
C.一个微指令字
D.一条伪指令
答案:C
187
4.6 硬连线控制器部件
硬布线方案的控制器又称组合逻辑控制器。
基本运行原理:
把指令的操作码、指令执行步骤编码、以及其它的控制条
件作为输入,使用大量的组合逻辑门电路,直接提供出控
制计算机各功能部件协同运行所需要的控制信号。
优点:形成控制信号所需的信号传输延迟时间少,对
提高系统运行有利。
缺点:设计与实现复杂,变动设计很不方便。但随着
大规模可编程器件的出现,该缺点已得到很大缓解。
188
作业2.6. 简述计算机的控制器的功能
和基本组成。微程序的控制器和组合逻辑的
控制器在组成和运行原理方面的相同、不同
之出表现在哪里?
答案:
计算机的控制器的基本功能是提供计算
机各个部件协同运行所需要的控制信号,组
成部分都有程序计数器PC,指令寄存器IR,
脉冲源和启停控制逻辑,时序控制信号产生
部件。
189
组合逻辑的控制器和微程序的控制器是计
算机中两种不同类型的控制器,其共同点是:
基本功能都是提供计算机各个部件协同运行
所需要的控制信号,组成部分都有程序计数
器PC,指令寄存器IR,都分成几个执行步骤
完成每一条指令的具体功能;
190
不同点主要表现在:处理指令执行步
骤的办法,提供控制信号的方案不一样,
组合逻辑控制器是用节拍发生器指明指
令执行步骤,用组合逻辑电路直接给出
应提供的控制信号,其优点是运行速度
明显地快,缺点是设计与实现复杂些,
但随着大规模现场可编程集成电路的出
现,该缺点已得到很大缓解;
191
微程序的控制器是通过微指令地址的
衔接区分指令执行步骤,应提供的控制
信号是从控制存储器中读出来的,并经
过一个微指令寄存器送到被控制部件的,
其缺点是运行速度要慢一些,优点是设
计与实现简单些,易于用于实现系列计
算机产品的控制器,理论上可实现动态
微程序设计。
192
4.6.1 组合逻辑控制器的组成和运行原理简介
控制条件
时序控制
主振
译码
信号
时
序
形成部件
硬布线
方案的
控制器
PC
OP
….
启停
控制器信号
+1
DB数据总线
CB控制总线
AB地址总线
输出
输入
主
设备
设备
存
地
址
寄
存
器
运算器
部件
193
主要部件组成:
① 程序计数器PC:
② 指令寄存器IR:
③ 脉冲源和启停控制逻辑、
节拍发生器
④ 时序控制信号产生部件
194
① 程序计数器PC:用于保存一条指令在内存中
的地址,服务于读取指令,通常有自行增量功能,
并可接收下一条要执行的指令的地址。
② 指令寄存器IR:保存从内存读来的指令内容,
以便提供执行指令过程中要用到的指令本身的主
要信息。
③ 脉冲源和启停控制逻辑、节拍发生器
脉冲源和启停控制逻辑用于向各部件提供连续
(单个)的主振脉冲。节拍发生器用于标记每条
指令的各执行步骤的相对次序关系。
④ 时序控制信号产生部件
依据指令的操作码、指令的执行步骤以及条件
信号形成各部件当前时刻要用到的控制信号。 195
2000年7月试题 二、4. 简要说明组合逻辑控制器应
由哪几个功能部件组成?
答:组合逻辑控制器应由4 个功能部件组成:
(1)程序计数器PC,用于保存一条指令在内存中的
地址;
(2)指令寄存器IR,用于保存从内存读出的指令内
容;
(3 脉冲源和启停控制逻辑、节拍发生器,前者向计
算机各部件提供连续(单个)的主振脉冲,后者用
于标记每个指令的执行步骤的相对次序关系。
(4)时序控制信号产生部件,用于形成并提供计算
196
机各部件当前时刻要用到的控制信号。
设计控制器部件需经过三个阶段:
① 划分每一指令的执行步骤及在每一执
行步骤下的具体操作功能;
② 确定在实现这一操作功能时,相关部
件要使用哪些控制信号;
③ 需用什么具体逻辑电路,用什么处理
方案来形成并向各部件提供这些控制信号。
197
如何区分和表示指令的执行步骤?
用节拍发生器几个节拍信号来区分。
为每一个执行步骤分配确定的节拍状
态信号,执行完一个节拍的操作后,能
自动地变换为下一节拍状态,表明本节
拍操作的结束和新的一个节拍操作的开
始。
198
如何确定各功能部件使用哪些控制信号?
依据各功能部件本身的组成和控制要求来确定其需要的
控制信号。例如运算器Am2901需要24位控制信号。
组合逻辑控制器的时序控制信号形成部件如何提供各部
件的控制信号?
依据正在执行的指令操作码(保存在指令寄存器IR 中),
当前指令所处的执行步骤(由节拍发生器的节拍状态标记)
和某个(些)条件(状态标志位)等作为输入信号,用
“与—
或”逻辑门形成本节拍用到的控制信号(组合逻辑门)。
在控制信号的作用下,各功能部件完成预期的操作功能。
在教学机中,用现场可编程大规模集成电路实现。
199
4.6.2
TEC-2000教学计算机硬连线控制
器的组成、设计与实现
1.
硬连线控制器的实际组成
教学计算机的特点:
① 16位字长,常规指令由1(或2)个字节组成。
②运算器部件采用位片结构的器件Am2901芯片
实现,内有16个通用寄存器,规定R4作为堆栈指
针(SP),R5作为程序计数器(PC),能作通用
寄存器使用的只有14个寄存器。
③地址寄存器和地址总线为16位,可访问64K的
存储空间。
200
输出Y
/OE
F
F3
F=0000
OVR
Cn+4
A L U
R
S
三选一
乘商寄存器Q
Q3
三选一
Q0
二选一
A
通用寄存器
RAM3
I2~I0
三选一
算逻运算部件
16 个 累加器
输入D
A锁存器
16个
组成
Cn
二选一
B锁存器
B
Am2901内部组成
I5~I3
A口地址
B口地址
I8~I6
RAM0
乘商寄存器 Q
功能
8种运算功能
8种数据组合
8种结果处理
201
教学计算机的组合逻辑控制器组成框图
GAL1
GAL20V8
GAL3
GAL20V8
GAL2
GAL20V8
GAL5
GAL20V8
GAL7
GAL20V8
GAL4 GAL6
全部时序控制信号
节拍发生器
(5位触发器)
指令寄存器
(8位)
MACH4
程序计数器
(在运算器内部)
202
组成说明:
程序计数器PC 由Am2901的通用寄存器R5构成。
指令寄存器IR(8位)
节拍发生器(5位触发器的节拍状态)
时序信号形成部件
现场可编程大规模集成电路MACH4
现场可编程大规模集成电路GAL20V8(7片)
MACH4:产生已有指令的全部时序控制信号。
75片GAL20V8:用于产生扩展指令的全部时序控制信号。
大规模可编程器件内部由两级组合逻辑门电路组成。
输入信号:指令寄存器IR的内容;
节拍发生器的状态信号。
输出信号:全部时序控制信号。
203
2. 16位机的执行流程与节拍发生器设计
一条指令执行过程分为4个阶段:
读取指令;完成“地址寄存器←指令地址”,修
改PC内容,使其指向下一条用执行的指令,
读内存实现“指令寄存器←读出的指令”。
执行指令,通用寄存器之间运算或传送,可1步
完成:读、写内存或读、写外设操作,通常用
2步完成。
判断中断请求,有中断请求则转去响应中断并处
理,无中断请求则开始下一条指令的执行过程。
204
TEC-2000机指令按功能分组为A、B、C、D四组:
(1)A组基本指令:ADD、SUB、OR、XOR、
CMP、MVRR、INC、DEC、SHR、SHL、JR、
JRC、JRNC、JRZ、JRNZ。
功能:完成通用寄存器之间的数据运算或操作。
(2)B组基本指令:LDRR、STRR、 PUSH、 POP、
PSHF、POPF、MVRD,IN、OUT、JMAP、
RET
功能:完成一次读、写内存操作,或一次I/O设备的
读、写操作。分2步完成,第一步向地址寄存器传
送16位的(或8位的)内存(或I/O端口)地址,第
二步完成内存或外围设备的读、写操作。
205
TEC-2000机指令按功能分组为A、B、C、D四组:
(3)C组扩展指令:
CALR,SR(调用SR指明的子程序)
LDRA DR,[ADR] (DR←[ADR])
LDRX DR,OFFSET[SR] ( DR←[OFFSET+SR] )
STRX DR,OFFSET[SR] ( [OFFSET+SR] ← DR )
STRA [ADR],SR ([ADR] ←SR}
功能:完成两次内存储器的读、写操作。
正常情况下要用4步完成,每一次读写内存操作都要经过传送
地址和数据读写这两步。但后4条指令只需3步,因为头一
次读出的数据就是下一次读写操作要使用到的地址信息,
读出以后直接(或经过加法运算)将其写入地址寄存器。
CALR指令先用两步保存PC内容的堆栈,第三步把子程序
的入口地址传送的PC中。
206
TEC-2000机指令按功能分组为A、B、C、D四组:
(4) D组指令:
D组基本指令:CALA ADR (调用首地址为ADR的
子程序)
D组扩展指令:IRET (中断返回)
功能:完成两次读、写内存的操作,取指后可4步完
成。
对16位TEC-2000机控制器设计,首先进行的是划分
基本指令执行步骤和安排每个步骤执行的处理功能
的设计,得到设计结果即该机的指令执行流程。
(见下页)
207
1000
R5←0,关中断
按RESET键
B、C、D组指令
0000
PC←AR,
PC ←PC+1
0010
读内存,
IR ←读出内容
A组指令
0011
寄存器之间的
数据运算或传送
响应与处理
0110
传送地址,
AR ←地址
C组指令
0111
D组指令
传送地址,
AR ←地址
0100
读、写内存
或读写外设
0101
读写内存回
寄存器间传送
TEC-2000机的基本指令流程图
208
对TEC-2000机的基本指令流程图的说明
 每一个方框代表指令的一个执行步骤,即一个节拍,
方框中的文字说明该节拍应完成的主要操作功能。
 方框左上角的4位数字,是该节拍的节拍状态编码。
 1000状态,完成把0值送入PC,用于加电后按RESET
键启动固化中ROM中的监控程序,正常执行时不会进
入这个步骤。
 0000和0010状态完成读取指令操作,公用于所有指令,
与指令的操作码无关。读取指令的两个节拍之间的状
态转换不受外界条件制约,是无条件的。
 虚线框表示响应中断的操作功能,这一 执行过程同样
公用于所有指令的结束处理。每一条指令结束前,
CPU都测试有无中断请求出现,有并且其优先级较高,
则响应中断,否则进入下一条指令的执行过程。
209
1000
R5←0,关中断
按RESET键
B、C、D组指令
0000
PC←AR,
PC ←PC+1
0010
读内存,
IR ←读出内容
A组指令
0011
寄存器之间的
数据运算或传送
响应与处理
0110
传送地址,
AR ←地址
C组指令
0111
D组指令
传送地址,
AR ←地址
0100
读、写内存
或读写外设
0101
读写内存回
寄存器间传送
TEC-2000机的基本指令流程图
210
对TEC-2000机的基本指令流程图的说明
 A组指令将进入标记为0011状态的节拍,用一步完成
寄存器之间的数据运算或传送。
A组基本指令:ADD、SUB、OR、XOR、CMP、
MVRR、INC、DEC、SHR、SHL、JR、JRC、
JRNC、JRZ、JRNZ。
功能:完成通用寄存器之间的数据运算或操作。
211
1000
R5←0,关中断
按RESET键
B、C、D组指令
0000
PC←AR,
PC ←PC+1
0010
读内存,
IR ←读出内容
A组指令
0011
寄存器之间的
数据运算或传送
响应与处理
0110
传送地址,
AR ←地址
C组指令
0111
D组指令
传送地址,
AR ←地址
0100
读、写内存
或读写外设
0101
读写内存回
寄存器间传送
TEC-2000机的基本指令流程图
212
对TEC-2000机的基本指令流程图的说明
B组指令将先进入标记为0110状态的节拍,再
经过标记为0100的节拍,分两步完成一次对主
存储器或IO设备的读写操作。
B组基本指令:LDRR、STRR、 PUSH、 POP、
PSHF、POPF、MVRD,IN、OUT、JMAP、
RET
功能:完成一次读、写内存操作,或一次I/O设
备的读、写操作。分2步完成,第一步向地址
寄存器传送16位的(或8位的)内存(或I/O端
口)地址,第二步完成内存或外围设备的读、
写操作。
213
1000
R5←0,关中断
按RESET键
B、C、D组指令
0000
PC←AR,
PC ←PC+1
0010
读内存,
IR ←读出内容
A组指令
0011
寄存器之间的
数据运算或传送
响应与处理
0110
传送地址,
AR ←地址
C组指令
0111
D组指令
传送地址,
AR ←地址
0100
读、写内存
或读写外设
0101
读写内存回
寄存器间传送
TEC-2000机的基本指令流程图
214
对TEC-2000机的基本指令流程图的说明
 C组指令将先进入标记为0110状态的节拍,再经过标记为0111的节拍、
0101的节拍,用3步完成两次内存储器的读写操作。
C组扩展指令:
CALR,SR(调用SR指明的子程序)
LDRA DR,[ADR] (DR←[ADR])
LDRX DR,OFFSET[SR] ( DR←[OFFSET+SR] )
STRX DR,OFFSET[SR] ( [OFFSET+SR] ← DR )
STRA [ADR],SR ([ADR] ←SR}
功能:完成两次内存储器的读、写操作。
正常情况下要用4步完成,每一次读写内存操作都要经过传送地址和数据
读写这两步。但后4条指令只需3步,因为头一次读出的数据就是下一次
读写操作要使用到的地址信息,读出以后直接(或经过加法运算)将其
写入地址寄存器。CALR指令先用两步保存PC内容的堆栈,第三步把
子程序的入口地址传送的PC中。
215
对TEC-2000机的基本指令流程图的说明
D组指令将先进入标记为0110状态的节拍,再
经过标记为0100的节拍、0111节拍、0101的节
拍,用4步完成两次内存储器的读写操作。
D组基本指令:CALA ADR (调用首地址为
ADR的子程序)
D组扩展指令:IRET (中断返回)
功能:完成两次读、写内存的操作,取指后可4
步完成。
216
1000
R5←0,关中断
按RESET键
B、C、D组指令
0000
PC←AR,
PC ←PC+1
0010
读内存,
IR ←读出内容
A组指令
0011
寄存器之间的
数据运算或传送
响应与处理
0110
传送地址,
AR ←地址
C组指令
0111
D组指令
传送地址,
AR ←地址
0100
读、写内存
或读写外设
0101
读写内存回
寄存器间传送
TEC-2000机的基本指令流程图
217
对TEC-2000机的基本指令流程图的说明
——各个节拍完成的基本操作:
0011节拍主要完成寄存器之间的数据(地址)
运算或传送。
0110、0111节拍主要完成运算和传送内存储器
或IO接口的地址到地址寄存器中。
0100、0101节拍主要完成内存储器或IO接口的
读写操作。
0000、0010节拍完成读内存储器的操作,只是
规定由程序计数器PC提供内存储器的地址,
读出的内容传送到指令寄存器中。
218
1000
R5←0,关中断
按RESET键
B、C、D组指令
0000
PC←AR,
PC ←PC+1
0010
读内存,
IR ←读出内容
A组指令
0011
寄存器之间的
数据运算或传送
响应与处理
0110
传送地址,
AR ←地址
C组指令
0111
D组指令
传送地址,
AR ←地址
0100
读、写内存
或读写外设
0101
读写内存回
寄存器间传送
TEC-2000机的基本指令流程图
219
2)节拍发生器的逻辑设计与线路实现
考虑的主要问题:
(1)触发器的输出能组合出的状态数,能大于、等于为指令
系统全部指令所分配的执行状态的数目。本设计中节拍发
生器由4位触发器组成。
(2)合理为各节拍状态分配编码(遵循3个原则)
①从一个状态变化到另一个状态时,状态发生器变化的触发器
应尽量少,以有利于简化节拍发生器的逻辑线路和改善节
拍发生器输出信号的译码波形。
②安排的节拍应有利于简化时序控制信号形成部件的设计,有
利于简化时序控制信号的逻辑表达式。
③必须清楚地指出节拍状态变化所依据的条件。例如,在完成
读取指令之后,要依据指令分组规定,先按A组和非A组指
令进行分支,对非A组指令,之后还要依据B、C、D组进一
步进行分支。
220
1000
R5←0,关中断
按RESET键
B、C、D组指令
0000
PC←AR,
PC ←PC+1
0010
读内存,
IR ←读出内容
A组指令
0011
寄存器之间的
数据运算或传送
响应与处理
0110
传送地址,
AR ←地址
C组指令
0111
D组指令
传送地址,
AR ←地址
0100
读、写内存
或读写外设
0101
读写内存回
寄存器间传送
TEC-2000机的基本指令流程图
221
2)节拍发生器的逻辑设计与线路实现
节拍发生器的线路实现
先写出每位触发器状态转换的逻辑图,即
把每位触发器在状态图在的全部状态变
化,用一个由与、或两级逻辑组成的表
达式完整地表示出来,最后由可编程逻
辑电路实现。
222
3. 16位机的时序控制信号形成部件设计
1)设计指令流程中各时序控制信号的状态值
时序控制信号形成部件的功能机输入输出信号:
时序控制信号形成部件的功能是为计算机各个执
行部件(包括控制器本身)提供指令每一个执
行步骤协调运行所需要的控制信号。它的输入
信号包括指令寄存器的输出(操作码和操作数
形成地址),节拍发生器的输出(指令执行步
骤信号)和条件转移指令所依据的条件判断信
号,其输出是计算机各部件允许所需要的控制
信号。
223
3. 16位机的时序控制信号形成部件设计
1)设计指令流程中各时序控制信号的状态值
时序控制信号与微指令命令控制字段的异同:
相同点:两种控制器需要控制的除控制器本身之
外的的控制对象完全相同。
不同点:两种控制器对控制器本身的控制办法有
所差别。微程序控制器是通过微指令的下地址
字段处理不同微指令之间的接续关系来实现指
令执行步骤的顺序关系;而硬连线控制器则是
通过节拍发生器的节拍状态转换来实现指令执
行步骤的顺序关系。
224
3. 16位机的时序控制信号形成部件设计
1)设计指令流程中各时序控制信号的状态值
在划分完指令执行步骤(流程),确定好全部时序控
制信号的组成之后,接下来的工作是根据每每条指
令每一个节拍所执行的功能,设计要求它所提供的
控制信号的状态值。
这里要做的工作就是依据已经完成的指令执行流程,
把33位控制信号的取值情况(与微程序控制器中一
条微指令的控制命令字段的内容相同)填到指令流
程表中每一个方格中去,也就是依据指令流程中每
一个节拍应完成的操作功能,找出需要使用的各个
(组)控制信号的编码值。(见P181表4.7)
225
3. 16位机的时序控制信号形成部件设计
2)时序信号形成部件的逻辑设计和线路实现
写出时序信号的逻辑表达式,主要是设计用于控制计算机
其它功能部件的每一个时序信号的逻辑表达式。其做法
上把指令流程表中每一个控制信号的全部情形完整地表
达出来(某控制信号若取值为1,写原变量,若取值为0,
则写反变量),即哪一条指令(操作码)的哪一个执行
步骤(节拍发生器的状态)、在什么条件才要求这一控
制信号的值为1(或为0),用一个“与”把这几项要求
组合在一起够成一个乘积项,再用“或”关系把这个控
制信号设计的全部乘积项汇总成一个逻辑表达式。(过
程省略)
226
3. 16位机的时序控制信号形成部件设计
2)时序信号形成部件的逻辑设计和线路实
现
完成设计并充分检查设计结果的正确性之后,就
可以用编程器将设计的逻辑表达式写到先的由
两级逻辑门电路组成的现场可编程器件中,再
安装到计算机主版上进行调试,最后得到能运
行正确的控制器部件。
227
2003年1月试题 三、7
从原理上讲,若不计算读取指令和检查
有无中断请求的处理过程,下述类型的指令
各自要用几个执行步骤来完成相应的操作要
求,并写出每一步完成的具体功能。(每个
3分,共9分)
a.CPU内部的寄存器和寄存器之间的数据
运算与传送。
b.主存储器的一个存储单元与一个累加器
之间的数据传送。
c.主存储器的2个存储单元之间的数据传
送
228
a.CPU内部的寄存器和寄存器之间的数据运算与传
送。
只需要一步可能完成CPU内部的寄存器和寄存器
之间的数据运算与传送操作。
b.主存储器的一个存储单元与一个累加器之间的数
据传送。
①将存放源操作数的主存储器单元地址送地址寄
存器;②将存放源操作数的主存储器单元内容送累
加器。
c.主存储器的2个存储单元之间的数据传送。
①将存放源操作数的主存储器单元地址送地址寄
存器;②将存放源操作数的主存储器单元内容送累
加器;③将目的主存储器单元目的地址送地址寄存
器;④将累加器内容送目的地址指定的存储单元。
229
2001年1月试题 二、2
简要说明条件转移指令和无条件转移指
令的相同点和不同点?子程序调用指令与转
移指令的区别是什么?
答:(1)条件转移指令和无条件转移指令的
相同点是必须在指令中给出转移地址,不同
点在于条件转移指令还必须在指令中给出判
断是否执行转移所依据的条件。
(2)子程序调用指令与转移指令的区别在于
子程序调用指令转移之后还有一个对应的返
回过程,而一般的转移指令并不涉及转移走
后是否如何再次转移回来。
230
2001年1月试题 二、4.
简要说明组合逻辑控制器中的节拍发生
器的作用是什么?简述它的运行原理。
答案:
(1)组合逻辑控制器中的节拍发生器的
作用是提供执行每一条指令的步骤(时序)
的标记信号和时序脉冲信号。
(2) 它是用时序逻辑方式运行的,依据
当前的时序状态信息,指令的操作码信息,
可能还看指令执行状态的有关信息等,确定
出下一个时序状态的值。
231
2001年7月试题
二、2
在组合逻辑有控制器中,节拍发生器
[TIMING]的作用在于指明指令的执行( ),
它是一个典型的( )逻辑电路,从一个节拍
状态变至下一个节拍状态时,同时翻转的触
发器数目以尽可能的( )为好。
A. 快 B.时序 C.多 D.组合 E.数
据 F.控制 G.类型 H.少 I.次
序
J.状态 K.过程
L.步骤
答案:L
B
H
232
2002年7月试题 三、3.在组合逻辑的控制器
中,是哪个部件并通过什么办法来区分每条
指令不同的执行步骤?在教学实验中,要扩
展加进几条新指令,需要经过哪几个设计步
骤?又是通过什么办法并如何来协调原有指
令与扩展指令用到的不同控制信号的关系?
(9分)
答:在组合逻辑的控制器中,是用节拍发
生器来区分每条指令不同的执行步骤的。节
拍发生器提供执行每一条指令的步骤(时序)
的标记信号和时序脉冲信号;它能按时序逻
辑方式运行,依据当前的时序状态信息,指
令的操作码信息,可能还看指令执行状态的
233
有关信息等,确定出下一个时序状态的值。
在教学实验中,要扩展加进几条新指令,需要经
过如下设计步骤:①定义新指令的格式和功能;②
设计指令的执行流程;选择具体实现中采用的逻辑
线路;③设计可编程器件的信息组成和内容等。
实验时应正确处理原有指令与扩展指令用到的
控制信号的关系:①在指令格式、指令分组等安排
上,新设计的指令应该和已有的指令基本相同,至
少不能相互冲突;②对新设计的指令,只实现其流
程中具体执行步骤的控制信号,读取指令、检查中
断请求等共同操作部分使用已有指令中提供的控制
信号;③节拍发生器可能需要变化和修改,例如增
加一个节拍状态,但不能破坏原有指令的执行;④
新老指令应该在同一个程序中正常执行。
234
试题六 三、7.从概念上讲,有哪几种指令会
通过给出一个新的指令地址来改变指令顺序执行的
情况?通常可以采用什么方案在指令中给出新的指
令地址(至少说出3种)和其它有关信息?(9分)
答:无条件转移指令,条件转移指令,子程序调
用指令和子程序返回指令,中断返回指令等可以改
变指令执行的次序(不再是顺序执行);在指令字
中,可以通过给出寄存器编号,把该寄存器的内容
作为新的指令地址;可以用指令的第二个字直接给
出一个新的指令地址;也可以通过给出一个偏移值
(可以为正或负值)与当前指令地址相加求得新指
令的地址(相对转移)。对条件转移指令,还应该
在指令字中给出依据什么条件判定是否应该转移的
信息,仅在条件成立时才转移,否则顺序执行下一
条相邻指令。
235
2002年1月 三、1
1.在教学计算机中,设计者只实现了约30条指
令,留下另外约30条指令,交由实验人员选
择其中若干条自己来设计指令格式、功能和
执行流程,并在教学机上调试正确。请回答:
你在设计与实现自己的指令过程中,是怎样
看待和处理你的指令和已经实现的指令的关
系的?至少举例说明3点。(7分)
236
答案:
实验时应正确处理扩展指令与已有指令的关系:
(1)在指令格式、指令分组等安排上,新设计的指
令应该和已有的指令基本相同,至少不能相互冲突;
(2)对新设计的指令,只实现其流程中具体执行步
骤的控制信号,读取指令、检查中断请求等共同操
作部分使用已有指令中提供的控制信号;
(3)节拍发生器可能需要变化和修改,例如增加一
个节拍状态,但不能破坏原有指令的执行;
(4)新老指令应该在同一个程序中正常执行。
237