书签 分享 收藏 举报 版权申诉 / 70
上传文档赚钱

类型第4章-80C51单片机汇编语言程序的设计课件-.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4146818
  • 上传时间:2022-11-14
  • 格式:PPT
  • 页数:70
  • 大小:901.67KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第4章-80C51单片机汇编语言程序的设计课件-.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    80 C51 单片机 汇编语言 程序 设计 课件
    资源描述:

    1、课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础第第4 4章章 MCS-51MCS-51汇编语言程序设计汇编语言程序设计教学基本要求教学基本要求:(1 1)、了解)、了解MCS-51MCS-51汇编语言程序设计的特点;汇编语言程序设计的特点;(2 2)、熟悉)、熟悉MCS-51MCS-51汇编语言伪指令的功能及用法;汇编语言伪指令的功能及用法;(3 3)、掌握顺序、分支、循环程序的设计方法)、掌握顺序、分支、循环程序的设计方法;(4 4)、掌握)、掌握KEILKEIL软件的使用方法。软件的使用方法。教学重点教学重点:(1 1)、)、KEIL软件的使用方法软件的使用方法;(2

    2、2)、分支、循环程序的设计方法;)、分支、循环程序的设计方法;(3 3)、定时、查表程序的设计方法;)、定时、查表程序的设计方法;教学难点教学难点:(1 1)、)、KEIL软件调试程序的方法软件调试程序的方法;(2 2)、利用)、利用JMP A+DPTRJMP A+DPTR指令实现程序多分支;指令实现程序多分支;(3 3)、查表程序的设计方法;)、查表程序的设计方法;(4 4)、子程序结构与堆栈的关系。)、子程序结构与堆栈的关系。课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础4.1 4.1 单片机程序程序设计语言概述单片机程序程序设计语言概述4.1.1 4.1.1 机器语言

    3、和机器语言和汇编语言汇编语言4.1.2 4.1.2 单片机使用的高级语言单片机使用的高级语言(1 1)BASICBASIC语言语言(2 2)C C语言语言(3 3)PL/MPL/M语言语言 4.1.3 80C514.1.3 80C51单片机汇编语言的语句格式单片机汇编语言的语句格式课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础汇编语言程序设计汇编语言程序设计必须注意如下特点:必须注意如下特点:(1 1)设计人员必须详细了解单片机的硬件结构,以便在程序设设计人员必须详细了解单片机的硬件结构,以便在程序设计中熟练使用;计中熟练使用;(2 2)必须熟悉汇编语言指令的功能和用法;)

    4、必须熟悉汇编语言指令的功能和用法;(3 3)在程序设计前,必须分析设计任务,确定所用算法,确定)在程序设计前,必须分析设计任务,确定所用算法,确定程序结构,确定数据的类型、数据的结构,必须对数据的存放、程序结构,确定数据的类型、数据的结构,必须对数据的存放、寄存器和工作单元的使用以及所用硬件资源等作出具体安排;寄存器和工作单元的使用以及所用硬件资源等作出具体安排;(4 4)根据分析,画出程序设计流程图;)根据分析,画出程序设计流程图;(5 5)根据程序设计流程图编写程序。)根据程序设计流程图编写程序。课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础4.2 4.2 汇编语言程序

    5、的基本结构形式汇编语言程序的基本结构形式 单片机单片机汇编语言程序设计的基本结构形式一般分为以下汇编语言程序设计的基本结构形式一般分为以下4 4种种形式,即顺序结构、分支结构、循环结构和子程序结构。形式,即顺序结构、分支结构、循环结构和子程序结构。4.2.1 4.2.1 顺序程序结构顺序程序结构 顺序程序是顺序程序是最简单的程序结构,在最简单的程序结构,在顺序顺序程序中程序中,既无分支,既无分支,循环,也循环,也不调用不调用子程序,程序执行时一条一条子程序,程序执行时一条一条地地按顺序执行指令按顺序执行指令 例:假定三字节无符号数相加,其中一个加数在内部例:假定三字节无符号数相加,其中一个加数

    6、在内部RAMRAM的的50H50H、51H51H和和52H52H单元中,另一个加数在内部单元中,另一个加数在内部RAMRAM的的53H53H、54H54H和和55H55H单元中,要求把相加之和存放在单元中,要求把相加之和存放在50H50H、51H51H和和52H52H单元中,进位存单元中,进位存放在位寻址区的放在位寻址区的00H00H位中。位中。解解:(:(1 1)分析任务:求两数之和)分析任务:求两数之和 (2 2)算法:加法运算()算法:加法运算(ADDADD或或ADDCADDC)课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 (3 3)程序结构)程序结构:顺序或循环结

    7、构顺序或循环结构 (4 4)数据类型:三字节、二进制、无符号数)数据类型:三字节、二进制、无符号数 (5 5)数据结构:升序或降序排列数据结构:升序或降序排列 (6 6)RAMRAM单元安排单元安排:(内部(内部RAMRAM字节单元、位地址空间字节单元、位地址空间)(7 7)采用寄存器间接寻址方式()采用寄存器间接寻址方式(R0R0、R1R1)加数(加数(N1N1)高字节(高字节(8 8位)位)中字节(中字节(8 8位)位)低字节(低字节(8 8位)位)加数(加数(N2N2)高字节(高字节(8 8位)位)中字节(中字节(8 8位)位)低字节(低字节(8 8位)位)加数(加数(N1N1)加数(加

    8、数(N2N2)和(和(N3N3)52H52H单元单元低字节(低字节(8 8位)位)55H55H单元单元 低字节(低字节(8 8位)位)52H52H单元单元 低字节(低字节(8 8位)位)51H51H单元单元中字节(中字节(8 8位)位)54H54H单元单元 中字节(中字节(8 8位)位)51H51H单元单元 中字节(中字节(8 8位)位)50H50H单元单元高字节(高字节(8 8位)位)53H53H单元单元 高字节(高字节(8 8位)位)50H50H单元单元 高字节(高字节(8 8位)位)00H00H位位进位位进位位课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 (8 8)

    9、程序设计流程框图;)程序设计流程框图;常常用用流流程程框框图图符符号号开开始始结结束束进进程程判判断断判判断断开开始始加加数数N N1 1和和加加数数N N2 2的的低低字字节节相相加加加加数数N N1 1和和加加数数N N2 2的的高高字字节节相相加加加加数数N N1 1和和加加数数N N2 2的的中中字字节节相相加加处处理理进进位位位位结结束束开开始始取取N N1 1低低字字节节取取N N2 2低低字字节节N N1 1和和N N2 2低低字字节节相相加加保保存存N N1 1和和N N2 2低低字字节节和和取取N N1 1中中字字节节取取N N2 2中中字字节节N N1 1和和N N2 2中

    10、中字字节节相相加加保保存存N N1 1和和N N2 2中中字字节节和和取取N N1 1高高字字节节取取N N2 2高高字字节节N N1 1和和N N2 2高高字字节节相相加加保保存存N N1 1和和N N2 2高高字字节节和和处处理理进进位位位位结结束束课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础(9 9)程序清单)程序清单1 1;MOV AMOV A,52H52H;(;(A A)=被加数被加数N1N1低字节低字节 ADD AADD A,55H55H;(;(A A)=被加数被加数N1N1低字节低字节+加数加数N2N2低字节低字节 低字节和的进位在低字节和的进位在CYCY中

    11、中 MOV 52HMOV 52H,A A;(52H52H)=和和N3N3低字节低字节 MOV AMOV A,51H51H;(;(A A)=被加数被加数N1N1中字节中字节 ADDC AADDC A,54H54H;(;(A A)=被加数被加数N1N1中字节中字节+加数加数N2N2中字节中字节+低字节和的进位,中字节和的进位在低字节和的进位,中字节和的进位在CYCY中中 MOV 51HMOV 51H,A A;(51H51H)=和和N3N3中字节中字节 MOV AMOV A,50H50H;(;(A A)=被加数被加数N1N1高字节高字节 ADDC AADDC A,53H;53H;MOV 50H MO

    12、V 50H,A A;(50H50H)=和和N3N3高字节高字节 MOV A,#00H;MOV A,#00H;ADDC A ADDC A,#00H#00H;高字节和的进位位处理;高字节和的进位位处理 MOV 00HMOV 00H,A A;保存处理后的高字节和的进位保存处理后的高字节和的进位课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础程序清单程序清单2 2;ORG 1000HORG 1000H MOV RO MOV RO,#52H#52H;加数加数N1N1的低字节地址送地址指针的低字节地址送地址指针R0R0 MOV R1 MOV R1,#55H#55H;加数加数N2N2的低字

    13、节地址送地址指针的低字节地址送地址指针R1R1 MOV A MOV A,R0R0;取取N1N1的低字节的低字节 ADD AADD A,R1R1;N1N1、N2N2低字节相加低字节相加 MOV R0MOV R0,A A;保存保存N1N1、N2N2低字节和低字节和 DEC R0DEC R0;修改加数修改加数N1N1的的地址指针内容地址指针内容 DEC R1DEC R1;修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV AMOV A,R0R0;取取N1N1的中间字节的中间字节 ADDC AADDC A,R1R1;N1N1、N2N2中间字节带低字节和进位相加中间字节带低字节和进位相加 MO

    14、V R0MOV R0,A A;保存保存N1N1、N2N2中间字节和中间字节和 DEC R0DEC R0;修改加数修改加数N1N1的地址指针内容的地址指针内容课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 DEC R1DEC R1;修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV AMOV A,R0R0;取取N1N1的高字节的高字节 ADDC AADDC A,R1R1;N1N1、N2N2高字节带中间字节和进位相加高字节带中间字节和进位相加 MOV R0MOV R0,A A;保存保存N1N1、N2N2高字节和高字节和 MOV 00HMOV 00H,C C;高字节和的

    15、高字节和的进位送进位送00H00H位保存位保存 ENDEND 思考题思考题(补充作业题):(补充作业题):1 1)如果)如果N1N1、N2N2,N3N3均为均为十进制数,应如何修改程序?十进制数,应如何修改程序?2 2)如果加数)如果加数N1N1在内部在内部RAM RAM 50H50H、51H51H和和52H52H单元中单元中,而,而加数加数N2N2与与和和N3N3均均在外部在外部RAM00RAM0053H53H、0054H0054H和和0055H0055H单元中,单元中,其它条件不变,其它条件不变,应如何修改程序?应如何修改程序?3 3)如果)如果N1N1、N2N2,N3N3均存放在外部均存

    16、放在外部RAMRAM单元,应如何修改程序?单元,应如何修改程序?课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础例:设内部例:设内部RAM 40HRAM 40H,41H41H单元中分别存放单元中分别存放8 8位二进制数,位二进制数,现分别现分别取取这这两个单元中的半两个单元中的半个个字节,合并成一个字节,合并成一个新新字节存放在字节存放在42H42H单元单元中中。要求如下:要求如下:42H42H单元单元新字节的低半字节取自新字节的低半字节取自40H40H单元的低半字单元的低半字节,而高半字节取自节,而高半字节取自41H41H单元的低半字节。单元的低半字节。解解:(:(1 1)

    17、分析任务:拆字、合字)分析任务:拆字、合字内内部部R RA AM MN N1 14 40 0H H单单元元N N2 2内内部部R RA AM MN N4 44 42 2H H单单元元N N2 2内内部部R RA AM MN N3 34 41 1H H单单元元N N4 4课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 (2 2)算法:逻辑运算)算法:逻辑运算 (3 3)程序结构:顺序)程序结构:顺序 (4 4)数据类型:单字节、二进制、无符号数)数据类型:单字节、二进制、无符号数 (5 5)数据结构:升序或降序排列)数据结构:升序或降序排列 (6 6)程序设计流程框图;)程序

    18、设计流程框图;开开始始取取4 40 0H H单单元元内内容容取取4 41 1H H单单元元内内容容保保留留4 40 0H H单单元元低低半半字字节节保保留留4 41 1H H单单元元低低半半字字节节结结束束合合字字并并保保存存课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 (7 7)程序清单;)程序清单;ORG 2000HORG 2000H S START:MOV R1TART:MOV R1,#40H#40H;初始化数据指针初始化数据指针R1R1的内容的内容 MOV AMOV A,R1R1;取取40H40H单元内容送单元内容送A A ANL A ANL A,#0FH#0FH

    19、;保留保留40H40H单元内容低单元内容低4 4位位 INC R1INC R1;修改数据指针修改数据指针R1R1的内容的内容 XCH AXCH A,R1R1;(A)(A)与与R1R1内容互换内容互换 ANL AANL A,#0FH#0FH;保留保留41H41H单元内容低四位单元内容低四位 SWAP ASWAP A;41H41H单元内容高低半字节互换单元内容高低半字节互换 ORL AORL A,R1R1;合字生成新字节合字生成新字节 INC R1INC R1;修改数据指针修改数据指针R1R1的内容的内容 MOV R1MOV R1,A A;新字节送新字节送42H42H单元保存单元保存 ENDEND

    20、思考题思考题(补充作业题):(补充作业题):上例中其它条件不变,要求如下:上例中其它条件不变,要求如下:42H42H单元单元新字节的低半字节新字节的低半字节取自取自40H40H单元的低半字节,而高半字节取自单元的低半字节,而高半字节取自41H41H单元的高半字节。单元的高半字节。课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础(1 1)单分支程序)单分支程序 单分支程序单分支程序是通过条件转移指令实现的,即根据条件对程序是通过条件转移指令实现的,即根据条件对程序的执行进行判断,满足条件则进行程序转移,不满足条件程序就的执行进行判断,满足条件则进行程序转移,不满足条件程序就顺序

    21、执行。顺序执行。在在MCS-51MCS-51指令系统中,可利用指令系统中,可利用JZJZ,JNZJNZ,CJNECJNE,DJNZDJNZ,JCJC,JNCJNC,JBJB,JNBJNB,JBCJBC等指令,完成为等指令,完成为0 0、为为1 1、为正为正、为负以及相为负以及相等等、不相等等各种条件判断。不相等等各种条件判断。例:两个例:两个8 8位无符号二进制数比较大小。位无符号二进制数比较大小。假假设设在外部在外部RAMRAM中有中有ST1ST1、ST2ST2和和ST3ST3共共3 3个连续单元(单元地址从小到大个连续单元(单元地址从小到大),),其其中中ST1ST1、ST2ST2单元中单

    22、元中存放存放着着两个两个8 8位位无符号二进制数无符号二进制数N1N1,N2N2,要求要求找出其找出其中中的的大数大数并并存存入入ST3ST3单元单元中中。4.2.2 4.2.2 分支程序结构分支程序结构课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础解解:(:(1 1)分析任务:比较两个数的大小)分析任务:比较两个数的大小 (2 2)算法:算术运算、控制转移)算法:算术运算、控制转移 (3 3)程序结构:单分支)程序结构:单分支 (4 4)数据类型:单字节、二进制、无符号数)数据类型:单字节、二进制、无符号数 (5 5)数据结构:单元地址升序排列)数据结构:单元地址升序排列

    23、 (6 6)RAMRAM单元安排单元安排:外部:外部RAMRAM单元单元 (7 7)采用寄存器间接寻址方式()采用寄存器间接寻址方式(R0R0、R1R1或或DPTRDPTR)(8 8)程序设计流程框图程序设计流程框图;(9 9)程序清单程序清单;思考题(补充作业题):思考题(补充作业题):上例中,如果采用上例中,如果采用CJNE ACJNE A,directdirect,relrel指令,应如何修改指令,应如何修改程序?程序?课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础开开 始始设设 置置 数数 据据 指指 针针取取 数数 据据 N N2 2取取 数数 据据 N N1 1

    24、并并 暂暂 存存结结 束束N N1 1保保 存存 于于 A A中中N N2 2 N N1 1修修 改改 数数 据据 指指 针针保保 存存 大大 数数N N2 2保保 存存 于于 A A中中Y YN N返回课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 ORG 8000HORG 8000H START:CLR C START:CLR C;进位清进位清0 0 MOV DPTR MOV DPTR,#ST1#ST1;设数据指针设数据指针 MOVX AMOVX A,DPTRDPTR;AA(ST1ST1),取),取N1N1 MOV R2 MOV R2,A A;暂存暂存N1N1 INC

    25、DPTR INC DPTR;DPTR ST2DPTR ST2(指向指向N2N2单元)单元)MOVX AMOVX A,DPTRDPTR;取取N2N2存于存于A A中中 SUBB ASUBB A,R2R2;N1N1,N2N2比较(比较(N2-N1N2-N1,差在差在A A中)中)JNC BIG1JNC BIG1;N2N1N2N1,转,转BIG1BIG1,N2N2N1N1,顺序执行顺序执行 XCH AXCH A,R2R2;A A N1 N1 SJMP BIG0 SJMP BIG0 BIG1:MOVX A BIG1:MOVX A,DPTRDPTR;A N2A N2 BIGO:INC DPTR BIGO

    26、:INC DPTR;DPTR ST3DPTR ST3(指向指向N3N3单元)单元)MOVX DPTRMOVX DPTR,A A;ST3 ST3 大数大数 ENDEND返回返回 课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础多重单分支结构举例多重单分支结构举例 多重单分支结构中,通过一系列条件判断,进行逐多重单分支结构中,通过一系列条件判断,进行逐级分支。为此可使用比较转移指令级分支。为此可使用比较转移指令CJNE实现。实现。例:假定采集的温度值例:假定采集的温度值Ta放在累加器放在累加器A中。此外,在中。此外,在内部内部RAM 54H单元存放温度下限值单元存放温度下限值T5

    27、4,在,在55H单元存放温单元存放温度上限值度上限值T55。若。若TaT55,程序转向程序转向JW(降温处理程序降温处理程序);若;若TaT54,则程序转向,则程序转向SW(升温处理程序升温处理程序);若;若T55TaT54,则程序转向则程序转向FH(返回主程序返回主程序)。课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础CJNE A,55H,LOOP1 ;若若TaT55,则转向则转向LOOP1AJMP FH ;若若TaT55,则返回则返回 LOOP1:JNC JW ;若若(CY)0,表明表明TaT55,转降温处理程序转降温处理程序CJNE A,54H,LOOP2 ;若若Ta

    28、T54,则转向则转向LOOP2AJMP FH ;若若TaT54,则返回则返回 LOOP2:JC SW ;若若(CY)1,表明表明TaT54,转升温处理程序转升温处理程序 FH:RET ;若若T55TaT54,则返回主程序则返回主程序课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础(2 2)多分支程序)多分支程序 假设多分支程序中,分支序号的最大值为假设多分支程序中,分支序号的最大值为n n,则多分支转移则多分支转移结构如图所示:结构如图所示:MCS-51MCS-51指令系统指令系统没有没有多分支多分支转移转移指令,无法使用指令,无法使用单单条指令完条指令完成多分支转移成多分支

    29、转移。要实现多分支转移,。要实现多分支转移,可采用以下几种方法:可采用以下几种方法:K K=?转转向向分分支支转转向向n n分分支支转转向向n n-1 1分分支支转转向向1 1分分支支K K=0 0K K=n nK K=n n-1 1K K=1 1课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 假设分支序号值保存在累加器假设分支序号值保存在累加器A A中,则可使用中,则可使用CJNE ACJNE A,#data#data,relrel指令,其分支流程如图所示:指令,其分支流程如图所示:(A A)=0 0?转转向向0 0分分支支(A A)=1 1?(A A)=2 2?转转向向

    30、2 2分分支支转转向向1 1分分支支Y YY YY YN NN NN N(a a)使用多条使用多条CJNECJNE指令,通过逐次比较,实现分支程序转移指令,通过逐次比较,实现分支程序转移课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础例:例:已知已知:127127X X-128-128,求,求Y Y。设设X X,Y Y分别分别存存放在外部放在外部RAM RAM 1000H1000H和和2000H2000H单元中。单元中。解解:(:(1 1)分析任务:解方程)分析任务:解方程 (2 2)算法:控制转移)算法:控制转移 (3 3)程序结构:多分支)程序结构:多分支 (4 4)数据

    31、类型:单字节、二进制、有符号数)数据类型:单字节、二进制、有符号数 (5 5)RAMRAM单元安排单元安排:外部:外部RAMRAM单元单元 (6 6)采用寄存器间接寻址方式()采用寄存器间接寻址方式(R0R0、R1R1或或DPTRDPTR)(7 7)程序设计流程框图程序设计流程框图 (8 8)程序清单程序清单;思考题(补充作业题):思考题(补充作业题):上例中,如果采用上例中,如果采用CJNECJNE指令,应如何修改程序?指令,应如何修改程序?011y000 xxx课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础开开 始始取取 数数 据据 X X结结 束束X X=0 0Y Y

    32、=0 0Y YN NX X 0 0Y Y=-1 1Y Y=1 1N NY Y保保 存存 数数 据据 Y Y返回课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础ORGORG 1000H 1000HSTARTSTART:MOV DPTRMOV DPTR,#1000H#1000H;数据数据X X的地址送数据指针的地址送数据指针DPTRDPTR MOVX A MOVX A,DPTRDPTR;AA取取数据数据X X JZ SUL JZ SUL;X X0 0转转SULSUL JB ACC.7 JB ACC.7,NEGNEG;X X0 0转转NEGNEG,否则,否则,X X0 0 MOV

    33、A MOV A,#01H#01H;SJMP SULSJMP SUL;NEG:MOV ANEG:MOV A,#0FFH#0FFH;(0FFH(0FFH为为-1-1补码补码)SUL:MOV DPTR SUL:MOV DPTR,#2000H#2000H;数据数据Y Y的地址送数据指针的地址送数据指针DPTRDPTR MOVX DPTR MOVX DPTR,A A;保存保存Y Y值值 ENDEND返回课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 首先,在程序中建立一个转移指令表,在表格中存放转移指首先,在程序中建立一个转移指令表,在表格中存放转移指令,然后,通过查转移指令表的方式

    34、实现多分支程序转移。令,然后,通过查转移指令表的方式实现多分支程序转移。这种方法主要利用散转指令这种方法主要利用散转指令JMP A+DPTRJMP A+DPTR,此指令采用变址此指令采用变址寻址方式,操作过程:(寻址方式,操作过程:(PCPC)(A A)+(DPTRDPTR),),CPUCPU根据根据PCPC的内容来实现多分支程序转移。的内容来实现多分支程序转移。DPTRDPTR中送转移指令表的表首地中送转移指令表的表首地址(常用转移指令表的名称标号代替),而址(常用转移指令表的名称标号代替),而A A中送转移指令表中中送转移指令表中存放的转移指令的序号(常常从第存放的转移指令的序号(常常从第

    35、0 0条开始)。条开始)。例如,有多个分支程序,如要通过例如,有多个分支程序,如要通过AJMPAJMP转移指令进行转移,转移指令进行转移,则应把这些转移指令按序写入转移指令表中,并设置一个序号指则应把这些转移指令按序写入转移指令表中,并设置一个序号指针(例如针(例如R3R3),),序号往往从序号往往从0 0开始,然后可使用以下查表程序实开始,然后可使用以下查表程序实现程序转移。现程序转移。(b b)使用查使用查转移指令表的方法实现多分支程序转移转移指令表的方法实现多分支程序转移课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 MOV AMOV A,R3R3;分支程序序号送分支

    36、程序序号送A A RL A RL A;分支程序序号乘分支程序序号乘2 2 MOV DPTR MOV DPTR,#BRTAB#BRTAB;BRTABBRTAB为转移指令表名称标号,为转移指令表名称标号,JMP A+DPTRJMP A+DPTR;也为转移指令表首地址也为转移指令表首地址BRTABBRTAB:AJMP ROUT0AJMP ROUT0;分支程序分支程序0 0的转移指令的转移指令 AJMP ROUT1AJMP ROUT1;分支程序分支程序1 1的转移指令的转移指令 AJMP ROUT2AJMP ROUT2;AJMP ROUT127AJMP ROUT127;分支程序分支程序127127的转

    37、移指令的转移指令ROUT0ROUT0:;分支程序分支程序0 0ROUT1:ROUT1:;ROUT127:ROUT127:;分支程序分支程序127127课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 由于由于AJMPAJMP指令是二字节指令,因此,程序中通过指令是二字节指令,因此,程序中通过RL ARL A指令将指令将分支序号乘分支序号乘2 2。转移指令表中最多只能安排。转移指令表中最多只能安排128128条分支转移指令,条分支转移指令,如需多于如需多于128128条,则必须另行修改程序。条,则必须另行修改程序。由于由于AJMPAJMP指令转移范围是指令转移范围是2KB2KB

    38、,因此,分支程序应安排在以因此,分支程序应安排在以JMP A+DPTRJMP A+DPTR指令为中心的指令为中心的2KB2KB范围之内,否则会出错。范围之内,否则会出错。如果转移指令表中的转移指令是如果转移指令表中的转移指令是LJMPLJMP指令,则分支程序可安指令,则分支程序可安排在排在64KB ROM64KB ROM空间的任何地方。但转移指令表中的转移指令的条空间的任何地方。但转移指令表中的转移指令的条数最多为数最多为8585条(条(LJMPLJMP指令是三字节指令),上述程序应作相应的指令是三字节指令),上述程序应作相应的修改。修改。MOV AMOV A,R3R3;MOV BMOV B,

    39、#03H#03H;MUL ABMUL AB;课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 MOV DPTRMOV DPTR,#BRTAB#BRTAB;BRTABBRTAB为转移指令表名称标号,为转移指令表名称标号,JMP A+DPTRJMP A+DPTR;也为转移指令表首地址也为转移指令表首地址BRTABBRTAB:LJMP ROUT0LJMP ROUT0;分支程序分支程序0 0的转移指令的转移指令 LJMP ROUT1LJMP ROUT1;分支程序分支程序1 1的转移指令的转移指令 LJMP ROUT2LJMP ROUT2;LJMP ROUT85LJMP ROUT85;

    40、分支程序分支程序8585的转移指令的转移指令ROUT0ROUT0:;分支程序分支程序0 0ROUT1:ROUT1:;ROUT85ROUT85:;分支程序分支程序8585课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础J JM MP P A A+D DP PT TR RE ER R分分支支程程序序C CR R分分支支程程序序X XS S分分支支程程序序D DS S分分支支程程序序序序号号=0 00 0H HD DP PT TR R表表首首地地址址A A分分支支序序号号2 2序序号号=0 03 3H H序序号号=0 02 2H H序序号号=0 01 1H H返回课程:单片机技术课

    41、程:单片机技术 教材:单片机基础教材:单片机基础4.2.3 4.2.3 循环程序结构循环程序结构 MCS-51MCS-51汇编语言指令系统没有专用的循环指令,但可以使用汇编语言指令系统没有专用的循环指令,但可以使用条件转移指令通过条件判断来控制循环是继续还是结束。条件转移指令通过条件判断来控制循环是继续还是结束。循环程序一般由四个主要部分组成循环程序一般由四个主要部分组成:(1 1)初始化部分:为循环程序做准备,如规定循环次数、给)初始化部分:为循环程序做准备,如规定循环次数、给各变量和地址指针预置初值。各变量和地址指针预置初值。(2 2)处理部分)处理部分:为反复执行的程序段,是循环程序的实

    42、体,为反复执行的程序段,是循环程序的实体,也是循环程序的主体。也是循环程序的主体。(3 3)循环控制部分)循环控制部分:其作用是修改循环变量和控制变量,并其作用是修改循环变量和控制变量,并判断循环是否结束,直到符合结束条件时,跳出循环为止。判断循环是否结束,直到符合结束条件时,跳出循环为止。(4 4)结束部分)结束部分:这部分主要是对循环程序的结果进行分析、这部分主要是对循环程序的结果进行分析、处理和存放。处理和存放。课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 单循环程序一般有以下两种典型结构:单循环程序一般有以下两种典型结构:课程:单片机技术课程:单片机技术 教材:单

    43、片机基础教材:单片机基础 双重循环程序的结构:双重循环程序的结构:开开始始外外循循环环初初始始化化结结束束外外循循环环结结束束否否N NY Y内内循循环环初初始始化化内内循循环环处处理理内内循循环环变变量量修修改改外外循循环环处处理理外外循循环环变变量量修修改改结结束束处处理理内内循循环环结结束束否否N NY Y课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 在应用系统程序设计时在应用系统程序设计时,有时经常需要将数据存储器中各部有时经常需要将数据存储器中各部分地址单元作为工作单元,以存放程序执行的中间值或执行结果分地址单元作为工作单元,以存放程序执行的中间值或执行结果,因

    44、此,在使用这些工作单元之前,必须将工作单元清零。工作因此,在使用这些工作单元之前,必须将工作单元清零。工作单元清零可用循环程序完成。单元清零可用循环程序完成。例:假设在内部例:假设在内部RAMRAM区,开辟区,开辟9696个工作单元,工作单元首地个工作单元,工作单元首地址为址为20H20H,则工作单元清零程序子程序如下则工作单元清零程序子程序如下:ORG 1000H ORG 1000H CLR0 CLR0:MOV R0MOV R0,#20H#20H;循环初始化部分循环初始化部分 MOV R7MOV R7,#96#96;CLR ACLR A LOOP LOOP:MOV R0MOV R0,A A;

    45、循环体部分循环体部分 INC R0INC R0;修改变量修改变量 DJNZ R7DJNZ R7,LOOPLOOP;循环控制部分循环控制部分 RETRET END END思考题(补充作业题):如采用思考题(补充作业题):如采用CJNECJNE指令,应如何修改程序?指令,应如何修改程序?课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 例:两个三字节二进制无符号数相加,被加数放在内部例:两个三字节二进制无符号数相加,被加数放在内部RAM RAM 20H20H22H22H单元(低字节存放在低地址单元,高字节存放在高地址单元(低字节存放在低地址单元,高字节存放在高地址单元,即低位在前

    46、,高位在后),加数放在单元,即低位在前,高位在后),加数放在2AH2AH2CH2CH单元,和放单元,和放在在20H20H22H22H单元,最高位如有进位,则放在单元,最高位如有进位,则放在23H23H单元中。单元中。解:数据类型(二、十进制数,有、无符号数);数据结构(升解:数据类型(二、十进制数,有、无符号数);数据结构(升、降序排列)、降序排列)被加数(被加数(N1N1)高字节(高字节(8 8位)位)中字节(中字节(8 8位)位)低字节(低字节(8 8位)位)加数(加数(N2N2)高字节(高字节(8 8位)位)中字节(中字节(8 8位)位)低字节(低字节(8 8位)位)被加数(被加数(N1

    47、N1)加数(加数(N2N2)和(和(N3N3)20H20H单元单元低字节(低字节(8 8位)位)2AH2AH单元单元 低字节(低字节(8 8位)位)20H20H单元单元 低字节(低字节(8 8位)位)21H21H单元单元中字节(中字节(8 8位)位)2BH2BH单元单元 中字节(中字节(8 8位)位)21H21H单元单元 中字节(中字节(8 8位)位)22H22H单元单元高字节(高字节(8 8位)位)2CH2CH单元单元 高字节(高字节(8 8位)位)22H22H单元单元 高字节(高字节(8 8位)位)23H23H单元单元进位位进位位课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片

    48、机基础被加数被加数 N1 N1 高字节(高字节(8 8位)位)中字节(中字节(8 8位)位)低字节(低字节(8 8位)位)加数加数 N2 N2 高字节(高字节(8 8位)位)中字节(中字节(8 8位)位)低字节(低字节(8 8位)位)+)进位位()进位位(CYCY)进位位(进位位(CYCY)进位位(进位位(CYCY)和和 N3 N3 进位进位 高字节(高字节(8 8位)位)中字节(中字节(8 8位)位)低字节(低字节(8 8位)位)程序流程框图程序流程框图 程序清单程序清单 思考题:统计正数、负数、零的个数。思考题:统计正数、负数、零的个数。课程:单片机技术课程:单片机技术 教材:单片机基础教

    49、材:单片机基础开开始始初初始始化化数数据据指指针针结结束束两两数数加加完完否否N NY Y初初始始化化控控制制变变量量取取加加数数N N1 1取取加加数数N N2 2两两数数相相加加并并保保存存修修改改指指针针变变量量数数据据处处理理课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 ORG 0030HORG 0030HADDDUOADDDUO:MOV R0MOV R0,#20H#20H;循环初始化部分循环初始化部分 MOV R1MOV R1,#2AH#2AH;MOV R7MOV R7,#03H#03H;循环次数循环次数 CLR CCLR C;LOOPLOOP:MOV AMOV

    50、 A,R0R0;循环体部分循环体部分 ADDC AADDC A,R1R1;MOV R0MOV R0,A A;INC R0INC R0;修改指针变量修改指针变量 INC R1INC R1;DJNZ R7DJNZ R7,LOOPLOOP;循环控制部分循环控制部分 CLR ACLR A;循环结束处理部分循环结束处理部分 ADDC AADDC A,#00H#00H;MOV R0MOV R0,A A;RETRET;END END 课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 例:把内部例:把内部RAMRAM中起始地址为中起始地址为DATADATA的数据串传送到外部的数据串传送到外部

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第4章-80C51单片机汇编语言程序的设计课件-.ppt
    链接地址:https://www.163wenku.com/p-4146818.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库