Teknoloji Ekibi

Elektronik Dünyası => Mikrodenetleyici ve Mikroişlemciler => Konuyu başlatan: Uykusuz - 07 Kasım 2008, 20:13:48

Başlık: 6502 Örnek programlar
Gönderen: Uykusuz - 07 Kasım 2008, 20:13:48
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
Başlık: Ynt: 6502 Örnek programlar
Gönderen: remzi - 07 Kasım 2008, 21:10:43
Yanlış anlamayın ama neden hala 6502 veya Z80 anlatırlar anlamadım... 8051,pic,arm dururken...
Başlık: Ynt: 6502 Örnek programlar
Gönderen: Uykusuz - 07 Kasım 2008, 23:37:16
İ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.
Başlık: Ynt: 6502 Örnek programlar
Gönderen: remzi - 07 Kasım 2008, 23:56:29
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
Başlık: Ynt: 6502 Örnek programlar
Gönderen: Uykusuz - 08 Kasım 2008, 00:19:44
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
Başlık: Ynt: 6502 Örnek programlar
Gönderen: Uykusuz - 08 Kasım 2008, 02:26:35
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
Başlık: Ynt: 6502 Örnek programlar
Gönderen: Uykusuz - 13 Kasım 2008, 00:06:16
6502 ders notları:

Düzenleme:
21 Haziren 2009
Link Yenilendi.

http://www.savefile.com/files/2134865