张明峰书上的疑惑

[复制链接]
3007|11
 楼主| chen3bing 发表于 2010-7-27 16:19 | 显示全部楼层 |阅读模式
我在张明峰的书上看到一个程序片段,如下图:
其中movwf   FSR,w
...................
      movwf  PCLATH,w
编译通不过。
是不是应该去掉后面的w?
谢谢!
yewuyi 发表于 2010-7-27 17:34 | 显示全部楼层
不可以去掉。

如果你使用的MPLAB,那么就没有理由编译通不过,除非你选择芯片型号和例程中的型号不一样,在汇编编译器中的寄存器命名可能不一致所至。

建议查看型号对应的头文件中的命名。
 楼主| chen3bing 发表于 2010-7-27 17:41 | 显示全部楼层
[localimg=180,96]1[/localimg]
 楼主| chen3bing 发表于 2010-7-27 18:51 | 显示全部楼层
谢谢!不是寄存器的问题,而是后面w的问题。
错误提示:Error[108]   D:\PIC\TEST.ASM 19 : Illegal character (,)
而且,我查数据手册:
MOVWF Move W to f
Syntax: [ label ] MOVWF f
f代表寄存器,后面什么都没有。
我还是觉得那种写法有问题。
 楼主| chen3bing 发表于 2010-7-27 18:55 | 显示全部楼层
我把w去掉,编译就通过了。
看张明峰的书,应该是用的877A,我原来用的73,改成877A也一样。
我感到很疑惑。
NE5532 发表于 2010-7-27 19:06 | 显示全部楼层


尽信书,不如无书。MOVWF 只能以F为目标地址,随便找本数据手册都可以看到。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| chen3bing 发表于 2010-7-27 19:35 | 显示全部楼层
谢谢!
yewuyi 发表于 2010-7-28 08:26 | 显示全部楼层
6# NE5532


也别轻易以为别人这么写就是胡乱搞出来的,呵呵,俺以前用ASM写的时候,也是后面带W的。

这个可能是ASM编译器或者是别的什么地方调整后的结果,至少在5年前,我们用ASM些的时候,这些都是可以正确编译的。
machunshui 发表于 2010-7-28 09:48 | 显示全部楼层
yewuyi可能不用汇编久已,**有误。
MOVWF f                    指令码              00 0000 lfff ffff
第8位目标已经定位为1,即文件寄存器。
即使后面加目标位也不可能是w。

这可能没校对出来的一个笔误,远不是什么“尽信书无书“的问题
yewuyi 发表于 2010-7-28 10:44 | 显示全部楼层
yewuyi可能不用汇编久已,**有误。
MOVWF f                    指令码              00 0000 lfff ffff
第8位目标已经定位为1,即文件寄存器。
即使后面加目标位也不可能是w。

这可能没校对出来的一个笔误,远不 ...
machunshui 发表于 2010-7-28 09:48



LS说的极是,我没仔细看前面的movwf而记成了movf  f,(f or w)了。
NE5532 发表于 2010-7-28 19:44 | 显示全部楼层
呵呵,我从来认为DATASHEET的可信度高于书,书是怎么回事,大家都很清楚哈。
hotpower 发表于 2010-7-30 07:28 | 显示全部楼层
wf即w -->f
您需要登录后才可以回帖 登录 | 注册

本版积分规则

439

主题

2540

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部