Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Program 7
- ## Paul Totzke, Kyle Kemp
- ##
- ##This program creates a visual of a tree in Larc
- ##
- ##################################################
- # #
- # text segment #
- # #
- ##################################################
- .text
- __start:
- #
- # load variables into registers
- # takes "Number of Lines?" and puts int into $t0
- #
- li $v0 1
- la $a0 s1
- syscall
- li $v0 4
- syscall
- move $t0 $v0
- ## used as my i value in my __maketree for loop
- li $t1 0
- sw $t0 n
- add $t0 $t0 -2
- sw $t0 x
- sw $t1 i
- li $t0 -1
- sw $t0 temp
- lw $t0 x
- li $t1 0
- li $t2 13
- ## checks if number is between 1 and 16
- blt $t0 $t1 __exit
- bgt $t0 $t2 __exit
- __maketree:
- lw $t0 temp
- lw $t1 x
- add $t0 $t0 1
- sw $t0 temp
- bge $t0 $t1 endmaketree
- li $t0 1 ##RESETS the loop counter
- sw $t0 i
- ##for(int i = 1; i<(numberOfLines-numberPrinted) ; i++)
- jr eval
- body:
- la $a0 space
- li $v0 1
- syscall
- lw $t0 i
- add $t0 $t0 1
- sw $t0 i
- eval: lw $t0 i
- lw $t1 x
- lw $t2 temp
- sub $t2 $t1 $t2
- blt $t0 $t2 body
- li $t0 0
- sw $t0 i
- ##for(int i = 1; i<(2*numberPrinted+1) ; i++)
- j eval2
- body2:
- la $a0 star
- li $v0 1
- syscall
- lw $t0 i
- add $t0 $t0 1
- sw $t0 i
- eval2: lw $t0 i
- lw $t1 temp
- li $t2 2
- mul $t1 $t1 $t2
- add $t1 $t1 1
- blt $t0 $t1 body2
- la $a0 end1
- li $v0 1
- syscall
- jr __maketree
- endmaketree:
- ##prints the stem body 3 and 4 are identical this option was chosen for convience instead of a loop for it.
- ###RESETS the loop counter
- li $t0 1
- sw $t0 i
- jr eval3
- body3: la $a0 space
- li $v0 1
- ##prints " "
- syscall
- lw $t0 i
- add $t0 $t0 1
- sw $t0 i
- eval3: lw $t0 i
- lw $t1 x
- blt $t0 $t1 body3
- la $a0 star
- li $v0 1
- syscall
- la $a0 end1
- li $v0 1
- ##prints "*\n"
- syscall
- ##RESETS the loop counter
- li $t0 1
- sw $t0 i
- jr eval4
- body4: la $a0 space
- li $v0 1
- ##prints " "
- syscall
- lw $t0 i
- addi $t0 $t0 1
- sw $t0 i
- eval4: lw $t0 i
- lw $t1 x
- blt $t0 $t1 body4
- la $a0 star
- li $v0 1
- syscall
- la $a0 end1
- li $v0 1
- ##prints "*\n"
- syscall
- #
- # exit();
- #
- __exit:
- li $v0 0
- #call exit
- syscall
- ##################################################
- # #
- # data segment #
- # #
- ##################################################
- .data
- #
- # memory variables
- #
- s1: .asciiz "Number of Lines? "
- star: .asciiz "*"
- space: .asciiz " "
- .align 2
- x: .space 4
- i: .space 4
- n: .space 4
- temp: .space 4
- #newline
- end1: .asciiz "\n"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement