MSP430汇编变量分配错误:分步乘除程序编译报错求助
MSP430汇编变量声明错误修复方案
错误原因分析
你遇到的编译错误全部来自.data段的变量声明语法问题,MSP430汇编器对伪指令的操作数格式有严格要求:
.byte/.short这类数据定义伪指令不需要用#前缀标记数值(#是指令中表示立即数的符号,伪指令直接使用数值即可).short伪指令必须提供初始化操作数,不能空着
修复后的代码
; 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 0 ; product(添加初始化值0)
除法版本通用修复规则
如果除法版本的变量声明有类似问题,套用同样规则:
- 所有
.byte/.word/.short的初始化数值前去掉# - 数据定义伪指令必须带操作数,预留空间时可以初始化为0,或者用
.space指令指定字节数(比如.space 2等价于.short 0)
内容的提问来源于stack exchange,提问作者StarSword
相关产品推荐
相关产品推荐

