我必须为每个小人计算机指令(ADD、SUB、BR、BRP 等)定义步骤,并且我在分支指令和 COB(或停止指令)方面遇到问题。我理解每条指令开头的获取部分:
电脑 -> 三月
多重耐药 -> 红外
但我不确定在执行部分添加什么才能使指令真正正确。谁能解释一下如何为 BR、BRP、BRZ 和 COB 进行获取执行周期?任何帮助将不胜感激
首先,澜湄合作是一个虚拟的概念。它有多种解释和实现,有时可能会发生冲突。因此哪个答案是正确的可能取决于您正在使用的课程材料。
为了避免混淆,我们可以使用以下定义:
寄存器和内存
- MAILBOX:这是处理单元外部的存储器。它有 100 个条目,用于存储 3 位数字。
- PC:程序计数器(两位数)
- MAR:内存地址寄存器:临时保存邮箱的2位地址,用于读取或存储MDR中的值。
- MDR:内存数据寄存器:临时保存正在传输到邮箱或从邮箱传输的 3 位数据。
- IR:指令寄存器:包括操作码(1 或 3 位数字),有时还包括 2 位地址
- ACC:累加器:3 位数值
- N:负标志:要么打开,要么关闭。这方面在最初的 LMC 中没有得到很好的定义。一些模拟器允许 ACC 保存负值,因此不需要额外的标志,而其他模拟器会认为 ACC 严格限制为三位数字,不支持负号。由于真正的 CPU 通常有一个 N(负)标志,我认为将该标志想象为一个单独的东西是合理的。
- Z:零标志:打开或关闭。这指示 ACC 是否具有零值。这是否真的应该作为一个单独的标志存在比 N 标志更有争议,但我在这里只是将其列为一种可能性。
获取步骤
获取执行周期的获取部分始终是相同的——我更喜欢以相反的方向编写赋值:
我们可以讨论最后一步的确切顺序。 PC 的更新可以在步骤 2 和 3 之前或同时进行。
执行步骤
取指执行周期的执行部分取决于 IR 的内容:操作码(1 位数字,或者 901 或 902IN
/OUT
) 被解释。例如:
根据您的课程材料,您可能不需要提及 N 或 Z 标志。在这种情况下,只需将条件分别替换为“ACC 为负”和“ACC 为零”。
请注意,我没有涉及这四个指令的 MAR 或 MDR 寄存器——直接将值从 IR 移动到 PC——因为 MAR 和 MDR 仅用于处理单元和内存之间的通信。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)