guo_stc 发表于 2024-11-6 11:23:27

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

本帖最后由 DebugLab 于 2024-11-6 11:30 编辑

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

bkeuqoaq 发表于 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

bkeuqoaq 发表于 2024-11-6 14:02:53

这可能是汇编器的问题,那样使用语法上是没有问题的

bkeuqoaq 发表于 2024-11-6 14:04:39

就是用汇编一般也很少直接用地址定义变量,都是按段的方式定义变量,类似于C语言

guo_stc 发表于 2024-11-6 20:16:04

终于找到答案了,说是要直接地址前加EDATA.
如:MOVR11, EDATA 01234H
测试这条指令是没有出错了。
页: [1]
查看完整版本: AI32G8K64 MOV RM, DIR16 ;16位直接寻址报错??