⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_cpu_a.lst

📁 《uC/os-II 内核分析.移植与驱动程序开发》随书光盘中的全部源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM                                                         PAGE    5

     183 0000003e 06BE       POP        ACC
     184 0000003f D009       MOVB       XAR0,#9     
     185 00000040 9794       MOV        *+XAR4[AR0],AH                  ;保存 PH           
     186 00000041 D008       MOVB       XAR0,#8     
     187 00000042 9694       MOV        *+XAR4[AR0],AL                  ;保存 PL
     188                    
     189 00000043 06BE       POP        ACC
     190 00000044 D007       MOVB       XAR0,#7     
     191 00000045 9794       MOV        *+XAR4[AR0],AH                  ;保存 AH           
     192 00000046 D006       MOVB       XAR0,#6     
     193 00000047 9694       MOV        *+XAR4[AR0],AL                  ;保存 AL
     194                    
     195 00000048 06BE       POP        ACC
     196 00000049 D005       MOVB       XAR0,#5     
     197 0000004a 9794       MOV        *+XAR4[AR0],AH                  ;保存 T     
     198 0000004b D004       MOVB       XAR0,#4     
     199 0000004c 9694       MOV        *+XAR4[AR0],AL                  ;保存 ST0      
     200                   
     201 0000004d 2AA9       POP    AL  
     202              ;********************************************************************************     
     203              
     204              ;=================================================================================      
     205 0000004e 761F!          MOVW   DP,#_OSTCBHighRdy               ; OSTCBCur = OSTCBHighRdy
         0000004f 0000 
     206 00000050 0600!      MOVL   ACC,@_OSTCBHighRdy    
     207 00000051 761F!      MOVW   DP,#_OSTCBCur
         00000052 0000 
     208 00000053 1E00!      MOVL   @_OSTCBCur,ACC        
     209                      
     210                      
     211 00000054 761F!      MOVW   DP,#_OSPrioHighRdy          ;OSPrioCur = OSPrioHighRdy
         00000055 0000 
     212 00000056 9200!      MOV    AL,@_OSPrioHighRdy    
     213 00000057 761F!      MOVW   DP,#_OSPrioCur
         00000058 0000 
     214 00000059 9600!      MOV    @_OSPrioCur,AL        
     215              ;=================================================================================           
     216                   
     217              ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
     218                   ;模拟中断
     219                   ;装载新任务的cpu环境
     220                   
     221                   
     222 0000005a 761F!      MOVW   DP,#_OSTCBHighRdy
         0000005b 0000 
     223 0000005c 8A00!      MOVL   XAR4,@_OSTCBHighRdy                 ; |165| 
     224 0000005d 8AC4       MOVL   XAR4,*+XAR4[0]              ; |165| 
     225                               
     226                                  
     227                    ;模拟中断      
     228 0000005e 22A9        PUSH AL
     229                   
     230                                  
     231 0000005f D004        MOVB XAR0,#4     
     232 00000060 9294        MOV  AL,*+XAR4[AR0]                       ;得到 ST0                                    
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003

Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM                                                         PAGE    6

     233 00000061 D005        MOVB XAR0,#5     
     234 00000062 9394        MOV  AH,*+XAR4[AR0]                       ;得到 T      
     235 00000063 1EBD        PUSH ACC
     236                   
     237                          
     238 00000064 D006        MOVB XAR0,#6     
     239 00000065 9294        MOV  AL,*+XAR4[AR0]                       ;得到 AL
     240 00000066 D007        MOVB XAR0,#7     
     241 00000067 9394        MOV  AH,*+XAR4[AR0]                       ;得到 AH
     242 00000068 1EBD        PUSH ACC            
     243                          
     244 00000069 D008        MOVB XAR0,#8     
     245 0000006a 9294        MOV  AL,*+XAR4[AR0]                       ;得到 PL            
     246 0000006b D009        MOVB XAR0,#9     
     247 0000006c 9394        MOV  AH,*+XAR4[AR0]                       ;得到 PH
     248 0000006d 1EBD        PUSH ACC
     249                          
     250                          
     251 0000006e D00A        MOVB XAR0,#10     
     252 0000006f 9294        MOV  AL,*+XAR4[AR0]                       ;得到 AR0            
     253 00000070 D00B        MOVB XAR0,#11     
     254 00000071 9394        MOV  AH,*+XAR4[AR0]                       ;得到 AR1
     255 00000072 1EBD        PUSH ACC
     256                          
     257 00000073 D00C        MOVB XAR0,#12     
     258 00000074 9294        MOV  AL,*+XAR4[AR0]                       ;得到 ST1      
     259 00000075 D00D        MOVB XAR0,#13     
     260 00000076 9394        MOV  AH,*+XAR4[AR0]                       ;得到 DP
     261 00000077 1EBD        PUSH ACC                  
     262                    
     263 00000078 D00E        MOVB XAR0,#14     
     264 00000079 9294        MOV  AL,*+XAR4[AR0]                       ;得到 IER            
     265 0000007a D00F        MOVB XAR0,#15     
     266 0000007b 9394        MOV  AH,*+XAR4[AR0]                       ;得到 DBGSTAT
     267 0000007c 1EBD        PUSH ACC
     268                        
     269 0000007d 93D4        MOV     AH,*+XAR4[2]              ;task addr
     270 0000007e 92DC        MOV     AL,*+XAR4[3]      
     271 0000007f 1EBD        PUSH    ACC               
     272              ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
     273                    
     274 00000080 7602        IRET
     275                       
     276              
     277              
     278              ;*********************************************************************************************************
     279              ;                                PERFORM A CONTEXT SWITCH (From an ISR)
     280              ;                                        void OSIntCtxSw(void)
     281              ;
     282              ; Note(s): 1) Upon entry, 
     283              ;             OSTCBCur     points to the OS_TCB of the task to suspend
     284              ;             OSTCBHighRdy points to the OS_TCB of the task to resume
     285              ;
     286              ;          2) The stack frame of the task to suspend looks as follows:
     287              ;
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003

Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM                                                         PAGE    7

     288              ;                                  SP+0 --> OFFSET  of return address of OSIntCtxSw()  (Low memory)
     289              ;                                    +2     SEGMENT of return address of OSIntCtxSw()
     290              ;                                    +4     PSW saved by OS_ENTER_CRITICAL() in OSIntExit()
     291              ;                                    +6     OFFSET  of return address of OSIntExit()
     292              ;                                    +8     SEGMENT of return address of OSIntExit()
     293              ;                                    +10    DS                               
     294              ;                                           ES
     295              ;                                           DI
     296              ;                                           SI
     297              ;                                           BP
     298              ;                                           SP
     299              ;                                           BX
     300              ;                                           DX
     301              ;                                           CX
     302              ;                                           AX
     303              ;                                           OFFSET  of task code address
     304              ;                                           SEGMENT of task code address
     305              ;                                           Flags to load in PSW                       (High memory)
     306              ;
     307              ;          3) The stack frame of the task to resume looks as follows:
     308              ; 
     309              ;             OSTCBHighRdy->OSTCBStkPtr --> DS                               (Low memory)
     310              ;                                           ES
     311              ;                                           DI
     312              ;                                           SI
     313              ;                                           BP
     314              ;                                           SP
     315              ;                                           BX
     316              ;                                           DX
     317              ;                                           CX
     318              ;                                           AX
     319              ;                                           OFFSET  of task code address
     320              ;                                           SEGMENT of task code address
     321              ;                                           Flags to load in PSW             (High memory)
     322              ;*********************************************************************************************************
     323 00000081       _OSIntCtxSw:
     324                      .ref _OSTCBHighRdy
     325                      .ref _OSTCBCur
     326                      .ref _OSPrioHighRdy
     327                      .ref _OSPrioCur
     328                      .global _OSIntCtxSw
     329                      
     330                       ;模拟返回中断
     331                       ;保存当前环境
     332                       
     333              ;********************************************************************************
     334 00000081 761F!          MOVW   DP,#_OSTCBCur
         00000082 0000 
     335 00000083 8A00!      MOVL   XAR4,@_OSTCBCur             ; |165| 
     336 00000084 8AC4       MOVL   XAR4,*+XAR4[0]              ; |165|      
     337              
     338              ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     339              ;保存被切换的RPC
     340 00000085 FE82           SUBB  SP,#2
     341                       
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003

Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM                                                         PAGE    8

     342 00000086 2AA9           POP   AL
     343 00000087 D011           MOVB XAR0,#17     
     344 00000088 9694           MOV   *+XAR4[AR0],AL
     345                        
     346 00000089 2AA9           POP   AL
     347 0000008a D010           MOVB XAR0,#16     
     348 0000008b 9694           MOV   *+XAR4[AR0],AL
     349              ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          
     350              
     351 0000008c 06BE       POP    ACC                                         
     352 0000008d 97D4       MOV    *+XAR4[2],AH                ;保存task addr
     353 0000008e 96DC       MOV    *+XAR4[3],AL                
     354                   
     355                    
     356                      
     357 0000008f 06BE       POP        ACC
     358 00000090 D00F       MOVB       XAR0,#15     
     359 00000091 9794       MOV        *+XAR4[AR0],AH                  ;保存DBGSTAT          
     360 00000092 D00E       MOVB       XAR0,#14     
     361 00000093 9694       MOV        *+XAR4[AR0],AL                  ;保存 IER
     362                    
     363 00000094 06BE       POP        ACC  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -