MIPS汇编 - 如何只接受1到15之间的整数?

时间:2011-11-21 21:39:01

标签: assembly mips pc pcspim

想知道我需要做什么指令以确保使用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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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