www.pudn.com > F2812-UCOS.rar > OS_IntSw.asm
.page
.text
_OSIntCtxSw:
.ref _OSTCBHighRdy
.ref _OSTCBCur
.ref _OSPrioHighRdy
.ref _OSPrioCur
.global _OSIntCtxSw
;模拟返回中断
;保存当前环境
SUBB SP,#4
MOVW DP,#_OSTCBCur ; OSTCBCur->OSTCBStkPtr = SP
MOVL XAR4,@_OSTCBCur ; |274|
MOV AL,SP
MOV *+XAR4[0],AL ; |274|
;=================================================================================
MOVW DP,#_OSTCBHighRdy ; OSTCBCur = OSTCBHighRdy
MOVL ACC,@_OSTCBHighRdy
MOVW DP,#_OSTCBCur
MOVL @_OSTCBCur,ACC
MOVW DP,#_OSPrioHighRdy ;OSPrioCur = OSPrioHighRdy
MOV AL,@_OSPrioHighRdy
MOVW DP,#_OSPrioCur
MOV @_OSPrioCur,AL
;=================================================================================
MOVW DP,#_OSTCBHighRdy ;SP = OSTCBhighRdy->OSTCBStkPtr
MOVL XAR4,@_OSTCBHighRdy
MOV AL,*+XAR4[0]
MOV @SP,AL
POP RPC
IRET
.end