Это мой LC3 кодПочему я получаю ошибку «ожидаемого регистра или немедленного значения»?
.ORIG x3000
AND R0,R0, #0
AND R2,R2, #0
ADD R2,R2, #7
JSR SUB
ADD R2,R2, ASCII
ADD R0,R2,#0
TRAP x21
SUB ADD R2,R2,#9
ADD R7,R7,#1
RET
HALT
ASCII .FILL x0000
.END
Монтаж При попытке сборки код, я получил эти ошибки
Я знаю, что проход 1 относится к первому шагу в процессе сборки, который должен добавлять переменные и значения, которые они удерживают в таблице символов. Я знаю, что шаг 2 заключается в замене значений с помощью таблицы символов. (Использование Lc3 Assembly в качестве ссылки)
Может ли кто-нибудь объяснить, почему ассемблер пытается заменить в первом проходе и вызывать ошибку? Не следует ли передавать 1 признавать ASCII в качестве переменной, которая содержит x0001 и не пытается ее заменить?
Ahh Я вижу. Я согласен с тем, что вы сказали. Я попытался немного поэкспериментировать, изменив ASCII .FILL x0001 на ASCII .FILL x0000 и добавив HALT (показано выше). Я все же получил ту же ошибку. Должно ли x0000 или десятичное значение 0 работать как значение немедленного значения (падает в диапазоне от -16 до 15)? – committedandroider
Вы видели строку кода, в которой мы передаем значение ASCII в R1, а затем добавляем регистры вместе? –
Я получаю это, но когда вы используете немедленный режим, вам не нужно загружать значение. Непосредственное значение будет здесь 0. Итак, R2 сохранит содержимое R2 + 0? – committedandroider