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