複製鏈接
請複製以下鏈接發送給好友

RET指令

鎖定
RET是子程序的返回指令
執行本指令時:
sp增加一個內存單元
棧頂數據出棧賦值給ip寄存器
中文名
RET指令
概    念
RET是子程序的返回指令
功    能
堆棧中退出pc的高8位和低8位字節
主程序
MAIN:SETB P1.0

目錄

RET指令執行過程

(SP)->PCH,然後(SP)-1->SP
(SP)->PCL,然後(SP)-1->SP
最終使sp-2

RET指令功能

堆棧中退出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)程序結束(偽指令)