找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于单片机movc指令的应用程序

查看数: 5564 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-1-13 15:41

正文摘要:

不懂为什么要add a,r3,        为什么要ADD   A,#6加这么对偏移量

回复

ID:450037 发表于 2019-1-15 07:03
Y_G_G 发表于 2019-1-15 00:11
汇编学个差不多就可以了,以后还是要用C多一点的
我也是一直用汇编,准备学C了
难不成你要用汇编??

二级C以前学校学的,还有一点点印象了。汇编我也学。我都学。先从汇编开始。现在想把单片机搞熟了,我刚接触单片机不久。还请指教
ID:401564 发表于 2019-1-15 00:11
zhangzhao2423 发表于 2019-1-14 22:29
师傅,能不能加我微信啊?zhangzhao2423,万分感谢,有不懂请多多指教,我们是新人,求带路

汇编学个差不多就可以了,以后还是要用C多一点的
我也是一直用汇编,准备学C了
难不成你要用汇编??
ID:450037 发表于 2019-1-14 22:29
Y_G_G 发表于 2019-1-14 19:01
从“MOVC  A,  @A+PC”这个指令到“TAB3”之间有几条指令,每条指令占用不同的空间,你得打开8051汇编指 ...

师傅,能不能加我微信啊?zhangzhao2423,万分感谢,有不懂请多多指教,我们是新人,求带路
ID:401564 发表于 2019-1-14 19:01
zhangzhao2423 发表于 2019-1-14 00:01
请问ADDC  A,#06H它是怎么得出的啊?为什么是加6?

从“MOVC  A,  @A+PC”这个指令到“TAB3”之间有几条指令,每条指令占用不同的空间,你得打开8051汇编指令看这几条指令占用的空间,加在一起就是占用了6B,就是6个字节
这是一个非常应试教育的题目:一个酒杯的容积怎么计算,2B一样的老师要告诉你,酒杯的高度,直径,弧度之类,估计你还得用到微积分,说不定还算不出来。
实际上,把酒杯装满水,再称水的重量就知道容量了。
明明有更好的方法,非得叫人用PC值,以为这样就可以练习基本功什么之类的。
用PC值的缺点:你得对着8051汇编指令,慢慢找到你那条指令占用空间的大小,一条一条的加上去。这样还不行,你还要看PC加上去不是大于255了,大于255了就不行,也就是说这个查表指令是不能随便放的,你得把这指令放在前面。不然,PC值就会超过255了
用16位查表就什么都没有了
一般来说尽量少用PC值这个计算
一般来说尽量少用汇编,能用C就尽量用C
ID:7485 发表于 2019-1-14 10:49
你看看从“MOVC  A,  @A+PC”这语句到“TAB3”之间有几条指令(不含本语句)?这几条指令的机器码就是6个字节。

在没有给“TAB3”指定位置的情况下,程序的机器码是按先后顺序存放烧写的。

“PC”的值就是当前语句的机器码烧写在程序存储器中的地址。再加上6个字节,就到“TAB3”的首地址了。

你可以打开你的本工程目录下,经过编译产生的*.lst文件看看便知。

根据你的提问,你现在理解这些还有一定的难度,如果你真心的想学、想掌握这门技术,建议你还是扎扎实实的打好基础。
ID:450037 发表于 2019-1-14 00:01
Y_G_G 发表于 2019-1-13 20:38
因为表是DW      用两个字节来放一个数据,如果是DB就是直接计算偏移量
DW的话,是乘以2来计算的

请问ADDC  A,#06H它是怎么得出的啊?为什么是加6?
ID:450037 发表于 2019-1-14 00:00
ahshmj 发表于 2019-1-13 18:24
MOVC  A,  @A+PC 本条指令是查表指令,也叫作:“程序存储器读指令”,要读的值在“TAB3”表中。“PC”是当 ...

为什么说TAB3的首地址距离PC有6个字节的距离啊?是怎么求出来的啊
ID:467585 发表于 2019-1-13 21:31
MOVC  A,  @A+PC 本条指令是查表指令,也叫作:“程序存储器读指令”,要读的值在“TAB3”表中。“PC”是当前(本条指令)代码在程序存储器中的位置,而TAB3表距离当前“PC”还有6个字节的距离,所以当前的“PC”值+6,才是TAB3的首字符位置。
ID:401564 发表于 2019-1-13 20:38
因为表是DW      用两个字节来放一个数据,如果是DB就是直接计算偏移量
DW的话,是乘以2来计算的
ID:7485 发表于 2019-1-13 18:24
MOVC  A,  @A+PC 本条指令是查表指令,也叫作:“程序存储器读指令”,要读的值在“TAB3”表中。“PC”是当前(本条指令)代码在程序存储器中的位置,而TAB3表距离当前“PC”还有6个字节的距离,所以当前的“PC”值+6,才是TAB3的首字符位置。
ID:94031 发表于 2019-1-13 16:03
add a,r3      把r3里的值加到累加器a里去。
ADD   A,#6  把直接数6加到累加器a里去。
和偏移量没任何关系。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表