Lograr la división y el resto con el ensamblaje de AVR

0

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.

    

0 respuestas

Lea otras preguntas en las etiquetas