Dado un valor de 8 bits sin firmar en r19
, quiero averiguar cuál es el resto después de la división con algún valor inmediato x
. El resultado de la división que quiero almacenar en r20
.
Mi idea debería ser correcta, pero cuando la pruebo en el simulador, no funciona como se esperaba: (suponga que quiero encontrar el resultado y el resto cuando se divide con 15)
start:
ldi r19, 14
call DivideAndFindRemainder;
DivideAndFindRemainder:
cpi r19, 15
brsh SubtractAndInc
SubtractAndInc:
subi r19, 15
inc r20
Para el resultado debería tener el resto en r19
y el resultado de la división en r20
.
¿Dónde está mi error?
EDITAR:
El problema era que tenía que ser recursivo, así que lo cambié a:
DivideAndFindRemainder:
cpi r19, 15
brsh SubtractAndInc
jmp DoneWithComputing;
SubtractAndInc:
subi r19, 15
inc r20
jmp DivideAndFindRemainder;
Y esto parece funcionar.