在课堂上学习MSP430 Launchpad汇编语言目前的任务是做逐步乘法和除法(即,用递归加法和减法模拟它们)。
我和教授一起学习了如何用汇编语言声明变量,但是当我试图编译时,却抛出了错误。
; Initialization Operations
Init:
mov.b m, R4 ;store m in R4
mov.b M, R5 ;store M in R5
mov.w #0, R6 ;store 0 in R6
for:
add.w R4, R6 ;add contents of R4 to P
dec.w R5 ;decrement R5
jnz for ;jump to R4 until R5 is zero
exitFor:
mov.w R6, P ;store R6 in P
jmp exitFor ;infinite loop
nop ; end program
; Variables for multiplication
.data
m: .byte #40 ; multiplicand
M: .byte #5 ; multiplier
P: .short ; product
错误都在.data
指令下面。m和M线抛出[E0200] Bad term in expression
和[E0000] Commas must separate directive elements
,P线抛出[E0005] Operand missing
。我在程序的除法版本上也遇到了类似的问题。
1条答案
按热度按时间aydmsdu91#
来自Fuz的评论:
请注意,程序集是组装的,而不是编译的。错误是你有一个前导符号
#
。这对于指令来说是错误的。指令没有寻址模式,只是接受它们的参数而不加修饰,例如。.byte 40
。对于.short
指令,您忘记了给予初始值。加上这个,它应该工作。(SRC)好吧,就这样了。
另外,我最初没有初始化P,因为实验说明中说要定义但不要初始化它。我不明白我需要使用
.space
或.bss
来处理这个问题,所以严格来说,“正确”的解决方案应该是: