【问题标题】:MIPS Assembly - how to only accept integers between 1 and 15?MIPS 程序集 - 如何只接受 1 到 15 之间的整数?
【发布时间】:2011-11-21 21:39:01
【问题描述】:

想知道我需要执行什么指令来确保用户使用 PCspim 输入的整数将确保只能输入数字 1-15,如果不显示错误消息?

我已阅读 SLT 等说明,但我不太了解定义 - ""如果 $s 小于 $t,则 $d 设置为 1。否则它会为零。"" 我不想打印零....

有没有办法有效地做大于 1 但小于 15 的值?

我愿意

    beq $t0, 1, add_num      #if content in $t0 = 1, branch to add numbers
    beq $t0, 2, add_num
    beq $t0, 3, add_num
    beq $t0, 4, add_num
    beq $t0, 5, add_num  etc...right up to 15. but this is soo inefficient

【问题讨论】:

    标签: assembly mips pcspim


    【解决方案1】:

    您不需要为每个可能的值使用beq。您可以使用范围检查,如下所示(说明可能需要稍作修改):

    blez $t0, error_msg        ; disallow antyhing less than 1.
    
    addi $t0, $t0, -15         ; subtract 15 from t0, now
                               ;   valid values are <= 0.
    
    bgtz $t0, error_msg        ; disallow anything greater than 15.
    
    addi $t0, $t0, 15          ; re-adjust
    
    ...                        ; add the numbers here
    

    【讨论】:

      【解决方案2】:

      MIPS 处理器没有传统的条件代码。正如您所指出的,条件测试将寄存器的内容设置为 1 或 0。然后,您可以针对零寄存器使用 beq 测试结果寄存器。

      slt  $t5, $t3, $t4                set $t5 = 1 if $t3 < $t4
      beq  $t5, $zero, done             branch if $t5 = 0
      
      if here, $t3 < $t4
      

      【讨论】:

        猜你喜欢
        • 2016-06-19
        • 1970-01-01
        • 2013-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多