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

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

数组。将数组定义为只读属性,像这样code

unsigned

char

TAB[

*

]={xx,

xx,.........}意思是

只读的

无符号字节型数组TAB。编译器会帮你把这个数组放到ROM里面去,而不会占用RAM。使用的时候和一般的数组一样使用就可以了。如我要调出数组里面的第十个数,只需要a=TAB[9]就可以了。并且你可以指针去查找里面的数据,很方便 *** 作。

0100H、0200H表示的都是51单片机程序存贮器里面的地址,51单片机可寻址最大64k程序存贮器、最大64k内存。程伏森序存贮器和内存不是统一编址。

PC时程序计数器,主要是记录单片机在ROM的执行位置,一般单片机可以访问64K的地址,也就是需要16位的字宽

单缺答亩片机编址是16进制,看看编程器里怎样表示的。

ORG 0100H 表示程序从这里开始执行

DPTR是一个16位的寄存器,对这个数据寄存器赋举塌值时,对于寄存器寻址方式,我们是把它拆分为高八位,低八位来访问的

由于它是16位,所以我们可以用它来访问64K的ROM空间,也可以访问64K的外表RAM空间

ORG 0200H 表示存放数据的地址从这里开始,这个地址是程序存贮器地址,不可以在运行中改变。

SQU是查表子程序的编号,主程序调用这段查表程序需 LCALL SQU,这时候单片机的pc指向0101h,单片机从0101h开始执行指令 。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存