Bisa jadi kamu menambah 1 angka daripada 4. Base register $19 membutuhkan naik empat angka karena integer tersebut menempati full word dalam hal ini naik 4 alamat memory. Instruksi
beq di sini berfungsi untuk mengakhiri loop jika perhitungan telah mencapai akhir array.## Registers:
## $8 -- count
## $9 -- pointer to the array entry
## $10 -- current array entry
## $11 -- sum of all integers
## $12 -- sum of negative integers
## $13 -- sum of positive integers
## $14 -- pos. or neg. flag
## $15 -- SIZE of the array
main: ori $8,$0,0 # count = 0
ori $11,$0,0 # sum = 0
ori $12,$0,0 # neg = 0
ori $13,$0,0 # pos = 0
lui $9,0x1000 # point at SIZE
lw $15,0($9) # get SIZE
addiu $9,$9,4 # point to first array entry
# while count < SIZE do
loop: beq $,$,done
sll $0,$0,0 # branch delay
. . . . . # middle of loop body
addiu $8,$8, # count++
addiu $9,$9, # point at next entry
j loop
sll $0,$0,0 # branch delay
done: sll $0,$0,0 # target for branch
.data
size: .word 17
array: .word 12, -1, 8, 0, 6, 85, -74, 23, 99, -30, 30, 95, 4, 7, 10, 28, 14
Di bagian paling bawah loop, count tumbuh dan base register bergerak menuju entry selanjutnya.
Quest 11: fill in the blank
Tidak ada komentar:
Posting Komentar