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

2つのレジスタの内容を交換するだけの場合は、簡単なビットをいじるトリックがあります。

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

これにより、メモリを使用せずに2つのレジスタの内容が交換されます。

于 2013-02-22T19:32:22.913 に答える