2014-03-29 44 views
0

說你有一個分支指令,您可以到一些其他的子程序,是有可能再返回到調用子程序,並繼續..事情是這樣的:?AVR彙編:如何從分支指令繼續?

prog: 
cp r16,r17 
breq true 
... 

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

我希望這能說明問題。

謝謝!

回答

1

任一分支回來了無條件的分支(rjmp),或在true轉換您的代碼位的子程序和轉換您breqbrne跳過去,你後放置rcall true

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

... 

true: 
    out PORTA,r16 
    ret 
+0

好吧,如果我有多個條件,說「真:假:也許:」我怎麼會跳回到調用程序?謝謝你的幫助! –

+0

這與現有的有何不同? –

+0

......我的意思是,假設它因爲符合條件而分支到假,你將如何從那裏回來? –

0
prog: 
    cpse r16,r17 
    rjmp continue 
    out PORTA,r16 
continue: 
    ... 
0
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