hola, por favor necesito ayuda para multiplicar 2 numero en un pic 16f84
Para multiplicar en ensamblador lo que se hace es una suma sucesiva, por ejemplo tenemos 5x3 lo que se hace es sumar el numero cinco, tres veces: 5+5+5
se debe hacer sumar el num1 y guardarlo y a la vez decrementar num2 ya que actua como contador al llegar a cero es que ya se completo la suma (multiplicacion)
algo que hay que tener en cuenta es que supongo son dos numeros de 8 bits en algunos casos el resultado pasara los 8 bits por lo tanto debe estar pendiente de esto, por eso usamos el acarreo y guardamos el resultado en dos localidades res1 y res2 por ejemplo el 4hx3h te da Ch no pasa los 8 bits el resultado quedara res1= Ch y res2= 0 pero si fuera FFh x 3h el resultado da 2FDh entonces el resultado queda en res1=FD y res2= 2h
aqui la rutina:
movlw 5
movwf num1;guardamos los numeros que vamos a multiplicar
movlw 3
movwf num2
movlw 0;ponemos w en 0
bcf STATUS,C; limpia el acarreo
Rutina:
addwf num1,w ; num1 + w se guarda en w
movwf res1 ; w se pasa a res1
btfss STATUS,C ; ver si hay acarreo, es decir el numero se paso de 8 bits
goto continue ; ¿no lo hay? entonces vayase a continue
bcf STATUS,C ; si lo hay entonces limpie el acarreo
incf res2,1 ; incremente res2
continue:
decfsz num2,1 ; decrementar num2 si es 0 terminar
goto Rutina; si no es cero saltar a rutina
nop ; termina la multiplicacion (suma)
saludos y espero me entiendas