单片机查表指令movc什么意思

若累加器A中有一个0~9的数,请用查表法求出该数的平方值,设平方表表头地址为1000H。
程序是下面的
MOV DPTR,#1000H
MOVC A,@A+DPTR
若(A)=3,查表后(A)=9 .
怎么出的9,MOVC是啥意思?
我是初学者,请高手解答。。。

MOVC指令意思是表示程序存储器里的内容和别的存储单元进行传送的,主要是用在累加器A和程序存储器的数据传送。

单片机的操作语言使用的是汇编语言,是一种用于电子计算机、微处理器、微控制器或其它可编程器件的低级语言。

包括通用数据传送指令MOV、条件传送指令CMOVcc、堆栈操作指令PUSH/PUSHA/PUSHAD/POP/POPA/POPAD、交换指令XCHG/XLAT/BSWAP、地址或段描述符选择子传送指令LEA/LDS/LES/LFS/LGS/LSS等。


扩展资料

测试指令BT、位测试并置位指令BTS、位测试并复位指令BTR、位测试并取反指令BTC、位向前扫描指令BSF、位向后扫描指令BSR等。

加法指令ADD/ADC、减法指令SUB/SBB、加一指令INC、减一指令DEC、比较操作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV、符号扩展指令CBW/CWDE/CDQE、十进制调整指令DAA/DAS/AAA/AAS、逻辑运算指令NOT/AND/OR/XOR/TEST等。

无条件转移指令JMP、条件转移指令Jcc/JCXZ、循环指令LOOP/LOOPE/LOOPNE、过程调用指令CALL、子过程返回指令RET、中断指令INTn、INT3、INTO、IRET等。


参考资料来源:百度百科-MOVC

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-27
movc是访问单片机程序存储器的意思。(程序存储器是固化的数据,在单片机运行时只能读,不能写)
movx是读写单片机外部数据存储器的意思。

0到9的平方值依次为:0, 1, 4, 9, 16, 25, 36,49,64,81
表头地址就是第一个数的存放地址。是将上列数据放入1000h开始的程序存储器里。
地址: 1000 1001 1002 1003依次类推直到1009
平方数: 0 1 4 9,。。。。。。。
看到了吧,程序第一行是将1000h的立即数放入数据指针,用它作为基地址,程序第二行是将A中的数加上DPTR的内容以这个数为地址去查表并将结果放入A中,如果A=3,那么3+1000就是1003(地址),查1003地址单元的内容就是9,就实现了查表。
查表用的很多,可以节约单片机的运算时间,如果让单片机去算这些平方很费时,在人为可以预料到的有规律的运算可以先把结果计算出来,存入程序存储器,然后让单片机在运行时根据规律去查表取出这些结果。
第2个回答  推荐于2017-09-15
查表指令:MOVC A,@A+DPTR 不是单独使用的,在1000H处,应该有个DB伪指令,如下:
DB 0, 1, 4, 9, 16, 25......
它在ROM中,顺序存放了一系列的“平方”数据。
MOVC A,@A+DPTR指令中A如果等于0,就会在“平方”数据中取出第0个,就是0;
MOVC A,@A+DPTR指令中A如果等于3,就会在“平方”数据中取出第3个,就是9。本回答被提问者采纳
第3个回答  推荐于2017-09-10
查表指令:MOVC A,@A+DPTR 不是单独使用的,在1000H处,应该有个DB伪指令,如下:
DB 0, 1, 4, 9, 16, 25......
它在ROM中,顺序存放了一系列的“平方”数据。
MOVC A,@A+DPTR指令中A如果等于0,就会在“平方”数据中取出第0个,就是0;
MOVC A,@A+DPTR指令中A如果等于3,就会在“平方”数据中取出第3个,就是9。
第4个回答  2010-04-15
MOV DPTR,#1000H
这句话是把1000H这个地址赋给DPTR这个指针变量。
DPTR指向的就是平方表的首地址.

MOVC A,@A+DPTR
把 从DPTR开始,偏移A个地址的地址中存放的数据,读取到变量A中.

平方表里设置的数是:{0,1,4,9,16,....}
这样,#1000H 这个地址里放的就是0,开始时A被设置为3,DPTR偏移3个后,就指向1003H地址了,1003H里放的就是9,第二句话就是把9赋给了变量A。

呵呵,明白了吗!
相似回答