Laman

Rabu, 03 April 2013

Badan Loop

Address dari byte yang diload menggunakan instruksi lbu adalah nilai dari $9 + . Secara $9 adalah sebagai base register yang menunjukkan character pertama maka nilai yg digunakan adalah $9 + 0 untuk character pertama dan $9 + ... untuk character selanjutnya sesuai urutan. Isi dari byte yang berada pada alamat tersebut kemudian diload ke $10 menggunakan instruksi lbu . 3 byte teratas akan berisi zero. Instruksi beq berfungsi untuk mengetes apakah byte tersbut null atau tidak, jika null maka penghitungan selesai.

  

## strlen.asm
##
## Count the characters in a string
##
## Registers:
##  $8 -- count
##  $9 -- pointer to the char
## $10 -- the char (in low order byte)

        .text
        .globl  main
  
# Initialize
main:    ori      $8,$0,0       #  count = 0
         lui      $9,0x1000     #  point at first char

# while not ch==null do
loop:    lbu   $10,0($9)        # get the char
         sll   $0,$0,0          # load delay
           
         beq   $10,$0,done      # exit loop if char == null
         sll   $0,$0,0          # branch delay

         addiu    ,,   # count++

         addiu    ,,   # point at the next char

         j       loop
         sll   $0,$0,0          # branch delay slot
         
# finish
done:    sll   $0,$0,0           # target for branch

         .data
string:  .asciiz  "Time is the ghost of space."

Selanjutnya program akan mengincrement count, kemudian menggerakkan base register agar menunjuk alamat character berikutnya.

Quest 5: fill in the blank

Tidak ada komentar:

Posting Komentar