Buenas noches, estoy calentandome un poco el coco. Para obtener una rutina que me permita calcular el porcentaje de dos enteros, guardando dicho valor en dos registros de 8 bits, pero ¿Donde me equivoco al realizar la division?, aqui os dejo el .asm
list P=16F877
#include <p16f877.inc>
ORIGEN EQU 0X20
PORCENTAJE EQU 0X21
VALORH EQU 0X22
VALORL EQU 0X23
R_ML EQU 0X24
R_MH EQU 0X25
TEMP EQU 0X28
RESTO EQU 0X27
ORG 0X00
NOP
NOP
MAIN MOVLW D'2'
MOVWF ORIGEN
MOVLW D'80'
MOVWF PORCENTAJE
MOVLW D'0'
MOVWF VALORH
MOVWF VALORL
MOVWF R_MH
MOVWF RESTO
BUCLE CALL MULTIPLICACION ;PRIMERO MULTIPLICAMOS ORIGEN Y PORCENTAJE
CALL DIVISION ;DESPUES DIVIDO POR 100
GOTO BUCLE
MULTIPLICACION ADDWF ORIGEN,0 ;Guardo el valor en W
MOVWF R_ML
BTFSS STATUS,C ;¿hAY ACARREO?
GOTO SEGUIR
INCF R_MH
SEGUIR DECFSZ PORCENTAJE,f
GOTO MULTIPLICACION
RETURN
DIVISION MOVLW D'100'
SUBWF R_ML,W
MOVWF TEMP
BTFSC STATUS,C
CALL WAIT
DECF R_MH
WAIT MOVWF RESTO
INCF VALORL
MOVF TEMP,W
MOVWF R_ML
goto DIVISION
END