首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

程序中建的表格在ROM范围之内

程序中建的表格在ROM范围之内



程序中建的表格在ROM范围之内,并且程序语句占用空间也在ROM范围内,但编译时却报错:Program code is too large!原因可能出现在哪?

请注意“MOV A, OFFSET TAB_Address+Num”语句的使用。譬如TAB_Address是程序中所建立的表格的首地址,如果该表整体都在ROM范围内,而当TAB_Address+Num(Num是程序员自己定的一个地址偏移量)指向的地址却超出了ROM空间时,就会出现题目中所说的报错。
这一点很容易被忽略,所以要慎用“MOV A, OFFSET TAB_Address+Num”语句。建议用下面两语句来代用:


请注意“MOV A, OFFSET TAB_Address+Num”语句的使用。譬如TAB_Address是程序中所建立的表格的首地址,如果该表整体都在ROM范围内,而当TAB_Address+Num(Num是程序员自己定的一个地址偏移量)指向的地址却超出了ROM空间时,就会出现题目中所说的报错。
这一点很容易被忽略,所以要慎用“MOV A, OFFSET TAB_Address+Num”语句。建议用下面两语句来代用:

MOV A, OFFSET TAB_Address
ADD A, Num
。。。(后面再视情况而定做ADD算法是否溢出的判断,作相应处理)
则不会出现这种错误,因为表地址TAB_Address是否在ROM范围内能很容易发现

返回列表