tengo problemas con esta rutina de multiplicación y no se porque no funciona, los numeros los carga bien pero el producto no lo hace, la suma de las unidades tambien lo hace bien, alguien podria echarme un amano??
Arit_BCD_Operacion ;Realiza la operacion:(10 * Resultado Anterior + W)
movfw Arit_Decenas
movwf Arit_Multiplicando ;(Resultado Anterior) -->(Multiplicando)
clrf Arit_Multiplicador ; Carga el multiplicador con 10.
movlw .10
movwf Arit_Multiplicador
Arit_Multiplica_8Bit ; En principio el resultado es cero.
clrf Arit_Producto ;obtengo un resultado de 16 bit (2 REG de 8bit)
movlw .8 ; Carga el contador de 8 bits.
movwf Arit_ContadorBits
movf Arit_Multiplicando,W ; Carga el multiplicando.
Arit_MultiplicaBit8
bcf STATUS,C
rrf Arit_Multiplicador,1 ; Va a comprobar el siguiente bit del multiplicador.
btfsc STATUS,C ; Si el bit del multiplicador es "1"
addwf Arit_Producto,1 ; suma el resultado parcial anterior más el multiplicando.
rrf Arit_Producto,1 ; Desplaza el resultado parcial un lugar hacia la
; derecha, introduciendo un "0" por la izquierda.
decfsz Arit_ContadorBits,1 ; ¿Ha multiplicado los 8 bits?
goto Arit_MultiplicaBit8 ; Repite la operación.
movf Arit_Unidades,W
addwf Arit_Producto,1 ; (10 * Resultado Anterior + W)
return
es una rutina de cogida de la pagina de microchip
gracias