找回密码
 立即注册
查看: 432|回复: 3

关于C51的汇编移植为C251的汇编一个要注意的小细节

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-05-02 07:09:45

35

主题

189

回帖

833

积分

高级会员

积分
833
发表于 2024-5-13 11:23:03 | 显示全部楼层 |阅读模式
本帖最后由 newlined 于 2024-5-13 11:55 编辑

我有一个程序,原来在KEIL C51下编译,CPU用的是STC8H单片机,后来CPU升级为STC32G12K128,编译环境改为C251,运行一直不正常,后来发现,是程序中定义位变量的方式出了问题,以前定义位变量用的语句是:ABC    BIT     10H  ,在STC8H单片机中,内部RAM的20H到2FH是可以位寻址的,位地址范围在0~7F之间,这样定义是可以的,STC32G12K128内部RAM的20H到7FH都是可以位寻址,位地址范围在0~2FFH之间,如果定义最后一位岂不是要这样:ABC   BIT  2FFH,地址表示部分超了一个字节了,可能不识别。后来使用 ABC        BIT        22H.0 的方式定义,程序就正常运行了。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-04-15 09:09:55

12

主题

28

回帖

246

积分

中级会员

积分
246
发表于 2024-7-31 09:37:43 来自手机 | 显示全部楼层
楼主在吗?你这问题…是属于你自己的操作问题啊。22H.0是位寻址20H-2FH中的16H位啊。跟这个2FFH有什么关系呢?你的描述也不是很清晰,我无法做出相同判断
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-05-02 07:09:45

35

主题

189

回帖

833

积分

高级会员

积分
833
发表于 2024-7-31 10:37:24 | 显示全部楼层
18纯情*** 发表于 2024-7-31 09:37
楼主在吗?你这问题…是属于你自己的操作问题啊。22H.0是位寻址20H-2FH中的16H位啊。跟这个2FFH有什么关系 ...

22H.0是位寻址20H-2FH中的10H位,你可以仔细看下,16H是22H.6位。我的意思是说C
251编译器中位地址的表示方法跟以前不一样了,在C251编译器中,20H~7FH都可以位寻址,最后一位位地址是2FFH,应该用7FH.7表示。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-04-15 09:09:55

12

主题

28

回帖

246

积分

中级会员

积分
246
发表于 2024-7-31 16:33:59 | 显示全部楼层
newl*** 发表于 2024-7-31 10:37
22H.0是位寻址20H-2FH中的10H位,你可以仔细看下,16H是22H.6位。我的意思是说C
251编译器中位地址的表示 ...

是10H,我记错了。只是上方您的写法有点模糊了,我没第一时间明白您是说C251 20H-2FH都可以位寻址
LED点亮世界🇨🇳
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 20:30 , Processed in 0.119422 second(s), 68 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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