首页 > 解决方案 > 访问 MIPS 中十六进制数的最后两位

问题描述

我想在 MIPS 中打印出十六进制数字的最后两位。我有这段代码,但是当我预计输出为 0x00000021 时,输出为 0x00000000。我哪里错了?

.data
num:  .word 0x00654321
.text
la $s0, num # make s0 equal to num
andi $a0, $s0, 0x00000011 # do bitwise AND
li $v0 34 # print result in hex
syscall

标签: assemblyhexmipsbitwise-operators

解决方案


la $s0, num为您提供 的地址num,而不是存储在那里的值。你想要的指令是lw.

当你掩码时,你应该使用0xFF来获取两个最低有效的十六进制数字,而不是0x11. 使用0x11只会给你这些数字的最低有效位,例如0x21 & 0x11= 0x01


推荐阅读