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

📄 os_cpu_a.lst

📁 keil开发环境
💻 LST
📖 第 1 页 / 共 4 页
字号:
                +1   234     
                +1   235     
                +1   236     
                +1   237     
                +1   238     
                +1   239     
                +1   240     
                +1   241     
                +1   242                                                 
                +1   243     
A51 MACRO ASSEMBLER  OS_CPU_A                                                             07/02/2005 23:47:38 PAGE     5

                +1   244     
                +1   245     
                +1   246     
                +1   247     
                +1   248     
                +1   249     
                +1   250     
                +1   251     
                +1   252     
                +1   253     
                +1   254     
                +1           
                +1           
                +1   257     
                +1           
                +1           
                +1           
                +1           
                +1           
                +1   263     
                +1   264     
                +1   265     
                     266     
                     267     
                     268     
                             
                             
                     271     
                     272     
                     273     
                     274     
                     275         NAME    OS_CPU_A_ASM
                     276     
                     277     ?PR?OSCtxSw?OS_CPU_A                     SEGMENT CODE
                     278     ?PR?OSIntCtxSw?OS_CPU_A                  SEGMENT CODE
                     279     ?PR?LoadCtx?OS_CPU_A                     SEGMENT CODE
                     280     ?PR?C_OSCtxSw?OS_CPU_A                   SEGMENT CODE 
                     281     ?PR?_OSTaskStkInit?OS_CPU_A              SEGMENT CODE 
                     282     
                     283     
                     284         EXTRN   CODE (OSMapTbl)
                     285         EXTRN   DATA (OSFastSwap)
                     286         EXTRN   DATA (OSTaskID)
                     287         EXTRN   DATA (OSNextTaskID)
                     288         EXTRN   DATA (OSTsakStackBotton)
                     289         EXTRN   DATA (Os_Enter_Sum)
                     290     IF 0  <> 0
                                 EXTRN   IDATA (Sp2)
                             ENDIF
                     293     IF 0 > 0
                                 EXTRN   DATA (?C_XBP)
                             ENDIF
                     296     
                     297         PUBLIC  _OSTaskStkInit
                     298         PUBLIC  LoadCtx
                     299         PUBLIC  OSIntCtxSw
                     300         PUBLIC  OSCtxSw
                     301         PUBLIC  STACK
                     302         PUBLIC  C_OSCtxSw
                     303     
                     304     ;****************************************************************************************
                     305     ;?STACK SEGMENT IDATA
                     306     
                     307     ?STACK      SEGMENT   IDATA
                     308     
----                 309             RSEG    ?STACK
A51 MACRO ASSEMBLER  OS_CPU_A                                                             07/02/2005 23:47:38 PAGE     6

0000                 310     STACK:                                          ;堆栈
0000                 311             DS  1
                     312     
                     313     ; /****************************************************************************************
                             *****************
                     314     ; ** 函数名称: OSTaskStkInit
                     315     ; ** 功能描述: 任务堆栈初始化
                     316     ; ** 输 入: 无
                     317     ; ** 输 出 : 无
                     318     ; ** 全局变量: OSTaskID,OSTsakStackBotton,SP
                     319     ; ** 调用模块: LoadCtx
                     320     ; ** 
                     321     ; ** 作 者: 陈明计
                     322     ; ** 日 期: 2002年2月22日
                     323     ; **---------------------------------------------------------------------------------------
                             ----------------
                     324     ; ** 修改人:
                     325     ; ** 日 期:
                     326     ; **---------------------------------------------------------------------------------------
                             ----------------
                     327     ; *****************************************************************************************
                             ***************/
                     328      
----                 329         RSEG  ?PR?_OSTaskStkInit?OS_CPU_A
0000                 330     _OSTaskStkInit:
                     331         USING   0
                     332     ;---- Variable 'cp?147' assigned to Register 'R0' ----
                     333     ;---- Variable 'cp?146' assigned to Register 'R1' ----
                     334     ;---- Variable 'i?145' assigned to Register 'R2' ----
                     335     ;---- Variable 'TaskID?144' assigned to Register 'R3' ----
                     336     ;---- Variable 'ptos?143' assigned to Register 'R4/R5' ----
                     337         
0000 C006            338         PUSH    AR6
0002 C007            339         PUSH    AR7
                     340     ; {
                     341     
                     342     ;         OSFastSwap[0] &= ~OSMapTbl[TaskID];
0004 EB              343         MOV     A,R3
0005 900000   F      344         MOV     DPTR,#OSMapTbl
0008 93              345         MOVC    A,@A+DPTR
0009 4200     F      346         ORL     OSFastSwap,A
                             
                             
                                 
                                 
                                 
                                 
                                 
                             
                             
                                 
                                 
                                 
                             
                                 
                             
                             
                             
                             
                                 
                                 
                                 
                                 
                             
                             
                             
A51 MACRO ASSEMBLER  OS_CPU_A                                                             07/02/2005 23:47:38 PAGE     7

                     372     
                     373     ;     if (TaskID < OSRunningTaskID())
000B EB              374         MOV     A,R3
000C C3              375         CLR     C
000D 9500     F      376         SUBB    A,OSTaskID
000F 502E            377         JNC     StkInit5
                     378     ;     {
                     379     ;         i =  OSRunningTaskID() - TaskID;
0011 C3              380         CLR     C
0012 E500     F      381         MOV     A,OSTaskID
0014 9B              382         SUBB    A,R3
0015 FA              383         MOV     R2,A
                     384     ;         cp = (uint8 idata *)(&(OSTsakStackBotton[TaskID + 1]));
0016 7400     F      385         MOV     A,#LOW (OSTsakStackBotton+01H)
0018 2B              386         ADD     A,R3
0019 F9              387         MOV     R1,A
001A                 388     StkInit8:
                     389     ;         do
                     390     ;         {
                     391     ;             *cp += SP_ADD_BYTE;
001A 7403            392         MOV     A,#3
001C 27              393         ADD     A,@R1
001D F7              394         MOV     @R1,A
                     395     ;             cp++;
001E 09              396         INC     R1
                     397     ;         } while (--i != 0);
001F DAF9            398         DJNZ    R2,StkInit8
                     399     
                     400     ;         cp1 = (uint8 idata *)SP;
0021 A881            401         MOV     R0,SP
                     402     ;         SP = SP + SP_ADD_BYTE;
                     403                 ; SOURCE LINE # 172
0023 7403            404         MOV     A,#3
0025 2581            405         ADD     A,SP
0027 F581            406         MOV     SP,A
                     407     ;         i = SP - (uint8)(OSTsakStackBotton[TaskID + 1]) + 1;
0029 7400     F      408         MOV     A,#LOW (OSTsakStackBotton+01H)
002B 2B              409         ADD     A,R3
002C F9              410         MOV     R1,A
002D 8707            411         MOV     AR7,@R1
002F C3              412         CLR     C
0030 E581            413         MOV     A,SP
0032 9F              414         SUBB    A,R7
0033 FA              415         MOV     R2,A
0034 0A              416         INC     R2
                     417     ;         cp = (uint8 idata *)SP;
0035 A981            418         MOV     R1,SP
0037                 419     StkInit11:
                     420     ;         do
                     421     ;         {
                     422     ;             *cp-- = *cp1--;
0037 E6              423         MOV     A,@R0
0038 F7              424         MOV     @R1,A
0039 18              425         DEC     R0
003A 19              426         DEC     R1
                     427     ;         } while (--i != 0);
003B DAFA            428         DJNZ    R2,StkInit11
                     429     ;     }
003D 802C            430         SJMP    StkInit12
003F                 431     StkInit5:
                     432     ;     else
                     433     ;     {
                     434     ;         cp1 = (uint8 idata *)(&(OSTsakStackBotton[OSRunningTaskID() + 1]));
003F 7400     F      435         MOV     A,#LOW (OSTsakStackBotton+01H)
0041 2500     F      436         ADD     A,OSTaskID
0043 F8              437         MOV     R0,A
A51 MACRO ASSEMBLER  OS_CPU_A                                                             07/02/2005 23:47:38 PAGE     8

                     438     ;         i = TaskID - OSRunningTaskID();
0044 C3              439         CLR     C
0045 EB              440         MOV     A,R3
0046 9500     F      441         SUBB    A,OSTaskID
0048 FA              442         MOV     R2,A
0049                 443     StkInit15:
                     444     ;         do
                     445     ;         {
                     446     ;             *cp1 -= SP_ADD_BYTE;
0049 74FD            447         MOV     A,#(-3)
004B 26              448         ADD     A,@R0
004C F6              449         MOV     @R0,A
                     450     ;             cp1++;
004D 08              451         INC     R0
                     452     ;         } while (--i != 0);
004E DAF9            453         DJNZ    R2,StkInit15
                     454     ;         
                     455     ;         cp = OSTsakStackBotton[OSRunningTaskID() + 1];
0050 7400     F      456         MOV     A,#LOW (OSTsakStackBotton+01H)
0052 2500     F      457         ADD     A,OSTaskID
0054 F8              458         MOV     R0,A
0055 E6              459         MOV     A,@R0
0056 F9              460         MOV     R1,A
                     461     ;         i = OSTsakStackBotton[TaskID] - cp - SP_ADD_BYTE;
0057 E9              462         MOV     A,R1
0058 24FD            463         ADD     A,#(-3)
005A FF              464         MOV     R7,A
                     465     
005B 7400     F      466         MOV     A,#LOW (OSTsakStackBotton)
005D 2B              467         ADD     A,R3
005E F8              468         MOV     R0,A
005F E6              469         MOV     A,@R0
0060 C3              470         CLR     C
0061 9F              471         SUBB    A,R7
0062 FA              472         MOV     R2,A
                     473     ;         cp1 = cp - SP_ADD_BYTE;
0063 A807            474         MOV     R0,AR7
0065                 475     StkInit18:
                     476     ;         do
                     477     ;         {
                     478     ;             *cp1++ = *cp++;
0065 E7              479         MOV     A,@R1
0066 F6              480         MOV     @R0,A
0067 08              481         INC     R0
0068 09              482         INC     R1

⌨️ 快捷键说明

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