1

如何交换到地址中的值。目前我有 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
4

2 回答 2

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;

然后在汇编中实现它。这闻起来像家庭作业,所以我不会为你做。

于 2013-02-23T01:06:32.830 回答
0

如果您只想交换两个寄存器的内容,则有一个简单的位旋转技巧:

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

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

于 2013-02-22T19:32:22.913 回答