Целочисленная задача в сборке MIPS
-
10-07-2019 - |
Вопрос
Использование MIPS assembly если я предложу пользователю ввести целое число, как я могу затем взять это целое число и разбить его на необходимые части?
Пример:
# User inputs a number
li $v0, 5 # read value of n
syscall
Затем я сохраняю значение в $ v0 во временном регистре, скажем, $ t0, и мне нужно разбить его на каждую составляющую его часть.Итак, 308 должен быть разбит на:3, 0 и 8.Мне нужно сделать это так, чтобы затем я мог возвести в квадрат каждую из этих частей и сложить их вместе.
Входное значение от пользователя должно быть введено в виде целого числа.
спасибо, ямр
Решение
Это ответ @Don's, с изюминкой
$t0 содержит пользовательский ввод.(как правило, без подписи)
li $t1,10
DIVU $t0,$t1 //divide by 10
mfhi $t2 //t2 contains the division result
mflo $t3 //t3 containts the division remainder
используйте beq, bgt для выполнения сравнений.
Немного помощи
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html
Другие советы
Разделите на 10, используйте остаток, чтобы получить 8, если частное не равно нулю, снова разделите на 10 и используйте остаток, чтобы получить ноль, если частное не равно нулю, повторите.