访问字符串的第一个字符并将其与char MIPS进行比较
我想将字符串的第一个字符与字符“#”进行比较。如果它们相等,我想在mips中打印“它们相等”。为此,我编写了一段代码,如下所示。但是,即使它们相等,它也不会给我输出。有人帮我吗? 提前谢谢访问字符串的第一个字符并将其与char MIPS进行比较,mips,system-calls,string-comparison,Mips,System Calls,String Comparison,我想将字符串的第一个字符与字符“#”进行比较。如果它们相等,我想在mips中打印“它们相等”。为此,我编写了一段代码,如下所示。但是,即使它们相等,它也不会给我输出。有人帮我吗? 提前谢谢 .data input: .space 201 string2: .asciiz "they're equal.\n" finish: .byte '#' .text main: la $a0,input li $a1,201
.data
input: .space 201
string2: .asciiz "they're equal.\n"
finish: .byte '#'
.text
main:
la $a0,input
li $a1,201 #read 200 char
li $v0,8 #read string
syscall
jal evaluate
evaluate:
lw $t1, 0($a0)
lw $t2,finish
beq $t1,$t2,testi
testi:
la $a0,string2
li $v0,4
syscall
li $v0, 10
syscall
是的,您将分支放置在这样一种方式中,即无论是否执行分支,下一条指令都是相同的 考虑将其更改为以下内容:
evaluate:
lw $t1, 0($a0)
lw $t2,finish
bne $t1,$t2,testi
la $a0,string2
li $v0,4
syscall
test1:
li $v0, 10
syscall
lw
加载整个4字节字(需要对齐)lbu
是字节加载。但是对于单个字符常量,没有点加载它,只需lbu$t1,0($a0)
/li$t2,“#”
/bne$t1,$t2,target
。您可以将.eq
常量与li
一起使用。