LOOP LDA COUNT
SUB 1
STA COUNT
OUT
BRA PROGEND
HLT
COUNT DAT 11
ONE DAT 1
对我而言,它似乎非常基本和简单,而且在我对数学的了解中,它应该有效:显然它不是。
所以请帮助
答案 0 :(得分:0)
此代码存在几个问题:
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>