MIPS汇编sw将字存储到精确的存储器地址

时间:2015-12-10 22:11:52

标签: assembly mips

我正在尝试将值100分配给内存地址8004.当我尝试下面的简单说明时,似乎我总是错过了16位的标记(我想我可能正在读这个模拟器错了,我没有&#39 ; t使用它很多)。这种差异的原因是什么?我的第一个猜测是$ 0寄存器不在0位,实际上是16位,但这只是猜测。

li $24, 100

sw $24, 8004($0)

模拟器截图:

enter image description here

1 个答案:

答案 0 :(得分:4)

您的模拟器以12个字节的行显示内存,每行以标记的地址开头。

因此您的屏幕截图显示存储在1f44 + 3或十进制地址8007的0x64(十进制100)。显然您的MIPS模拟器位于big-endian mode(因为MIPS可以在任一模式下运行):32位整数的LSB最终在第4个字节。在little-endian模式下,0x00000064值的低字节将为0x1f44,接下来的3个字节将为零。

根据https://en.wikipedia.org/wiki/MIPS_instruction_set#Integer,有字节,半字和字存储指令。如果您只想影响您提供地址的单字节,则应使用sb

相关问题