新的架构来了,本游戏的最后一个攻略分享,最后汇编部分无非是对于操作码的熟练,硬件没有问题,那么也就无关痛痒了。
汇编实现,两数相或和两数相与非一起相与即可。
八位异或器,整就完事了。
有手就行。
利用相等相减全零的原理。
从高位到低位去判断,如果高位小于第二个直接输结果,如果不大于,就打开下面一位的检测通路再进行判断。
这个和上面无符号小于差不多,多判断了一下符号位。
判断PC的奇偶,加个3-8译码器,判断奇偶,奇数一定是最后一位是1的,所以激活选通输出。
这关的话。就是一个新的架构了,一次读4条机器码,分别是OP s1 s2 addr,addr相当于结果送到哪。这关由于之后关卡也会复用,所以我已经加了很多东西进去了。然后就是控制存储。写入的时候,加一个常数与地址总线上过来的数字进行比较,相等就激活并打开输入输出。
操作码也相当的简洁,共八位,前两位分别控制s1是立即数还是s2是立即数,第三位判断是否选择是进行比较,然后跳转到指定的行数(此时,前面说的第四个addr就会作为下一个地址传入PC的寄存器)。后五位在第三位没有激活的情况下是用于选择计算(包含简单的MOV),第三位激活之后,就进行判断了,例如大于小于。
RAM部分:另外存在一个RAM寻址寄存器,外加了一个自动加一的计数器,这样的话,设置好基地址,就可以自动的一个一个扫描RAM(这个是后面其中某关的要求)。RAM选定读取写入的操作类似于寄存器。
堆栈部分:
寄存器组:(6个,实则可以拓展,包括栈和ram在内的,存储器件个数只要不超过2的八次方的寻址空间)
运算:(条件选择和这个相同,都是判断OP和指定数字是否相同,相同就激活计算结果,送结果总线,蓝色的那条)
除法器的除零特殊处理。
机器外的输入输出(这里把他们都挂载到7号了,和寄存器等内存器件的选择方法一致):
PC:这里青色即执行比较和JMP指令通过的命令,准备进行跳转,浅蓝色是新传入的地址(如果前面青色线传1,即跳转,那么直接吧addr线,也就是深蓝色线的数字传进PC),如果不是进行比较,而指令中的addr是6,那么直接把之前运算结果传,也就是浅蓝色(结果总线的内容)传入PC作为新的地址。平常情况下不会把那个自动计数器状态设置为置数状态。
另外,此游戏右键特别灵敏,点住就会很快的删除一根导线,就很容易误触缺线,谨慎操作。
FIN