October 1, 1989 Tarihli Commodore Gazetesi Sayfa 22

October 1, 1989 tarihli Commodore Gazetesi Sayfa 22
Metin içeriği (otomatik olarak oluşturulmuştur)

Aşsembler dilinde kullanıcının yü- künü hafifleten bazı sayı ve işaret be- lirtme yöntemleri mevcuttur. Bu yön- temlerden biri BCD sayılarıdır. BCD, “binary coded decimal"” ve- ya “ikilik sistemde kodlanmış desi- mal sayı” anlamındadır. Bu yöntem- de O'dan 9'a kadar olan tüm rakkam- lar ikilik sistemde 4 Bit'lik bir sayı ile kadlanmıştır: İkilik: 0000 0001 Desimal: 5 2 xO BO S n A da G b — © 1Ü0l10'dan 11İl'e olan sayıların BCD kaodları mevcut değildir. Eğer elimizde iki basamaklı bir desimal sa- yı varsa (örneğin 12) önce bu sayı her basamağındaki rakamlara ayrılır (1 ve 2) ve ikilik olarak kodlanır. Örne- Himizdeki 1 rakamının BCD karşılı- ği O00l ve 2 rakamının karşılığı ise 0010 doğru. Bu ikişi birleştirildiğin- de 12 sayısının BCD kodü olan Ö00l1 0ÜLÜ ortaya çıkar. Her sayı farklı sa- yıda basamağa sahip olduğfu için BOED sistemindeki sayılar için belli bir bayt sayısı söylenemez. Örneğin 1984 sayısı 2 bayt kullanmaktadır ve kar- şıliği OO01 TOĞ1L 100 1001 ÖlLÜÜ'dir. Yukarıda belirttiğimiz 1010 ile 1111 arası kullanılmayan altı kod yü- Burada sadece statü registerindeki de- simal göstergesini 1 yapmalıyız, Şimdi iki yeni kormut daha öğrene- ceğiz SED ve CLD, Bunlardan birin- cisi İngilizçe “set decimal-Tlag”' söz- cüklerinin kısaltmasıdır ve “desimal göstergesini aç” anlamına gölmekte- dir. Buna karşılık CLD (clear deci- mal-flag) ise aynı işlemin tersini yap- maktadır, yani desimal göstergesini kapamaktadır. Eğer bir program yazarken her- hangi bir yerde desimal göstergesini açmışsanız, daha sonra yapacağınız ikilik sistem işlemlerinden önce bir hata ile karşılaşmamak için CLD ke- mudunu kullanın! Yukardaki iki komut da 1 bayt uzunluğundadır ve ikisinin de ardın- da herhangi bir adres yer almaz. Bu şekilde BCD kodlama sistemi- ni de öğrendikten sonra ikilik siste- mindeki negatil sayılara geçebiliriz. Bu konuyu üç aşamalı olarak ele ala- © B Bız. 1) Negatif sayıları belirtmek için özel bir gösterge kullanılır. Bu gös- terge 1 değerini aldığında negatif sa- yıları, O değerini aldığında ise pozi- tif sayıları belirtir ve her bayun 7. Bit'inde yer alır. Örneğin 4 1 eskisi gibi 0000 O001 ikemn, -1 şimdi 100Ü OÖ01 olur, Fakat bu sistemde | bit gösterge olarak kullanıldığı için 1 bayt ile ifade edilebilen sayıların böl- gesi Ü-255'den Cİ27)H 4 1279'ye kay- mişlir. Artık ifade edebildiğimiz en büyük sayı OlT1 111 (— -127) olmuş- tur. Şimdi bu sistemi kullanarak aşa- Bıdaki toplamayı yapalım. zünde BCD sayıları ile işlemler el- iğo ?ggg ğ)(l]îg dukça karmaşık bir hal almaktadır. M Fakat C-64'ün mikroprosesor'ü bu 1001 GÖO0 — -16 sonucunu sayılarla doğrudan çalışabitmektedir. verir. Gi ÖB0 ÖÜ OC 08 CA ÖÜ 41i z5 B? OBÜC OOOAÂ Â a B Sonraki Basic Satır No.: 10 Komut şatırı Ca e e' AĞ ÖSÜB AB 3i Be OÜ 12 08 14 üB — 1 2 Satır Öğ12 O0l1â Komut Sonu Sonraki Basic — Satır No.: 20 satırı : ğ J 081Ü 80 Üü ö0 ÖÜ FF FF FF FF END Satır Program Böüş Bellek Kormmut Sonu Sonu Monitör programı bu şekilde gösterir. 22 — n z öbM ÇT —— —ei Nmuu_..- ha el ü;:;m;fğ , T tt ç Görüldüğü gibi 44 sonucunu elde etmemiz gerekirken (—İ6) değerin ortaya çıkmıştır. Demek ki eksi sayı- larla bu şekilde işlem yapamıyoruz. 2) Daha sonraki aşamada sayının birinci dereceden karşılığı hesaplanır. Burada pozitif sayılar için herhangi bir değişiklik sözkonusu değildir, Ne- gatif sayılar ise pozitif sayıların Bit'- lerimiz değerlerinin değiştirilmesiyle elde edilir. Yani 8— Bit bir sayıdaki 1'ler O ve O'lar ! olursa o sayının nc- gatifi elde edilir. Örneğin DO001 100 — (612)ise bunun birinci dereceden kar- şıliğiı 11110011 —(—192Y'dir. İşin ilginç yanı burada da daha ön- ce öğrendiğimiz 7. Bit'in negatif sa- yıları belirtme özelliğinin geçerli ol- masıdır. Bu şekilde iki gösterim şek- lini birleştirmiş olduk, fakat şimıdi bu şekilde hesap yapılıp yapılmayacağı- ni İncelemeliyiz, (48) - 0000 1000 (—6) — 1111 1001 () 90ĞÜ OĞ01 sonuçu oOrtaya çıkar, İşlemin sonuçunda bir taşma mey- dana gelmiştir. (9. Bit 1 olmuş) ve yi- ne beklenen değer elde edilmemiştir. Yani eksi sayılarla bu yöntemle de toplama, çıkarma yapamayız. 3) Eğer bir sayının birinci derece- den karşılığına “1” değerini ilave edersek ikinci dereceden karşılığını el- de ederiz. Bilisayarımız negatif sayı- ları bu son belirttiğimiz yöntemle al- gilar, Pozitif sayılar herhangi bir de- Bişikliğe uğramaz, örnek olarak (— 12) sayısını ele alalım. Te u|

Bu sayıdan diğer sayfalar: