December 1, 1989 Tarihli Commodore Gazetesi Sayfa 46

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

Bayt Kod Etkilediği Corut |A“resleme |sayısı dec |Süre |bayraklar a ADC - dolaysız. (2 69 1052 | N,V.Z,C mutlak — |3 6D 109|4 CLO | yok: 1 18 24 |2 |O-C SBC |dolaysız (2 E9 233|2 N,V,Z,C absolut — |3 ED 237|4 SEC |yok 1 38 56 (2 |-0 BEO | relatif 2 FO 2 | Değişiklik yok BCC | relatif 2 90 2 - | Değişiklik yok RCS - | relatif 2 BO g yok BMİ — (relatif 2 30 2 klik yok BPL |relatif 2 10 2 klik yok BVC | relatif 2 60 2 |Değişiklik yok BvS |relatif 2 70 2 | Değişiklik yok * 1 dallandırmak 42 sınırın artması halinda A2: Son öğrendiğimiz 11 komut. Öncelikle Basic çağrı programıyla biraz ilgileneceğiz. Yalnız hemen şunu belirtelim: POKE, PEEK ve SYS ko- mutlarında kullanacağımız değerler yukarıda belirtilen adreslerin desimal karşılıklarıdır. 10 REM **** ARİTMETİK BİR DİZİNİN TOPLA- Mı Hbid 20 POKE 5120,0 : POKE 5121,0 : REM SONUÇ AD- RESLERİNİN SIFIRLANMASI 30 PRINT CHRS$(147) CHRS(l'.') CHRS(I?) 40 INPUT “ELEMAN SAYISI SO JF N<1 OR N>255 THEN PRINT CHRS$(17)*1< #N< -255": GOTO 40 60 POKE 4864,N :REM N'NİN KAYDEDİLMESİ 70 POKE 4880,1:POKE 4881,0: POKE 4896,1: PO- KE 4897,0: REM A VE D'NİN KAYDEDİLMESİ 80 SYS 4608: REM MAKİNE DİLİ PROGRAMININ ÇAĞRILMASI 90 M-PEEK(5121):L - PEEK(5120): REM SONU- CUN OKUNMASI 100 E - 256*M 4- L:PRİNT CHRS$(17) CHRS(17) 110 PRİNT * ILK “N"” TAMSAYININ TOPLAMI: *©PRİNTE 120 END Şimdi artık makine dili programımıza geçebiliriz. Bu- nun için lütfen Resim 1'deki akış diyagramına bakın. Programımızın hazırlık safhasında eleman sayısını X registerine yükleyeceğiz ve toplama işlemi gerçekleşece- ği için Carry Bit'ini temizleyeceğiz. Monitör programı- nızı yükleyip A1200 yazdığınızda başlangıç adresimiz olan $1200 ekranda gözükecektir. Artık programı yazmaya başlayabiliriz (Her satırdan sonra RETURN'e basmayı unutmayın). — » 1200 LDX $1300 1203 CLC Şimdi gelecek olan altı satırda ise bir sonraki eleman o ana kadar olan toplama eklenecektir. Başlangıçta $1400/1401 boştur ve $1310/1311'de ise başlangıç ole- manı olan A— | yer almaktadır. Aşağıdaki döngü işle- meye başladığında ise $1400/1401'de o ana kadar olan toplam ve $1310/1311'de ise son eleman bulunacaktır. 46 1204 LDA $1400 1207 ADC $1310 I20A STA $1400 Bu satırlarda alçak baytlar toplanıp $1400'e kaydedil- miştir. 120D LDA $1401 1210 ADC $1311 1213 STA $1401 Böylelikle yüksek baytlarda toplanmış oldu. Bundan sonra dizinin o anki son elemanını bir önceki elemanı D ile toplayarak elde etmeliyiz. Bu işlemin Basic'deki kar- şılığı A- A4- D'dir. Yine bir 16-Bit toplama yapacağı- mız için CLC komutunu kullanmalıyız. 1216 CLC 1217 LDA $1310 I21A ADC $1320 121D STA $1310 Bunlar alçak baytlar idi. Şimdi de yüksek baytlar: 1220 LDA $1311 1223 ADC $1321 1226 STA $1311 X- Registerini 1 eksilttikten sonra 0 olup olmadığını kontrol ederek N tane elemanın toplanıp toplanmadığı- nı anlayabiliriz. 1229 DEX 122A BNE $1203 Eğer tüm elemanlar toplanmamış ise döngünün başı- na dönülecektir. Döngü N defa tekrarlandıktan sonra Ba- sic'e dönüş şu şekilde sağlanır: 122C RTS Yazdığımız bu makine dili programını diskete şu şe- kilde kaydedebilirsiniz: S “Program Adı”',1200,122D,08 Genelde tüm monitör programları bu kalıbı kullanır, fakat bazıları virgül işaretine gerek duymaz. Bu nedenle farklı bir monitör programı kullanıyorsanız biraz dene- me yapmanız gerekecektir. Kaset kullanıcıları ise Yuka- rıdaki “*08”' yerine “*01” yazmalıdırlar. Yalnız birçok mo- nitör programı disket ile çalışmak üzere hazırlanmıştır . | | K |

Bu sayıdan diğer sayfalar: