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

📄 os_cpu_a.lst

📁 ucos移植学习
💻 LST
📖 第 1 页 / 共 2 页
字号:
0052 D0D0            196             POP     PSW
0054 D082            197             POP     DPL
0056 D083            198             POP     DPH
0058 D0F0            199             POP     B
005A D0E0            200             POP     ACC     ;A is register but ACC is direct ram
                     201     
005C D2AF            202             SETB    EA      ;after start, enable EA
005E 32              203             RETI
                     204     
                     205     
                     206     
                     207     ;                       --------------------------------------------------
                     208     ;                       --------------------- OSCtxSw() ------------------
                     209     ;                       --------------------------------------------------
                     210     
----                 211             RSEG ?PR?OSCtxSw?OS_CPU_A
0000                 212     OSCtxSw:
                     213     
                     214     ;-----------------
                     215     ; push registers
                     216     ;-----------------
0000 C0E0            217             PUSH    ACC
0002 C0F0            218             PUSH    B
0004 C083            219             PUSH    DPH
0006 C082            220             PUSH    DPL
0008 C0D0            221             PUSH    PSW
000A C000            222             PUSH    00
000C C001            223             PUSH    01
000E C002            224             PUSH    02
0010 C003            225             PUSH    03
0012 C004            226             PUSH    04
0014 C005            227             PUSH    05
0016 C006            228             PUSH    06
0018 C007            229             PUSH    07
                     230     
001A                 231     OSCPUAUniformCtxSw:
                     232     ;assume register is pushed to hardware stack, in the format as discripted at the beginning 
                             of this file
                     233     ;Before jump OSCPUAUniformCtxSw, OSCtxSw or OSIntCtxSw must first push registers to hardwar
                             e stack as this format.
                     234     
                     235     ;----------------------
                     236     ;Get OSTCBCurRdy->OSTCBStkPtr to DPTR
                     237     ;-----------------------
                     238     ;high byte is at low address
                     239     
                     240     ;OSTCBCurRdy to dptr
001A 758300   F      241             MOV     DPH,#HIGH(OSTCBCur)
001D 758200   F      242             MOV     DPL,#LOW (OSTCBCur)
0020 E0              243             MOVX    A,@DPTR
0021 F8              244             MOV     R0,A
0022 A3              245             INC     DPTR
0023 E0              246             MOVX    A,@DPTR
0024 8883            247             MOV     DPH,R0
0026 F582            248             MOV     DPL,A
                     249     
A51 MACRO ASSEMBLER  OS_CPU_A                                                             10/16/2006 15:27:52 PAGE     5

                     250     ;OSTCBStkPtr to dptr
0028 E0              251             MOVX    A,@DPTR
0029 F8              252             MOV     R0,A
002A A3              253             INC     DPTR
002B E0              254             MOVX    A,@DPTR
002C 8883            255             MOV     DPH,R0
002E F582            256             MOV     DPL,A
                     257     
                     258     
                     259     ;--------------------
                     260     ;save stack
                     261     ;--------------------
                     262     
                     263     ;store ?C_IBP
0030 E500     F      264             MOV     A,?C_IBP
0032 F0              265             MOVX    @DPTR,A
                     266     
                     267     ;store simulated stack
0033 6008            268             JZ      OSCPUASmltSaveOver      ;simulated stack size == 0, that is A == 0x100
0035 F8              269             MOV     R0,A
0036                 270     OSCPUASmltSave:
0036 A3              271             INC     DPTR
0037 E6              272             MOV     A,@R0
0038 F0              273             MOVX    @DPTR,A
0039 08              274             INC     R0
003A B800F9          275             CJNE    R0,#0,OSCPUASmltSave
003D                 276     OSCPUASmltSaveOver:
                     277     
                     278     ;store sp size
003D A3              279             INC     DPTR
003E E581            280             MOV     A,SP
0040 C3              281             CLR     C
0041 9400     F      282             SUBB    A,#StkBottom - 1        
0043 F0              283             MOVX    @DPTR,A
                     284     
                     285     ;store hardware stack and registers
                     286     ;stack top is at high address 
0044 F9              287             MOV     R1,A            ;caluate copy rotation times
0045 7800     F      288             MOV     R0,#StkBottom - 1       ;start of stack defined by keilc system
0047                 289     OSCPUASaveStk:
0047 08              290             INC     R0
0048 A3              291             INC     DPTR
0049 E6              292             MOV     A,@R0
004A F0              293             MOVX    @DPTR,A
004B D9FA            294             DJNZ    R1,OSCPUASaveStk
                     295     
                     296     ;-------------------
                     297     ;call OSTaskSwHook
                     298     ;-------------------
                     299     
004D 120000   F      300             LCALL _?OSTaskSwHook
                     301     
                     302     ;-------------------
                     303     ; OSTCBCur = OSTCBHighRdy
                     304     ;-------------------
                     305             
0050 758300   F      306             MOV     DPH,#HIGH (OSTCBHighRdy)
0053 758200   F      307             MOV     DPL,#LOW  (OSTCBHighRdy)
0056 E0              308             MOVX    A,@DPTR
0057 FF              309             MOV     R7,A            ;store to R7/R6
0058 A3              310             INC     DPTR
0059 E0              311             MOVX    A,@DPTR
005A FE              312             MOV     R6,A
                     313     
005B 758300   F      314             MOV     DPH,#HIGH (OSTCBCur)
005E 758200   F      315             MOV     DPL,#LOW  (OSTCBCur)
A51 MACRO ASSEMBLER  OS_CPU_A                                                             10/16/2006 15:27:52 PAGE     6

0061 EF              316             MOV     A,R7
0062 F0              317             MOVX    @DPTR,A
0063 EE              318             MOV     A,R6
0064 A3              319             INC     DPTR
0065 F0              320             MOVX    @DPTR,A
                     321     
                     322     ;-----------------
                     323     ; OSPrioCur = OSPrioHighRdy
                     324     ;-----------------
                     325             
0066 758300   F      326             MOV     DPH,#HIGH (OSPrioHighRdy)
0069 758200   F      327             MOV     DPL,#LOW  (OSPrioHighRdy)
006C E0              328             MOVX    A,@DPTR
                     329     
006D 758300   F      330             MOV     DPH,#HIGH (OSPrioCur)
0070 758200   F      331             MOV     DPL,#LOW  (OSPrioCur)
0073 F0              332             MOVX    @DPTR,A
                     333     
                     334     ;-----------------
                     335     ; Restore Ctx
                     336     ;-----------------
0074 020000   F      337             LJMP    OSCPUARstStk
                     338     
                     339     ;                       -------------------------------------------
                     340     ;                       ---------------- OSIntCtxSw ---------------
                     341     ;                       -------------------------------------------
----                 342             RSEG ?PR?OSIntCtxSw?OS_CPU_A
0000                 343     OSIntCtxSw:
                     344     ;------------------
                     345     ; adjust sp: delete stack content of OSIntExit(),OSIntCtxSw(). SP -= 4
                     346     ;------------------
                     347     
0000 E581            348             MOV     A,SP
0002 C3              349             CLR     C
0003 9404            350             SUBB    A,#4
0005 F581            351             MOV     SP,A
                     352     
0007 020000   F      353             LJMP    OSCPUAUniformCtxSw
                     354     
                     355     END
A51 MACRO ASSEMBLER  OS_CPU_A                                                             10/16/2006 15:27:52 PAGE     7

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


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

?C_IBP. . . . . . . . . . .  D ADDR   -----       EXT
?PR?OSCTXSW?OS_CPU_A. . . .  C SEG    0077H       REL=UNIT
?PR?OSINTCTXSW?OS_CPU_A . .  C SEG    000AH       REL=UNIT
?PR?OSSTARTHIGHRDY?OS_CPU_A  C SEG    005FH       REL=UNIT
?STACK. . . . . . . . . . .  I SEG    0000H       REL=UNIT
ACC . . . . . . . . . . . .  D ADDR   00E0H   A   
B . . . . . . . . . . . . .  D ADDR   00F0H   A   
DPH . . . . . . . . . . . .  D ADDR   0083H   A   
DPL . . . . . . . . . . . .  D ADDR   0082H   A   
EA. . . . . . . . . . . . .  B ADDR   00A8H.7 A   
OSCPUARSTHARDSTK. . . . . .  C ADDR   003CH   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSCPUARSTSTK. . . . . . . .  C ADDR   000FH   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSCPUASAVESTK . . . . . . .  C ADDR   0047H   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSCPUASMLTRSTOVER . . . . .  C ADDR   0034H   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSCPUASMLTRSTSTK. . . . . .  C ADDR   002EH   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSCPUASMLTSAVE. . . . . . .  C ADDR   0036H   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSCPUASMLTSAVEOVER. . . . .  C ADDR   003DH   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSCPUAUNIFORMCTXSW. . . . .  C ADDR   001AH   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSCTXSW . . . . . . . . . .  C ADDR   0000H   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSINTCTXSW. . . . . . . . .  C ADDR   0000H   R   SEG=?PR?OSINTCTXSW?OS_CPU_A
OSPRIOCUR . . . . . . . . .  X ADDR   -----       EXT
OSPRIOHIGHRDY . . . . . . .  X ADDR   -----       EXT
OSRUNNING . . . . . . . . .  X ADDR   -----       EXT
OSSTARTHIGHRDY. . . . . . .  C ADDR   0000H   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSTCBCUR. . . . . . . . . .  X ADDR   -----       EXT
OSTCBHIGHRDY. . . . . . . .  X ADDR   -----       EXT
OS_CPU_A. . . . . . . . . .  N NUMB   -----       
PSW . . . . . . . . . . . .  D ADDR   00D0H   A   
SP. . . . . . . . . . . . .  D ADDR   0081H   A   
STKBOTTOM . . . . . . . . .  I ADDR   0000H   R   SEG=?STACK
TR0 . . . . . . . . . . . .  B ADDR   0088H.4 A   
TR1 . . . . . . . . . . . .  B ADDR   0088H.6 A   
_?OSTASKSWHOOK. . . . . . .  C ADDR   -----       EXT


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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