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