单片机原理与应用第3章.ppt

上传人:s****8 文档编号:68967146 上传时间:2022-12-30 格式:PPT 页数:115 大小:1.10MB
返回 下载 相关 举报
单片机原理与应用第3章.ppt_第1页
第1页 / 共115页
单片机原理与应用第3章.ppt_第2页
第2页 / 共115页
点击查看更多>>
资源描述

《单片机原理与应用第3章.ppt》由会员分享,可在线阅读,更多相关《单片机原理与应用第3章.ppt(115页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、主讲:潘静主讲:潘静第第3章章单单片机片机汇编程序设计汇编程序设计第第3章章单片机汇编程序设计单片机汇编程序设计 3.1单片机指令系统概述单片机指令系统概述3.280C51单片机指令寻址方式单片机指令寻址方式3.380C51单片机指令分类介绍单片机指令分类介绍3.4常用伪指令常用伪指令3.5汇编程序设计汇编程序设计第第3章章单片机汇编程序设计单片机汇编程序设计 3.1单片机指令系统概述单片机指令系统概述指令:指令:规定计算机基本操作的语句或命令。指规定计算机基本操作的语句或命令。指令通常有两个组成部分:操作码和操作令通常有两个组成部分:操作码和操作数。数。指令系统:指令系统:一个单片机所能执行

2、的指令集合即一个单片机所能执行的指令集合即为它的指令系统。为它的指令系统。第第3章章单片机汇编程序设计单片机汇编程序设计 一条汇编语言指令中最多包含一条汇编语言指令中最多包含4个区段个区段,如下所示如下所示:标号标号:操作码操作码操作数操作数;注释注释4个个区区段段之之间间要要用用分分隔隔符符分分开开,标标号号与与操操作作码码之之间间用用“:”隔隔开开,操操作作码码与与操操作作数数之之间间用用空空格格隔隔开开,操操作作数数与与注注释释之之间间用用“;”隔隔开开,如如果果操操作作数数有有两两个个以以上上,则则在在操操作作数数之之间要用逗号间要用逗号“,”隔开隔开(乘法指令和除法指令除外乘法指令和

3、除法指令除外)。第第3章章单片机汇编程序设计单片机汇编程序设计 51.先通读指令,了解有哪些类型、基本操作情况、使用场先通读指令,了解有哪些类型、基本操作情况、使用场合。个人可做些归纳和总结。合。个人可做些归纳和总结。2.阅读书中或别人的有关程序,其中的应用技巧,必要时阅读书中或别人的有关程序,其中的应用技巧,必要时再回来查有关内容。再回来查有关内容。3.自己编写程序,上机实验,体会指令的作用和编程技巧。自己编写程序,上机实验,体会指令的作用和编程技巧。4.参与实际项目,在实战过程中使用和提高。参与实际项目,在实战过程中使用和提高。掌握熟悉指令的一些方法掌握熟悉指令的一些方法第第3章章单片机汇

4、编程序设计单片机汇编程序设计 80C51指令中使用的符号的意义作简要说明:指令中使用的符号的意义作简要说明:Rn:表示当前工作寄存器表示当前工作寄存器R0R7中的任一寄存器中的任一寄存器n=07。Ri:可用作间接寻址的寄存器,只能是可用作间接寻址的寄存器,只能是R0,R1两个两个寄存器,寄存器,i=0,1。direct:8位直接地址,在指令中表示直接寻址方位直接地址,在指令中表示直接寻址方式,寻址范围式,寻址范围256个单元。个单元。#data:8位立即数。位立即数。#data16:16位立即数。位立即数。第第3章章单片机汇编程序设计单片机汇编程序设计 addr16:表示表示16位目的地址,主

5、要用于位目的地址,主要用于LCALL和和 LJMP指令中。指令中。addr11:表示表示11位目的地址,主要用于位目的地址,主要用于ACALL和和 AJMP指令中。指令中。rel:相对转移指令中的偏移量,为相对转移指令中的偏移量,为8位带符号补码。位带符号补码。DPTR:数据指针。数据指针。bit:内部内部RAM(包括专用寄存器)中的直接寻址位。(包括专用寄存器)中的直接寻址位。A:累加器。累加器。ACC:直接寻址方式的累加器。直接寻址方式的累加器。第第3章章单片机汇编程序设计单片机汇编程序设计 B:寄存器寄存器B。C:进位标志位,也称为累加位。进位标志位,也称为累加位。/:加在位地址的前面,

6、表示对该位状态取反。加在位地址的前面,表示对该位状态取反。:间接寻址寄存器的前缀标志。间接寻址寄存器的前缀标志。(X):):某寄存器或某单元中的内容。某寄存器或某单元中的内容。(X):由由“X”间接寻址单元中的内容。间接寻址单元中的内容。:箭头左边的内容被箭头右边的内容所取代箭头左边的内容被箭头右边的内容所取代。第第3章章单片机汇编程序设计单片机汇编程序设计 所所谓谓寻寻址址方方式式,就就是是寻寻找找操操作作数数地地址址的的方方式式,在在用用汇汇编编语语言言编编程程时时,数数据据的的存存放放、传传送送、运运算算都都要要通通过过指指令令来来完完成成。编编程程者者必必须须自自始始至至终终都都要要十

7、十分分清清楚楚操操作作数数的的位位置置,以以及及如如何何将将它它们们传传送送到到适适当当的的寄寄存存器器去去参参与与运运算算。每每一一种种计计算算机机都都具具有有多多种种寻寻址址方方式式。寻寻址址方方式式的的多多少少是是反映指令系统优反映指令系统优劣的主要指标之一。劣的主要指标之一。3.280C51单片机指令寻址方式单片机指令寻址方式第第3章章单片机汇编程序设计单片机汇编程序设计 在在MCS-51单片机指令系统中单片机指令系统中,有以下有以下7种寻址方式种寻址方式:(1)立即寻址立即寻址;(2)直接寻址直接寻址;(3)寄存器寻址寄存器寻址;(4)寄存器间接寻址寄存器间接寻址;(5)基址寄存器加

8、变址寄存器间接寻址基址寄存器加变址寄存器间接寻址;(6)位寻址位寻址(7)指令寻址指令寻址绝对寻址绝对寻址相对寻址相对寻址第第3章章单片机汇编程序设计单片机汇编程序设计 1.直接寻址方式直接寻址方式定义:定义:指令中操作数直接以存储单元地址的形式指令中操作数直接以存储单元地址的形式给出。给出。例如:例如:MOVA,3AH特点:特点:指令中含有操作数的地址。该地址指出了指令中含有操作数的地址。该地址指出了参与操作的数据所在的字节单元地址或位参与操作的数据所在的字节单元地址或位地址。计算机执行它们时便可根据直接地地址。计算机执行它们时便可根据直接地址找到所需要的操作数。址找到所需要的操作数。寻址范

9、围:寻址范围:片内片内RAM(低(低128字节)、专用寄存器。字节)、专用寄存器。第第3章章单片机汇编程序设计单片机汇编程序设计 2.立即寻址方式立即寻址方式定义:定义:将立即参与操作的数据直接写在指令中,这种寻将立即参与操作的数据直接写在指令中,这种寻址方式称为立即寻址。址方式称为立即寻址。例如例如MOVA,#3AHMOVDPTR,#data16特点:特点:指令中直接含有所需的操作数。该操作数可以是指令中直接含有所需的操作数。该操作数可以是8位的,也可以是位的,也可以是16位的,常常处在指令的第二位的,常常处在指令的第二字节和第三字节的位置上。立即数通常使用字节和第三字节的位置上。立即数通常

10、使用#data或或#data16表示,在立即数前面加表示,在立即数前面加“#”标志,标志,用以和直接寻址中的直接地址(用以和直接寻址中的直接地址(direct或或bit)相区别。)相区别。第第3章章单片机汇编程序设计单片机汇编程序设计 定义:定义:操作数在寄存器中,只要指定了寄存器就能得到操作数在寄存器中,只要指定了寄存器就能得到操作数。操作数。例如:例如:MOVA,R0特点:特点:由指令指出某一个寄存器的内容作为操作数。存由指令指出某一个寄存器的内容作为操作数。存放操作数的寄存器在指令代码中不占据单独的一放操作数的寄存器在指令代码中不占据单独的一个字节,而是嵌入(隐含)到操作码字节中。个字节

11、,而是嵌入(隐含)到操作码字节中。寻址范围:寻址范围:四组通用寄存器四组通用寄存器Rn(R0R7)、部分专用寄)、部分专用寄存器(存器(A,B,DPTR,CY)。)。3.寄存器寻址方式寄存器寻址方式第第3章章单片机汇编程序设计单片机汇编程序设计 4.寄存器间接寻址方式寄存器间接寻址方式定义:定义:指令给出的寄存器中存放的是操作数据的单元地址,指令给出的寄存器中存放的是操作数据的单元地址,这种寻址方式称为寄存器间接寻址。这种寻址方式称为寄存器间接寻址。例如:例如:MOVA,R0特点:特点:指令给出的寄存器中存放的是操作数地址。寄存器间指令给出的寄存器中存放的是操作数地址。寄存器间接寻址是一种二次

12、寻找操作数地址的寻址方式,寄存接寻址是一种二次寻找操作数地址的寻址方式,寄存器前边必须加前缀符号器前边必须加前缀符号“”。不能用于寻址特殊功能。不能用于寻址特殊功能寄存器寄存器SFR。第第3章章单片机汇编程序设计单片机汇编程序设计 寻址范围:寻址范围:1、对于内部对于内部RAM低低128单元访问(只能使用单元访问(只能使用R0或或R1作间作间 址寄存器)址寄存器)2、对于外部对于外部RAM访问(使用访问(使用DPTR作间址寄存器)。作间址寄存器)。3、对于外部低对于外部低256单元单元RAM的访问,除可以使用的访问,除可以使用DPTR外,外,还可以使用还可以使用R0或或R1作间址寄存器(先确定

13、高作间址寄存器(先确定高8位地址给位地址给 P2)。)。4.寄存器间接寻址方式寄存器间接寻址方式第第3章章单片机汇编程序设计单片机汇编程序设计 为区分以上四种寻址方式,现在列出四种语句为区分以上四种寻址方式,现在列出四种语句1.MOVA,#30H;A30H;最后最后A中的数据中的数据为为30H如果如果30H单元存入的数据为单元存入的数据为0FFH2.MOVA,30H;A(30H);最后最后A中的数据中的数据为为0FFH3.MOVR1,#30H;R130HMOVA,R1;A(R1);A30H;最后最后A中的数据中的数据为为30H4.MOVR1,#30H;R130HMOVA,R1;A(R1);A(

14、30H);最后最后A中的数据中的数据为为0FFH第第3章章单片机汇编程序设计单片机汇编程序设计 5.变址寻址方式变址寻址方式定义:定义:操作数存放在变址寄存器(累加器操作数存放在变址寄存器(累加器A)和基址寄存)和基址寄存器(器(DPTR或或PC)相加形成的)相加形成的16位地址单元中。这位地址单元中。这种寻址方式称为基址加变址寄存器间接寻址,简称种寻址方式称为基址加变址寄存器间接寻址,简称为变址寻址。为变址寻址。例如:例如:MOVCA,A+DPTR;A(A)+(DPTR)MOVCA,A+PC;A(A)+(PC)JMPA+DPTR;PC(A)+(DPTR)第第3章章单片机汇编程序设计单片机汇编

15、程序设计 特点:特点:指令操作码中隐含作为基址寄存器用的指令操作码中隐含作为基址寄存器用的DPTR(或(或 PC)和作为变址用的累加器)和作为变址用的累加器A。在执行变址寻址指。在执行变址寻址指 令时,令时,80C51单片机先把基地址(单片机先把基地址(DPTR或或PC 的内的内 容)和地址偏移量(容)和地址偏移量(A的内容)相加,以形成操作数的内容)相加,以形成操作数 地址,再由操作数地址找到操作数,并完成相应的地址,再由操作数地址找到操作数,并完成相应的 操作。变址寻址方式是单字节指令。操作。变址寻址方式是单字节指令。寻址范围:寻址范围:只能对程序存储器只能对程序存储器ROM进行寻址,主要

16、用于查进行寻址,主要用于查 表性质的访问。表性质的访问。5.变址寻址方式变址寻址方式第第3章章单片机汇编程序设计单片机汇编程序设计 6.位寻址方式位寻址方式定义:定义:指令中给出的操作数是一个可单独寻址的位地址,这指令中给出的操作数是一个可单独寻址的位地址,这种寻址方式称为位寻址方式。种寻址方式称为位寻址方式。例如:例如:MOVC,3AH特点:特点:位寻址是直接寻址方式的一种,其特点是对位寻址是直接寻址方式的一种,其特点是对8位二进制位二进制数中的某一位的地址进行操作。数中的某一位的地址进行操作。寻址范围:寻址范围:位寻址区位寻址区20H2FH共共16个单元里个单元里128位地址(位地址(00

17、H7FH)21个特殊功能寄存器中的个特殊功能寄存器中的11个可位寻址的寄存器里共个可位寻址的寄存器里共82位位80H(P0)、88H(TCON)、90H(P1)、98H(SCON)、0A0H(P2)、0A8H(IE少少2位位)、0B0H(P3)、0B8H(IP少少3位位)、0D0H(PSW少少1位位)、0E0H(ACC)、0F0H(B)。第第3章章单片机汇编程序设计单片机汇编程序设计 寻址形式:寻址形式:(1)用直接位地址:用直接位地址:MOVC,8CH(2)用单元地址加位序用单元地址加位序MOVC,88H.4;88H+4H=8CH(3)用位名称:用位名称:SETTR0;启动定时器启动定时器0

18、(4)用寄存器名加位序:用寄存器名加位序:MOVC,TCON.4;6.位寻址方式位寻址方式第第3章章单片机汇编程序设计单片机汇编程序设计 一绝对寻址一绝对寻址绝对寻址是在指令的操作数中直接提供目的位置的地绝对寻址是在指令的操作数中直接提供目的位置的地址或地址的一部分。址或地址的一部分。长转移和长调用提供目的位置的长转移和长调用提供目的位置的16位地址位地址 绝对转移和绝对调用提供目的位置的绝对转移和绝对调用提供目的位置的16位地址的低位地址的低 11位位7.指令寻址指令寻址第第3章章单片机汇编程序设计单片机汇编程序设计 二二相对寻址方式相对寻址方式定义:定义:将程序计数器将程序计数器PC的当前

19、值(取出本条指令后的的当前值(取出本条指令后的PC值)与指令第二个字节给出的偏移量(值)与指令第二个字节给出的偏移量(rel)相加,)相加,形成新的转移目标地址。称为相对寻址方式。形成新的转移目标地址。称为相对寻址方式。例如:例如:SJMPrel;PC(PC)+2+rel特点:特点:相对寻址方式是为实现程序的相对转移而设计的,相对寻址方式是为实现程序的相对转移而设计的,为相对转移指令所使用,其指令码中含有相对地址为相对转移指令所使用,其指令码中含有相对地址偏移量,能生成浮动代码。偏移量,能生成浮动代码。目的地址目的地址=指令地址指令地址(PC)指令字节数偏移量指令字节数偏移量(rel)第第3章

20、章单片机汇编程序设计单片机汇编程序设计 寻址范围:寻址范围:只能对程序存储器只能对程序存储器ROM进行寻址。相对地址进行寻址。相对地址 偏移量(偏移量(rel)是一个带符号的是一个带符号的8位二进制补位二进制补 码码,其取值范围为,其取值范围为 128127(以(以PC为中为中 间的间的256个字节范围)。个字节范围)。相对寻址方式相对寻址方式第第3章章单片机汇编程序设计单片机汇编程序设计 总结:总结:7种寻址方式及使用空间种寻址方式及使用空间 7F82第第3章章单片机汇编程序设计单片机汇编程序设计 3.380C51单片机指令分类(单片机指令分类(共有共有111条)条)按指令的功能按指令的功能

21、,80C51指令系统可分为下列指令系统可分为下列5类类:数据传送类数据传送类(29条)算术运算类算术运算类(24条)逻辑运算及移位类逻辑运算及移位类(24条)位操作类位操作类(17条)控制转移类控制转移类(17条)第第3章章单片机汇编程序设计单片机汇编程序设计 1.单字节指令单字节指令单字节指令格式由单字节指令格式由8位二进制编码表示位二进制编码表示,例如例如:CLRAE4H2.双字节指令双字节指令双字节指令格式由两个字节组成双字节指令格式由两个字节组成,操作码和操作数操作码和操作数,例如例如:MOVA,10H74H10H3.三字节指令三字节指令三字节指令格式中三字节指令格式中,第一个字节为操

22、作码第一个字节为操作码,后两个字节为后两个字节为操作数操作数,例如例如:MOV40H,30H75H40H30H 第第3章章单片机汇编程序设计单片机汇编程序设计 3.3.1数据传送类指令(数据传送类指令(29条)条)MCS-51传传送送指指令令示示意意图图第第3章章单片机汇编程序设计单片机汇编程序设计 第第3章章单片机汇编程序设计单片机汇编程序设计 第第3章章单片机汇编程序设计单片机汇编程序设计 一数据传送指令一数据传送指令以助记符以助记符MOV为基础,分成:为基础,分成:片内数据存储器传送指令片内数据存储器传送指令片外数据存储器传送指令片外数据存储器传送指令程序存储器传送指令程序存储器传送指令

23、第第3章章单片机汇编程序设计单片机汇编程序设计 1片内数据存储器传送指令片内数据存储器传送指令MOV指令格式:指令格式:MOV 目的操作数,源操作数目的操作数,源操作数其中:其中:源操作数可以为源操作数可以为A、Rn、Ri、direct、#data目的操作数可以为目的操作数可以为A、Rn、Ri、direct第第3章章单片机汇编程序设计单片机汇编程序设计(1)以)以A为目的操作数为目的操作数MOV A,Rn ;A(Rn)MOV A,direct ;A(direct)MOV A,Ri ;A(Ri)MOV A,#data ;A#data(2)以)以Rn为目的操作数为目的操作数MOV Rn,A ;Rn

24、 (A)MOV Rn,direct;Rn(direct)MOV Rn,#data ;Rn#data第第3章章单片机汇编程序设计单片机汇编程序设计(3)以直接地址)以直接地址direct为目的操作数为目的操作数 MOV direct,A;direct (A)MOV direct,Rn;direct(Rn)MOV direct,direct;direct(direct)MOV direct,Ri ;direct(Ri)MOV direct,#data;direct#data(4)以间接地址)以间接地址Ri为目的操作数为目的操作数 MOV Ri,A ;(;(Ri)(A)MOV Ri,direct;(

25、;(Ri)(direct)MOV Ri,#data;(;(Ri)#data第第3章章单片机汇编程序设计单片机汇编程序设计(5)以)以DPTR为目的操作数为目的操作数 MOV DPTR,#data16 ;DPTR#data16注意,源操作数和目的操作数中的注意,源操作数和目的操作数中的Rn和和Ri不能相互配对不能相互配对。如不允许有如不允许有“MOV Rn,Rn”,“MOV Ri,Rn”这样的指令,这样的指令,在在MOV指令中,不允许在一条指令中同时出现工作寄存器,指令中,不允许在一条指令中同时出现工作寄存器,无论它是寄存器寻址还是寄存器间接寻址。无论它是寄存器寻址还是寄存器间接寻址。第第3章章

26、单片机汇编程序设计单片机汇编程序设计 例例3-1设内部设内部RAM中中30H的内容为的内容为40H,40H单元的内容单元的内容为为10H,P1口作为输入口,其输入数据为口作为输入口,其输入数据为0CAH,分析下面程序段的执行结果。分析下面程序段的执行结果。MOVR0,#30H;单元地址以立即数形式送入单元地址以立即数形式送入R0MOVA,R0;以以R0间接寻址将间接寻址将30H单元内容送单元内容送A所送内容为所送内容为40HMOVR1,A;A的内容送的内容送R1MOVB,R1;以以R1间接寻址将间接寻址将40H单元内容送单元内容送B所送内容为所送内容为10HMOVR1,P1;将将P1内容送入内

27、容送入R1MOVP2,R1;将将R1内容送入内容送入P2所送内容为所送内容为0CAH执行结果:执行结果:(R0)=30H,(R1)=0CAH,(A)=40H,(B)=10H,(P1)=0CAH,(40H)=10H,(P2)=0CAH第第3章章单片机汇编程序设计单片机汇编程序设计 例例3-2将片内将片内RAM中的中的16H的内容的内容0B9H送送P1口。口。解法解法1:MOVP1,16H解法解法2:MOVA,16HMOVP1,A解法解法3:MOVR0,#16HMOVP1,R0第第3章章单片机汇编程序设计单片机汇编程序设计 2.外部数据存储器读外部数据存储器读/写指令写指令(1)DPTR作间址寄存

28、器的外部作间址寄存器的外部RAM单元读单元读/写指令写指令MOVXA,DPTR(DPTR间接寻址的外部间接寻址的外部RAM单元读单元读)MOVXDPTR,A(DPTR间接寻址的外部间接寻址的外部RAM单元写单元写)(2)Ri作间址寄存器的外部作间址寄存器的外部RAM单元读单元读/写指令写指令MOVXA,Ri(Ri间接寻址的外部间接寻址的外部RAM单元读单元读)MOVXRi,A(Ri间接寻址的外部间接寻址的外部RAM单元写单元写)第第3章章单片机汇编程序设计单片机汇编程序设计 例例3-3已知片外已知片外RAM中的中的70H的一个数的一个数X,送到片外,送到片外RAM的的1010H单元,编写程序。

29、单元,编写程序。解:程序如下:解:程序如下:ORG1000H;指定程序地址指定程序地址MOVP2,#00H;高高8位地址为位地址为00HMOVR0,#70H;低低8位地址为位地址为70HMOVXA,R0;取数据取数据X到到AMOVDPTR,#1010H;设片外目的地址设片外目的地址MOVXDPTR,A;将数据将数据X送目的地址送目的地址SJMP$;程序执行到此停止程序执行到此停止END;程序语句结束标志程序语句结束标志第第3章章单片机汇编程序设计单片机汇编程序设计 MOVCA,A+PC(程序存储器读)(程序存储器读)MOVCA,A+DPTR(程序存储器读)(程序存储器读)第一条指令是以第一条指

30、令是以PC作为基址寄存器作为基址寄存器,缺点:是表格只能放在该条查表指令后面的缺点:是表格只能放在该条查表指令后面的256个单元个单元之中之中,表格的大小受到限表格的大小受到限制制,而且表格只能被一段程序所而且表格只能被一段程序所利用。利用。3.程序存储器读指令组程序存储器读指令组第第3章章单片机汇编程序设计单片机汇编程序设计 第二条指令是以第二条指令是以DPTR作为基址寄存器作为基址寄存器,特点:表格的大特点:表格的大小和位置可以在小和位置可以在64KB程序存储器中任意程序存储器中任意安排安排,并且一个表格可以为各个程序块所共用。并且一个表格可以为各个程序块所共用。第第3章章单片机汇编程序设

31、计单片机汇编程序设计 例例3-4已知片内已知片内20H单元中有一个单元中有一个09范围内的数,用以上查范围内的数,用以上查表指令获得该数的平方值,并将其送至表指令获得该数的平方值,并将其送至21H单元。设单元。设平方表头地址为平方表头地址为2000H,(20H)=02H。编写程序。编写程序。解:采用解:采用PC作为基址寄存器,程序如下:作为基址寄存器,程序如下:ORG1FF7H1FF7HMOVA,20H;A(20H),(A)=02H1FF9HADDA,#data;加修正量加修正量1FFBHMOVCA,A+PC;查查表表1FFCHMOV21H,A;21H(A)1FFEHSJMP$;停止停止执执行

32、行2000HDB02001HDB12002HDB4:2009HDB81END第第3章章单片机汇编程序设计单片机汇编程序设计 采用采用DPTR作为基址寄存器,程序如下:作为基址寄存器,程序如下:ORG1000HMOVA,20H;A(20H),(A)=02HMOVDPTR,#2000H;地址指地址指针针定在定在2000HMOVCA,A+DPTR;查查表表MOV21H,A;21H(A)SJMP$;停止停止执执行行ORG2000H;平方表从平方表从2000H开始开始DB0DB1DB4:DB81END第第3章章单片机汇编程序设计单片机汇编程序设计 4.堆栈操作指令组堆栈操作指令组PUSHdirect(进

33、栈)(进栈)POPdirect(出栈)(出栈)第第3章章单片机汇编程序设计单片机汇编程序设计 例例3-5(40H)=01H,(,(30H)02H,分析下列程序执行,分析下列程序执行后的结果。后的结果。堆栈区是片内堆栈区是片内RAM的一个数据区,进出栈是的一个数据区,进出栈是“后进先出后进先出”MOVSP,50H;设栈顶设栈顶PUSH40H;51H(40H)PUSH30H;52H(30H)POP40H;40H(52H)POP30H;30H(51H)执行结果:执行结果:(SP)=50H,(,(40H)=02H,(,(30H)=01H第第3章章单片机汇编程序设计单片机汇编程序设计 正确指令正确指令错

34、误指令错误指令PUSHACCPUSHAPOPACCPOPAPUSH00HPUSHR0POP00HPOPR0第第3章章单片机汇编程序设计单片机汇编程序设计(1)整字节交换指令)整字节交换指令XCHA,Rn(寄存器寻址字节交换)(寄存器寻址字节交换)XCHA,direct(直接寻址字节交换)(直接寻址字节交换)XCHA,Ri(Ri间接寻址字节交换)间接寻址字节交换)5.数据交换指令组数据交换指令组第第3章章单片机汇编程序设计单片机汇编程序设计 例例3-6已知外部已知外部RAM2020H单元中有一个数单元中有一个数X,内部,内部RAM20H单元中有一个数单元中有一个数Y,编写使它们互换的程序。,编写

35、使它们互换的程序。解:程序如下:解:程序如下:MOVP2,#20H;设外部设外部RAM高高8位地址位地址MOVR1,#20H;设设RAM低低8位地址位地址MOVXA,R1;取外部取外部RAM2020H中数中数X到到AXCHA,R1;内部内部RAM20H中数中数Y和和A中数中数X交交换换MOVXR1,A;交换后将交换后将Y送到外部送到外部RAM第第3章章单片机汇编程序设计单片机汇编程序设计(2)低半字节交换指令)低半字节交换指令XCHDA,Ri(A和和Ri间接寻址低间接寻址低4位交换,高位交换,高4位不变)位不变)(3)累加器高)累加器高4位、低位、低4位交换指令位交换指令SWAPA(累加器内容

36、高低半字节交换)(累加器内容高低半字节交换)第第3章章单片机汇编程序设计单片机汇编程序设计 例例3-7已知片内已知片内50H单元中有一个单元中有一个09的数,编写使它们变为的数,编写使它们变为相应的相应的ASCII码的程序。码的程序。解:解:09的的ASCII码为码为30H39H。程序如下。程序如下:MOVR0,#50HMOVA,#30HXCHDA,R0MOVR0,A与下面程序相当与下面程序相当:MOVR0,#50HMOVA,#30HADDA,R0MOVR0,A第第3章章单片机汇编程序设计单片机汇编程序设计 数据传送指令使用方法和技巧数据传送指令使用方法和技巧例例3-8将将01H单元内容送单元

37、内容送02H单元,有几种方法可以实现。单元,有几种方法可以实现。解:解:(1)MOV02H,01H;直接寻址直接寻址3字节字节2周期周期(2)MOVA,01H;4字节字节2周期周期MOV02H,A(3)MOVA,R1;寄存器寻址寄存器寻址 2字节字节2周期周期MOVR2,A(4)MOVR0,#01H;间接寻址间接寻址4字节字节3周期周期MOV02H,R0(5)PUSH01H;栈操作栈操作4字节字节4周期周期POP02H第第3章章单片机汇编程序设计单片机汇编程序设计 数据传送指令使用方法和技巧数据传送指令使用方法和技巧例例3-9将片内将片内40H单元内容送至片外单元内容送至片外50H单元,将片外

38、单元,将片外2350H单元内容送片内单元内容送片内40H单元。单元。解:解:MOVP2,#00H;设置外存地址高字节设置外存地址高字节MOVR0,#50H;设置外存地址低字节设置外存地址低字节MOVA,40H;通过累加器读写外存储器通过累加器读写外存储器MOVXR0,A;存入外存储器存入外存储器MOVP2,#23H;设置外存地址高字节设置外存地址高字节MOVXA,R0;外存地址低字节仍是外存地址低字节仍是50HMOV40H,A;外存外存2350H单元内容单元内容送内存送内存40H单元单元R0内的地址内的地址50H既是内部既是内部单单元地址,又是外部元地址,又是外部RAM低低8位位第第3章章单片

39、机汇编程序设计单片机汇编程序设计 判断指令的合法性:判断指令的合法性:MOV A,R2 MOV R0,R1 MOV PC,#2222H PUSH R0第第3章章单片机汇编程序设计单片机汇编程序设计 3.3.2算术运算类指令算术运算类指令(24条条)第第3章章单片机汇编程序设计单片机汇编程序设计 第第3章章单片机汇编程序设计单片机汇编程序设计 1.加法指令组加法指令组ADDA,#data(立即数加法)(立即数加法)ADDA,direct(直接寻址加法)(直接寻址加法)ADDA,Ri(间接寻址加法)间接寻址加法)ADDA,Rn(寄存器寻址加法)(寄存器寻址加法)例例3-10分析分析执行如下指令后累

40、加器执行如下指令后累加器A和和PSW中各标志位的中各标志位的变化。变化。MOVA,#9EH;9EH=158ADDA,#71H;71H=113解:解:9EH(A)=10011110+)71Hdata=0111000110FH100001111CYAC第第3章章单片机汇编程序设计单片机汇编程序设计 2.带进位加法指令组带进位加法指令组ADDCA,#data(立即数带进位加法)(立即数带进位加法)ADDCA,direct(直接寻址带进位加法)(直接寻址带进位加法)ADDCA,Ri(间接寻址带进位加法)间接寻址带进位加法)ADDCA,Rn(寄存器寻址带进位加法)(寄存器寻址带进位加法)第第3章章单片机

41、汇编程序设计单片机汇编程序设计 例例3-11设设(A)=0AAH,(R0)=55H,CY=1,执行如下指令,执行如下指令ADDCA,R0后后,求求A、CY、AC、OV、P、PSW之值和之值和PSW中中各标志位的变化。各标志位的变化。解:解:0AAH(A)=10101010055Hdata=01010101+)1(CY)1100H100000000最后得最后得(A)=00H,(CY)=1,(AC)=1,(OV)=0,(P)=0,(PSW)=11000000B=0C0H第第3章章单片机汇编程序设计单片机汇编程序设计 3.加加1指令组指令组INCA(累加器加(累加器加1)INCdirect(直接寻址

42、单元加(直接寻址单元加1)INCRi(间接寻址单元加间接寻址单元加1)INCRn(寄存器寻址单元加(寄存器寻址单元加1)INCDPTR(16位数据指针加位数据指针加1)若若A0FFH,执行,执行INCA不同于执行不同于执行ADDA,#1。执行执行INCA后,后,(A)=00H,不改变,不改变CY执行执行ADDA,#1后,(后,(A)=00H,(CY)=1第第3章章单片机汇编程序设计单片机汇编程序设计 4.带借位减法指令组带借位减法指令组SUBBA,#data(立即数带借位减法)(立即数带借位减法)SUBBA,direct(直接寻址带借位减法)(直接寻址带借位减法)SUBBA,Ri(间接寻址带借

43、位减法)间接寻址带借位减法)SUBBA,Rn(寄存器寻址带借位减法)(寄存器寻址带借位减法)没有不带借位的减法指令没有不带借位的减法指令第第3章章单片机汇编程序设计单片机汇编程序设计 例例3-12设设(A)=0A9H,(R0)=20H,(20H)=98H,执行如下程,执行如下程序,说明结果。序,说明结果。CLRC;CY清清0SUBBA,R0解:解:0A9H(A)=1010100198H(20H)=10011000)(CY)011H00010001按无符号数运算按无符号数运算0A9H98H=11H,(PSW)=00H按带符号数运算按带符号数运算10101001为为1010111(57H)的补码,

44、的补码,10011000为为1101000(68H)的补码。的补码。(57H)(68H)=11H,无借位,无溢出,无借位,无溢出第第3章章单片机汇编程序设计单片机汇编程序设计 例例3-13设设(A)=76H,立即数为,立即数为0C5H,(CY)=0,执行如下程,执行如下程序,说明结果。序,说明结果。SUBBA,#0C5H解:竖式解:竖式76H(A)=011101100C5Hdata=11000101)(CY)0B1H(CY)10110001异符号数相减运算相当于得数超过范围,异符号数相减运算相当于得数超过范围,产生溢出,产生溢出,(OV)=1,结果是错的。,结果是错的。76H(3BH)=0B1

45、H超范围超范围0B1H7FH177(+127)第第3章章单片机汇编程序设计单片机汇编程序设计 5.减减1指令组指令组DECA(累加器减(累加器减1)DECdirect(直接寻址单元减(直接寻址单元减1)DECRi(间接寻址单元减间接寻址单元减1)DECRn(寄存器减(寄存器减1)例例3-14分析执行以下程序结果分析执行以下程序结果,程序如下:,程序如下:MOVR1,7FHMOV7EH,#00HMOV7FH,#40HDECR1;间间址址R1指向指向7FH单单元减元减1,40H减减1DECR1;7FH减减1,(R1)=7EHDECR1;间间址址R1指向指向7EH单单元减元减1,00H减减1解:解:

46、结结果果(7FH)=3FH,(R1)=7EH,(7EH)=0FFH,第第3章章单片机汇编程序设计单片机汇编程序设计 6.乘除法指令组乘除法指令组(1)乘法指令)乘法指令乘法指令完成单字节的乘法乘法指令完成单字节的乘法,只有一条指令只有一条指令:MULAB这这条条指指令令的的功功能能是是:将将累累加加器器A的的内内容容与与寄寄存存器器B的的内内容容相相乘乘,乘乘积积的的低低8位位存存放放在在累累加加器器A中中,高高8位位存存放放于于寄寄存存器器B中中。如如果果乘乘积积超超过过0FFH,则则溢溢出出标标志志OV置置“1”,否否则则清清“0”。进位标志进位标志CY总是被清总是被清“0”。第第3章章单

47、片机汇编程序设计单片机汇编程序设计 例例3-15(A)=90H(144D),(B)=62H(98D),分析执行以下程,分析执行以下程序结果序结果,程序如下:,程序如下:MULAB解:解:结结果果为为乘乘积积3720H(14112D),(A)=20H,(B)=37H(OV)=1(B不不为为0),),(CY)=0(总总是是0),),(P)=1(A内内为为奇数个奇数个1)第第3章章单片机汇编程序设计单片机汇编程序设计(2)除法指令)除法指令除法指令完成单字节的除法除法指令完成单字节的除法,只有一条指令只有一条指令:DIVAB这这条条指指令令的的功功能能是是:将将累累加加器器A中中的的内内容容除除以以

48、寄寄存存器器B中中的的8位位无无符符号号整整数数,所所得得商商的的整整数数部部分分存存放放在在累累加加器器A中中,余余数数部部分分存存放放在在寄寄存存器器B中中。若若原原来来B中中的的内内容容为为0,则则执执行行该该指指令令后后,A与与B中中的的内内容容不不定定,并并将将溢溢出出标标志志OV置置“1”,在任何情况下在任何情况下,进位标志进位标志CY总是被清总是被清“0”。第第3章章单片机汇编程序设计单片机汇编程序设计 例例3-16设设(A)=65H(101D),(B)=14H(20D),分析执行以下,分析执行以下程序结果程序结果,程序如下:,程序如下:DIVAB解:解:结结果果为为乘乘积积(A

49、)=05H(商商),(B)=01H(余数余数)(OV)=0(除数(除数为为0则则=1),(CY)=0(总总是是0),),(P)=0(A内内为为2个个1)第第3章章单片机汇编程序设计单片机汇编程序设计 7.十进制调整指令十进制调整指令DAA若若AC=1,即,即ACC.3在操作过程中有进位,在操作过程中有进位,或者或者A中低中低4位位9,则则A中低中低4位位+06H;若若CY=1,即,即ACC.7在操作过程中有进位,在操作过程中有进位,或者或者A中高中高4位位9,则则A中高中高4位位+60H。这这条条指指令令对对累累加加器器A参参与与的的BCD码码加加法法运运算算所所获获得得的的8位位结结果果进进

50、行行十十进进制制调调整整,使使累累加加器器A中中的的内内容容调调整整为为二二位位压压缩缩型型BCD码码的的数数。使使用用时时必必须须注注意意,它它只只能能跟跟在在加加法法指指令令之之后后,不不能对减法指令的结果进行调整能对减法指令的结果进行调整,且其结果不影响溢出标志位。且其结果不影响溢出标志位。第第3章章单片机汇编程序设计单片机汇编程序设计 例例3-17编写编写78+93的的BCD加法加法程序,并分析调整过程。程序,并分析调整过程。解:解:ORG3000HMOVA,#78HADDA,#93HDAASJMP$END结果得结果得(A)=71,(CY)=1,(OV)=078H(A)=0111100

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

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com