- immidiate adressing
- direct adressing
- indirect adressing
movlw 0x20;working registerın içine 20hex verisini atmış olduk
sublw 0x10;istersek bu atılan veride değişiklik de yapabiliriz
direct adressing:bu adresleme program yazarken en sık kullanılan adresleme türüdür,bu adresleme türünde bir veriyi bir adrese yazmak isterken onu önce working reg'e taşırız,ondan da istediğimiz yere.
movf 0x50,w ;50 hex verisini working reg'e atıyorum
movwf 0x20; ;working reg'in içindekini, yani 50hex verisini 20hex adresine atıyorum
böylece veriyi istediğim bir adrese atmış oluyorum.
indirect adressing:dolaylı adresleme diğer adresleme türlerine göre biraz daha karışk ve hata oranı daha fazladır.bu adresleme türünde veri yazmak istediğimiz adresi başka bir registerın içine yazıyoruz,bu exra registera yazdığımız adrese de başka bir register yardımıyla veri yazarız.
bu adresleme türünde yardımcı olarak kullandığımız iki extra register vardır:fsr ve indf registerları.
fsr register:veri aktarmak istediğimiz adresin taşındığı registerdır.
indf register:fsrnin adreslediği yere karşılık geliyor,ram bellekte adresi buluna fiziksel bir register değildir.
indf registerını kullanan bir komut geldiğinde fsr'nin gösterdiği registerın içindeki veriye ulaşmak için kullanılır.
şimdi indirect adresleme yolu ile 0x20 verisini 0x50 adresine atalım:
movlw 0x50 ;w rege 50 adresini attım
movwf fsr ;w regindeki 50 hex adresini fsrnin içine attım
movlw 0x20 ;w regine 20 hex verisini attım
movwf indf ;workingdeki 20 hex verisini indf'nin içine attım,yani fsr'nin tuttuğu 50 hex adresine 20
;hex verisini yazmış oldum
neden indirect adresleme kullanma gereği duyarız???
indirect adresleme türünü daha çok ardıiık adreslerde işlem yapmak için kullanırız,
incf fsr diyerk bir sonraki adrese kolaylıkla geçmiş olruz.
DERYA GÜNDÜZ
Hiç yorum yok:
Yorum Gönder