LC-3汇编语言 - 交换值

时间:2013-02-22 18:02:36

标签: linux assembly lc3

如何切换到地址中的值。目前我有2个包含地址的寄存器。然后我有2个临时变量存储这些地址。然后我加载了值,因为我有地址。但我无法弄清楚如何交换价值观。我正在尝试做冒泡排序。以下代码是我目前的代码

IF          ;swapping condition
   ST R2,idata    ;temporily hold the smaller data
   ST R1,imindata ;temporaily hold the larger data
   ST R2,iminaddres ;store the values into that address
   ST R2,iaddress   ;finish the swaping of the two values
   LD R1,iminaddres ;reput the address back into the register
   LD R2,iaddres    ;reput the address back into the register to be used for next cycle

2 个答案:

答案 0 :(得分:1)

你怎么用C做的?

temp = a;
a = b;
b = temp;

然后理解需要从内存中加载这些值,这会稍微改变一下

tempa = a;
tempb = b;
b = tempa;
a = tempb;

然后隔离加载和存储

rega <= load(a);
regb <= load(b);
store(a) <= regb;
store(b) <= rega;

然后在程序集中实现它。这有点像家庭作业,所以我不会为你做。

答案 1 :(得分:0)

如果你想要做的就是交换两个寄存器的内容,那就是一个简单的比特伎俩:

XOR R1,R2
XOR R2,R1
XOR R1,R2

这将在不使用任何内存的情况下交换两个寄存器的内容。