繁体   English   中英

AVR汇编:如何从分支指令继续?

[英]AVR Assembly: How to continue from branch instruction?

说您有一条跳转指令,该指令将您带到其他子例程,是否有可能然后返回到调用子例程并继续执行?..诸如此类:

prog:
cp r16,r17
breq true
...

true:
out PORTA,r16
HOW DO I RETURN TO EXECUTE THE REST OF prog?

我希望这可以说明问题。

谢谢!

可以使用无条件分支( rjmp )向后分支,或者将true的代码转换为子例程,然后将breq转换为brne以跳过放置在rcall true

prog:
    cp r16,r17
    brne false
    rcall true
false:
    ...

 ...

true:
    out PORTA,r16
    ret
prog:
    cpse r16,r17
    rjmp continue
    out PORTA,r16
continue:
    ...
prog:
 cp r16,r17
 breq true  ;branch if equal
 brne false ;branch in not equal
 Rest of the program
 .
 .
 .
rjmp prog

false:
 Do something
 .
 .
ret

true:
 out PORTA,r16
 ;HOW DO I RETURN TO EXECUTE THE REST OF prog?
 ;Add a return statement, that will continue where you left
ret

暂无
暂无

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

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