首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MIPS程序集-如何只接受1到15之间的整数?

MIPS程序集-如何只接受1到15之间的整数?
EN

Stack Overflow用户
提问于 2011-11-22 05:39:01
回答 2查看 5.5K关注 0票数 0

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

我读过诸如SLT之类的说明,但我不太理解它的定义--“如果$s小于$t,则$d设置为1。”否则它将为零。“”我不想打印零....

有没有一种方法可以有效地处理大于1但小于15的值?

我会这么做的

代码语言:javascript
复制
    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
EN

回答 2

Stack Overflow用户

发布于 2011-11-22 05:52:51

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2011-11-22 05:50:15

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

代码语言:javascript
复制
slt  $t5, $t3, $t4                set $t5 = 1 if $t3 < $t4
beq  $t5, $zero, done             branch if $t5 = 0

if here, $t3 < $t4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8218896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档