查表:根据存放在rom中数据表格的项数来查找与它对应的表中值。
适用场合:主要应用于数码显示、打印字符的转换、数据转换等场合。
1.采用“movc a,@a+dptr”指令查表程序的设计方法
2)计算出这个表中所有的函数值y。将这群函数值按顺序存放在起始(基)地址为table的程序存储器中。
3)将将表格首地址table送入dptr,x送入a,采用查表指令“movc a,@a+dptr”完成查表,就可以得到与x相对应的y值置于累加器a中。
2.采用“movc a,@a+pc”指令查表程序的设计方法
当使用pc作为基址寄存器时,由于pc本身是一个程序计数器,与指令的存放地址有关,查表时其操作有所不同。
1)在程序存储器中建立相应的函数表(设自变量为x)。
2)计算出这个表中所有的函数值y。将这群函数值按顺序存放在起始(基)地址为table的程序存储器中。
3)将x送入a,使用“add a,#data”指令对累加器a的内容进行修正,偏移量data由公式data=函数数据表首地址-pc-1确定,即data值等于查表指令和函数表之间的字节数。
4)采用查表指令“movc a,@a+pc”完成查表,就可以得到与x相对应的y值置于累加器a中。
【例3-9】 利用查表的方法编写y=x2(x=0,1,2,…,9)的程序。(www.xing528.com)
解:设变量x的值存放在内存30h单元中,求得的y的值存放在内存31h单元中。二次方表存放在首地址为table的程序存储器中。
(1)方法一 采用“movc a,@a+dptr”指令实现,查表过程如图314所示。
图3-14 例3-9查表过程(方法一)
程序如下:
(2)方法二 采用“movc a,@a+pc”指令实现,查表过程如图315所示。
程序如下:
图3-15 例3-9查表过程(方法二)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。