打印

请求帮助:使用KEIL UV2编译ASM出现L121:IMPROPER FIXUP错误

[复制链接]
7947|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lizengmao|  楼主 | 2008-11-10 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一直在自己学习89C52。终于使用ASM写出4K的程序了。虽然不是很顺利,断断续续写了很久,但毕竟写了。
由于程序较大,为了方便维护,因此使用SEGMENT指令把程序分割成小段。刚开始没有什么问题。
现在程序大了,问题就多了。本来好好的程序,加入某一行代码后出现了L121:IMPROPER FIXUP错误。
开始认为是定义的段太大,拆分段后OK。
随着程序的不断变大,频频出现这个错误,不堪其扰,决心找到一个彻底解决的方法。
打开KEIL UV2的A51.PDF,据说在使用ASM的ACALL等指令时超出2K范围就会出现这个错误,于是把这个段的ACALL全部改为LCALL,JMP改为LJMP,重新编译依然出现错误。
再看SEGMENT的使用说明,在后面加上INBLOCK参数,编译OK。但是实际运行到某一处,则89C52会当机。使用仿真器追踪也无法定位出问题的地方。看来只是KEIL UV2蒙蔽自己的手段而已。
上网搜索“IMPROPER FIXUP”,没有得到预期的结果,因此在这里向各位求助。希望有经验的可以帮一把。

下图是SEGMENT加入INBLOCK参数后编译不报错,实际运行错误。

相关帖子

沙发
lizengmao|  楼主 | 2008-11-10 21:03 | 只看该作者

加入出现错误的图片

加入出现错误的图片,请各位指点。

使用特权

评论回复
板凳
ayb_ice| | 2008-11-10 21:12 | 只看该作者

INBLOCK本来是在2K以内

后面不要加这些东东

FUNC_SEG SEGMENT CODE
PUBLICK FUNCTION
RSEG FUNC_SEG
FUNCTION:
....
RET

使用特权

评论回复
地板
lizengmao|  楼主 | 2008-11-10 21:43 | 只看该作者

一直按2楼格式写,不过后面还多一个END

一直按2楼格式写,不过后面还多一个END。但是还是会出现L121的错误提示

使用特权

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

本版积分规则

4

主题

38

帖子

0

粉丝