У вас правильная идея (но много опечаток), так что продолжайте!
Нет ничего интересного в $t1
, когда вы впервые меняете его. Я думаю, что вы изначально хотели сместить $t0
, но на $t1
, чтобы у вас все еще оставалось исходное значение пользовательского ввода для более поздней операции.
Следите за использованием регистра:
- вам нужно источник регистров, которые target редактировались ранее в вашей программе,
- вам нужно использовать новый / другой регистр для цели, если вам понадобится какое-то оригинальное / полученное значение позже (не стирайте значения, которые вам все еще нужны),
- вы не можете просто получить новые регистры, когда вам нужны старые / оригинальные значения
Используйте один шаг, чтобы убедиться, что вы получаете промежуточные значения, которые вы ожидаете после каждой инструкции. Если нет, то проверьте, является ли инструкция источником правильных регистров, или, возможно, исходный регистр был удален более ранней инструкцией!
Кроме того, вы сдвигаетесь влево, когда вы хотите сдвинуть правильно ...
Вы просто догадаетесь, какой регистр использовать, когда. Итак, вот подход, который может помочь вам избежать путаницы из-за незнакомой сборки.
Попробуйте написать свой код в C , используя Трехадресный код - для этого задания не потребуется много, около 5 строк! Но это поможет вам понять, какую переменную использовать, когда. (Убедитесь, что ваш C трехадресный код работает - протестируйте и отладьте его где-нибудь, при необходимости включите C компилятор.)
Далее назначьте (создайте карту) все эти C ( TA C) переменные в регистры MIPS - прежде чем писать какие-либо инструкции.
Наконец, напишите инструкции по сборке, которые относятся к / mimi c этим трем адресным кодам, используя вашу карту переменных для регистров.