Çoğu zaman registerlerin tümünün kaydedilmesi ve tekrar geri çağrılması gereksinimi vardır. Basit bir program kodu ile nasıl yapıldığını kodlayalım. Program çalışma zamanında LMB(Left Mouse Button)'a basılana kadar bekler.
;lmb.asm
start:
movem.l d0-d7/a0-a6,-(a7) ; tüm registerleri kaydet
dongu:
btst #$06, $bfe001 ; $bfe001 adresinin 6. bitini LMB için kontrol et
bne.s loop ; set ise dongu labeline git
movem.l (a7)+,d0-d7/a0-a6 ; kaydedilmiş registerleri geri çağır
rts
ASM-Pro'da editor kısmında programı kodladıktan sonra ESC ile çıkıyoruz. W Works:lmb.asm olarak harddiske kaydettim. Sonra ayrı ayrı a ve j komutlarını yazarak entere bastım. Program kodlamada hata yapmadıysanız hatasız çalışır ve LMB'na basmanızı bekler durumdadır. Programı dissamble etmek için @dstart komutu yazın. Ayrıca start labelinin adresini bulmak için ?start komutunu kullanabilirsiniz.
Hiç yorum yok:
Yorum Gönder