小人电脑:只显示-201

时间:2015-09-28 13:55:34

标签: little-man-computer

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

对我而言,它似乎非常基本和简单,而且在我对数学的了解中,它应该有效:显然它不是。

所以请帮助

1 个答案:

答案 0 :(得分: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>