MIPS - 2二进制数的XOR返回非二进制数

时间:2013-12-07 00:59:09

标签: assembly mips

我正在做一个简单的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。

2 个答案:

答案 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。