访问字符串的第一个字符并将其与char 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

我想将字符串的第一个字符与字符“#”进行比较。如果它们相等,我想在mips中打印“它们相等”。为此,我编写了一段代码,如下所示。但是,即使它们相等,它也不会给我输出。有人帮我吗? 提前谢谢

.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
一起使用。