2012-11-06 114 views
0

我在装配此简单的代码:功课汇编语言

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

我的问题是什么是“和”做......我真搞不清楚了,我做我的功课,我米卡住了。

非常感谢。

+2

http://en.wikipedia.org/wiki/Bitwise_operation – Mysticial

回答

0

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

它将屏蔽R3中除[从0开始](第1,第3,第4,第5和第6)从右侧开始的所有数字位。所有其它位将被无效,并存储在R6

例如,如果R 3含有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 
----------------- 
4

它完成两个源操作数之间的按位and,并把结果在目标操作数。要详细可视化结果,请将每个数字转换为二进制数,然后执行and。例如,如果R0 = 0×1234和R1 = 0×8765,则:

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

Result  = 0000 0010 0010 0100 
Hex result = 0x0224 

即在结果每个位是1当且仅当在两个输入操作数该位置的位都为1的。