Вот моя проблема.
Напишите программу (MIPS, Микропроцессор без блокированных этапов конвейера, инструкции), используя Mars IDE для выполнения следующих операций с заданными двумя двоичными числами со знаком ($S1=11110000, $S2=11110101)
. Выполните операцию вручную и сравните результаты из IDE Mars с вашими результатами.
S1 AND S2
S1 + S2
S1 OR S2
(S1+S2) AND S2
Моя проблема заключается в том, что я не уверен, должен ли я хранить регистр $s1
и $s2
в двоичном виде, когдаделать эти операции (и я застрял на том, как это сделать) или я просто конвертировать двоичный файл раньше времени (например, 11110000 = 240
и 11110101 = 245
)
Если я прав в моих результатах (которые ядумаю, что правы) Я не понимаю, как это соотносится с бинарными операциями. Я думаю, что он просит меня выполнить.
Пожалуйста, помогите
Мне кажется, я понимаю, как поместить значение в регистрс префиксом 0x
и шестнадцатеричным числом, но запутан в отношении того, как для двоичного.
Код инструкции MIPS:
li $s1, 240 # equals binary (11110000)
li $s2, 245 # equals binary (11110101)
and $t0, $s1, $s2
or $t1, $s1, $s2
add $s4, $s1, $s2
and $t3, $s4, $s2
Мои результаты после компиляции в MARS и запуска:
$t0 = 240
$t1 = 245
$s4 = 485
$t3 = 229
Обновление
Из документации, которую я рассмотрел в программе MARS 4.5, он принимает только десятичное число (основание 10) и не принимает двоичные числа (основание 2). ) номер. Я думаю, что я также не смог понять, что регистры имеют длину 32 бита, что позволило добавить 240 и 245. Любые дальнейшие разъяснения будут высоко оценены.