MIPS:菜单选择不起作用。

MIPS:菜单选择不起作用。,mips,Mips,这段代码有一个小问题,它说我试图比较系统调用将读入的字母与这些函数,我比较字符串h和$v0,因为如果它相等,那么它将进入该字母的函数 指令引用0x004000dc处未定义的符号 [0x004000dc]0x10220000 beq$1,$2,0[菜单-0x004000d8] la $a0, menu1 syscall #print menu1 la $a0, menu2 syscall

这段代码有一个小问题,它说我试图比较系统调用将读入的字母与这些函数,我比较字符串h和$v0,因为如果它相等,那么它将进入该字母的函数

指令引用0x004000dc处未定义的符号
[0x004000dc]0x10220000 beq$1,$2,0[菜单-0x004000d8]

    la $a0, menu1
syscall                             #print menu1

la $a0, menu2
syscall                             #print menu2

la $a0, menu3
syscall                             #print menu3

la $a0, menu4
syscall                             #print menu4

la $a0, menu5
syscall                             #print menu5

la $a0, menu6
syscall                             #print menu6

la $a0, menu7
syscall                             #print menu7

la $a0, menu8
syscall                             #print menu8

la $a0, menu9
syscall                             #print menu9

la $a1, mselc                       #print mselc
syscall 

li $v0, 8
syscall 

j select                            #jump to select function

select:
beq $v0, 'h', menu                  
beq $v0, 'a', speed_add
beq $v0, 'd', speed_sub
beq $v0, 'p', passenger_add
beq $v0, 'r', passenger_remove
beq $v0, 'w', wiper
beq $v0, 'i', headlight_in
beq $v0, 'd', headlight_de
beq $v0, 't', turn1
j main

beq
希望比较两个寄存器,而不是一个寄存器和一个值。您可以在中读取字符,将可能的匹配加载到第二个寄存器中,然后运行
beq
,如中所述

假设您已将一个角色捕获到$v0中,您可以进行如下比较:

li $t0, 104 #'h'
beq $t0, $v0, menu
您可以以大致相同的方式运行每个比较


我注意到的另一件事是:您的输入系统调用使用的是操作码
8
,但表示这是以字符串形式读取的。您应该使用操作码
12
读取单个字符吗?

那么它看起来像这样吗