;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; 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
;................................................................................................