51单片机之逻辑运算指令ANL、ORL、XRL等
文章目录前言一、简单操作指令 CLR、CPL、SWAPCLR ACPL ASWAP A二、位移指令 RL、RR、RLC、RRCRL ARR ARLC ARRC A三、逻辑“与”指令 ANLANL A, XXXANL direct, XXX四、逻辑“或”指令 ORLORL A, XXXORL direct, XXX五、逻辑“异或”指令 XRLORL A, XXXXRL direct, XXX前言..
文章目录
前言
逻辑操作指令包括与、或、异或、清除、求反、移位等操作,其操作数都是8位
一、简单操作指令 CLR、CPL、SWAP
CLR英文全称:Clear
CPL英文全称:Complement
SWAP英文全称:Swap
CLR A
指令名称:累加器A清0指令
目的:将累加器A中的内容清零
CPL A
指令名称:累加器A取反指令
目的:将累加器A的内容逐位取反
SWAP A
指令名称:累加器半字节交换指令
目的:将累加器A的高低两半字节交换
助记符 | 功能 | 对标志位影响 | 字节数 | 周期数 | |||
---|---|---|---|---|---|---|---|
P | OV | AC | CY | ||||
CLR A | 0 -> A | √ | × | × | × | 1 | 1 |
CPL A | (/A) -> A | × | × | × | × | 1 | 1 |
SWAP A | (AL)<--> (AH) | × | × | × | × | 1 | 1 |
AL:A0123低半字节位;
AH:A4567高半字节位;
*表示无影响,√表示有影响,下同
例 (A) = 07H 即 (A) = 0000 0111B
- CLR A:表示A的8位都位零,(A) = 0000 0000B;
- CPL A:表示A的内容逐位取反,(A) = 1111 1000B = F8H;
- SWAP A:表示A的高低半字节交换,(A) = 0111 0000B = 70H。
二、位移指令 RL、RR、RLC、RRC
RL英文全称:Rotate Left
RR英文全称:Rotate Right
RLC英文全称:Rotate Left throught the Carry flag
RRC英文全称:Rotate Right throught the Carry flag
RL A
指令名称:累加器A循环左移指令
目的:累加器A的内容最高位变最低位,其他位都升一位
RR A
指令名称:累加器A循环右移指令
目的:累加器A的内容最低位变最高位,其他位都降一位
RLC A
指令名称:累加器A连同进位位循环左移指令
目的:累加器A的内容最高位进入CY,CY位的内容进入最低位,其他位都升一位
RRC A
指令名称:累加器A连同进位位循环右移指令
目的:累加器A的内容最低位进入CY,CY位的内容进入最高位,其他位都升一位
助记符 | 功能 | 对标志位影响 | 字节数 | 周期数 | |||
---|---|---|---|---|---|---|---|
P | OV | AC | CY | ||||
RL A | A循环左移一位 | × | × | × | × | 1 | 1 |
RR A | A循环右移一位 | × | × | × | × | 1 | 1 |
RLC A | A带进位循环左移一位 | √ | × | × | √ | 1 | 1 |
RRC A | A带进位循环右移一位 | √ | × | × | √ | 1 | 1 |
- RLC可以做乘2运算;
- 左移一位可以看作乘2,前提是第7位是0;
- 右移一位可以看作除2,前提是第0位是0;
例无符号8位二进制数(A) = 1011 1101B = BDH, CY = 0
-
RL A:将A的第7位送入第0位,其余位提升一位,结果为:(A) = 0111 1011B
-
RR A:将A的第0位送入第7位,其余位降低一位,结果为:(A) = 1101 1110B
-
RLC A:将A的第7位送入CY中,将CY的内容送入第0位,结果为(CY) = 1,(A) = 0111 1010B,表示17AH,正好是BDH两倍;
-
RRC A:将A的第0位送入CY中,将CY的内容送入第7位,结果为(CY) = 1,(A) = 0101 1110B,A中表示57H。
三、逻辑“与”指令 ANL
ANL英文全称:ANL Logic
ANL A, XXX
目的:将累加器A中的内容和操作数所指向的内容按位进行逻辑“与”操作,结果存放在A中
源操作数:寄存器Rn、直接地址direct、间接寄存器@Ri、立即数#data
助记符 | 功能 | 对标志位影响 | 字节数 | 周期数 | |||
---|---|---|---|---|---|---|---|
P | OV | AC | CY | ||||
ANL A, Rn | (A) ∧ (Rn) -> A | √ | × | × | × | 1 | 1 |
ANL A, @Ri | (A) ∧ ((Ri)) -> A; i = 0, 1 | √ | × | × | × | 1 | 1 |
ANL A, direct | (A) ∧ (direct) -> A | √ | × | × | × | 2 | 1 |
ANL A, #data | (A) ∧ data -> A | √ | × | × | × | 2 | 1 |
- ANL能将某些位清零,对于想清零的位与0进行“与”逻辑,对于想保持原来的位与1进行“与”逻辑;
例 (A) = 1111 1100B = FCH,(10) = 2FH,(2FH) = 2DH,(R0) = 10H
- ANL A, R0:结果为(A) = 0001 0000B;
- ANL A, @R0:结果为(A) = 0010 1100B;
- ANL A, 10H:结果为(A) = 0010 1100B;
- ANL A, #10H:结果为(A) = 0001 0000B。
ANL direct, XXX
目的:将直接地址单元的内容和源操作数的内容按位进行逻辑“与”操作,结果存放在直接地址中
源操作数:累加器A、立即数#data
助记符 | 功能 | 对标志位影响 | 字节数 | 周期数 | |||
---|---|---|---|---|---|---|---|
P | OV | AC | CY | ||||
ANL direct, A | (direct) ∧ (A) -> direct | × | × | × | × | 2 | 1 |
ANL direct, #data | (direct) ∧ data -> direct | × | × | × | × | 3 | 2 |
四、逻辑“或”指令 ORL
ORL英文全称:OR Logic
ORL A, XXX
目的:将累加器A中的内容和操作数所指向的内容按位进行逻辑“或”操作,结果存放在A中
源操作数:寄存器Rn、直接地址direct、间接寄存器@Ri、立即数#data
助记符 | 功能 | 对标志位影响 | 字节数 | 周期数 | |||
---|---|---|---|---|---|---|---|
P | OV | AC | CY | ||||
ORL A, Rn | (A) ∨ (Rn) -> A | √ | × | × | × | 1 | 1 |
ORL A, @Ri | (A) ∨ ((Ri)) -> A; i = 0, 1 | √ | × | × | × | 1 | 1 |
ORL A, direct | (A) ∨ (direct) -> A | √ | × | × | × | 2 | 1 |
ORL A, #data | (A) ∨ data -> A | √ | × | × | × | 2 | 1 |
- ORL能将某些位置一,对于想置一的位与1进行“或”逻辑,对于想保持原来的位与0进行“或”逻辑;
例 (A) = 1001 1100B = 9CH,(E1) = DFH,(DFH) = 2DH,(R0) = E1H
- ORL A, R0:结果为(A) = 1111 1101B = FDH;
- ORL A, @R0:结果为(A) = 1101 1111B = DFH;
- ORL A, E1H:结果为(A) = 1101 1111B = DFH;
- ORL A, #E1H:结果为(A) = 1111 1101B = FDH。
ORL direct, XXX
目的:将直接地址单元的内容和源操作数的内容按位进行逻辑“或”操作,结果存放在直接地址中
源操作数:累加器A、立即数#data
助记符 | 功能 | 对标志位影响 | 字节数 | 周期数 | |||
---|---|---|---|---|---|---|---|
P | OV | AC | CY | ||||
ORL direct, A | (direct) ∨ (A) -> direct | × | × | × | × | 2 | 1 |
ORL direct, #data | (direct) ∨ data -> direct | × | × | × | × | 3 | 2 |
五、逻辑“异或”指令 XRL
XRL英文全称:Exclusive-OR Logic
XRL A, XXX
目的:将累加器A中的内容和操作数所指向的内容按位进行逻辑“异或”操作,结果存放在A中
源操作数:寄存器Rn、直接地址direct、间接寄存器@Ri、立即数#data
助记符 | 功能 | 对标志位影响 | 字节数 | 周期数 | |||
---|---|---|---|---|---|---|---|
P | OV | AC | CY | ||||
XRL A, Rn | (A) ⊕ (Rn) -> A | √ | × | × | × | 1 | 1 |
XRL A, @Ri | (A) ⊕ ((Ri)) -> A; i = 0, 1 | √ | × | × | × | 1 | 1 |
XRL A, direct | (A) ⊕ (direct) -> A | √ | × | × | × | 2 | 1 |
XRL A, #data | (A) ⊕ data -> A | √ | × | × | × | 2 | 1 |
- XRL能将某些位置取反;
XRL direct, XXX
目的:将直接地址单元的内容和源操作数的内容按位进行逻辑“或”操作,结果存放在直接地址中
源操作数:累加器A、立即数#data
助记符 | 功能 | 对标志位影响 | 字节数 | 周期数 | |||
---|---|---|---|---|---|---|---|
P | OV | AC | CY | ||||
XRL direct, A | (direct) ⊕ (A) -> direct | × | × | × | × | 2 | 1 |
XRL direct, #data | (direct) ⊕ data -> direct | × | × | × | × | 3 | 2 |
由本人水平有限,文章难免有错误,望告知
更多推荐
所有评论(0)