我正在尝试用stm8sf103
微控制器的汇编语言编写程序。
我想在ram寄存器(例如$ 0)中存储一个立即的十六进制值,但这不起作用,我想知道原因:
stm8/
segment 'rom'
loop
ld $0,#5
jp loop
end
我收到错误:
as1 : Error 54: Can't match Addressing mode ' ld $0,#5'
答案 0 :(得分:4)
使用
MOV $0, #5
指令不会影响任何条件标志。
从ST8 Programming Manual开始,MOV
的描述为
将一个字节的数据从源地址移动到目标地址。数据 在移动 1 时检查。累加器不受影响。
MOV
指令有3种寻址模式:
- 直接存储位置的直接字节
- 到另一个直接内存位置的直接内存位置(从$ 00起 到$ FF)
- 到另一个直接内存位置的直接内存位置(来自 $ 0000至$ FFFF)
您可以参考该手册获取支持的寻址模式(总共20个),这样您就可以理解ld $0,#5
无法工作的原因(没有直接立即寻址)。
1 我无法理解这句话,我相信有一个拼写错误(它应该数据不被检查...... )。该手册明确指出没有标志受到影响。