#lc3
#lc3
Вопрос:
Мне нужно написать это на языке ассемблера LC-3:
Мы только что прочитали одну цифровую цифру с клавиатуры с помощью команды GETC. Преобразуйте это значение в двоичное и поместите его в R4.
Ответ №1:
Вот пример, адаптированный из лабораторного руководства, написанного Джорджем М. Георгиу и Брайаном Стрейдером.
3.2.3 Как прочитать входное значение
Команда assembly
GETC
, которая является другим названиемTRAP x20
, считывает один символ с клавиатуры и помещает его значение ASCII в регистр R0. 8 наиболее значимых битов R0 очищаются. Эхо-сигнала прочитанного символа нет. Например, можно использовать следующий код для чтения одного числового символа от 0 до 9 и поместить его значение в регистр R3:GETC ; Place ASCII value of input character into R0 ADD R3, R0, x0 ; Copy R0 into R3 ADD R3, R3, #−16 ; Subtract 48, the ASCII value of 0 ADD R3, R3, #−16 ADD R3, R3, #−16 ; R3 now contains the actual value
Обратите внимание, что для вычитания 48 необходимо было использовать три инструкции, поскольку максимально возможное значение непосредственного операнда
ADD
равно 5 битам в формате дополнения two . Таким образом, -16 — это максимум, который мы можем вычесть с помощью немедленной версииADD
инструкции. Например, если нажатой клавишей было «5», ее значение ASCII 53 будет помещено в R0. Вычитая 48 из 53, значение 5 получается, как и ожидалось, и помещается в регистр R3.
Исходный код.
Вам нужно будет адаптировать это, чтобы поместить результат в R4.