如何访问 SUBLEQ

问题描述

我最近开始学习 SUBLEQ One 指令集计算机,目前正在尝试为我编写的 SUBLEQ 仿真器编写一个简单的汇编程序。到目前为止,我已经实现了 DB、MOV、INC 和 DEC,但是当它有指针作为参数时,我对 MOV 指令有点挣扎。
例如:MOV 20,21 在 SUBLEQ 中将数据从地址 21 移动到地址 20 如下所示(假设地址 100 为零并且程序从地址零开始):

sble 20 20 3
sble 21 100 6
sble 100 20 9

目标地址处的内容清零,源地址处的内容通过减去两次添加到目的地。

现在我的问题是:如果一个参数是一个指针,例如 MOV 20,[21] 以便地址 21 的内容指向我想要复制到地址 20 的真实数据,那么如何使用 SUBLEQ 表示?

解决方法

我首先要说的是,我对 subleq 在实践中的使用知之甚少,所以对这个答案持保留态度:

subleq 的一个缺点是众所周知难以使用指针,但它可以编辑自己的代码。这意味着您将不得不使用代码重写正在查看的地址,其值为 21。

例如,如果您以某种方式将代码转到当前代码后附加的行,您可以使用:

# (I used the quotes to mean next line)
sble 3 3 " # set the first value of the second instruction to 0
sble 21 101 " # put the value of 21 into an unused address
sble 101 3 " # subtract the value of 101 and put it back into the code
sble 3 3 " # reset the value at 3 to 0

必须有一个 movp(移动指针)命令可能是一个不错的决定,这样你就不会在运行时不小心弄乱你的 mov 命令代码

这意味着必须针对某人遇到的每个问题以不同的方式考虑使用指针的新方法,但通常会通过使用代码编辑代码来完成