Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Program 1 Paul Totzke
- ##
- ##This program creates a visual in the mips lanuage of a tree
- ##
- ##################################################
- # #
- # text segment #
- # #
- ##################################################
- .text
- __start:
- #
- # load variables into registers
- # takes "Number of Lines?" and puts int into $t0
- #
- li $v0 1
- li $v1 17
- la $a0 s1
- syscall
- li $v0 4
- syscall
- move $t0 $v0
- ## used as my i value in my __maketree for loop
- li $t1 0
- la $t1 n
- sw $s0 0($t1)
- add $t0 $t0 -2
- la $t1 x
- sw $s1 0($t1)
- la $s2 i
- sw $t1 0($s2)
- li $t0 -1
- la $t2 temp
- sw $t0 0($t2)
- la $a1 x
- lw $t0 0($a1)
- li $t1 0
- li $t2 13
- ## checks if number is between 1 and 16
- blt $t0 $t1 __exit
- bgt $t0 $t2 __exit
- __maketree:
- la $t0 temp
- lw $t0 0($t0)
- la $t1 x
- lw $t1 0($t0)
- add $t0 $t0 1
- la $t0 temp
- sw $t0 0($t0)
- bge $t0 $t1 endmaketree
- li $t0 1 ##RESETS the loop counter
- la $t0 i
- sw $t0 0($t0)
- ##for(int i = 1; i<(numberOfLines-numberPrinted) ; i++)
- b eval
- body:
- li $v0 1
- la $a0 space
- li $a1 1
- syscall
- la $t0 i
- lw $t0 0($0)
- add $t0 $t0 1
- la $t0 i
- sw $t0 0($t0)
- eval:
- la $t0 i
- lw $t0 0($t0)
- la $t1 x
- lw $t1 0($t1)
- la $t2 temp
- lw $t2 0($t2)
- sub $t2 $t1 $t2
- blt $t0 $t2 body
- li $t0 0
- la $t0 i
- sw $t0 0($t0)
- ##for(int i = 1; i<(2*numberPrinted+1) ; i++)
- b eval2
- body2:
- li $v0 4
- la $a0 star
- la $a1 1
- syscall
- la $t0 i
- lw $t0 0($t0)
- add $t0 $t0 1
- la $t1 i
- sw $t0 0($t1)
- eval2:
- la $t0 i
- lw $t0 0($t0)
- la $t1 temp
- lw $t1 0($t1)
- li $t2 2
- mul $t1 $t1 $t2
- add $t1 $t1 1
- blt $t0 $t1 body2
- li $v0 1
- la $a0 end1
- la $a1 1
- syscall
- b __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
- la $t1 i
- sw $t0 0($t1)
- b eval3
- body3:
- ##prints " "
- la $a0 space
- li $a1 1
- li $v0 1
- syscall
- la $t0 i
- lw $t0 0($t0)
- add $t0 $t0 1
- la $t0 i
- sw $t0 0($t0)
- eval3:
- la $t0 i
- lw $t0 0($t0)
- la $t1 x
- lw $t1 0($t1)
- blt $t0 $t1 body3
- la $a0 star
- li $a1 1
- li $v0 1
- syscall
- ##prints "*\n"
- la $a0 end1
- li $a1 1
- li $v0 1
- syscall
- ##RESETS the loop counter
- li $t1 1
- la $t0 i
- sw $t0 0($t0)
- b eval4
- body4:
- ##prints " "
- la $a0 space
- la $a1 1
- li $v0 1
- syscall
- la $t0 i
- lw $t0 0($t0)
- add $t0 $t0 1
- la $t1 i
- sw $t0 0($t1)
- eval4:
- la $t0 i
- lw $t0 0($t0)
- la $t1 x
- lw $t1 0($t1)
- blt $t0 $t1 body4
- ##prints "*\n"
- la $a0 star
- la $a1 1
- li $v0 1
- syscall
- la $a0 end1
- la $a1 1
- li $v0 1
- syscall
- #
- # exit();
- #
- __exit:
- #call exit
- li $v0 0
- syscall
- ##################################################
- # #
- # data segment #
- # #
- ##################################################
- .data
- #
- # memory variables
- # (C++ analogy: int s1)
- #
- s1: .asciiz "Number of Lines? "
- star: .asciiz "*"
- space: .asciiz " "
- end1: .asciiz "\n"
- x: .space 1
- i: .space 1
- n: .space 1
- temp: .space 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement