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

📄 os_cpu_a.lst

📁 keil开发环境
💻 LST
📖 第 1 页 / 共 4 页
字号:
0036 600F            722         JZ      ?C0005
                     723     
0038 7400     F      724         MOV     A,#LOW (OSTsakStackBotton)
003A 2500     F      725         ADD     A,OSTaskID
003C F9              726         MOV     R1,A    
003D EF              727         MOV     A,R7
003E F4              728         CPL     A
003F 04              729         INC     A
0040 FF              730         MOV     R7,A
0041                 731     ?C0004:
0041 09              732         INC     R1
0042 EF              733         MOV     A,R7
0043 27              734         ADD     A,@R1    
0044 F7              735         MOV     @R1,A
0045 DEFA            736         DJNZ    R6,?C0004
0047                 737     ?C0005:
                     738     ;         OSTaskID = OSNextTaskID;
0047 850000   F      739         MOV     OSTaskID,OSNextTaskID
                     740     ;         LoadCtx();    
004A 020000   F      741         LJMP    LoadCtx
                     742     ;     }
004D                 743     ?C0001:
                     744     ; 
                     745     ;     if( OSNextTaskID != OSTaskID)
004D E500     F      746         MOV     A,OSNextTaskID
004F 6500     F      747         XRL     A,OSTaskID
0051 6036            748         JZ      ?C000r
                     749     ;     {
                     750     ;          cp2--;
                     751     ;          cp1--;
                     752     ;         while(cp2 != (unsigned char idata *)temp)
                     753     ;         {
A51 MACRO ASSEMBLER  OS_CPU_A                                                             07/02/2005 23:47:38 PAGE    13

                     754     ;             *cp2-- = *cp1--;
                     755     ;         }
                     756         ;MOV     A,R7
                     757         ;CLR     C
                     758         ;SUBB    A,R1
                     759         ;MOV     R6,A
0053 E8              760         mov     a,r0
0054 C3              761         clr     c
0055 9F              762         subb    a,r7
0056 FE              763         mov     r6,a
0057                 764     ?C0008:
0057 18              765         DEC     R0
0058 19              766         DEC     R1
0059 E6              767         MOV     A,@R0
005A F7              768         MOV     @R1,A
005B DEFA            769         DJNZ    R6,?C0008
005D                 770     ?C0009:
                     771     ;         temp = OSTsakStackBotton[OSTaskID+1] - (unsigned char idata *)SP-1;
005D 7400     F      772         MOV     A,#LOW (OSTsakStackBotton+01H)
005F 2500     F      773         ADD     A,OSTaskID
0061 F9              774         MOV     R1,A
0062 E7              775         MOV     A,@R1
0063 D3              776         SETB    C
                     777         ;SUBB    A,SP
0064 9A              778         SUBB    A,r2
0065 FF              779         MOV     R7,A
                     780     ;         SP = (unsigned char )OSTsakStackBotton[OSNextTaskID+1];
0066 7400     F      781         MOV     A,#LOW (OSTsakStackBotton+01H)
0068 2500     F      782         ADD     A,OSNextTaskID
006A F9              783         MOV     R1,A
006B E7              784         MOV     A,@R1
006C F581            785         MOV     SP,A
                     786     ;         for(i = OSNextTaskID+1;i < OSTaskID+1; i++)
                     787     ;         {
                     788     ;             OSTsakStackBotton[i] += temp;
                     789     ;         }
                     790     
006E E500     F      791         MOV     A,OSTaskID
0070 C3              792         CLR     C
0071 9500     F      793         SUBB    A,OSNextTaskID
0073 600C            794         JZ      ?C0011
                     795     
0075 FE              796         MOV     R6,A
0076 7400     F      797         MOV     A,#LOW (OSTsakStackBotton)
0078 2500     F      798         ADD     A,OSNextTaskID
007A F9              799         MOV     R1,A    
007B                 800     ?C0010:
007B 09              801         INC     R1
007C EF              802         MOV     A,R7
007D 27              803         ADD     A,@R1    
007E F7              804         MOV     @R1,A
007F DEFA            805         DJNZ    R6,?C0010
                     806     
0081                 807     ?C0011:
                     808     ;         OSTaskID = OSNextTaskID;        
0081 850000   F      809         MOV     OSTaskID,OSNextTaskID
                     810     ;         SP--;
0084 1581            811         DEC     SP
                     812     ;     }
0086                 813     ?C0007:
                     814     ;     LoadCtx();
0086 020000   F      815         LJMP    LoadCtx
0089                 816     ?C000r:
                     817     IF 0  <> 0
                                 mov     SP,r2
                             ENDIF
A51 MACRO ASSEMBLER  OS_CPU_A                                                             07/02/2005 23:47:38 PAGE    14

0089 020000   F      820         LJMP    LoadCtx
                     821     ;****************************************************************************************
                     822     ;/*****************************************************************************************
                             ****************
                     823     ;** 函数名称: OSIntCtxSw
                     824     ;** 功能描述: 中断使任务放弃CPU环境保存函数
                     825     ;** 输 入: OSTaskID
                     826     ;** 输 出 : 无
                     827     ;** 全局变量: OSFastSwap
                     828     ;** 调用模块: 无
                     829     ;** 
                     830     ;** 作 者: 陈明计
                     831     ;** 日 期: 2002年2月22日
                     832     ;**----------------------------------------------------------------------------------------
                             ---------------
                     833     ;** 修 改: 陈明计
                     834     ;** 日 期: 2002年12月2日
                     835     ;**----------------------------------------------------------------------------------------
                             ---------------
                     836     ;** 修 改:
                     837     ;** 日 期:
                     838     ;**----------------------------------------------------------------------------------------
                             ---------------
                     839     ;******************************************************************************************
                             **************/
----                 840         RSEG  ?PR?OSIntCtxSw?OS_CPU_A
0000                 841     OSIntCtxSw:
                     842         USING   0
                     843                                             ;是否是优先级最低任务
0000 7402            844         MOV     A,#2
0002 6500     F      845         XRL     A,OSTaskID
0004 700F            846         JNZ     OSIntCtxSw_0
                     847                                             ;是则不需要保存所有寄存器
                     848     ;SP=SP-13-4                             ;4:两层函数调用堆栈,13:寄存器数目
0006 74EF            849         MOV     A,#(-17)
0008 2581            850         ADD     A,SP
000A F581            851         MOV     SP,A
                     852                                             ;跳转到OSCtxSw,同时通知CPU中断处理完成
000C 7400     F      853         MOV     A, #LOW  OSCtxSw
000E C0E0            854         PUSH    ACC
0010 7400     F      855         MOV     A, #HIGH OSCtxSw
0012 C0E0            856         PUSH    ACC
0014 32              857         RETI
                     858                                             ;需要保存所有寄存器
0015                 859     OSIntCtxSw_0:
                     860     ;SP=SP-4                                ;4:两层函数调用堆栈
0015 74FC            861         MOV     A,#0FCH
0017 2581            862         ADD     A,SP
0019 F581            863         MOV     SP,A
                     864                                             ;设置标志:任务再次恢复运行时需要恢复所有寄存器
001B 900000   F      865         MOV     DPTR,#OSMapTbl
001E E500     F      866         MOV     A,OSTaskID
                     867     
0020 93              868         MOVC    A,@A+DPTR
0021 F4              869         CPL     A
0022 5200     F      870         ANL     OSFastSwap,A
                             
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                             
                                 
A51 MACRO ASSEMBLER  OS_CPU_A                                                             07/02/2005 23:47:38 PAGE    15

                                 
                                 
                                 
                             
                             
                     886     
                     887     
                                 
                                 
                             
0024 C000     F      891         PUSH    Os_Enter_Sum            ;保存关中断计数器
                     892                                             ;跳转到堆栈处理,同时通知CPU中断处理完成
0026 7400     F      893         MOV     A, #LOW  C_OSCtxSw
0028 C0E0            894         PUSH    ACC
002A 7400     F      895         MOV     A, #HIGH C_OSCtxSw
002C C0E0            896         PUSH    ACC
002E 32              897         RETI
                     898     
                     899     ;/*****************************************************************************************
                             ****************
                     900     ;**                            End Of File
                     901     ;******************************************************************************************
                             **************/
                     902         END
A51 MACRO ASSEMBLER  OS_CPU_A                                                             07/02/2005 23:47:38 PAGE    16

SYMBOL TABLE LISTING
------ ----- -------


N A M E                      T Y P E  V A L U E   ATTRIBUTES

?C0001. . . . . . . . . . .  C ADDR   004DH   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0002. . . . . . . . . . .  C ADDR   001EH   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0003. . . . . . . . . . .  C ADDR   0024H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0004. . . . . . . . . . .  C ADDR   0041H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0005. . . . . . . . . . .  C ADDR   0047H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0007. . . . . . . . . . .  C ADDR   0086H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0008. . . . . . . . . . .  C ADDR   0057H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0009. . . . . . . . . . .  C ADDR   005DH   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C000R. . . . . . . . . . .  C ADDR   0089H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0010. . . . . . . . . . .  C ADDR   007BH   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0011. . . . . . . . . . .  C ADDR   0081H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?PR?C_OSCTXSW?OS_CPU_A. . .  C SEG    008CH       REL=UNIT
?PR?LOADCTX?OS_CPU_A. . . .  C SEG    0033H       REL=UNIT
?PR?OSCTXSW?OS_CPU_A. . . .  C SEG    000DH       REL=UNIT
?PR?OSINTCTXSW?OS_CPU_A . .  C SEG    002FH       REL=UNIT
?PR?_OSTASKSTKINIT?OS_CPU_A  C SEG    007CH       REL=UNIT
?STACK. . . . . . . . . . .  I SEG    0001H       REL=UNIT
ACC . . . . . . . . . . . .  D ADDR   00E0H   A   
AR6 . . . . . . . . . . . .  D ADDR   0006H   A   
AR7 . . . . . . . . . . . .  D ADDR   0007H   A   
B . . . . . . . . . . . . .  D ADDR   00F0H   A   
C_OSCTXSW . . . . . . . . .  C ADDR   0000H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
DPH . . . . . . . . . . . .  D ADDR   0083H   A   
DPL . . . . . . . . . . . .  D ADDR   0082H   A   
EA. . . . . . . . . . . . .  B ADDR   00A8H.7 A   
LOADCTX . . . . . . . . . .  C ADDR   0000H   R   SEG=?PR?LOADCTX?OS_CPU_A
LOADCTX_0 . . . . . . . . .  C ADDR   0009H   R   SEG=?PR?LOADCTX?OS_CPU_A
LOADCTX_2 . . . . . . . . .  C ADDR   002BH   R   SEG=?PR?LOADCTX?OS_CPU_A
LOADCTX_3 . . . . . . . . .  C ADDR   0032H   R   SEG=?PR?LOADCTX?OS_CPU_A
OSCTXSW . . . . . . . . . .  C ADDR   0000H   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSFASTSWAP. . . . . . . . .  D ADDR   -----       EXT
OSINTCTXSW. . . . . . . . .  C ADDR   0000H   R   SEG=?PR?OSINTCTXSW?OS_CPU_A
OSINTCTXSW_0. . . . . . . .  C ADDR   0015H   R   SEG=?PR?OSINTCTXSW?OS_CPU_A
OSMAPTBL. . . . . . . . . .  C ADDR   -----       EXT
OSNEXTTASKID. . . . . . . .  D ADDR   -----       EXT
OSTASKID. . . . . . . . . .  D ADDR   -----       EXT
OSTSAKSTACKBOTTON . . . . .  D ADDR   -----       EXT
OS_CPU_A_ASM. . . . . . . .  N NUMB   -----       
OS_ENTER_SUM. . . . . . . .  D ADDR   -----       EXT
PSW . . . . . . . . . . . .  D ADDR   00D0H   A   
SP. . . . . . . . . . . . .  D ADDR   0081H   A   
STACK . . . . . . . . . . .  I ADDR   0000H   R   SEG=?STACK
STKINIT11 . . . . . . . . .  C ADDR   0037H   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
STKINIT12 . . . . . . . . .  C ADDR   006BH   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
STKINIT15 . . . . . . . . .  C ADDR   0049H   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
STKINIT18 . . . . . . . . .  C ADDR   0065H   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
STKINIT5. . . . . . . . . .  C ADDR   003FH   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
STKINIT8. . . . . . . . . .  C ADDR   001AH   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
_OSTASKSTKINIT. . . . . . .  C ADDR   0000H   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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