LOOP LDA COUNT
SUB 1
STA COUNT
OUT
BRA PROGEND
HLT
COUNT DAT 11
ONE DAT 1
对我来说,这似乎非常基本和简单,并且根据我的数学知识,它应该有效:显然不是。
所以请帮助
LOOP LDA COUNT
SUB 1
STA COUNT
OUT
BRA PROGEND
HLT
COUNT DAT 11
ONE DAT 1
对我来说,这似乎非常基本和简单,并且根据我的数学知识,它应该有效:显然不是。
所以请帮助
这段代码有几个问题:
SUB不接受文字数字作为参数。该参数是一个地址,因此在您的情况下,它应该读取SUB ONE而不是SUB 1.
标签PROGEND未定义,因此此代码甚至不应该汇编。鉴于标签的含义,标签应该在 行中定义HLT,但这没有意义,因为HLT无论如何下一条指令都是BRA过时的。
该标签LOOP永远不会被引用。
如果BRA打算引用LOOP标签,那么您的代码将进入无限循环,因为BRA无条件跳转。您的代码应该在某处有条件分支指令(要么 要么BRP)BRZ,因此有一种方法可以重复循环或结束循环。
以下是它的工作原理:
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>