我需要在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的方法?
提前致谢!
答案 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
应该很容易转换成汇编程序。