Con este sencillo programa podremos
ver como funciona el Asm68k, para realizar una sencilla suma:
PRINCIPAL
ORG
$1000
;comienza en la direccion $1000
MOVE.L #25,D0
;pone 25 en D0
MOVE.L #12,D1
;pone 12 en D1
MOVE.L D0,D2
;pone el contenido de D0 en D2
ADD.L
D1,D2
;suma el contenido de D1 con D2 FIN
MOVE.B #228,D7
;finaliza la simulacion
TRAP
#14
END
2.- Prueba de la memoria RAM:
Se pretende detectar fallos en la
memoria RAM, teniendo conocimiento de la posición exacta en que
se produce el fallo. Una memoria RAM averiada puede entregar, bien un 0,
bien un 1 en el bit que esta fallando, por lo que debemos efectuar una
doble comprobación:
- se escribe $00 en un byte
- se comprueba que se lee $00
- se escribe $FF en un byte
- se comprueba que se lee $FF
Si las operaciones de lectura no proporcionan
un dato igual al que previamente se ha descrito, se habrá detectado
un fallo. Esto se puede comprobar con el siguiente programa.
Queda pendiente el desarrollo de una
subrutina, llamada aviso.
**********************************************************************************************
* VERMEM.ASM
* Verificación
de un bloque de memoria
**********************************************************************************************
absolute
org
$25000 Longitud
EQU
$FFF
;tamaño del bloquverificar DirInic
EQU
$26000
;dirección inicial del bloque main
move.w
#Longitud,D0
move.l
#DirInc,A1
bsr
VerMem
;llama a la rutina final
bra.s
final **********************************************************************************************
* VerMem = Verifica el funcionamiento de un bloque
de memoria
* A1 = Dirección inicial del bloque de memoria
* D0 = Longitud en bytes de dicho bloque (Word)
* Si hay fallo llama a una subrutina que genera
un aviso.
* La dirección que produce el fallo es el
contenido de A1 al hacer la llamada.
**********************************************************************************************
VerMem
move.w
#0,(A1)
;Escribe un 0 en memoria
tst.b
(A1)
;Lee y compara
bne
fallo
;Si no es cero, hay fallo
move.b
#$FF,(A1)
;Escribe $FF en memoria
cmpi.b
#$FF,(A1)+
;Lee, compara y apunta a
;la siguiente posición
bne
fallo1
;Si no es $FF, hay fallo
dbf
D0,VerMem
;Repite hasta completar bloque
bra
salir fallo1
subq.l
#1,A1
;A1=Dirección de fallo fallo
jsr
Aviso
addq.l
#1,A1
;Siguiente dirección a verificar
dbf
D0,VerMem
;Actualiza nºordm; de posiciones y
;si no era la última continua salir
rts
end **********************************************************************************************