Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ## Program 7
  2. ## Paul Totzke, Kyle Kemp
  3. ##
  4. ##This program creates a visual of a tree in Larc
  5. ##
  6.  
  7.  
  8. ##################################################
  9. #                                                #
  10. #                  text segment                  #
  11. #                                                #
  12. ##################################################
  13.  
  14.         .text
  15. __start:
  16.  
  17. #
  18. # load variables into registers
  19. # takes "Number of Lines?" and puts int into $t0
  20. #
  21.  
  22.     li $v0 1
  23.     la $a0 s1
  24.     syscall
  25.     li $v0 4
  26.     syscall
  27.     move $t0 $v0
  28.     ## used as my i value in my __maketree for loop
  29.     li $t1 0
  30.     sw $t0 n
  31.     add $t0 $t0 -2
  32.     sw $t0 x
  33.    
  34.     sw $t1 i
  35.     li $t0 -1
  36.     sw $t0 temp
  37.     lw $t0 x
  38.     li $t1 0
  39.     li $t2 13
  40.     ## checks if number is between 1 and 16
  41.     blt $t0 $t1 __exit
  42.     bgt $t0 $t2 __exit
  43.  
  44.  
  45. __maketree:
  46.    
  47.     lw $t0 temp
  48.     lw $t1 x
  49.     add $t0 $t0 1
  50.     sw $t0 temp
  51.     bge $t0 $t1 endmaketree
  52.     li $t0 1    ##RESETS the loop counter
  53.     sw $t0 i
  54.     ##for(int i = 1; i<(numberOfLines-numberPrinted) ; i++)
  55.     jr eval
  56.    
  57. body:  
  58.     la $a0 space
  59.     li $v0 1   
  60.     syscall
  61.     lw $t0 i
  62.     add $t0 $t0 1
  63.     sw $t0 i
  64.        
  65. eval:   lw $t0 i
  66.     lw $t1 x
  67.     lw $t2 temp
  68.     sub $t2 $t1 $t2
  69.     blt $t0 $t2 body
  70.     li $t0 0
  71.     sw $t0 i
  72.     ##for(int i = 1; i<(2*numberPrinted+1) ; i++)
  73.     j eval2
  74.    
  75. body2: 
  76.     la $a0 star
  77.     li $v0 1
  78.     syscall
  79.     lw $t0 i
  80.     add $t0 $t0 1
  81.     sw $t0 i
  82.        
  83. eval2:  lw $t0 i
  84.     lw $t1 temp
  85.     li $t2 2
  86.     mul $t1 $t1 $t2
  87.     add $t1 $t1 1
  88.     blt $t0 $t1 body2
  89.     la $a0 end1
  90.     li $v0 1
  91.     syscall
  92.     jr __maketree
  93.  
  94. endmaketree:       
  95.     ##prints the stem body 3 and 4 are identical this option was chosen for convience instead of a loop for it.
  96.     ###RESETS the loop counter
  97.     li $t0 1   
  98.     sw $t0 i
  99.  
  100.     jr eval3
  101.    
  102. body3:  la $a0 space
  103.     li $v0 1
  104.     ##prints " "
  105.     syscall
  106.     lw $t0 i
  107.     add $t0 $t0 1
  108.     sw $t0 i
  109.        
  110. eval3:  lw $t0 i
  111.     lw $t1 x
  112.     blt $t0 $t1 body3
  113.     la $a0 star
  114.     li $v0 1
  115.     syscall
  116.     la $a0 end1
  117.     li $v0 1
  118.    
  119.     ##prints "*\n"
  120.     syscall
  121.    
  122.     ##RESETS the loop counter
  123.     li $t0 1   
  124.     sw $t0 i
  125.  
  126.     jr eval4
  127.    
  128. body4:  la $a0 space
  129.     li $v0 1
  130.     ##prints " "
  131.     syscall
  132.     lw $t0 i
  133.     addi $t0 $t0 1
  134.     sw $t0 i
  135.    
  136. eval4:  lw $t0 i
  137.     lw $t1 x
  138.     blt $t0 $t1 body4
  139.     la $a0 star
  140.     li $v0 1   
  141.     syscall
  142.     la $a0 end1
  143.     li $v0 1
  144.     ##prints "*\n"
  145.     syscall
  146.  
  147. #
  148. # exit();
  149. #
  150. __exit:
  151.  
  152.     li $v0 0
  153.     #call exit
  154.     syscall                
  155.  
  156.  
  157. ##################################################
  158. #                                                #
  159. #                  data segment                  #
  160. #                                                #
  161. ##################################################
  162.    
  163.         .data
  164. #
  165. # memory variables
  166. #
  167. s1: .asciiz "Number of Lines? "
  168. star:   .asciiz "*"
  169. space:  .asciiz " "
  170.     .align 2
  171. x:  .space 4
  172. i:  .space 4
  173. n:  .space 4
  174. temp:   .space 4
  175. #newline
  176. end1:   .asciiz  "\n"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement