📄 os_cpu_a.lst
字号:
004E D0D0 194 POP PSW
0050 D082 195 POP DPL
0052 D083 196 POP DPH
0054 D0F0 197 POP B
0056 D0E0 198 POP ACC ;A is register but ACC is direct ram
199
0058 D2AF 200 SETB EA ;after start, enable EA
005A 32 201 RETI
202
203
204
205 ; --------------------------------------------------
206 ; --------------------- OSCtxSw() ------------------
207 ; --------------------------------------------------
208
---- 209 RSEG ?PR?OSCtxSw?OS_CPU_A
0000 210 OSCtxSw:
211
212 ;-----------------
213 ; push registers
214 ;-----------------
0000 C0E0 215 PUSH ACC
0002 C0F0 216 PUSH B
0004 C083 217 PUSH DPH
0006 C082 218 PUSH DPL
0008 C0D0 219 PUSH PSW
000A C000 220 PUSH 00
000C C001 221 PUSH 01
000E C002 222 PUSH 02
0010 C003 223 PUSH 03
0012 C004 224 PUSH 04
0014 C005 225 PUSH 05
0016 C006 226 PUSH 06
0018 C007 227 PUSH 07
228
001A 229 OSCPUAUniformCtxSw:
230 ;assume register is pushed to hardware stack, in the format as discripted at the beginning
of this file
231 ;Before jump OSCPUAUniformCtxSw, OSCtxSw or OSIntCtxSw must first push registers to hardwar
e stack as this format.
232
233 ;----------------------
234 ;Get OSTCBCurRdy->OSTCBStkPtr to DPTR
235 ;-----------------------
236 ;high byte is at low address
237
238 ;OSTCBCurRdy to dptr
001A 758300 F 239 MOV DPH,#HIGH(OSTCBCur)
001D 758200 F 240 MOV DPL,#LOW (OSTCBCur)
0020 E0 241 MOVX A,@DPTR
0021 F8 242 MOV R0,A
0022 A3 243 INC DPTR
0023 E0 244 MOVX A,@DPTR
0024 8883 245 MOV DPH,R0
0026 F582 246 MOV DPL,A
247
248 ;OSTCBStkPtr to dptr
0028 E0 249 MOVX A,@DPTR
A51 MACRO ASSEMBLER OS_CPU_A 01/10/2007 09:13:35 PAGE 5
0029 F8 250 MOV R0,A
002A A3 251 INC DPTR
002B E0 252 MOVX A,@DPTR
002C 8883 253 MOV DPH,R0
002E F582 254 MOV DPL,A
255
256
257 ;--------------------
258 ;save stack
259 ;--------------------
260
261 ;store ?C_IBP
0030 E500 F 262 MOV A,?C_IBP
0032 F0 263 MOVX @DPTR,A
264
265 ;store simulated stack
0033 6008 266 JZ OSCPUASmltSaveOver ;simulated stack size == 0, that is A == 0x100
0035 F8 267 MOV R0,A
0036 268 OSCPUASmltSave:
0036 A3 269 INC DPTR
0037 E6 270 MOV A,@R0
0038 F0 271 MOVX @DPTR,A
0039 08 272 INC R0
003A B800F9 273 CJNE R0,#0,OSCPUASmltSave
003D 274 OSCPUASmltSaveOver:
275
276 ;store sp size
003D A3 277 INC DPTR
003E E581 278 MOV A,SP
0040 C3 279 CLR C
0041 9400 F 280 SUBB A,#StkBottom - 1
0043 F0 281 MOVX @DPTR,A
282
283 ;store hardware stack and registers
284 ;stack top is at high address
0044 F9 285 MOV R1,A ;caluate copy rotation times
0045 7800 F 286 MOV R0,#StkBottom - 1 ;start of stack defined by keilc system
0047 287 OSCPUASaveStk:
0047 08 288 INC R0
0048 A3 289 INC DPTR
0049 E6 290 MOV A,@R0
004A F0 291 MOVX @DPTR,A
004B D9FA 292 DJNZ R1,OSCPUASaveStk
293
294 ;-------------------
295 ;call OSTaskSwHook
296 ;-------------------
297
004D 120000 F 298 LCALL _?OSTaskSwHook
299
300 ;-------------------
301 ; OSTCBCur = OSTCBHighRdy
302 ;-------------------
303
0050 758300 F 304 MOV DPH,#HIGH (OSTCBHighRdy)
0053 758200 F 305 MOV DPL,#LOW (OSTCBHighRdy)
0056 E0 306 MOVX A,@DPTR
0057 FF 307 MOV R7,A ;store to R7/R6
0058 A3 308 INC DPTR
0059 E0 309 MOVX A,@DPTR
005A FE 310 MOV R6,A
311
005B 758300 F 312 MOV DPH,#HIGH (OSTCBCur)
005E 758200 F 313 MOV DPL,#LOW (OSTCBCur)
0061 EF 314 MOV A,R7
0062 F0 315 MOVX @DPTR,A
A51 MACRO ASSEMBLER OS_CPU_A 01/10/2007 09:13:35 PAGE 6
0063 EE 316 MOV A,R6
0064 A3 317 INC DPTR
0065 F0 318 MOVX @DPTR,A
319
320 ;-----------------
321 ; OSPrioCur = OSPrioHighRdy
322 ;-----------------
323
0066 758300 F 324 MOV DPH,#HIGH (OSPrioHighRdy)
0069 758200 F 325 MOV DPL,#LOW (OSPrioHighRdy)
006C E0 326 MOVX A,@DPTR
327
006D 758300 F 328 MOV DPH,#HIGH (OSPrioCur)
0070 758200 F 329 MOV DPL,#LOW (OSPrioCur)
0073 F0 330 MOVX @DPTR,A
331
332 ;-----------------
333 ; Restore Ctx
334 ;-----------------
0074 020000 F 335 LJMP OSCPUARstStk
336
337 ; -------------------------------------------
338 ; ---------------- OSIntCtxSw ---------------
339 ; -------------------------------------------
---- 340 RSEG ?PR?OSIntCtxSw?OS_CPU_A
0000 341 OSIntCtxSw:
342 ;------------------
343 ; adjust sp: delete stack content of OSIntExit(),OSIntCtxSw(). SP -= 4
344 ;------------------
345
0000 E581 346 MOV A,SP
0002 C3 347 CLR C
0003 9404 348 SUBB A,#4
0005 F581 349 MOV SP,A
350
0007 020000 F 351 LJMP OSCPUAUniformCtxSw
352
353 END
A51 MACRO ASSEMBLER OS_CPU_A 01/10/2007 09:13:35 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 + -