原创 51汇编逻辑位操作的小口诀

2010-7-2 18:27 3372 2 3 分类: MCU/ 嵌入式

玩单片机我用汇编,尽管C很强大,咱玩玩小东西汇编也够了,而且精炼,其中有个关于位操作的内容,最近由于要驱动一个拆下的变送器液晶表头玩,涉及到了51片子能直接位寻址之外的关于位操作的问题,其实也就是下面这段内容:


========================================================


汇编逻辑运算指令


逻辑运算指令是另一组重要的指令,它包括:逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)和异或指令(XOR),逻辑运算指令也是经常使用的指令。


1、逻辑与操作指令AND(Logical AND Instruction)


指令的格式:ANDReg/Mem, Reg/Mem/Imm


受影响的标志位:CF(0)、OF(0)、PF、SF和ZF(AF无定义)


指令的功能是把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑“与操作”,操作结果存入目标操作数中。



例5.6已知(BH)=67H,要求把其的第0、1和5位置为0。


解:可以构造一个立即数,其第0、1和5位的值为0,其它位的值为1,该立即数即为:0DCH或11011100B,然后用指令\"AND BH, 0DCH\"来实现此功能。


 


2、逻辑或操作指令OR(Logical OR Instruction)


指令的格式:ORReg/Mem, Reg/Mem/Imm


受影响的标志位:CF(0)、OF(0)、PF、SF和ZF(AF无定义)


指令的功能是把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑\"或操作\",操作结果存入目标操作数中。



例5.7已知(BL)=46H,要求把其的第1、3、4和6位置为1。


解:构造一个立即数,使其第1、3、4和6位的值为1,其它位的值为0,该立即数即为:5AH或01011010B,然后用指令\"OR BL, 5AH\"来实现此功能。


 


3、逻辑非操作指令NOT(Logical NOT Instruction)


指令的格式:NOTReg/Mem


其功能是把操作数中的每位变反,即:1←0,0←1。指令的执行不影响任何标志位。


例5.8已知(AL)=46H,执行指令“NOTAL”后,AL的值是什么?


解:执行该指令后,(AL)=0B9H。


4、逻辑异或操作指令XOR(Exclusive OR Instruction)


指令的格式:XORReg/Mem, Reg/Mem/Imm


受影响的标志位:CF(0)、OF(0)、PF、SF和ZF(AF无定义)


指令的功能是把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑\"异或操作\",操作结果存入目标操作数中。



例5.9已知(AH)=46H,要求把其的第0、2、5和7位的二进制值变反。


解:构造一个立即数,使其第0、2、5和7位的值为1,其它位的值为0,该立即数即为:0A5H或10100101B,然后再用指令\"XOR AH, 0A5H\"来实现此功能。


========================================================


这么大段内容也不好记住,我还是总结个小口诀吧,大家看觉得行么?


置零就用与,写零就得零;
置一就用或,写一就得一;
要想位取反,就得用异或;
见一就取反,见零不改变。


大家有更精炼的么?共享出来大家一起学习哈!

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户518079 2010-7-26 20:56

置零就用与,写零就得零; 置一就用或,写一就得一; 要想位取反,就得用异或; 见一就取反,见零不改变。 这个总结的很好!
相关推荐阅读
用户42516 2016-03-20 11:08
请玩diy航模的朋友们注意杜邦插头接触不良问题
请玩diy航模的朋友们注意杜邦插头接触不良问题   最近看好多玩DIY航模的摔机视频,不知道他们有没有想到,那些飞控使用的杜邦头子长期振动氧化腐蚀造成接触不良引起飞控失效问题,航模也不便宜...
用户42516 2016-02-21 16:12
拆解一个废罗斯蒙特控制卡看到的工业PCB设计
这是一块双块电路板叠加起来的模块,整体布局分布清楚,左侧是模拟量转换通道,16通道分布上下两端,中间是信号处理单元,右侧整版是控制部分,具体咱也不知道咋回事,外行看个热闹吧!哈哈! ...
用户42516 2016-02-21 15:05
用电视机消磁线圈DIY手动消磁器
我有台老式20M双踪示波器,被上面的小台钻给磁干扰了,表现为垂直线条全部都歪了,看波形很别扭,终于我家的29寸大彩电今年"退休"了,里面的电路板和消磁线圈被我拿下当备件,消磁线圈挺大的,电路板上是...
用户42516 2016-02-21 14:17
罗斯蒙特变送器液晶表头驱动
  /************************************************************...
用户42516 2015-09-22 19:09
电位器控制三色LED单片机PWM驱动的简单程序
朋友问能否用模拟量控制PWM,这么简单当然easy了,我用STC15W408AS的DIP20脚的单片机,因为这种单片机具有AD输入通道和PWM输出,很快做好了一个单通道的实验,完事想这个单片机有三...
用户42516 2015-07-23 11:37
【博客大赛】DIY 100V耐压测试器
手里零件挺多的,昨天做个东西,本来应该用IN4148做二极管用,随手拿了两个玻封管,也没仔细看就焊上去了,上电不能正常工作,仔细检查后才发现拿了稳压管当二极管用了,废了半天劲,早知道测试一下...
EE直播间
更多
我要评论
1
2
关闭 站长推荐上一条 /1 下一条