《12汇编语言程序设计查表与散转程序设计.ppt》由会员分享,可在线阅读,更多相关《12汇编语言程序设计查表与散转程序设计.ppt(9页珍藏版)》请在优知文库上搜索。
1、MOVC A, A+DPTR查表前查表前数据表格表头地址存入数据表格表头地址存入DPTR所查数据送入累加器所查数据送入累加器A最后最后MOVC A,A+DPTR完成查表完成查表因为因为DPTR可以人为修改,可在可以人为修改,可在64KB内内查表。查表。MOVC A, A+PC分为三步:分为三步:1)所查数据送入累加器)所查数据送入累加器A2)使用)使用ADD A,#data指令对累加器指令对累加器A进行修正,进行修正,data值等于查表指令和数据值等于查表指令和数据表格之间的字节数表格之间的字节数,即,即PC当前值当前值+data=数据表头地址数据表头地址3)用指令)用指令MOVC A , A
2、+PC完成查表完成查表由于由于PC指针只能在指针只能在A中提供的偏移地址中提供的偏移地址的范围内查表,故查表范围在一页内。的范围内查表,故查表范围在一页内。查表程序实现查表算法。该方法把事先计算或实验数据按一定顺序编成表查表程序实现查表算法。该方法把事先计算或实验数据按一定顺序编成表格,存在程序存储器内,然后根据输入参数值,从表中取得结果。查表程格,存在程序存储器内,然后根据输入参数值,从表中取得结果。查表程序可完成数据补偿、计算和转换等功能。序可完成数据补偿、计算和转换等功能。 END例4-10已知R0低4位有一个十六进制数(0F中的一个),请编写能把它转换成相应ASCII码并送入R0的程序
3、。例4-9求函数YX!(X0,1,7)的值。设自变量存放在ABC单元,表头地址为TABL,Y值为双字节存放在寄存器R2R3中,R3存放Y值低字节,写出查表程序。例例4-11温控系统中,检测的电压与温度成非线性关系,为此要作线温控系统中,检测的电压与温度成非线性关系,为此要作线性化补偿。测得的电压已由性化补偿。测得的电压已由A/D转换为转换为10位二进制数。根据实验测得位二进制数。根据实验测得数据构成一个表,表中存放温度值数据构成一个表,表中存放温度值Y为输出,采样电压值为输出,采样电压值X为输入,为输入,X放在放在R2、R3中。用程序把它转换成线性温度值,仍存放在中。用程序把它转换成线性温度值
4、,仍存放在R2R3中。中。 表格长度超过256个字节时,必须使用“MOV A, A+DPTR”指令,并且需要对DPH、DPL进行运算处理,求出表目地址。例:根据例:根据R2内容转向各处理程序。内容转向各处理程序。由于使用了由于使用了AJMP指令,要求指令,要求所有的处理程序入口和散转表所有的处理程序入口和散转表都必须在同一都必须在同一2kB范围内。范围内。TBJ3PRG0-TBJ3TBJ3+1PRG1-TBJ3TBJ3+2PRG2-TBJ3TBJ3+3PRG3-TBJ3TBJ3+4PRG4-TBJ3TBJ3+5PRG5-TBJ3使用这种方法,转移表的大小加上各个处理程序长度必须使用这种方法,转移表的大小加上各个处理程序长度必须小于小于256256个字节。个字节。TBJ4PRG0HTBJ4+1PRG0LTBJ4+2PRG1HTBJ4+3PRG1LTBJ4+4PRG2HTBJ4+5PRG2LTBJ4+6PRG3HTBJ4+7PRG3L使用这种方法可以实现使用这种方法可以实现64kB范围内的转移,但散范围内的转移,但散转数转数n应小于应小于256。如。如n256则应采用双字节加法运则应采用双字节加法运算来修改算来修改DPTR。