Tìm MIN MAX trong mảng (Không xài thủ tục) - MIPS
Bài này không dùng thủ tục, tìm MIN MAX trực tiếp khi vừa nhập vào, nên chỉ cần xài 1 vòng lặp
#Bai 10: Tim Min & Max cua 1 mang vua moi nhap vao
#Cac thanh ghi su dung
#$t0: so luong phan tu
#$t1: dung lam bien chay
#$s0 va $s1: luu dia chi dau cua mang
.data
st_Nhap: .asciiz "Nhap vao so luong phan tu cua mang: "
st_aM: .asciiz "A["
st_aD: .asciiz "]= "
st_Xuat: .asciiz "Mang cua nhap vao la: "
st_Min: .asciiz "Gia tri nho nhat la: "
st_Max: .asciiz "\nGia tri lon nhat la: "
a: .word 0:100
.text
main:
la $a0, st_Nhap
jal print_st
addi $v0, $0, 5
syscall
addi $t0, $v0, 0 # Luu lai gia tri vua nhap
#Nhap mang
addi $t1, $0, 0
la $s0, a
addi $s1, $s0, 0 # Dung $s0 va $s1 luu dia chi dau cua mang
Loop:
slt $t2, $t1, $t0
beq $t2, $0, EndLoop
addi $v0, $0, 5
syscall
sw $v0, 0($s0)
bne $t1, $0, Nhay
addi $t5, $v0, 0
addi $t6, $v0, 0
Nhay:
addi $t3, $v0, 0
addi $s0, $s0, 4
addi $t1, $t1, 1
SSMin:
slt $t2, $t3, $t5
beq $t2, $0, SSMax
addi $t5, $t3, 0
SSMax:
slt $t2, $t6, $t3
beq $t2, $0, Loop
addi $t6, $t3, 0
j Loop
EndLoop:
la $a0, st_Min
jal print_st
addi $a0, $t5, 0
addi $v0, $0, 1
syscall
la $a0, st_Max
jal print_st
addi $a0, $t6, 0
addi $v0, $0, 1
syscall
exit:
addi $v0, $0, 10
syscall
print_st:
addi $v0, $0, 4
syscall
jr $ra
Nhận xét
Đăng nhận xét