I'm doing some exam practice questions and the first part involves printing out the hexadecimal number (say xFDO1) as a binary number.
My code prints the opposite and I know I can reverse this order by making another loop and instead of starting with the zero bit start with the n bit and bit-shift n-1 times to get the next bit and so on for all the bits but I am hoping there is a better way!
I also know I can hard code all of the different bits and check those against the number but still not an elegant solution.
Here is my code for reference:
.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
I am hoping to find a better approach.