Merhaba, lise ve üniversite dönemlerinde gördüğümüz programlama derslerinde sık sık karşılaştığımız sıralama algoritmalarını kimi zaman yüksek seviyeli dillerle, kimi zaman da orta seviyeli dilleri kullanarak birçoğumuz yazmışızdır. Ben bu rutinlikten biraz olsun kurtulup düşük seviyeli bir dille buble sort algoritmasını gerçekleştireyim dedim ve hazırladığım programı paylaşmak istedim.
Programımız assembly x86 diliyle girişi yapılan 10 adet rakamı küçükten büyüğe doğru sıralamaktadır. Aslında program içerisinde kullandığım prosedür ve kodların açıklamalarını detaylı bir biçimde yaptım ama ben kodlara kısa ve öz bir şekilde değinmek istiyorum.
Program içerisinde 3 adet prosedür kullanım bunlar, sayiyerles, sayisirala,ekranabas prosedürleridir. sayiyerles prosedürü girişini yaptığım rakamları tanımladığım dizi içerisine yerleştiriyor. sayisirala prosedürü ise dizi içerisine yerleştirilen değerleri buble sort algoritması ile dizi içerisinde küçükten büyüğe doğru sıralıyor. ekranabas prosedürü ise dizi içerisinde sırlanan değerleri, küçükten büyüğe doğru sıralanmış bir biçimde ekrana yazıyor. Program içerisinde tüm kodlar anlaşılır bir akışla işlemekte. Yalnız sayı girişini sağladığım ve değerleri ekrana yazdırdığım rutinler biraz kafanızı karıştırabilir . Örneğin alt satıra geçiş için tanımladığım altagec dizisini tanımlarken altagec db 0Ah,0Dh,24h şeklinde bir kodu tanımladıktan sonra programın ileriki kısımlarında ekrana çıktı verirken bir alt satıra geçmeyi sağlamak için ;
lea dx, altagec
mov ah, 9
int 21h
kodunu kullandım. Bu koddaki mov ah,9 ve int 21h dx kayıtçısının aldığı değere göre ekrana çıktı veren birer rutindir. Programda sıralanmış sayıları ekrana yazan mov ah,2 ve int 21h da ekrana yazdırma rutinidir.
Assembly kodlarını yazarken ve derlerken x86 assembly kod emülatörü olan emu8086 programını kullandım. Yalnız program ücretli. Deneme sürümünü kullanmak istiyorsanız Buraya tıklayarak sitesinden indirebilirsiniz.