如何切换到地址中的值。目前我有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
答案 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
这将在不使用任何内存的情况下交换两个寄存器的内容。