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