Advertisement
Guest User

Untitled

a guest
Nov 5th, 2011
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         .data
  2. varA:   .word   42
  3. str1:   .asciiz "\n"
  4.  
  5.         .text
  6.         .globl main
  7. main:  
  8.         subu    $sp, $sp, 32    #
  9.         sw      $ra, 28($sp)    # save return address
  10.         sw      $fp, 24($sp)    # save previous frame pointer (ebp)
  11.         sw      $s0, 20($sp)    # preserve $s0
  12.         sw      $s1, 16($sp)    # preserve $s1
  13.        
  14.         lw      $s0, varA   # load varA value into $s0
  15.        
  16.         addi    $s1, $0, 31     # $s1 holds the constant 31
  17.         # Before Calling
  18.         add     $a0, $0, $s0    # varA is an argv
  19.         jal     MYADD       # jump & link
  20.         # Return from MYADD
  21.         add     $s1, $0, $v0    # $s1 holds returned value
  22.        
  23.         li      $v0, 1      # syscall "integer"
  24.         add     $a0, $0, $s1    # put sum in syscall
  25.         syscall
  26.        
  27.         li      $v0, 4      # syscall "print_string"
  28.         la      $a0, str1   # put str1 in syscalll
  29.         syscall
  30.  
  31.         li      $v0, 1      # syscall "integer"
  32.         add     $a0, $0, $s0    # put varA in syscall
  33.         syscall
  34.        
  35.         lw      $s1, 16($sp)    # restore s1
  36.         lw      $s0, 20($sp)    # restore s0
  37.         lw      $fp, 24($sp)    # restore old frame pointer
  38.         lw      $ra, 28($sp)    # restore return address
  39.         jr      $ra            
  40.        
  41. MYADD:     
  42.         subu    $sp, $sp, 32    #
  43.         sw      $ra, 28($sp)    # save return address
  44.         sw      $fp, 24($sp)    # save previous frame pointer (ebp)
  45.         sw      $s0, 20($sp)    # preserve $s0, varA = 42
  46.         sw      $s1, 16($sp)    # preserve $s1, sum = 31
  47.        
  48.         li      $s1, 1      # t = 1
  49.         add     $s0, $a0, $s1   # x = x + t  (use $s0 to store sum)
  50.         add     $v0, $0, $s0    # add x to result register
  51.  
  52.         lw      $s1, 16($sp)    # restore s1
  53.         lw      $s0, 20($sp)    # restore s0
  54.         lw      $fp, 24($sp)    # restore old frame pointer
  55.         lw      $ra, 28($sp)    # restore return address
  56.         j       $ra    
  57.  
  58.  
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement