我不完全确定如何编写这个程序,并迫切需要帮助:
说明:
编写执行以下操作的MIPS程序:
$a0
(例如li $a0,13
)syscall
答案 0 :(得分:0)
我知道如果看起来你没有咨询谷歌,那么这种联合可能会非常粗糙。但我认为你的第二颗子弹上有一个有效的问题 - 或者至少,这是它会引发我的问题:
在HLL中,您将使用模运算:if (n % 2 == 0) { // is even }
。但是在装配中,你必须采用不同的方式。看看最后一点 - 如果它为零,那就是偶数。
andi $t1, $t0, 0x01
beq $t1, $zero, isEven
这是我最喜欢的装配之一。乘以除以2就像从日志上掉下来一样容易。你只需要移位。在十进制中,您通过移位数字乘以基数(10),因此123 * 10 = 1230和1230/10 = 123.二进制(基数2)相同:0111 * 2 = 1110和1110/2 = 0111。所以所有你需要做的事情(int)将$t2
除以2是:
srl $t2, $t2, 1