cristiano moreira Posted April 25, 2018 at 04:18 AM Report #610345 Posted April 25, 2018 at 04:18 AM (edited) gostaria se alguem pode me dar uma ajuda de como criar o jogo da velha em assembly no mips .data cabecalho: .asciiz "Jogo da Velha " espaco: .asciiz " " bl: .asciiz "n" um: .asciiz "1" dois: .asciiz "2" tres: .asciiz "3" barra: .asciiz "|" jog1: .asciiz "JOGADOR 1:n" jog2: .asciiz "JOGADOR 2:n" posicao: .asciiz "Digite linha e coluna (xy): " erro: .asciiz "Posicao Invalida.n" victory1: .asciiz "Parabens JOGADOR 1, voce ganhou." victory2: .asciiz "Parabens JOGADOR 2, voce ganhou." empat: .asciiz "Empatou, chora." .text .globl main main: addi $t0 $zero 45 #Inicializa os registradores em ‘-’ addi $t1 $zero 45 addi $t2 $zero 45 addi $t3 $zero 45 addi $t4 $zero 45 addi $t5 $zero 45 addi $t6 $zero 45 addi $t7 $zero 45 addi $t8 $zero 45 la $a0 cabecalho #Imprime o cabeçalho li $v0 4 syscall #comeca a diversao j print1 j fim print1: #Imprime a grade do jogo. la $a0 bl #linha branco li $v0 4 syscall la $a0 espaco syscall la $a0 espaco syscall la $a0 espaco syscall la $a0 um syscall la $a0 espaco syscall la $a0 dois syscall la $a0 espaco syscall la $a0 tres syscall la $a0 bl #linha branco syscall la $a0 espaco #comeco primeira linha syscall la $a0 um syscall la $a0 barra syscall move $a0 $t0 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t1 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t2 li $v0 11 syscall la $a0 barra li $v0 4 syscall la $a0 bl #fim primeira linha li $v0 4 syscall la $a0 espaco #comeco segunda linha syscall la $a0 dois syscall la $a0 barra syscall move $a0 $t3 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t4 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t5 li $v0 11 syscall la $a0 barra li $v0 4 syscall la $a0 bl #fim segunda linha li $v0 4 syscall la $a0 espaco #comeco terceira linha syscall la $a0 tres syscall la $a0 barra syscall move $a0 $t6 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t7 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t8 li $v0 11 syscall la $a0 barra li $v0 4 syscall la $a0 bl #fim terceira linha li $v0 4 syscall j testejog2 #Chama teste para jogador 2 print2: la $a0 bl #linha branco li $v0 4 syscall la $a0 espaco syscall la $a0 espaco syscall la $a0 espaco syscall la $a0 um syscall la $a0 espaco syscall la $a0 dois syscall la $a0 espaco syscall la $a0 tres syscall la $a0 bl #linha branco syscall la $a0 espaco #comeco primeira linha syscall la $a0 um syscall la $a0 barra syscall move $a0 $t0 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t1 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t2 li $v0 11 syscall la $a0 barra li $v0 4 syscall la $a0 bl #fim primeira linha li $v0 4 syscall la $a0 espaco #comeco segunda linha syscall la $a0 dois syscall la $a0 barra syscall move $a0 $t3 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t4 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t5 li $v0 11 syscall la $a0 barra li $v0 4 syscall la $a0 bl #fim segunda linha li $v0 4 syscall la $a0 espaco #comeco terceira linha syscall la $a0 tres syscall la $a0 barra syscall move $a0 $t6 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t7 li $v0 11 syscall la $a0 barra li $v0 4 syscall move $a0 $t8 li $v0 11 syscall la $a0 barra li $v0 4 syscall la $a0 bl #fim terceira linha li $v0 4 syscall j testejog1 #Chama teste para jogador 1 jogador1: la $a0 jog1 #Imprime chamada para jogador 1 li $v0 4 syscall la $a0 posicao #Le a posição syscall li $v0 5 syscall move $16 $v0 beq $16 11 umum beq $16 12 umdois #switch para por X na posicao digitada beq $16 13 umtres beq $16 21 doisum beq $16 22 doisdois beq $16 23 doistres beq $16 31 tresum beq $16 32 tresdois beq $16 33 trestres la $a0 erro #Teste para posição invalida li $v0 4 syscall j jogador1 umum: bgt $t0 45 jogador1 #se ja estiver valor nesta posicao chama de novo addi $t0 $zero 88 #senao poe valor na posicao j print2 #…os demais casos são testados da mesma maneira… umdois: bgt $t1 45 jogador1 addi $t1 $zero 88 j print2 umtres: bgt $t2 45 jogador1 addi $t2 $zero 88 j print2 doisum: bgt $t3 45 jogador1 addi $t3 $zero 88 j print2 doisdois: bgt $t4 45 jogador1 addi $t4 $zero 88 j print2 doistres: bgt $t5 45 jogador1 addi $t5 $zero 88 j print2 tresum: bgt $t6 45 jogador1 addi $t6 $zero 88 j print2 tresdois: bgt $t7 45 jogador1 addi $t7 $zero 88 j print2 trestres: bgt $t8 45 jogador1 addi $t8 $zero 88 j print2 jogador2: la $a0 jog2 #Chamada para jogador 2 li $v0 4 syscall la $a0 posicao #Lê a posição syscall li $v0 5 syscall move $16 $v0 beq $16 11 umum2 beq $16 12 umdois2 beq $16 13 umtres2 beq $16 21 doisum2 #switch para por O na posicao digitada beq $16 22 doisdois2 beq $16 23 doistres2 beq $16 31 tresum2 beq $16 32 tresdois2 beq $16 33 trestres2 la $a0 erro #Teste de posição inválida li $v0 4 syscall j jogador2 umum2: bgt $t0 45 jogador2 #se ja estiver valor nesta posicao chama de novo addi $t0 $zero 79 #senao poe valor na posicao j print1 #…os demais casos de teste são iguais… umdois2: bgt $t1 45 jogador2 addi $t1 $zero 79 j print1 umtres2: bgt $t2 45 jogador2 addi $t2 $zero 79 j print1 doisum2: bgt $t3 45 jogador2 addi $t3 $zero 79 j print1 doisdois2: bgt $t4 45 jogador2 addi $t4 $zero 79 j print1 doistres2: bgt $t5 45 jogador2 addi $t5 $zero 79 j print1 tresum2: bgt $t6 45 jogador2 addi $t6 $zero 79 j print1 tresdois2: bgt $t7 45 jogador2 addi $t7 $zero 79 j print1 trestres2: bgt $t8 45 jogador2 addi $t8 $zero 79 j print1 fim: jr $ra testejog2: #Testa se jogador 2 ganhou add $a0 $t0 $t1 #Testa se o jogo termina empatado add $a0 $a0 $t2 add $a0 $a0 $t3 add $a0 $a0 $t4 add $a0 $a0 $t5 add $a0 $a0 $t6 add $a0 $a0 $t7 add $a0 $a0 $t8 beq $a0 756 empate add $a0 $t0 $t1 add $a0 $a0 $t2 #linha 1 beq $a0 237 jog2ganhou add $a0 $t3 $t4 add $a0 $a0 $t5 #linha 2 beq $a0 237 jog2ganhou add $a0 $t6 $t7 add $a0 $a0 $t8 #linha 3 beq $a0 237 jog2ganhou add $a0 $t0 $t3 add $a0 $a0 $t6 #coluna 1 beq $a0 237 jog2ganhou add $a0 $t1 $t4 add $a0 $a0 $t7 #coluna 2 beq $a0 237 jog2ganhou add $a0 $t2 $t5 add $a0 $a0 $t8 #coluna 3 beq $a0 237 jog2ganhou add $a0 $t0 $t4 add $a0 $a0 $t8 #diagonal 1 beq $a0 237 jog2ganhou add $a0 $t2 $t4 add $a0 $a0 $t6 #diagonal 2 beq $a0 237 jog2ganhou j jogador1 #Chama jogador 1 jog2ganhou: #Imprime que jogador dois ganhou e sai la $a0 victory2 li $v0 4 syscall j fim testejog1: #Testa se jogador 1 ganhou add $a0 $t0 $t1 #Testa se o jogo terminou empatado add $a0 $a0 $t2 add $a0 $a0 $t3 add $a0 $a0 $t4 add $a0 $a0 $t5 add $a0 $a0 $t6 add $a0 $a0 $t7 add $a0 $a0 $t8 beq $a0 756 empate add $a0 $t0 $t1 add $a0 $a0 $t2 #linha 1 beq $a0 264 jog1ganhou add $a0 $t3 $t4 add $a0 $a0 $t5 #linha 2 beq $a0 264 jog1ganhou add $a0 $t6 $t7 add $a0 $a0 $t8 #linha 3 beq $a0 264 jog1ganhou add $a0 $t0 $t3 add $a0 $a0 $t6 #coluna 1 beq $a0 264 jog1ganhou add $a0 $t1 $t4 add $a0 $a0 $t7 #coluna 2 beq $a0 264 jog1ganhou add $a0 $t2 $t5 add $a0 $a0 $t8 #coluna 3 beq $a0 264 jog1ganhou add $a0 $t0 $t4 add $a0 $a0 $t8 #diagonal 1 beq $a0 264 jog1ganhou add $a0 $t2 $t4 add $a0 $a0 $t6 #diagonal 2 beq $a0 264 jog1ganhou j jogador2 #Chama jogador 2 jog1ganhou: #Imprime que jogador 1 ganhou e sai la $a0 victory1 li $v0 4 syscall j fim empate: #Imprime EMPATE e sai la $a0 empat li $v0 4 syscall j fim Edited April 27, 2018 at 11:58 PM by cristiano moreira
M6 Posted April 27, 2018 at 03:25 PM Report #610361 Posted April 27, 2018 at 03:25 PM Tens de colocar as tuas dúvidas e questões de forma concreta e clara. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now