9 Temmuz 2017 Pazar

Girilen Tamsayıları Tek Bağlı Listeye Yerleştirip Bubble Sort ile Sıralayan Assembly Programı


Projemizde MIPS assembly komutlarını kullanarak SPIM simülatörü (http://spimsimulator.sourceforge.net/) üzerinde çalışacak bir program yazmamız istenmektedir.   

Programınız kullanıcı tarafından girilecek n adet sıfırdan büyük tamsayıyı alıp tek bağlı listeye (single linked list) yerleştirecek ve ardından bu liste üzerinde aşağıda kaba kodu verilen Bubble Sort algoritmasını çalıştıracaktır. Burada dikkat etmeniz gereken nokta kaba kodda verilen A dizisinin sizin uygulamanızda tek bağlı liste olması gerektiğidir. 

Sıralama işleminden sonra listedeki değerlerin küçükten büyüğe doğru sıralanmış hali programın konsolunda çıktı olarak verilmelidir. Aşağıda örnek bir ekran çıktısı görülmektedir. Program çalıştırıldıktan sonra konsola sırasıyla 12, 8, 65, 4, 92, 41, 6 sayıları girilmiştir. Daha fazla sayı girilmeyeceğini bildirmek için de son olarak 0 sayısı girilmiştir. 0 sayısını tanıyan program sıralama işlemini gerçekleştirerek sayıları artan sırada alt alta konsola yazmıştır.   

SPIM simülatörünün konsola girilen tamsayıyı alma, bellekte alan ayırma, konsola yazı yazma, programı sonlandırma gibi işlemler için kullandığı özel sistem çağrıları vardır. Bu çağrılar için önce $a0, $a1, $v0 gibi saklayıcıların içerikleri ayarlanıp ardından syscall fonksiyonu çağrılmaktadır. Aşağıda bu konuda yardım alabileceğiniz bir tablo bulunmaktadır. 

Tamsayı okuma işlemi:  
li $v0, 5       # syscall 5 == read_int 
syscall 





LinkedList_BubbleSort.asm









Programın çalıştırılması:


Hiç yorum yok:

Yorum Gönder