单片机第6章程序设计.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.2 汇编语言基本程序设计 查表程序设计例题 ORG 0000H MOV DPTR,#TABLE ;表首地址送DPTR MOV A,#05 ;被查数字05?A MOVC A,@A+DPTR ;查表求平方 SJMP $ TABLE:DB 0,1,4,9,16,25,36,49,64,81 END 例1 用查表法计算平方,分别用MOVC A,@A+DPTR MOVC A,@A+PC实现 ORG 0000H 0000H MOV A,#05 ;05 ?A 0002H ADD A,#02 ;修正累加器A 0004H MOVC A,@A+PC ;查表求平方 0005H SJMP $ 0007H: DB 0,1,4,9,16,25,36,49,64,81 END 6.2 汇编语言基本程序设计 查表程序设计例题 例2 设有一个巡回检测报警装置, 需对 96 路输入进行控制, 每路有一个额定的最大值, 是双字节数。当检测量大于该路对应的最大值时, 就越限报警。假设R2 为保存检测路数的寄存器, 其对应的最大额定值存放于 31H和 32H单元中。 编写查找最大额定值的程序。 FMAX: MOV A, R2  ADD A, R2  MOV 31H, A MOV DPTR, #TAB MOVC A, @A+DPTR XCH A, 31H  INC DPTR MOVC A, @A+DPTR MOV 32H, A  TAB: DW 1230H, 1450H, ... DW 2230H, 2440H, ... DW 3120H, 3300H, ... ; 表中一个额定值为2个字节 ; 表首址 ; 查表读取第一个字节 ; 第一个字节内容存入31H ; 查表读取第二个字节 ; 第二字节的内容存入32H 6.2 汇编语言基本程序设计 散转程序设计 散转程序为分支程序的一种,散转程序是指通过修改某参数后,程序可以有三个以上的流向。多用于键盘程序。 常用的指令是JMP @A+DPTR,该指令是把16位数据指针DPTR的内容与累加器A中的8位无符号数相加装入程序计数器PC,形成散转的目的地址,只要改变A的内容,就可以实现多个分支散转 。 DPTR + A PC A中内容为8位无符号数 16位地址数 K=i i=0,1,…,N 分支程序0 分支程序1 分支程序2 分支程序n … … 6.2 汇编语言基本程序设计 散转程序设计 散转程序结构图 LP0: MOV DPTR,#TAB ;跳转表首送数据指针 MOV A,R0 ADD A,R0 ;R7?2?A (修正变址值) JNC LP1 ;判有否进位 INC DPH ;有进位则加到高字节地址 LP1: JMP @A+DPTR ;转向形成的散转地址人口 TAB: AJMP OPR0 ;直接转移地址表 AJMP OPR1 AJMP OPRn 例1 根据R0的内容,转向各自对应的操作程序 (R0= 0,转入OPR0;R7= 1,转入OPR1…R7= n,转入OPRn) 6.2 汇编语言基本程序设计 散转程序设计例题 . . . 例2 在键盘处理程序中,命令键的分类处理采用了散转技术。假定命令键字符已经被译出键值为0AH,0BH,0CH,0DH,将它送到A中,然后根据这个值确定转移方向,具体程序如下 KEYB5: MOV DPTR, #JMPTBL ;建立查表的基地址 CLR C SUBB A, #0AH ;键值在A中

文档评论(0)

企业资源 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档