例如,我得到一个ASCII数的整数。我想确定它是否是小写的。 Ex(介于97和122之间)。
如果一个数字落在一系列数字之间,有没有办法打破?我对大会很新,所以对我来说条件不熟悉。
答案 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,因此您可以根据需要使用beq
或bne
进行分支。仔细考虑您的界限 - 您可能需要slt
而不是slte
。