MIPS Programlama Örneği - Maksimum ve Minumun Değer Bulmak (Dizi)

Oluşturduğumuz bir dizide maksimum ve minumun değerleri bulup ekrana yazdıran Mips kodunu paylaşacağım.


.data
space: .asciiz " "
X: .word 65,8,97,455,15,32,11,2,-649,234,421,564,984,55,7   #15 elemanlı dizimiz
N: .word 15                                    #dizideki eleman sayısı
.text
main:  la $a0, X       #$a0=dizinin adresini X e atıyoruz
       lw $a1, N       #$a1=15  --a1 e dizi deki eleman sayısını atıyoruz
      
       li $t2, 0    #Başlangıç olarak minimum değer belirliyoruz
       li $t3, 100  #Başlangıç olarak maksimum değer belirliyoruz
      
       jal readArray  #Dizimizi okumak için çağırıyoruz
       li $v0, 15      #Dizi uzunluğuna erişince programdan çıkıyoruz  
       syscall
      
      
readArray:
    li $t0, 0                     #sayac = 0
    li $t1, 0                     #dizinin başlangıç konumu = 0
   
loop:    bge $t0, $a1, final      #if  $t0 >= $a1 Eğer t0, a1 büyük veya eşitse final e git
    lw $a0, X($t1)         #$a0 = X(i)
   
    blt $a0, $t3, new_min  #if X(i) < min
    j check_max
    new_min: move $t3, $a0        #min = X(i)
    j update_counter
   
    check_max:
    bgt $a0, $t2, new_max  #if X(i) > max
    j update_counter
   
    new_max: move $t2, $a0        #max = X(i)
   
    update_counter:
    addi $t1, $t1, 4      
    addi $t0, $t0, 1       #sayacı arttır ++
    b loop                 #goto loop
final: 
       li $v0, 1           #integer değerleri yazdırma
       move $a0, $t2       #yazdırılacak maksimum değer
       syscall                    #işlemi yürüt
       la $a0, space       #araya bir boşluk koyarak ilerlemek:  " "
       li $v0, 4           #ekrana yazdır              
       syscall
      
       li $v0, 1           #integer değerleri yazdırma
       move $a0, $t3       #yazdırılacak minimum değer
       syscall                    #işlemi yürüt
      
       la $a0, space       # araya bir boşluk koyarak ilerlemek:  " "
       li $v0, 4           # ekrana yazdır              
       syscall
       jr $ra              #işlemi geri dön

Yorumlar

Bu blogdaki popüler yayınlar

Asp.Net ile Uyarı Mesajları Vermek (msgbox)

Asp.Net Eval Kullanımı

Asp.Net ile T.C. Kimlik Doğrulama (Mernis) Web Service ile