29 Nisan 2010 Perşembe

assembly(pic 16f877a) programlama'da adresleme çeşitleri

assembly programlama'da  3 çeşit adresleme vardır
  • immidiate adressing
  • direct adressing
  • indirect adressing
immidiate adressing:bu adresleme  türünde working egisterın içine doğrudan değişken atanabilir veya içeriğinde değişiklik yapılabilir,bu adresleme sadece  working reg ile ilgili adres atamalarında kullanılır, çünkü  başka  bir  adrese veri atacaksak mutlaka onu önce  working registera  ordan başka bir yere aktarmamız  gerekir.
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:

 
Facebook

Bizi takip edin!

ESOGÜ Bilişim GünleriESOGÜ Bilişim Günleri