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

Assembly AVR汇编:如何从分支指令继续?,assembly,avr,Assembly,Avr,假设有一条分支指令将您带到另一个子例程,那么是否可以返回到调用的子例程并继续?。。大概是这样的: 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,

假设有一条分支指令将您带到另一个子例程,那么是否可以返回到调用的子例程并继续?。。大概是这样的:

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

好吧,如果我有多个条件,说‘真:假:也许’,‘我怎么能跳回调用例程呢?谢谢你的帮助!。。。我的意思是,假设它分支为false,因为它满足了条件,你如何从那里返回?好的,我明白了,我想这样你就不能返回并尝试在其他条件下再次分支,如果你已经分支了。。。分支指令不改变任何标志;只需执行另一条分支指令。
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