Ir ao conteúdo
  • Cadastre-se

Dúvidas em 2 exercícios de Assembly


Air-Gear

Posts recomendados

Olá pessoal!

O primeiro exercício pede que imprima uma mensagem solicitando ao usuário que digite uma tring, instale a string na memória eimprima novamente a string digitada. Aqui está o programa:

.data

str1: .asciiz "Digita uma string: "

.text

main: la $a0,str1

li $v0,4

syscall #Imprime a str1

li $v0,4

syscall

move $t0,$v0 #Lê a string

move $a0,$t0

li $v0,1

syscall #imprime o resultado

li $v0,4

syscall

move $t3,$v0 #Usada função de leitura de número somente como parada de tela

li $v0,10 #encerra o programa

syscall

O program até rodou mas não apareceu a mensagem pedindo a string. Eu abri o console e não deu em nada.

O segundo exercício pede que imprima mensagens solicitando a entrada de dois vetores de 5 números cada, instale os dados na memória procurando com-os com words, realize a multiplicação vetorial e imprima o resultado.

Esse é o programa:

.data

str1: .asciiz "Digite o 1o. numero:"

str2: .asciiz "Digite o 2o. numero:"

str3: .asciiz "O resultado da Multiplicação é:"

.text

main:

la $a0,str1

li $v0,4

syscall #imprime a 1a. string

li $v0,5

syscall

move $t0,$v0 #Lê o 1o. número

sw $t0,0($s0)

sw $t0,4($s0)

sw $t0,8($s0)

sw $t0,12($s0)

sw $t0,16($s0)

la $a0,str2

li $v0,4

syscall #imprime a 2a. string

li $v0,5

syscall

move $t1,$v0 #Lê o 2o. número

sw $t1,0($s1)

sw $t1,4($s1)

sw $t1,8($s1)

sw $t1,12($s1)

sw $t1,16($s1)

lw $t0,0($s0) # $t0= palavra[vet1+0]

lw $t1,0($s1) # $t1= palavra[vet2+0]

mul $s4,$t0,$t1 # $s4= $t0 x $t1

lw $t0,4($s0) # $t0= palavra[vet1+4]

lw $t1,4($s1) # $t1= palavra[vet2+4]

mul $t0,$t0,$t1 # $t0= $t0 x $t1

add $s4,$s4,$t0 # $s4= $s4 + $t0

lw $t0,8($s0) # $t0= palavra[vet1+8]

lw $t1,8($s1) # $t1= palavra[vet2+8]

mul $t0,$t0,$t1 # $t0= $t0 x $t1

add $s4,$s4,$t0 # $s4= $s4 +$t0

lw $t0,12($s0) # $t0= palavra[vet1+12]

lw $t1,12($s1) # $t1= palavra[vet2+12]

mul $t0,$t0,$t1 # $t0= $t0 +$t1

add $s4,$s4,$t0 # $s4= $s4 +$t0

lw $t0,16($s0) # $t0= palavra[vet1+16]

lw $t1,16($s1) # $t1= palavra[vet2+16]

mul $t0,$t0,$t1 # $t0= $t0 +$t1

add $s4,$s4,$t0 # $s4= $s4 +$t0

la $a0,str3

li $v0,4

syscall #imprime a 3a. string

move $a0,$s4

li $v0,1

syscall #imprime o resultado

li $v0,5

syscall

move $t3,$v0 #Usada função de leitura de número somente como parada de tela

li $v0,10 #encerra o programa

syscall

Antes eu fiz com dois números e deu certo, depois eu modifiquei para imprimir com vetores com 5 números cada e programa rodou, mas~funciona até a hora de pedir os primeiors números.

Alguém pode me ajudar? Desde já agradeço a ajuda!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!