__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _CP_OFF
#include "p16F84A.inc"
LIST P=16F84A
Variables UDATA 0x0C
Multiplicando RES 1 ;0x0C
Multiplicador RES 1 ;0x0D
ByteSuperior RES 1 ;0x0E
ByteInferior RES 1 ;0x0F
Contador RES 1 ;0x10
;-------------------------------------------------------------------------------
CODE 0x00
Inicio
bsf STATUS,RP0 ;Configurando puertos A y B como entradas
movlw b'11111111'
movwf TRISA
movwf TRISB
bcf STATUS,RP0
Principal
movlw .8 ;Cargando Contador
movwf Contador
movf PORTA,W ;Guardando datos del puerto A en Multiplicando
movwf Multiplicando
movf PORTB,W
movwf Multiplicador ;Guardando datos del puerto B en Multiplicador
Multiplicacion
rrf Multiplicador
btfsc STATUS,C
goto SI
NO
rrf ByteSuperior ;Rota a la derecha el Producto
rrf ByteInferior
decf Contador,F ;Decrementando contador}
movf Contador,W ;Comprobando si Contador=0
btfss STATUS,Z
goto Multiplicacion
goto Fin
SI
movf Multiplicando,W ;Suma Multiplicando con ByteSuperior
addwf ByteSuperior,F
goto NO
Fin
goto Fin
END