Also ich benutze MIPS versuchen, in mehreren Strings, die von einem Benutzer eingegeben werden und dann drucken, aber ich bekomme nicht das Verhalten, das ich erwarte.Lesen und Drucken Benutzer eingegeben MIPS Array
Ich möchte 4 Bytes Benutzereingabe (4 Zeichen im Wesentlichen). In meiner Schleife verwende ich den Buchstaben "D" als Signal zum Beenden. Das Problem ist, egal was ich eingib, wenn ich versuche, die erste Eingabe später (oder sogar die zweite oder die dritte) zu drucken, alles was ich ausgedruckt bekomme, ist der Buchstabe 'D', der zum Beenden benutzt wurde (was sollte sei der letzte Wert des Arrays nein?).
.data
mem: .space 256 #256 bytes of space for input
inst .space 5
.text
la $s1, mem #s1 used to take input
la $s2, 0($s1) #Pointer to base address of memory
jal readLoop #Read input loop
lw $a0, 0($s2) #Attempt to read very first saved input
li $v0, 4
syscall
li $v0, 10 #End program
syscall
readLoop:
li $v0, 8 #read string
la $a0, inst #location of input memory
addi $a1, $zero, 5 #length of buffer
syscall
lb $t2,($a0) #used to exit loop
sw $a0, 0($s1) #store input into memory
addi $s1, $s1, 4 #increment memory by 4 bytes
li $t1, 'D'
bne $t2, $t1, readLoop #exit loop on input of a 'D'
jr $ra
Ich habe meine Eingabe überprüft, wie es kommt und auch wenn im Array nach dem Speichern. Es scheint, mein Druck ist das Problem, aber ich könnte leicht falsch liegen. Irgendwelche Ideen?
programmieren Sie in einem Texteditor oder einer IDE? – jgr208
Programmierung wird in Mars gemacht. Guter Punkt, tut mir Leid, dass ich das vergessen habe. – AKon
ja manchmal kann es die IDE sein und Sie können auch eine IDE verwenden, um die Register zu betrachten, die ich denke, um zu sehen, ob die Daten gespeichert werden oder wenn Ihre Logik durcheinander ist. – jgr208