我如何在汇编中退出for语句

时间:2019-02-24 02:11:23

标签: assembly msp430

此代码的目的是将打开的位刷新3次,退出循环然后将其关闭。当前,代码似乎处于无限循环中,并且在计数为0后不会退出循环

                   mov.b   #0x00,&P2REN ;

                   mov.b   #0xFF,&P2OUT ;
                   ;mov.b   #3, r5
                   .bss    i,3 





                                     mov.w   #3,&i        ; 



                   dec.w   &i           ; i--,
                   jnz     for          ; back to for loop
  for_Done:

                    delayloop:                 dec.w   r15          ;
                   jnz     delayloop    ;jump if not zero to delayloop
                   jmp     for         ;jump to the for
                   ;jmp    for_Done

1 个答案:

答案 0 :(得分:1)

就像@PeterCordes提到的那样,最后一个命令是无条件跳转到循环。

该循环从末尾跳转到循环后,将变量i减为0。将再次用3初始化。在循环中将i减1后,它将为负,并保持32,000次以上的迭代(w = 16Bit?)。直到最后一跳,所有一切都将从新开始。

您真的需要最后一跳吗?如果您输入以下代码,则可以确保i == 0