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
Yorum Gönder
Yorumunuz alınmıştır. İncelenip yayımlanacaktır.