Laman

Rabu, 03 April 2013

Bikin Loop nya


 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