2010-12-04 2 views
1

J'écris un jeu dans MIPS et je prends le nom d'un joueur. Lorsque je tente d'imprimer quelque chose comme:Réduire l'entrée de chaîne de son caractère de retour MIPS

li $v0, 4 
la $a0, playerName 
syscall 

li $v0, 4 
la $a0, strEnd  #strEnd = ("'s Hand: ") 
syscall 

Je le veux afficher:

"playerName's Hand: " 

Tout ne semble pas sur la même ligne. Je reçois à la place:

"playerName 
's Hand: " 

Ma question est comment puis-je supprimer le nouveau caractère de ligne du nom que j'ai pris? Merci

+1

Wow, un jeu en MIPS, le masochisme à son meilleur – user472875

Répondre

0

Parcourez la chaîne contenant le nom du joueur, jusqu'à ce que vous atteigniez le caractère nul. Stocker cette position. Puis placez un caractère nul à pos-1. (Je pense que vous devrez le mettre au pos-2 ainsi, car un saut de ligne est parfois 2 caractères distincts.)

1
# Your code to take a player's name 

    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 it isn't present 
    subiu $s0,$s0,2  # Backtrack index to '\n' 
    sb $0, word($s0)  # Add the terminating character in its place 

Supprime le caractère newLine :)

Questions connexes