lc-3 как добавить целочисленное значение в регистр
Я новичок в LC-3 и пытаюсь писать простые программы. Я пытаюсь загрузить два целых числа 2, 3 в 2 разных регистра и вывести сумму. Вот моя программа, и вместо того, чтобы добавлять 2 и 3, она добавляет 32 и 33 и дает мне соответствующий символ ascii для 65. Как мне исправить программу, чтобы она печатала 5? Кроме того, я знаю, что OUT печатает значение R0, но как бы я напечатал значение R1 и R2? Есть ли другой способ загрузить целочисленное значение в регистры, кроме использования LD?
.ORIG x3000
LD R1, TWO
LD R2, THREE
ADD R2, R2, R1
ADD R0, R2, #0
OUT
TRAP x25
ДВА. ФИЛЛ x32 ТРИ. ФИЛЛ x33
.END
Любая помощь будет оценена!
2 ответа
Ваш код:
TWO .FILL x32
THREE .FILL x33
Ответ:
x32 - это ASCII 2, а x## - ASCII 3. Вы предполагаете, что используются значения ASCII - вам просто нужны обычные десятичные значения!
Замечания:
Находясь под десятичным 16, шестнадцатеричные "x2" и "x3" эквивалентны десятичным 2 и 3. Вы также можете использовать "#2" или просто "2".
Вы помещаете x32 и x33 в адреса памяти TWO и THREE, так почему вы ожидаете, что они будут иметь только x2 и x3? Просто поместите вместо них x2 и x3. Чтобы напечатать значения R1 и R2, вы должны сделать это так, как это делается в вашем коде, где вы передаете его, а затем выполнить OUT. Если вам нужен более сложный способ, вы можете работать с регистром состояния данных и использовать регистр отображения данных для прямой печати регистров, отличных от R0, на экран. Что касается загрузки целых чисел в регистры, LD, вероятно, является лучшим выбором.