Dies scheint wie es sollte funktionieren, aber eindeutig nicht. Wenn ich versuche, die Länge der Saite zu zählen, gibt sie eine verrückte lange Zahl zurück. Wenn ich das Programm Schritt für Schritt durchführe, funktioniert es einwandfrei, druckt aber die falsche Nummer aus. Kann mich jemand auf die Spur bringen, damit ich an der nächsten Funktion arbeiten kann? Ich muss nur herausfinden, was die Zählung Abwerfen wirdMips Fehler beim Drucken Länge der Zeichenfolge
############################################
# Program Name: strings.s
# Programmer: David Bierbrauer
# Date: 9/07/2017
############################################
# Functional Description:
#
#
############################################
# Cross References:
#
#
############################################
.data # Data declaration section
stringa: .asciiz "Enter the first string: "
stringb: .asciiz "\nEnter the second string: "
.text
main: # Start of code section
#li $v0, 4 #get first string input
la $a0, stringa
jal read
jal length
jal print
#get second string input
la $a0, stringb
jal read
jal length
jal print
j end
length:
li $t0, -1 #loop count 0
j lengthloop
lengthloop: #exit address $s1
lb $t1, 0($a0) #load next char into $t1
beqz $t1, endlength
addi $a0, $a0, 1 #increment string pointer
addi $t0, $t0, 1 #increment count
j lengthloop
endlength:
jr $ra
equality:
lb $t2, 0($a0)
lb $t3, 0($a1)
bne $t2,$t3 notequal
append:
print:
li $v0, 1
la
syscall
jr $ra
read:
li $v0, 4
syscall #print prompt
li $v0,9
li $a0,80
syscall
move $a0,$v0
li $v0,8
li $a1,80
syscall
jr $ra
end:
li $v0, 10
syscall