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

📄 os_cpu_a.lst

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

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

0062 F0              316             MOVX    @DPTR,A
0063 EE              317             MOV     A,R6
0064 A3              318             INC     DPTR
0065 F0              319             MOVX    @DPTR,A
                     320     
                     321     ;-----------------
                     322     ; OSPrioCur = OSPrioHighRdy
                     323     ;-----------------
                     324             
0066 758300   F      325             MOV     DPH,#HIGH (OSPrioHighRdy)
0069 758200   F      326             MOV     DPL,#LOW  (OSPrioHighRdy)
006C E0              327             MOVX    A,@DPTR
                     328     
006D 758300   F      329             MOV     DPH,#HIGH (OSPrioCur)
0070 758200   F      330             MOV     DPL,#LOW  (OSPrioCur)
0073 F0              331             MOVX    @DPTR,A
                     332     
                     333     ;-----------------
                     334     ; Restore Ctx
                     335     ;-----------------
0074 020000   F      336             LJMP    OSCPUARstStk
                     337     
                     338     ;                       -------------------------------------------
                     339     ;                       ---------------- OSIntCtxSw ---------------
                     340     ;                       -------------------------------------------
----                 341             RSEG ?PR?OSIntCtxSw?OS_CPU_A
0000                 342     OSIntCtxSw:
                     343     ;------------------
                     344     ; adjust sp: delete stack content of OSIntExit(),OSIntCtxSw(). SP -= 4
                     345     ;------------------
                     346     
0000 E581            347             MOV     A,SP
0002 C3              348             CLR     C
0003 9404            349             SUBB    A,#4
0005 F581            350             MOV     SP,A
                     351     
0007 020000   F      352             LJMP    OSCPUAUniformCtxSw
                     353     
                     354     
                     355     
                     356     
                     357     END
                             
                             
                             
                             
                             
A51 MACRO ASSEMBLER  OS_CPU_A                                                             11/20/2008 19:25:22 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    005BH       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   0038H   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSCPUARSTSTK. . . . . . . .  C ADDR   000BH   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSCPUASAVESTK . . . . . . .  C ADDR   0047H   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSCPUASMLTRSTOVER . . . . .  C ADDR   0030H   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSCPUASMLTRSTSTK. . . . . .  C ADDR   002AH   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   
_?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 + -