Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Working Register(WREG)

Başlatan Eowe, 15 Eylül 2014, 16:29:21

Eowe

Arkadaslar 2 gün önce hic bir sey bilmedigim assembly pic egitimine basladım.Eğitimimi PIC 16F877A Proje tasarımı adlı kitaptan götürmeye çalısıyorum.Kitap çok başarılı fakat working register dedigi assembly komutlarındada sürekli geçen ADDWF (W register içerigini f ile topla) açıklamamış.

Bellekte yeri Data Memory(Ram)demidir?
Ramdeyse Özel İşlev registerında mı yoksa Genel İşlev Registerındamı yer alır?
Görevi nedir neden assembly komutlarında bu kadar fazlaca kullanılır?

RaMu

ADDWF komutundan örnek vereyim,
aslında wreg in birçok işlevi var biri şu,
çoğu md. (mikrodenetleyici)
file register dediğimiz öisal portb gibi registerlara
başka bir file register veya ram de tanımladığımız bir register ile direk işlem yapamaz,
misal sen portb ye 05h yüklemek istiyorsun
portbye direk 05h ı yükleyebilecek bir donanım md.de yoktur (bazılarında vardır)
bu yüzden öncelikle 05h ı wreg e yüklersin
wreg ide portb ye aktarırsın,
bunun gibi misal misal ram de tanımladığın 2 değişkenin var
deg1 equ 20h
deg2 equ 21h
gibi tanımladın diyelim,
deg1 ve deg2 yi toplamak istediğinde
bunları direk toplayabilecek bir donanım md.de yoktur (bazılarında vardır)
bu nedenle önce misal deg1 in değerini wreg e aktarırsın
sonra wreg ile deg2 yi toplarsın.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Tagli

Bazı kaynaklarda bunlar akümülatör olarak da anılır. Bazı işlemcilerde birden fazla adet akümülatör bulunur. Bazen de komuta göre farklı genişlikte değerlendirilirler.

Çok emin değilim ama bir ihtimalle, akümülatörlerin tarihçesi ve varlık nedeni eski bilgisayar sistemlerine dayanıyor. Mikrodenetleyici kavramının ortaya çıkmasından önce, sistem belleği işlemci içinde değildi. Aslında şimdiki bilgisayar sistemleri de öyle. Bellek dışarıda olunca, erişimin bir zaman maliyeti oluyor. Akümülatörler ise işlemcinin içinde, ancak sınırlı sayıdalar. İlk işlemcilerde 1 veya 2 tane varmış galiba. Bu sebeple işlemci tek çevrim süresinde dışarıdaki bellek üzerinde iki işlem yapamıyor, yani [oku / işlem yap / geri yaz] durumu olamıyor. Akümülatörler burada tampon bellek görevi yaparak geçici depolama alanı oluşturuyorlar. Anladığım kadarıyla mikrodenetleyicilerde bellek, entegrenin içine alınmış olsa da erişim mantığı benzer. Bu sebeple hala çoğu komut akümülatöre ihtiyaç duyuyor.

PIC16'larda (en azından eski serilerinde) WREG adres uzayında tanımlı değil. Ama mesela PIC18'lerde SFR (Özel İşlev Register'ı) gibi erişilebiliyor. Bunun sağladığı fayda, W üzerinde yapılabilecek işlemlerin artması oluyor.
Gökçe Tağlıoğlu

hasankara

Tagli movwf komutuyla istediğimiz adrese içeriğini aktarabiliyoruz yada movf komutuyla adresteki veriyi w a kayıt ediyoruz zaten ayrekten sfr de bulunmasına ne gibi ihtiyaç duyulabilir?

Tagli

Mesela RLF komutunu düşün. WREG adres uzayında yoksa bu komutu WREG üzerinde kullanamazsın.
Gökçe Tağlıoğlu

hasankara

evet pek bir getirisi yok gibi aslında. w den alakasız çalışan tüm komutlar ile w üzerinde işlem yapmak istediğimizde hep aynı durumla karşılaşmış olacağız.