我在汇编中有这个简单的代码:
1000 Add R3,R2,#20
1004 Susbtract R5,R4,#3
1008 And R6,R3,#0x3A
1012 Add R7,R2,R4
我的问题是“和”做了什么......我真的很困惑,我正在做功课而且我被卡住了。
非常感谢你。
答案 0 :(得分: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
。
答案 1 :(得分:0)
0x3A = 00111010b
。这看起来像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 operation =
的真值表A B A(and)B
-----------------
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
-----------------