iki 4 bitlik sayıyı birleştirmek

Başlatan biteker, 22 Ocak 2005, 20:59:43

biteker

arkadaşlar iki 4 bitlik sayıyı yanyana birleştirip 8 bitlik bir sayı oluşturmak istiyorum ama bunun nasıl yapılacağını bulamadım

örneğin 0001 ve 0001 sayılarını birleştirerek 00010001 sayısını elde etmek istiyorum

ete

ilk sayıyı shift komutu ile 4 bit sola kaydır. Elde ettiğin sayıya ikinci sayıyı ekle. veya ilk sayıyı 16 ile çarp buna ikinci sayıyı ekle.
Sanırım istediğin olur.

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

biteker

ETE cevabın için çok teşekkürler ben picbasic den hep bunları birleştirecek bir komut arıyorum visual basic de olduğu gibi ama önerdiğin yöntem işimi gördü

arslan74

ASM ile makro yazacaksan sana basit bir kod vereyim.
Alıntı Yap
ASM

sayi1                 ;bunlar 4 bitlit değerler
sayi2                 ;

sayi3                 ; sonucu buraya yazacak.


movfw   sayi2                ; 2.çi sayıyı
movwf   sayi3                ; sonuca ekler

swap     sayi1,w             ; sayi1'nın ilk 4 ile son 4 biti yer değiştirir
                                   

addwf    sayi3               ; iki sayıyı birbirine ekler.

ENDASM
Bu kod daha sağlıklı sonuc verir. çünkü sağ yada sola kaydırmada Carry
biti de sayıya eklenir. Eger Carry sıfırsa sorun olamaz ama carry 1 ise hatalı sonuc verir. O yüzden bunu kullan yada sayıyı sola öteledikten sonra sonucu B'1111000' sayısı ile AND' lersen o hatayı ortadan kaldırır.

Kolay gelsin.

ftsahin

Basic kodlarıyla daha basit bir çözümü var. Soldaki sayıyı 16 ile çarp ve çıkan sonuca sağdaki sayıyı ekle.

Örnek:

1001 ve 1100 iki sayımız olsun

1001 = 9
1100= 12

9*16=144
144+12=156
156= b'10011100

DumrulBey

Merhaba,

Arkadaşlar eğer 18x ailesi kullanmıyorsanız donanım yoluyla çarpma yapamayacağınız için çarpma daha yavaş kalır. En mantıklısı değişkenlerden birini SWAP komutuyla terslemek sonra XOR ile iki değişkeni birleştirmek hepsi o kadar. Topu topu MOVLW komutunu da hesaba katarsa 3 satır/çevrimlik program yazılacak.

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)