您现在的位置是:首页 > 单片机

MCS-51逻辑运算及移位指令

2019-12-24 21:03:40

逻辑运算和移位指令共有25条,有与、或、异或、求反、左右移位、清0等逻辑操作,有直接、寄存器和寄存器间址等寻址方式。这类指令一般不影响程序状态字(PSW)标志。

    [1]. 循环移位指令(4条)
    这4条指令的作用是将累加器中的内容循环左或右移一位,后两条指令是连同进位位CY一起移位。

        RL  A     ;累加器A中的内容左移一位
        RR  A     ;累加器A中的内容右移一位
        RLC  A    ;累加器A中的内容连同进位位CY左移一位
        RRC  A    ;累加器A中的内容连同进位位CY右移一位

    [2]. 累加器半字节交换指令(1条)
    这条指令是将累加器中的内容高低半字节互换,这在上一节中内容已有介绍。

        SWAP  A  ; 累加器中的内容高低半字节互换

    [3]. 求反指令(1条)
    这条指令将累加器中的内容按位取反。

        CPL  A    ; 累加器中的内容按位取反

    [4]. 清零指令(1条)
    这条指令将累加器中的内容清0。

        CLR  A    ; 0→(A),累加器中的内容清0

    [5].  逻辑与操作指令(6条)
    这组指令的作用是将两个单元中的内容执行逻辑与操作。如果直接地址是I/O地址,则为“读—修改—写”操作。

        ANL  A,data    ;累加器A中的内容和直接地址单元中的内容执行与逻辑操作。结果存在寄存器A中。
        ANL  data,#data  ;直接地址单元中的内容和立即数执行与逻辑操作。结果存在直接地址单元中。
        ANL  A,#data   ;累加器A的内容和立即数执行与逻辑操作。结果存在累加器A中。
        ANL  A,Rn      ;累加器A的内容和寄存器Rn中的内容执行与逻辑操作。结果存在累加器A中。
        ANL  data,A    ;直接地址单元中的内容和累加器A的内容执行与逻辑操作。结果存在直接地址单元中。
        ANL  A,@Ri    ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行与逻辑操作。结果存在累加器A中。

    [6].  逻辑或操作指令(6条)
    这组指令的作用是将两个单元中的内容执行逻辑或操作。如果直接地址是I/O地址,则为“读—修改—写”操作。

        ORL  A,data    ;累加器A中的内容和直接地址单元中的内容执行逻辑或操作。结果存在寄存器A中。
        ORL  data,#data  ;直接地址单元中的内容和立即数执行逻辑或操作。结果存在直接地址单元中。
        ORL  A,#data   ;累加器A的内容和立即数执行逻辑或操作。结果存在累加器A中。
        ORL  A,Rn      ;累加器A的内容和寄存器Rn中的内容执行逻辑或操作。结果存在累加器A中。
        ORL  data,A    ;直接地址单元中的内容和累加器A的内容执行逻辑或操作。结果存在直接地址单元中。
        ORL  A,@Ri    ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑或操作。结果存在累加器A中。

    [7].  逻辑异或操作指令(6条)
    这组指令的作用是将两个单元中的内容执行逻辑异或操作。如果直接地址是I/O地址,则为“读—修改—写”操作。

        XRL  A,data    ;累加器A中的内容和直接地址单元中的内容执行逻辑异或操作。结果存在寄存器A中。
        XRL  data,#data  ;直接地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地址单元中。
        XRL  A,#data   ;累加器A的内容和立即数执行逻辑异或操作。结果存在累加器A中。
        XRL  A,Rn      ;累加器A的内容和寄存器Rn中的内容执行逻辑异或操作。结果存在累加器A中。
        XRL  data,A    ;直接地址单元中的内容和累加器A的内容执行逻辑异或操作。结果存在直接地址单元中。
        XRL  A,@Ri    ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑异或操作。结果存在累加器A中。