0

アセンブリに次の簡単なコードがあります。

1000  Add        R3,R2,#20
1004  Susbtract  R5,R4,#3
1008  And        R6,R3,#0x3A
1012  Add        R7,R2,R4

私の質問は、「And」が何をするかということです...私はそれについて本当に混乱しています。私は宿題をしていて、行き詰まっています。

どうもありがとう。

4

2 に答える 2

4

2 つのソース オペランド間でビット単位andの演算を行い、結果をデスティネーション オペランドに入れます。結果を詳細に視覚化するには、各数値を 2 進数に変換してから、 を実行しandます。たとえば、R0 = 0x1234 で R1 = 0x8765 の場合:

R0 = 0x1234 =  0001 0010 0011 0100
R1 = 0x8765 =  1000 0111 0110 0101

Result      =  0000 0010 0010 0100
Hex result  =  0x0224

つまり、結果の各ビットは、1両方の入力オペランドのその位置のビットが 1 である場合にのみ、if となります。

于 2012-11-06T04:07:20.317 に答える
0

0x3A = 00111010b8ビットマシン用。これは 64 ビット マシンのように見えるので、先頭に 56 個のゼロを追加します。

[0 から始まる](1 番目、3 番目、4 番目、5 番目、6 番目) を除く R3 の数字のすべてのビットを右からマスクします。他のすべてのビットは無効化され、R6 に格納されます。

たとえば、R3 に 0x5848 が含まれている場合、(0x5848 (および) 0x3A) = 0x08 (R6 レジスタに格納されます)

0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0101 1000 0100 1000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0011 1010 (AND)
--------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1000
--------------------------------------------------------------------------------------

AND 演算の真理値表 =

A    B    A(and)B
-----------------
0  | 0  |  0
0  | 1  |  0
1  | 0  |  0
1  | 1  |  1
-----------------
于 2012-11-06T04:06:55.333 に答える