首页 理论教育逻辑运算及移位类指令-单片机基础及应用

逻辑运算及移位类指令-单片机基础及应用

【摘要】:MCS-51单片机逻辑运算及移位类指令包括与、或、异或、清0、取反、移位等操作指令。1.逻辑“与”运算指令逻辑“与”运算指令共有以下6条:这组指令中的前4条指令完成源操作数与累加器的内容相与,并将结果送入累加器中。其寻址方式、标志位影响、端口操作与ANL指令相同。表3-4逻辑运算及移位类指令注:√表示该指令影响某一标志位。

MCS-51单片机逻辑运算及移位类指令包括与、或、异或、清0、取反、移位等操作指令。这类指令有CLR、CPL、RL、RLC、RR、RRC、ANL、ORL、XRL共9种。这些指令执行时,一般不影响标志位,如表3-4所示。

1.逻辑“与”运算指令

逻辑“与”运算指令共有以下6条:

这组指令中的前4条指令完成源操作数累加器(A)的内容相与,并将结果送入累加器(A)中。后两条指令则实现源操作数与直接地址指示的单元内容相与,结果送入直接地址指示的单元,若直接地址正好是I/O端口时,则是“读—修改—写”操作。6条指令的源操作数有寄存器寻址、直接寻址、寄存器间接寻址和立即寻址的寻址方式。当所寻址的寄存器不是累加器(A)或程序状态字(PSW)时,不影响任何标志位,否则会对标志位有影响。

例如,若已知(A)=00011111B,(30H)=10000011B,执行指令

后结果为:(A)=00000011B,(30H)=10000011B不变。

2.逻辑“或”运算指令

逻辑“或”运算指令共有以下6条:

这组指令在所寻址的单元之间进行逻辑“或”操作,并将结果存放到目的单元中去。其寻址方式、标志位影响、端口操作与ANL指令相同。

表3-4 逻辑运算及移位类指令

注:√表示该指令影响某一标志位。

3.逻辑“异或”运算指令

逻辑“异或”运算指令共有以下6条:

这组指令在所寻址的单元之间进行逻辑“异或”操作,并将结果存放到目的单元中去。其寻址方式、标志位影响、端口操作与ANL指令相同。

4.循环移位指令

循环移位指令共有以下4条:

移位情况如图3-10所示。

(www.chuimin.cn)

图3-10 循环移位指令执行图

前两条指令的功能分别是将累加器(A)的内容循环左移或右移一位,后两条指令的功能分别是将累加器(A)的内容连同进位标志位CY一起循环左移或右移一位。

【例3-12】编程实现16位数的算术左移。设16位数存放在片内RAM的20H、21H单元,低位在前。

【解】算术左移是指将操作数整体左移一位,最低位补充0,相当于完成对16位数的乘2操作。

5.清零和取反指令

前一条指令的作用是将A的内容清0,后一条指令的作用是将A的内容按位取反后送回到A中。

例如,设(A)=10101010B,执行指令

后结果为:(A)=01010101B。

【例3-13】将累加器A的低4位状态通过P1口的高4位输出。【程序】

【例3-14】把在R4和R5中的两个字节数(作为一个字)取补(高位在R4中)。

【程序】

【例3-15】设在片外RAM的2000H中存放有两个BCD码数,试编一程序将这两个BCD码分别存到2000H和2001H的低4位中。

【程序】

指令举例说明