Küçük – BÜYÜK Harf Dönüşümü (Assembler + HEYCAN VERİCİ)
Assembler dili ile uğraşanlar için ufak bir kod ile küçük karakterdeki harflerin NASIL BÜYÜK KARAKTERE dönüştürüldüğüne bir bakalım.
ASCII tablosunu incelerseniz küçük harflerin hexadecimal olarak 0x61den başladığını, BÜYÜK harflerin de 0x41den başladığını göreceksiniz. 0×61="a" ve 0×41="A" karakterlerine denk gelmektedir. Bu iki karakter arasındaki fark
0×61-0×41 = 0×20 (Ondalık olarak 32)’dir .
Yani elimizdeki veri değerine göre decimal 32 eklememiz (BÜYÜK -> küçük) veya çıkarmamız (küçük->BÜYÜK) dönüşüm için yeterli olacaktır.
Küçük bir örnek ile bunu uygularsak; Kullandığımız assembler dili AVR işlemciler için geliştirilmiş olan dildir;
// R16 = 0x62 karakter karşılığı Küçük "b" harfi ldi R16, 0x62 // R16 = R16 - 0x20 karakter karşılığı BÜYÜK "B" harfi subi R16, 0x20
Yada ikinci bir yol olarak, asembler yapısına daha fazla hakim olan ve işlemci mantığını bilenlere yapancı gelmeyecek, çok daha heycanlı bir kod parçası olarak;
// R16 = 0x62, R16 = "b" harfi ldi R16, 0x62 // R16 = R16 & (~0x20), R16 = "B" harfi andi R16, (~0x20)
Bu ikinci kod parçacığında işlemcinin sevgilisi olan "1 ve 0" mucizesini kullanıyoruz. İşlemcilerde "Çıkarma" işlemi aşina olduğumuz, okullarda gördüğümüz şeklinden çok daha farklı bir algoritma ile çözülür. Nedir bu algoritma? Çıkarılacak olan sayı (yukarıdaki örnek için 0×20) önce ikilik sistemdeki TERSİNİ ALMA işlemine sokulur (~ bu işaret tersini al demek, yani 1 ler 0, 0 lar 1 yapılır) ve elde edilen değer (yukarıdaki örnek için 0×20′nin tersi 0xDF) ve çıkartma işlemini yapacağımız sayı ile VE (AND) işlemine tabii tutulur. Bunun sonucunda fark elde edilir.
Nasıl çok heycan verici değil mi?




Son yaptığın gerçekten ilginç….
Gerçekte çıkarma işleminin çalışma şekili bu ama biz bunu okullarda öğrendiğimiz şekilde uyguluyoruz bilgisayarda. Fakat derleyici arkaplanda bunu bu algoritma ile işliyor. İşlemci bunu daha hızlı çalıştırıyor. Aslında assembler bilmek yüksek seviye programlama dillerini kullanırken çok faydalı oluyor. Gerçekleşen olayları daha iyi anlıyorsunuz tabii bunun yanında bilgisayarı daha iyi yorumluyorsunuz. Bence bilinmesi gereken bir dil.
yaw bu tür çocuk işlerini anlatmaktan vazgeçip daha doğru düzgün bişiler anlatın artık
Kimse çocuk olmadan büyüyemez
Bir rivayete gore meyve veren agac meyveyi veremeyen agaclarin sahibince taslanirmis.
Meyve veren ağaçlardan olabilmemiz duasıyla…
Sen anlatta senden okuyalım salo.
ben bu çıkarma işlemini anlamadım. bu çıkarılacak sayının tersnin alınıp bulunan değerin çıkarma işlemi yapılacak sayı ile and yapılması işlemini anlamadım.
burda örneğin 2-1 nasıl hesaplanıyor?
10 and not(01)
10 and 10
10
gibimi
birisi açıklayabilirmi?