汇编语言里面的查表法是什么意思啊。在单片机里面是怎么运行的啊~~~~

2024-12-16 15:55:17
推荐回答(2个)
回答1:

51单片机汇编语言有一条查表指令是:MOVC A, @A+DPTR
它不是单独使用的,要和 DB 伪指令配套使用。

例如:若累加器A中有一个0~9的数,请用查表法求出该数的平方值,设平方表表头地址为1000H。
程序如下:
;-------------------------------------
MOV DPTR,#1000H
MOVC A,@A+DPTR
……

ORG 1000H
DB 0, 1, 4, 9, 16, 25......
;-------------------------------------
“DB”,在ROM 1000H中,顺序存放了一系列的“平方”数据。
MOVC A,@A+DPTR指令中A如果等于0,就会在“平方”数据中取出第0个,就是0;
MOVC A,@A+DPTR指令中A如果等于1,就会在“平方”数据中取出第1个,就是1;
MOVC A,@A+DPTR指令中A如果等于2,就会在“平方”数据中取出第2个,就是4;
MOVC A,@A+DPTR指令中A如果等于3,就会在“平方”数据中取出第3个,就是9;
……
MOVC A,@A+DPTR指令中A如果等于9,就会在“平方”数据中取出第9个,就是81。

回答2:

首先,你要明确查表法是为了节约运算时间而建立的映射关系,在嵌入式中尤其重要,把复杂公式的运算事先计算好,存起来,然后直接根据输入值查询。而硬件原理无论在什么平台都一样,固化在rom里面,根据地址,寻址后找到相应的地址单元,取值,然后应用。