- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章80C51单片机汇编语言程序设计
* 第5章 汇编语言程序设计简介 CLEAR: CLR A MOV DPTR, #8000H ; 工作单元首址送指针 MOV R2, 50 ; 置循环次数 CLEAR1: MOVX @DPTR, A INC DPTR ; 修改指针 DJNZ R2, CLEAR1; 控制循环 RET * 第5章 汇编语言程序设计简介 例 6 设在内部 RAM的 m 单元开始处有长度为 n 个的无符号数据块, 试编一个求和程序, 并将和存入内部 RAM的 S 单元(设和不超过 8 位)。 m EQU 20H n EQU 30H S EQU 40H START: CLR A ; 清累加器A MOV R2, # n ; 数据块长度送R2 MOV R1, #m ; 数据块首址送R1 LOOP: ADD A, @R1 ; 循环加法 INC R1; 修改地址指针 DJNZ R2, LOOP ; 修改计数器并判断 MOV S , A; 存和 RET * 第5章 汇编语言程序设计简介 多重循环 例 7 10 秒延时程序。 延时程序与 MCS - 51 执行指令的时间有关, 如果使用 6 MHz晶振, 一个机器周期为 2 μs, 计算出一条指令以至一个循环所需要的执行时间, 给出相应的循环次数, 便能达到延时的目的。10 秒延时程序如下: MOV R5, #100 D0: MOV R6, #200 D1: MOV R7, #248 D2: DJNZ R7, D2 DJNZ R6, D1 DJNZ R5, D0 RET * 第5章 汇编语言程序设计简介 上例程序中采用了多重循环程序, 即在一个循环体中又包含了其它的循环程序, 这种方式是实现延时程序的常用方法。 使用多重循环时, 必须注意: (1) 循环嵌套, 必须层次分明, 不允许产生内外层循环交叉。 (2) 外循环可以一层层向内循环进入, 结束时由里往外一层层退出。 (3) 内循环可以直接转入外循环, 实现一个循环由多个条件控制的循环结构方式。 * 第5章 汇编语言程序设计简介 例8 在内部 RAM中从 50H单元开始的连续单元依次存放了一串字符, 该字符串以回车符为结束标志, 要求测试该字符串的长度。 程序如下: START: MOV R2, #0FFH MOV R0, #4FH ; 数据指针R0置初值 LOOP: INC R0 INC R2 CJNE @R0, #0DH, LOOP RET * 第5章 汇编语言程序设计简介 练习 把内部RAM起始地址为data的数据串传送到外部RAM以LOOP为首地址的区域,直到发现“$”字符的ASCⅡ码为止,同时规定数据串的最大长度为32个字节。 * 第5章 汇编语言程序设计简介 5.2.4 子程序和参数传递 一、 子程序的概念 通常把这些基本操作功能编制为程序段作为独立的子程序, 以供不同程序或同一程序反复调用。在程序中需要执行这种操作的地方放置一条调用指令, 当程序执行到调用指令, 就转到子程序中完成规定的操作, 并返回到原来的程序继 续执行下去。 * 第5章 汇编语言程序设计简介 二、 子程序的调用 调用子程序的指令有“ACALL”和“LCALL”, 执行调用指令时, 先将程序地址指针PC改变(“ACALL”加 2, “LCALL”加 3), 然后 PC值压入堆栈, 用新的地址值代替。执行返回指令时, 再将 PC值弹出。
文档评论(0)