Guest User

Untitled

a guest
Apr 24th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ***************************************************************************
  2. * DEFINICIÓN DE CONSTANTES
  3. ***************************************************************************
  4.  
  5. DIR_PROG    EQU $20000      * DIRECCIÓN DE INICIO DEL PROGRAMA.
  6. DIR_DATA    EQU $30000      * LA PILA CRECE HACIA POSICIONES
  7. DIR_PILA    EQU $30000      * INFERIORES Y CON PREDECREMENTO.
  8.  
  9. N_ELEM      EQU 10      * 10 NÚMEROS EN <<ARRAY>>.
  10. NUM1        EQU     12
  11. NUM2        EQU     20
  12.  
  13. ***************************************************************************
  14. * DECLARACIÓN DE VARIABLES
  15. ***************************************************************************
  16.  
  17.         ORG DIR_DATA
  18.  
  19. ARRAY       DC.L    1, -14, 17, 8, -2, -25, 21, 19, -12, 10
  20. SUM     DS.L    1
  21. BUSQ        DC.L    15
  22.  
  23. ***************************************************************************
  24. * PROGRAMA PRINCIPAL
  25. ***************************************************************************
  26.  
  27.         ORG DIR_PROG
  28.  
  29. PPAL        MOVEA.L #DIR_PILA,SP
  30.         PEA N_ELEM      * SE LE PASAN DOS PARÁMETROS
  31.         PEA ARRAY       * POR PILA
  32.         BSR SUMA       
  33.         ADDQ.l  #8,a7       * RESTAURACIÓN DE LA PILA
  34.         PEA N_ELEM      * SE LE PASAN DOS PARÁMETROS
  35.         PEA ARRAY       * POR PILA 
  36.         BSR MEDIA
  37.         ADDQ.l  #8,a7       * RESTAURACIÓN DE LA PILA
  38.         PEA N_ELEM      * SE LE PASAN DOS PARÁMETROS
  39.         PEA ARRAY       * POR PILA 
  40.         BSR     PARIMPAR
  41.         ADDQ.l  #8,a7
  42.         PEA N_ELEM      * SE LE PASAN DOS PARÁMETROS
  43.         PEA ARRAY       * POR PILA 
  44.         MOVE.L  BUSQ, -(A7) *NUMERO A BUSCAR
  45.         BSR     BUSQUEDASEL *DEVUELVE EN D0
  46.         ADDA.L  #12,a7
  47.         PEA N_ELEM      * SE LE PASAN DOS PARÁMETROS
  48.         PEA ARRAY       * POR PILA 
  49.         BSR     BUSQUEDAPI  *DEVUELVE EN D0
  50.         ADDQ.L  #8,a7
  51.         PEA N_ELEM      * SE LE PASAN DOS PARÁMETROS
  52.         PEA ARRAY       * POR PILA 
  53.         BSR     SUMAPI 
  54.         ADDQ.l  #8,a7
  55.         PEA N_ELEM      * SE LE PASAN DOS PARÁMETROS
  56.         PEA ARRAY       * POR PILA 
  57.         MOVE.L #3,-(A7)     * DESPLAZAMIENTO
  58.         BSR     MULTIP 
  59.         ADDA.L  #12,a7
  60.         PEA N_ELEM      * SE LE PASAN DOS PARÁMETROS
  61.         PEA ARRAY       * POR PILA 
  62.         BSR     MINIMO      *DEVUELVE EN D0
  63.         ADDQ.l  #8,a7
  64.         PEA     NUM1
  65.         PEA NUM2
  66.         BSR     MCM
  67.         ADDQ.l  #8,a7
  68. BUCLE       BRA     BUCLE       * EL PROGRAMA NO PROSIGUE
  69.  
  70.  
  71. ***************************************************************************
  72. * SUBRUTINA
  73. ***************************************************************************
  74.  
  75. CALCULA     BSR PARIMPAR
  76.         RTS
  77.        
  78. SUMA        ADDA.L #-8,A7
  79.         MOVEM A3/D2,(A7)
  80.         MOVE.L 16(A7),D2
  81.         MOVE.L 12(A7),A3
  82.         CLR.L D0
  83. LOOP        ADD (A3)+,D0
  84.         SUBQ #1,D2
  85.         BNE LOOP
  86.         MOVEM (A7),A3/D2
  87.         ADDA.L #8,A7
  88.         RTS
  89.        
  90. MEDIA       ADDA.L #-8,A7
  91.         MOVEM A3/D2,(A7)
  92.         MOVE.L 16(A7),D2 *RECUPERAMOS EL NUMERO DE ELEMENTOS
  93.         MOVE.L 12(A7),A3 *RECUPERAMMOS DIR DE ARRAY
  94.         MOVE.L D2,-(A7)
  95.         MOVE.L A3, -(A7)
  96.         BSR SUMA
  97.         DIVS D2,D0
  98.         ADDA.L #8,A7
  99.         MOVEM (A7),A3/D2
  100.         ADDA.L #8,A7
  101.         RTS
  102.        
  103. PARIMPAR    ADDA.L #-12,A7
  104.         MOVEM A3/D2-D3,(A7)
  105.         MOVE.L 20(A7),D2
  106.         MOVE.L 16(A7),A3
  107.         CLR.L D0
  108.         CLR.L D1
  109.         CLR.L D3
  110. LOOP2       ADD (A3)+,D0
  111.         ADDQ #1,D3
  112.         CMP D3,D2
  113.         BEQ FIN
  114.         ADD (A3)+,D1
  115.         ADDQ #1,D3
  116.         CMP D3,D2
  117.         BNE LOOP2
  118. FIN     MOVEM (A7),A3/D2-D3
  119.         ADDA.L #12,A7
  120.         RTS
  121.  
  122. BUSQUEDA    ADDA.L #-16,A7
  123.         MOVEM A3/D1-D3,(A7)
  124.         MOVE.L 28(A7),D2
  125.         MOVE.L 24(A7),A3
  126.         MOVE.L 20(A7),D3
  127.         CLR.L D0
  128. LOOP3       MOVE.L (A3)+,D1
  129.         CMP D1,D3
  130.         BNE CONTINUA2
  131.         ADDQ #1,D0
  132. CONTINUA2   SUBQ #1,D2
  133.         BNE LOOP3
  134.         MOVEM (A7),A3/D1-D3
  135.         ADDA.L #16,A7
  136.         RTS
  137.        
  138. BUSQUEDASEL     ADDA.L #-16,A7
  139.         MOVEM A3/D1-D3,(A7)
  140.         MOVE.L 28(A7),D2
  141.         MOVE.L 24(A7),A3
  142.         MOVE.L 20(A7),D3
  143.         CLR.L D0
  144. LOOP4       MOVE.L (A3)+,D1
  145.         CMP D3,D1
  146.         BLE CONTINUA
  147.         ADDQ #1,D0
  148. CONTINUA    SUBQ #1,D2
  149.         BNE LOOP4
  150.         MOVEM (A7),A3/D1-D3
  151.         ADDA.L #16,A7
  152.         RTS
  153.  
  154.  
  155. BUSQUEDAPI  ADDA.L #-16,A7
  156.         MOVEM A3/D2-D4,(A7)
  157.         MOVE.L 24(A7),D2
  158.         MOVE.L 20(A7),A3
  159.         CLR.L D0
  160.         CLR.L D1
  161. LOOP5       MOVE.L (A3)+,D3
  162.         MOVE.L #2,D4
  163.         REMS.L D4,D4:D3
  164.         BNE IMPAR
  165.         ADDQ #1,D0
  166.         BRA CONTINUE
  167. IMPAR       ADDQ #1,D1  *ES IMPAR
  168. CONTINUE    SUBQ #1,D2
  169.         BNE LOOP5
  170.         MOVEM (A7),A3/D2-D4
  171.         ADDA.L #16,A7
  172.         RTS
  173.        
  174.        
  175.        
  176. SUMAPI      ADDA.L #-16,A7
  177.         MOVEM A3/D2-D4,(A7)
  178.         MOVE.L 24(A7),D2
  179.         MOVE.L 20(A7),A3
  180.         CLR.L D0
  181.         CLR.L D1
  182. LOOP6       MOVE.L (A3)+,D3  *VALOR i DEL ARRAY
  183.         MOVE.L #2,D4
  184.         REMS.L D4,D4:D3
  185.         BNE IMPAR2
  186.         ADD D3,D0
  187.         BRA CONTINUA3
  188. IMPAR2      ADD D3,D1  *ES IMPAR
  189. CONTINUA3   SUBQ #1,D2
  190.         BNE LOOP6
  191.         MOVEM (A7),A3/D2-D4
  192.         ADDA.L #16,A7
  193.         RTS
  194.        
  195. DESPLAZ     ADDA.L #-16,A7
  196.         MOVEM A3/D2-D4,(A7)
  197.         MOVE.L 20(A7),D3 *DESPLAZ
  198.         MOVE.L 28(A7),D2 *NUM ELEMENTOS
  199.         MOVE.L 24(A7),A3 *POS DE INICIO ARRAY  
  200. LOOP7       MOVE.L (A3),D4
  201.         ASL D3,D4
  202.         MOVE.L D4,(A3)+
  203.         SUBQ #1,D2
  204.         BNE LOOP7
  205.         MOVEM (A7),A3/D2-D4
  206.         ADDA.L #16,A7
  207.         RTS
  208.        
  209.        
  210. MULTIP      ADDA.L #-16,A7
  211.         MOVEM A3/D2-D4,(A7)
  212.         MOVE.L 20(A7),D3 *DESPLAZ
  213.         MOVE.L 28(A7),D2 *NUM ELEMENTOS
  214.         MOVE.L 24(A7),A3 *POS DE INICIO ARRAY  
  215. LOOP8       MOVE.L (A3),D4
  216.         MULS D3,D4
  217.         MOVE.L D4,(A3)+
  218.         SUBQ #1,D2
  219.         BNE LOOP8
  220.         MOVEM (A7),A3/D2-D4
  221.         ADDA.L #16,A7
  222.         RTS
  223.            
  224.            
  225.         *DEVUELVE POR D0 EL RESULTADO (VALOR MAX)
  226. MAXIMO      ADDA.L #-12,A7
  227.         MOVEM A3/D2-D3,(A7)
  228.         MOVE.L 20(A7),D2 *NUM ELEMENTOS
  229.         MOVE.L 16(A7),A3 *POS DE INICIO ARRAY  
  230.         MOVE.L (A3)+,D0
  231.         SUBQ #1,D2
  232. LOOP9       MOVE.L (A3)+,D3
  233.         CMP D0,D3
  234.         BLE SEGUIR
  235.         MOVE.L D3,D0
  236. SEGUIR      SUBQ #1,D2
  237.         BNE LOOP9
  238.         MOVEM (A7),A3/D2-D3
  239.         ADDA.L #12,A7
  240.         RTS
  241.        
  242.         *DEVUELVE POR D0 EL RESULTADO (VALOR MIN)
  243. MINIMO      ADDA.L #-12,A7
  244.         MOVEM A3/D2-D3,(A7)
  245.         MOVE.L 20(A7),D2 *NUM ELEMENTOS
  246.         MOVE.L 16(A7),A3 *POS DE INICIO ARRAY  
  247.         MOVE.L (A3)+,D0
  248.         SUBQ #1,D2
  249. LOOP10      MOVE.L (A3)+,D3
  250.         CMP D0,D3
  251.         BGE SIGA
  252.         MOVE.L D3,D0
  253. SIGA        SUBQ #1,D2
  254.         BNE LOOP10
  255.         MOVEM (A7),A3/D2-D3
  256.         ADDA.L #12,A7
  257.         RTS
  258.        
  259.        
  260. MCD     ADDA.L #-12,A7
  261.         MOVEM D2-D4,(A7)
  262.         MOVE.L 20(A7),D2 *num1 U
  263.         MOVE.L 16(A7),D3 *NUM2 V
  264. LOOP11      BEQ SEGUIR2
  265.         REMS D3,D4:D2
  266.         MOVE.L D3,D2
  267.         MOVE.L D4,D3
  268.         BRA LOOP11
  269. SEGUIR2     MOVE.L D2,D0
  270.         MOVEM (A7),D2-D4
  271.         ADDA.L #12,A7
  272.         RTS
  273.        
  274.        
  275.        
  276. MCM     ADDA.L #-8,A7
  277.         MOVEM D2-D3,(A7)
  278.         MOVE.L 16(A7),D2 *num1 U
  279.         MOVE.L 12(A7),D3 *NUM2 V
  280.         MOVE.L D2,-(A7)
  281.         MOVE.L D3,-(A7)
  282.         BSR MCD     *MCD EN D0
  283.         ADDA.L #8,A7
  284.         MULS D2,D3
  285.         DIVS D0,D3
  286.         MOVE.L D3,D0
  287.         MOVEM (A7),D2-D3
  288.         ADDA.L #8,A7
  289.         RTS
Add Comment
Please, Sign In to add comment