80C51单片微机的指令系统

上传人:夏** 文档编号:577942027 上传时间:2024-08-23 格式:PPT 页数:99 大小:576.50KB
返回 下载 相关 举报
80C51单片微机的指令系统_第1页
第1页 / 共99页
80C51单片微机的指令系统_第2页
第2页 / 共99页
80C51单片微机的指令系统_第3页
第3页 / 共99页
80C51单片微机的指令系统_第4页
第4页 / 共99页
80C51单片微机的指令系统_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《80C51单片微机的指令系统》由会员分享,可在线阅读,更多相关《80C51单片微机的指令系统(99页珍藏版)》请在金锄头文库上搜索。

1、第第3章章 80C51单片微机的指令系统单片微机的指令系统1第3章80C51单片微机的指令系统主要内容、重点主要内容、重点和难点和难点u寻址方式:立即寻址,直接寻址,寄存器寻址寻址方式:立即寻址,直接寻址,寄存器寻址 ,寄存器间址,寄存器间址 ,变址寻址,变址寻址 ,相对寻址和位,相对寻址和位寻址寻址 。u数据传送指令:内部数据传送指令,外部数据传数据传送指令:内部数据传送指令,外部数据传送指令送指令 ,堆栈操作指令,堆栈操作指令和数据交换指令。和数据交换指令。u算术逻辑运算和移位指令:算术运算指令,逻辑算术逻辑运算和移位指令:算术运算指令,逻辑运算指令和移位指令运算指令和移位指令 。u控制转

2、移和位操作指令:无条件转移指令,条件控制转移和位操作指令:无条件转移指令,条件转移指令转移指令 ,调用和返回指令,调用和返回指令 ,位传送指令,位传送指令,位置位和清零指令,位运算指令和位控制转移指位置位和清零指令,位运算指令和位控制转移指令令 。2第3章80C51单片微机的指令系统3.1 概述概述1、指令格式、指令格式80C51单片机采用的指令格式:单片机采用的指令格式:例:例:(1)NOP (2)ADD A,#05H (2) INC DPTR (4)CJNE A,#data,rel操作码操作码 操作数或操作数地址操作数或操作数地址3第3章80C51单片微机的指令系统2、指令的三种形式、指令

3、的三种形式二进制形式二进制形式十六进制形式十六进制形式助记符形式助记符形式机器指令机器指令汇编指令汇编指令4第3章80C51单片微机的指令系统3、指令的字节数、指令的字节数(1)单字节指令()单字节指令(49条)条) 操作码和操作数只占用操作码和操作数只占用1个字节。个字节。无操作数单字节指令无操作数单字节指令 其机器码中只有一个字节的操作码,而没有操其机器码中只有一个字节的操作码,而没有操作数,操作数是隐含在操作码中的。作数,操作数是隐含在操作码中的。 例:例:INC DPTR 指令的机器码为:指令的机器码为:1 0 1 0 0 0 1 0 5第3章80C51单片微机的指令系统含有操作数寄存

4、器号的单字节指令含有操作数寄存器号的单字节指令 机器码中有操作码段和专门用来指示操作数所机器码中有操作码段和专门用来指示操作数所存寄存器单元的字段组成。存寄存器单元的字段组成。 例例: MOV A, Rn ;ARn1 1 1 0 1 r r r r rr rr rRnRn0 00 00 0R0R00 00 01 1R1R10 01 10 0R2R20 01 11 1R3R31 10 00 0R4R41 10 01 1R5R51 11 10 0R6R61 11 11 1R7R76第3章80C51单片微机的指令系统(2)双字节指令)双字节指令(46条条) 机机器器码码占占用用两两个个字字节节,操操

5、作作码码在在前前,操操作作数数在在后后。操操作作数数可可以以是是立立即即数数(即即指指令令码码中中的的数数据据本本身身),也可以是操作数所在的片内,也可以是操作数所在的片内RAM地址。地址。MOV A, #data ;A data8 8位二进制数位二进制数( (立即数立即数) )0 1 1 1 0 1 0 00 1 1 1 0 1 0 0 data data 7第3章80C51单片微机的指令系统 (3)三字节指令()三字节指令(16条)条) 机器码的第一字节为操作码,第二和第三字节机器码的第一字节为操作码,第二和第三字节为操作数或操作数地址。为操作数或操作数地址。操作码操作码操作码操作码操作码

6、操作码操作码操作码data15data8directdataaddr15addr8data7data0datadirect(rel)addr7addr0MOV DPTR, #data16ADD direct, #dataCJNE A, #data, relLCALL addr168第3章80C51单片微机的指令系统4、指令的分类、指令的分类80C51单片机的指令,按功能可以分为单片机的指令,按功能可以分为5类:类: 数据传送指令、算术运算指令、逻辑操作和环移数据传送指令、算术运算指令、逻辑操作和环移指令、控制转移指令和位操作指令等。指令、控制转移指令和位操作指令等。(1)数据传送指令)数据传送

7、指令(28条条)u功能:主要用于单片机片内功能:主要用于单片机片内RAM和和SFR之间传送之间传送数据,也可以用于单片机片内和片外存储单元之间数据,也可以用于单片机片内和片外存储单元之间传送数据。传送数据。u特点:把源地址中操作数传送到目的地址(或目特点:把源地址中操作数传送到目的地址(或目的寄存器),该类指令执行后,源地址中的操作数的寄存器),该类指令执行后,源地址中的操作数不会发生改变。不会发生改变。9第3章80C51单片微机的指令系统(2)算术运算指令)算术运算指令(24条条)u功能:用于对两个操作数进行加、减、乘、除等功能:用于对两个操作数进行加、减、乘、除等算术运算。在两个操作数中,

8、一个应放在累加器算术运算。在两个操作数中,一个应放在累加器A中,另一个可以在某个寄存器或片内中,另一个可以在某个寄存器或片内RAM单元中,单元中,也可以存放在指令码的第二和第三字节中。也可以存放在指令码的第二和第三字节中。(3)逻辑操作和环移指令)逻辑操作和环移指令逻辑操作指令用于对两个操作数进行逻辑乘、逻辑逻辑操作指令用于对两个操作数进行逻辑乘、逻辑加、逻辑取反和异或等操作,大多数指令也需要把加、逻辑取反和异或等操作,大多数指令也需要把两个操作数中的一个预先放入累加器两个操作数中的一个预先放入累加器A,操作结果,操作结果也在累加器也在累加器A中。中。环移指令用于对累加器环移指令用于对累加器A

9、中的数进行环移。环移指中的数进行环移。环移指令有左环移和右环移之分,也有带令有左环移和右环移之分,也有带Cy和不带和不带Cy之分。之分。10第3章80C51单片微机的指令系统(4)控制转移指令)控制转移指令(17条条) 分为条件转移、无条件转移、调用和返回等指分为条件转移、无条件转移、调用和返回等指令。特点是可改变程序执行的流向,或者是使令。特点是可改变程序执行的流向,或者是使CPU转移到另一处执行,或者是继续顺序地执行。转移到另一处执行,或者是继续顺序地执行。(5)位操作指令)位操作指令(17条条) 共分为位传送、位置位、位运算和位控制转移共分为位传送、位置位、位运算和位控制转移指令等四类。

10、指令等四类。 位传送、位置位和位运算指令的操作数不是以位传送、位置位和位运算指令的操作数不是以字节为单位进行操作,而是以字节中的某位为单位字节为单位进行操作,而是以字节中的某位为单位进行操作,位控制转移指令不是以检测某个字节为进行操作,位控制转移指令不是以检测某个字节为条件而转移,而是检测字节中的某一位的状态来转条件而转移,而是检测字节中的某一位的状态来转移。移。11第3章80C51单片微机的指令系统5、指令系统综述、指令系统综述指令的集合或全体称为指令系统,是指令的集合或全体称为指令系统,是CPU的重要性能的重要性能标志。不同系列的单片机,其指令系统也不相同,但标志。不同系列的单片机,其指令

11、系统也不相同,但同一系列单片机,其指令系统大多兼容。同一系列单片机,其指令系统大多兼容。 80C51的指令系统共包含有的指令系统共包含有111条指令。条指令。(1)符号说明)符号说明除操作码段采用了除操作码段采用了42种助记符以外,还在源操作数和种助记符以外,还在源操作数和目的操作数段中使用了一些符号。目的操作数段中使用了一些符号。 典型符号的含义归纳如下:典型符号的含义归纳如下:Rn,工作寄存器,工作寄存器, R0- R7中的一个中的一个#data,8位立即数,取值范围:位立即数,取值范围:00HFFH#data16,16位立即数,取值范围:位立即数,取值范围:0000HFFFFH12第3章

12、80C51单片微机的指令系统direct,8位直接地址,取值范围位直接地址,取值范围00HFFH和和SFRRi,8位间址寄存器,位间址寄存器,i=0或或1DPTR,16位间址寄存器,用于访问片外寄存器位间址寄存器,用于访问片外寄存器bit,位地址,位地址addr11,11位目标地址位目标地址addr16,16位目标地址位目标地址rel,8位带符号地址偏移量,位带符号地址偏移量,-128127$,当前指令的地址,当前指令的地址(2)指令对标志位的影响)指令对标志位的影响对对PSW中各标志位无影响的指令中各标志位无影响的指令对对PSW中某些标志位有影响的指令中某些标志位有影响的指令13第3章80C

13、51单片微机的指令系统3.2 寻址方式寻址方式寻址方式:寻找操作数的方法。寻址方式:寻找操作数的方法。80C51共有七种寻址方式:共有七种寻址方式:寄存器寻址寄存器寻址直接寻址直接寻址立即寻址立即寻址寄存器间址寄存器间址变址寻址变址寻址相对寻址相对寻址位寻址位寻址14第3章80C51单片微机的指令系统1、寄存器寻址、寄存器寻址特特点点:操操作作数数位位于于某某个个寄寄存存器器单单元元。对对80C51系系列列单片机而言,寄存器寻址的寻址范围:单片机而言,寄存器寻址的寻址范围: 32个个通通用用寄寄存存器器(4个个工工作作寄寄存存器器组组,地地址址范范围围为为00H1FH。当当前前工工作作寄寄存存

14、器器组组由由PSW中中RS1、RS0位的状态而确定。位的状态而确定。) 部部分分特特殊殊功功能能寄寄存存器器SFR,如如累累加加器器A,通通用用寄存器寄存器B、数据指针、数据指针DPTR等。等。 INC Rn15第3章80C51单片微机的指令系统0 0 0 0 1 r r rPC程序存储器程序存储器0 0 0010 0 0rrr=000B 00H片内片内RAM10HRS1 RS0PSWRS1RS0=10BINC R024H +125H16第3章80C51单片微机的指令系统0 111 0100PC程序存储器程序存储器MOV A, #88H 88H A E0H 17第3章80C51单片微机的指令系

15、统2、直接寻址、直接寻址特特点点:指指令令码码中中给给出出的的是是操操作作数数地地址址,常常以以direct表表示示。80C51系系列列单单片片机机可可直直接接寻寻址址的的地地址址空空间间主主要要有:有: 片内片内RAM的低的低128个字节个字节 SFR3AH片内片内RAM累加器累加器AMOV A, 3AH88H88H18第3章80C51单片微机的指令系统注:注:p指令助记符中的指令助记符中的directdirect是操作数所在存储单元是操作数所在存储单元的物理地址,由两位十六进制数码表示。当直的物理地址,由两位十六进制数码表示。当直接寻址为接寻址为SFRSFR时,即可用物理地址表示,也可时,

16、即可用物理地址表示,也可用其符号表示。用其符号表示。p指令系统中,累计器指令系统中,累计器A A、ACCACC和和E0HE0H等三种表等三种表示方式,分属于两种不同的寻址方法,但指令示方式,分属于两种不同的寻址方法,但指令的执行效果相同。的执行效果相同。p在指令系统中,字节地址和位地址是有区别的。在指令系统中,字节地址和位地址是有区别的。前者用前者用directdirect表示,后者用表示,后者用bitbit表示。表示。19第3章80C51单片微机的指令系统3、立即寻址、立即寻址特特点点:CPU所所需需寻寻址址的的操操作作数数直直接接包包含含在在指指令令字字节节中,常以中,常以#对该操作数加以

17、标识。对该操作数加以标识。 该该操操作作数数也也称称为为立立即即数数,可可以以是是二二进进制制8位位或或16位,通常用位,通常用#data或或#data16表示。表示。MOV A, #7AH ;A 7AH MOV DPTR, #1234H ;DPH12H, DPL 34HADD 30H, #30H ;direct (direct)+30H20第3章80C51单片微机的指令系统4、寄存器间接寻址、寄存器间接寻址 特点:寄存器中存放的是操作数地址,用特点:寄存器中存放的是操作数地址,用加加以标识。以标识。 间间址址寄寄存存器器采采用用Ri或或DPTR表表示示。寻寻址址空空间间有:有: Ri,主主要

18、要用用于于寻寻址址片片内内或或片片外外RAM的的256个个单元;单元; DPTR,寻寻址址外外部部ROM/RAM的的全全部部64K个个存储单元;存储单元; 不能用于访问特殊功能寄存器不能用于访问特殊功能寄存器SFR。21第3章80C51单片微机的指令系统MOV A, R0 ;A (R0)MOV A, R0 ;A (R0)R0A3AH3AH片内片内RAM3AHR0A3AH65H65H22第3章80C51单片微机的指令系统5、变址寻址、变址寻址该该寻寻址址方方式式常常用用于于访访问问ROM中中的的数数据据表表格格,其其特特点点:(1)指指令令操操作作码码含含有有作作为为基基地地址址寄寄存存器器用用

19、的的DPTR或或PC;(2)指指令令操操作作码码含含有有累累加加器器A,A中中应应预预先先存存放放被被寻址操作数地址对基地址之间的偏移量;寻址操作数地址对基地址之间的偏移量;(3)指指令令执执行行时时,单单片片机机先先将将基基地地址址和和地地址址偏偏移移量量相加以形成操作数地址,然后获得操作数。相加以形成操作数地址,然后获得操作数。 MOVC A, A+DPTR MOVC A, A+PCPCPC当前值当前值8 8位无符号数位无符号数23第3章80C51单片微机的指令系统例例:已已知知片片外外ROM的的0302单单元元中中有有一一常常数数X,现现欲欲将其送到累加器将其送到累加器A,试编写相应的程

20、序。,试编写相应的程序。 解解:(1)选选DPTR作作为为基基址址寄寄存存器器,则则基基地地址址取取0300H,地址偏移量取,地址偏移量取02H。 MOV DPTR, #0300H MOV A, #02H MOVC A, A+DPTR(2)选)选PC作为基址寄存器作为基址寄存器 ORG 0200H MOV A, #00H ADD A, #FDH MOVC A, A+PC24第3章80C51单片微机的指令系统A02H0302HROM0000H03H 00HDPTRALU计算操作数地址计算操作数地址获取操作数,并送入获取操作数,并送入AXX25第3章80C51单片微机的指令系统6、相对寻址、相对寻

21、址 该该寻寻址址方方式式一一般般用用在在相相对对转转移移指指令令中中,其其特特点点:转转移移的的目目标标地地址址由由PCPC当当前前值值和和指指令令中中给给出出的的8 8位位相相对偏移量对偏移量relrel共同形成。共同形成。 目标地址目标地址=PC=PC当前值当前值+ +偏移量偏移量(1)双字节转移类指令)双字节转移类指令(6条条)(2)三字节转移类指令)三字节转移类指令(7条条)基地址,与该条转移类指令相基地址,与该条转移类指令相邻的下一条指令的起始地址邻的下一条指令的起始地址8位带符号数,位带符号数,-12812726第3章80C51单片微机的指令系统 2000H 8054H SJMP

22、rel ;PC PC+2+relA.80H54H.2056H程序存储器程序存储器0000HALU2000H2002H2001H.54HPCPCPC27第3章80C51单片微机的指令系统7、位寻址、位寻址 80C51系系列列单单片片机机具具有有位位处处理理功功能能,可可对对特特定定数数据据位位进进行操作,其位寻址的空间有:行操作,其位寻址的空间有: 片片内内RAM的的位位寻寻址址区区,其其字字节节地地址址为为20H2FH,共共16*8=128位,其位地址为位,其位地址为00H7FH; 某某些些SFR,其其特特征征是是物物理理地地址址能能被被8整整除除,离离散散的的分分布布在在80HFFH内。内。

23、位地址的表示方法:位地址的表示方法:l直接使用物理位地址直接使用物理位地址 MOV C, 7FHl字节地址加位字节地址加位 MOV C, 2FH.7l可可位位寻寻址址的的SFR允允许许直直接接采采用用寄寄存存器器名名加加位位数数的的表表示示方方法法 MOV C, ACC.7l经伪指令定义过的字符名称经伪指令定义过的字符名称 A1 BIT 00H MOV C, A128第3章80C51单片微机的指令系统3.3 数据传送指令数据传送指令在在80C51单片机中,数据传送是最基本和最主单片机中,数据传送是最基本和最主要操作。数据传送操作可以在片内要操作。数据传送操作可以在片内RAM和和SFR内进内进行

24、,也可以在累加器行,也可以在累加器A和片外存储器之间进行。和片外存储器之间进行。一般不会影响标志位的状态。一般不会影响标志位的状态。数据传送指令共有数据传送指令共有28条,分为内部数据传送指条,分为内部数据传送指令、外部数据传送指令、堆栈操作指令和数据交换令、外部数据传送指令、堆栈操作指令和数据交换指令四类。指令四类。29第3章80C51单片微机的指令系统1、内部数据传送指令、内部数据传送指令(15条条)特点:操作数均位于单片机内部,其格式为:特点:操作数均位于单片机内部,其格式为: MOV 目的操作数目的操作数, 源操作数源操作数 (1)以累加器)以累加器A为目的操作数为目的操作数 MOV

25、A, direct MOV A, #data MOV A, Rn MOV A, Ri30第3章80C51单片微机的指令系统(2)以寄存器)以寄存器Rn为目的操作数为目的操作数 MOV Rn, direct MOV Rn, #data MOV Rn, A(3)以直接地址为目的操作数)以直接地址为目的操作数 MOV direct1, direct2 MOV direct, #data MOV direct, A MOV direct, Rn MOV direct, Ri31第3章80C51单片微机的指令系统(4)以间接地址为目的操作数)以间接地址为目的操作数 MOV Ri, direct MOV

26、Ri, #data MOV Ri, A累加器累加器A direct直接寻址直接寻址Ri间址间址Rndata32第3章80C51单片微机的指令系统2、外部数据传送指令、外部数据传送指令(7条条)(1)16位数据传送指令位数据传送指令 MOV DPTR, #data16(2)访问外部)访问外部ROM的传送指令的传送指令 MOVC A, A+DPTR MOVC A, A+PC 例例:已已知知累累加加器器A中中有有一一个个09之之间间的的整整数数,试用查表指令编写查找出该数平方值的程序。试用查表指令编写查找出该数平方值的程序。 解解:确确定定平平方方表表,并并设设其其首首地地址址为为2000H,如图所

27、示。如图所示。33第3章80C51单片微机的指令系统2000H2001H2002H2003H2004H2005H2006H2007H2008H2009H0149162536496481(1)采用)采用DPTR作为基址寄存器作为基址寄存器MOV DPTR, #2000HMOVC A, A+DPTR(2)采用)采用PC作为基址寄存器作为基址寄存器 ORG 1FFBH1FFBH 24data ADD A, #data1FFDH 83H MOVC A, A+PC1FFEH 80FEH SJMP $PC当前值当前值+data=平房表首址平房表首址取数地址取数地址=基地址基地址+偏移量偏移量 =表首址表首

28、址+索引值索引值34第3章80C51单片微机的指令系统(3)访问外部)访问外部RAM的传送指令的传送指令 MOVX A, Ri MOVX Ri, A MOVX A, DPTR MOVX DPTR, A 例:已知外部例:已知外部RAM的的88H单元中有一数单元中有一数X,试,试编写程序将编写程序将X送到外部送到外部RAM的的1818H单元中。单元中。 解:解:ORG 2000H MOV R0, #88H MOV DPTR, #1818H MOVX A, R0 MOVX DPTR, A SJMP $ END35第3章80C51单片微机的指令系统3、堆栈操作指令、堆栈操作指令 PUSH direct

29、 ;SP SP+1, SP (direct) POP direct ; (direct) SP, SP SP-1 特点:特点:(1)操作数的寻址方式必须是直接寻址操作数的寻址方式必须是直接寻址 (2)Rn和和A不能直接在指令中:不能直接在指令中:A用用ACC代代替;替;Rn用其物理地址。用其物理地址。 (3)均为双字节指令,操作码和操作数分)均为双字节指令,操作码和操作数分别占用一个字节。别占用一个字节。36第3章80C51单片微机的指令系统例:读程序段,分析其功能例:读程序段,分析其功能 MOV SP, #70H MOV A, #100 MOV B, #20 PUSH ACC PUSH B

30、POP ACC POP B37第3章80C51单片微机的指令系统片内片内RAM片内片内RAM70H71H72H70H71H72HSP 栈底栈底10020SP SP A B10020SP SP SP B A20100栈底栈底2010038第3章80C51单片微机的指令系统4、数据交换指令、数据交换指令 XCH A, Rn ;A (Rn),Rn (A) XCH A, Ri ;A (Ri),(Ri) (A) XCH A, direct ;A (direct),direct (A) XCHD A, Ri ;A30 (Ri)30), (Ri)30 (A30) 例:已知外部例:已知外部RAM的的20H单元

31、中有一个数单元中有一个数X,内部内部RAM的的20H单元中有一个数单元中有一个数Y,试编出可以使,试编出可以使它们相互交换的程序。它们相互交换的程序。39第3章80C51单片微机的指令系统 MOV R1, #20H ;R1 20H MOVX A, R1 ;A X XCH A, R1 ;A Y,20H X MOVX R1, A ;20H(片外片外RAM) Y 例:已知例:已知50H中有一个中有一个09之间的数,试编程之间的数,试编程将其变为相应的将其变为相应的ASCII码。码。(1)采用半字节交换指令采用半字节交换指令MOV R0, #50HMOV A, #30HXCHD A, R0MOV R0

32、, A(2)采用加法指令采用加法指令MOV A, #30HADD A, 50HMOV 50H, A40第3章80C51单片微机的指令系统3.4 算术与逻辑运算和移位指令算术与逻辑运算和移位指令这类指令中,大多数指令都要用累加器这类指令中,大多数指令都要用累加器A来存来存放一个操作数,另一个操作数可以存放在任何一个放一个操作数,另一个操作数可以存放在任何一个工作寄存器工作寄存器Rn或片内或片内RAM单元中,也可以是指令单元中,也可以是指令码中的一个立即数。码中的一个立即数。在执行指令时,在执行指令时,CPU总是根据指令码中的源操总是根据指令码中的源操作数地址找到源操作数和累加器作数地址找到源操作

33、数和累加器A中操作数进行相中操作数进行相应操作,并把操作结果保留在累加器应操作,并把操作结果保留在累加器A中。因此,中。因此,累加器累加器A既可以看作是一个源操作数寄存器,也可既可以看作是一个源操作数寄存器,也可以认作目的操作数寄存器。以认作目的操作数寄存器。41第3章80C51单片微机的指令系统1、算术运算指令、算术运算指令(24条条)类型:加法、减法,十进制调整,乘法和除法等五类型:加法、减法,十进制调整,乘法和除法等五种类型。种类型。(1)加法指令()加法指令(13条)条)不带不带Cy加法指令加法指令(4条条) ADD A, Rn ;A (A)+(Rn) ADD A, direct ;A

34、 (A)+(direct) ADD A, Ri ;A (A)+(Ri) ADD A, #data ;A (A)+data42第3章80C51单片微机的指令系统例:试分析例:试分析8051执行如下指令后累加器执行如下指令后累加器A和和PSW中中各标志位的变化状况。各标志位的变化状况。 MOV A, #19H ;A 19H ADD A, #66H ;A (A)+66H 例:试分析例:试分析8051执行如下指令后累加器执行如下指令后累加器A和和PSW中中各标志位的变化状态。各标志位的变化状态。 MOV A, #5AH ;A 5AH ADD A, #6BH ;A (A)+6BH43第3章80C51单片

35、微机的指令系统带带Cy的加法指令的加法指令(4条条) ADDC A, Rn ;A (A)+(Rn)+Cy ADDC A, direct ;A (A)+(direct)+Cy ADDC A, Ri ;A (A)+(Ri)+Cy ADDC A, #data ;A (A)+data+Cy 例:已知:例:已知:A=85H,R0=30H,(30H)=11H,(31H)=FFH,Cy=1,试问,试问CPU执行如下指令后累加执行如下指令后累加器器A和和Cy中的值是多少?中的值是多少? ADDC A, R0 ADDC A, 31H ADDC A, R0 ADDC A, #85H多字节加法运算多字节加法运算44

36、第3章80C51单片微机的指令系统加加1指令指令(5条条) INC A ;A (A)+1 INC Rn ;Rn (Rn)+1 INC direct ;direct (direct)+1 INC Ri ;(Ri) (Ri)+1 INC DPTR ;DPTR DPTR+1例例:已已知知M1和和M2单单元元中中存存放放有有两两个个16位位无无符符号号数数X1和和X2(低低8位位在在前前,高高8位位在在后后),试试写写出出X1+X2并并把把结结果果放放在在M1和和M1+1单单元元(低低8位位在在M1单单元元,高高8位位在在M1+1单单元元)的的程程序序。设设两两数数之和不会超过之和不会超过16位。位。

37、45第3章80C51单片微机的指令系统ORG 0500HMOV R0, #M1 ;X1的起始地址送的起始地址送R0MOV R1, #M2 ;X2的起始地址送的起始地址送R1MOV A, R0 ;A X1的低的低8位位ADD A, R1 ;A X1低低8位位+X2低低8位,形成位,形成CyMOV R0, A ;和的低;和的低8位存入位存入M1INC R0 ;修改地址指针;修改地址指针R0INC R1 ;修改地址指针;修改地址指针R1MOV A, R0 ;A X1的高的高8位位ADDC A, R1 ;A X1高高8位位+X2高高8位位+CyMOV R0, A ;和的高;和的高8位存入位存入M1+1

38、SJMP $END46第3章80C51单片微机的指令系统(2)减法指令()减法指令(8条)条)带带Cy的减法指令(的减法指令(4条)条) SUBB A, Rn ;A (A)-(Rn)-Cy SUBB A, direct ;A (A)-(direct)-Cy SUBB A, Ri ;A (A)-(Ri)-Cy SUBB A, #data ;A (A)-data-Cy例:试判断例:试判断8031执行如下程序后累加器执行如下程序后累加器A和和PSW中中各标志位的状态。各标志位的状态。 CLR C MOV A, #52H SUBB A, #0B4H47第3章80C51单片微机的指令系统减减1指令指令

39、DEC A ;A (A)-1 DEC Rn ;Rn (Rn)-1 DEC direct ;direct (direct)-1 DEC Ri ;(Ri) (Ri)-1例:已知:例:已知:A=DFH,R1=40H,R7=19H,(30H)=00H,(40H)=FFH,试问执行如下指令后累加,试问执行如下指令后累加器器A和和PSW中各标志位状态如何?中各标志位状态如何? DEC A DEC R7 DEC 30H DEC R148第3章80C51单片微机的指令系统解:解:A=DEH,P=0 R7=18H,PSW不变不变(30H)=FFH,PSW不变不变 40H=FEH,PSW不变不变例:编程求两个例:

40、编程求两个16位数之差。(差也是位数之差。(差也是16位)位)解:被减数存解:被减数存M1和和M1+1单元;减数存单元;减数存M2和和M2+1单元,且均是低单元,且均是低8位在前,高位在前,高8位在后。位在后。ORG 0300HMOV RO, #M1MOV R1, #M2CLR CMOV A, R0SUBB A, R1MOV R0, ADEC R0DEC R1MOV A, R0SUBB A, R1MOV R0, ASJMP $END 49第3章80C51单片微机的指令系统十进制调整指令十进制调整指令 DA A ;若;若AC=1或或A309,则,则A(A)+06H ;若;若Cy=1或或A749,

41、则,则A(A)+60HBCD加法加法ALU只能进行二进制加法运算(低只能进行二进制加法运算(低4位向高位向高4位是逢位是逢16进进1 ),为实现),为实现BCD加法就要对加法结果进行调加法就要对加法结果进行调整,使其变成整,使其变成BCD数(逢数(逢10进进1)。)。BCD减法减法BCD减法可采用以下方法:求减数补码;被减数减法可采用以下方法:求减数补码;被减数+减数补码;对所得两数之和进行减数补码;对所得两数之和进行BCD调整。调整。50第3章80C51单片微机的指令系统例:试写出能完成例:试写出能完成85+59的的BCD加法程序,并对其加法程序,并对其工作过程进行分析。工作过程进行分析。解

42、:解:ORG 1000H MOV A, #85H ADD A, #59H DA A SJMP $ END51第3章80C51单片微机的指令系统例:写出例:写出91-34=57的的BCD减法程序。减法程序。解:解:ORG 1000H CLR C MOV A, #9AH SUBB A, #34H ADD A, #91H DA A SJMP $ END52第3章80C51单片微机的指令系统乘法和除法指令乘法和除法指令 MUL AB DIV AB 例:已知两个例:已知两个8位无符号数分别存放在位无符号数分别存放在30H和和31H单单元中,试编写两数相乘且将积的低元中,试编写两数相乘且将积的低8位存入位

43、存入32H单元、单元、高高8位存入位存入33H单元的程序。单元的程序。解:解:53第3章80C51单片微机的指令系统ORG 0100HMOV R0, #30H ;R0 第一个乘数地址第一个乘数地址MOV A, R0 ;A 第一个乘数第一个乘数INC R0 ;修改乘数地址;修改乘数地址MOV B,R0 ;B 第一个乘数第一个乘数MUL AB ;AB=BAINC R0 ;修改目标单元地址;修改目标单元地址MOV R0, A ;积的低;积的低8位位 32HINC R0 ;修改目标单元地址;修改目标单元地址MOV R0, B ;积的高;积的高8位位 33HSJMP $ END54第3章80C51单片微

44、机的指令系统2、逻辑运算指令、逻辑运算指令(20条条)(1)逻辑与指令)逻辑与指令(6条条) ANL A, Rn ;A (A)(Rn) ANL A, direct ;A (A)(direct) ANL A, Ri ;A (A)(Ri) ANL A, #data ;A (A)data ANL direct, A ;A (direct)(A) ANL direct, #data ;A (direct)data用途:可从一个字节中取出某些位。用途:可从一个字节中取出某些位。55第3章80C51单片微机的指令系统例:已知数例:已知数59H存于片内存于片内RAM的的M1单元,试编程取单元,试编程取出其高

45、出其高4位,并存于位,并存于M1单元。单元。解:解:ORG 0100HMOV A, M1ANL A, #0F0HMOV M1, ASJMP $ENDORG 0100HMOV R0, #M1MOV A, #0F0HANL A, R0MOV M1, ASJMP $END56第3章80C51单片微机的指令系统(2)逻辑或指令)逻辑或指令(6条条) ORL A, Rn ;A (A)(Rn) ORL A, direct ;A (A)(direct) ORL A, Ri ;A (A)(Ri) ORL A, #data ;A (A)data ORL direct, A ;direct (direct)(A)

46、 ORL direct, #data ;direct (direct)data用途:将一个字节中某些位置用途:将一个字节中某些位置1。例:设例:设A=55H,P1=97H,试通过编程将累加器,试通过编程将累加器A中中的低的低4位送入位送入P1口低口低4位,位,P1口高位不变。口高位不变。57第3章80C51单片微机的指令系统解:解:ORG 0100HMOV R0, A ;R0(A), (R0)=55HANL A, #0FH ;A 55H0FH, (A)=05HANL P1, #0F0H ;P1 97HF0H, (P1)=90H ORL P1, A ;P1 90H05H, (P1)=95HMOV

47、 A, R0 ;A(R0), (A)=55HSJMP $END58第3章80C51单片微机的指令系统(3)逻辑异或指令)逻辑异或指令(6条条)XRL A, Rn ;A (A) (Rn)XRL A, direct ;A (A) (direct)XRL A, Ri ;A (A) (Ri)XRL A, #data ;A (A) dataXRL direct, A ;direct (direct) (A)XRL direct, #data ;direct (direct) data用途:将一个字节中某几位取反。用途:将一个字节中某几位取反。例:已知外部例:已知外部RAM30H单元中有一数单元中有一数A

48、BH,试编出,试编出使其高使其高4位不变、低位不变、低4位取反的程序。位取反的程序。59第3章80C51单片微机的指令系统解:解:ORG 0100HMOV R0, #30H ;地址地址30H送入送入R0MOVX A, R0 ;A ABHXRL A, #0FH ;A ABH 0FH=A4HMOVX R0, A ;结果送回结果送回30H单元单元SJMP $ END60第3章80C51单片微机的指令系统(4)累加器清零和取反指令)累加器清零和取反指令 80C51单单片片机机中中,累累加加器器清清零零和和取取反反指指令令各各有有1条条,均均是是单单字字节节单单周周期期指指令令。虽虽然然采采用用数数据据

49、传传送送或或逻逻辑辑异异或或指指令令也也同同样样可可以以使使累累加加器器A清清零零或或取取反反,但它们至少需要两个字节。但它们至少需要两个字节。 CLR A ;A 0 CPL A ;A 取取反反指指令令常常用用于于求求取取某某个个存存储储单单元元或或存存储储区区域域中的带符号数的补码。中的带符号数的补码。61第3章80C51单片微机的指令系统例:若(例:若(30H)=X,且,且X为负数的原码,求其补码。为负数的原码,求其补码。解:解:ORG 1000HMOV A, 30H ;A|X|CPL A ;A中内容取反中内容取反INC A ;取反后的内容加取反后的内容加1MOV 30H, A ;结果送回

50、结果送回SJMP $END62第3章80C51单片微机的指令系统3、移位指令、移位指令(5条条)A7 A0RL ARR AA7 A0RLC ARRC AA7 A0CyA7 A0CySWAP AA74 A3063第3章80C51单片微机的指令系统用途:对某数扩大用途:对某数扩大/缩小一倍;代码转换。缩小一倍;代码转换。例:已知例:已知A=35H,Cy=1,试问执行如下指令后的,试问执行如下指令后的A中中的内容为多少?的内容为多少?RR A RL A RRC A RLC A SWAP A00110101A64第3章80C51单片微机的指令系统例:已知例:已知M1和和M1+1单元中有一个单元中有一个

51、16位的二进制数位的二进制数(M1中为低位中为低位),请编程将该数扩大为原来的二倍,请编程将该数扩大为原来的二倍(设设扩大后的结果小于扩大后的结果小于65536)。M1+1M1ORG 1000HCLR CMOV R1, #M1MOV A, R1RLC AMOV R1, AINC R1MOV A, R1RLC AMOV R1, ASJMP $END解:解:65第3章80C51单片微机的指令系统例:编程完成如下代码转换。例:编程完成如下代码转换。0000 BCD10000 BCD2M1M1+1BCD2 BCD1 M1ORG 0200HMOV R0, #M1+1MOV A, R0SWAP ADEC

52、R0ORL A, R0MOV R0, ASJMP $END66第3章80C51单片微机的指令系统控制转移类指令的操作对象是控制转移类指令的操作对象是PC中的地址,以改变中的地址,以改变程序执行流向为目的;位操作指令的操作对象是字程序执行流向为目的;位操作指令的操作对象是字节中的某一位。节中的某一位。1、控制转移指令、控制转移指令(17条条)(1)无条件转移指令)无条件转移指令(4条条)LJMP addr16 ;PCaddr16寻址范围:寻址范围:64KB3.5 控制转移和位操作指令控制转移和位操作指令02Haddr15addr8addr7addr0操作码操作码高高8 8位地址位地址低低8 8位

53、地址位地址67第3章80C51单片微机的指令系统 ORG 0000H LJMP USER ORG 1000HUSER: MOV A, #05H ENDAJMP addr11 ;PCPC+2, PC 10PC0 addr11a10 a9 a8 0 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0操作码操作码68第3章80C51单片微机的指令系统 ORG 0800H AJMP LOOP ORG 0FF0HLOOP:MOV A, #08H ENDAJMPaddr11ROMPCPC+1PC+2-102410232KB69第3章80C51单片微机的指令系统SJMP rel ;PC PC+2

54、,PC PC+rel转移范围:转移范围:80Hrel操作码操作码地址偏移量地址偏移量SJMPaddr11ROMPCPC+1PC+2-128127256SJMP指令地址偏移量指令地址偏移量rel的计算的计算70第3章80C51单片微机的指令系统(2)条件转移指令)条件转移指令(8条条)累加器累加器A判零转移指令判零转移指令(2条条)JZ rel ;若;若A=0,则,则PC PC+2+rel ;若;若A0,则,则PC PC+2JNZ rel ;若;若A0,则,则PC PC+2+rel ;若;若A=0,则,则PC PC+2实例实例71第3章80C51单片微机的指令系统比较条件转移指令比较条件转移指令

55、(4条条)CJNE A, #data, rel ;若若A=data,则,则PC PC+3 ;若若Adata,则,则PC PC+3+rel ;形成形成Cy标志位标志位CJNE A, direct, rel ;若若A=(direct),则,则PC PC+3 ;若若A(direct),则,则PC PC+3+rel ;形成形成Cy标志位标志位CJNE Rn, #data, rel ;若若Rn=data,则,则PC PC+3 ;若若Rndata,则,则PC PC+3+rel ;形成形成Cy标志位标志位72第3章80C51单片微机的指令系统CJNE Ri, #data, rel ;若若 (Ri) =dat

56、a,则,则PC PC+3 ;若若 (Ri) data,则,则PC PC+3+rel ;形成形成Cy标志位标志位说明:说明:Cy的形成原则为:的形成原则为: 若若A-B 0 ,则,则Cy=0 若若A-B 0,则,则Cy=1实例实例73第3章80C51单片微机的指令系统减减1条件转移指令条件转移指令(2条条)DJNZ Rn, rel ;若若(Rn)-1=0,则,则PC PC+2 ;若若(Rn)-10,则,则PC PC+2+relDJNZ direct, rel ;若若(direct)-1=0,则,则PC PC+3 ;若若(direct)-10,则,则PC PC+3+rel用途:判断循环是否结束用途

57、:判断循环是否结束实例实例74第3章80C51单片微机的指令系统(3)子程序条用和返回指令)子程序条用和返回指令(4条条)子程序:功能完整、通用性好,可多次调用,使用子程序:功能完整、通用性好,可多次调用,使用子程序调用可缩短程序开发周期、缩短用户程序长子程序调用可缩短程序开发周期、缩短用户程序长度。度。调用指令的作用:断点地址(调用指令的作用:断点地址(PC中内容)压入堆栈中内容)压入堆栈中,然后转入子程序的第一行指令开始执行。中,然后转入子程序的第一行指令开始执行。返回指令的作用:堆栈中的断点地址送入返回指令的作用:堆栈中的断点地址送入PC。子程序嵌套:子程序嵌套:75第3章80C51单片

58、微机的指令系统调用指令调用指令(2条条)ACALL addr11 ;PC PC+2 ;SP SP+1,(SP) PC7PC0 ;SP SP+1,(SP) PC15PC8 ;PC100 addr11目标地址:目标地址: PC15-11 (PC+2)15-11;PC10-0addr11实例实例a10 a9 a8 1 0 0 1 a7 a6 a5 a4 a3 a2 a1 a076第3章80C51单片微机的指令系统LCALL addr16 ;PC PC+3 ;SP SP+1,(SP) PC7PC0 ;SP SP+1,(SP) PC15PC8 ;PC addr1612Haddr15-8 addr7-0a

59、ddr16: 0000H-FFFFH77第3章80C51单片微机的指令系统返回指令返回指令(2条条)子程序返回指令子程序返回指令RET ;PC15PC8 (SP),SP SP-1 ;PC7PC0 (SP),SP SP-1中断返回指令中断返回指令RETI ;PC15PC8 (SP),SP SP-1 ;PC7PC0 (SP),SP SP-1实例实例78第3章80C51单片微机的指令系统(4)空操作指令)空操作指令(1条条)NOP ;PC PC+1已知已知8031的晶振频率为的晶振频率为12MHz,试计算执行如下程,试计算执行如下程序需要的时间。序需要的时间。 ORG 1000HDELAY: MOV

60、 R2, #250DELAY1: MOV R3, #38 NOPDELAY2: DJNZ R3, DELAY2 DJNZ R2, DELAY1 RET机器周期数机器周期数11122279第3章80C51单片微机的指令系统解:根据晶振频率计算机器周期解:根据晶振频率计算机器周期T:计算程序所用机器周期数:计算程序所用机器周期数:(382+4)250+3=20003运行该程序需要的时间:运行该程序需要的时间:200031s=20.003ms80第3章80C51单片微机的指令系统2、位操作指令、位操作指令(17条条)又又称称为为布布尔尔操操作作指指令令,其其操操作作对对象象:片片内内RAM低低128

61、个个单单元元中中的的20H-2FH单单元元的的168=128位位;22个个SFR中的中的11个,共个,共83位。位。(1)位传送指令位传送指令(2条条) MOV C, bit ;Cy (bit) MOV bit, C ;bit Cy实例实例81第3章80C51单片微机的指令系统(2)位复位)位复位/置位指令置位指令(4条条) CLR C ;Cy 0 CLR bit ;bit 0 SETB C ;Cy 1 SETB bit ;bit 1例:编程实现如下例:编程实现如下16位数左环移一次。位数左环移一次。A15A8A7A082第3章80C51单片微机的指令系统(3)位运算指令)位运算指令(6条条)

62、ANL C, bit ;Cy Cy(bit)ANL C, /bit ;Cy Cybit的非的非ORL C, bit ;Cy Cy(bit)ORL C, /bit ;Cy Cy bit的非的非CPL C ;Cy 取反取反 CPL bit ;bit 取反取反实例实例83第3章80C51单片微机的指令系统(4)位控制转移指令)位控制转移指令(5条条)u以以Cy中内容为条件的转移指令中内容为条件的转移指令(2条条)JC rel ;若;若Cy=0,则,则PC PC+2 ;若;若Cy=1,则,则PC PC+2+relJNC rel ;若;若Cy=0,则,则PC PC+2+rel ;若;若Cy=1,则,则P

63、C PC+2实例实例84第3章80C51单片微机的指令系统u以位地址中内容为条件的转移指令以位地址中内容为条件的转移指令JB rel ;若;若bit=0,则,则PC PC+3 ;若;若bit=1,则,则PC PC+3+relJNB rel ;若;若bit=0,则,则PC PC+3+rel ;若;若bit=1,则,则PC PC+3JBC rel ;若;若bit=0,则,则PC PC+3 ;若;若bit=1,则,则PC PC+3+rel,且,且bit 0实例实例85第3章80C51单片微机的指令系统 例:有如下程序,试计算例:有如下程序,试计算SJMP START指令码中的指令码中的rel。 OR

64、G 1000H1000H 7401H START: MOV A, #01H1002H F8H MOV R0, A1003H 90CF01H LOOP: DPTR, #0CF01H 1017H 80rel SJMP START END86第3章80C51单片微机的指令系统 解:解: 目标转移地址目标转移地址=基地址基地址+rel rel=目标转移地址目标转移地址-基地址基地址 =1000H-(1017H+2)=-25 =-25补码补码=E7H87第3章80C51单片微机的指令系统分析下面程序段功能。分析下面程序段功能。 ORG 1000H MOV DPTR, #DATA1 MOV R0, #DA

65、TA2LOOP: MOVX A, DPTRHERE: JZ HERE MOV R0, A INC DPTR INC R0 SJMP LOOP END88第3章80C51单片微机的指令系统已知:已知:A=X,请编程完成:若,请编程完成:若X9,则,则NEXT;若;若X9,则连续执行程序。,则连续执行程序。 ORG 1000H CJNE A, #0AH, NEXT1 ;形成形成CyNEXT1: JNC NEXT ;Cy=0,则,则NEXT : ;Cy=1,则连续执行,则连续执行 :NEXT: MOV A, #50H : : END89第3章80C51单片微机的指令系统分析下面程序段的功能。分析下面

66、程序段的功能。 ORG 1000H MOV R0, #DATA1 MOV R2, #0AH CLR ALOOP: ADD A, R0 INC R0 DJNZ R2, LOOP MOV SUM, A SJMP $ END90第3章80C51单片微机的指令系统断点地址断点地址主程序主程序主程序始指主程序始指:调用指令调用指令下一条指令下一条指令:结束指令结束指令子序始指子序始指子序始指子序始指:调用指令调用指令下一条指令下一条指令:返回指令返回指令:返回指令返回指令91第3章80C51单片微机的指令系统 ORG 1FFBH1FFBH MOV SP, #70H1FFEH ACALL addr1120

67、00H MOV A, #33H 27FFH END addr11: 0000H-07FFH92第3章80C51单片微机的指令系统 0500H 758170H MOV SP, #70H0503H 12A000H LCALL MULTY0506H ADD A, #04H A000H MULTY: MOV, #03H RET93第3章80C51单片微机的指令系统编程实现以下三个区域清零:编程实现以下三个区域清零:20H22H;30H34H;40H45H。ORG 1050HZERO: MOV R0, #00H INC R0 DJNZ R2, ZERO RET END ORG 1000H MOV SP,

68、 #70H MOV R0, #03H ACALL ZEROXXXXH MOV R0, #30H MOV R2, #05H ACALL ZEROYYYYH MOV R0, #40H MOV R2, #06H ACALL ZEROZZZZH SJMP $94第3章80C51单片微机的指令系统分析下列程序功能。分析下列程序功能。ORG 1000HMOV C, 00HMOV 01H, CMOV C, 7FHMOV 00H, CMOV C, 01HMOV 7FH, CSJMP $END95第3章80C51单片微机的指令系统ORG 1000HMOV A, M1+1 ;高高8位送给累加器位送给累加器AMOV

69、 C, ACC.7 ;高高8位的最高位送给位的最高位送给CyMOV R0, #M1 ;低低8位地址位地址M1送给送给R0MOV A, R0 ;取低取低8位送给位送给ARLC A ;低低8位做带位做带C的左移运算的左移运算MOV R0, A ;左移后的低左移后的低8位送给位送给M1单元单元INC R0 ;修改地址指针,指向修改地址指针,指向M1+1MOV A, R0 ;取高取高8位送给累加器位送给累加器ARLC A ;高高8位做带位做带C的左移运算的左移运算MOV R0, A ;左移后的高左移后的高8位送给位送给M1+1单元单元SJMP $END96第3章80C51单片微机的指令系统设设M、N和

70、和W都代表位地址,试编程完成都代表位地址,试编程完成M、N中内容的异或操作。中内容的异或操作。 ORG 1000H MOV C, N ANL C, /M MOV W, C ANL C, /N ORL C, W MOV W, C SJMP $ END97第3章80C51单片微机的指令系统已知内部已知内部RAM的的M1和和M2单元中分别有一个无符号单元中分别有一个无符号8位二进制数位二进制数X和和Y。试编程比较它们的大小,并把大数。试编程比较它们的大小,并把大数送到送到MAX单元中。单元中。 ORG 0100H MOV A, M1 ;AX CJNE A, M2, LOOP1 ;XY, XY, 则则

71、LOOP1, LOOP1, 形成形成CyCyLOOP1: JNC LOOP2 ;若若Cy=0,即,即XY,则,则LOOP2 MOV A, M2 ;若若Cy=1,即,即XY,则,则AYLOOP2: MOV MAX, A ;MAX 大数大数 SJMP $ END98第3章80C51单片微机的指令系统已知已知VAR单元有一自变量单元有一自变量X,请按如下条件编出求,请按如下条件编出求函数值函数值Y并将它存入并将它存入FUNC单元的程序。单元的程序。ORG 1000HVAR DATA 30HFUNC DATA 31HMOV A, VAR ;A XJZ DON ;若;若X=0,则转到,则转到DON99第3章80C51单片微机的指令系统

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号