2011-11-21 77 views
0

想知道我需要做什么指令来确保使用PCspim从用户输入的整数将确保只有数字1-15可以进入,如果不显示错误消息?MIPS汇编 - 如何只接受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 

回答

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 
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