首页 理论教育 单片机应用技术:查表指令MOVC

单片机应用技术:查表指令MOVC

时间:2023-11-19 理论教育 版权反馈
【摘要】:修正量一般按下式进行计算:修正量=表头首地址-查表指令执行时的PC值=M2-M1=01H实际上,修正量就是从“MOVC A,@A+PC”的下一条指令开始到表首之间所有指令所占的字节数。

单片机应用技术:查表指令MOVC

1.以DPTR为基址的查表指令

动画:查表指令

这条指令通过变址寻址方式,将A中的内容作为无符号数和DPTR中的内容相加后得到一个16位的地址,把该地址指向的程序存储器单元的内容送到累加器A中。该指令中DPTR常用于存放表格的起始地址。由于用户可以通过16位数据传送指令给DPTR赋值,因此该指令适用范围较为广泛,表格常数可以设置在64 KB ROM中的任何位置。

2.以PC为基址的查表指令

微课:查表程序

这条指令通过变址寻址方式,将A中的内容作为无符号数和PC的当前值(即下一指令的起始地址)相加后得到一个16位的地址,把该地址指出的程序存储器单元的内容送到累加器A中。这条指令以PC作为基址寄存器,当前的PC值是由该查表指令所在地址确定的,而变址寄存器A的内容为0~255,所以A和PC相加所得到的地址只能在PC当前值开始的256个单元的地址之内,因此所查的表格起始地址只能在该指令以下的255个单元内。

例如:分析执行下列程序后,累加器A的内容是什么?(www.xing528.com)

视频:查表程序调试

程序中的“DB”为定义字节伪指令,将在下一章中介绍。MOVC指令执行时,将M2地址与累加器A中的内容相加作为新的地址查找该地址中的内容,并将其送入累加器A中,因此该程序运行后累加器A中的内容为77H。

以上程序也可用下列程序实现相同的功能。

由于上段程序在执行MOVC指令时,(PC)=M1,此时的基址与DPTR中的基址相差1个字节。为了使以PC为基址的查表指令与以DPTR为基址的查表指令能查找相同的地址单元,必须对基址进行修正,但程序计数器PC的值不能通过指令编程进行修正,因此将这个修正值通过“ADD A,#01H”指令进行修正,即通过变址寄存器A进行修正,其中“01H”就是修正量的大小。修正量一般按下式进行计算:

修正量=表头首地址-查表指令执行时的PC值=M2-M1=01H

实际上,修正量就是从“MOVC A,@A+PC”的下一条指令开始到表首之间所有指令所占的字节数。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈