MSP430汇编语言:变量分配错误

问题描述 投票:0回答:1

在课堂上学习 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
。我对程序的分区版本也遇到类似的问题。

assembly msp430 code-composer
1个回答
0
投票

摘自Fuz的评论:

注意,程序集是组装的,而不是编译的。错误在于您有一个前导

#
符号。这对于指令来说是错误的。指令没有寻址模式,仅采用不带修饰的参数,例如
.byte 40
。对于
.short
指令,您忘记给出初始值。添加它,它应该可以工作。 (src)

好吧,就这样了。

            .data
m:          .byte   40      ; multiplicand
M:          .byte   5       ; multiplier
P:          .short  0       ; product

我最初没有初始化 P,因为实验室说明说要定义但不初始化它。我没有意识到我可以使用

.space
.bss
来处理这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.