У меня есть задача, в которой мне нужно взять число, например, 13002, и распечатать его из di git по di git, используя UART (включая не ведущие 0). UART ожидает, что все, что он печатает, будет go в регистре $s0
, но я могу вызывать его всякий раз, когда мне нужно использовать jal
.
Это означает, что мне нужно поместить ди git в $s0
и прыгнуть (в коде UART есть jr $ra
, поэтому он вернется правильно после завершения.
Моя проблема в том, что я не знаю, как перебирать цифры в числе. Пока что мой подход состоит в том, чтобы изменить число на 10 (потому что это десятичное число, представленное в двоичном виде), но это дает мне цифры в обратном порядке.
Например, 13002% 10 = 2 (затем разделить 13002 на 10, целочисленное деление усекает десятичное число), 1300% 10 = 0, снова разделить на 10, 130 ... и т. Д. И т. Д. .
Как уже упоминалось выше, это дает мне цифры в обратном порядке. Как бы я правильно перебрал число?
Я написал какой-то псевдокод в python, но у него проблемы с числами которые имеют 0 в них:
def iterateOverDigits(n):
while (n >= 10):
x = n
i = 0
while (x >= 10):
x = x // 10
i += 1
print(x)
x = n
x = x % (10 ** i)
n = x
iterateOverDigits(1302) # This prints 132