Comf ve Rlf komutu

Başlatan robikod, 18 Temmuz 2017, 21:46:07

robikod

Comf komutu secilen bitleri tersine ceviren bir komut bunu comf kullanmadan algoritmasini nasil kurabilirim? Comf kullanmadan asembly ile nasil yazabilirim. Ayni sey RLF icinde gecerli bit kaydirma islemini RLF kullanmadan nasil yaparim ?

sadogan

1 ile xor yaparsanın tersini alır.

robikod


robikod

Alıntı yapılan: sadogan - 18 Temmuz 2017, 22:13:07
1 ile xor yaparsanın tersini alır.
1 ile nasil xor yapacagim peki? 1111 1111 ile mi?

RaMu

EXOR
Evet 1111 1111 ile exor layacaksın (sayı 8 bit ise)



RLF basamakları bir BİT sola kaydırdığı için,
ikilik tabanda bir basamak sola kayan sayı,
onluk tabanda düşününce 2 ile çarpılmış olur anlamına gelir.


Yani sayıya kendisini eklersen,
1 defa RLF yapmış olursun.


Yeni sayıya yine kendisini eklersen
yine bir defa daha sola kaydırmış olursun,
artık ne kadar kaydırma yapmak istersen ...


Ödev mi?
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

XX_CİHAN_XX

RLF için sayıyı 2 ile çarpmak, RRF için sayıyı 2 ye bölmek ve COMF için de arkadaşların dediği gibi 1 ile XOR'lamak  işini görür.
sayıyı n kez kaydırmak istiyorsan 2^n ile çarpacaksın veya böleceksin.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

sadogan

Pic in hangi serisi ? 18F ve daha üstü serilerde var kaydırma. Düşük serilerde yok.

XX_CİHAN_XX

Olur mu hocam düşük serilerde de var.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

sadogan

Alıntı yapılan: sadogan - 20 Temmuz 2017, 09:12:14
Pic in hangi serisi ? 18F ve daha üstü serilerde var kaydırma. Düşük serilerde yok.
Yanlış yazmışım,
Pic in hangi serisi ? 18F ve daha üstü serilerde var çapma ve bölme. Düşük serilerde yok.

XX_CİHAN_XX

Evet düşük serilerde donanımsal çarpma veya bölme yok. Soruyu soran arkadaşın kaydırmalara alternatif yöntem arayışına cevaben yazdım. Eğer düşük serilerde çalışacak ise iteratif toplama ve çıkarmalarla soft olarak çarpma veya bölme yapılabilir.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

robikod

Teşekkürler cevap için,
COMF için şu şekilde yapmam doğru mu ?

MOVLW b'11111111'
XORWF b'00001111'
MOVWF PORTB

Bir de 2 ile çarpma ve bölmeyi çarpma işlemi için o kadar toplarım diye düşündüm bölme işlemi biraz karışıyor nasıl yapabilirim peki onu ?

robikod

Alıntı yapılan: RaMu - 20 Temmuz 2017, 02:30:25
EXOR
Evet 1111 1111 ile exor layacaksın (sayı 8 bit ise)



RLF basamakları bir BİT sola kaydırdığı için,
ikilik tabanda bir basamak sola kayan sayı,
onluk tabanda düşününce 2 ile çarpılmış olur anlamına gelir.


Yani sayıya kendisini eklersen,
1 defa RLF yapmış olursun.


Yeni sayıya yine kendisini eklersen
yine bir defa daha sola kaydırmış olursun,
artık ne kadar kaydırma yapmak istersen ...


Ödev mi?
Hayır ödev değil.

Sayıya kendisini eklediğimde taşma olduğunda zero bayrağını kontrol edip, w registerine 1 eklemek gerekiyor mu ?
Aynı şekilde rrf için kendini çıkarmamız yeterli olur mu ?

XX_CİHAN_XX

@robikod , sadece meraktan soruyorum böyle bir şeye neden ihtiyaç duyuyorsunuz?
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

RaMu

#13
@robikod bende merak ediyorum neden sorduğunu.

Ben zevkine bakmıştım bu yöntemlere,
normalde kullanımı olan-olacak şeyler değil,
mcu nun döndürme vs. komutunun olmaması mümkün değil denebilir.

Alıntı Yap
MOVLW b'11111111'
XORWF b'00001111'
MOVWF PORTB


Neyi COMF yapmak istiyorsun burada?

XORWF komutunun karşısında her zaman
bir F (File) registerı [yani RAM değişkeni]  olmalı.

Sayıdan kenidini çıkarırsan, sonuç 0 Sıfır olur demi.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

robikod

Alıntı yapılan: XX_CİHAN_XX - 21 Temmuz 2017, 09:10:20
@robikod , sadece meraktan soruyorum böyle bir şeye neden ihtiyaç duyuyorsunuz?


Mantığını anlamak için