MSC-51单片机指令中的查表问题

题目:设表格中有1024个数据项,每个数据为2个字节,表格总长度为2048个字节,现要求根据R2R3的内容从表格中找出对应的数据元素的值,并送回到R2R3中。(他上面说是... 题目:设表格中有1024个数据项,每个数据为2个字节,表格总长度为2048个字节,现要求根据R2R3的内容从表格中找出对应的数据元素的值,并送回到R2R3中。(他上面说是利用DPH,DPL进行运算的方法进行查表) 程序如下: MOV DPTR,#TAB MOV A,R3 CLR C RLC A XCH A,R2 RLC A XCH AR2 ADD A,DPL MOV DPL,A;调整DPL,DPH MOV A,DPH ADDC A,R2 MOV DPH,A CLR A MOVC A,@A+DPTR;查表 MOV R2,A;第一字节 CLR A INC DPTR MOVC A,@A+DPTR;查第二字节 MOV R3,A RET TAB: DW XXXXH;共1024个数据项 DW XXXXH ...... DW XXXXH 本人新手,此段代码楞是搞不明白是什么意思 忘高手详解,谢谢 展开
 我来答
匿名用户
2013-11-08
展开全部
我的分析不一定对,仅供参考。 基本思路是从R2R3处取偏移量,乘以2(每个数据为2个字节)通过A加给DPTR,R2加给DPL,r3加给DPH,再从DPTR处取数,交给A,再给R2R3. MOV DPTR,#TAB 表的首地址给DPTR MOV A,R3 r3的值给A CLR C C置零 RLC A A乘2(左移一位后补零) XCH A,R2 A和r2交换数值 RLC A A左移一位,即乘2 XCH A,R2 A和r2交换。至此,相当于R3乘2后给了R2,r2里存的是r3.乘2后的数,A里是r2乘2后的数。 ADD A,DPL DPL的值加给A MOV DPL,A;调整DPL,DPH 相当于把原r2里的数乘2当做偏移地址加给DPL MOV A,DPH ADDC A,R2 MOV DPH,A 相当于把原r3里的数乘2当做偏移地址加给DPH CLR A MOVC A,@A+DPTR;查表 MOV R2,A;第一字节 CLR A INC DPTR MOVC A,@A+DPTR;查第二字节 MOV R3,A RET TAB: DW XXXXH;共1024个数据项 DW XXXXH ...... DW XXXXH 因为查表的数字是双字节,所以低位给r2,高位给r3.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32F103C8T6是一款基于ARM Cortex-M3内核的微控制器,具有以下基本参数:1. 工作频率:72MHz2. 外部时钟:最高可达120MHz3. 存储器容量:64K bytes4. 数据总线宽度:32位5. 输入/输出端口... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式