出于教育目的(教小学生和学生使用设备和试剂,进行实验),我们设计了一台生物计算机。它的逻辑,正如我在“布尔值/非二进制系统的触发器”主题中提到的,可以从二进制到五倍。寄存器的数量,形式上是任意的,但我们没有无限的资源,所以更容易说寄存器的数量是 8 个,“可寻址存储单元”的数量不超过 100 个。这一百个单元可以参考到几乎任何长度(也有合理限制)的数组,每个单元的位深度为 4 位(AGTC)。
目前,我们“教”它执行以下整数算术运算:ADD、SUB、MUL 和命令可以同时使用寄存器和两个数组执行 - 即 c[i]:= a [i]+b[i];逻辑运算 AND、NOT、OR(也可以用数组执行它们);无条件跳转 JMP;有条件地转换到寄存器相等,到它们的不等式,到寄存器相等到零。现在我们正在处理按位左移和右移。
当然,实现寄存器和内存之间交换的命令。没错,它们是最慢的。
从指定的指令集,我们是否可以创建其他操作,特别是我们是否对除法操作感兴趣?
更新 1
是的,我忘了提到一个重要条件:我们不能在一行中对一个或一对寄存器执行相同的算术运算超过 5-6 次。是的,您可以将结果转移到另一个寄存器,但这很慢(实际上是手动工作)。
更新 2
关于寄存器。寄存器与经典的汇编器非常相似,但其中 AL 是低字节,AH 是高字节,AX 是两个字节。我们有相同的,但你仍然可以参考任何一个小点,甚至是旧的。
好吧,我们的旗帜根本没有竖起。如果您在半字节中添加 9 和 9 并在半字节中请求结果,您将得到 4。不会引发任何标志。
更新 3
一次实现了右移和左移 4 位,循环和零填充。您可以重复任意次数。我们还不知道如何按位进行(仅在左侧 - 通过乘以 2,“更便宜”不起作用)。旗帜仍然没有竖起任何:)
我很高兴关注您在生物信息学方面的问题。实际上,我有一个想法,如果为时不晚,如何可以根据分子生物学进行划分,而不是专注于已经创建的组装指令。
据我了解,您的寄存器是试管或一组,您在体外进行所有更改。如果我是对的,您可以将除以 n 视为稀释 n 倍,然后取相同体积的等分试样:浓度下降 n 倍,您得到整数除法的商。您可以考虑如何获得其余部分。
如果您通过探针的发光来确定浓度,我认为这是一个很好的解决方案。