打印
[ZLG-MCU]

请教LPC931指令和KEIL不兼容问题

[复制链接]
1968|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaoxin1986|  楼主 | 2009-9-20 13:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,小弟的一个程序有两个语句总是编译通不过
1,Bseg ENDS,这一对语句是标志段起始和结束的,可是ENDS这个语句在编译时显示error A9: SYNTAX ERROR
2,PUSH R1, POP R1,对通用寄存器进行栈操作就出现error A9: SYNTAX ERROR

请教各位大侠,应该怎么样才能使这两个语句通过编译得到HEX文件呢
太急了,请各位大侠指点

相关帖子

沙发
linhai1986| | 2009-9-20 22:19 | 只看该作者
您用的是伪指令吧,语句结束用END指令就可以了。

PUSH指令是对变量进行PUSH,如PUSH R1

没有PUSH R1, POP R1这样的用法。

使用特权

评论回复
板凳
xiaoxin1986|  楼主 | 2009-9-20 23:50 | 只看该作者
1,有END这个伪指令,标志所有程序结束了,但我想要的只是段的结束,比如

代码段(段名CSEG),数据段(段名DSEG), 外部段(段名XSEG),功能段 (段名FSEG)和位段(段名BSEG)等

我在KEIL里面写上END时字会变色表示这是指令,但写成ENDS时就不变色了,表示这不是指令

2,我就是在中断时要保存R1,R2,所以先PUSH R1, 中断任务完成了再POP R1,但都显示

error A22: EXPRESSION TYPE DOES NOT MATCH INSTRUCTION(不好意思,上文复制错了)

另:这个程序在一款很古老的编译器里是通过的,而且有量产过,但现在用KEIL就不行了

再次谢谢您的关注,请帮忙想想会不会是KEIL里不支持这种语句还是有另外的要求

使用特权

评论回复
地板
linhai1986| | 2009-9-22 13:41 | 只看该作者
段结束不需要用什么束结符,PUSH和POP是双字节指令,后一个字节是你要入栈的RAM地址,而R0-R7的地址是不确定的,所以不能这样编了,如果你知道其一定是工作寄存器组0,当然就可以PUSH 01H

使用特权

评论回复
5
xiaoxin1986|  楼主 | 2009-9-22 14:07 | 只看该作者
太感谢了,你就象黑暗中的一道闪电,我让突然看清了前言的路,

使用特权

评论回复
6
linhai1986| | 2009-9-23 00:54 | 只看该作者
呵呵,过奖了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

1487

帖子

0

粉丝