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