单片机学习笔记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)

posted @ 2025-03-23 19:27  RaLi  阅读(0)  评论(0)    收藏  举报  来源