单片机原理及应用 04汇编语言程序设计 (张毅刚 版).ppt

单片机原理及应用 04汇编语言程序设计 (张毅刚 版).ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理及应用 04汇编语言程序设计 (张毅刚 版)

例4-1 下面是一段汇编语言程序的四分段书写格式 标号字段 操作码字段 操作数字段 注释字段 START: MOV A,#00H ;0→A MOV R1,#10 ;10→R1 MOV R2, ;3→R2 LOOP: ADD A,R2 ;(A)+(R2)→A DJNZ R1,LOOP;R1内容减1不为零循环 NOP HERE: SJMP HERE 一、分支转移结构 1.单分支转移结构 仅有两个出口,两者选一。 ※多重循环 多重循环就是循环的嵌套,既一个循环程序包含了其他循环程序,即循环内套循环的结构形式,也称多重循环。一般内层循环完成后,外层才执行一次,然后再逐次类推,层次分明。 编写子程序时应注意以下问题: 1.子程序的第一条指令的地址称为子程序的入口地址。该指令前必须有标号。 2.主程序调用子程序 两条子程序调用指令: (1)绝对调用指令:ACALL addr11 (2)长调用指令:LCALL addr16 3.注意设置堆栈指针和现场保护 4.最后一条指令必须是RET指令 5.子程序可以嵌套,即子程序可以调用子程序 6.在子程序调用时,还要注意参数传递的问题 子程序的基本结构 MAIN: ┇ ;MAIN为主程序或调用程序标号 ┇ LCALL SUB ;调用子程序SUB ┇ ┇ SUB:PUSH PSW ;现场保护 PUSH ACC ; 子程序处理程序段 POP ACC ;现场恢复 POP PSW ; RET ;最后一条指令必须为RET 数据排序程序设计 升序排,降序排。仅介绍无符号数据升序排序。 冒泡法:相邻数互换的排序方法,类似水中气泡上浮 。排序时从前向后进行相邻两个数的比较,次序与要求的顺序不符时,就将两个数互换;顺序符合要求不互换。 假设有7个原始数据的排列顺序为:6、4、1、2、5、7、3。第一次冒泡的过程是: 6、4、1、2、5、7、3 ;原始数据的排列 4、6、1、2、5、7、3 ;逆序,互换 4、1、6、2、5、7、3 ;逆序,互换 4、1、2、6、5、7、3 ;逆序,互换 4、1、2、5、6、7、3 ;逆序,互换 4、1、2、5、6、7、3 ;正序,不互换 4、1、2、5、6、3、7 ;逆序,互换,第一次冒泡结束 如此进行,各次冒泡的结果如下: 第1次冒泡结果:4、1、2、5、6、3、7 第2次冒泡结果:1、2、4、5、3、6、7 第3次冒泡结果:1、2、4、3、5、6、7 第4次冒泡结果:1、2、3、4、5、6、7 ;已完成排序 第5次冒泡结果:1、2、3、4、5、6、7 第6次冒泡结果:1、2、3、4、5、6、7 对于n个数,理论上应进行(n-1)次冒泡,有时不到(n-1)次就已完成排序 。 如何判定排序是否已完成,看各次冒泡中是否有互换发生,如果有数据互换,则排序还没完成。 在程序设计中,常使用设置互换标志的方法,该标志的状态表示在一次冒泡中是否有互换进行。 例4-10 一批单字节无符号数,以R0为首地址指针,R2中为字节数,将这批数进行升序排列。程序框图如图4-2所示。 SORT: MOV A,R0 ;R1地址指针(首地址内容送R1 MOV R1,A MOV A,R2 ;字节数送入R5 MOV R5,A CLR F0;互换标志位F0清零 DEC R5;字节数减1 MOV A,@R1 LOOP: MOV R3,A;前一字节内容存R3 INC R1 ;地址加1 CLR C MOV A,@R1 ;比较大小 SUBB A,R3;后一字节内容减前一字节内容 JNC LOOP1;后面的内容大转LOOP1(大值存A中) SETB F0;互换标志位F0置1 MOV A,R3 ;前一字节(大数)内容送A XCH A,@R1;前字节的数到后一字节(大),后字节的数到A(小) DEC R1 ;地址减1即前一字节地址 XCH A,@R1;后字节的数从A换到前一字节地址(小) INC

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档