簡體   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