Цель моей программы состоит в том, чтобы взять значение в регистре 0 и скопировать его в форме '1011' в регистр 1.
РЕДАКТИРОВАТЬ Я изначально не делал это ясно, чтобы не бытьДостигнутая с помощью простого mov
, цель состояла в том, чтобы изолировать каждый бит и восстановить из этой точки
Я использую логические сдвиги для выделения каждого из битов в сочетании с маской AND в регистре 4 дляОбнаружить погоду или нет 1.
В существующем состоянии код завершается нормально, но проблема заключается в том, что каждый раз, когда я повторяю цикл для выполнения нового и, значения предыдущего и выталкивается из регистра 1.
В отладчике значение R1 идет, 1, 0, 1, 1
Когда я хочу найти это: 1, 10, 101, 1011
Вотфайл .s
.global _start
_start:
mov R0,#0b1011
mov R4,#1 @Will act as a mask
mov R5,#3 @Shifter
bl movregs
mov R7,#1
svc 0
movregs:
and R1,R4,R0,lsr R5 @Isolates each bit for moving
subs R5,#1 @Decrements the shifter
bge movregs
bx LR