单片机逻辑运算

已知(A)=83H,(R0)=47H,(47H)=34H.请写出执行下列程序段后A的内容。
ANL A,47H
ORL 47H,A
XRL A,@R0
SWAP A
请高手帮忙解下。。要附带过程,解释~~谢谢

第一步:
ANL是逻辑与运算
就是说第一步是A与47H里的内容34H进行与运算。 A=10000011 34H=00110100
与运算特点是有“0”则0 运算结果为00000000=00H 此时累加器A中内容为00H
第二步:
ORL是逻辑或运算
这部分是第一部分运算出来的A与47H地址里的34H进行或运算,得出的结果存放在47H单元中。 A=00H=00000000 47H=00110100 或运算特点是有“1”则1
所以运算结果为00110100=34H运算后47H地址中的内容为34H
第三步:
XRL是逻辑异或指令
R0前面的@说明寻址方式是寄存器寻址。特点是将R0中的内容作为地址,在从此地址中寻找出对应的内容作为R0的内容。题干中说到(R0)=47H 就是R0中的内容为47H @R0就是以R0中的内容47H为地址,找出对应的内容。上一部分已经知道了47H里的内容为34H。回到第三步来,就相当于XRL A,34H A=00H=00000000 34H=00110100 逻辑异或运算的特点是相同则为0,不同则为1,所以结果为00110100=34H 此时累加器A中的内容为34H
第四步:
SWAP是高低四位数据值互换(如果是8位的话) 就是将00110100前四位与后四位互换,换完后还是01000011=43H 最后A中内容为43H

参照下面那位大哥,改过来了,要不误导人咯~~呵呵
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-25
anl“与”是乘法的关系 1乘以1=1 1乘以0=0

orl“或”是加法的关系 1+1=1 1+0=1 0+0=0

xrl“异或” 真^假=真
假^真=真
假^假=假
真^真=假 真是1 假是0
SWAP A 就是A内高低半字节交换
再就是16进制和2进制之间转换了 自己算出来以后就不会忘了
第2个回答  2010-03-23
ANL A,47H ;(A)=00h
ORL 47H,A ;(47H)=34H, A同上
XRL A,@R0 ;(A)=34H
SWAP A ;(A)=43H

参考资料:回答者: 屋顶上的哥  的回答

相似回答