[英]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.