MIPS内存访问

时间:2014-02-17 20:21:43

标签: assembly mips

我正在尝试使用MIPS做三件事,但目前还不知道从哪里开始。

我需要将0101 0101 0101 0101的值写入地址0x10000000.的内存位置然后将16位二进制值转换为十进制或十六进制,以便将其作为我的代码的一部分包含在内。首先将值放入寄存器,然后将寄存器值存储在存储器中的该地址。

然后我需要将1010 1010 1010 1010 1010 1010 1010 1010的值写入地址0x10000004的下一个内存位置。再次转换32位二进制值。然后首先使用lui加载高16位,然后使用ori加载低16位。

最后,我需要添加存储在0x100000000x10000004的值,并将32位字结果存储在内存中的下一个地址。

任何帮助都会非常有帮助!并解释代码等。

谢谢你们

1 个答案:

答案 0 :(得分:1)

试试这个:

addi $t0 $zero 0x5555 #store 0101 0101 0101 0101 in $t0
lui  $t1 0x1000       #store 0x10000000 in $t1
sw   $t0 0($t1)

lui $t0 0xAAAA #store 1010 1010 1010 1010 0000 0000 0000 0000 in $t0
ori $t0 0xAAAA #store 1010 1010 1010 1010 1010 1010 1010 1010 in $t0
sw  $t0 4($t1)

#load the values, add and store back
lw $t2 0($t1) 
lw $t3 4($t1)
add $t4 $t2 $t3
sw $t4 8($t1) 

我想也许让你感到困惑的是你在谈论必须在各种基础之间来回转换的地方。如您所见,这不是必需的。