- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.2 查表程序和子程序 查表程序 子程序 * * 主要内容:在编写程序的过程中可以借鉴现有的数据、表 格或程序段。使用已知表格内容时要用到查表指 令;使用某个特定功能的程序段时要用到子程序调 用和返回指令。 一、查表程序在很多情况下,通过查表比通过计算解决问题 要简便得多。在编程序时也有类似的情况:有时通 过查表程序比通过运算程序要简单得多,编程也较 为容易。在MCS-51中查表时的数据表格是存放在程序 ROM而不是数据RAM,在编程时可以很方便地通 过DB或DW伪指令把表格的内容存入ROM中。用 于查表的指令有两条: MOVC A,@A+DPTR MOVC A,@A+PC这两条查表指令都可以对ROM中的数据表格 进行查找,查找数据的原理类似,但在使用时是有 区别的。 1、使用MOVC A,@A+DPTR指令查表该指令用DPTR作基址寄存器,此时查表操作较 为简单,可以分为三步: (1) 将所查表格的首地址存入DPTR数据指针寄存 器; (2) 将所查表的项数(即在表中位置是第几项) 送到累加器A; (3) 执行查表指令MOVC A,@A+DPTR,进行 读数,查表的结果送回累加器A。 MOV A,#4 MOV DPTR,#TAB MOVC A,@A+DPTR MOV R3,A SJMP $ TAB:DB 01H,09H,61H,56H,7AHDB 6BH,53H 程序执行后(R3)=7AH 例如:将某表格中的第四项数据取出放入到R3寄存器中的操作,可以用DPTR作基址寄存器实现: 2、使用MOVC A,@A+PC指令查表该指令用PC作基址寄存器,所需操作有所不 同,但也可以分为三步: (1) 将所查表的项数(即在表中是第几项)送到 累加器A,在MOVC A,@A+PC指令之前先写上一 条ADD A,#data 指令,data 的值待定; (2) 计算MOVC A,@A+PC指令执行后的地址 到所查表的首地址之间的距离,即算出这两个地址 之间其它指令所占的字节数,把这个结果作为A的 调整量取代加法指令中的data值; (3)执行查表指令 MOVC A,@A+PC进行查 表,查表结果送到累加器A。 如上例,将某表格中的第四项数据取出放入到R3寄 存器中的操作,用PC作基址寄存器实现: MOV A,#4 ADD A,#DATA MOVC A,@A+PC MOV R3,A ;1字节指令 SJMP $ ;2字节指令 TAB:DB 01H,09H,61H,56H,7AHDB 6BH,53H 由于MOVC A,@A+PC指令距离表格首地址的距 离为3字节,所以程序中DATA=3。 MOV A,#4 ADD A,#3 MOVC A,@A+PC MOV R3,A SJMP $ TAB:DB 01H,09H,61H,56H,7AHDB 6BH,53H在用DPTR作为基址进行查表时,可以通过传 送指令让DPTR的值和表的首地址一致。但在用PC 作为基址时,却不可能做到这一点,因为PC的值 是由 MOVC A,@A+PC指令所在的地址加1以后 的值所决定的。因此,必须要作上面步骤中规定的 地址调整。用PC作为基址虽然稍微麻烦一些,但可 以不占用DPTR寄存器,所以仍是常用的一种查表 方法。 例1: 将十六进制数转换为ASCII码。设十六进制数存放在R0寄存器的低4位,转换后的ASCII码仍送回R0寄存器。 说明:此问题可以利用数学运算的方法来实现,经过数学推理可以证明一个十六进制数先加上90H,作十进调整,然后再用ADDC指令加上40H,并作十进制调整,所得结果就是转换后的结果。程序段: MOV A,R0 ;取转换值到A ANL A,#0FH ;屏蔽高4位 ADD A,#90H DA A ADDC A,#40H DA A MOV R0,A ;转换结果送回R0 RET 如果使用查表程序,则整个程序更为简单,也很容易理解: 1、用DPTR作基址寄存器 ORG 0000H MOV A,R0 ANL A,#0FH MOV DPTR,#ASCTAB MOVC A,@A+DPTR MOV R0,A SJMP $ ASCTAB:DB ‘0,1,2,3,4’DB ‘5,6,7,8,9’DB ‘A,B,C,D,E,F’END ORG OOOOH MOV A,R0 ANL A,#0FH ADD A,#3;地址调整 MOVC A,@A+PC MOV R0,A SJMP $ ASCTAB:DB ‘0,1,2,3,4,5,6,7,8,9’DB ‘A,B,C,D,E,F’ END 2、用PC作基址寄存器 二、子程序通过调用子程序可以减少源程序和目标程序的 长度。在多次调用同样的程序段时,采用子程
您可能关注的文档
- 3.1自己的事自己干公开课技巧.ppt
- 3.2.1古典概型(第二课时)技巧.ppt
- 3.2.1——古典概型技巧.ppt
- 钢结构4_index研究.ppt
- 钢结构玻璃雨棚制作安装施工工艺及技术研究.doc
- 钢结构彩钢屋面板施工方案研究.doc
- 钢结构餐厅施工组织设计研究.doc
- 3.2.1挂面加工技巧.ppt
- 3.2.1钠的重要化合物(第2课时)技巧.ppt
- 3.2.2可持续发展技巧.ppt
- 2025年南京城市职业学院单招笔试职业能力测验试题库含答案解析.docx
- 2025年事业单位工勤技能-福建-福建地质勘查员二级(技师)历年参考题典型考点含答案解析.docx
- 2025年事业单位工勤技能-广东-广东公路养护工二级(技师)历年参考题典型考点含答案解析.docx
- 2025年事业单位工勤技能-宁夏-宁夏环境监测工四级(中级工)历年参考题典型考点含答案解析.docx
- 2025年事业单位工勤技能-江西-江西水土保持工一级(高级技师)历年参考题典型考点含答案解析.docx
- 2025年事业单位工勤技能-上海-上海殡葬服务工一级(高级技师)历年参考题典型考点含答案解析.docx
- 2025年事业单位笔试-宁夏-宁夏病理技术(医疗招聘)历年参考题典型考点含答案解析.docx
- 2025年住院医师规培-山西-山西住院医师规培(全科医学)历年参考题典型考点含答案解析.docx
- 2025年事业单位工勤技能-宁夏-宁夏水文勘测工一级(高级技师)历年参考题典型考点含答案解析.docx
- 2025年事业单位工勤技能-河南-河南下水道养护工二级(技师)历年参考题典型考点含答案解析.docx
最近下载
- 2024北师大版小学数学六年级上册第四单元百分数集体备课教学设计.docx VIP
- 乡村物流配送体系完善.pptx
- 街道居民议事会组织与运行规范.pdf VIP
- 新型αvβ3和Neuropilin1双靶点正电子成像探针18FFAlNOTARGDATWLPPR用于脑胶质瘤的PET显像研究.pdf VIP
- 关于绑架的小故事-绑架关起来的故事.docx VIP
- 第三章_期权交易结算.pdf VIP
- 最新人教版九年级上册数学期中试题(含答案).docx VIP
- 北师大版六年级数学上册第四单元《百分数》(大单元教学设计).docx VIP
- 大班游戏活动案例《快乐沙池》.pptx VIP
- 深圳华大基因园-西门子智能照明技术方案.docx VIP
原创力文档


文档评论(0)