第九讲 逻辑操作类指令
逻辑运算指令

第3页
2021年12月8日星期三
3. 寄存器寻址
格式:Rd &= Rs或Rd=Rd&Rs
功能:Rd & Rs→Rd
说明:将Rd和Rs的数据进行逻辑与操作,结果送Rd寄存器。
例如,假设开始时的标志位为N=0,Z=1,S=0,C=1。
R1=0x00FF
//R1的初值为0x00FF,Z=0,N=0
R2=0XFFFF
例如,假设开始时的标志位为N=0,Z=1,S=0,C=1。
R1=0x00FF
//R1的初值为0x00FF,Z=0,N=0
R1|=0xF000
//R1的值变为0பைடு நூலகம்F0FF, Z=0,N=1
第9页
2021年12月8日星期三
2. 直接寻址 格式1:Rd|=[A6]或Rd=Rd|[A6] 功能:Rd|[A6]→Rd 说明:将Rd和A6指定单元的数据进行逻辑或操作,结果送 Rd寄存器。 格式2:Rd =Rs|[A16] 功能:Rs|[A16]→Rd
R1|=[R2];
//R1的值变为0xFFFF,Z=0,N=1
第15页
2021年12月8日星期三
1.3 逻辑异或指令 逻辑异或影响标志位N和Z,寻址方式有以下几种。 1. 立即寻址 格式1:Rd^=IM6或Rd= Rd^IM6 功能:Rd^IM6→Rd 说明:将Rd的数据与6位立即数进行逻辑异或操作,结果
格式:TEST Rd,Rs 说明:将Rd 与Rs 的数据进行逻辑与操作,不存储结果,只 影响N和Z标志位。 例如,假设初始时标志位分别为N=0,Z=1,S=0,C=1。
第18页
2021年12月8日星期三
说明:将Rs的数据和A16指定存储单元的数据进行逻辑异 或操作,结果送Rd寄存器。
逻辑运算类指令

标志位
解释
P OAC VCY
√ × × × 累加器A中的内容和直接地址单元中的内容执 行逻辑或操作。结果存在累加器A中
√ × × × 累加器A的内容和立即数执行逻辑或操作。结 果存在累加器A中
√ × × × 累加器A的内容和寄存器Rn的内容执行逻辑或 操作。结果存在累加器A中
√ × × × 累加器A的内容和工作寄存器Ri指向的地址单 元中的内容执行逻辑或操作。结果存在累加器 A中
单片机原理与应用
逻辑运算类指令
逻辑运算指令共有24条 有与、或、异或、求反、左右移位、清0等逻辑操作 有直接、寄存器和寄存器间址等寻址方式。
1. 清零指令(1条)
指令
功能
标志位 解释
P OA C VC Y
CLR A
A ←0
√ × × × 累加器A中的内容清0
2.求反指令(1条)
指令功能Βιβλιοθήκη 标志位√ × × × 累加器A的内容和工作寄存器Ri指向的地址单元中 的内容执行逻辑异或操作。结果存在累加器A中
√ × × × 累加器A的内容和立即数执行逻辑异或操作。结果 存在累加器A中
√ × × × 累加器A的内容和寄存器Rn中的内容执行逻辑异 或操作。结果存在累加器A中
× × × × 直接地址单元中的内容和累加器A的内容执行逻辑 异或操作。结果存在直接地址单元中
XRL A,Z
CPL A
ORL A,R1 MOV F,A SJMP $
;A ← (X) ;A ← (A)∧(Y) ;A内容暂存 ;A ← (Y)
;A ← (Y) (Z)
; A ←()()
;得到输出 ;存输出
单片机原理与应用
× × × × 直接地址单元中的内容和累加器A的内容执行 逻辑或操作。结果存在直接地址单元中
逻辑运算指令

2023年10月17日7时30分
DSP原理及应用
19
逻辑运算指令
(5)测试操作指令
’C54x共有5条测试操作指令。
① BIT
指令格式: BIT Xmem,BITC
操 作 数: Xmem——双数据存储操作数
BITC——测试位的位代码, 取值:0~15
指令功能: (Xmem(15-BITC))→TC
功能说明: 将Xmem的指定位复制到TC位。
2023年10月17日7时30分
DSP原理及应用
15
(4)移位操作指令
⑤ 条件移位
指令格式: SFTC src
操作数src:累加器A或B
指令功能: If src=0 Then 1 → TC
Else If src(31)=src(30)
Then src<<1 → src
0 → TC
Else
1 → TC
2023年10月17日7时30分
DSP原理及应用
4
逻辑运算指令
(2)或运算指令 或运算指令共计5条。
指令格式:操作码 源操作数 [,移位数] ,目的操作数
1
OR Smem
,src
2
OR
#lk [,SHFT] ,src[,dst]
3
OR
#lk
16
,src[,dst]
4
OR
src [,SHIFT] [,dst]
2023年10月17日7时30分
DSP原理及应用
14
④ 算术移位 执行过程:
当SHIFT > 0时,进行算术左移 1) src的第(39-SHIET)位复制到进位位C; 2) 40位src左移SHIFT位,结果存入src或dst; 3) 将0置入dst的低SHIFT的各位 0写入dst((SHIFT-1)~0)
基本逻辑指令基础知识讲解

第一节 基本逻辑指令 第二节 编程的规则与技巧 第三节 基本逻辑指令的应用 本章小结
第一节 基本逻辑指令
一、LD、LDI、OUT 指令 二、AND、ANI指令 三、OR、ORI 指令 四、ANB、ORB 指令 五、MPS、MRD、MPP 六、指M令C、MCR 指令 七、SET、RST 指令 八、PLS、PLF 指令 九、NOP、END 指令
母线可以省略; ❖ 线圈可以并联,不能串联连接; ❖ 应尽量避免双线圈输出。
第二节 编程的基本规则与技巧
二、编程的技巧
❖ 并联电路上下位置可调,应将单个触点的支路放下面。
X4 X1 X2
Y0
ORB
不好!
0 LD X4 1 LD X1 2 AND X2 3 ORB 4 OUT Y0
X1 X2 Y0
X4
九、PLF、PLS 指令
❖ 指令的梯形图
X0 PLS M0
M0
SET
Y0
X1
PLF
M1
X0
M1
X1
RST
Y0
M0
M1
Y0
0 LD X0 1 PLS M0 2 LD M0 3 SET Y0 4 LD X1 5 PLF M1 6 LD M1 7 RST Y0
第一节 基本逻辑指令
十、NOP、END 指令
六、MPS、MRD、MPP 指令0 LD X1
❖ 梯形图(一层栈例)
1 MPS 2 LDI X2
MPS
X1
X2 M0
3 AND M0 4 OR X0
Y1
5 ANB
X0
6 OUT Y1
X3
MPP
X4
X5
7 MPP
算术与逻辑运算指令PPT课件

第2页/共45页
算术与逻辑运算指令
次高位进位 • 溢出O:当进行8位或16位数的加法或减法运算时,O = 最高位进位(借位) (借位)
• 49H + 6DH = 0100 1001B + 0110 1101B = 1011 0110B • 最高位(8th)无进位,次高位(7th)有进位 • O=1,有溢出
第9页/共45页
加法、减法与比较指令
• 带进位(借位)加法(减法)指令 • 指令形式:ADC/SBB REG/MEM, REG/MEM/imm • 目的操作数=目的操作数±源操作数±C(进位标志位) • 与ADD/SUB指令形式一致 • 实现位宽大于16位的加法/减法 • BX-AX+DX-CX
ADC
LEA SI, DATA2; 装载DATA2 MOV CX, [SI] MOV DX, [SI+2]
ADD AX, CX;计算BX-AX+DX-
CX|DATA1+DATA2
ADC BX, DX
• STACK SEGMENT • DW 128 DUP(0) • ENDS • CODE SEGMENT
LEA SI, RESULT;存储结果 MOV [SI], AX MOV [SI+2], BX ENDS END 代ST码ART
第8页/共45页
加法、减法与比较指令
• 寄存器加法/减法
• 操作数均为寄存器 • ADD/SUB AX, BX; AX = AX ± BX
• 立即数加法/减法
• 源操作数为立即数 • ADD/SUB AX, 100H • ADD/SUB WORD PTR[DI], 100H • 内存与寄存器加法/减法 • ADD/SUB AX, [DI] • ADD/SUB AX, NUM • ADD/SUB AX, [DI+2]
逻辑运算和移位指令

奇数处理
… EVEN:偶数处理 检测(AL)的最低位是否为0,若为0转EVEN
6
3、OR(Lgical inclusive or )逻辑“或”指令
∧ 格式:OR dset, src;(dset)←(dset) dest: 寄存器、存储器。 (src)
src: 立即数、寄存器、存储器。
执行操作: 进行按位“或”运算 两位操作数中任一位为1(或都为1), 则该位(结果)=1, 否则为0。
19
执行操作:相当于无符号数的×2功能。
SHL/SAL指令操作示意图如下图所示:
dest
CF
0
指令格式举例: SHL AH,1
SAL SI, CL
SAL WORD PTR [BX+5] ,1 SHL BYTE PTR , CL
20
(2)、SHR (Shift logical right )逻辑右移指令
否则:无变化时,OF = 0
CF根据各条指令的规定设置。 SF、ZF、PF,AF无定义。
↕
↕
↕
循环移位指令:SF、ZF、PF、AF不影响。
OF、CF影响情况在指令中讲:
ROL、 RCL影响标志OF、CF情况相同 ;
ROR 、 RCR影响标志OF、CF情况相同 。
18
1、 算逻移位指令( 4条 ) : SHL , SHR, SAL , SAR
dest: 寄存器、存储器。
执行操作:进行“与”运算, 两位中有一位为0(或二位都为0),则结 果 为0,否则为1。
操作类型举例: AND AL, 0FH AND CX, DI AND AND SI, MEM_NAME ALPHA [DI], AX ;寄存器 ∧ 立即数 ; 寄存器 ∧ 寄存器 ; 寄存器 ∧ 存储器 ; 存储器 ∧ 寄存器
逻辑运算类指令

位置位和清零指令
• • • • • CLR C; CY ←0 CLR bit; bit ←0 SETB C; CY ←1 SETB bit; bit ←1 功能:把进位标志位CY和位地址bit中的内容清 0或置1。 • 例:CL • • • • • • • • • • ANL C, bit; C ←C∧( bit) ANL C, /bit; C ←C∧( bit) ORL C, bit; C ←C∨( bit) ORL C, /bit; C ←C∨( bit) CPL C;C ←C CPL bit; bit ← (bit) 说明:除最后一条指令外,都以CY 为目的操作数,“/bit” 表示将位单元bit的内容取反后再运算。 例:已知X、Y、Z为三个位地址,说明下段程序的功能。 MOV C,Y ANL C,/Y ANL C,/X ORL C,Z MOV Z,C MOV Z,C MOV C,X
逻辑运算类指令
• 包括与、或、非、异或、清0及移位等共24条;一般不影响PSW中的标 志位;助记符有:ANL、ORL、XRL、RL、RLC、RR、RRC、CLR和 CPL共9种。 • 一、逻辑与指令 – ANL A,Rn ;A←(A)∧( Rn) – ANL A,direct;A←(A)∧(direct) – ANL A,@Ri ;A←(A)∧(( R)) – ANL A,#data;A←(A)∧data – ANL direct,A; direct ←(direct)∧(A) – ANL direct, #data ; direct ←(direct)∧data – 功能(1)前4条是A的内容与源操作数所指出的内容进行按位逻辑 与运算其结果仍送回A中,仅影响PSW中的P标志位;(2)后两条 指令是将直接地址direct单元中的内容和A或立即数按位进行逻辑与 运算,其结果仍送回direct单元中。 – 作用:用于对某些位清“0”,其它位不变。(例3-27)
3-06 逻辑操作类指令

ORL A,@Ri ;(A)∨((Ri))→A,i=0,1
ORL direct,A
;(direct)∨(A)→direct
ORL direct,#data ;(direct)∨#data→direct
是在所指定的变量之间执行位的“逻辑或”操作,结果存到目的 变量寄存器或存储器中。
8
逻辑操作类指令
9.逻辑或指令 【例】 (P1)=05H,(A)=33H,执行指令 ORL P1,A 运算式为
;(A)∧(Rn)→A,n=0~7 ;(A)∧(direct)→A
A,#data ;(A)∧#data→A
A,@Ri
;(A)∧((Ri))→A,i=0~1
direct,A
;(direct)∧(A)→direct
direct,#data ;(direct)∧#data→direct
是在指定的变量之间以位为基础进行“逻辑与”操作,结果存放到目的 变量所在的寄存器或存储器中。
结果:(P1)=35H。
9
逻辑操作类指令
10.逻辑异或指令
XRL
A,Rn
;(A)⊕(Rn)→A,n=0~7
XRL
A,direct
;(A)⊕(direct)→A
XRL
A,@Ri
;(A)⊕((Ri))→A ,i=0,1
XRL
A,#data
;(A)⊕#data→A
XRL
direct,A
;(direct)⊕(A)→direct
不影响标志位。如下图所示。
4.带进位左环移指令
RLC
A
将累加器A的内容和进位标志位Cy一起向左环移一位如下图所示。
3
逻辑操作类指令
5.右环移指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教学方法:讲授法
教学时数:2学时
教学目的:
1、了解控制转移类指令的作用
2、掌握无条件转移指令的应用
3、掌握有条件转移指令的用法
教学重点:
无条件转移指令的应用
教学难点:
转移地址的确定
复习:111条指令,共分几大类?数据传送类指令又分成多少类?
§3-4 逻辑操作类指令
共分两大类:单字节逻辑操作,双字节逻辑操作,共24条。
一、单字节逻辑操作指令
CLR A ;(A)0
CPL A A中8位按位求反。
循环左移、右移指令:
RL A
RLC A
RR A
RRC A
注:左移一位相当于乘2;右移一位相当于除2。
二、双字节逻辑操作指令
“与操作”:
ANL A,Rn ;(A)(A)∧(Rn),以下类同。
ANL A,direct
ANL A,@Ri
ANL A,#data
ANL direct,A
ANL direct,#data
例1、(P1)= 35H,使其高4位输出0,低4位不变。
解;ANL P1,#0FH
此做法称为“屏蔽”位。
“或操作”:
ORL A,Rn ;(A)
(A)∨(Rn),以下类同。
ORL A,direct
ORL A,@Ri
ORL A,#data
ORL direct,A
ORL direct,#data
例2、将A中的低3位送入P1中,并且保持P1中高5位不变。
ANL A,#07H
ANL P1,#0F8H
ORL P1,A ;(P1)= P17P16P15P14P13A2A1A0
这称为“数位组合”。
“异或操作”:
XRL A,Rn ;(A )(A)⊕(Rn),以下类同。
XRL A,direct
XRL A,@Ri
XRL A,#data
XRL direct,A
XRL direct,#data
例3、设(P1)= 0B4H = 10110100B,执行:
XRL P1,#00110001B
结果按# 0 0 1 1 0 0 0 1 取反,即:
(P1)= 1 0 0 0 0 1 0 1 B = 85H
这称为“指定位取反”。
在上述ANL、ORL、XRL操作中,用于端口操作时,无论P0 ~ P3是第一,还是第二操作数,都遵循“读—修改—写”端口锁存器的操作。
小结:
1、逻辑操作分为哪两类操作?
2、循环移位指令每执行一次,移几位?
3、ANL、ORL、XRL指令有哪些使用技巧?版书设计。