2017-04-09 116 views
0

我是新装配(我们正在学校使用MSP430控制器),我试图做两件事情。在MSP430汇编器中使用十六进制数字

  1. 移动的十六进制数在一定的位置:mov #FFFh, R5(将它移入第五寄存器)
  2. 与另一比较一个十六进制数:cmp #FFFh, #45
  mov.b #0, R4 ; indice 
      mov.b #0, R5 ; contatore 

      bis.b #00000001b, P1DIR ; led rosso 
      bis.b #10000000b, P4DIR ; led verde 

main_loop: cmp #19, R5 
      jz end 
      cmp #FFFFh, 2C00h(R4) 
      jnz nope 
      jmp yep 

nope:  inc.b R4 
      jmp main_loop 

yep:  inc.b R4 
      inc.b R5 
      jmp main_loop 

end:  cmp #5, R5 
      jge red_led 
      jmp green_led 

red_led: bis.b #00000001b, P1OUT 
green_led: bis.b #10000000b, P4OUT 

编译器日志(我们使用的是CCS,CodeComposer)说:

“../main.asm”,错误!在EOF:[E0300]下列符号是不确定的:
FFFFh时

我怎样才能解决这个问题?

+0

请告诉我们您的两个实际的源代码,你得到了错误的信息。如果没有这两者,就很难帮助你。 – fuz

+0

@fuz编辑源代码 –

+0

最后一条指令后会发生什么?这是你的整个程序吗? –

回答

2

以数字开始的单词(0 ... 9)被解释为数字。
以字母(A ... Z)开头的单词被解释为名称(寄存器或变量或标签的名称)。

因此,当一个十六进制数以字母开头,则必须加一个零:

 cmp #0FFFFh, 2C00h(R4) 
+0

它的工作,非常感谢! –