ASM Bit işlemleri (dolaylı adresleme)

Başlatan Klein, 02 Haziran 2011, 01:55:46

Klein

C kodlarının arasına ASM girmem gerekiyor. Ancak Bit işlemlerinde takıldım.

Eğer asm("BCLR    5,0xe0") gbi bir komut girersem sorun yok. p0_5  üzerinde işlem yapabiliyorum.

veya herhangi bir pointerin adresini
        asm("MOV.W   pointer, A0");
şeklinde  bir pointerden alıp
       asm("MOV.B   #0x45, [A0]");
gibi bir komutla dolaylı adresleme işlemi de yapıyorum.
buraya kadar sorun yok.

ama 0xe0 olan port adresini ve bit  numarasını bir  pointerden veya aşka bir değişkenden almanın bir yolunu bilmiyorum.
Aslında bir yolu olduğunu da sanmıyorum. Yine de mümkün müdür? diye sormaktan kendimi alamıyorum.
Dolaylı adresleme ile bit işlemi yapmanın bir yolu var mı?



z

Kafam karisti. # Immediate deger alinacagini belirtsin.

B bit numarasi, A da adres olmak uzere

Mov #B,#A ve  Mov #B, A  seklinde 2 komutumuz mu var.

Amacimiz Mov B,A seklini mi olusturmak?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

Yok hocam.
Aşağıdaki işi yapacak bir yöntem. Bit işlkemi yaparken Port ve bit bilgisini fonksiyona geçilen parametreden almak.
void  yaz ( unsigned char *port , unsigned char bit){

asm("MOV.W   port, A0");
asm("BCLR    bit, [A0]");

}

yaz (&p0,2);