Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Air-Gear

Dúvidas em 2 exercícios de Assembly

Recommended Posts

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×