Dies ist eine sehr einfache Schleife obwohl in der siebten Wiederholung (wenn die allgemeine Anzahl größer als 7 ist, beginnt der Syscall sich zu benehmen und nicht die "enter_num" Tag drucken, seine Werte auf dem Datensegment nach diesem Punkt auch zerdrücken. ich verstehe nicht, den Grund ..Selektive Syscall und Werte Crushings in einer einfachen Schleife
.data
.asciiz
Amount:"Enter amount of numbers "
enter_num:"Enter number "
of:" of "
space:" "
.text
la $a1 0x10010000 #Loads address to $a1
#Ask for general number amount
la $a0 Amount
li $v0 4
syscall
li $v0 5
syscall
add $t1 $t1 $v0 #store the general amount of numbers in $t1
#Define counter $t2
li $t2 1
#store first general number
sb $t1 0($a1)#store byte in address
addi $a1 $a1 1 #Promote $a2 block address by 1 step
loop:
#Ask for array numbers
la $a0 enter_num
li $v0 4
syscall
la $a0,($t2)
li $v0 1
syscall
la $a0 of
li $v0 4
syscall
la $a0,($t1)
li $v0 1
syscall
la $a0 space
li $v0 4
syscall
li $v0 5
syscall
sb $v0 0($a1)#store byte in address
addi $a1 $a1 1#Promote $a1 address by 1 step
beq $t2 $t1 finish #loop ends when we reach the general amount number
addi $t2 $t2 1#promote $t2 counter
j loop
Danke, das ist es .. Obwohl ich mit der Linie nicht vertraut bin“.space 128" , was es genau zu tun? –
Das ist nur Zuweisung von 128 aufeinander folgenden Bytes im Datensegment für Ihre Daten (Ich wählte 128 zufällig, kann alles sein, solange es groß genug ist, um den globalen Zähler + alle Zahlen unterzubringen). – xbug