From 325195280ca47dde8bc04e38767895718c876299 Mon Sep 17 00:00:00 2001 From: Marcus Medeiros <39343824+MarcusMedeiros99@users.noreply.github.com> Date: Sat, 25 Apr 2020 19:16:54 -0300 Subject: [PATCH 1/6] =?UTF-8?q?Corre=C3=A7=C3=A3o=20de=20print=5Fresult?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ao fim de print_result, faltava um jump para a main --- main.asm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/main.asm b/main.asm index 5509472..ec782db 100644 --- a/main.asm +++ b/main.asm @@ -131,7 +131,8 @@ print_result: add $a0, $v0, $zero addi $v0, $zero, 1 syscall - + + j main invalid_op: #tratamento de opções inválidas la $a0, error @@ -144,4 +145,4 @@ invalid_op: quit: #fim do programa addi $v0, $zero, 10 - syscall \ No newline at end of file + syscall From 8e644b344fae66788edcf477d18886d27ad624e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Setti?= Date: Sat, 25 Apr 2020 20:14:40 -0300 Subject: [PATCH 2/6] Adicionado raiz e tabuada --- main.asm | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 96 insertions(+), 2 deletions(-) diff --git a/main.asm b/main.asm index 5509472..a78cebe 100644 --- a/main.asm +++ b/main.asm @@ -34,6 +34,8 @@ op_0: .asciiz " 0 - quit\n" error: .asciiz "Opcao invalida\n" +newline: .asciiz "\n" + .text .globl main @@ -107,7 +109,13 @@ exec_op:#preparação para chamada das funções do menu add $a0, $t0, $zero addi $t8, $zero, 1 - beq $t8, $t9, exec_soma + beq $t8, $t9, exec_soma # se operação for 1, soma + + addi $t8, $zero, 7 + beq $t8, $t9, exec_raiz # se operação for 7, raiz + + addi $t8, $zero, 8 + beq $t8, $t9, exec_tabuada # se operação for 8, tabuada exec_soma: jal soma @@ -118,7 +126,93 @@ soma: add $v0, $a0, $a1 jr $ra + +#------------------------------------------------------------------------------------------ +# RAIZ +# v0 = raiz(a0) +# +# Retorna a raiz quadrada do inteiro positivo em $a0 +# +# Argumento: +# $a0 - Inteiro positivo para tirar a raiz quadrada. +# +# Resultado: +# $v0 - O piso da raiz quadrada calculada, como um inteiro. +# +# Registradores locais: +# $v0: Número x sendo testado para ver se é a raiz quadrada de n. +# $t0: Raiz de x. +#------------------------------------------------------------------------------------------ +exec_raiz: + jal raiz + j print_result + +raiz: + li $v0, 0 # x = 0 + +raiz_loop: + mul $t0, $v0, $v0 # t0 = x*x + bgt $t0, $a0, raiz_end # if (x*x > n) vai para raiz_end + addi $v0, $v0, 1 # x = x + 1 + j raiz_loop # vai para raiz_loop + +raiz_end: + addi $v0, $v0, -1 # x = x - 1 + jr $ra + +#------------------------------------------------------------------------------------------ +# TABUADA +# +# Printa a tabuada do inteiro $a0 +# +# Argumento: +# $a0 - Inteiro positivo. +# +# Resultado: +# Nenhum. +# +# Registradores locais: +# $t0: Número (x) para imprimir a tabuada. +# $t1: Contador (i) até 10. +# $t2: Auxiliar com o valor de 10. +# +# $a0: n = i * x. +#------------------------------------------------------------------------------------------ +exec_tabuada: + jal tabuada + j main + +tabuada: + move $t0, $a0 # salva x em t0 + li $t1, 1 # i = 1 + li $t2, 10 # maxValue = 10 + + # imprime uma nova linha + la $a0, newline + li $v0, 4 + syscall + +tabuada_loop: + + bgt $t1, $t2, tabuada_end # se contador for maior que 10, vai para end + + mul $a0, $t0, $t1 # n = i * x + addi $t1, $t1, 1 # i = i + 1 + li $v0, 1 # imprime n + syscall + + # imprime uma nova linha + la $a0, newline + li $v0, 4 + syscall + + j tabuada_loop # vai para tabuada_loop + +tabuada_end: + jr $ra + + exec_subtr: #TODO subtr: @@ -144,4 +238,4 @@ invalid_op: quit: #fim do programa addi $v0, $zero, 10 - syscall \ No newline at end of file + syscall From 137e3fdbd59994909f106f9d8563e1b8ecc870c8 Mon Sep 17 00:00:00 2001 From: MarcusMedeiros99 Date: Sun, 26 Apr 2020 21:48:08 -0300 Subject: [PATCH 3/6] =?UTF-8?q?Ap=C3=B3s=20execu=C3=A7=C3=A3o=20da=20opera?= =?UTF-8?q?=C3=A7=C3=A3o,=20agora=20=C3=A9=20necess=C3=A1rio=20dar=20enter?= =?UTF-8?q?=20para=20mostrar=20o=20menu.=20Assim,=20d=C3=A1=20para=20ver?= =?UTF-8?q?=20o=20resultado=20antes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.asm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/main.asm b/main.asm index 84c17fe..06525e4 100644 --- a/main.asm +++ b/main.asm @@ -19,6 +19,8 @@ .data .align 0 +continue: .asciiz "\nPressione para continuar\n" + title: .asciiz "\nEscolha a opção\n" op_1: .asciiz " 1 - soma\n" op_2: .asciiz " 2 - subtrai\n" @@ -83,6 +85,8 @@ ler_op: add $t9, $v0, $zero #armazenar op + beq $t9, $zero, quit + bltz $t9, invalid_op #op negativa addi $t8, $zero, 10 @@ -102,6 +106,7 @@ ler_arg:#leitura do primeiro argumento ler_arg2: #leitura do segundo argumento, se necessário addi $v0, $zero, 5 syscall + exec_op:#preparação para chamada das funções do menu #argumentos dos procedimentos @@ -127,6 +132,7 @@ soma: jr $ra + #------------------------------------------------------------------------------------------ # RAIZ # v0 = raiz(a0) @@ -180,7 +186,7 @@ raiz_end: #------------------------------------------------------------------------------------------ exec_tabuada: jal tabuada - j main + j print_continue tabuada: move $t0, $a0 # salva x em t0 @@ -225,6 +231,14 @@ print_result: add $a0, $v0, $zero addi $v0, $zero, 1 syscall + +print_continue: + la $a0, continue + addi $v0, $zero, 4 + syscall + + addi $v0, $zero, 12 + syscall j main invalid_op: From 319e53af42b9a2ce0e42e46f8c389eb802f89e0a Mon Sep 17 00:00:00 2001 From: MarcusMedeiros99 Date: Sun, 26 Apr 2020 21:59:07 -0300 Subject: [PATCH 4/6] =?UTF-8?q?implementa=C3=A7=C3=A3o=20da=20fun=C3=A7?= =?UTF-8?q?=C3=A3o=20fatorial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.asm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/main.asm b/main.asm index 06525e4..23b4654 100644 --- a/main.asm +++ b/main.asm @@ -119,6 +119,9 @@ exec_op:#preparação para chamada das funções do menu addi $t8, $zero, 7 beq $t8, $t9, exec_raiz # se operação for 7, raiz + addi $t8, $zero, 9 + beq $t8, $t9, exec_fatorial + addi $t8, $zero, 8 beq $t8, $t9, exec_tabuada # se operação for 8, tabuada @@ -131,8 +134,26 @@ soma: add $v0, $a0, $a1 jr $ra +exec_fatorial: + jal fatorial + j print_result +fatorial: + add $t0, $zero, $a0 + + addi $v0, $zero, 1 +fat_loop: + beq $t0, $zero, end_fat + + mult $v0, $t0 + mflo $v0 + + addi $t0, $t0, -1 + + j fat_loop +end_fat: + jr $ra #------------------------------------------------------------------------------------------ # RAIZ # v0 = raiz(a0) From 12d4aea593518f65e7bcc1c2cea53266bb8b2eb2 Mon Sep 17 00:00:00 2001 From: MarcusMedeiros99 Date: Sun, 26 Apr 2020 22:23:04 -0300 Subject: [PATCH 5/6] leitura de ponto flutuante --- main.asm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/main.asm b/main.asm index 23b4654..8da029f 100644 --- a/main.asm +++ b/main.asm @@ -104,9 +104,14 @@ ler_arg:#leitura do primeiro argumento blt $t8, $t9, exec_op ler_arg2: #leitura do segundo argumento, se necessário + beq $t9, $t8, ler_float #no calculo do imc, lemos a altura em ponto flutuante + addi $v0, $zero, 5 syscall +ler_float: + addi $v0, $zero, 6 + syscall exec_op:#preparação para chamada das funções do menu #argumentos dos procedimentos @@ -154,6 +159,10 @@ fat_loop: j fat_loop end_fat: jr $ra + +exec_fibonacci: + + #------------------------------------------------------------------------------------------ # RAIZ # v0 = raiz(a0) From 9e0ebadb61342d7efb141285c0e80c0f9f9dbe72 Mon Sep 17 00:00:00 2001 From: MarcusMedeiros99 Date: Sun, 26 Apr 2020 23:16:06 -0300 Subject: [PATCH 6/6] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20do=20c=C3=A1lculo?= =?UTF-8?q?=20do=20imc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.asm | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/main.asm b/main.asm index 8da029f..e8c4e70 100644 --- a/main.asm +++ b/main.asm @@ -120,6 +120,9 @@ exec_op:#preparação para chamada das funções do menu addi $t8, $zero, 1 beq $t8, $t9, exec_soma # se operação for 1, soma + + addi $t8, $zero, 6 + beq $t8, $t9, exec_calc_imc addi $t8, $zero, 7 beq $t8, $t9, exec_raiz # se operação for 7, raiz @@ -160,8 +163,18 @@ fat_loop: end_fat: jr $ra -exec_fibonacci: - +exec_calc_imc: + jal calc_imc + + j print_float +calc_imc: + mtc1 $a0, $f1 + cvt.s.w $f1,$f1 + + mul.s $f0, $f0, $f0 + div.s $f0, $f1, $f0 + + jr $ra #------------------------------------------------------------------------------------------ # RAIZ @@ -256,6 +269,13 @@ subtr: #TODO - outras opções +print_float: + add.s $f12, $f30, $f0 + addi $v0, $zero, 2 + syscall + + j print_continue + print_result: #impressão do resultado de uma função add $a0, $v0, $zero