Merhaba, Arkadaşlar vizeye hazırlık olarak yazdığım örnek programları yararlı olacağını düşünerek bu başlık altında yayınlayacağım. Diğer arkadaşların da katkılarını bekliyorum.
0' dan 100'e kadar olan sayıların toplamını hesaplayan program:
.CODE $200
LDX #$00 ;X E SIFIR YÜKLENDİ
STX $20 ;TOPLAM_L
STX $21 ;TOPLAM_H
TOPLA TXA ;X'İ A'YA TAŞI
CLC ;ELDYİ TEMİZLE
ADC $20 ;X İLE 20H. REGISTERIN İÇERİĞİNİ TOPLA
STA $20 ;SONUCU 20H.REGISTERE YAZ
LDA #$00 ;A ICERIGI SIFIRLANDI
ADC #$00 ;A DA ELDE BILGISI VAR
ADC $21 ;ELDE BILGISI İLE 21H İÇERİĞİNİ TOPLA
STA $21 ;SONUCU 21H REGİSTERİNE KAYDET
INX ;X'İN İÇERİĞİNİ 1 ARTTIR
CLC ;C Yİ TEMİZLE
CPX #$64 ;100 DEFA TOPLANDI MI
BCC TOPLA ;HAYIR. O HALDE TOPLAMAYA DEVAM ET
BRK
END
Yanlış anlamayın ama neden hala 6502 veya Z80 anlatırlar anlamadım... 8051,pic,arm dururken...
İlk zamanlar ben de böyle düşünüyordum. PIC ile ciddi sayılabilecek projeler çıkarmış biri olarak bu dersi almaya başlayınca bazı şeylerin mantığını bilmediğimin, aslında onları ezbere yaptığımın farkına vardım. 6502 basit yapısı ile Mikroişlemcilerin yapısını, çalışma prensibini anlamaya birebir.
Doğru diyorsunuz bende ilkönce öyle düşünüyordum. PIC bilirken 8051 öğretmeye çalışıyorlardı. Ama daha sonradan şunu anladım. Madem mikroişlemci mimarisini anlatıyorsun neden en iyisini öğretmiyorsun? Örneğin ARM 7
Okul boyunca tüm zaman 6502'ye ayrılmayıp üst seviye denetleyicilere doğru basamak basamak ilerlemeli bir yol izlense gerçekten çok iyi olurdu. Herneyse...
Bu bir önceki örneğin sadece çift sayıları toplayan versiyonu:
.CODE $200
LDX #$00 ;X E SIFIR YÜKLENDİ
STX $20 ;TOPLAM_L
STX $21 ;TOPLAM_H
TOPLA TXA ;X'İ A'YA TAŞI
CLC ;ELDYİ TEMİZLE
ADC $20 ;X İLE 20H. REGISTERIN İÇERİĞİNİ TOPLA
STA $20 ;SONUCU 20H.REGISTERE YAZ
LDA #$00 ;A ICERIGI SIFIRLANDI
ADC #$00 ;A DA ELDE BILGISI VAR
ADC $21 ;ELDE BILGISI İLE 21H İÇERİĞİNİ TOPLA
STA $21 ;SONUCU 21H REGİSTERİNE KAYDET
INX ;X'İN İÇERİĞİNİ 1 ARTTIR
INX ;X'İN İÇERİĞİNİ 1 ARTTIR
CLC ;C Yİ TEMİZLE
CPX #$64 ;100 DEFA TOPLANDI MI
BCC TOPLA ;HAYIR. O HALDE TOPLAMAYA DEVAM ET
BRK
END
Bu da sadece tek sayıları toplayanı:
.CODE $200
LDX #$00 ;X E SIFIR YÜKLENDİ
STX $20 ;TOPLAM_L
STX $21 ;TOPLAM_H
INX
TOPLA TXA ;X'İ A'YA TAŞI
CLC ;ELDYİ TEMİZLE
ADC $20 ;X İLE 20H. REGISTERIN İÇERİĞİNİ TOPLA
STA $20 ;SONUCU 20H.REGISTERE YAZ
LDA #$00 ;A ICERIGI SIFIRLANDI
ADC #$00 ;A DA ELDE BILGISI VAR
ADC $21 ;ELDE BILGISI İLE 21H İÇERİĞİNİ TOPLA
STA $21 ;SONUCU 21H REGİSTERİNE KAYDET
INX ;X'İN İÇERİĞİNİ 1 ARTTIR
INX ;X'İN İÇERİĞİNİ 1 ARTTIR
CLC ;C Yİ TEMİZLE
CPX #$64 ;100 DEFA TOPLANDI MI
BCC TOPLA ;HAYIR. O HALDE TOPLAMAYA DEVAM ET
BRK
END
Girilen üç adet sayının ortalamasını alan program:
.CODE $200
LDA #$80
STA $20 ;BİRİNCİ SAYI
LDA #$60
STA $21 ;İKİNCİ SAYI
LDA #$20
STA $22 ;ÜÇÜNCÜ SAYI
LDA #$00
STA $23 ;TOPLAM_L
STA $24 ;TOPLAM_H
STA $25 ;ORTALAMA
CLC
LDA $20
ADC $21
STA $23 ;ILK IKI SAYININ TOPLAMI
LDA #$00
ADC $24
STA $24 ;TASMA VARSA TOPLAM_H BIR ARTTIRILDI
CLC
LDA $23
ADC $22
STA $23
LDA #$00
ADC $24 ;...........................
STA $24
DEVAM LDA $23
CLC
CMP #$3
BCC NEGATIF
SBC #$3
STA $23
INC $25
JMP DEVAM
NEGATIF SBC #$3
STA $23
CLC
LDA $24
CMP #$1
BCC NEGATIF2
SBC $24
STA $24
INC $25
JMP DEVAM
NEGATIF2 BRK
END
6502 ders notları:
Düzenleme:
21 Haziren 2009
Link Yenilendi.
http://www.savefile.com/files/2134865