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