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, вероятно, является лучшим выбором.

Другие вопросы по тегам