В настоящее время это домашнее задание, над которым я и мой товарищ по команде застряли. Мы не получили большого представления о Ассамблее, и это должно быть нашим первым домашним заданием. Задача состоит в том, чтобы создать программу, которая преобразует 0xAABBCCDD в 0xDDCCBBAA.
Я не ищу ответа, так как это победит цель, но мы сильно разочарованы трудностью этой глупости. Мы думаем, что у нас хорошее начало в создании жизнеспособного решения, но мы просто не можем придумать остальную часть программы.
Во-первых, мы маскируем каждый отдельный пучок (aa), (bb), (cc), (dd) в другой регистр:
LDR R0, LittleEndian // 0xAABBCCDD
AND R1, R0, #0xFF000000 // 0xAA
AND R2, R0, #0x00FF0000 // 0xBB
AND R3, R0, #0x0000FF00 // 0xCC
AND R4, R0, #0x000000FF // 0xDD
Затем мы пытаемся перестроить их в регистр R0, но, черт возьми, если бы мы могли найти хорошее решение ...
Наше лучшее усилие пришло от:
ORR R0, R1, LSL #24
ORR R0, R2, LSL #8
ORR R0, R3, LSR #8
ORR R0, R4, LSR #24
, который произвел 0xBBBBCCDD по какой-то странной причине; мы действительно не знаем.
Любые советы будут с благодарностью. Опять же, мы просим о помощи, но не о решении.
Ура!