初中教育第4章-80C51单片机指令系统_第1页
初中教育第4章-80C51单片机指令系统_第2页
初中教育第4章-80C51单片机指令系统_第3页
初中教育第4章-80C51单片机指令系统_第4页
初中教育第4章-80C51单片机指令系统_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章80C51单片机指令系统4.1单片机指令系统概述4.280C51单片机指令寻址方式4.380C51单片机指令分类介绍2/14/20251第4章80C51单片机指令系统4.1

单片机指令系统概述

第4章80C51单片机指令系统2/14/20252第4章80C51单片机指令系统4.1.1

指令概述指令:是CPU根据人们的意图来执行某种操作的命令。指令系统:是计算机所能够执行的全部指令的集合。程序:是按人们的要求所编制的指令操作序列。程序设计语言:是编写程序的某种规则。

三类编程语言:机器语言、汇编语言、高级语言2/14/20253第4章80C51单片机指令系统机器语言:用二进制编码表示每条指令,是计算机能直接识别和执行的语言。汇编语言:是用助记符、符号和数字等来表示指令的程序设计语言。它与机器语言指令是一一对应的。本章主要介绍80C51单片机的汇编语言指令系统。2/14/20254第4章80C51单片机指令系统4.1.2

指令格式和指令的表示形式

80C51汇编语言指令格式[标号:]操作码[目的操作数][,源操作数][;注释]例如:标号字段:操作码操作数;注释字段START:MOVA,#00H;0→AMOVR1,#10;10→R1MOVR2,#00000011B;3→R2LOOP:ADDA,R2;(A)+(R2)→ADJNZR1,LOOP

;R1内容减1不为零,则跳转到

;LOOP一行,循环NOPHERE:SJMPHERE2/14/20255第4章80C51单片机指令系统4.1.3

指令中的常用符号1.Rn(n=0~7)当前选中的工作寄存器R0~R72.Ri(i=0,1)当前选中的、作地址指针的寄存器R0、R13.#data8位立即数4.#data1616位立即数如:MOVDPTR,#data165.direct8位片内RAM单元(包括SFR)的直接地址如:MOVdirect,#data;#datadirect6.addr11

11位目的地址,用于ACALL和AJMP指令中7.addr16

16位目的地址,用于LCALL和LJMP指令中2/14/20256第4章80C51单片机指令系统8.rel

补码形式的8位地址偏移量9.bit

片内RAM或SFR的直接寻址的位地址10.@

间接地址方式中,表示间址寄存器的符号11./

对位取反操作如:ANLC,/P1.212.(×)指“×”中的内容,其内容是数据;×是地址13.((×))由“×”间接寻址单元中的内容,×中的内容“(×)”是地址如:设58H单元的数据是36H,R0的内容是58HINC58H;(58H)+158HDEC@R0;((R0))-1

(R0)14.

示将箭头左边的内容传送到箭头右边的单元2/14/20257第4章80C51单片机指令系统4.1.4

指令的字节数和指令周期汇编语言指令对应的二进制代码格式:单字节指令双字节指令三字节指令单字节指令1、指令码中隐含着对某一种寄存器的操作如:指令“INCDPTR”的指令代码格式为:

A3H=101000112、由指令中的rrr三位的不同编码指定某一寄存器如:指令“MOVA,Rn”的指令代码格式为:

11101rrr2/14/20258第4章80C51单片机指令系统双字节指令用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。格式为:操作码立即数或地址三字节指令一个字节操作码,两个字节操作数。格式为:操作码立即数或地址立即数或地址2/14/20259第4章80C51单片机指令系统4.280C51单片机指令寻址方式第4章80C51单片机指令系统2/14/202510第4章80C51单片机指令系统寻址方式概述寻址方式:就是指令中找到操作数或操作数地址的方式。

80C51单片机有七种寻址方式:

1、立即寻址

2、直接寻址

3、寄存器寻址

4、寄存器间接寻址

5、变址寻址

6、相对寻址

7、位寻址2/14/202511第4章80C51单片机指令系统4.2.1立即寻址操作数在指令中,在操作码后面。用“#”表示。操作数可以是8位的,也可以是16位的。例如:

MOVA,3AH;(3AH)

AMOVA,#3AH;3AHAMOV DPTR,#23C8H;23C8HDPTR

ADDA,#0D4H;(A)+0D4HA2/14/202512第4章80C51单片机指令系统4.2.2

直接寻址直接寻址:在指令中直接给出操作数所在存储单元的地址。指令中操作数部分是操作数所在地址。直接寻址方式可访问片内RAM的128个单元以及所有的SFR。对于SFR,既可以使用它们的地址,也可以使用它们的名字。例如:

MOVA,3AH;(3A)→AMOVA,P1;(P1口)→A或:MOVA,90H;90H是P1口的地址2/14/202513第4章80C51单片机指令系统4.2.3

寄存器寻址

操作数在某一个寄存器中。所用的寄存器可以是:R0~R7、A、B、DPTR等。例如:

MOVA,R0;(R0)

ADECB;(B)-1BADDA,R1;(A)+(R1)

AINCDPTR;(DPTR)+1DPTR2/14/202514第4章80C51单片机指令系统4.2.4寄存器间接寻址指令中寄存器中的内容给出的是操作数的地址。80C51规定:R0、R1和DPTR可以作为间接寻址寄存器。1.R0、R1间址访问片内RAM的低128B或片外RAM的低256B空间如:设(R0)=65H,(65H)=47HMOVA,@R0;(65H)A,A中的值是47HMOV@R0,#3AH;3AH65HMOVXA,@R0;外RAM的(65H)A2/14/202515第4章80C51单片机指令系统例如:将片内RAM30H单元内容56H送A,可执行指令“MOVA,@R0”。其中R0内容为30H。如图所示:30H56HR0A56H数据存储器地址┋┋30H①②以指令中所指定的R0内容(30H)为指针将片内RAM30H单元内容56H送A2/14/202516第4章80C51单片机指令系统2、DPTR间址访问片外RAM的64KB空间

如:设(DPTR)=2000HMOVX@DPTR,A;A

外RAM的2000H单元

MOVXA,@DPTR;外RAM的2000H单元

A2/14/202517第4章80C51单片机指令系统4.2.5

变址寻址变址寻址:以某个寄存器的内容为基地址,在这个基地址的基础上加上地址偏移量形成真正的操作数地址。80C51中采用DPTR或PC为变址寄存器,A的内容为地址偏移量。变址寻址只能访问程序存储器,访问范围64KB。2/14/202518第4章80C51单片机指令系统例如:MOVCA,@A+DPTR;((A)+(DPTR))→A如图所示56H2020HROMDPTRA执行前A执行后2000H20H56H+①②DPTR内容与A的内容之和为程序存储器地址程序存储器内容送A2/14/202519第4章80C51单片机指令系统4.2.6

相对寻址

相对寻址:是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。相对寻址只出现在相对转移指令中。当前的PC值是指执行完相对指令后的PC值;相对转移指令操作码所在地址称为源地址;转移后的地址称为目的地址。目的地址=源地址+相对转移指令字节数+relrel为补码表示的有符号数。2/14/202520第4章80C51单片机指令系统例如:SJMP54H;PC←PC+2+54H2/14/202521第4章80C51单片机指令系统4.2.7

位寻址位寻址:采用位寻址方式的指令的操作数是8位二进制数中的某一位,指令中给出的是位地址。位地址在指令中用bit表示。例如:CLRbit

MOVACC.0,11H;ACC.0←(11H)

位地址的两种表示方法:直接使用位地址,如D3H;直接用寄存器名字加位数,如PSW.3。位寻址区域:

片内RAM的20H-2FH的16个单元中的128位;字节地址能被8整除的SFR。2/14/202522第4章80C51单片机指令系统操作数寻址方式和有关空间2/14/202523第4章80C51单片机指令系统4.380C51单片机指令分类介绍第4章80C51单片机指令系统2/14/202524第4章80C51单片机指令系统

指令系统概述(共111条指令)

按字节数分:单字节指令49条,双字节指令46条,三字节指令16条。

按执行时间分:单机器周期指令64条,双周期指令45条,四周期指令2条(乘、除指令)

按功能分:

MCS-51指令系统分为五大类:

数据传送指令(29条)算术运算指令(24条)逻辑运算及位移指令(24条)

控制转移指令(17条)位操作或布尔操作(17条)2/14/202525第4章80C51单片机指令系统外部RAM外部ROM累加器Adirect@RiRn#data数据传送类指令的传送关系图4.3.1

数据传送指令不允许的操有:@Ri@Ri

RnRn@RiRn2/14/202526第4章80C51单片机指令系统1.以A为目的操作数的指令(4条)MOVA,Rn

;(Rn)

AMOVA,direct

;(direct)

AMOVA,@Ri

;((Ri))

AMOVA,#data

;dataA如:MOVA,R2MOVA,30HMOVA,@R0MOVA,#36H内部RAM数据传送指令组

2/14/202527第4章80C51单片机指令系统2.以Rn为目的操作数的指令(3条)MOVRn

,A

;(Rn)

Rn

MOVRn

,direct

;(direct)

Rn

MOVRn

,#data

;data

Rn

如:MOVR0,AMOVR3,30HMOVR7,#36HMOVR1,#30MOVR6,#01101100B2/14/202528第4章80C51单片机指令系统

3.以直接地址为目的操作数的指令(5条)MOVdirect,A

;(A)

directMOVdirect,Rn

;(Rn)

directMOVdirect,direct

;(源direct)

目的directMOVdirect,@Ri

;((Ri))

directMOVdirect,#data

;data

direct如:MOV30H,AMOVP1,R2MOV38H,60HMOVTL0,@R1MOV58H,#36H2/14/202529第4章80C51单片机指令系统

4.以间接地址为目的操作数的指令(3条)MOV@Ri,A

;(A)

(Ri)MOV@Ri,direct

;(direct)

(Ri)MOV@Ri,#data

;data

(Ri)如:MOV@R0,AMOV@R1,36HMOV@R0,SBUFMOV@R1,#48MOV@R0,#0D6H2/14/202530第4章80C51单片机指令系统

5.十六位数据传送指令(1条)MOVDPTR,#data16

;dataHDPH,dataLDPL如:MOVDPTR,#2368H

MOVDPTR,#353266.查表指令(2条)MOVCA,@A+DPTR

;((A)+(DPTR))A

一般DPTR放表的首地址,A放所查数据在表中的偏移;查表范围为64KB空间,称为远程查表。MOVCA,@A+PC

;((A)+(PC))

A

PC的值为下条指令的地址,A放所查数据相对PC值的偏移;查表范围为最大为256B空间,称为近程查表。2/14/202531第4章80C51单片机指令系统MOVR0,#70H;(R0)=70HMOVA,@R0;(A)=60HMOVR1,A;(R1)=60HMOVA,@R1;(A)=30HMOV@R0,P1;(70H)=7BHMOV60H,#40H;(60H)=40H例4.1

若(70H)=60H,(60H)=30H,P1口为输入口(当前状态为7BH),执行下面程序后各有关存储器单元、寄存器及端口的内容是多少?执行结果为:(70H)=7BH,(60H)=40H,(A)=30H,(R0)=70H,(R1)=60H。2/14/202532第4章80C51单片机指令系统

7.累加器A与片外RAM的数据传送指令(4条)MOVXA,@Ri

;((Ri))A,且使/RD=0MOVXA,@DPTR

;((DPTR))A,且使/RD=0MOVX@Ri,A

;(A)

(Ri),且使/WR=0MOVX@DPTR,A

;(A)

(DPTR)

,且使/WR=0说明:第2、4两条指令以DPTR为片外RAM16位地址指针,寻址范围为64KB空间;第1、3两条指令以R0或R1作低8位地址指针,由P0口送出,寻址范围为256B空间(P2口仍可作通用I/O口)。2/14/202533第4章80C51单片机指令系统例4.2试编写一程序段,实现将内部RAM

中30H单元中的内容传送到外部RAM3000H单元中。

解:MOV

A,30HMOV

DPTR,#3000H

MOVX

@DPTR,A

2/14/202534第4章80C51单片机指令系统

8.堆栈操作指令(2条)PUSHdirect;先(SP)+1SP,后(direct)(SP)POPdirect

;先((SP))direct,后(SP)-1SP如:PUSH0E0H;实际是(A)(SP)

POP05H;实际是(

(SP))

R5注意:其操作数为直接地址,不能用寄存器名。2/14/202535第4章80C51单片机指令系统例4.5设(SP)=30H,(DPTR)=0123H,执行

执行下列程序后各单元中的内容。PUSH

DPLPUSH

DPH

执行结果:(31H)=23H

(32H)=01H2/14/202536第4章80C51单片机指令系统例4.6设(SP)=32H,(32H)=01H,(31H)=23H,执行下列程序后各单元中的内容。POP

DPHPOP

DPL说明:(1)PUSH与POP操作过程刚好相反;(2)进、出栈规则:先进后出,后进先出。应注意指令书写先后顺序;(3)可用于“保护现场,恢复现场”。

执行结果:(DPTR)=0123H(SP)=30H2/14/202537第4章80C51单片机指令系统

9.交换指令(5条)

(1)字节交换指令XCHA,Rn

;(A)(Rn)XCHA,direct;(A)(direct)XCHA,@Ri

;(A)((Ri))(2)半字节交换指令二低半字节交换指令XCHDA,@Ri

;(A0~3)((Ri)0~3

)如:设(A)=36H,(R1)=65H,(65H)=42HXCHDA,@R1;执行结果:(A)=32H,(65H)=46H2/14/202538第4章80C51单片机指令系统累加器A高、低半字节交换指令SWAPA;(A0~3)(A4~7

)如:设(A)=36HSWAPA;(A)=63H2/14/202539第4章80C51单片机指令系统小结借助英文缩写记忆指令功能例如:MOV是MOVE(传送)的缩写,指令的通用格式是:

MOV〈目的操作数〉,〈源操作数〉非法指令不能用来编程需注意,以下指令是非法指令:

MOV

Rn,Rn

MOV

@Ri,@RiMOV

Rn,@Ri

MOV

#data,A

2/14/202540第4章80C51单片机指令系统

4.3.2算术运算指令

包括加、减、乘、除运算;第一操作数一般为A;一般影响标志位CY、AC、OV和P。共24条指令,分成七个小类。1.不带进位加法指令(4条)ADDA,Rn

;(A)+(Rn)

AADDA,direct

;(A)+(direct)

AADDA,@Ri

;(A)+((Ri))

AADDA,#data

;(A)+#dataA2/14/202541第4章80C51单片机指令系统加法指令对PSW的影响

①进位标志位CY:若位7有进位输出,则CY置1,反之,CY清0。②辅助进位标志位AC:若位3向位4有进位输出,则

AC置1,反之,AC清0。③溢出标志位OV:若位7有进位输出而位6没有,或者位6有进位输出而位7没有,则OV置1,否则清0。④奇偶标志位P:相加后,A中有奇数个1,则P置1,否则清0。无符号数相加时:若CY=1,说明有溢出(其值>255)。带符号数相加时:若OV=1,说明有溢出。2/14/202542第4章80C51单片机指令系统例4.7若(A)=19H,(R0)=65H,执行ADDA,R0执行后00011001+0110010101111110(A)=7EH,(CY)=0,(AC)=0,(OV)=0,(P)=02/14/202543第4章80C51单片机指令系统

2.带进位加法指令(4条)ADDCA,Rn

;(A)+(Rn)+CYAADDCA,direct;(A)+(direct)+CYAADDCA,@Ri

;(A)+((Ri))+CYAADDCA,#data;(A)+#data+CYA

3.带借位减法指令(4条)SUBBA,Rn

;(A)-CY-(Rn)

ASUBBA,direct;(A)-CY-(direct)

ASUBBA,@Ri

;(A)-CY-((Ri))

ASUBBA,#data;(A)-CY-#dataA2/14/202544第4章80C51单片机指令系统两数相减,对PSW标志位的影响进位标志位CY:若位7有借位,则CY置1,反之,CY清0。辅助进位标志位AC:若位3向位4有借位,则AC置1,反之,AC清0。溢出标志位OV:若位7有借位而位6没有借位,或者位6有借位而位7没有借位,则OV置1,否则清0。奇偶标志位P:相减后,A中有奇数个1,则P置1,否则清0。2/14/202545第4章80C51单片机指令系统

5.加1指令(5条)INCA;(A)+1AINCRn

;(Rn)+1

Rn

INCdirect;(direct)+1

direct

INC@Ri

;((Ri))+1

(Ri)INCDPTR;(DPTR)+1DPTR说明:此类指令不影响标志CY、AC和OV2/14/202546第4章80C51单片机指令系统

6.减1指令(4条)DECA;(A)-1ADECRn;(Rn)-1

Rn

DECdirect;(direct)-1

direct

DEC@Ri;((Ri))-1

(Ri)说明:此类指令不影响标志CY、AC和OV

2/14/202547第4章80C51单片机指令系统例4.9内部RAM中30H和31H单元分别存放两个加数,相加结果存放在32H单元中,试编写程序。MOVR0,#30H;设置数据指针MOVA,@R0;取第一个加数INCR0;使数据指针加1ADDA,@R0;两数相加INCR0;使数据指针加1MOV@R0,A;存结果2/14/202548第4章80C51单片机指令系统

4.乘除法指令(2条)乘法指令

MULAB;(A)×(B)

B15~8,A7~0

说明:(1)为无符号乘法;(2)若结果的B≠0,则OV=1,若B=0,则OV=0;CY=0。除法指令

DIVAB;(A)/(B)的商

A,余数B

说明:(1)为无符号除法;(2)若除数B=0,则OV=1,若B≠0,则OV=0;CY=0。2/14/202549第4章80C51单片机指令系统

7.十进制数调整指令(1条)DAA;调整累加器内容为BCD码(压缩的)说明:(1)此指令跟在ADD或ADDC指令之后,将A中的和调整为BCD码,并且ADD或ADDC的两个操作数是BCD码;(2)调整方法:若(A0~3)>9或AC=1,则(A0~3)+6(A0~3);若(A4~7)>9或CY=1,则(A4~7)+6(A4~7);(3)对标志的影响:若结果A>99,则CY=1;不影响

OV。2/14/202550第4章80C51单片机指令系统抓住各类指令的相似性,比较学习注意指令执行时对程序状态字PSW的影响注意使用指令的限制条件小结2/14/202551第4章80C51单片机指令系统

4.3.3

逻辑操作指令

包括与、或、异或、清除、求反、移位等操作。这类指令一般不影响标志位CY、AC和OV,共24条。

1.累加器A清0与取反指令(2条)(1)累加器A清0指令CLRA

;0A

说明:只影响标志位P。(2)累加器A取反指令(按位取反)CPLA

;(/A)

A,相当于0FFH-AA

说明:不影响标志位。如:(A)=56HCPLA;结果为0A9H2/14/202552第4章80C51单片机指令系统

2.移位指令(4条)1、累加器A循环左移RLA;2、累加器A循环右移RRA;3、累加器A带进位位循环左移RLCA;4、累加器A带进位位循环右移RRCA;

说明:(1)各条指令每次只移动一位;(2)左移一位相当于乘以2;右移一位相当于除以2;(3)带进位位移动的影响标志位CY和P。2/14/202553第4章80C51单片机指令系统

3.逻辑“与”指令(6条)ANLA,Rn

;(A)∧(Rn)

AANLA,direct

;(A)∧(direct)

AANLA,@Ri

;(A)∧((Ri))

AANLA,#data

;(A)∧#dataAANLdirect,A

;(direct)∧(A)

directANLdirect,#data

(direct)∧#data

direct说明:目的操作数只能是A或者direct;前4条指令仅影响标志位P;后两条不影响标志位;逻辑“与”运算主要起屏蔽作用,可以把不需要的位和“0”相与,其余位和“1”相与。2/14/202554第4章80C51单片机指令系统

4.逻辑“或”指令(6条)ORLA,Rn

;(A)∨(Rn)

AORLA,direct

;(A)∨(direct)

AORLA,@Ri

;(A)∨((Ri))

AORLA,#data

;(A)∨#dataAORLdirect,A

;(

direct)∨(A)

directORLdirect,#data

;(

direct)∨#data

direct

说明:(1)目的操作数只能是A或者direct;(2)前4条指令仅影响标志位P;后两条不影响标志位。(3)或运算常用于使某些位置1,常常起“合并作用”。2/14/202555第4章80C51单片机指令系统例4.10

已知累加器A中的数据为83H,R1中的数据为7BH,试编写程序将A的高4位和R1的低4位合并成一个字节存放在R0中。ANLA,#0F0H;屏蔽A的低4位,(A)=80HMOVR0,A;A的内容暂存于R0中MOVA,R1;将R1中的数据传送到A中ANLA,#0FH;屏蔽R1的高4位,(A)=0BHORLA,R0;合并MOVR0,A;存结果2/14/202556第4章80C51单片机指令系统

5.逻辑“异或”指令(6条)XRLA,Rn

;(A)∨(Rn)

AXRLA,direct

;(A)∨(direct)

AXRLA,@Ri

;(A)∨((Ri))

AXRLA,#data

;(A)∨#dataAXRLdirect,A

;(

direct)∨(A)

directXRLdirect,#data

;(

direct)∨#data

direct说明:(1)目的操作数只能是A或者direct;(2)前4条指令仅影响标志位P;后两条不影响标志位。(3)用1异或使对应位取反,用0异或使对应位不变,异或运算常用于使某些位取反。用数据0FFH异或一个寄存器的值,就能实现对该寄存器取反的功能。

2/14/202557第4章80C51单片机指令系统

小结逻辑操作类指令操作图2/14/202558第4章80C51单片机指令系统

4.3.4位操作类指令

包括位变量传送、逻辑运算、控制转移等指令,共17条,分成4个小类。只有部分指令影响CY标志。

位地址的表示方法:直接用位地址如:D4H

用特殊功能寄存器名加位数如:PSW.4

用位名称

如:RS1

用bit定义的有名字的位地址如:SUBbitRS1,MMbit02H2/14/202559第4章80C51单片机指令系统

1.位数据传送指令(2条)MOVC,bit;(bit)

CMOVbit,C;(bit)

C如:MOVC,TR0MOV08H,C例4.12将10H位的内容传送至5AHMOV20H,C;暂存CY内容MOVC,10H;10H位送CYMOV5AH,C;CY内容送5AHMOVC,20H;回复CY内容2/14/202560第4章80C51单片机指令系统

2.位修正指令(6条)(1)位清0指令CLRC;0CCLRbit;0

(bit)如:CLRTR0(2)位置1指令SETBC;1CSRTBbit;1

(bit)如:SETBTR0SETB06H(3)位取反指令CPLC;(/C)

CCPLbit;(/bit)

bit如:CPLTR0CPLEA2/14/202561第4章80C51单片机指令系统

3.位逻辑运算指令(4条)

(1)位逻辑“与”指令ANLC,bit

;(C)∧(bit)

CANLC,/bit

;(C)∧(/bit)

C如:ANLC,P1.0ANLC,/P1.2(2)位逻辑“或”指令ORLC,bit

;(C)∨(bit)

CORLC,/bit

;(C)∨(/bit)

C如:ORLC,P1.0ORLC,/P1.22/14/202562第4章80C51单片机指令系统例4.13编程求逻辑方程

P1.7=P2.7∧(P2.0∨P2.1)∨/P2.3MOVC,P2.0;CY←(P2.0)ORLC,P2.1;CY←(P2.0)∨(P2.1)ANLC,P2.7;CY←P2.7∧(P2.0∨P2.1)ORLC,/P2.3;CY←P2.7∧(P2.0∨P2.1)∨/P2.3MOVP1.7,C;结果存于P1.72/14/202563第4章80C51单片机指令系统

4.位条件转移类指令(5条)

(1)判断C值转移指令JCrel

;(PC)+2PC

;(C)=1,则(PC)+relPC

;(C)=0,则顺序向下执行JNCrel

;(PC)+2PC

;(C)=0,则(PC)+relPC

;(C)=1,则顺序向下执行如:JCNEXT1JNCFIRST

2/14/202564第4章80C51单片机指令系统

(2)判断位值转移指令JBbit,rel

;(PC)+2PC

;若(bit)=1,则(PC)+relPC

;若(bit)=0,则顺序向下执行JNBbit,rel

;(PC)+2PC

;若(bit)=0,则(PC)+relPC

;若(bit)=1,则顺序向下执行如:JBBA,NEXT1JNBTI,$2/14/202565第4章80C51单片机指令系统

(3)判断位值并清0转移指令JBCbit,rel

;(PC)+2PC

;若(bit)=1,则(PC)+relPC,0bit

;若(bit)=0,则顺序向下执行

2/14/202566第4章80C51单片机指令系统包括无条件转移、条件转移、子程序调用和返回指等,共17条。只有比较转移指令影响标志。1.无条件转移指令(4条)(1)短转移(绝对转移)指令AJMPaddr11;先(PC)+2PC

;addr11PC10~0,(PC15~11)不变

(PC)4.3.5控制程序转移类指令说明:该指令执行前PC值为下一条指令的首地址;转移范围:含有下一条指令首地址的同一个2KB范围,即高5位地址相同;2/14/202567第4章80C51单片机指令系统例4.14在地址PC=1FFEH处有一条绝对转移指令AJMP16BH,则程序转移的目的地址是多少?(PC)=1FFEH(PC)+2=2000H(00100000

00000000H)

11位地址送PC的低11位,即16BH(00101101011H)替换PC的低11位,则转移的目的地址为0010000101101011H,即为216BH2/14/202568第4章80C51单片机指令系统

(2)长转移指令LJMPaddr16;addr16PC说明:转移范围:64KB全程序空间任何单元。如:LJMPNEXT(PC)2/14/202569第4章80C51单片机指令系统

(3)相对转移(短转移)指令SJMPrel

;先(PC)+2PC,后(PC)+relPC说明:该指令执行前PC值为下一条指令的首地址;转移范围:-128~+127;对应rel值为:00H~7FH(0~+127)

80H~FFH(-128~-1)

LOOP:SJMPLOOPLOOP:SJMP$

这两条语句实现程序原地踏步的功能,常用在程序等待时,用“$”代表PC的当前值。2/14/202570第4章80C51单片机指令系统256B02/14/202571第4章80C51单片机指令系统例4.15

376BHSJMP66H

66H是正数,实现正向转移,目的地址=376BH+0002H+0066H=37D3H

376BHSJMPE7HE7H是负数,实现反向转移,E7H是负数19的补码,目的地址=376BH+0002H-19H=3754H2/14/202572第4章80C51单片机指令系统

(4)间接转移指令JMP@A+DPTR;(A)+(DPTR)

PC说明:具有多分枝转移功能,即散转功能,又叫散转指令;转移范围:是以DPTR为首地址的256B。2/14/202573第4章80C51单片机指令系统2.条件转移指令(8条)

均为相对寻址方式。

(1)累加器A为零(非零)转移指令JZrel

;当A=0时,(PC)+rel

(PC)转移;

;当A≠0时,顺序执行。JNZrel

;当A≠0时,(PC)+rel

(PC)转移;

;当A=0时,顺序执行。2/14/202574第4章80C51单片机指令系统

(2)比较转移指令(4条)

CJNE(目的操作数),(源操作数),relCJNEA,direct,rel

;若A>(direct),则(PC)+relPC,且0CY;

;若A<(direct),则(PC)+relPC,且1CY;

;若A=(direct),则顺序执行,且0CY。CJNEA,#data,rel

;若A>#data,则(PC)+relPC,且0CY;

;若A<#data,则(PC)+relPC,且1CY;

;若A=#data,则顺序执行,且0CY。2/14/202575第4章80C51单片机指令系统CJNERn,#data,rel

;若(Rn)>#data,则(PC)+relPC,且0CY;

;若(Rn)<#data,则(PC)+relPC,且1CY;

;若(Rn)=#data,则顺序执行,且0CY。CJNE@Ri,#data,rel

;若((Ri))>#data,则(PC)+relPC,且0CY;

;若((Ri))<#data,则(PC)+relPC,且1CY;

;若((Ri))=#data,则顺序执行,且0CY。2/14/202576第4章80C51单片机指令系统

说明:(1)PC值为下一条指令第一个字节的地址,为本条指令PC值加3,即(PC)+3(PC);(2)×CY,实际是A-(direct)操作的借位值送

CY;

CY可以作为进一步操作的依据。如:CJNEA,38H,FIRSTCJNEA,#56H,LOOP1CJNER2,#32,LOOP2CJNE@R1,#48H,LOOP32/14/202577第4章80C51单片机指令系统例4.16判断累加器A与20H单元内容(无符号数)的大小,若(A)=(20H)则程序转向LOOP1;若(A)>(20H)则程序转向LOOP2,若(A)<(20H)则程序转向LOOP3。CJNEA,20H,NEXT;若(A)≠(20H),转向NEXTSJMPLOOP1;若(A)=(20H),转向LOOP1NEXT:JNCLOOP2;若(A)>(20H),

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论