Pointer ve dolaylı adreslemeyle ilgili soru?

eem_murat

Üye
Katılım
26 Ağu 2009
Mesajlar
93
Puanları
1
Yaş
39
merhaba,
aşağıdaki kodlarda "a" değeri 80 ve ben şunu yapmak istiyorum MB80.5 adresini okumak istiyorum. "a" değerim sürekli değişiyor bu nedenle MB80 i elde edebiliyorum ama MB80.5, MB80.4 ü nasıl elde edecem. yardımcı olursanız sevinirim...


L "a"
LAR1
L MB [AR1,P#0.0]

Konu başlıgını lütfen forum kurallarına uygun yazınız.
 
Moderatör tarafında düzenlendi:
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
Kod:
 L     MD     0       // a byte değerin a=80 ise
      SLD   3         // 3 bit sola kaydırıp Byte adresine geçiyoruz
      L     5         // a'ıncı byetın n.inci bit değeri  (a.n) yani 80.5
      +D              // bit değerine geçiş için matematiksel işlem
      T     MD    10  // İndirekt adresleme için bir değişken
      A     M [MD 10] // MD10 içinde= M[a.n] bit adresi var 
      A     I      0.0  // Bu kısmı test etmek için kullandım
      =     Q      0.0  //Kolay gelsin...
 
Son düzenleme:
Kod:
L     MD     0       // a byte değerin a=80 ise
      SLD   3         // 3 bit sola kaydırıp Byte adresine geçiyoruz
      L     5         // a'ıncı byetın n.inci bit değeri  (a.n) yani 80.5
      +D              // bit değerine geçiş için matematiksel işlem
      T     MD    10  // İndirekt adresleme için bir değişken
      A     M [MD 10] // MD10 içinde= M[a.n] adresi var 
      A     I      0.0  // Bu kısmı test etmek için kullandım
      =     Q      0.0  //Kolay gelsin...

Merhaba, cevap için teşekkür ederim. ama anlamadığım bazı noktalar var

şimdi ben şunu anlıyorum;

MD0 a 80 değerini attım 0000 0000 0101 0000
SLD3 0000 0010 1000 0000
bu noktadan sonra 5 ile toplamak nasıl 80.5 ifadesini gösterir. Lütfen biraz daha açıklarsan çok sevinirim
 
Yönetici Notu: Paylaşılan fotoğraf, fotoğraf paylaşım sitesinden silindiği için kaldırılmıştır.

32 bit pointer yapısı yukarıdaki gibidir 3 hane sola kaydırıp, byte adresini oluşturdum, son 3 bit; bit adresini işaret ediyor bu teknikte.
Son bit adresini oluşturmak için 0=<n<=7 arasında sayıyla toplayabilirsin aksi halde bayte alanına girersen dolaylı adresleme bozulur.
 
Çok teşekkür ederimmmmmmm. inanılmaz yardımcı oldun bana. çok incesin.

M 80.5 değilde MB80.5 adresindeki biti kontrol etmek istersem nasıl bir yol izlemeliyim acaba
 
Son düzenleme:
Kod:
      SET   
      SAVE  
      L     80
      T     MD     0
      SLD   3
      LAR1  
      A     M [AR1,P#0.5]
      BEU
ya da
Kod:
      SET   
      SAVE  
      L     P#M 80.5
      LAR1  
      A     [AR1,P#0.0]
      BEU

En üstteki kodta p# den sonraki rakamı 0.0-0.7 arasında değiştirerek istediğin adrese erişebilirsin. Ayrıca MB80.5 diye bir adres olmaz.Buradaki B byte olarak adreslenebileceğini gösterir.
 

Forum istatistikleri

Konular
128,212
Mesajlar
915,856
Kullanıcılar
449,990
Son üye
alpersirakaya

Yeni konular

Çevrimiçi üyeler

Geri
Üst