Professional Documents
Culture Documents
data
usadas: .space 50
linha: .asciiz "-"
win: .ascii "\|/ "
win2: .asciiz "WELL PLAYED"
loose2: .asciiz "YOU LOOSE --'"
nl: .asciiz "\n"
sp: .asciiz " "
array: .space 50
array2: .space 50
words: .space 1
spaces: .asciiz "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n"
texto: .asciiz "VIDAS: "
texto1: .asciiz "LETRA? "
head: .asciiz " 0"
torso: .asciiz "\n |"
left: .asciiz "./"
right: .asciiz "\."
fig: .asciiz " 0 \n./|\. \n | \n./ \."
creditos: .asciiz "Game by: CHARLIE"
.text
read:
li $s2,0
la $a0,array
la $a1,49
li $v0,8
syscall
la $t0,array
la $t1,array2
count:
lb $s0,($t0)
blt $s0,61,pregame
add $t0,$t0,1
add $s2,$s2,1 #s2 - número de letras
j count
pregame:
la $a0,spaces
li $v0,4
syscall
la $a0,spaces
li $v0,4
syscall
la $a0,spaces
li $v0,4
syscall
mistery:
beq $s6,$s2,GAME
la $t9,linha
lb $t8,($t9)
sb $t8,($t1)
add $t1,$t1,1
add $s6,$s6,1
j mistery
GAME:
la $a0,array2
li $v0,4
syscall
in:
la $a0,nl
li $v0,4
syscall
la $a0,texto1
li $v0,4
syscall
la $a0,words
li $v0,8
syscall
verify: #introduzida pertence? --> para saber se desconta ou não uma vida
bne $s8,$s0,next
hit:
li $s4,0 #introduzida pertence!
sb $s8,($t1)
add $t0,$t0,1
add $t1,$t1,1
lb $s0,($t0)
lb $s1,($t1)
add $s6,$s6,1
beq $s6,$s2,letters
j verify
next:
add $t0,$t0,1
add $t1,$t1,1
lb $s0,($t0)
lb $s1,($t1)
add $s6,$s6,1
beq $s6,$s2,letters
j verify
letters:
li $s6,0 #contador
li $t7,0 #nº de letras usadas
la $t0,array
la $t1,array2
lb $s1,($t1)
lb $s0,($t0)
used:
blt $s5,61,checkwin #conta número letras usadas! $t7
add $t7,$t7,1
add $t5,$t5,1
lb $s5,($t5)
j used
checkwin:
beq $s1,$t3,lifes
beq $s6,$s2,end1
add $t1,$t1,1
lb $s1,($t1)
add $s6,$s6,1
j checkwin
lifes:
bne $s4,0,loose #s4 = 0 --> acertou letra introduzida
lifes1: beq $t4,1,vida5
beq $t4,2,vida4
beq $t4,3,vida3
beq $t4,4,vida2
beq $t4,5,vida1
printer:
la $a0,nl
li $v0,4
syscall
la $a0,array2
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,texto
li $v0,4
syscall
move $a0,$t4
li $v0,1
syscall
loose:
beq $t4,0,end2
sub $t4,$t4,1
j lifes1
end1:
la $a0,nl
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,win
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,array2
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,creditos
li $v0,4
syscall
li $v0,10
syscall
end2:
la $a0,nl
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,loose2
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,fig
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,creditos
li $v0,4
syscall
li $v0,10
syscall
vida1:
la $a0,head
li $v0,4
syscall
j printer
vida2:
la $a0,head
li $v0,4
syscall
la $a0,torso
li $v0,4
syscall
j printer
vida3:
la $a0,head
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,left
li $v0,4
syscall
la $a0,torso
li $v0,4
syscall
j printer
vida4:
la $a0,head
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,left
li $v0,4
syscall
la $a0,sp #espaço
li $v0,4
syscall
la $a0,right
li $v0,4
syscall
la $a0,torso
li $v0,4
syscall
j printer
vida5:
la $a0,head
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,left
li $v0,4
syscall
la $a0,sp
li $v0,4
syscall
la $a0,right
li $v0,4
syscall
la $a0,torso
li $v0,4
syscall
la $a0,nl
li $v0,4
syscall
la $a0,left
li $v0,4
syscall
la $a0,sp #espaço
li $v0,4
syscall
la $a0,right
li $v0,4
syscall
j printer