Программа LC 3 не отображает вывод

Я пытаюсь написать программу на языке ассемблера lc 3, которая читает строку и выводит строку. Теперь я очень смущен тем, почему программа ничего не выводит. Я не уверен, что мой алгоритм сохранения строки в памяти неверен или я просто неправильно отображаю строку. Ошибка говорит мне: «ожидаемая метка или 9-битное смещение ПК со знаком, но вместо этого найдено lea. Значит, это означает, что я не хочу, чтобы я использовал lea, верно? Но я не уверен, что еще использовать. Любая помощь будет очень признательна!

.ORIG X3000

LEA R0, prompt
PUTS

LEA R1,SPACE
loop:
GETC               ; input char
PUTC               ; store char
STR R0,R1,#0       ; store r1 in r0
ADD R1,R1,#1       ; points to next block
br loop

ld      r7,eol     ;check for eol 
add     r7,r7,r0  
brz 
lea r0,SPACE       ;displays output
puts

halt

;*************data**********************

SPACE  .blkw   20   
prompt .stringz "input string>> "
eol  .fill   xfff6

.end

person wissam hammoud    schedule 29.03.2018    source источник


Ответы (1)


Причина вашей ошибки лежит в этой строке кода

brz lea r0,SPACE ;displays output

Вы используете инструкцию BR без метки для перехода? Куда вы хотите перейти, если ветка занята.

Также в вашем коде есть бесконечный цикл. Вы возвращаетесь к безусловному циклу, прежде чем проверять, есть ли у вас персонаж eol.

person Brandon    schedule 01.04.2018