Salvo
Kayıtlı Üye
ÇARPMA İŞLEMLERİ
PIC ile Çarpma İşlemleri
Bizim matematik bilgilerimize göre çarpma işleminde katlama olayı vardır. Bildiğimiz gibi çarpma işlemi aslında toplama işleminin üst üste defalarca yapılmasıdır. örneğin 2 ile 3 ün çarpımında; 2 sayısını 3 defa üst üste toplarız, şöyle ki;
2+2+2=6
Aslında şöyle yapıyoruz;
0+2=2
2+2=4
2+4=6
2 sayısını 3 defa topladık ve 2X3=6 sayısına ulaştık
Şimdi bunu bir programlama dilinde yaptığımızı düşünelim.
Örneğin visual basic;
carpim=0
for i=1 to 3
carpim=carpim+2
next
Sonuc=> carpim=6 olacaktır.
Bu döngüyü aynen assembler da da oluşturursanız çarpım işlemini yaptınız demektir. zaten kullandığımız makineler bu yöntemle yapıyor, ipucu verelim: decfsz ile bir değişkenin içeriğini (3 sayısı) her defasında 1 azaltalım ve her döngüde diğer değişkenin içeriğini önceki değerine 2 ekleyerek toplayalım. sonucu bulacaksınız eminim,
Assembler da çarpma için kısa yollar:
1) Assemblerda 2 ile çarpma; Elinizdeki değerin (bit olarak) en sağ basamağına 1 adet sıfır eklemek. Örneğin 3 ile 2 yi çarpmak için; 3(10)=11(2) Yani 10 luk tabanda 3 sayısı=>ikilik sayı sisteminde 00000011 dir. Bu 00000011 in en sağına bir sıfır ekliyoruz, ve bu basamaktan solda klanları birer basamak sola kaydırıyoruz. Yani sonuç olarak 3X2=00000110 ==>6 oluyor. Hangi sayı olursa olsun bu yöntemi kullanabilirsiz.
2) Assemblerda 4 ile çarpma; Burada bütün anlatılacak olanlarda 2 ile çarpma yöntemi gibidir, yalnız basamak sayısı 2 ye çıkar, yani 4 ile çarpmak istediğiniz sayın en sağ basamağına 2 tane sıfır eklersiniz.
3) Assemblerda 8 ile çarpma; Burada bütün anlatılacak olanlarda 2 ve 4 ile çarpma yöntemi gibidir, burada da basamak sayısı 3 e çıkar, yani 8 ile çarpmak istediğiniz sayının en sağ basamağına 3 tane sıfır eklersiniz. Peki sola kaydırmayı nerden yapacağız? Cevap verelim : RLF ve bu işlem böyle devam edip gidiyor.
__________________
PIC ile Çarpma İşlemleri
Bizim matematik bilgilerimize göre çarpma işleminde katlama olayı vardır. Bildiğimiz gibi çarpma işlemi aslında toplama işleminin üst üste defalarca yapılmasıdır. örneğin 2 ile 3 ün çarpımında; 2 sayısını 3 defa üst üste toplarız, şöyle ki;
2+2+2=6
Aslında şöyle yapıyoruz;
0+2=2
2+2=4
2+4=6
2 sayısını 3 defa topladık ve 2X3=6 sayısına ulaştık
Şimdi bunu bir programlama dilinde yaptığımızı düşünelim.
Örneğin visual basic;
carpim=0
for i=1 to 3
carpim=carpim+2
next
Sonuc=> carpim=6 olacaktır.
Bu döngüyü aynen assembler da da oluşturursanız çarpım işlemini yaptınız demektir. zaten kullandığımız makineler bu yöntemle yapıyor, ipucu verelim: decfsz ile bir değişkenin içeriğini (3 sayısı) her defasında 1 azaltalım ve her döngüde diğer değişkenin içeriğini önceki değerine 2 ekleyerek toplayalım. sonucu bulacaksınız eminim,
Assembler da çarpma için kısa yollar:
1) Assemblerda 2 ile çarpma; Elinizdeki değerin (bit olarak) en sağ basamağına 1 adet sıfır eklemek. Örneğin 3 ile 2 yi çarpmak için; 3(10)=11(2) Yani 10 luk tabanda 3 sayısı=>ikilik sayı sisteminde 00000011 dir. Bu 00000011 in en sağına bir sıfır ekliyoruz, ve bu basamaktan solda klanları birer basamak sola kaydırıyoruz. Yani sonuç olarak 3X2=00000110 ==>6 oluyor. Hangi sayı olursa olsun bu yöntemi kullanabilirsiz.
2) Assemblerda 4 ile çarpma; Burada bütün anlatılacak olanlarda 2 ile çarpma yöntemi gibidir, yalnız basamak sayısı 2 ye çıkar, yani 4 ile çarpmak istediğiniz sayın en sağ basamağına 2 tane sıfır eklersiniz.
3) Assemblerda 8 ile çarpma; Burada bütün anlatılacak olanlarda 2 ve 4 ile çarpma yöntemi gibidir, burada da basamak sayısı 3 e çıkar, yani 8 ile çarpmak istediğiniz sayının en sağ basamağına 3 tane sıfır eklersiniz. Peki sola kaydırmayı nerden yapacağız? Cevap verelim : RLF ve bu işlem böyle devam edip gidiyor.
__________________