这个代码有点问题,它说qtspim它说我试图比较将与系统调用读入的字母与那些函数,我将字符串h与$ v0进行比较,因为如果它是相等的那么它将去那封信的功能
Instruction references undefined symbol at 0x004000dc
[0x004000dc] 0x10220000 beq $1, $2, 0 [menu-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
答案 0 :(得分:0)
beq
期望比较两个寄存器,而不是寄存器和值。您可以读取一个字符,将可能的匹配加载到第二个寄存器中,然后运行beq
,如this thread中所述。
假设你已经将一个角色捕获到$ v0中,你可以运行这样的比较:
li $t0, 104 #'h'
beq $t0, $v0, menu
您可以或多或少地以相同的方式运行每个比较。
我注意到另一件事:您的输入系统调用使用操作码8
,但this page表示要读取字符串。您是否应该使用操作码12
来读取单个字符?