tiagomsmslb Posted January 14, 2017 at 12:22 PM Report Share #601995 Posted January 14, 2017 at 12:22 PM Bom dia, foi-me proposto um trabalho em assembly, o qual tem que percorrer um texto e no fim apresentar o número total de caracteres que compõem esse texto; número de letras minúsculas (sem acentos, ASCII puro); e por fim, número total de caracteres ASCII não representáveis. Agradeço desde já quem puder ajudar. Link to comment Share on other sites More sharing options...
KasterShoot Posted January 14, 2017 at 03:11 PM Report Share #601998 Posted January 14, 2017 at 03:11 PM Usas a arquitetura MIPS? Link to comment Share on other sites More sharing options...
tiagomsmslb Posted January 14, 2017 at 03:12 PM Author Report Share #601999 Posted January 14, 2017 at 03:12 PM Sim KasterShoot usando a arquitetura mips 2 minutos atrás, KasterShoot disse: Usas a arquitetura MIPS? Sim KasterShoot usando a arquitetura mips Link to comment Share on other sites More sharing options...
tiagomsmslb Posted January 14, 2017 at 03:38 PM Author Report Share #602000 Posted January 14, 2017 at 03:38 PM 26 minutos atrás, KasterShoot disse: Usas a arquitetura MIPS? E uso o spim (qtSpim) como o simulador do mips. Link to comment Share on other sites More sharing options...
KasterShoot Posted January 14, 2017 at 03:41 PM Report Share #602001 Posted January 14, 2017 at 03:41 PM (edited) Eu utilizo o MARS , em principio isso não afeta o programa. .data string1: .asciiz "Numero de caracteres: " string2: .asciiz ", numero de minusculas: " string3: .asciiz ", numero de nao representaveis: " string4: .asciiz .text la $a1, string1 #carrega o endereço onde começa a string1 la $a2, string2 #carrega o endereço onde começa a string2 la $a3, string3 #carrega o endereço onde começa a string3 la $t0, string4 #carrega o endereço onde começa a string4 li $v0, 8 #carrega em $v0 o valor imediato de 8 para a syscall addi $a0, $t0,0 #copia o endereço que está em $t0 para $a0 (obrigatorio pelo syscall) syscall li $t2, 97 #carrega em $t2 o valor decimal de 'a' li $t3, 32 #carrega em $t3 o valor decimal de ' ' li $t4, 0 #inicia registo a 0 li $t5, 0 #inicia registo a 0 li $t6, 0 #inicia registo a 0 li $s0,10 #carrega em $s0 o valor decimal de '\n' loop: lb $t1,0($t0) #carrega o valor decimal guardado no endereço $t0 beq $t1,$s0,exit #se o valor for igual a '\n' o programa salta para a label exit addi $t4,$t4,1 #caso contrario o contador de caracteres aumenta 1 bge $t1,$t2,add_min #se o valor for maior ou igual que 'a' salta para a label add_min ble $t1,$t3, add_nr #se o valor for menor ou igual a ' ' salta para a label add_nr addi $t0,$t0,1 #aumenta 1 a $t0 para que o endereço de memoria passe a apontar para os 8 bits seguintes j loop add_min: addi $t5,$t5,1 #aumenta o contador de minuscula em 1 addi $t0,$t0,1 #aumenta 1 a $t0 para que o endereço de memoria passe a apontar para os 8 bits seguintes j loop #salta para o loop em ordem a continuar o processo até acabar a string add_nr: addi $t6,$t6,1 #aumenta o contador de ñ representaveis addi $t0,$t0,1 j loop exit: move $a0,$a1 #nesta secção são carregados os endereços de memoria das strings que aparecem no .data e os li $v0,4 #valores dos contadores e imprime na tela syscall #o ultimo syscall com $v0=10 termina o programa li $v0,1 move $a0, $t4 syscall move $a0,$a2 li $v0,4 syscall move $a0,$t5 li $v0,1 syscall move $a0,$a3 li $v0,4 syscall li $v0,1 move $a0,$t6 syscall li $v0,10 syscall O programa foi feito um bocado à pressa mas funciona bem Espero ter ajudado 🙂 Edited January 14, 2017 at 03:47 PM by KasterShoot Bad formatting 1 Report Link to comment Share on other sites More sharing options...
tiagomsmslb Posted January 14, 2017 at 03:47 PM Author Report Share #602002 Posted January 14, 2017 at 03:47 PM 4 minutos atrás, KasterShoot disse: Eu utilizo o MARS , em principio isso não afeta o programa. < .data string1: .asciiz "Numero de caracteres: " string2: .asciiz ", numero de minusculas: " string3: .asciiz ", numero de nao representaveis: " string4: .asciiz .text la $a1, string1 #carrega o endereço onde começa a string1 la $a2, string2 #carrega o endereço onde começa a string2 la $a3, string3 #carrega o endereço onde começa a string3 la $t0, string4 #carrega o endereço onde começa a string4 li $v0, 8 #carrega em $v0 o valor imediato de 8 para a syscall addi $a0, $t0,0 #copia o endereço que está em $t0 para $a0 (obrigatorio pelo syscall) syscall li $t2, 97 #carrega em $t2 o valor decimal de 'a' li $t3, 32 #carrega em $t3 o valor decimal de ' ' li $t4, 0 #inicia registo a 0 li $t5, 0 #inicia registo a 0 li $t6, 0 #inicia registo a 0 li $s0,10 #carrega em $s0 o valor decimal de '\n' loop: lb $t1,0($t0) #carrega o valor decimal guardado no endereço $t0 beq $t1,$s0,exit #se o valor for igual a '\n' o programa salta para a label exit addi $t4,$t4,1 #caso contrario o contador de caracteres aumenta 1 bge $t1,$t2,add_min #se o valor for maior ou igual que 'a' salta para a label add_min ble $t1,$t3, add_nr #se o valor for menor ou igual a ' ' salta para a label add_nr addi $t0,$t0,1 #aumenta 1 a $t0 para que o endereço de memoria passe a apontar para os 8 bits seguintes j loop add_min: addi $t5,$t5,1 #aumenta o contador de minuscula em 1 addi $t0,$t0,1 #aumenta 1 a $t0 para que o endereço de memoria passe a apontar para os 8 bits seguintes j loop #salta para o loop em ordem a continuar o processo até acabar a string add_nr: addi $t6,$t6,1 #aumenta o contador de ñ representaveis addi $t0,$t0,1 j loop exit: move $a0,$a1 #nesta secção são carregados os endereços de memoria das strings que aparecem no .data e os li $v0,4 #valores dos contadores e imprime na tela syscall #o ultimo syscall com $v0=10 termina o programa li $v0,1 move $a0, $t4 syscall move $a0,$a2 li $v0,4 syscall move $a0,$t5 li $v0,1 syscall move $a0,$a3 li $v0,4 syscall li $v0,1 move $a0,$t6 syscall li $v0,10 syscall > O programa foi feito um bocado à pressa mas funciona bem Espero ter ajudado 🙂 Agradeço imenso a sua ajuda mas no qtspim não sei porque não corre o programa tem alguma ideia do que será? Link to comment Share on other sites More sharing options...
KasterShoot Posted January 14, 2017 at 04:13 PM Report Share #602003 Posted January 14, 2017 at 04:13 PM Nunca usei o qtspim Mas experimenta com o MARS, acho este emulador muito mais simples e tem a informação bem organizada Link to comment Share on other sites More sharing options...
tiagomsmslb Posted January 14, 2017 at 04:16 PM Author Report Share #602004 Posted January 14, 2017 at 04:16 PM 1 minuto atrás, KasterShoot disse: Nunca usei o qtspim Mas experimenta com o MARS, acho este emulador muito mais simples e tem a informação bem organizada Instalei agora o mars e não consigo correr já passei o codigo todo tal e qual e não me deixa correr, nem a clicar no atalho f5 nem manualmente, sabe porque? Link to comment Share on other sites More sharing options...
KasterShoot Posted January 14, 2017 at 04:23 PM Report Share #602005 Posted January 14, 2017 at 04:23 PM O programa está feito para que se introduza uma string depois de lançar o programa Se o programa tiver algum erro no MARS aparece numa caixa no fundo o erro sublinhado a amarelo Tenta fazer assim: clicas na primeira seta verde depois escreves a string que quiseres numa caixa que diz Run I/0 Link to comment Share on other sites More sharing options...
tiagomsmslb Posted January 14, 2017 at 04:28 PM Author Report Share #602006 Posted January 14, 2017 at 04:28 PM 4 minutos atrás, KasterShoot disse: O programa está feito para que se introduza uma string depois de lançar o programa Se o programa tiver algum erro no MARS aparece numa caixa no fundo o erro sublinhado a amarelo Tenta fazer assim: clicas na primeira seta verde depois escreves a string que quiseres numa caixa que diz Run I/0 Essa seta não me aparece aí está o problema, aparecem cinzentas e nao consigo clicar nelas, ou seja, executar o programa Pode ver aqui como está https://gyazo.com/2ac051a194b6e645c00f47b6af62ac70 Link to comment Share on other sites More sharing options...
KasterShoot Posted January 14, 2017 at 04:28 PM Report Share #602007 Posted January 14, 2017 at 04:28 PM Acho que esta é uma possível resposta ao problema do qtspim http://stackoverflow.com/questions/26812502/instruction-references-undefined-error-in-mips-qtspim Link to comment Share on other sites More sharing options...
KasterShoot Posted January 14, 2017 at 04:32 PM Report Share #602008 Posted January 14, 2017 at 04:32 PM (edited) Normalmente o programa para poder ser executado o programa precisa ser salvo e "assemblado", consegues "assemblar" se carregares no ícone que parece ter ferramentas. Esse ícone só fica ativo depois de o programa ser salvo no disco No teu caso como não tens o programa salvo ele não te deixa nem assemblar nem executar Também é uma cena que me acontece muitas vezes xD Edited January 14, 2017 at 04:33 PM by KasterShoot Link to comment Share on other sites More sharing options...
tiagomsmslb Posted January 14, 2017 at 04:37 PM Author Report Share #602009 Posted January 14, 2017 at 04:37 PM 3 minutos atrás, KasterShoot disse: Normalmente o programa para poder ser executado o programa precisa ser salvo e "assemblado", consegues "assemblar" se carregares no ícone que parece ter ferramentas. Esse ícone só fica ativo depois de o programa ser salvo no disco No teu caso como não tens o programa salvo ele não te deixa nem assemblar nem executar Também é uma cena que me acontece muitas vezes xD Muito obrigado mesmo, já consegui! Estou muito grato pela sua ajuda, muito obrigado! 😄 Link to comment Share on other sites More sharing options...
KasterShoot Posted January 14, 2017 at 04:39 PM Report Share #602010 Posted January 14, 2017 at 04:39 PM 1 minuto atrás, tiagomsmslb disse: Muito obrigado mesmo, já consegui! Estou muito grato pela sua ajuda, muito obrigado! 😄 De nd 🙂 Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 15, 2017 at 07:24 PM Report Share #602016 Posted January 15, 2017 at 07:24 PM On 14/01/2017 at 4:37 PM, tiagomsmslb said: Muito obrigado mesmo, já consegui! Estou muito grato pela sua ajuda, muito obrigado! 😄 eu tenho certas retcencias a este tipo de ajuda... Normalmente, quando pretendo uma solução final a um problema, contacto um indiano. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
KasterShoot Posted January 15, 2017 at 07:51 PM Report Share #602018 Posted January 15, 2017 at 07:51 PM (edited) Eu ajudei da melhor maneira que sei Se não está satisfeito tente ajudar você e deixe-se de comentários que não trazem nenhuma informação útil. Quando realmente se quer aprender não se faz copy-paste do código, entende-se o código. No entanto não posso proibir que apenas façam o mais fácil Edited January 15, 2017 at 08:23 PM by KasterShoot Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 15, 2017 at 08:42 PM Report Share #602019 Posted January 15, 2017 at 08:42 PM 49 minutes ago, KasterShoot said: Eu ajudei da melhor maneira que sei Se não está satisfeito tente ajudar você e deixe-se de comentários que não trazem nenhuma informação útil. Quando realmente se quer aprender não se faz copy-paste do código, entende-se o código. No entanto não posso proibir que apenas façam o mais fácil eu não disse que não ajudaste o melhor que sabes, eu simplesmente disse que não deverá ser a melhor maneira de o fazer. se achas que o comentário não tem informação útil, é incoerente com o resto da tua resposta onde assumes que existe problemas em respostas com soluções completas. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
KasterShoot Posted January 15, 2017 at 09:07 PM Report Share #602020 Posted January 15, 2017 at 09:07 PM 6 minutos atrás, HappyHippyHippo disse: eu não disse que não ajudaste o melhor que sabes, eu simplesmente disse que não deverá ser a melhor maneira de o fazer. se achas que o comentário não tem informação útil, é incoerente com o resto da tua resposta onde assumes que existe problemas em respostas com soluções completas. O problema é a preguiça, lá por teres as soluções de um exercício não implica diretamente que não o vais tentar fazer sozinho mas caso tenhas alguma dúvida tens a solução para te ajudar. Toma como exemplo as soluções dos livros dos exames nacionais nas respostas de construção, elas são completas, bem documentadas para os alunos entenderem o que devem ou não fazer nessas situações, na programação vai dar ao mesmo. Claro que vai haver gente que vai simplesmente copiar as soluções, isso nunca é problema das soluções mas sim da maneira que são usadas. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 16, 2017 at 06:04 AM Report Share #602023 Posted January 16, 2017 at 06:04 AM e eu disse o contrario? a única coisa que estou a indicar e que, pela expericiencia que tenho neste forum, a pessoa vai simplesmente copiar a solucao. E isso para mim e pior do que não receber a solucao e trabalhar para a ter 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
julio a Posted September 23, 2017 at 10:42 PM Report Share #607124 Posted September 23, 2017 at 10:42 PM Em Saturday, January 14, 2017 às 12:22, tiagomsmslb disse: Bom dia, foi-me proposto um trabalho em assembly, o qual tem que percorrer um texto e no fim apresentar o número total de caracteres que compõem esse texto; número de letras minúsculas (sem acentos, ASCII puro); e por fim, número total de caracteres ASCII não representáveis. Agradeço desde já quem puder ajudar. Boa noite a todos. Nao sei se esse é o sitio certo. Sera que algum colega tem o disquete que acompanha o livro -- assembly puro e simples de vasco correia veloso. Qual o conteudo desse disco ?? Julio praiaclube@msn.com Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now