Я задаю несколько вопросов на экзамене, и первая часть включает распечатку шестнадцатеричного числа (скажем, xFDO1) в виде двоичного числа.
Мой код печатает противоположное, и я знаю, что могу поменять этот порядок, сделав еще один цикл, и вместо того, чтобы начинать с нулевого бита, начнем с n-бита и сдвига бита n-1 раз, чтобы получить следующий бит ии так для всех битов, но я надеюсь, что есть лучший способ!
Я также знаю, что могу жестко закодировать все биты и сравнить их с номером, но все еще не элегантное решение.
Вот мой код для справки:
.ORIG x3000
LD R1, binary ;loads number we wanna use
LD R2, maskbit ;starts with 0000 0000 0000 0001
LD R4, counter
loop
AND R3,R3,#0 ;resets R3
AND R3,R1,R2 ;checks if has bit there
BRz else
LD R0, ascii1
BR done
else
LD R0, ascii0
done
OUT
ADD R2,R2,R2 ;shift bit one over
ADD R4,R4,#-1 ;decrement counter
BRzp loop ;loops if counter not negative
HALT
counter .fill #15
maskbit .fill x0001
ascii0 .fill x30
ascii1 .fill x31
binary .fill XAF12
.END
Я надеюсь найти лучший подход.