18 Ekim 2014 Cumartesi

Tüm registerleri kaydetmek ve tekrar geri yüklemek

Ç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