如果整数在整数范围之间,我该怎么办?

时间:2014-10-03 20:13:48

标签: assembly mips

例如,我得到一个ASCII数的整数。我想确定它是否是小写的。 Ex(介于97和122之间)。

如果一个数字落在一系列数字之间,有没有办法打破?我对大会很新,所以对我来说条件不熟悉。

1 个答案:

答案 0 :(得分:1)

如果有问题的数字低于下限,则设置一个寄存器,如果它高于上限,则设置另一个寄存器。取两个寄存器的逻辑AND(这可以进入你刚刚使用过的寄存器之一,因为你不再需要它们了),并对结果进行分支。

让我们使用参数寄存器$a0作为您要测试的数字,$a1作为下限,$a2作为上限;以及临时注册$t1$t2

slte $t0, $a1, $a0    # Sets $t0=1 if $a1 < $a0, otherwise $t0=0
slte $t1, $a0, $a2    # Sets $t1=1 if $a0 < $a2, otherwise $t1=0

and  $t0, $t1, $t0    # Sets $t0=1 if $a1 < $a0 < $a2, otherwise $t0=0

当且仅当变量在所需范围内时,$t0等于1,因此您可以根据需要使用beqbne进行分支。仔细考虑您的界限 - 您可能需要slt而不是slte