MIPS中错误类型的错误

时间:2018-02-28 20:26:22

标签: loops assembly mips string-comparison

我在尝试加载单个字符的行中获得以下代码的“错误类型的操作数”错误。我正在尝试编写一个输入两个字符串并比较它们的程序(即如果一个字符串大于或小于或等于另一个字符串则打印)。我想使用一个循环来加载每个字母,直到找到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

0 个答案:

没有答案