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

汇编语言里面的查表法是什么意思啊。在单片机里面是怎么运行的啊~~~~,第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。

查表法,就是将你的一些固定的数据存储到程序存储器中,当你的程序中需要这些数据时,movc指令读取这些数据。举例假设你的系统要用数码管显示0-9这10个数字,而假设这10个数字各自的断码(点亮时io口相应的电平)分别为

0xC0, //"0"

0xF9, //"1"

0xA4, //"2"

0xB0, //"3"

0x99, //"4"

0x92, //"5"

0x82, //"6"

0xF8, //"7"

0x80, //"8"

0x90, //"9"

你有两种方法存储这租埋肆时个数据,一种是在数据区用十个字节存储这些数据(数据常量),但这会占用你的数据存储器空间。另外一种方法就是把这些不变的数放到程序空间中,到需要的时候到程序空间中读取,这便是查表。也就是在程序空间中建立一个表,假设你需要就9这弊轿个数值的断码,就去表中查看一下9对应液悉的数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12529485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存