Publicado el 30 de Enero del 2020
2.727 visualizaciones desde el 30 de Enero del 2020
12,8 KB
3 paginas
Creado hace 17a (02/02/2008)
C:\16f628a\booth\multibooth.inc
;*****************************************************
; Multiplicación mediante el algoritmo de Booth
; multibooth.inc
;
; Rutina que realiza la multiplicación de dos números
; binarios con signo en complemento a dos mediante el
; algoritmo de multiplicación de Booth.
;
; Antes de llamar a la rutina MULTIBOOTH se deben car-
; gar los factores que se multiplicarán en los regis-
; tros MULTIPLICANDO y MULTIPLICADOR. Al terminar la
; rutina regresa el valor del resultado en los regis-
; tros RESULTADOH:RESULTADOL, en notación positiva, si
; el resultado fuera negativo el resultado aparecería
; positivo pero el flag SIGNO (bit 0 del registro A3)
; tendría valor alto (1 lógico) para indicar que es un
; número negativo.
;
; Para utilizar esta rutina se deben crear los regis-
; tros MULTIPLICANDO, MULTIPLICADOR, A1, A2, A3, S1,
; S2, S3, P1, P2, P3, RESULTADOH, RESULTADOL y CONT.
;
; Es importante aclarar que esta rutina funciona única-
; mente para multiplicar números de -127 a 127 por li-
; mitaciones propias del algoritmo.
;
; Autor: Jorge A. Bojórquez
; http://micropic.wordpress.com
Fecha: 02-02-08
MULTIBOOTH
movf
movwf
comf
movwf
incf
clrf
clrf
clrf
clrf
movf
movwf
clrf
clrf
movlw
movwf
BOOTH
btfsc
goto
btfss
goto
goto
MULTIPLICANDO,w
A1
A1,w
S1
S1
A2
A3
S2
S3
MULTIPLICADOR,w
P2
P1
P3
0x08
CONT
P2,0
$+4
P3,7
$+2
PMASA
1
C:\16f628a\booth\multibooth.inc
ROTA
btfss
goto
btfsc
goto
goto
bcf
btfss
goto
rrf
rrf
rrf
movlw
iorwf
goto
P2,0
ROTA
P3,7
ROTA
PMASS
STATUS,C
P1,7
ROTA2
P1,f
P2,f
P3,f
d'128'
P1,f
$+4
ROTA2
rrf
rrf
rrf
decfsz
goto
goto
P1,f
P2,f
P3,f
CONT,f
BOOTH
RESUL
PMASA
movf
addwf
btfss
goto
incf
movf
addwf
btfss
goto
incf
movf
addwf
goto
PMASS
movf
addwf
btfss
goto
incf
movf
addwf
btfss
goto
incf
movf
addwf
goto
A3,w
P3,f
STATUS,C
$+2
P2,f
A2,w
P2,f
STATUS,C
$+2
P1,f
A1,w
P1,f
ROTA
S3,w
P3,f
STATUS,C
$+2
P2,f
S2,w
P2,f
STATUS,C
$+2
P1,f
S1,w
P1,f
ROTA
2
C:\16f628a\booth\multibooth.inc
RESUL
movf
movwf
movf
movwf
btfss
return
bsf
comf
comf
incf
btfss
return
incf
return
P1,w
RESULTADOH
P2,w
RESULTADOL
RESULTADOH,7
SIGNO
RESULTADOH,f
RESULTADOL,f
RESULTADOL,f
STATUS,C
RESULTADOH,f
3
Comentarios de: Multiplicación mediante el algoritmo de Booth (0)
No hay comentarios