在 MSP430 汇编器中使用十六进制数
Using hex numbers in MSP430 assembler
我是装配新手(我们在学校使用它和 MSP430 控制器),我正在尝试做两件事。
- 将一个十六进制数移动到某个位置:
mov #FFFh, R5
(将其移动到第五个寄存器)
- 将一个十六进制数与另一个进行比较:
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", ERROR! at EOF: [E0300] The following symbols are undefined:
FFFFh
我该如何解决这个问题?
以数字开头的单词 (0
… 9
) 被解释为数字。
以字母 (A
… Z
) 开头的单词被解释为名称(寄存器或变量或标签)。
所以当十六进制数以字母开头时,必须加一个零:
cmp #0FFFFh, 2C00h(R4)
我是装配新手(我们在学校使用它和 MSP430 控制器),我正在尝试做两件事。
- 将一个十六进制数移动到某个位置:
mov #FFFh, R5
(将其移动到第五个寄存器) - 将一个十六进制数与另一个进行比较:
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", ERROR! at EOF: [E0300] The following symbols are undefined:
FFFFh
我该如何解决这个问题?
以数字开头的单词 (0
… 9
) 被解释为数字。
以字母 (A
… Z
) 开头的单词被解释为名称(寄存器或变量或标签)。
所以当十六进制数以字母开头时,必须加一个零:
cmp #0FFFFh, 2C00h(R4)