TODOPIC
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
. ¿Perdiste tu
email de activación
?
1 Hora
1 Día
1 Semana
1 Mes
Siempre
Ingresar con nombre de usuario, contraseña y duración de la sesión
Este tema
Este sub-foro
Todo el foro
Google
Inicio
Ayuda
Buscar
Ingresar
Registrarse
TODOPIC
»
Microcontroladores PIC
»
Almacén del Assembler
(Moderadores:
MGLSOFT
,
PAOLA09
,
Suky
) »
division 32/32 bits para pic 16XXX
« anterior
próximo »
Imprimir
Páginas: [
1
]
Ir Abajo
Autor
Tema: division 32/32 bits para pic 16XXX (Leído 2662 veces)
0 Usuarios y 1 Visitante están viendo este tema.
claudio_gaite
PIC10
Mensajes: 2
division 32/32 bits para pic 16XXX
«
en:
29 de Julio de 2007, 18:03:59 »
estoy buscando sin exito una rutina para realizar esta division en microchip esta en forma de macro que no lo domino bien si alguien tiene el codigo favor de pasarmelo desde ya muchas gracias Claudio Gaite
En línea
Chaly29
Moderador Global
DsPIC33
Mensajes: 4315
Re: division 32/32 bits para pic 16XXX
«
Respuesta #1 en:
30 de Julio de 2007, 16:23:12 »
Hola claudio_gaite, aquí te dejo una rutina, espero te sea de ayuda.
Código: ASM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Divicion de 32 bit / 32 bit
; Son necesarios un maximo de 3267 ciclos de reloj
; Ocupa una capacidad total de memoria de 227 pocisiones con la resta
; Necesita de la resta
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CARRY
EQU
.32
DATO1
EQU
.33
DATO2
EQU
.34
DATO3
EQU
.35
DATO4
EQU
.36
FUNC1
EQU
.37
FUNC2
EQU
.38
FUNC3
EQU
.39
FUNC4
EQU
.40
RES1
EQU
.41
; RESULTADO
RES2
EQU
.42
; RESULTADO
RES3
EQU
.43
; RESULTADO
RES4
EQU
.44
; RESULTADO
DI1
EQU
.45
; NUMERO A DIVIDIR MAS SIGNIFICATIVO
DI2
EQU
.46
; NUMERO A DIVIDIR
DI3
EQU
.47
; NUMERO A DIVIDIR
DI4
EQU
.48
; NUMERO A DIVIDIR MENOS SIGNIFICATIVO
DIV1
EQU
.49
; NUMERO DIVISOR MAS SIGNIFICATIVO
DIV2
EQU
.50
; NUMERO DIVISOR
DIV3
EQU
.51
; NUMERO DIVISOR
DIV4
EQU
.52
; NUMERO DIVISOR MENOS SIGNIFICATIVO
MULT1
EQU
.53
MULT2
EQU
.54
MULT3
EQU
.55
MULT4
EQU
.56
CONTA
EQU
.57
CONTA1
EQU
.58
CONTA2
EQU
.59
DATO
EQU
.60
;................................................................................................
DIVIDE
;32 / 32
clrf CONTA
clrf CONTA1
clrf CONTA2
clrf DATO
clrf FUNC1
clrf FUNC2
clrf FUNC3
clrf FUNC4
clrf MULT1
clrf MULT2
clrf MULT3
clrf MULT4
movlw
.0
subwf DI1
,
W
btfss STATUS
,
Z
goto GFD
movlw
.0
subwf DI2
,
W
btfss STATUS
,
Z
goto GFD
movlw
.0
subwf DI3
,
W
btfss STATUS
,
Z
goto GFD
movlw
.0
subwf DI4
,
W
btfss STATUS
,
Z
goto GFD
goto DIV_SAL
GFD
movf DIV1
,
W
movwf DATO
call
VER1
btfsc CONTA2
,
0
goto DIVFIN
movf DIV2
,
W
movwf DATO
call
VER1
btfsc CONTA2
,
0
goto DIVFIN
movf DIV3
,
W
movwf DATO
call
VER1
btfsc CONTA2
,
0
goto DIVFIN
movf DIV4
,
W
movwf DATO
call
VER1
DIVFIN
clrf CONTA2
movf DI1
,
W
movwf DATO
call
VER
btfsc CONTA2
,
0
goto DIFIN
movf DI2
,
W
movwf DATO
call
VER
btfsc CONTA2
,
0
goto DIFIN
movf DI3
,
W
movwf DATO
call
VER
btfsc CONTA2
,
0
goto DIFIN
movf DI4
,
W
movwf DATO
call
VER
DIFIN
incf CONTA1
,
F
movf CONTA1
,
W
movwf CONTA2
decfsz CONTA1
,
F
goto SAL1
goto SAL2
SAL1
bcf STATUS
,
C
rlf DIV4
,
F
rlf DIV3
,
F
rlf DIV2
,
F
rlf DIV1
,
F
decfsz CONTA1
,
F
goto SAL1
SAL2
movf DI1
,
W
movwf DATO1
movf DI2
,
W
movwf DATO2
movf DI3
,
W
movwf DATO3
movf DI4
,
W
movwf DATO4
RE
movf DIV1
,
W
subwf DATO1
,
W
btfss STATUS
,
C
goto ARRASTRE
btfss STATUS
,
Z
goto BIEN
movf DIV2
,
W
subwf DATO2
,
W
btfss STATUS
,
C
goto ARRASTRE
btfss STATUS
,
Z
goto BIEN
movf DIV3
,
W
subwf DATO3
,
W
btfss STATUS
,
C
goto ARRASTRE
btfss STATUS
,
Z
goto BIEN
movf DIV4
,
W
subwf DATO4
,
W
btfss STATUS
,
C
goto ARRASTRE
goto BIEN
ARRASTRE
bcf STATUS
,
C
rrf DIV1
,
F
rrf DIV2
,
F
rrf DIV3
,
F
rrf DIV4
,
F
bcf STATUS
,
C
rlf MULT4
,
F
rlf MULT3
,
F
rlf MULT2
,
F
rlf MULT1
,
F
bcf MULT4
,
0
decfsz CONTA2
,
F
goto RE
goto DIV_SAL
BIEN
movf DIV1
,
W
movwf FUNC1
movf DIV2
,
W
movwf FUNC2
movf DIV3
,
W
movwf FUNC3
movf DIV4
,
W
movwf FUNC4
call
RESTA
movf RES1
,
W
movwf DATO1
movf RES2
,
W
movwf DATO2
movf RES3
,
W
movwf DATO3
movf RES4
,
W
movwf DATO4
bcf STATUS
,
C
rrf DIV1
,
F
rrf DIV2
,
F
rrf DIV3
,
F
rrf DIV4
,
F
bcf STATUS
,
C
rlf MULT4
,
F
rlf MULT3
,
F
rlf MULT2
,
F
rlf MULT1
,
F
bsf
MULT4
,
0
decfsz CONTA2
,
F
goto RE
goto DIV_SAL
;.....................
VER
bcf STATUS
,
C
movlw
.8
movwf CONTA
QWE
btfsc DATO
,
7
goto ZXC
decf CONTA1
,
F
rlf DATO
,
F
decfsz CONTA
,
F
goto QWE
return
;.....................
VER1
bcf STATUS
,
C
movlw
.8
movwf CONTA
ASD
btfsc DATO
,
7
goto ZXC
incf CONTA1
,
F
rlf DATO
,
F
decfsz CONTA
,
F
goto ASD
return
;.....................
ZXC
movlw
.1
movwf CONTA2
return
DIV_SAL
movf MULT1
,
W
movwf RES1
movf MULT2
,
W
movwf RES2
movf MULT3
,
W
movwf RES3
movf MULT4
,
W
movwf RES4
return
;................................................................................................
Y acá la resta necesaria para la rutina anterior:
Código: ASM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Resta de 32 bit - 32 bit con CARRY
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CARRY
EQU
.32
DATO1
EQU
.33
DATO2
EQU
.34
DATO3
EQU
.35
DATO4
EQU
.36
FUNC1
EQU
.37
FUNC2
EQU
.38
FUNC3
EQU
.39
FUNC4
EQU
.40
RES1
EQU
.41
RES2
EQU
.42
RES3
EQU
.43
RES4
EQU
.44
;................................................................................................
RESTA
;32 - 32
clrf CARRY
comf DATO4
,
W
addwf FUNC4
,
W
movwf RES4
btfsc STATUS
,
C
incfsz FUNC3
,
F
goto IOP1
incfsz FUNC2
,
F
goto IOP1
incfsz FUNC1
,
F
goto IOP1
bsf
CARRY
,
0
IOP1
comf DATO3
,
W
addwf FUNC3
,
W
movwf RES3
btfsc STATUS
,
C
incfsz FUNC2
,
F
goto IOP2
incfsz FUNC1
,
F
goto IOP2
bsf
CARRY
,
0
IOP2
comf DATO2
,
W
addwf FUNC2
,
W
movwf RES2
btfsc STATUS
,
C
incfsz FUNC1
,
F
goto IOP3
bsf
CARRY
,
0
IOP3
comf DATO1
,
W
addwf FUNC1
,
W
movwf RES1
btfsc STATUS
,
C
bsf
CARRY
,
0
bcf STATUS
,
C
btfss CARRY
,
0
bsf
STATUS
,
C
comf RES4
,
F
comf RES3
,
F
comf RES2
,
F
comf RES1
,
F
return
;................................................................................................
Un saludo.
Atte. CARLOS.
En línea
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.
claudio_gaite
PIC10
Mensajes: 2
Re: division 32/32 bits para pic 16XXX
«
Respuesta #2 en:
31 de Julio de 2007, 06:14:27 »
Muchas gracias Carlos ya mismo lo ensamblo
Claudio Gaite
En línea
Imprimir
Páginas: [
1
]
Ir Arriba
« anterior
próximo »
TODOPIC
»
Microcontroladores PIC
»
Almacén del Assembler
(Moderadores:
MGLSOFT
,
PAOLA09
,
Suky
) »
division 32/32 bits para pic 16XXX