Инструкция OUT
trap печатает один символ из своего кода ASCII. В LC-3 нет инструкции trap для прямой печати чисел — можно печатать только символы ASCII.
Если вы хотите напечатать десятичное число, вам нужно написать код для этого, напечатав символ ASCII для 1
, что равно 48, а затем напечатать символ ASCII для 2
, что равно 49.
Если вы знаете, что некоторое значение состоит только из одной десятичной цифры, вы можете добавить к нему 48, и это напечатает значение от 0 до 9.
Однако, если значение больше 9, LC-3 не будет автоматически печатать дополнительные цифры (OUT
будет печатать один символ ASCII, например, для 10 выше будет напечатано :
, потому что 10+48=58, что является кодом ASCII для :
) , поэтому вам нужен небольшой алгоритм для печати нескольких цифр.
Допустим, мы хотим иметь возможность печатать до 2 цифр. Затем проверьте, является ли число › 9 (или ›= 10), и если да, то разделите число на 10 и напечатайте символ этой цифры, а затем символ остатка. (Если вы не сделаете проверку и пойдете прямо к делению на 10, этот алгоритм напечатает начальный ноль для чисел меньше 10.)
Алгоритм общего назначения для преобразования числа в строку цифр (например, для печати) можно найти, используя термин itoa
, который означает преобразование целого числа в ASCII. (Обратный алгоритм, ascii-to-integer, используемый для чтения введенных пользователем строк в числа, можно найти с помощью atoi
.)
Далее, точно так же, как вы выполняете умножение последовательным сложением, на LC-3 мы можем выполнять деление последовательным вычитанием.
person
Erik Eidt
schedule
16.09.2020