Comment faire pour supprimer le saut de ligne en MIPS?
Donc je suis en train de rédiger un programme MIPS qui prendra une chaîne d'entrée, puis de les imprimer tous les possibles UNIQUE permutations de cette chaîne. (MEME si le mot est en Boucle, en Boucle et en Boucle sont les mêmes).
Pour ce faire, je sais que j'ai besoin de ne PAS avoir un caractère de saut de ligne à la fin de ma chaîne en entrée, mais je ne sais pas pour vous assurer qu'il n'est pas ajouté. Voici ce que j'ai à ce jour:
.data
newLine:
.asciiz "\n"
promptUser:
.asciiz "Enter a 20 letter or less word:\n"
word:
.space 21
.text
main:
la $a0, promptUser
li $v0, 4 # Ask User for Input
syscall
la $a0, word
li $a1,21 # Max number of characters 20
li $v0,8
syscall # Prompting User
la $a0,newLine # Newline
li $v0, 4
syscall
la $a0, word # Printing Word
li $v0, 4
syscall
Le seul moment où un '\n' n'est pas inclus, c'est quand le nombre de lettres est entré exactement 20. Toutes les suggestions??
CORRECTIF:
Cela fonctionne:
li $s0,0 # Set index to 0
remove:
lb $a3,word($s0) # Load character at index
addi $s0,$s0,1 # Increment index
bnez $a3,remove # Loop until the end of string is reached
beq $a1,$s0,skip # Do not remove \n when string = maxlength
subiu $s0,$s0,2 # If above not true, Backtrack index to '\n'
sb $0, word($s0) # Add the terminating character in its place
skip:
OriginalL'auteur ErikAGriffin | 2012-11-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez analyser la chaîne lors de son retour de syscall 8 pour supprimer le caractère:
Notez également que vous n'avez pas réservé assez d'espace pour la parole. Vous devriez réserve de 21 octets avec
Il définit registre $a2 à zéro. Avez-vous mis de l'extrait de code entre les syscall qui demande le mot et la ligne qui dit
la $a0,newLine
?. Et aussi, pensez-vous avoir retardé la ramification activé ? Si c'est le cas, vous pouvez ajouter unnop
après labnez $a3, loop
Je ne peux pas poster mes propres réponses, lawl. Mais à l'aide de votre code comme un guide, j'ai été en mesure d'atteindre le résultat prévu par le code suivant.
Grand. Notez que le code que vous avez posté est essentiellement la même que la mienne, donc il doit avoir travaillé sans modification 😉
OriginalL'auteur gusbro