Маленький человечек компьютер: просто отображает -201
LOOP LDA COUNT
SUB 1
STA COUNT
OUT
BRA PROGEND
HLT
COUNT DAT 11
ONE DAT 1
Мне это кажется довольно простым и простым, и в моих знаниях по математике это должно работать: очевидно, что это не так.
Так что помогите пожалуйста
0 ответов
С этим кодом есть несколько проблем:
SUB
не принимает буквальное число в качестве аргумента. Аргумент - это адрес, поэтому в вашем случае он должен читатьSUB ONE
вместо тогоSUB 1
.Наклейка
PROGEND
не определен, поэтому этот код даже не должен ассемблироваться. Учитывая значение метки, метка должна быть определена в строке сHLT
, но это не имеет смысла, посколькуHLT
в любом случае следующая инструкция,BRA
устаревший.Наклейка
LOOP
никогда не упоминается.Если
BRA
был предназначен для ссылки наLOOP
label, то ваш код будет бесконечным циклом, так как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>