RET指令

RET指令

RET是子程式的返回指令 執行本指令時: (SP)→PCH,然後(SP) —1→SP (SP)→PCL,然後(SP)—1→SP

執行過程

(SP)->PCH,然後(SP)-1->SP

(SP)->PCL,然後(SP)-1->SP

最終使sp-2

功能

從堆疊中退出pc的高8位和低8位位元組,把堆疊指針減2,從pc值處開始繼續執行程式。不影響任何標誌。

例子

;主程式

MAIN:SETB P1.0 ;(1)開始主程式,P1.0口置1(P1.0 口輸出為高,可以控制LED點亮)

LCALL DELAY ;(2)此時當前堆疊指針加2 ,調用(6)DELAY延時子程式

CLR P1.0 ;(3)P1.0口清零(P1.0 口輸出為低,可以控制LED熄滅)

LCALL DELAY ;(4)此時當前堆疊指針加2 ,調用(6)DELAY延時子程式

LJMP MAIN ;(5)跳轉到主程式,這樣LED實現循環點亮

;子程式

DELAY:MOV R7,#250 ;(6)250-->R7

D1:MOV R6,#250 ;(7)250--->R6

D2:DJNZ R6,D2 ;(8)(R6-1),等於零執行下一條,不等於零,則跳轉到D2

DJNZ R7,D1 ;(9)(R7-1),等於零執行下一條,不等於零,則跳轉到D1

RET ; (10)當前堆疊指針減2,返回到(3)CLR P1.0繼續執行MAIN 主程式。

END . (11)程式結束(偽指令)

相關詞條

相關搜尋

熱門詞條

聯絡我們