Как переместить “спрайт” в ассемблерный код MIPS с помощью mars?
Мне нужна некоторая помощь в этом упражнении, я немного запутался в том, что все мы должны делать и как должен выглядеть результат. Я начал свой код, но застрял на этом этапе, потому что не совсем уверен, что все мы должны делать для этого задания, поэтому я не уверен, нахожусь ли я на правильном пути или мне нужно начать все сначала. Это не трудное задание, но подсказка просто какая-то расплывчатая и неясная.
вот подсказка:
Напишите программу сборки MIPS, которая при запуске в MARS со скоростью 25 инструкций в секунду будет
отображение в сегменте памяти 4-байтового “спрайта”, который перемещается слева направо по всему сегменту памяти.
верхняя часть дисплея памяти. Примечание: в верхнем ряду дисплея памяти есть восемь слов.
Важно: установите ползунок MARS так, чтобы он выполнялся с меньшей скоростью. Пропуск этого шага приведет к
бегите на полной скорости, и никакого выхода не будет видно.
Например, рассмотрим ту часть задания, где спрайт перемещается слева направо.
право. Предполагая, что вы выбрали “фон” шестнадцатеричное число " E " и “спрайт” из
шестнадцатеричная цифра 0, серия “промежутков времени” снимков отображения сегмента памяти будет выглядеть следующим образом
как и приведенные ниже данные:(0-это символ sprit)
Время 1: 0x0eeeeeee 0xeeeeeeee. . .
Время 2: 0xe0eeeeee 0xeeeeeeee ...
Время 3: 0xee0eeeee 0xeeeeeeee. . .
Время 4: 0xeee0eeee 0xeeeeeeee.. ..
Время 5: 0xeeee0eee 0xeeeeeeee.. ..
Время 6: 0xeeeee0ee 0xeeeeeeee.. ..
Время 7: 0xeeeeee0e 0xeeeeeeee.. ..
Время 8: 0xeeeeeee0 0xeeeeeeee.. ..
Время 9: 0x0eeeeeee 0xeeeeeeee. . .
Вы можете выбрать шестнадцатеричные цифры, используемые для “фона” и “спрайта” – выберите два
шестнадцатеричные цифры, которые имеют как можно больше контраста для лучшей видимости. Например,
цифры е и с-плохой выбор, потому что они очень похожи.
Ваша программа будет включать в себя ряд вложенных циклов.
Что я уже пробовал:
.data InArr: .word 0x0eeeeeee .text .globl main main: # li $s2,0x0eeeeeee li $s3,0 # loop: ror $s2,$s2,4 # $s2 = $s2 >>4 sw $s2,InArr # InArr(0) = $s2 #addi $s2,$s2,4 bne $s2,$s3,loop # until i==0 # li $v0,10 # System(exit) syscall
Gerry Schmitz
Только ваш "учитель" знает истинное требование, если вы "смущены". Немного рискованно просить незнакомцев интерпретировать задание, когда вы не знаете, о чем вас спрашивают.