Bu sayfadaki yazılar
Sayfanın metni
Sayfa 8
$0123 sayısını $01 ve $23 olarak ikiye ayıralım. Sonra bunları tek tek hesaplayalım $01 = 1 ve $23 = 35 olur. Daha sonra ise $01’in sonucunu 256 ile çarparak yeni sonucu $23’ün sonucuyla toplayalım. 256*1 + 35 = 256 + 35 = 291 Demek ki $0123 sayısının onlu karşılığı 291 oluyormuş. Örnek2: $FCE2 => $FC = 252 ve $E2 = 226 => 256*252 + 226 = 64738
2-Sayının basamaklarındaki karakterlerin sayı değeri soldan sağa doğru 4096, 256, 16 ve 1 ile çarpılır ve her basamağın sonucu toplanır. $ABCD = 4096*10 + 256*11 + 16*12 + 1*13 = 40960 + 2816 + 192 + 13 = 43981 $FFFF = 4096*15 + 256*15 + 16*15 + 1*15 = 61440 + 3840 + 240 + 15 = 65535 Onaltılı bir sistemde elde edebileceğimiz en büyük sayı 65535’tir ve bu sayı COMMODORE 64’ün hafızasındaki en son adresi gösterir. ONALTILIDAN İKİLİYE VE İKİLİDEN ONALTILIYA GEÇİŞ: Sayının karakterlerine aşağıdaki tablodan karşılık gelen kısımlar yan yana yazılarak ikili sistemdeki karşılığı bulunmuş olur. Aynı şekilde ikili sistemdeki bir sayı soldan 4 basamağı ayrılarak iki gruba bölünür ve karşılık gelen HEX karakter yazılırsa sayının HEX karşılığı bulunmuş olur.
HEX SAYI İKİLİ SİSTEMDEKİ KARŞILIĞI 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 A 1 0 1 0 B 1 0 1 1 C 1 1 0 0 D 1 1 0 1 E 1 1 1 0 F 1 1 1 1 Örnek: $3C = % 0011 1100 %10110011 => 1011 = B ve 0011 = 3 bulunarak %10110011 = $B3 olur. Gördüğünüz gibi sayı sistemleri ve çevirme işlemleri aslında çok basittir. Peki onlu bir sayıyı onaltılı bir sayıya nasıl çevireceğiz.
1 – Sayı 256’dan küçükse: Sayıyı 16’ya bölün, eğer sonuç tam sayı ise HEX karşılığını yazın ve sonuna bir tane 0 ekleyin. Eğer sonuç tam sayı değilse tam kısmının HEX karşılığını yazın, daha sonra tam kısmını 16 ile çarpın ve sonucu asıl sayıdan çıkartın. Çıkarma işleminin sonucunun HEX karşılığını ise daha önce yazdığınız HEX karşılığın yanına ekleyin. Örnek: 239’un HEX karşılığı 239 / 16 = 14.93 Æ 14 = E Æ 14*16 = 224 239 – 224 = 15 = F 239 = $EF 2 – Sayı 256’dan büyük ise: Sayıyı 256’ya bölün. Tam kısmına 1. Maddedeki işlemleri uygulayın. Tam kısmı 256 ile çarpın asıl sayıdan çıkartın. Sonuca 1. Maddedeki işlemleri uygulayın. Örnek: 45891’in HEX karşılığı 45891 / 256 = 179.26 tam kısmı 179 = $B3 179*256 = 45824 45891 – 45824 = 67 67 = $43 bulunur. Demek ki 45891 = $B343 oluyormuş. Assembler kursumuzun ilk konusu burada bitti. Bir sonraki sayıda komutları alfabetik sırayla görmeye başlayacağız.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 9
Yeni bir bölüme başlıyoruz. Bu bölümde COMMODORE 64’ün bellek haritasını yani hangi adreslerde ne var, ne işe yarar gibi bilgileri bu bölümde göreceğiz. Bu bölümdeki yazılanlar PROGRAMCININ EL KİTABI’ndan alınmıştır.
İSİM HEX ADRES
ONLU ADRES
AÇIKLAMA
D6510 00 0 6510 üzerindeki veri yön registeri. 1 nolu adres için giriş çıkış yön tanımlama için kullanılır. R6510 01 1 6510 üzerindeki veri registeri. Çeşitli bellek konfigürasyonları amacıyla kullanılır. 02 2 Kullanılmıyor. Makina dili programlarınızda kullanabilirsiniz. ADRAY1 03 – 04 3 - 4 SIÇRAMA VEKTÖRÜ : Ondalık sayı – Tamsayı dönüşümü. ADRAY2 05 – 06 5 - 6 SIÇRAMA VEKTÖRÜ : Tamsayı – Ondalık sayı dönüşümü. CHARAC 07 7 Karakter arama. ENDCHR 08 8 BAYRAK : Yazısal dizinin sonunu gösteren tırnağın aranması. TRMPOS 09 9 Ekran kolonunun son TAB pozisyonundan uzaklığı. VERCK 0A 10 BAYRAK : 0 = Yükleme 1 = Verify. COUNT 0B 11 Giriş tamponu göstergeci / İndis sayısı. DIMFLAG 0C 12 BAYRAK : Default dizi boyutu. VALTYP 0D 13 VERİ TİPİ : $FF = Yazısal dizi $00 = Sayısal dizi. INTFLG 0E 14 VERİ TİPİ : $80 = Tamsayı $00 = Ondalık sayı. GARBFL 0F 15 BAYRAK : DATA tarama /LIST için tırnak işareti / hafıza boşaltma. SUBFLG 10 16 BAYRAK : İndis referansı / Kullanıcı fonksiyonu çağrısı. INPFLG 11 17 BAYRAK : $00 = INPUT $40 = GET $98 = READ TANSGN 12 18 BAYRAK : TAN işareti / Karşılaştırma sonucu. 13 19 BAYRAK : INPUT uyarısı. LINNUM 14 - 15 20 - 21 Geçici adres. Tamsayı değeri. TEMPPT 16 22 GÖSTERGEÇ : Geçici yazısal dizi yığını. LASTPT 17 -18 23 - 24 Son yazısal dizi adresi. TEMPST 19 - 21 25 - 33 Geçici yazısal diziler için STACK (yığın). INDEX 22 - 25 34 – 37 Yardımcı göstergeç alanı. RESHO 26 – 2A 38 - 42 Çarpma işleminin ondalık sayı sonucu. TXTTAB 2B – 2C 43 - 44 GÖSTERGEÇ : BASIC metninin başlangıcı. VARTAB 2D – 2E 45 - 46 GÖSTERGEÇ : BASIC değişkenlerinin başlangıcı. ARYTAB 2F - 30 47 - 48 GÖSTERGEÇ : BASIC dizilerinin başlangıcı. STREND 31 - 32 49 - 50 GÖSTERGEÇ : BASIC dizilerinin sonu (+1) FRETOP 33 - 34 51 - 52 GÖSTERGEÇ : Dizi saklanımının sonu. FRESPC 35 - 36 53 - 54 Yardımcı dizi göstergeci. MEMSIZ 37 - 38 55 - 56 GÖSTERGEÇ : BASIC’in kullandığı en yüksek adres. CURLIN 39 – 3A 57 - 58 Bulunduğunuz BASIC satır numarası. OLDLIN 3B – 3C 59 – 60 Bir evvelki BASIC satır numarası OLDTXT 3D – 3E 61 - 62 GÖSTERGEÇ : CONT için BASIC yönergesi. DATLIN 3F – 40 63 - 64 O anki DATA satırının nosu. DATPTR 41 - 42 65 - 66 GÖSTERGEÇ : Bulunduğunuz DATA adresi. INPPTR 43 - 44 67 - 68 VEKTÖR : INPUT rutini. VARNAM 45 - 46 69 - 70 O andaki BASIC değişkeninin ismi. VARPNT 47 - 48 71 - 72 GÖSTERGEÇ : O andaki BASIC değişkeni verisi. FORPNT 49 – 4A 73 - 74 GÖSTERGEÇ : FOR / NEXT için indis değişkeni. 4B - 60 75 - 96 Geçici göstergeç / Veri alanı. FACEXP 61 97 Ondalık sayı akümülatörü 1 : ÜS FACHO 62 - 65 98 - 101 Ondalık sayı akümülatörü 1 : TABAN FACSGN 66 102 Ondalık sayı akümülatörü 1 : İŞARET SGNFLG 67 103 GÖSTERGEÇ: Serileri değerlendirme sabiti. BITS 68 104 ONDALIK AKÜMÜLATÖR 1 : Taşma hanesi.