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>