我在尝试加载单个字符的行中获得以下代码的“错误类型的操作数”错误。我正在尝试编写一个输入两个字符串并比较它们的程序(即如果一个字符串大于或小于或等于另一个字符串则打印)。我想使用一个循环来加载每个字母,直到找到GT或LT,或者,最后我会知道它们是相等的。任何帮助将不胜感激!
.data
prompt1: .asciiz "Enter string 1: "
prompt2: .asciiz "Enter string 2: "
gthan: .asciiz "s1 > s2\n"
lthan: .asciiz "s1 < s2\n"
equalto: .asciiz "The strings are equal\n"
s1size: .word 80
s2size: .word 80
s1: .space 20
s2: .space 20
.text
main:
# read in strings
li $v0, 4
la $a0, prompt1
syscall
li $v0, 8 #read in string
la $a0, s1
lw $a1, s1size
move $s0, $a0 #move to s0
syscall
li $v0, 4
la $a0, prompt2
syscall
li $v0, 8 #read in string
la $a0, s2
lw $a1, s2size
move $s1, $a0 #move to s1
syscall
li $a0, 0 #set sentinel
start_loop:
#load single character
la $t0, s1
lb $a1, $a0($t0)
la $t0, s2
lb $a2, $a0($t0)
#compare
bgt $a1, $a2, greaterthan
blt $a1, $a2, lessthan
beq $a1, $a2, equal
addi $a0, $a0, 4
end_loop:
greaterthan:
li $v0, 4
la $a0, gthan
syscall
lessthan:
li $v0, 4
la $a0, gthan
syscall
equal:
li $v0, 4
la $a0, equalto
syscall