assembly - 访问 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
解决方案
la $s0, num
为您提供 的地址num
,而不是存储在那里的值。你想要的指令是lw
.
当你掩码时,你应该使用0xFF
来获取两个最低有效的十六进制数字,而不是0x11
. 使用0x11
只会给你这些数字的最低有效位,例如0x21 & 0x11
= 0x01
。
推荐阅读
- facebook-graph-api - facebook 的活跃用户是什么意思?
- ruby-on-rails - Rails:如何从一个 .yml 文件中获取对第二个 .yml 文件的引用
- reactjs - 我可以在 react-pivottable 中为表值应用自定义格式吗?
- ruby - Phusion 乘客无法生成应用程序 - ruby on rails 4.2.8 ruby 2.5.1
- r - 当我提供分析梯度时,为什么 optim() 会给我初始值?
- python - 如何使用 PIL 从数组到列表并再次返回?
- react-native - 在 react-native-paper 中使用 TextInputMask 在 TextInput 上出错
- angular - 如何在 Angular 的一个组件中添加多个服务
- node.js - npm Err : gyp Err npm ERR! inotify@1.4.6 安装:`node-gyp 重建`
- c# - msgpack - 配置没有属性的消息包