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

单片机原理及应用技术 教学课件 作者 牛月兰 第4章 AT89S51汇编语言程序设计.ppt

单片机原理及应用技术 教学课件 作者 牛月兰 第4章 AT89S51汇编语言程序设计.ppt

  1. 1、本文档共109页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 AT89S51汇编语言程序设计 ORG 0100H MOV R0, #0BH ;设待查十六进制数为B MOV A, R0 ;读数据 ANL A, #0FH ;屏蔽高4位 MOV DPTR, #TAB ;置表格首地址 MOVC A, @A+DPTR ;查表 MOV R0, A ;回存 SJMP $ ORG 1000H TAB:DB 30H, 31H, 32H, 33H, 34H DB 35H, 36H, 37H, 38H, 39H ;0~9的ASCII码 DB 41H, 42H, 43H, 44H, 45H, 46H ;A~F的ASCII码 END 当待查十六进制数为B时,本例执行结果为42H。 2.以PC为基址的查表指令的编程 当用PC作基址寄存器时,基址PC是当前程序计数器的内容,即查表指令的下条指令的首地址。查表范围是查表指令后256个字节的地址空间。由于PC本身是一个程序计数器,与指令的存放地址有关,所以查表操作有所不同。查表的步骤分三步: (1) 变址值(要查表中的项数与表格首地址之间的间隔字节数)→A; (2) 修正量(查表指令下一条指令的首地址到表格首地址之间的间隔字节数)+A→A; (3) 执行MOVC A, @A+PC指令。 【例4-8】用查表指令MOVC A, @A+PC编程指令实现【例4-7】的功能。 ORG 0100H MOV R0, #07H ;设待查十六进制数为7 MOV A, R0 ;读数据 ANL A, #0FH ;屏蔽高4位 ADD A, #03H ;加上修正量 MOVC A, @A+PC ;查表 MOV R0, A ;回存,本指令字节数为1 SJMP $ ;本指令字节数为2 TAB:DB 30H, 31H, 32H, 33H, 34H ;0~9的ASCII码 DB 35H, 36H, 37H, 38H, 39H DB 41H, 42H, 43H, 44H, 45H, 46H ;A~F的ASCII码 END 当待查十六进制数为07H时,则本例执行结果为37H。 3.查表指令的用法和计算修正量时应注意的问题 【例4-9】设计一个子程序,功能是根据累加器A中的数 x(0~15之间) 查 x 的平方表 y 。本例中的 x 和 y 均为单字节数。 ?? 地 址 子程序 Y3Y2Y1Y0 ADD A, #01H ;加修正量 Y3Y2Y1Y0+2 MOVC A, @A+PC Y3Y2Y1Y0+3 RET Y3Y2Y1Y0+4 DB 00, 01, 04, 09, 16 ;数0~15的平方表 DB 25, 36, 49, 64, 81 DB 100, 144, 169, 196, 225 指令“ADD A, #01H”的作用是A中的内容加上“01H”,“01H”即为查表指令与平方表之间的“RET”指令所占的字节数。加上“01H”后,可保证PC指向表首地址,累加器A中原来的内容仅是从表首开始向下查找多少个单元。 在进入程序前,A的内容在0~15之间,如A中的内容为04H,它的平方值为16,可根据A的内容查出 x 的平方。 “MOVC A, @A+DPTR” 指令应用范围较广,使用该指令时不必计算修正量。优点是表格可以设在64KB程序存储器的任何地方,而不像“MOVC A, @A+PC”那样只设在PC下面的256个单元中,所以使用较方便。该指令的缺点是如果DPTR已被使用,则在查表前必须保护DPTR,且在查表结束后再恢复DPTR。例4-9可改成如下形式: SQUARE: PUSH DPH ;保存DPH PUSH DPL ;保存DPL ?? MOV DPTR, #TAB1 MOVC A, @A+DPTR POP DPL ;恢复DPL POP DPH ;恢复DPH RET TAB1: DB 00, 01, 04, 09, 16 ;数0~15的平方表 DB 25, 36, 49, 64, 81 DB 100, 144, 169, 196, 225 实际查表,有时 x 为单字节数, y 为双字节数。采用下例实现查表。 【例4-10】有一巡回检测报警装置,需对16路输入进行检测,每路有一个最大允许值,为双字节数。装置运行时需根据测量的路数 x,查表找出对应该路的

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档