3
LOOP    LDA COUNT
        SUB 1
        STA COUNT
        OUT 
        BRA PROGEND
        HLT
COUNT   DAT 11
ONE     DAT 1

对我来说,这似乎非常基本和简单,并且根据我的数学知识,它应该有效:显然不是。

所以请帮助

4

1 回答 1

0

这段代码有几个问题:

  • SUB不接受文字数字作为参数。该参数是一个地址,因此在您的情况下,它应该读取SUB ONE而不是SUB 1.

  • 标签PROGEND未定义,因此此代码甚至不应该汇编。鉴于标签的含义,标签应该在 行中定义HLT,但这没有意义,因为HLT无论如何下一条指令都是BRA过时的。

  • 该标签LOOP永远不会被引用。

  • 如果BRA打算引用LOOP标签,那么您的代码将进入无限循环,因为BRA无条件跳转。您的代码应该在某处有条件分支指令(要么 要么BRPBRZ,因此有一种方法可以重复循环或结束循环。

以下是它的工作原理:

LOOP    LDA COUNT
        OUT 
        SUB ONE
        STA COUNT
        BRP LOOP
        HLT
COUNT   DAT 10
ONE     DAT 1

<script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.6/lmc.js"></script>

于 2019-11-26T13:21:13.223 回答