2017-04-09 115 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

它的工作,非常感謝! –