Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ***************************************************************************
- * DEFINICIÓN DE CONSTANTES
- ***************************************************************************
- DIR_PROG EQU $20000 * DIRECCIÓN DE INICIO DEL PROGRAMA.
- DIR_DATA EQU $30000 * LA PILA CRECE HACIA POSICIONES
- DIR_PILA EQU $30000 * INFERIORES Y CON PREDECREMENTO.
- N_ELEM EQU 10 * 10 NÚMEROS EN <<ARRAY>>.
- NUM1 EQU 12
- NUM2 EQU 20
- ***************************************************************************
- * DECLARACIÓN DE VARIABLES
- ***************************************************************************
- ORG DIR_DATA
- ARRAY DC.L 1, -14, 17, 8, -2, -25, 21, 19, -12, 10
- SUM DS.L 1
- BUSQ DC.L 15
- ***************************************************************************
- * PROGRAMA PRINCIPAL
- ***************************************************************************
- ORG DIR_PROG
- PPAL MOVEA.L #DIR_PILA,SP
- PEA N_ELEM * SE LE PASAN DOS PARÁMETROS
- PEA ARRAY * POR PILA
- BSR SUMA
- ADDQ.l #8,a7 * RESTAURACIÓN DE LA PILA
- PEA N_ELEM * SE LE PASAN DOS PARÁMETROS
- PEA ARRAY * POR PILA
- BSR MEDIA
- ADDQ.l #8,a7 * RESTAURACIÓN DE LA PILA
- PEA N_ELEM * SE LE PASAN DOS PARÁMETROS
- PEA ARRAY * POR PILA
- BSR PARIMPAR
- ADDQ.l #8,a7
- PEA N_ELEM * SE LE PASAN DOS PARÁMETROS
- PEA ARRAY * POR PILA
- MOVE.L BUSQ, -(A7) *NUMERO A BUSCAR
- BSR BUSQUEDASEL *DEVUELVE EN D0
- ADDA.L #12,a7
- PEA N_ELEM * SE LE PASAN DOS PARÁMETROS
- PEA ARRAY * POR PILA
- BSR BUSQUEDAPI *DEVUELVE EN D0
- ADDQ.L #8,a7
- PEA N_ELEM * SE LE PASAN DOS PARÁMETROS
- PEA ARRAY * POR PILA
- BSR SUMAPI
- ADDQ.l #8,a7
- PEA N_ELEM * SE LE PASAN DOS PARÁMETROS
- PEA ARRAY * POR PILA
- MOVE.L #3,-(A7) * DESPLAZAMIENTO
- BSR MULTIP
- ADDA.L #12,a7
- PEA N_ELEM * SE LE PASAN DOS PARÁMETROS
- PEA ARRAY * POR PILA
- BSR MINIMO *DEVUELVE EN D0
- ADDQ.l #8,a7
- PEA NUM1
- PEA NUM2
- BSR MCM
- ADDQ.l #8,a7
- BUCLE BRA BUCLE * EL PROGRAMA NO PROSIGUE
- ***************************************************************************
- * SUBRUTINA
- ***************************************************************************
- CALCULA BSR PARIMPAR
- RTS
- SUMA ADDA.L #-8,A7
- MOVEM A3/D2,(A7)
- MOVE.L 16(A7),D2
- MOVE.L 12(A7),A3
- CLR.L D0
- LOOP ADD (A3)+,D0
- SUBQ #1,D2
- BNE LOOP
- MOVEM (A7),A3/D2
- ADDA.L #8,A7
- RTS
- MEDIA ADDA.L #-8,A7
- MOVEM A3/D2,(A7)
- MOVE.L 16(A7),D2 *RECUPERAMOS EL NUMERO DE ELEMENTOS
- MOVE.L 12(A7),A3 *RECUPERAMMOS DIR DE ARRAY
- MOVE.L D2,-(A7)
- MOVE.L A3, -(A7)
- BSR SUMA
- DIVS D2,D0
- ADDA.L #8,A7
- MOVEM (A7),A3/D2
- ADDA.L #8,A7
- RTS
- PARIMPAR ADDA.L #-12,A7
- MOVEM A3/D2-D3,(A7)
- MOVE.L 20(A7),D2
- MOVE.L 16(A7),A3
- CLR.L D0
- CLR.L D1
- CLR.L D3
- LOOP2 ADD (A3)+,D0
- ADDQ #1,D3
- CMP D3,D2
- BEQ FIN
- ADD (A3)+,D1
- ADDQ #1,D3
- CMP D3,D2
- BNE LOOP2
- FIN MOVEM (A7),A3/D2-D3
- ADDA.L #12,A7
- RTS
- BUSQUEDA ADDA.L #-16,A7
- MOVEM A3/D1-D3,(A7)
- MOVE.L 28(A7),D2
- MOVE.L 24(A7),A3
- MOVE.L 20(A7),D3
- CLR.L D0
- LOOP3 MOVE.L (A3)+,D1
- CMP D1,D3
- BNE CONTINUA2
- ADDQ #1,D0
- CONTINUA2 SUBQ #1,D2
- BNE LOOP3
- MOVEM (A7),A3/D1-D3
- ADDA.L #16,A7
- RTS
- BUSQUEDASEL ADDA.L #-16,A7
- MOVEM A3/D1-D3,(A7)
- MOVE.L 28(A7),D2
- MOVE.L 24(A7),A3
- MOVE.L 20(A7),D3
- CLR.L D0
- LOOP4 MOVE.L (A3)+,D1
- CMP D3,D1
- BLE CONTINUA
- ADDQ #1,D0
- CONTINUA SUBQ #1,D2
- BNE LOOP4
- MOVEM (A7),A3/D1-D3
- ADDA.L #16,A7
- RTS
- BUSQUEDAPI ADDA.L #-16,A7
- MOVEM A3/D2-D4,(A7)
- MOVE.L 24(A7),D2
- MOVE.L 20(A7),A3
- CLR.L D0
- CLR.L D1
- LOOP5 MOVE.L (A3)+,D3
- MOVE.L #2,D4
- REMS.L D4,D4:D3
- BNE IMPAR
- ADDQ #1,D0
- BRA CONTINUE
- IMPAR ADDQ #1,D1 *ES IMPAR
- CONTINUE SUBQ #1,D2
- BNE LOOP5
- MOVEM (A7),A3/D2-D4
- ADDA.L #16,A7
- RTS
- SUMAPI ADDA.L #-16,A7
- MOVEM A3/D2-D4,(A7)
- MOVE.L 24(A7),D2
- MOVE.L 20(A7),A3
- CLR.L D0
- CLR.L D1
- LOOP6 MOVE.L (A3)+,D3 *VALOR i DEL ARRAY
- MOVE.L #2,D4
- REMS.L D4,D4:D3
- BNE IMPAR2
- ADD D3,D0
- BRA CONTINUA3
- IMPAR2 ADD D3,D1 *ES IMPAR
- CONTINUA3 SUBQ #1,D2
- BNE LOOP6
- MOVEM (A7),A3/D2-D4
- ADDA.L #16,A7
- RTS
- DESPLAZ ADDA.L #-16,A7
- MOVEM A3/D2-D4,(A7)
- MOVE.L 20(A7),D3 *DESPLAZ
- MOVE.L 28(A7),D2 *NUM ELEMENTOS
- MOVE.L 24(A7),A3 *POS DE INICIO ARRAY
- LOOP7 MOVE.L (A3),D4
- ASL D3,D4
- MOVE.L D4,(A3)+
- SUBQ #1,D2
- BNE LOOP7
- MOVEM (A7),A3/D2-D4
- ADDA.L #16,A7
- RTS
- MULTIP ADDA.L #-16,A7
- MOVEM A3/D2-D4,(A7)
- MOVE.L 20(A7),D3 *DESPLAZ
- MOVE.L 28(A7),D2 *NUM ELEMENTOS
- MOVE.L 24(A7),A3 *POS DE INICIO ARRAY
- LOOP8 MOVE.L (A3),D4
- MULS D3,D4
- MOVE.L D4,(A3)+
- SUBQ #1,D2
- BNE LOOP8
- MOVEM (A7),A3/D2-D4
- ADDA.L #16,A7
- RTS
- *DEVUELVE POR D0 EL RESULTADO (VALOR MAX)
- MAXIMO ADDA.L #-12,A7
- MOVEM A3/D2-D3,(A7)
- MOVE.L 20(A7),D2 *NUM ELEMENTOS
- MOVE.L 16(A7),A3 *POS DE INICIO ARRAY
- MOVE.L (A3)+,D0
- SUBQ #1,D2
- LOOP9 MOVE.L (A3)+,D3
- CMP D0,D3
- BLE SEGUIR
- MOVE.L D3,D0
- SEGUIR SUBQ #1,D2
- BNE LOOP9
- MOVEM (A7),A3/D2-D3
- ADDA.L #12,A7
- RTS
- *DEVUELVE POR D0 EL RESULTADO (VALOR MIN)
- MINIMO ADDA.L #-12,A7
- MOVEM A3/D2-D3,(A7)
- MOVE.L 20(A7),D2 *NUM ELEMENTOS
- MOVE.L 16(A7),A3 *POS DE INICIO ARRAY
- MOVE.L (A3)+,D0
- SUBQ #1,D2
- LOOP10 MOVE.L (A3)+,D3
- CMP D0,D3
- BGE SIGA
- MOVE.L D3,D0
- SIGA SUBQ #1,D2
- BNE LOOP10
- MOVEM (A7),A3/D2-D3
- ADDA.L #12,A7
- RTS
- MCD ADDA.L #-12,A7
- MOVEM D2-D4,(A7)
- MOVE.L 20(A7),D2 *num1 U
- MOVE.L 16(A7),D3 *NUM2 V
- LOOP11 BEQ SEGUIR2
- REMS D3,D4:D2
- MOVE.L D3,D2
- MOVE.L D4,D3
- BRA LOOP11
- SEGUIR2 MOVE.L D2,D0
- MOVEM (A7),D2-D4
- ADDA.L #12,A7
- RTS
- MCM ADDA.L #-8,A7
- MOVEM D2-D3,(A7)
- MOVE.L 16(A7),D2 *num1 U
- MOVE.L 12(A7),D3 *NUM2 V
- MOVE.L D2,-(A7)
- MOVE.L D3,-(A7)
- BSR MCD *MCD EN D0
- ADDA.L #8,A7
- MULS D2,D3
- DIVS D0,D3
- MOVE.L D3,D0
- MOVEM (A7),D2-D3
- ADDA.L #8,A7
- RTS
Add Comment
Please, Sign In to add comment