|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2009
Messaggi: 1
|
[ASSEMBLER MIPS] programma conta occorrenze
ho bisogno di una mano per completare questo programma:
praticamente l'obiettivo è quello di, inserita un parola e un carattere da tastiera, calcolare quante volte il carattere è contenuto nella parola. .data 0x10010000 #indirizzo di partenza area dati str0: .asciiz "Questo programma ha la funzione di trovare quante volte\n" str1: .asciiz "un determinato carattere compare in una parola\n\n" str2: .asciiz "\nInserire la parola da esaminare: " str3: .asciiz "\nInserire il carattere da trovare: " str4: .asciiz "\nIl numero di quante volte il carattere compare nella parola è: " ############## INIZIO DEL CODICE ################## .text 0x00400000 .globl __start __start: la $a0, str0 # stampa a video la stringa 0 e la 1 li $v0, 4 syscall la $a0, str1 syscall addi $sp , $sp , -32 # Alloco nello stack lo spazio per salvare i dati in input la $a0, str2 # stampa a video la stringa 2 li $v0, 4 syscall la $a0, 16($sp) # indirizzo stringa nome li $a1, 16 # lunghezza massima della parola 16 byte li $v0, 8 syscall la $a0, str3 # stampa a video la stringa 3 li $v0, 4 syscall la $a0, 0($sp) li $a1, 16 # lunghezza massima 16 byte li $v0, 8 syscall la $t1, str2 # punta ad un carattere della stringa li $t2, 0 # t2 conta le occorrenze (contatore) lbu $t3, str3 # contiene il carattere da contare loop: lbu $t0,($t1) # leggo un carattere dalla stringa (carica in t0 il byte all'indirizzo t1) beqz $t0,end # salta a end se t0=0, quindi se è zero ho finito addu $t1,$t1,1 # incremento la posizione della stringa bne $t0,$t3,loop # se t0 è diverso da t3 salta a loop (salto se diverso dal carattere che cerco) addu $t2,$t2,1 # incrementa il contatore j loop end: la $a0, str4 li $v0, 4 syscall # stampa la stringa 4 move $a0,$t2 # trasferisce il risultato li $v0, 1 # funzione per la stampa dell’intero syscall li $v0,10 syscall # uscita programma praticamente il problema che ho riscontrato è il fatto che se anche inserisco una parola per esempio di 3 lettere il programma continua a ciclare non uscendo mai dal ciclo. e il risultato è sempre 0 qualcuno mi puo aiutareeee |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:22.



















