- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机原理与接口技术第章汇编语言程序设计资料.ppt
第4章 汇编语言程序设计 简单程序 分支程序 循环程序 查表程序 子程序的设计及其调用 ? ORG 1000H CLR C MOV A,R0 ;取被加数低字节至A ADD A,R2 ;与加数低字节相加 MOV R0,A ;存和数低字节 MOV A,R1 ;取被加数高字节至A ADDC A,R3 ;与加数高字节相加 MOV R1,A ;存和数高字节 MOV A,#0 ADDC A,#0 ;加进位位 MOV R2,A ;存和数进位位 * SJMP $ ;原地踏步 END 例4-1 假设两个双字节无符号数,分别存放在R1R0和R3R2中,高字节在前,低字节在后。编程使两数相加,和数存放回R2R1R0中。 简单程序 简单程序 例4-2 将一个字节内的两个BCD码拆开并转换成ASCII码,存入两个RAM单元。设两个BCD码已存放在内部RAM的20H单元,将转换后的高半字节存放到21H中,低半字节存放到22H中。 法一编程: ORG 1000H MOV R0,#22H ;R0←22H MOV @R0,#0 ;22H←0 MOV A,20H ;两个BCD数送A XCHD A,@R0 ;BCDL送22H单元 ORL 22H,#30H ;完成转换 SWAP A ;BCDH至A的低四位 ORL A,#30H ;完成转换 MOV 21H,A ;存数 SJMP $ END 例 法1 法二编程: ORG 1000H MOV A,20H ;取BCD码至A MOV B,#10H DIV AB ;除10H取余,使BCDH→A、BCDL→B ORL B,#30H ;完成转换 MOV 22H,B ;存ASCII码 ORL A,#30H ;完成转换 MOV 21H,A ;存ASCII码 SJMP $ END 例 法2 法三编程: ORG 1000H MOV A,20H ;取BCD码 ANL A,#0FH ;屏蔽高四位 ORL A,#30H ;完成转换 MOV 22H,A ;存ASCII码 MOV A,20H ;取BCD码 ANL A,#0F0H ;屏蔽低四位 SWAP A ;交换至低四位 ORL A,#30H ;完成转换 MOV 21H,A ;存ASCII码 SJMP $ END 例 法3 例4-3 双字节数求补,设两个字节原码数存在R1R0中,求补后结果存在R3R2中。 解 求补采用“模-原码”的方法,因为补码是原码相对于模而言的,对于双字节数来说其模为10000H。 编程: ORG 1000H CLR C ;0→CY CLR A ;0→A SUBB A,R0 ;低字节求补 MOV R2,A ;送R2 CLR A ;0→A SUBB A,R1 ;高字节求补 MOV R3,A ;送R3 SJMP $ END 例 例4-4 将内部RAM的20H单元中的8位无符号二进制数转换为三位BCD码,并将结果存放在FIRST 百位 和SECOND 十位、个位 两单元中。 解 可将被转换数除以100,得百位数;余数再除以10得十位数;最后余数即为个位数。 FIRST DATA 22H SECOND DATA 21H ORG 1000H HBCD: MOV A,20H ;取数 MOV B,#64H ;除数100→B DIV AB ;除100 MOV FIRST, A ;百位BCD MOV A,B MOV B,#0AH ;除数10→B DIV AB ;除10 SWAP A ;十位数送高位 ORL A, B ;A为 十位、个位 BCD MOV SECOND, A ;存十位、个位数 SJMP $ END 例 简单分支程序 例4-5 设内部RAM 30H,31H单元中存放两个无符号数,试比较它们的大小。将较小的数存放在30H单元,较大的数存放在31H单元中。 ORG 1000H START: CLR C ;0→CY MOV A,30H ; SUBB A,31H ;做减法比较两数 JC NEXT ;若 30H 小,则转移 MOV A,30H ; XCH A,31H ; MOV 30H,A ;交换两数 NEXT: NOP SJMP $ END 简单分支程序 例 4-6 空调机在制冷时,若排出空气比吸入空气温度低8℃,则认为工作正常,否则认为工作故障,并设置故障标志。 设内存单元40H存放吸入空气温度值,41H存放排出空气温度值。若 40H - 41H ≥
文档评论(0)