Assembly 基础计算机。如何实现跳转平等

Assembly 基础计算机。如何实现跳转平等,assembly,cpu-architecture,Assembly,Cpu Architecture,在我正在学习的一门课程中,我需要在软件上制作一台基本的计算机。 目前我有一个RAM、ROM、程序计数器(PC)、ALU、REG a、REG B、MUX a、MUX B和一个控制单元。 现在,在ROM上,我有一个指令列表,其中每个位被发送到不同的部分,例如,MUX、REG、ALU(只能加和减)、loadPC(跳转到指令)。 该ROM每条指令有25位,255条指令。它类似于汇编中的编码,但更简单。 需要注意的是,在ALU输出中,我有一个“z”位,当ALU结果为0时,该位仅为1 现在,从我理解的跳转开

在我正在学习的一门课程中,我需要在软件上制作一台基本的计算机。 目前我有一个RAM、ROM、程序计数器(PC)、ALU、REG a、REG B、MUX a、MUX B和一个控制单元。 现在,在ROM上,我有一个指令列表,其中每个位被发送到不同的部分,例如,MUX、REG、ALU(只能加和减)、loadPC(跳转到指令)。 该ROM每条指令有25位,255条指令。它类似于汇编中的编码,但更简单。 需要注意的是,在ALU输出中,我有一个“z”位,当ALU结果为0时,该位仅为1

现在,从我理解的跳转开始,我需要将文本设置为我想要跳转的内存,并将loadPC设置为1。 我想看看B==5,所以在汇编中 CMP B,5 JEQ(插入内存以跳转)

CMP实际上是B-5,如果B==5,那么结果是0,那么z=1。 只有z=1时,JEQ intsruction才会加载PC

现在,我的问题是,如何在我的计算机上实现这一点。我需要多一点吗? 目前,我创建了一个新位,并始终将其设置为0,JEQ指令中除外。让我们称这个位为“v” 我的loadPC现在通过一个逻辑框,其中输入为“v”“z”和“loadPC”,输出为新的“loadPC” (v或z)和(loadPC)。
然而,这种方法似乎不太优雅,我如何才能以更好的方式做到这一点?

这个问题有点模棱两可。你是在问如何做,还是最佳实践是什么?在大多数教科书中,你会发现有一个多路复用器,它的输出进入PC寄存器。该多路复用器的输入为当前PC+4(或指令大小为多少)和跳转目标。多路复用器由单位输入控制。该输入可以是“当前指令是否为跳转”和“是否为零位/寄存器集”的逻辑AND。这很好,因为你总是在一条指令后更新电脑,这不是有条件的,只是需要确定的值

祝你好运

注意:不要使用“v”,因为这有时指的是溢出标志