网站大量收购独家精品文档,联系QQ:2885784924

单片微机原理与应用 教学课件 作者 罗印升 2011 part_03 2.ppt

单片微机原理与应用 教学课件 作者 罗印升 2011 part_03 2.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.8.1 汇编语言程序设计概述 程序是完成某一特定任务的若干指令的有序集合。程序设 计就是用计算机所能识别的语言把解决问题的步骤描述出来, 即编写程序。目前计算机语言可分为三类:机器语言、汇编语 言和高级语言。 3.8.1 汇编语言程序设计概述 3.8.1 汇编语言程序设计概述 1. ORG—起始地址指令(Original)定位伪指令 格式: ORG 16位绝对地址或表达式 功能:指明其后的程序或数据块存放的起始地址。 例如:指令地址 机器码 源程序 ORG 2000H 2000H 78 30 MAIN:MOV R0,#30H 2002H E6 MOV A,@R0 … [例3-38-2] 三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、54H和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。 MOV R0,#52H MOV R1,#55H MOV A,@ R0 ADD A,@R1 MOV @ R0 ,A DEC R0 DEC R1 MOV A,@ R0 ADDC A,@R1 MOV @ R0 ,A DEC R0 DEC R1 MOV A,@ R0 ADDC A,@R1 MOV @ R0 ,A CLR A ADDC A,#00H MOV 00H,C [例3-38-3] 压缩式BCD码分解成为单字节BCD码。 根据不同条件做出判断和选择,转向不同的处理程序,这种结构的程序称为分支结构程序。分支结构又叫条件选择结构。 51单片机指令系统中的条件转移指令、比较转移指令和位转移指令,均可以用来实现分支结构程序设计。 按照判断条件执行的先后不同,可以把循环分为“直到型循环”和“当型循环”,前者是先执行一次循环,然后判断是否继续循环;后者先作条件判断,决定是否执行循环体,如图所示。 程序如下: ORG 1000H START:MOV R0,#30H ;设数据区指针 MOV R7,#20 ;设置循环计数器 MOV R2,#0 ;设置统计计数器 LOOP:CJNE @R0,#08H,NEXT INC R2 NEXT: INC R0 DJNZ R7,LOOP SJMP $ 子程序的特点:子程序可以多次重复使用,避免重复性工作,缩短整个程序,节省程序存储空间,有效地简化程序的逻辑结构,便于程序调试。 【例题3-51】 空调机在制冷时若排出空气比吸入空气温度低8℃,则认为工作正常,否则认为工作故障,并设置故障标志。请编写相应的程序。 在解决实际问题时,经常会遇到一个程序中多次使用同一个程序段,例如延时程序、查表程序、算术运算程序等功能相对独立的程序段。为了节约内存,我们把这种具有一定功能的独立程序段称为子程序。需要时,就可以调用这些独立的子程序。调用子程序的程序叫做主程序或称调用程序。被调用的程序称为子程序。 3.8.6 子程序设计 子程序的调用与返回 主程序调用子程序的过程:在主程序中需要执行这种操作的地方执行一条调用指令(LCALL或ACALL),然后程序转到子程序,当完成规定的操作后,再执行子程序最后一条RET指令返回到主程序断点处,继续执行下去。 (1)子程序的调用 子程序的起始地址:子程序的第一条指令地址称为子程序的起始地址(或者称为入口地址),常用标号表示。 程序的调用过程:单片机执行ACALL或LCALL指令后,首先将当前的PC值(调用指令的下一条指令的首地址)压入堆栈(低8位先进堆栈,高8位后进堆栈),然后将子程序的起始地址送入PC,转去执行子程序。 3.8.6 子程序设计 (2)子程序的返回 主程序的断点地址:子程序执行完毕后,返回主程序的地址称为主程序的断点地址,它在堆栈中保存。 子程序的返回过程:子程序执行到RET指令后,将压入堆栈的断点地址弹回给PC(先弹回PC的高8位,后弹回PC的低8位),使程序回到原先被中断的主程序地址(断点地址)去继续执行。 【注意】中断服务程序是一种特殊的子程序,它是在计

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档