文章目录
前言
逻辑操作指令包括与、或、异或、清除、求反、移位等操作,其操作数都是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 |
由本人水平有限,文章难免有错误,望告知