2017-05-19 10 views
0

にこれは愚かな質問のように見えるかもしれません取得しますが、私は本当に私がARM 7でMSBは/ LSBレジスタ

を欠けているものを教えてカント:私が言う、レジスタ0に8桁の数字を持っている

10110111 

私はこれを通じて「ループ」にしたいと現在のビットで何かをする8ビットがアップされるまで、私はこの単純な問題とのトラブルの多くを持っています。..

私のロジックがあります:

- get MSB/LSB of number in r0 
- shift it to r1 
- lsl/lsr r0 

しかし、このロジックから、私はあなたがMSB/LSBをどのように得るのか分かりません。誰か助けてくれますか?または、これをループするより良い方法がありますか?

ありがとうございました!

+0

あなたは何をしようとしていますか?単に各ビットの状態を調べるか、何かを数えていますか?ビットの順序を反転しますか? –

+0

また、マスク1,2,4,8,16の配列をループすることもできます。ループして、レジスタの値をANDします。 – user3344003

答えて

0

私はこの問題を回避する方法がありますが、それが最良の方法であるかどうかはわかりません。

ソリューション:

は、反復ごとに、値が1で2番目のレジスタを使用して、AND(R0、R1)はあなたの少しのthats。その後、LSL r1だけ、そして続行します。

例えば

mov r0, #0b10101010 @original 
mov r1, #1 

loop: 
    and r2,r0,r1 @this is your bit 
    lsl r1 
    b loop 
1

私はあなたの問題を理解することに苦労しています。しかし、フラグLSLSでシフトすると、そこからキャリービットとそれを読み取ることができます。

+0

申し訳ありませんが、あなたは私が組み立てにかなり新しいと言うことができます。ご協力いただきありがとうございます! LSLSならキャリービットに行くの?キャリービットを読むことは、xPSRレジスタの特定の場所からirtを取得することでしょうか? – Wboy

2

rbitclzの手順を確認してください。これらを使用すると、MSBインデックスとLSBインデックスを計算できます。