【问题标题】:Comparing two bytes in MIPS比较 MIPS 中的两个字节
【发布时间】:2015-10-15 15:10:26
【问题描述】:

我正在尝试制作一个简单的 MIPS 程序。我想检查用户输入的字符是否是空格。我在.data 部分中定义了一个变量space。然后我接受用户输入,并使用jal 调用我的函数,该函数应该检查这一点。我将字节space 加载到$a0 中,然后想检查$t0$a0 是否相同。如果他们不是$t1 应该设置为1 然后我使用分支不等于分支到我的另一个函数,它打印出对用户的响应。但是,无论我输入什么字符,它总是分支。我不确定我做错了什么。

space: .byte ' '

main:
    #Getting user input 
    li $v0,8
    la $a0,str1
    li $a1, 20
    syscall 
    jal is_space

    #Indicate the end of main function
    li $v0,10
    syscall
is_space: 
    add $t0, $a0, $zero
    lb $a0, space
    sltu $t1, $a0, $t0
    bne $t1, $zero, spaceinput

【问题讨论】:

  • 我假设您的 syscall 是 SPIM 使用的那种:syscall$v0 == 8 读取一个 字符串。如果要比较该字符串的一个字节,则需要将其加载到寄存器中。

标签: assembly branch mips


【解决方案1】:

您甚至忘记访问已读取的字符。它被放置在str1 的缓冲区中。另外,如果你想检查是否相等,为什么要使用sltu?将空间存储在内存中也是一种浪费。

main:
    #Getting user input 
    li $v0,8
    la $a0,str1
    li $a1, 20
    syscall 
    lb $a0, ($a0) # fetch first character entered
    jal is_space

    #Indicate the end of main function
    li $v0,10
    syscall
is_space: 
    li $t0, ' '
    beq $a0, $t0, spaceinput

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多