【教学课件】第2章51系列单片机的指令系统.ppt

上传人:wuy****n92 文档编号:69866730 上传时间:2023-01-10 格式:PPT 页数:64 大小:1.09MB
返回 下载 相关 举报
【教学课件】第2章51系列单片机的指令系统.ppt_第1页
第1页 / 共64页
【教学课件】第2章51系列单片机的指令系统.ppt_第2页
第2页 / 共64页
点击查看更多>>
资源描述

《【教学课件】第2章51系列单片机的指令系统.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第2章51系列单片机的指令系统.ppt(64页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第2章章 51系列单片机的指令系统系列单片机的指令系统 单片机原理及应用单片机原理及应用单片机原理及应用单片机原理及应用第第2章章 51系列单片机的指令系统系列单片机的指令系统 内内 容容 提提 要要寻址方式寻址方式数据数据传送与交换指令传送与交换指令算术运算、逻辑运算指令算术运算、逻辑运算指令控制转移指令控制转移指令位操作指令位操作指令第第2章章 51系列单片机的指令系统系列单片机的指令系统 计算机通过执行程序完成人们指定的任务,程序由一计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为条一条指令构成,能为CPU识别并执行的指令的集合就识别并执行的指令的集合就是该是该CPU

2、的的指令系统指令系统。MCS-51 MCS-51单片机汇编语言指令格式单片机汇编语言指令格式:操作符操作符 目的操作数,源操作数目的操作数,源操作数 操作符指明该指令完成什么操作;操作符指明该指令完成什么操作;操作数是指明该指令的操作对象。操作数是指明该指令的操作对象。目的操作数是存放结果的。目的操作数是存放结果的。指令中操作数提供的方式称为指令中操作数提供的方式称为寻址方式寻址方式。第第2章章 51系列单片机的指令系统系列单片机的指令系统 指令中的常用符号指令中的常用符号Rn:n=(07),表示当前工作寄存器),表示当前工作寄存器R0R7中的一个中的一个Ri:i=(0、1),代表),代表R0

3、和和R1寄存器中的一个,用作间接寻址寄存器寄存器中的一个,用作间接寻址寄存器dir:8 位直接字节地址(片内位直接字节地址(片内 RAM 和和 SFR)#data:8位立即数,即位立即数,即8位常数。可以为位常数。可以为2进制进制(B)、10进制、进制、16进制进制(H)、字符(字符()#data16:表示表示16位立即数,即位立即数,即16位常数,取值范围为位常数,取值范围为#0000H#0FFFFHaddr16:表示表示16位地址位地址 addr11:表示表示11位地址位地址rel:相对偏移量(为一字节补码)用于相对转移指令中相对偏移量(为一字节补码)用于相对转移指令中bit:位地址,在位

4、地址空间中。位地址,在位地址空间中。$:表示当前指令的地址。表示当前指令的地址。第第2章章 51系列单片机的指令系统系列单片机的指令系统 FMCS-51指令系统是一种简单易掌握、效率较高的指令系统。基本指令共111条,其中单字节指令49条,双字节指令45条,三字节指令17条;按照执行时间又分为:1机器周期的指令64条,2机器周期的指令45条,4机器周期的指令2条。第第2章章 51系列单片机的指令系统系列单片机的指令系统 2.1 2.1 寻址方式寻址方式1 1、立即寻址、立即寻址 指令中直接给出操作数的寻址方式。在指令中直接给出操作数的寻址方式。在51系列单片系列单片机的指令系统中,立即数用一个

5、前面加机的指令系统中,立即数用一个前面加“#“号的号的8位位数数(#data,如,如#30H)或或16位数位数(#data16,如,如#2052H)表表示。示。立即寻址中的数,称为立即数。立即寻址中的数,称为立即数。例如指令:例如指令:MOV A,#30H第第2章章 51系列单片机的指令系统系列单片机的指令系统 2 2、直接寻址、直接寻址 指令中操作数直接以单元地址的形式给出。指令中操作数直接以单元地址的形式给出。寻址对象:寻址对象:内部数据存贮器:使用它的地址。内部数据存贮器:使用它的地址。特殊功能寄存器:既可使用它的地址,也可以特殊功能寄存器:既可使用它的地址,也可以 直接使用寄存器名。直

6、接使用寄存器名。该寻址方式是访问该寻址方式是访问SFR的唯一方法。的唯一方法。41H 78H40H 56H41H 78H40H 78H例:例:MOV A,40H ;A=56H 机器码机器码 E540 MOV P0,#45H ;45HP0,P0为直接寻址的为直接寻址的 SFR,其地址为,其地址为 80H,机器码为机器码为758045 MOV 40H,41H;机器码为机器码为854140 内部内部RAM(41H)(40H)(40H)=(41H)=78H 第第2章章 51系列单片机的指令系统系列单片机的指令系统 3 3、寄存器寻址、寄存器寻址 操作数存放在寄存器中。操作数存放在寄存器中。寻址对象:寻

7、址对象:A,B,DPTR,R0R7。B 仅在乘除法指令中为寄存器寻址,在其他指令中为直仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。接寻址。A 可以寄存器寻址又可以直接寻址,直接寻址时写作可以寄存器寻址又可以直接寻址,直接寻址时写作ACC例如例如:MOV A,Rn ;RnA,A、Rn均为寄均为寄 存器寻址,存器寻址,n=07 MUL AB ;A*BBA,A、B为寄为寄 存器寻址,机器码存器寻址,机器码A4第第2章章 51系列单片机的指令系统系列单片机的指令系统 MOV B,R0 ;R0B,R0为寄存器寻为寄存器寻 址,址,B为直接寻址为直接寻址 机器码机器码 88F0,其中,其中 F0

8、为为B的的 字节地址(见表字节地址(见表1-2)PUSH ACC ;A的内容压入堆栈的内容压入堆栈 机器码机器码C0E0 第第2章章 51系列单片机的指令系统系列单片机的指令系统 4 4、寄存器间址、寄存器间址 操作数存放在以寄存器内容为地址的单元中。在寄存操作数存放在以寄存器内容为地址的单元中。在寄存器寻址方式中,寄存器中存放的是操作数,而寄存器间器寻址方式中,寄存器中存放的是操作数,而寄存器间接寻址中,寄存器中存放的是操作数的地址,也就是操接寻址中,寄存器中存放的是操作数的地址,也就是操作数通过寄存器间接得到。在寄存器间接寻址方式中,作数通过寄存器间接得到。在寄存器间接寻址方式中,需要在寄

9、存器前面加需要在寄存器前面加“”,而寄存器只能用,而寄存器只能用R0或或R1。例如:例如:MOV R0,#20H MOV R0,A ;A(20H)地址的内部地址的内部RAM MOVX A,R1 ;外部;外部RAM(地址为(地址为P2 R1)的的 内容内容A MOVX DPTR,A ;A以以DPTR内容为地址的内容为地址的 外部外部RAM 第第2章章 51系列单片机的指令系统系列单片机的指令系统 寻址范围:寻址范围:(1)访问内部)访问内部RAM低低128个单元,其通用形式个单元,其通用形式Ri;(2)对片外数据存储器的)对片外数据存储器的64K字节的间接寻址,只能用字节的间接寻址,只能用DPT

10、R作间接寻址寄存器,其形式为作间接寻址寄存器,其形式为DPTR;(3)片外数据存储器的低)片外数据存储器的低256字节,除可使用字节,除可使用DPTR作为作为间接寻址寄存器外,也可使用间接寻址寄存器外,也可使用R0或或R1作为间址寄存器;作为间址寄存器;(4)堆栈区:堆栈操作指令)堆栈区:堆栈操作指令PUSH、POP,使用堆栈指,使用堆栈指针针SP间址寄存器来进行对堆栈区的间接寻址。间址寄存器来进行对堆栈区的间接寻址。第第2章章 51系列单片机的指令系统系列单片机的指令系统 5 5、变址寻址、变址寻址(又叫(又叫基址寄存器加变址寄存器间址寻址方式基址寄存器加变址寄存器间址寻址方式)用于访问程序

11、存储器中的数据表格,以用于访问程序存储器中的数据表格,以DPTRDPTR或或PCPC寄存器寄存器内容为基地址,以累加器内容为基地址,以累加器A A为变址寄存器,两者相加形成为变址寄存器,两者相加形成1616位地址作为操作数的地址,以达到访问数据表格的目的。位地址作为操作数的地址,以达到访问数据表格的目的。其中累加器其中累加器A A内容是可变的。内容是可变的。例如:例如:MOVC A,A+DPTR MOVC A,A+DPTRF说明:说明:(1 1)只能对程序存储器进行寻址,或者说它是专门针对程序)只能对程序存储器进行寻址,或者说它是专门针对程序存储器的寻址方式,寻址范围存储器的寻址方式,寻址范围

12、64KB64KB;(2 2)本寻址仅有)本寻址仅有3 3条:条:MOVC A,A+DPTRMOVC A,A+DPTR MOVC A,A+PC MOVC A,A+PC JMP A+DPTR JMP A+DPTR第第2章章 51系列单片机的指令系统系列单片机的指令系统 6 6、相对寻址、相对寻址 相对寻址方式是专门为解决程序转移而设置的,为转移指令所采用。相对寻址方式是专门为解决程序转移而设置的,为转移指令所采用。在在MCSMCS5151指令系统中,有多条相对转移指令,这些指令多为指令系统中,有多条相对转移指令,这些指令多为2 2字节指令,字节指令,个别为个别为3 3字节指令。字节指令。在相对寻址

13、的转移指令中,给出了地址偏移量,以在相对寻址的转移指令中,给出了地址偏移量,以relrel表示,即表示,即将程序计数器将程序计数器PCPC的当前值加上指令第二字节给出的偏移量,从而形成转的当前值加上指令第二字节给出的偏移量,从而形成转移的目标地址。移的目标地址。PCPC当前值是执行完该指令后的当前值是执行完该指令后的PCPC值,即转移指令的值,即转移指令的PCPC值值加上它的字节数。故:加上它的字节数。故:目标地址转移指令地址转移指令字节数目标地址转移指令地址转移指令字节数relrel rel rel是是8 8位二进制补码数,范围:位二进制补码数,范围:128128127127。例如:例如:J

14、Z 61HJZ 61H第第2章章 51系列单片机的指令系统系列单片机的指令系统 7 7、位寻址、位寻址 对片内对片内RAM中中20H2FH中的中的128个位地址及个位地址及SFR中的可中的可位寻址的位地址寻址。位寻址的位地址寻址。例如:例如:MOV C,20H;20H位的内容送位的内容送CY标志标志 位,位,C称为位累加器。称为位累加器。MOV A,20H;字节寻址,将内部;字节寻址,将内部 RAM中中20H单元中的单元中的 内容送给累加器内容送给累加器A。以上两条指令均为位寻址,究竟是位寻址还是字节寻址,以上两条指令均为位寻址,究竟是位寻址还是字节寻址,根据两操作数类型一致的原则,由另一个操

15、作数决定。根据两操作数类型一致的原则,由另一个操作数决定。第第2章章 51系列单片机的指令系统系列单片机的指令系统 寻址范围:寻址范围:(1)内部)内部RAM中的位寻址区中的位寻址区 单元单元20H2FH,共,共16个单元,个单元,128个位,位地址个位,位地址00H7FH。对。对128个位的寻址使用直接地址表示。位寻址的位有两种表示:直接个位的寻址使用直接地址表示。位寻址的位有两种表示:直接给出位地址、单元地址加上位数。给出位地址、单元地址加上位数。(2)特殊功能寄存器中的可寻址位)特殊功能寄存器中的可寻址位 11个特殊功能寄存器,实际有个特殊功能寄存器,实际有83个可寻址的位。这些位在指令

16、个可寻址的位。这些位在指令中主要有中主要有4种表示方法种表示方法:直接使用位地址;如直接使用位地址;如PSW位位5的地址的地址0D5H;位名称的表示方法:如位名称的表示方法:如PSW的位的位5是是F0标志位,可使用标志位,可使用F0表示该表示该位;位;单元地址加位数的表示方法:如单元地址加位数的表示方法:如0D0H单元的位单元的位5,表示为,表示为(0D0H).5。特殊功能寄存器符号加位数的表示方法:如:特殊功能寄存器符号加位数的表示方法:如:PSW.5。第第2章章 51系列单片机的指令系统系列单片机的指令系统 2.2 数据传送与交换指令数据传送与交换指令111111条指令条指令,按功能分类,

17、可分为下面,按功能分类,可分为下面5 5大类大类:(1 1)数据传送类)数据传送类(28(28条条)(2 2)算术操作类)算术操作类(24(24条条 (3 3)逻辑运算类)逻辑运算类(25(25条条)(4 4)控制转移类)控制转移类(17(17条条)(5 5)位操作类)位操作类(17(17条条)2.2.1 传送类指令传送类指令使用最频繁的一类指令使用最频繁的一类指令,通用格式:通用格式:MOV MOV ,属属“复制复制”性质,而不是性质,而不是“搬家搬家”数据传送类指令数据传送类指令不影响标志位不影响标志位,Cy,Cy、AcAc和和OVOV,但不包括奇偶标志位,但不包括奇偶标志位P P。第第2

18、章章 51系列单片机的指令系统系列单片机的指令系统 dirRi Rn#dataAMOV A,Rn#data dir RiMOV dir,A RnRi#data dir MOV Rn,MOV Ri,Adir#data1 1、内部、内部RAMRAM、SFRSFR之间的传送之间的传送MOVMOV指令指令A dir#data第第2章章 51系列单片机的指令系统系列单片机的指令系统 例例 R1=20H,(,(20H)=55H,指令指令MOV A,R1执行后,执行后,A=55H。例例 (40H)=30H,指令,指令 MOV R7,40H 执行后,执行后,R7=30H。例例 MOV R7,40H 执行后,执

19、行后,R7=40H。n n 例例例例 判断下列指令的正误:判断下列指令的正误:判断下列指令的正误:判断下列指令的正误:MOV 29H,R7 MOV 25H,P1MOV 29H,R7 MOV 25H,P1 MOV 56H,#70H MOV 34H,28H MOV 56H,#70H MOV 34H,28H MOV R3,R7 MOV R3,R7 MOV R3,R7 MOV R3,R7 MOV R3,#D2H MOV#34H,28H MOV R3,#D2H MOV#34H,28H MOV A,#280H MOV P3,P1 MOV A,#280H MOV P3,P1n n编程将编程将编程将编程将R3

20、R3的内容送的内容送的内容送的内容送R1R1。MOV AMOV A,R3R3 MOV R1 MOV R1,A A第第2章章 51系列单片机的指令系统系列单片机的指令系统 A 外部数据外部数据存储器存储器程序程序存储器存储器 Ri,A DPTR,A A,Ri A,DPTRMOVXMOVCA,A+PCA,A+DPTR2 2、外部存储器和、外部存储器和A A累加器之间的传送累加器之间的传送MOVXMOVC第第2章章 51系列单片机的指令系统系列单片机的指令系统 MOVX指令举例指令举例例例:实现片外数据存储器数据传送实现片外数据存储器数据传送(2000H)(2100H)。MOV DPTR,#2000

21、HMOVX A,DPTRMOV DPTR,#2100HMOVX DPTR,A;DPTR=2000H;DPTR=2100H ;A X;(2100H)Xx片外数据存储器不能直接寻址。下列为片外数据存储器不能直接寻址。下列为非法非法指令:指令:MOVX A,2000H MOVX 2100H,2000H 第第2章章 51系列单片机的指令系统系列单片机的指令系统 使用使用P2口和口和8位寄存器位寄存器Ri间址间址:MOV P2,#20H;高位地址;高位地址 MOV R0,#00;低位地址;低位地址 MOVX A,R0;读片外;读片外RAM MOV P2,#21H;改变高位地址;改变高位地址 MOVX R

22、0,A;写片外;写片外RAM第第2章章 51系列单片机的指令系统系列单片机的指令系统 查表指令查表指令MOVC 注:注:只能从程序存储器读取数据到只能从程序存储器读取数据到A累加器。累加器。只能使用变址间接寻址方式只能使用变址间接寻址方式 多用于查常数表程序,直接求取常数表中的函数值多用于查常数表程序,直接求取常数表中的函数值1)DPTR为基址寄存器为基址寄存器MOVC A,A+DPTR;A(A+DPTR)查表范围为查表范围为 64KB 程序存储器任意空间。程序存储器任意空间。2)PC为基址寄存器为基址寄存器MOVC A,A+PC;A(A+PC)常数表只能在查表指令后常数表只能在查表指令后 2

23、56B 范围内。范围内。第第2章章 51系列单片机的指令系统系列单片机的指令系统 例例 查表法求查表法求 Y=X2。设。设 X(0X15)在片内在片内 RAM 20H单元,要单元,要求将查表求求将查表求 Y,存入片内,存入片内 RAM 21H单元单元1)用)用DPTR作基址寄存器作基址寄存器 ORG 0100HSQU:MOV DPTR,#TAB;确定表首地址;确定表首地址 MOV A,20H ;取;取 X MOVC A,A+DPTR;查表求;查表求 Y=X2 MOV 21H,A ;保存;保存Y RET ;子程序结束;子程序结束 ;其它程序段;其它程序段 ORG 0200HORG 0200H ;

24、常数表格首地址;常数表格首地址;常数表格首地址;常数表格首地址TAB:TAB:DB 00 DB 00,0101,0404,0909,225 225;平方表;平方表;平方表;平方表第第2章章 51系列单片机的指令系统系列单片机的指令系统 2)用用PCPC作基址寄存器作基址寄存器 指令地址指令地址 源程序源程序 ORG 0100H;程程序序起起始地址始地址0100H SQU:MOV A,20H;取;取X 0102H ADD A,#3;修正偏移量;修正偏移量0104H MOVC A,A+PC;查表求;查表求Y=X20105H MOV 21H,A;存结果;存结果 0107H RET ;子程序结束;子程

25、序结束0108H TAB:DB 00,01,04;平方表;平方表 010BHDB 09,225 思考题思考题 当当0X2550X255时,如何用查表法编程求时,如何用查表法编程求Y=XY=X2 2第第2章章 51系列单片机的指令系统系列单片机的指令系统 3.3.堆栈操作指令堆栈操作指令例例:设设 A=02,B=56H,执执行行下下列列指指令令序序列列后后,SP=?A=?,B=?SBR:MOV SP,#30HPUSH APUSH BMOV A,#0MOV B,#01POP BPOP ARET;设栈底;设栈底 ;保护现场;保护现场;恢复现场;恢复现场 入栈指令:入栈指令:PUSH dir ;SPS

26、P+1,(SP)(dir)出栈指令:出栈指令:POP dir;(dir)(SP),SPSP-1 SP 02 SP 5602 56SP 02 5602SP SP 堆栈操作示意:堆栈操作示意:第第2章章 51系列单片机的指令系统系列单片机的指令系统 2.2.2 2.2.2 交换指令交换指令 实现片内实现片内RAM区的数据双向传送区的数据双向传送1.字节交换指令字节交换指令 XCH A,Rn;ARn XCH A,Ri;A(Ri)XCH A,n ;A(n)习题习题 将片内将片内RAM 60H单元与单元与 61H单元的数据交换单元的数据交换例例 设设A=29H,(,(2AH)38H 执行指令执行指令 X

27、CH A,2AH 后,后,A=?,(2AH)=?38H29HXCH 60H,61H 对吗?对吗?第第2章章 51系列单片机的指令系统系列单片机的指令系统 2.半字节交换指令半字节交换指令XCHD A,Ri;A03(Ri)03SWAP A;A47A03例例2-4-3:将片内:将片内 RAM 2AH和和 2BH单元中的单元中的 ASCII码转换成压码转换成压缩式缩式 BCD码存入码存入 20H单元单元数字数字 09的的ASCII码码30H39H85H压缩的压缩的BCD码和非压缩的码和非压缩的BCD码见图码见图如如 1823压缩的压缩的BCD码为码为1823H 非压缩的非压缩的BCD码为码为0108

28、0203H非压缩非压缩BCD AA第第2章章 51系列单片机的指令系统系列单片机的指令系统 08例例 将片内将片内RAM 2AH和和 2BH单元中的单元中的ASCII码转换成压缩式码转换成压缩式BCD码存入码存入 20H单元单元MOVAMOVA,#00H#00H;A=00A=00MOVR0MOVR0,#2AH#2AHMOVR1MOVR1,#2BH#2BHXCHDAXCHDA,R0R0SWAPASWAPAXCHDAXCHDA,R1R1XCHXCHA A,20H20H85HR1R0习题:习题:交换片内交换片内RAM 40H单元和单元和 41H单元的低半字节单元的低半字节00;低;低4位交换位交换A

29、=08;A=80HA=80H;低低4位交换位交换;(20H)=85H(20H)=85H3 80 0A3 58 08 5R1R03 03 0第第2章章 51系列单片机的指令系统系列单片机的指令系统 dirRi Rn#dataA dirRi Rn#dataAADDADDCSUBBANLORLXRLA,Rn,Ri#datadir加加进位加进位加借位减借位减与与或或异或异或1.以以A为目的操作数的算术、逻辑运算指令(为目的操作数的算术、逻辑运算指令(24条)条)以以dir为目的操作数逻辑运算指令(为目的操作数逻辑运算指令(6条)条)A#data dir与与 ANL或或 ORL异或异或 XRLdir,#

30、dataA2.3算术运算和逻辑运算指令算术运算和逻辑运算指令第第2章章 51系列单片机的指令系统系列单片机的指令系统 算术类指令的操作意义非常明确,不一一赘述,算术类指令的操作意义非常明确,不一一赘述,注意减指令只有带借位减,因此在多字节减法中,注意减指令只有带借位减,因此在多字节减法中,最低字节作减法时,注意先清最低字节作减法时,注意先清CY。逻辑运算是按位进行的,两数运算的运算法则是:逻辑运算是按位进行的,两数运算的运算法则是:与:有与:有“0”则则“0”;或:有或:有“1”则则“1”异或:同为异或:同为“0”,异为异为“1”;与与“0”异或值不变:与异或值不变:与“1”异或值变反。异或值

31、变反。逻辑指令常用于对数据位进行加工。逻辑指令常用于对数据位进行加工。n n0000111100001111 10000110 10001111n n0000111100001111 10000110 10001001例:例:A=0FH,A=0FH,执行执行执行执行XRL A,#86H XRL A,#86H 后后后后 A A06HH06HH 例:例:例:例:A=0FH,A=0FH,A=0FH,A=0FH,执行执行执行执行ORL A,#86H ORL A,#86H ORL A,#86H ORL A,#86H 后后后后 A A A A8FH8FH8FH8FH例:例:例:例:A=0FH,A=0FH,

32、A=0FH,A=0FH,执行执行执行执行XRL A,#86H XRL A,#86H XRL A,#86H XRL A,#86H 后后后后 A A A A89H89H89H89H+第第2章章 51系列单片机的指令系统系列单片机的指令系统 ARnRidirDPTRINC减减 1 指令指令:DECARnRidir加加 1 指令指令:提问提问:没有:没有DEC DPTR指令,怎么解决指令,怎么解决DPTR的减的减 1?2.加加1、减、减1指令指令第第2章章 51系列单片机的指令系统系列单片机的指令系统 3.十进制调整指令十进制调整指令 计算机完成二进制加法其和也为二进制,如果是十进制相计算机完成二进制

33、加法其和也为二进制,如果是十进制相加(即加(即BCD码相加)想得到十进制的结果,就必须进行十进码相加)想得到十进制的结果,就必须进行十进制调整(即制调整(即BCD 码调整)。码调整)。调整指令:调整指令:DA A ;将;将A中二进制中二进制相加和相加和调整成调整成BCD码码 调整方法:和低调整方法:和低4位大于位大于9或有半进位则低或有半进位则低4位加位加6;和的高和的高4位大于位大于9或有进位,则高或有进位,则高4位加位加6。指令根据相加和及标志自行进行判断,因此该指令应紧跟指令根据相加和及标志自行进行判断,因此该指令应紧跟在加指令之后,至少在加指令和该指令之间不能有影响标志在加指令之后,至

34、少在加指令和该指令之间不能有影响标志的指令。的指令。DA A指令只对一个字节和调整,如为多字节相加必须进行指令只对一个字节和调整,如为多字节相加必须进行多次调整。此指令不能对减法结果进行调整。多次调整。此指令不能对减法结果进行调整。第第2章章 51系列单片机的指令系统系列单片机的指令系统 例例 完成完成56+17的编程。的编程。MOV A,#56H;A存放存放BCD码码56H MOV B,#17H;B存放存放BCD码码17H ADD A,B ;A=6dH DA A ;A=73H SJMP$5 6 H1 7 H6 d H67 3 H+第第2章章 51系列单片机的指令系统系列单片机的指令系统 指令

35、对标志位的影响有如下规律:指令对标志位的影响有如下规律:1 1)凡是对)凡是对A A 操作指令(包括传送指令)都将操作指令(包括传送指令)都将A A中中1 1个的奇偶反个的奇偶反映到映到PSWPSW的的P P标志位上。即标志位上。即A A中奇数个中奇数个“1”“1”,P=1P=1;偶数个;偶数个“1”“1”,P=0P=0。2 2)传送指令、加传送指令、加 1 1、减、减 1 1 指令、逻辑运算指令不影响指令、逻辑运算指令不影响CyCy、OVOV、AC AC 标志位。标志位。3 3)加减运算指令影响标志位,乘除指令使加减运算指令影响标志位,乘除指令使Cy=0Cy=0,当乘积大,当乘积大于于255

36、255,或除数为,或除数为0 0时,时,OVOV置置1 1。4 4)对进位位对进位位CyCy(指令中用(指令中用C C表示)进行操作的指令和大环移表示)进行操作的指令和大环移指令,显然会影响指令,显然会影响CyCy。具体指令对标志位的影响可参阅附录具体指令对标志位的影响可参阅附录A A。标志位的状态是控制转移指令的条件,因此指令对标志位的标志位的状态是控制转移指令的条件,因此指令对标志位的影响应该记住。影响应该记住。第第2章章 51系列单片机的指令系统系列单片机的指令系统 例例:A=9AH,R2=E3H,PSW=0,执行指令,执行指令ADDC A,R2 后求:后求:A=,Cy=,OV=,AC=

37、,P=PSW=?1001 1010 1110 0011 +0 1 0111 11017DH 1 1 0 010000100=84HCYACF0RS1RS0OV-P10000100第第2章章 51系列单片机的指令系统系列单片机的指令系统 CYCYRR ARL ARLC ARRC A4.移位指令(仅对移位指令(仅对 A)1001011000101101AA设设01001011A1CY11001011A000101101A1CYCY第第2章章 51系列单片机的指令系统系列单片机的指令系统 5.5.乘、除法指令乘、除法指令(1)乘法指令 MUL AB;AB BA 说明:该指令实现8位无符号乘法。A、B

38、中各放一个8位乘数,指令执行后,16位积的高8位在B中,低8位在A中。(2)除法指令 DIV AB;AB 商在A中,余数在B中 说明:该指令实现8位无符号乘法。A中放置被除数,B中放置除数,指令执行后,A中位商,B中位余数。如果B00H,则指令执行后,溢出标志OV1,且A、B内容不变。第第2章章 51系列单片机的指令系统系列单片机的指令系统 2.4 控制转移指令控制转移指令 这一类指令的功能是改变指令的执行顺序,转到指令指示的新的这一类指令的功能是改变指令的执行顺序,转到指令指示的新的PC地地址执行。址执行。MCS-51单片机的控制转移指令有以下类型:单片机的控制转移指令有以下类型:无条件转移

39、:无条件转移:无需判断,执行该指令就转移到目的地址。无需判断,执行该指令就转移到目的地址。条件转移:条件转移:需判断标志位是否满足条件,满足条件转移到目的地址,否则顺需判断标志位是否满足条件,满足条件转移到目的地址,否则顺序执行。序执行。绝对转移:绝对转移:转移的目的地址用绝对地址指示,通常为无条件转移。转移的目的地址用绝对地址指示,通常为无条件转移。相对转移:相对转移:转移的目的地址用相对于当前转移的目的地址用相对于当前PC的偏差(偏移量)指示,通常的偏差(偏移量)指示,通常为条件转移。为条件转移。长转移或长调用:长转移或长调用:目的地址距当前目的地址距当前PC 64KB地址范围内。地址范围

40、内。短转移或短调用短转移或短调用:目的地址距当前:目的地址距当前PC 2KB地址范围。地址范围。第第2章章 51系列单片机的指令系统系列单片机的指令系统 1.长调用长调用 LCALL addrl16;addr16PC015 说明:说明:(1)该指令功能是该指令功能是 保护断点,即当前保护断点,即当前PC(本指令的下一条指令的首地(本指令的下一条指令的首地 址)压入堆栈。址)压入堆栈。子程序的入口地址子程序的入口地址 addr16 送送PC,转子程序执行。,转子程序执行。(2)本指令为本指令为64KB地址范围内的调子程序指令,子程序可在地址范围内的调子程序指令,子程序可在64KB地址空间的任一处

41、。地址空间的任一处。(3)本指令的机器码为三字节本指令的机器码为三字节 12 addr16。2.4.1 调用程序和返回类指令调用程序和返回类指令第第2章章 51系列单片机的指令系统系列单片机的指令系统 2.短调用短调用 ACALL addr11 ;addr11PC010说明:说明:(1)该指令的功能是该指令的功能是 保护断点,即当前保护断点,即当前PC压入堆栈。压入堆栈。addrl11PC010,而而PC1115保持原值不变。保持原值不变。(2)本指令为本指令为2KB地址范围的调子程序指令,子程序入口距地址范围的调子程序指令,子程序入口距当前当前PC不得超过不得超过2KB地址范围。地址范围。(

42、3)本指令的机器码为二字节,设本指令的机器码为二字节,设addr11的各位是的各位是a10a9a8a2a1a0,则,则ACALL指令机器码指令机器码a10a9a810001a7a6a5a4a3a2a1a0,其中,其中10001是是ACALL指指令的操作码。令的操作码。第第2章章 51系列单片机的指令系统系列单片机的指令系统 例例 子程序调用指令子程序调用指令ACALL在在 程序存储器中的首地址为程序存储器中的首地址为0100H,子程序入口地址为,子程序入口地址为0205H。试确定能否使用。试确定能否使用ACALL指令实指令实现调用?如果能使用,确定该指令的机器码。现调用?如果能使用,确定该指令

43、的机器码。解解:因为因为ACALL指令首地址在指令首地址在0100H,而,而ACALL是是 2字节指字节指令,所以下一条指令的首地址在令,所以下一条指令的首地址在0102H。0102H和和0250H在同在同一一2KB地址范围内,故可用地址范围内,故可用ACALL调用。调用入口地址为调用。调用入口地址为0250H,ACALL指令的机器码形式为:。指令的机器码形式为:。第第2章章 51系列单片机的指令系统系列单片机的指令系统 3.子程序返回指令子程序返回指令RET ;从调用子程序返回。;从调用子程序返回。功能:从栈顶弹出断点到功能:从栈顶弹出断点到PC。RETI;从中断服务程序返回。从中断服务程序

44、返回。功能:从栈顶弹出断点到功能:从栈顶弹出断点到PC,并恢复中断优先级状态触发器。,并恢复中断优先级状态触发器。第第2章章 51系列单片机的指令系统系列单片机的指令系统 2.4.2 转移指令转移指令1.无条件转移指令无条件转移指令(1)短转移)短转移 AJMP addr11 ;addr11PC010说明:说明:转移范围:本指令为转移范围:本指令为2KB地址范围内的转移指令。对转移目的地址范围内的转移指令。对转移目的地址的要求与地址的要求与ACALL指令对子程序入口地址的要求相同。指令对子程序入口地址的要求相同。机器码形式:本指令为机器码形式:本指令为2字节指令。设字节指令。设addr11的各

45、位是的各位是a10a9a8a2a1a0,则指令的机器码为则指令的机器码为a10a9a800001a7a6a5a4a3a2a1a0。第第2章章 51系列单片机的指令系统系列单片机的指令系统 (2)长转移)长转移LJMP addr16 ;addr16PC015说明:说明:本指令为本指令为64KB程序存储空间的全范围转移指令。转移地址程序存储空间的全范围转移指令。转移地址可为可为16位地址中的任意值。位地址中的任意值。本指令为本指令为3字节指令字节指令02 addr16。(3)间接转移)间接转移 JMP A+DPTR ;A+DPTRPC 例例 A=02H,DPTR=2000H,指令,指令JMP A+

46、DPTR执行后,执行后,PC=2002H。也就是说,程序转移到。也就是说,程序转移到2002H地址单元去执行。地址单元去执行。第第2章章 51系列单片机的指令系统系列单片机的指令系统 例例 现有一段程序如下:现有一段程序如下:MOV DPTR,#TABLE JMP A+DPTRTABLE:AJMP PROC0 AJMP PROC1 AJMP PROC2 AJMP PROC2 根据根据JMP A+DPTR指令的操作可知,指令的操作可知,当当A=00H时,程序转入到地址时,程序转入到地址 PROC0 处执行;处执行;当当A=02H时,转到时,转到PROC1处执行处执行 可见这是一段多路转移程序,进

47、入的路数由可见这是一段多路转移程序,进入的路数由A确定。因为确定。因为AJMP指令是指令是2字节指令,所以字节指令,所以 A 必须为偶数。必须为偶数。以上均为绝对转移指令,下面介绍相对转移指令。以上均为绝对转移指令,下面介绍相对转移指令。第第2章章 51系列单片机的指令系统系列单片机的指令系统 (4)无条件相对转移)无条件相对转移 SJMP rel ;PC+relPC,即即As2relPC,机器码为,机器码为80 rel说明:说明:As为源地址(本指令的首地址),该指令为为源地址(本指令的首地址),该指令为2字节指令,执字节指令,执行本指令时行本指令时 当前当前PCAs+2,rel 为转移的偏

48、移量,转移可以向前转为转移的偏移量,转移可以向前转(目的地址小于源地址),也可以向后转(目的地址大于源(目的地址小于源地址),也可以向后转(目的地址大于源地址),因此偏移量地址),因此偏移量rel 是是 1 字节有符号数,用补码表示字节有符号数,用补码表示(128127),所以指令转移范围在离源地址),所以指令转移范围在离源地址As的的126129字节之间。字节之间。第第2章章 51系列单片机的指令系统系列单片机的指令系统 2.条件转移指令条件转移指令(1)累加器为零(非零)转移)累加器为零(非零)转移 JZ rel ;A=0 则转移(则转移(As+2+relPC)JNZ rel ;A0 程序

49、顺序执行,机器码为程序顺序执行,机器码为60rel第第2章章 51系列单片机的指令系统系列单片机的指令系统 dirRi Rn#dataADJNZDJNZ(2)减)减 1 不等于零转移不等于零转移DJNZ Rn,rel;Rn-1 DJNZ dir,.rel本指令有自动减本指令有自动减 1 功能。功能。(3)比较转移指令)比较转移指令CJNE A,dir,relCJNE A,#data,relCJNE Rn,#data,relCJNE Ri,#data,rel第第2章章 51系列单片机的指令系统系列单片机的指令系统 说明说明:CJNE指令都是指令都是3字节指令,作减操作,不回送结果,影响字节指令,

50、作减操作,不回送结果,影响CY标志。标志。若第一操作数大于或等于第二若第一操作数大于或等于第二 操作数,则标志操作数,则标志CY=0。若。若第一操作数小于第二操作数,则第一操作数小于第二操作数,则CY=1。这几条指令除实现两操作数相等与否的判断外,利用对这几条指令除实现两操作数相等与否的判断外,利用对CY的的判断,还可完成两数大小的比较。判断,还可完成两数大小的比较。第第2章章 51系列单片机的指令系统系列单片机的指令系统 试说明以下一段程序运行后试说明以下一段程序运行后A中的结果。中的结果。MOV 23H,#0AH CLR ALOOP:ADD A,23H DJNZ 23H,LOOP SJMP

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁