0

我在汇编中有这个简单的代码:

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

我的问题是“和”做了什么......我真的很困惑,我正在做我的功课,我被卡住了。

太感谢了。

4

2 回答 2

4

and在两个源操作数之间进行按位运算,并将结果放入目标操作数。要详细可视化结果,请将每个数字转换为二进制,然后执行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 时。

于 2012-11-06T04:07:20.317 回答
0

0x3A = 00111010b对于 8 位机器。这看起来像一个 64 位机器,所以在前面加上 56 个零。

它将屏蔽 R3 中除 [starts from 0](1st, 3rd, 4th, 5th and 6th) 之外的所有数字位,从右开始。所有其他位将被无效并存储在 R6 中

例如,如果 R3 包含 0x5848,则 (0x5848 (and) 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 回答