第九讲 逻辑操作类指令
教学方法:讲授法
教学时数: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指令有哪些使用技巧?版书设计。
逻辑运算指令
第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.右环移指令
第九节 逻辑运算类指令和位操作指令
9.1 逻辑运算指令 9.1.1 逻辑与运算指令
逻辑与运算指令举例
例:设(A)=0C3H(11000011B),(R0) =0C3H(11000011B),( ) ),(R0 =0AAH(10101010B),执行指令: =0AAH(10101010B),执行指令: ),执行指令 ANL A,R0 (逻辑与运算用符号∧表示) A, 逻辑与运算用符号∧表示) (A)=1执行结果:( :(A =82H(10000010B) 执行结果:(A)=82H(10000010B) 指令ANL常用来屏蔽某些不用位 常用来屏蔽某些不用位, 例:指令ANL常用来屏蔽某些不用位,方法是将该位 0”相 用“0”相“与”,这种操作的目的操作数常用直接地 址寻址,而源操作数则用立即数。 址寻址,而源操作数则用立即数。如 ANL P1,#01100110 B P1, 执行结果: P1口锁存器的第 口锁存器的第0 执行结果:将P1口锁存器的第0、3、4、7位的内容 屏蔽掉。不管P1口中的这些位原值为何值 口中的这些位原值为何值, 屏蔽掉。不管P1口中的这些位原值为何值,经与操作 后均屏蔽为0 而其它位保持原值不变。 后均屏蔽为0,而其它位保持原值不变。
9.1.2 逻辑或运算指令
ORL A,Rn A, ORL A,direct A, ORL A,@Ri A, ORL A,#data A, ORL direct,A direct, ORL direct,#data direct, 和前面逻辑与指令类似,这里前4 和前面逻辑与指令类似,这里前4条指令的操作结果 存放在A 后两条指令将结果存放在直接地址中。 存放在A中,后两条指令将结果存放在直接地址中。
第九节 逻辑运算类指令和 位操作指令
ANL A,Rn A, ANL A,direct A, ANL A,@Ri A, ANL A,#data A, 上述指令的目的操作数为累加器A的内容, 上述指令的目的操作数为累加器A的内容,源操作数 有四种寻址方式:寄存器Rn 直接和间接寻址、 Rn、 有四种寻址方式:寄存器Rn、直接和间接寻址、立 即数。两操作数进行“ 运算后, 即数。两操作数进行“与”运算后,结果保留在累加 响任何标志位。 器A中,不影响任何标志位。 ANL direct,A direct, ANL direct,#data direct, 上述指令的目的操作数为直接地址寻址单元内容, 上述指令的目的操作数为直接地址寻址单元内容,源 操作数有两种寻址方式: 和立即数。 操作数有两种寻址方式:累加器A和立即数。运算结 果保留在直接寻址单元中,不影响任何标志位。 果保留在直接寻址单元中,不影响任何标志位。
(周六看)微机09指令6逻辑左右移循环
(1)简单条件转移指令 )
(2)无符号数条件转移指令 )
• 无符号数条件转移指令表
• 【例】比较无符号数大小,将较大的数存放 比较无符号数大小, AX寄存器。 寄存器。 寄存器 • CMP AX, BX ;(AX)-(BX) , ) ) • JNB NEXT ; 若 AX>=BX, 转移到 , NEXT • XCHG AX,BX ;若AX<BX,交换 , , • NEXT:… :
27
SHR指令的执行 指令的执行
• • • SHR指令格式:SHR OPR, CNT 指令格式: 指令格式 功能:逻辑右移CNT位 功能:逻辑右移 位 每右移一位,相当于对无符号数进行除2操作 操作。 每右移一位,相当于对无符号数进行除 操作。
D15 或D7 0 D0 CF
SHR指令的逻辑右移操作示意图
34
[例] 例
• 循环指令举例
ROL BX,CL , ;将 BX中的内容不带进位位循环左移 中规 将 中的内容不带进位位循环左移 中的内容不带进位位循环左移CL中规 定的次数 ROR WORD PTR[SI],1 , ;将物理地址为 将物理地址为DS*16+SI单元的字不带进位循 将物理地址为 单元的字不带进位循 环右移1次 环右移 次
• TEST指令 指令
– 若要检测 中的最低位是否为1,若为 则转 若要检测AL中的最低位是否为 ,若为1则转 中的最低位是否为 否则继续顺序执行。 移,否则继续顺序执行。可用以下二条指令 实现: 实现: TEST AL,01H , JNZ THERE
22
逻辑运算举例-3 逻辑运算举例 • XOR指令 指令
29
[例] 例
• 已知变量 中为一无符号字节数,请用移位 已知变量Y中为一无符号字节数, 中为一无符号字节数 指令完成(Y)*10计算,积放在 中。 计算, 指令完成 计算 积放在AX中
