Bazı Assembly Komutlarının anlamı?

Başlatan Elektron74, 21 Kasım 2007, 14:45:01

salih_arel

anladım.teşekkür ederim yardımınız için. ::)

salih_arel

controlPort equ PORTA
bit.clk equ 0
bit.sin equ 1
bit.latch equ 2

yukarıdakiler port a nın bitlerine atanan etiketler aşağıda ise bunlar üzerinden yazılan bir kod dizisi var. benim anlamadığım
movlw   (0<<bit.clk) | (0<<bit.latch) | (1<<bit.sin) kodunu yazdığında nereye ne atıyor. yardımcı olabilirmisiniz.
;--------------------------


tm.shift1   movlw   (0<<bit.clk) | (0<<bit.latch) | (1<<bit.sin)

   decfsz   buffer.draw,F   
   andlw   (0<<bit.sin)      ; if buffer.draw != 1 clear bit
   movwf   controlPort      ; write to control port
   movwf   buffer.draw

   call   tm.sw.delay

   movfw   buffer.draw
   iorlw   (1<<bit.clk)       ; set clock bit
   movwf   controlPort      ; write to control port, clock data

   call   tm.sw.delay

   movlw   (0<<bit.clk) | (1<<bit.latch) | (0<<bit.sin)
   movwf   controlPort
   movfw   layer.select
   movwf   layerPort

   call   tm.sw.delay

   movlw   (0<<bit.clk) | (0<<bit.latch) | (0<<bit.sin)
   movwf   controlPort

   call   tm.sw.delay



   return


tm.sw.delay   movlw   .255
tm.sw.del.in   addlw   -.1
   skpz
   goto   tm.sw.del.in
   return

Tagli

Kodu yazan adam işleri bir düzene sokmak için bazı bayrakları tutacağı bir register oluşturmuş. Bu geçici bir değer de olabilir, ama bir yapı olarak düşün. Bunu alıp controlPort'a yazıyor. Muhtemelen bir çeşit seri iletişim için kullandığı bacaklara denk gelecek şekilde oluşturulmuş bu yapı. 0. bit clock, 1. bit sin (ne olduğunu anlamadım), 2. bit de latch olsun demiş. Yazarken de hangi bitin ne olduğu gözüksün diye öyle garip bir formatta yazmış. Yani yazdığı şey aslında şu: movlw 0b00000010 . Bunun ilk bakışta hangi bitinin ne işe yaradığını görmek zor. Hatta bu sekiz bitin sadece üçünün kullanıldığı bile anlaşılmıyor. Ama adamın yazım şeklinde hangi bitin 1 hangisinin 0 olduğu daha net gözüküyor.

Bu daha önce görmediğim ilginç bir yazım tekniği. Oldukça da profesyonel gözüküyor. Ama ben uğraşmazdım sanırım böyle bir şeyle. Ben genelde bu tür bilgileri bir karalama kağıdında tutuyorum ve hangi bitin ne olduğunu hatırlamak için oraya bakıyorum.
Gökçe Tağlıoğlu

salih_arel

Ustam adam çok profesyonel çalışmış. Yani kendi kullanıcağı register adreslerinin hepsini asm kodunda atamış. Geri kalan herşeyi .inc uzantılı alt dosyalar yazarak hallediyor. Burda pic ile yönettiği komponentte MBI5026 Led Driver. bit.sin bit.clock Mbı5026nın girişleri.

M_B

Alıntı yapılan: Tagli - 25 Ağustos 2011, 09:06:27
1. bit sin (ne olduğunu anlamadım),

Hocam sin le  Serial in demek istemiş.
Diğerlerini zaten bulmuşsunuz. Clk ve latch ucları
Seri bilgiyi Parelele ceviren bir entegre kullanmış ama ismini bilemiyecem ( 74HC595 mantığı )
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

salih_arel

kullanılan entegre MBI5026 led sürücüsü

Kadir Can(16F84)

Hocam Assembly ile yapı( struct ) tanımı nasıl yapılıyor?
Burada gördüğüm kadarıyla bir iki yapı tanımlanmış fakat tanım kısmı yok.

Tagli

Yukarıdaki mesajımda geçen yapı ifadesi mecazi anlamdaydı. Yani adama kendince bir kural belirlemiş, birinci bit şu olsun, ikinci bit bu olsun demiş. Yapı derken anlatmaya çalıştığım şey oydu. Kod yazımını da buna benzetmiş. Arada geçen noktalar önce beni de şaşırttı. Sonradan bunların sadece etiket isminin bir parçası olduğunu farkettim. Yani programda, C'deki gibi bir yapı (struct) bulunmuyor.
Gökçe Tağlıoğlu

Kadir Can(16F84)

Ben de noktalardan hareket ederek yapı olduğunu düşünmüştüm.
Teşekkür ederim.