Using MARS


  1. Check the MIPS Help Pages.

  2. Download MARS Mars.jar, a MIPS assembler and runtime simulator, at http://courses.missouristate.edu/KenVollmar/MARS/ to a folder such as c:\Mars .
  3. The result jar archive is therefore located at c:\Mars\Mars4_5.jar, for example.

  4. Download and install Java J2SE 1.5 (or later) SDK on your computer if it is not there yet.

  5. Double-click the file name such as Mars4_5.jar, an executable jar file, and the following MARS IDE window will pop up:


  6. Write a MIPS assembly program such as C:\Mars-workspace\Fib.asm by using the MARS editor or any text editor such as Notepad or Wordpad:

  7. C:\Mars-workspace\Fib.asm
    # Compute first twelve Fibonacci numbers and put in array, then print.
    
            .data
    fibs:   .word  0 : 12         # "array" of 12 words to contain fib values
    size:   .word  12             # size of "array" 
            .text
    
    main:
            la    $t0, fibs        # load address of array
            la    $t5, size        # load address of size variable
            lw    $t5, 0($t5)      # load array size
            li    $t2, 1           # 1 is first and second Fib. number
            add.d $f0, $f2, $f4
            sw    $t2, 0($t0)      # F[0] = 1
            sw    $t2, 4($t0)      # F[1] = F[0] = 1
            addi  $t1, $t5, -2     # Counter for loop, will execute (size-2) times
    
    loop:   lw    $t3, 0($t0)      # Get value from array F[n] 
            lw    $t4, 4($t0)      # Get value from array F[n+1]
            add   $t2, $t3, $t4    # $t2 = F[n] + F[n+1]
            sw    $t2, 8($t0)      # Store F[n+2] = F[n] + F[n+1] in array
            addi  $t0, $t0, 4      # increment address of Fib. number source
            addi  $t1, $t1, -1     # decrement loop counter
            bgtz  $t1, loop        # repeat if not finished yet.
            la    $a0, fibs        # first argument for print (array)
            add   $a1, $zero, $t5  # second argument for print (size)
            jal   print            # call print routine. 
            li    $v0, 10          # system call for exit
            syscall                # we are out of here.
    			    
    
    #########  Routine to print the numbers on one line. 
    
            .data
    space:  .asciiz  " "           # space to insert between numbers
    head:   .asciiz  "The Fibonacci numbers are:\n"
            .text
    
    print:
            add   $t0, $zero, $a0  # starting address of array
            add   $t1, $zero, $a1  # initialize loop counter to array size
            la    $a0, head        # load address of print heading
            li    $v0, 4           # specify Print String service
            syscall                # print heading
    
    out:    lw    $a0, 0($t0)      # load fibonacci number for syscall
            li    $v0, 1           # specify Print Integer service
            syscall                # print fibonacci number
            la    $a0, space       # load address of spacer for syscall
            li    $v0, 4           # specify Print String service
            syscall                # output string
            addi  $t0, $t0, 4      # increment address
            addi  $t1, $t1, -1     # decrement loop counter
            bgtz  $t1, out         # repeat if not finished
            jr    $ra              # return

  8. Open the program by selecting the following options from the MARS interface:
         File ⇒ Open
  9. Assuming the file Fib.asm is opened, the interface will be as follows:


  10. Assemble the program by selecting the following options from the MARS interface:
         Run ⇒ Assemble

  11. Execute the program by selecting the following options from the MARS interface:
         Run ⇒ Go