单片机学习笔记4.汇编语言.3.2逻辑操作类指令详解

单操作数 :专门对累加器A进行的逻辑操作
累加器清零和取反指令
1. 累加器清零指令
- 指令格式:
CLR A - 功能:将累加器 A 的内容清零,即 A = 00H。
- 示例:
MOV A, #0FFH ; A = 0FFH (1111 1111)
CLR A ; A = 00H (0000 0000)
2. 累加器取反指令
- 指令格式:
CPL A - 功能:将累加器 A 的内容按位取反。
- 示例:
MOV A, #0F0H ; A = 0F0H (1111 0000)
CPL A ; A = 0FH (0000 1111)
移位指令
移位指令可以对累加器 A 中的数据进行左移、右移等操作。
1. 循环左移指令
- 指令格式:
RL A - 功能:将累加器 A 的内容循环左移一位,最高位移入最低位。
- 示例:
MOV A, #01H ; A = 01H (0000 0001)
RL A ; A = 02H (0000 0010)
2. 带进位循环左移指令
- 指令格式:
RLC A - 功能:将累加器 A 的内容和进位标志 CY 一起循环左移一位,A 的最高位移入 CY,CY 移入 A 的最低位。
- 示例:
MOV A, #01H ; A = 01H (0000 0001)
CLR C ; CY = 0
RLC A ; A = 02H (0000 0010), CY = 0
3. 循环右移指令
- 指令格式:
RR A - 功能:将累加器 A 的内容循环右移一位,最低位移入最高位。
- 示例:
MOV A, #02H ; A = 02H (0000 0010)
RR A ; A = 01H (0000 0001)
4. 带进位循环右移指令
- 指令格式:
RRC A - 功能:将累加器 A 的内容和进位标志 CY 一起循环右移一位,A 的最低位移入 CY,CY 移入 A 的最高位。
- 示例:
MOV A, #02H ; A = 02H (0000 0010)
CLR C ; CY = 0
RRC A ; A = 01H (0000 0001), CY = 0
双操作数: 累加器A与第二操作数直接的逻辑与,或,异或操作
第二操作数可以是立即数,Rn,内部RAM,SFR
逻辑与指令
逻辑与运算通常用于屏蔽某些位,将不需要的位清零。
1. 累加器 A 与寄存器操作数进行逻辑与
- 指令格式:
ANL A, Rn - 功能:将累加器 A 的内容和寄存器 Rn 的内容按位进行逻辑与运算,结果存于累加器 A 中。
- 示例:
MOV A, #0F0H ; A = 0F0H (1111 0000)
MOV R0, #0FH ; R0 = 0FH (0000 1111)
ANL A, R0 ; A = A & R0 = 00H (0000 0000)
2. 累加器 A 与直接地址单元进行逻辑与
- 指令格式:
ANL A, direct - 功能:将累加器 A 的内容和直接地址单元中的内容按位进行逻辑与运算,结果存于累加器 A 中。
- 示例:
MOV A, #0F0H ; A = 0F0H (1111 0000)
MOV 30H, #0FH ; 地址30H单元内容为0FH (0000 1111)
ANL A, 30H ; A = A & (30H) = 00H (0000 0000)
逻辑或指令
逻辑或运算一般用于使某些位置 1。
1. 累加器 A 与寄存器操作数进行逻辑或
- 指令格式:
ORL A, Rn - 功能:将累加器 A 的内容和寄存器 Rn 的内容按位进行逻辑或运算,结果存于累加器 A 中。
- 示例:
MOV A, #0F0H ; A = 0F0H (1111 0000)
MOV R0, #0FH ; R0 = 0FH (0000 1111)
ORL A, R0 ; A = A | R0 = 0FFH (1111 1111)
2. 累加器 A 与直接地址单元进行逻辑或
- 指令格式:
ORL A, direct - 功能:将累加器 A 的内容和直接地址单元中的内容按位进行逻辑或运算,结果存于累加器 A 中。
- 示例:
MOV A, #0F0H ; A = 0F0H (1111 0000)
MOV 30H, #0FH ; 地址30H单元内容为0FH (0000 1111)
ORL A, 30H ; A = A | (30H) = 0FFH (1111 1111)
逻辑异或指令
逻辑异或运算常用于判断两个数的对应位是否相同,相同为 0,不同为 1;也可用于对某些位取反。
1. 累加器 A 与寄存器操作数进行逻辑异或
- 指令格式:
XRL A, Rn - 功能:将累加器 A 的内容和寄存器 Rn 的内容按位进行逻辑异或运算,结果存于累加器 A 中。
- 示例:
MOV A, #0F0H ; A = 0F0H (1111 0000)
MOV R0, #0FH ; R0 = 0FH (0000 1111)
XRL A, R0 ; A = A ^ R0 = 0FFH (1111 1111)
2. 累加器 A 与直接地址单元进行逻辑异或
- 指令格式:
XRL A, direct - 功能:将累加器 A 的内容和直接地址单元中的内容按位进行逻辑异或运算,结果存于累加器 A 中。
- 示例:
MOV A, #0F0H ; A = 0F0H (1111 0000)
MOV 30H, #0FH ; 地址30H单元内容为0FH (0000 1111)
XRL A, 30H ; A = A ^ (30H) = 0FFH (1111 1111)

浙公网安备 33010602011771号