Assembly 如何确定用户输入是否等于指定的字符MIPS

Assembly 如何确定用户输入是否等于指定的字符MIPS,assembly,mips,Assembly,Mips,我试图从用户那里获取MIPS中字符串形式的输入 有两件事我想让它去做:获取输入,错误检查字符串是否不等于我想要的 基本上,我的想法是,我想获取输入,然后检查输入是否等于A-p中的任何字母。如果不等于这些字母,如果不等于,我想让它循环,直到用户输入一个等于这些字母的值 我试图使用的东西是Beq或分支,如果相等的话。我不知道如何使用它来比较字符串和整数,就像您传统上使用的那样 下面是我试图实现的代码,这显然是不对的。但我想给你们一个机会,看看我在做什么,这样你们就可以给我一些方向来解决这个问题 ge

我试图从用户那里获取MIPS中字符串形式的输入

有两件事我想让它去做:获取输入,错误检查字符串是否不等于我想要的

基本上,我的想法是,我想获取输入,然后检查输入是否等于A-p中的任何字母。如果不等于这些字母,如果不等于,我想让它循环,直到用户输入一个等于这些字母的值

我试图使用的东西是Beq或分支,如果相等的话。我不知道如何使用它来比较字符串和整数,就像您传统上使用的那样

下面是我试图实现的代码,这显然是不对的。但我想给你们一个机会,看看我在做什么,这样你们就可以给我一些方向来解决这个问题

getGridInput

    li $v0, 8 #This read input for string
    la $a0, getGridPrompt
    syscall

    #if input is not equal to a-p, then jal getGridInput
    beq   $a0, "a",  getCellInput
    beq   $a0, "b",  getCellInput
    beq   $a0, "c",  getCellInput
    beq   $a0, "d",  getCellInput
    beq   $a0, "e",  getCellInput
    beq   $a0, "f",  getCellInput
    beq   $a0, "g",  getCellInput
    beq   $a0, "h",  getCellInput
    beq   $a0, "i",  getCellInput
    beq   $a0, "j",  getCellInput
    beq   $a0, "k",  getCellInput
    beq   $a0, "l",  getCellInput
    beq   $a0, "m",  getCellInput
    beq   $a0, "n",  getCellInput
    beq   $a0, "o",  getCellInput
    beq   $a0, "p",  getCellInput

    jal gelGridInput

好的,您已经差不多完成了,代码函数总体上很好,除了几行代码 你应该改变 李:是的 到 洛杉矶1美元是的

As指令:lb将字节从内存加载到寄存器的低位八位。您需要一个扩展到,这样将加载这两个字节的第一个字节。 也可以使用格式
lb$t0,0$t0可能也会起作用

好吧,您已经差不多完成了,代码函数除了几行代码外,总体上还不错 你应该改变 李:是的 到 洛杉矶1美元是的

As指令:lb将字节从内存加载到寄存器的低位八位。您需要一个扩展到,这样将加载这两个字节的第一个字节。 也可以使用格式
lb$t0,0$t0可能也会起作用

包含一个关于如何接近请求确认的示例方法。应用建议的修复应该足够简单,将问题代码复制到答案中的人肯定做到了;您需要将lbu输入寄存器。我在关于链接副本的回答中提到了这一点。包含如何请求确认的示例方法。应用建议的修复应该足够简单,将问题代码复制到答案中的人肯定做到了;您需要将lbu输入寄存器。我在关于链接副本的回答中提到了这一点。这似乎是的一个损坏版本,在问题中有不同的代码。la$t1,是的,作为这个问题的答案是没有意义的。这也不是链接答案对另一个问题的建议:在这种情况下,他们建议使用lb从内存中加载“y”,而不是la。当然更好的是li$t1,'y'这似乎是的一个坏版本,问题中有不同的代码。la$t1,是的,作为这个问题的答案是没有意义的。这也不是链接答案对另一个问题的建议:在这种情况下,他们建议使用lb从内存中加载“y”,而不是la。当然,更好的是li$t1,‘y’