Ir ao conteúdo
  • Cadastre-se
KinGlaO

Assembly Programa em Assembly MIPS

Recommended Posts

Alguém poderia me ajudar, estou meio perdido.

 

 

 

Faça um programa em Assembly do MIPS que determine o tamanho das Strings em um arquivo. A String deverá ser lida de um arquivo e terá no máximo 100 caracteres. Serão dispostas exatamente 10 Strings no arquivo, sendo uma por linha. A saída deve ser um arquivo contendo na primeira linha a menor String encontrada e na segunda linha a maior String encontrada. Em caso de tamanhos iguais entre duas ou mais, escreva todas na ordem em que foram lidas na mesma linha. 

Nome do arquivo de entrada é "string.in" e o de saída é "string.out".  

Formato do arquivo de entrada:

Teste 1
Teste 2
Oi
Assembly
Opa
Isso pode
Universidade
Teste 3
Teste 4
Teste 5

Formato do arquivo de saída:

Oi
Universidade

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta fazer o código, ai te dou orientações, porque eu não vou fazer o código para você, mas posso te orientar. Tem esse tutorial que me ajudou bastante a entender o ASM MIPS: http://logos.cs.uic.edu/366/notes/mips quick tutorial.htm

Você poderia pensar como se faz isso em linguagem de alto nível, ai depois tenta adaptar para o ASM. E me desculpe se fui ignorante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha maior dificuldade tá sendo comparar as strings do arquivo, tô sabendo nem por onde começar. Até agora já to conseguindo ler e escrever no arquivo.

 

 .text
    .globl main
    
main:

# Parte para ler o arquivo
    li $v0, 13 #syscall pra abrir o arquivo com as strings pre-definidas
    la $a0,fileName #nome do arquivo
    li $a1,0 #marca pra leitura
    syscall #abri o arquivo
    move $s0, $v0 #salva a descrição do arquivo


    li $v0, 14 #syscall pra ler do arquivo
    move $a0, $s0 
    la $a1, fileWords
    li $a2, 100
    syscall
    
     li $v0, 4
     la $a0, fileWords
     syscall 
     
     li $v0, 16
     move $a0, $s0
     syscall

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem o load byte para pegar um elemento do array de char, exemplo de uso:

lb $t1, ($t7)        #Pega um elemento do array e joga em ($t7)

addi $t7, $t7, 1   #Pula para o próximo do array

Nesse tutorial que eu coloquei tem demonstrando as comparações, loop no ASM MIPS.

Fiz até um programa para calcular o fatorial de números altos usando esse tutorial + pesquisa no Google. Então recomendo lê com calma e entender.

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





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

×