首页 理论教育查表程序设计,实现数据求平方

查表程序设计,实现数据求平方

【摘要】:所谓查表法,就是对一些复杂的函数运算如sinx,x2+ex等,事先把全部可能范围的函数值按一定的规律编成表格存放在计算机的程序存储器中。因此,data值实际上等于查表指令和数据表格之间的字节数。3)采用查表指令MOVC A,@A+PC完成查表。利用查表指令实现求取数据0~9的平方。在程序中TABLE的地址可以是16位二进制数决定的任意值,也就是说,理论上TABLE表可以放在程序存储器的任意空间。程序中用INC A指令就是来调整的。

所谓查表法,就是对一些复杂的函数运算如sinx,x2+ex等,事先把全部可能范围的函数值按一定的规律编成表格存放在计算机的程序存储器中。当用户程序中需要用到这些函数时,直接按编排好的索引值寻找答案。这种方法既节省了运算步骤,简化了程序,而且加快了程序执行的速度。在控制应用场合或智能仪器仪表中,经常使用查表法。这种方法唯一的不足之处是需要事先计算好函数值,而且需要占用较多的存储单元

为了实现查表功能,在MCS-51单片机中专门设置了两条查表指令:

第1条查表指令采用DPTR存放数据表格的地址,其查表过程比较简单。查表前需要把数据表的首地址存入到DPTR,然后把所查表的索引值送至累加器A,最后使用MOVC A,@A+DPTR指令完成查表。

采用第2条指令时,操作过程和第1条不同,其步骤可分为以下3步:

1)使用数据传送指令把所查数据的索引值送至累加器A。

2)用ADD A,#data指令对累加器A进行修正。data值由下式确定:

其中,PC是MOVC A,@A+PC的下一条指令的地址。因此,data值实际上等于查表指令和数据表格之间的字节数。

3)采用查表指令MOVC A,@A+PC完成查表。

为了方便查表,要求表中的数据或符号按照便于查表的次序排列,并将它存放在指定首地址开始的单元。函数值在表中的序号即索引值应该和函数值有直接的对应关系。函数值的存放地址等于首地址加上索引值。在实际使用中,使用MOVC A,@A+DPTR指令比MOVC A,@A+PC简单。

【例4-10】利用查表指令实现求取数据0~9的平方。设数据变量x的值存放于累加器A中,查表后求x2的值并反送回累加器中。

【编程说明】数据0~9的平方值存放在存储器中。在程序中TABLE的地址可以是16位二进制数决定的任意值,也就是说,理论上TABLE表可以放在程序存储器的任意空间。(www.chuimin.cn)

【程序】

如果不想采用MOVC A,@A+DPTR指令,还可改用MOVC A,@A+PC指令来实现。在这里,TABLE表将紧跟在子程序之后,考虑到MOVC A,@A+PC与TABLE表间有一条单字节的返回主程序RET(RET是单字节指令),所以程序起始时需要对累加器A的内容进行调整。程序中用INC A指令就是来调整的。

【程序】

【例4-11】某智能仪器的键盘程序中,根据命令的键值(0,1,2,…,6)转换成相应的双字节16位命令操作入口地址,其键值与对应的入口地址关系如表4-2所示。

表4-2 键值与对应的入口地址

设键值存放在片内RAM的20H单元中,入口地址存放在片内RAM的22H和23H中。

【程序】