《查表程序设计.pptx》由会员分享,可在线阅读,更多相关《查表程序设计.pptx(9页珍藏版)》请在第壹文秘上搜索。
1、查表程序设计查表程序设计查表程序设计 查表就是根据自变量查表就是根据自变量x的值,在表中查找的值,在表中查找y,使,使yf(x)。x和和y可以是可以是各种类型的数据。表的结构也是多种多样的。表格可以放在程序存储各种类型的数据。表的结构也是多种多样的。表格可以放在程序存储器中,也可以存放在数据存储器中。一般情况下,对自变量器中,也可以存放在数据存储器中。一般情况下,对自变量x是有变是有变化规律的数据,可以根据这一规律形成地址,对应的化规律的数据,可以根据这一规律形成地址,对应的y则存放于该地则存放于该地址单元中;对址单元中;对x是没有变化规律的数据,在表中存放是没有变化规律的数据,在表中存放x及
2、其对应的及其对应的y值。值。前者形成的表格是有序的,后者形成的表格可以是无序的。前者形成的表格是有序的,后者形成的表格可以是无序的。 例例1 将将l位十六进制数转换为位十六进制数转换为ASCII码。码。 解解: 在前面的例子中,我们介绍了将在前面的例子中,我们介绍了将ASCII码转换为十六进数的程序,本例是码转换为十六进数的程序,本例是其逆变换。这里采用查表的方法完成十六进制数到其逆变换。这里采用查表的方法完成十六进制数到ASCII码的转换。码的转换。 建立一个表格,首先确定表格的首地址,在相对于表首的地址单元中存放建立一个表格,首先确定表格的首地址,在相对于表首的地址单元中存放ASCII码。
3、设十六进制存放在码。设十六进制存放在R0中,转换结果存放在中,转换结果存放在R1中。程序为:中。程序为: ORG 0300H MOV A, R0 ANL A, #0FH ;屏蔽高位;屏蔽高位 MOV DPTR,#TAB MOVC A,A+DPTR MOV R1,A ORG 0380H TAB: DB 01234567 DB 89ABCDEF END例例2 在一个单片机测温装置中,已知电压和温度之间是非线性关系。在在一个单片机测温装置中,已知电压和温度之间是非线性关系。在校正过程中,电压值取连续的校正过程中,电压值取连续的10位二进制数,测量这些电压值对应温位二进制数,测量这些电压值对应温度最多
4、可达度最多可达1024个。用这些校正数据建立一个表格。以电压为相对地个。用这些校正数据建立一个表格。以电压为相对地址,这样就可以根据测得的不同电压值求出被测温度。址,这样就可以根据测得的不同电压值求出被测温度。解解: 设电压测量值设电压测量值X放在放在R2、R 3中中(10位二进制数占两个字节位二进制数占两个字节),求出的温,求出的温度仍放度仍放R2、R3中中(也是双字节数也是双字节数)。与。与X值的对应的温度放在地址为值的对应的温度放在地址为2X加加表格的首地址的单元中。表格的首地址的单元中。程序为:程序为: MOVDPTR, #TABMOVA, R3CLRCRLCA;X*2MOVR3, A
5、XCHA, R2RLCAXCHA, R2ADDA, DPL;加表首地址;加表首地址MOVDPL,AMOVA, DPHADDCA, R2MOVDPH,ACLRAINCDPTRMOVCA, A+DPTRMOVR3, ARETTAB:DW 例例3 通过一个键盘输入一组命令,完成不同的功能。通过一个键盘输入一组命令,完成不同的功能。 解解: 设从键盘输入的命令字符为设从键盘输入的命令字符为A、D、E、L、M、X、Z七种七种,当键入不同的命令字符时转向不同的处理程序,对应的处理程序的,当键入不同的命令字符时转向不同的处理程序,对应的处理程序的入口标号为入口标号为XA、XD、XE、XL、XM、XX、XZ。
6、由于输入的字符之间很。由于输入的字符之间很难找到什么规律,建立表格时将字符和其对应的处理程序的地址一同难找到什么规律,建立表格时将字符和其对应的处理程序的地址一同存入。查表时先查找字符,其后就是处理程序的入口地址。表格以存入。查表时先查找字符,其后就是处理程序的入口地址。表格以0为结束标志。为结束标志。 入口条件为:命令字符放在入口条件为:命令字符放在A中。中。 程序:程序:LTB:MOVDPTR, #TABMOVB, ALOOP:CLRAMOVCA, A+DPTRJZLENDINCDPTRCJNZA, B, LNFCLRAMOVCA, A+DPTR;取出入口地址第一个字节;取出入口地址第一个字节MOVB, AINCDPTRCLRAMOVCA, A+DPTRMOVDPL,AMOVDPH,BCLRAJMPA+DPTR;转向相应处理程序;转向相应处理程序 LNF:INCDPTRINCDPTR;继续查;继续查SJMPLOOPLEND:(查不到处理程序查不到处理程序)TAB:DB ADWXADBDDWXDDBEDWXEDBLDWXLDBMDWXMDBXDWXXDBZDWXZDB0 ;表格结束标志;表格结束标志