DJ7-3 模型机指令系统及通路结构(第二节课)

3. 指令操作类型

(1)传送类指令

模型机中采用I/O端口和主存统一编址的方式,使用隐式I/O指令。

(2)双地址指令

(3)单地址指令

  • COM —— 求反
  • NEG —— 求补
  • INC —— 加一
  • DEC —— 减一
  • SL —— 左移
  • SR —— 右移

(4)程序控制类指令

(5)转移类指令

条件满足,转向转移地址;否则,按顺序执行。

下面具体介绍JMP、RST、JSR指令。


1. JMP

根据有效地址获得的操作数 为转移地址。

X(PC)是特例:

“若指定的寄存器是程序计数器PC,就是相对寻址。取指后PC+1,以修改的PC内容为基准地址,从紧跟现行指令的存储单元中读取偏移量,二者相加,获得有效地址。”

在JMP的第3位到第0位中的某标志位为1,表明以PSW中的对应特征位作为转移条件,因此JMP指令的第3位到第0位与PSW的第3位到第0位分别对应。

JMP的第5位决定转移条件为0有效还是为1有效。


回顾:程序状态字寄存器PSW

 

每次运算结束后,CPU会根据运算结果自动设置标志位。

转移类指令中的C’代表以C标志位作为转移判断条件,PSW中的C代表C标志位。

JMP/RST指令的最低六位是转移条件字段,其中第5位是条件模式位,第4位未使用(无关项),第3位到第0位指示的标志位与程序状态字PSW的第3位到第0位分别对应。


转移条件字段与对应的功能

4~0位不可能同时出现两个 1,否则不知道该以哪个标志位为转移判断条件。

2. RST

无条件转移

约定只能是SP,只能是(SP)+ —— 出栈。

3. JSR

隐含约定:转子时返回地址必须压栈保存,同时子程序的最后一条指令必须是返回指令。

因为转走以后还要能转回来

 


  • 在子程序中再调用子程序
  • 在程序中自己使用堆栈

由图可知,自己的压栈操作和弹栈操作要成对,否则程序无法返回到正确的位置。

三、模型机的组成和数据通路

1. 部件设置

(1)寄存器

可编程寄存器(寄存器位宽为16位)

  • 通用寄存器:R0 ~ R3
  • 堆栈指针:SP
  • 指令计数器:PC
  • 程序状态字:PSW


非编程寄存器(寄存器位宽为16位) 

  • 暂存器C:暂存来自主存的源地址或源数据。
  • 暂存器D:暂存来自主存的目的地址或目的数。
  • 指令寄存器IR
  • 地址寄存器MAR
  • 数据寄存器MDR

下面对IR、MAR、MDR进行具体介绍。


指令寄存器IR:用于存放现行指令。 

工作流程:

SIR称为置入命令,又称开门信号。

通过R、S端直接置入,速度快!

地址寄存器MAR:CPU访问主存或I/O的地址由MAR提供。

工作流程:

数据寄存器MDR

CPU存入主存或者I/O的内容先放入MDR,读取到的主存或者I/O的内容也先送入MDR。

工作流程1:

MDR可以与CPU内的部件交换数据。

  • 接收来自CPU内部总线的数据
  • 将数据送入ALU的多路选择器B

工作流程2:

接收来自数据总线的数据。

工作流程3:

将CPU输出的数据送往数据总线。

(2)运算部件设置(位宽为16位)

ALU芯片构成:

  • SN74181 4片 —— 组内并行
  • SN74182 1片 —— 组间并行

多路选择器:A 和 B —— 用于选择数据来源

移位器:用于实现直传、左移、右移、字节交换

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值