STM8SF103汇编 - 向ram寄存器加载立即值

时间:2016-12-21 22:02:27

标签: assembly stm8

我正在尝试用stm8sf103微控制器的汇编语言编写程序。 我想在ram寄存器(例如$ 0)中存储一个立即的十六进制值,但这不起作用,我想知道原因:

stm8/
    segment 'rom'

loop
    ld  $0,#5
    jp  loop

    end

我收到错误:

as1 : Error 54: Can't match Addressing mode ' ld $0,#5'

1 个答案:

答案 0 :(得分:4)

使用

MOV $0, #5

指令不会影响任何条件标志。

ST8 Programming Manual开始,MOV的描述为

  

将一个字节的数据从源地址移动到目标地址。数据   在移动 1 时检查。累加器不受影响。

     

MOV指令有3种寻址模式:

     
      
  • 直接存储位置的直接字节
  •   
  • 到另一个直接内存位置的直接内存位置(从$ 00起   到$ FF)
  •   
  • 到另一个直接内存位置的直接内存位置(来自   $ 0000至$ FFFF)
  •   

您可以参考该手册获取支持的寻址模式(总共20个),这样您就可以理解ld $0,#5无法工作的原因(没有直接立即寻址)。

1 我无法理解这句话,我相信有一个拼写错误(它应该数据不被检查...... )。该手册明确指出没有标志受到影响。