Assembly 将字存储到精确内存地址的MIPS汇编软件

Assembly 将字存储到精确内存地址的MIPS汇编软件,assembly,mips,Assembly,Mips,我试图将值100分配给内存地址8004。当我尝试下面的简单说明时,我似乎总是缺少16位的标记(我想我可能是看错了这个模拟器,我没有太多使用它)。这种差异的原因是什么?我的第一个猜测是$0寄存器不在0位,实际上在16位,但这只是一个猜测 li $24, 100 sw $24, 8004($0) 模拟器屏幕截图: 您的模拟器以12字节的行显示内存,每行以其标记的地址开始 因此,您的屏幕截图显示存储在1f44+3或十进制地址8007的0x64(十进制100)。很明显,您的MIPS模拟器处于(因为M

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

li $24, 100

sw $24, 8004($0)
模拟器屏幕截图:


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

因此,您的屏幕截图显示存储在1f44+3或十进制地址8007的0x64(十进制100)。很明显,您的MIPS模拟器处于(因为MIPS可以在任何一种模式下运行):32位整数的LSB在第4字节结束。在小端模式下,
0x00000064
值的低位字节将位于
0x1f44
,接下来的3个字节将为零


根据,有字节、半字和字存储指令。如果您只想影响给定地址的单个字节,您应该使用
sb

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

因此,您的屏幕截图显示存储在1f44+3或十进制地址8007的0x64(十进制100)。很明显,您的MIPS模拟器处于(因为MIPS可以在任何一种模式下运行):32位整数的LSB在第4字节结束。在小端模式下,
0x00000064
值的低位字节将位于
0x1f44
,接下来的3个字节将为零


根据,有字节、半字和字存储指令。如果你只想影响你给出的地址的单个字节,你应该使用
sb

“似乎我总是缺少16位的标记”你是如何得出这个结论的?在我使用的模拟器中,值似乎显示在8020。内存地址显示有点混乱,尽管我说过我可能读错了。你能显示一个有问题的模拟器的屏幕截图吗?8020是16字节远,而不是16位。“看起来我总是错过16位。”你是如何得出这个结论的?我使用的模拟器显示值为8020。内存地址显示有点混乱,虽然我说过我可能读错了。你能显示一个有问题的模拟器的屏幕截图吗?8020是16字节远,不是16位。MIPS不一定是big-endian。MIPS不一定是big-endian。