以MIPS

时间:2016-09-09 09:16:54

标签: concatenation mips

我需要在MIPS程序集中编写一些东西,它将从给定数组中取出32位整数的值,连接它们而不是添加它们,然后存储到变量x 。

例如,如果Data [1]包含6,Data [2]包含9,Data [3]包含3,我需要形成整数693然后将其保存到变量x。

Java等价物将是:

x = Data[1] + “” + Data[2] + “” + Data[3];

到目前为止,我已经获得了汇编代码:

# load root addresses of variable and array
la $s0, x              # load address of variable x into register $s0
la $s1, Data           # load address of ‘Data’ array into $s1

# load contents of array into registers
lw $t0, 4($s1)      # load contents of Data[1] into register $t0 
lw $t1, 4($s1)      # load contents of Data[2] into register $t1
lw $t2, 4($s1)      # load contents of Data[3] into register $t2

# concatenate strings by treating numbers as logic
ori $t3, $zero, $t0  # (I know this is wrong)
???

# store concatenated value into variable
sw $s0, 0($__)      # store value of $__ into register of x

我该怎么做呢?我非常困惑,因为似乎没有办法连接整数值。我是否遗漏了使用ori的方法?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您的Java代码连接字符串。如果要将十进制6,9和3转换为十进制693,请尝试使用此Java:

int[] data = new int[]{6, 9, 3};
int result = data[0] * 100 + data[1] * 10 + data[2] * 1;  // result = 693

应该很容易转换成汇编程序。