当输入不在代码中时,代码会提示用户输入

Code prompts user for an input when an input isn't in the code

提问人:HeyitsTremani 提问时间:11/17/2023 最后编辑:Daniel A. WhiteHeyitsTremani 更新时间:11/17/2023 访问量:27

问:

所以我写了这个 MARIE 代码,每次我尝试运行它时,它都会提示我输入输入,而我从未将 Input 放在代码中的任何位置。该代码应该调用 2 个子例程 PUSH 和 POP,其中 push 将元素 4、6、8 推送到堆栈中,而 POP 则将其删除

代码如下:

ORG 000

PTR, HEX 0002

STACK, HEX 1111
      HEX 2222
      HEX 3333
      HEX 4444
      HEX 5555
      HEX 6666
      HEX 7777

A,    HEX 0004
B,    HEX 0006
C,    HEX 0008

ONE,  HEX 0001
PBUFF,HEX 1234

Load A
Store PBUFF
JnS PUSH

Load B
Store PBUFF
JnS PUSH

Load C
Store PBUFF
JnS PUSH

Halt

PUSH, HEX 000
     Load PBUFF
     StoreI PTR
     Output

     Load PTR
     Add ONE
     Store PTR
     JUMP PUSH  // Use a regular JUMP instead of JUMP I (0)

POP,  HEX 000
Load PTR        // Load the current value of PTR
Subt ONE        // Decrement PTR
Store PTR       // Store the updated value back in PTR

LoadI PTR       // Load the value from the stack at the updated address
Output          / Output the value

Halt

我已经和一位导师一起工作了 2 天,我们知道,我们俩都不知道代码有什么问题以及为什么会这样做。

组装 玛丽

评论

2赞 jasonharper 11/17/2023
MARIE 代码从地址 0 开始执行 - 但是您在地址 0 处没有代码,您有各种初始化数据。这些值中的每一个在执行时都会做一些事情,显然其中一个值实际上是一个操作码。您需要将所有数据移动到主代码之后的某个位置 - 它可以在子例程之前或之后。Input
0赞 Erik Eidt 11/17/2023
尝试单步执行,看看发生了什么。问题在于你错过了一个入口点的概念,它可能就像跳过你的数据一样简单。如果你尝试单步,你会立即看到这一点。

答: 暂无答案