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

第四章 MCS-51汇编语言程序设计.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 MCS-51汇编语言程序设计 4.1 汇编语言及汇编过程 4.2 汇编语言程序的基本结构及应用举例 4.3 三类基本子程序的设计 子程序概念 所谓调用子程序,暂时中断主程序的执行,而转到子程序的入口地址去执行子程序。 这就是所谓的“冒泡法”。 4个数排序最多经过 3 次外循环就可排出,每次外循环都包含3次内循环。实际上大多情况不用 3 次外循环就可排完。 对于100个数排序也是如此,用不到99次循环,排序就结束。为了提高排序速度,程序中可设一交换标志位,如10H位, 每次循环中:若有交换则 SETB 10H 若无交换则 CLR 10H 每次循环结束时,测10H位,判断排序是否结束。 ORG 1000H BUBBLE:MOV R0,#30H MOV B,#64H CLR 10H DEC B ;长度计数 LOOP:MOV A,@R0 ;内循环的入口 MOV 20H,A ;暂存,为交换作准备 INC R0 MOV 21H,@R0 CJNE A,21H,BUEU ;若(20H)≠(21H)转移 BUEU: JNC BUNEXT ;(20H)≥(21H)转移 MOV A,@R0 ;若(20H) (21H)则交换 MOV @R0,20H DEC R0 ;使R0退格指向小地址 MOV @R0,A INC R0 ;恢复R0指向大地址 SETB 10H ;置交换标志 BUNEXT: DJNZ B,LOOP ;内循环是否结束的判断 JB 10H,BUBBLE ;判断标志位为1否?外循环结 ;束的判断 END 小结: 1、循环程序包括几部分内容? 2、?何谓单循环,多重循环? 3、何谓循环程序的先判断,后处理; 先处理,后判断? RET LCALL SUB SUB 子程序 主程序 调用子程序应注意: (1)子程序占用的存储单元和寄存器。 (2)参数的传递。 (3)子程序经过调用后得到的数据来完成程序之间的参数传递。? (4)嵌套调用与递归调用。 LCALL A RET RET LCALL B 代码转换类 “二进制” 、“十六进制”与“十进制”及“ASCⅡ” 原码、反码、补码 数据运算类 求和、最大(小)值、平均值、绝对值等 应用类 如中值滤波、移动算术平均滤波等 4.3.1代码转换类子程序 例1、将30H单元内的两位BCD码拆开并转换成ASCII码, 高位转换后存入RAM 31H单元中,低位转换后存入 RAM 32H单元中。 结束 取数据低4位 转换成ASCII码 存ASCII码 取数据高4位 转换成ASCII码 存ASCII码 开始 例2 ORG 2000H MOV A,30H ;取值 ANL A,#0FH ;取低4位 ADD A,#30H ;转换成ASCII码 MOV 32H,A ;保存结果 MOV A,30H ;取值 SWAP A ;高4位与低4位互换 ANL A,#0FH ;取低4位(原来的高4位) ADD A,#30H ;转换成ASCII码 MOV 31H,A ;保存结果 RET 例2、将A中的二进制数转换为BCD数,结果存于R1 ,R0 所指出的单元之中。 解:编程思路是将A中二进制数除以100、10,所得商即为百、十位数,余数为个位数。 4.3.2 ORG 1000H LOOP: MOV B,#100 DIV AB MOV @R1, A ;百位数送@R1 MOV A, #10 XCH A, B DIV AB SWAP A

文档评论(0)

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

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

1亿VIP精品文档

相关文档