找回密码
 立即注册
查看: 230|回复: 4

AI32G8K64 MOV RM, DIR16 ;16位直接寻址报错??

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-03 11:35:13
已绑定手机

4

主题

4

回帖

40

积分

新手上路

积分
40
发表于 2024-11-6 11:23:27 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-11-6 11:30 编辑

如:  MOV R11, 01234H ;
warning A52: VALUE HAS BEEN TRUNCATED TO 8 BITS
不知为啥keil u5,有关DIR16的指令都是不能成功编译,都是截断为8位地址指令了,所以EDATA都不能直接寻址.各位有何解决方法没有?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 2024-11-6 14:01:12 | 显示全部楼层
要用段引用的方式来用
如:

#include <REG251G1.H>


       

VAR1                SEGMENT        EDATA

rseg        VAR1
        myval: ds 1

        cseg        at 0200h

Test:
        mov                r11,myval
        ret

END
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 2024-11-6 14:02:53 | 显示全部楼层
这可能是汇编器的问题,那样使用语法上是没有问题的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 2024-11-6 14:04:39 | 显示全部楼层
就是用汇编一般也很少直接用地址定义变量,都是按段的方式定义变量,类似于C语言
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-03 11:35:13
已绑定手机

4

主题

4

回帖

40

积分

新手上路

积分
40
发表于 2024-11-6 20:16:04 | 显示全部楼层
终于找到答案了,说是要直接地址前加EDATA.
如:  MOV  R11, EDATA 01234H
测试这条指令是没有出错了。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 04:36 , Processed in 0.155613 second(s), 72 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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