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 T.C. Kimlik Doğrulama (Mernis) Web Service ile

Chrome HSTS Hatası Nedir ve Nasıl Çözülür?

Btk Akademi Sertifika Meb Onaylı mı Veya Geçerli mi?