我正在做一个简单的2个二进制数的XOR语句,只是为了测试XOR函数,但它给了我一个奇怪的结果。
程序:
li $t0, 10101
li $t1, 11101
li $t2, 0
move $a0, $t2
li $v0,1
syscall
la $a0, endl
li $v0,4
syscall
xor $t2, $t0, $t1
move $a0, $t2
li $v0,1
syscall
li $v0,10 # Exit
syscall # Bye!
结果如下:
0
3112
上次我检查了X101的10101和11101 = 01000,而不是一些基数为10的3112。
答案 0 :(得分:1)
汇编程序是否支持二进制常量的输入取决于您正在使用的汇编程序。例如,SPIM的汇编程序不支持二进制数的0b
前缀。
如果汇编程序不支持二进制常量,则必须在汇编程序 理解的基础中编写数字,即:
li $t0, 0x15
li $t1, 0x1D
或
li $t0, 21
li $t1, 29
要获得以二进制打印的输出,您必须自己生成一个字符串,其中包含该值的base-2文本表示,然后您可以使用系统调用4打印(如果您使用的是SPIM)。如果您正在使用MARS,则可以使用系统调用35直接以二进制打印值。
答案 1 :(得分:0)
问题是您加载十进制值:
li $t0, 10101 li $t1, 11101
xor(10101d,11101d)= 3112d。