MIPS İşlemci Programlama İle Dizideki En büyük ve En Küçük Elemanı Bulma - Bilişim Konuları

MIPS İşlemci Programlama İle Dizideki En büyük ve En Küçük Elemanı Bulma

Bu örneğimizde MIPS işlemciler için yapılan örnek programda bir dizi içerisindeki elemanlardan en büyük olanı ve en küçük olanı bularak ekranda gösteren programı yapacağız. Mars programını bu yazının altında bulunan linke tıklayarak indirebilirsiniz. Mars programını açtıktan sonra File-New komutlarını tıklayarak yeni bir program yazma ekranı açınız. Daha sonra aşağıdaki program kodunu programınızda açtığınız yeni sayfa üzerine yapıştırınız. Daha sonra sırasıyla Run-Assambe ve sonrasında Run-Go komutlarını tıklayarak programı çalıştırabilirsiniz.

#Bir dizi içerisindeki en büyük ve en küçük elemanı bulan MIPS programı
#www.bilisimkonulari.com
.data
list: .word  15, 25, 39, 35, 37, 27, 17, 5, 57, 215, 65, 35, 81        # 12 elemanlı dizi
size: .word  12            # dizinin eleman sayısı
      .text
     
main:  la $a0, list      #$a0=load address of array list
    lw $a1, size      	#$a1=12  --number elements
    li $t2, 0   	#en büyük  = 0 ilk değer ataması
    li $t3, 100 	#en küçük  = 100 ilk değer ataması
   
    jal readArray  	#diziyi yükle
    li $v0, 10      	#çıkış
    syscall

readArray:
    li $t0, 0      	#sayac = 0
    li $t1, 0      	#location of array = 0
       
loop:    bge $t0, $a1, printout #if  $t0 >= $a1 then go to printout
    lw $a0, list($t1) 	#$a0 = X(i)
   
    blt $a0, $t3, new_min       #if list(i) < min 
    j check_max
    new_min: move $t3, $a0      #min = list(i) dizinin elemanı min den küçükse 
    j update_counter
   
    check_max:
    bgt $a0, $t2, new_max       #if list(i) > max
    j update_counter
   
    new_max: move $t2, $a0      #max = list(i)
   
    update_counter:
    addi $t1, $t1, 4    #Every 4 bytes there is an integer in the array
    addi $t0, $t0, 1    #counter ++
    b loop      	#go to loop

#########  routine to print the numbers on one line.

.data
head1: .asciiz  "En büyük eleman: "
head2: .asciiz "  ---  En küçük eleman: "
      .text
         
printout: 

la $a0, head1  		#load a space:  " Max val:"
    li $v0, 4      	#print string             
    syscall
   
li $v0, 1       	#integer print
move $a0, $t2   	#load the max to be printed
syscall 		#execute the print

la $a0, head2 		#load  " küçük değer:"
    li $v0, 4      	#print string             
    syscall

li $v0, 1       	#integer print
move $a0, $t3   	#load the min to be printed
syscall  		#execute the print

    jr $ra     		#return
       jr $ra      	#return

Yukarıdaki program kodunu Mars4_5 programında yazıp derledikten sonra çalıştırdığımızda aşağıdaki gibi bir ekran çıktısı elde ederiz. Mars4_5 programını buradan indirerek kullanabilirsiniz.

mips-enbuyuk-enkucuk

Bu Yazıya Tepkin Nedir?
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Yorum Yap