8085 Assembly ile Bubble Sort

Batuhan Düzgün tarafından yayınlanmıştır 15. September 2010 06:10

Merhaba arkadaşlar bu yazımda sizlere 8085 Assembly ile Bubble Sort algortimasını kodlayacağız.Bunun için ilk önce Bubble Sort algoritmasından bahsetmemiz lazım.
 
Bubble Sort Algoritması ...
 
Dizideki ilk eleman alınır,ardından bu eleman sırayla dizideki diğer elemanlarla karşılaştırılır,eğer büyükse dizinin sonuna doğru ötelenerek gider.Daha sonra dizinin başına dönerek yeni eleman alınır ve aynı mantıkla eleman sağa doğru ötelenir.Dizideki bütün elemanlar bu şekilde tarandıktan sonra dizi sıranlanmış olur.
 
 
 
Bubble Sort Algoritması aşağıdaki  gibidir.
 
 
 
 
C# Dilinde Kodlar ...
 
for (int i = 0; i < dizi.Length - 1; i++)
      {
        for (int j = 1; j < dizi.Length - i; j++)
        {
          if (dizi[j] < dizi[j - 1])
          {
            int gecici = dizi[j - 1];
            dizi[j - 1] = dizi[j];
            dizi[j] = gecici;
          }
        }
      } 
 
 
 
8085 Assembly Kodları ...
 
                             LXI H,C060   ; kaynak dizimiz
                             
                             
                             MVI B,00        ;B registerına sıfır atıyoruz
                             
                             MVI C,61        ;C registerına 61 atıyoruz.
                             
DONGU : 
                             MVI A,6B    
                             
                             SUB B  ; çıkarma işlemi yaparak büyüklükmü kontrol ediyoruz
                             MOV D,A  ;akümülatör değerini D'ye yedekliyoruz.
                             MOV L,C  ;bir sonraki elemanı almak için L registerına 61 atıyoruz.
DONGU2 : 
                             MOV A,M ;bir sonraki elemanı alıyoruz.
                             MOV E,A ; akümülatörü E'ye yedekliyoruz.
                             MOV A,L ; akümülatöre L registerını atıyoruz
                             SUI 01 ;bir azaltıyoruz.
                             
                             MOV L,A ; tekrar akümülatörü L'ye atıyoruz.
                             MOV A,M ;Akümülatöre M 'nin gösterdiği değeri alıyoruz
                             SUB E ;A-E işlemi yapıyoruz.
                             JC KONTROL ;eğer elde varsa kontrole dallanacak
                             
                             
                             MOV A,M ;M'nin gösterdiği bellek gözündeki değeri akümülatöre yükle
                             STA C0E0 ;geçici bir adrese kopyalıyoruz.
                             
                             
                             MOV M,E ;E 'deki değeri M'nin gösterdiği yere kopyala
                             INR L ;L yi arttır
                             LDA C0E0 ; adresteki değeri akümülatöre alıyoruz.
                             
                             
                             MOV M,A ;akümülatördeki değeri M'nin gösterdiği yere al.
                             INR L   ;L'yi arttır.
                             MOV A,L ;akümülatöre L'deki değeri aktar.
                             CMP D ; A  ile D 'yi karşılaştır.
                             JNZ DONGU2 ; DONGU2 etiketine dallan
                             
                             
                             JZ DEVAM ;DEVAM etiketine dallan
                             
                             
KONTROL : 
                             INR L ;iki kere azalttığımız için L'yi arttırırız.
                             INR L
                             MOV A,L
                             CMP D
                             JNZ DONGU2
                             
                             
DEVAM : 
                             INR B ; B'yi arttır
                             MOV A,B ;akümülatöre B'yi kopyala.
                             CPI 09 ;akümülatör ile 09 ile kıyasla
                             
                             JNZ DONGU ;eğer sıfır bayrağı set edilmemişse DONGU etiketine dallan
                             
                             
                             HLT
 
 
 
Yukarıda sıralanmamış dizimizin durumu görülmektedir.Dizinin başlangıç adresi C060 adresinden başlar.
 
Bubble Sort algoritmasından sonra aşağıdaki gibi sıranlanmış olur.
 
 
 
Umarım zevk alarak okuyacağınız bir yazı olmuştur.Bir sonraki makalemde görüşmek dileğiyle ...
 
Batuhan Düzgün
 
Sakarya Üniversitesi
 
Bilgisayar Mühendisliği 

Currently rated 4.3 by 3 people

  • Currently 4.333333/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

8085 Assembly Dili

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  September 2018  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Yazıları geniş takvimde göster