Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Assembly - soma


RS25

Pergunta

Fiz o seguinte código para o PC SPIN

Usando o editor MIPSTER 2000

.data
#O registrador $t4 será usado para mostrar o valor da soma
soma: .asciiz " A soma é "
bye: .asciiz "\n Tchau"
.globl main
.text
main:
#O registrador $t2 será usado para calcular a expressão da soma
#O registrador $t3 será usado para calcular a expressão par
li $t2, 0             # Código para chamar o sistema e imprimir uma string
li $t3, 100             # Carrega o endereço de <prompt> em $a0
loop:
add $t2, $t2, $t3         # Armazena em $t0 a soma do conteúdi de $to e $v0
add $t3, $t3, 2          # Armazena em $t3 a soma do conteúdo de $t3 com 2
bgt $t2, 200, parar        # Escreve a soma quando soma > 200
b main 

parar:
li $v0, 4             
la $a0, soma         
syscall             
li $v0, 1             
move $a0, $t2         
syscall             
                
end: 
nop

Mas acho que está com erro na hora de mostrar a soma

alguém poderia ajudar?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Eu não entendi realmente o que você queria fazer no código, mas o erro tá no: "b main"

troque por "b loop" que funciona.

Mnemonic

Fiz como você disse

#Algoritmo 1
#O registrador $t0 será usado para mostrar o valor da soma (o mesmo que é utilizado para somar)
.data
soma: .asciiz "\n Valor calculado para soma($t0:) "
.globl main
.text
main:
#O registrador $t2 será usado para calcular a expressão da soma
#O registrador $t3 será usado para calcular a expressão par
li $t0, 0 #inicializa a soma com 0
li $t1, 100 #inicializa par com 100
loop: #inicia o Loop
add $t0, $t0, $t1 
add $t1, $t1, 2 
bgt $t0, 200, parar #se $t0 (par > 200) desvia para o rotulo (done)
b loop
parar:

#Procedimentos para escrever o resultado
li $v0, 4
la $a0, soma
syscall
li $v0, 1
move $a0, $t0
syscall
nop # Diretiva para o SO interromper a execução. Alguma “coisa” do tipo “não faça nada! ”

E o PC SPin mostrou o valor da soma como sendo 202

O algoritmo deve ficar no loop até que a soma seja maior do que 200 mas creio eu que o valor e maior do que 202 como o PC Spin mostrou

estou certo?

Link para o comentário
Compartilhar em outros sites

  • 0
t0 recebe 0 + 100

t1 recebe 100 + 2

Se t0 > 200 , parar

t0 recebe 100 + 102 (202)

t1 recebe 102 + 2 (104)

Se t0 > 200, parar (t0 é 202, então é maior que 200)

Daí ele sai do loop, com t0 valendo 202.

Então fiz certo

Obrigado pela ajuda tópico resolvido

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...