繁体   English   中英

堆栈指针设置正确但调用不工作

[英]Stack pointer set correctly but call not working

我正在为 MSP430F1232 使用 TI Code Composer Studio。 从汇编程序中的模板开始,对例程的调用不起作用,但是当我将例程直接放入代码中时,它起作用了。 为什么电话打不通?

;generated code, the watchdog is stopped and the stack pointer is set correctly
RESET       mov.w   #__STACK_END,SP         ; Initialize stackpointer
StopWDT     mov.w   #WDTPW|WDTHOLD,&WDTCTL  ; Stop watchdog timer
;-------------------------------------------------------------------------------
; Main loop here
;-------------------------------------------------------------------------------
            mov.b   #0FFh,P1DIR
            mov.b   #0,P1OUT
$1
            call    delay

            xor.b   #001h,P1OUT
            jmp     $1

            .newblock ;reuse local labels
delay       push    r14
            mov     #1000,r14
$1
            dec     r14
            jne     $1
            pop     r14
            ret

我用类似的微型 (MSP430FR2433) 重现了这个问题。 原来是寻址方式不对。 对于其他类型的微处理器,我们使用

call MySubroutine
...
MySubroutine:

对于 MSP430 和类似的,我们应该使用

call #MySubroutine
...
MySubroutine

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM