Proton Basic Bit kontrolü

Başlatan Diagnosis3, 26 Mart 2018, 01:27:14

Diagnosis3

Ete hocam;

8bit mikro işlemcilerde 8 bit içinde (%00000000 örneğin 4,5,6 bitleri) program işleyişinde sürekli değer değiştirmem gerekiyor ise, nasıl yapmam gerekir.
Mesela word tipi değişken için değişken.highbyte ve değişken.lowbyte şeklinde 8-8 lik ayrım olabiliyor. Fakat 8 bit içinde belli grup nasıl yönetilir bilmiyorum. Register yönetimleri için buna ihtiyacım var. Araştırsam da bir kaynak bulamadım bu konuda. Bu hususta yardımcı olabilir misiniz.

Hattuşa

araştırtırdığınız kaynak protonun helpinde yazıyor.
mesela byte içinde bir herhangi bir bitin değerine bakmak istiyorsanız. dig komutu ile bitin durumuna bakabilirsiniz.(sayfa 155)
benzer olarak getbit kmomutuda aynı işlevi yapıyor (sayfa 179)
ama eğer bahsi geçen biti kontrol etmek istiyorsanız setbit komutunu kullanabilirsiniz. (sayfa 360)

yok ben bunlardan bişey anlamadım derseniz kolay yolu da şu


dim deger as word
symbol altdeger =deger.lowbyte
symbol ustdeger =deger.highbyte

ustdeger.3 =1

ete

BU işleme maskeleme ile başlaman gerekir.
SAYI%10101110 şeklinde bir sayının 4-5-6 nolu bitlerini değiştirecek isen; sırası ile,
- Önce o bitler hariç sayının bir maskelenmiş kopyasını alacaksın  KOPYA=(%10101110 & %10001111) , dikkat edersen maskeleme işi yalnızca kopyalanmayacak olan bitlere sıfır diğerlerine 1 vererek yapılıyor. Bu işlemin neticesi %10001110 şeklinde olacaktır.
- Daha sonra değişecek kısım bu sayıya bitleri yerine getirerek eklenir. EK=%101 olsun Bu 101 bitlerini öncelikle 6 cı bitin hizasına getirmemiz gerekir. Yani en soldaki 6 cı bitin yerine gelecektir.  yani 4 bit sola kayacaktır. O halde EK=EK<<4 yazarsan bitler 6. bitin hizasından başlayacak hale gelirler. Elindeki ek sayısı şayet zaten 6 bitden itibaren yerleşmiş ise kayıdırma gerekmeyecektir elbette.
SONUC=KOPYA+EK şeklinde alınır. bunun tek komutla yapılması için;
SAYI=(SAYI & %10001111)+EK<<4  şeklinde bir ifade kullanmak yeterli olur.
Ek zaten kaymış vaziyette ise sadece SAYI=SAYI & %10001111)+Ek demen yeterlidir.
BU örnekte 3 bitin aynı anda değişeceği varsayılmıştır. Maskeleme işi değişen bit adedi ne göre yapılıp mesela önce tek bit sonra 2 bit daha gibi işler yapılabilir. Tabiiki tek bitlik işlerde direk SAYI.6=EK.6 demek de yeterli olabilir.
Ama birden fazla bit değişiminde yukardaki sistem işe yarar.

Ete

Powered by EzPortal