rubenelportero

Prueba ejercicio 1

Mar 2nd, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Ruben Garcia Segovia
  2. ; Ejercicio del examen 14-03-2013
  3. ; Escribir un programa en el lenguaje ensamblador del microprocesador MC68k, con
  4. ; una subrutina que se comunique con el programa principal a traves de la pila, que
  5. ; divida por 16 un numero entero de 32 bits siempre que no se produzca perdida de
  6. ; informacion o que lo complemente a uno en caso contrario.
  7. ; Fecha: 02/03/2017
  8.  
  9.            org $0
  10.            dc.l $10000,$400
  11.  
  12.            org $400
  13.            clr.l d3                    ;Limpio el registro d3
  14.            move.l #930,d0              ;Coloco el numero a evaluar
  15.            move.l d0,-(sp)             ;Lo meto en la pila
  16.            jsr rutina                  ;Ejecuto la subrutina
  17.            move.l (sp)+,d1             ;Extraigo el valor y devuelvo al SP a su estado inicial
  18. fin        jmp fin
  19.  
  20.            org $1000
  21. rutina     move.l 4(sp),d1             ;guardo el numero en d1
  22.            move.l d1, d2               ;lo guardo tambien en d2
  23.            lsr.l #1,d2                 ;Dividimos con desplazamiento. Son 4 desplazamientos ya que el comando es en BITs (binario)
  24.            bcs fallo                   ;Miro en el registro de estado C si hay algun acarreo
  25.            lsr.l #1,d2
  26.            bcs fallo                   ;Miro en el registro de estado C si hay algun acarreo
  27.            lsr.l #1,d2
  28.            bcs fallo                   ;Miro en el registro de estado C si hay algun acarreo
  29.            lsr.l #1,d2                 ;Division terminada
  30.            bcs fallo                   ;Miro en el registro de estado C si hay algun acarreo
  31.            move.l d2,4(sp)             ;Mando el numero dividido por la pila
  32.            jmp finrut
  33. fallo      not d1                      ;Complemento A1 al numero (no era division exacta)
  34.            move.l d1,4(sp)             ;Mando el numero A1 por la pila
  35. finrut     rts
  36.            end
Add Comment
Please, Sign In to add comment