📄 os_cpu_a.lst
字号:
A51 MACRO ASSEMBLER OS_CPU_A 07/08/2007 20:25:05 PAGE 1
MACRO ASSEMBLER A51 V7.02a
OBJECT MODULE PLACED IN OS_CPU_A.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE OS_CPU_A.ASM SET(LARGE) DEBUG EP
LOC OBJ LINE SOURCE
1 NAME OS_CPU_A
2 ;//----------------------------------------------------------------
3 ;用于C函数调用的汇编代码
4 ?PR?OSStartHighRdy?OS_CPU_A SEGMENT CODE
5 ?PR?OSCtxSw?OS_CPU_A SEGMENT CODE
6 ?PR?OSIntCtxSw?OS_CPU_A SEGMENT CODE
7 ?PR?OSTickISR?OS_CPU_A SEGMENT CODE
8 ;//----------------------------------------------------------------
9 ;?PR?_EXTERN_0_ISR_?OS_CPU_A SEGMENT CODE
10 ;?PR?_EXTERN_1_ISR_?OS_CPU_A SEGMENT CODE
11 ;?PR?_TIME_1_ISR_?OS_CPU_A SEGMENT CODE
12 ?PR?_SERY_ISR_?OS_CPU_A SEGMENT CODE
13 ;//----------------------------------------------------------------
14 ;汇编调用外部C函数和变量
15 EXTRN IDATA (OSTCBCur)
16 EXTRN IDATA (OSTCBHighRdy)
17 EXTRN IDATA (OSRunning)
18 EXTRN IDATA (OSPrioCur)
19 EXTRN IDATA (OSPrioHighRdy)
20 ;//--------------------------------------------------------
21 EXTRN CODE (OSTimeTick)
22 EXTRN CODE (_?OSTaskSwHook)
23 EXTRN CODE (OSIntExit)
24 ;EXTRN CODE (OSTCBSWHook)
25 EXTRN CODE (OSIntEnter)
26 ;EXTRN CODE (TickTime)
27 ;//--------------------------------------------------------
28 ;EXTRN CODE (ExternInt0)
29 ;EXTRN CODE (ExternInt1)
30 ;EXTRN CODE (Time1Int)
31 EXTRN CODE (SeryInt)
32 ;//--------------------------------------------------------
33 ;PUBLIC Extern_0_ISR
34 ;PUBLIC Extern_1_ISR
35 ;PUBLIC Time_1_ISR
36 PUBLIC Sery_ISR
37 ;//--------------------------------------------------------
38 ;EXTRN CODE (OSTickISRHook)
39 ;//--------------------------------------------------------
40 PUBLIC OSTickISR
41 PUBLIC OSIntCtxSw
42 PUBLIC OSCtxSw
43 PUBLIC OSStartHighRdy
44 ;//--------------------------------------------------------
45 ?STACK SEGMENT IDATA
---- 46 RSEG ?STACK
0000 47 OSStack:
0000 48 DS 40H
FFFF 49 OSStkStart IDATA OSStack-1
50 ;//----------------------------------------------------------------
51 PushAll MACRO
52 PUSH PSW
53 PUSH ACC
54 PUSH B
55 PUSH DPL
56 PUSH DPH
57
58 MOV A,R0
A51 MACRO ASSEMBLER OS_CPU_A 07/08/2007 20:25:05 PAGE 2
59 PUSH ACC
60 MOV A,R1
61 PUSH ACC
62 MOV A,R2
63 PUSH ACC
64 MOV A,R3
65 PUSH ACC
66 MOV A,R4
67 PUSH ACC
68 MOV A,R5
69 PUSH ACC
70 MOV A,R6
71 PUSH ACC
72 MOV A,R7
73 PUSH ACC
74 ENDM
75 ;//----------------------------------------------------------------
76 ;//----------------------------------------------------------------
77 PopAll MACRO
78 POP ACC
79 MOV R7,A
80 POP ACC
81 MOV R6,A
82 POP ACC
83 MOV R5,A
84 POP ACC
85 MOV R4,A
86 POP ACC
87 MOV R3,A
88 POP ACC
89 MOV R2,A
90 POP ACC
91 MOV R1,A
92 POP ACC
93 MOV R0,A
94
95 POP DPL
96 POP DPH
97 POP B
98 POP ACC
99 POP PSW
100 ENDM
101 ;//----------------------------------------------------------------
---- 102 RSEG ?PR?OSStartHighRdy?OS_CPU_A
0000 103 OSStartHighRdy:
104 USING 0
105
106
107
0000 108 OSCtxSw_in:
0000 7800 F 109 MOV R0,#LOW (OSTCBCur)
110
0002 08 111 INC R0
0003 8683 112 MOV DPH,@R0
0005 08 113 INC R0
0006 8682 114 MOV DPL,@R0
115
0008 A3 116 INC DPTR
0009 E0 117 MOVX A, @DPTR
000A F9 118 MOV R1,A
000B A3 119 INC DPTR
000C E0 120 MOVX A, @DPTR
000D F8 121 MOV R0,A
000E 8983 122 MOV DPH, R1
0010 8882 123 MOV DPL, R0
124
A51 MACRO ASSEMBLER OS_CPU_A 07/08/2007 20:25:05 PAGE 3
0012 E0 125 MOVX A, @DPTR
0013 FD 126 MOV R5,A
127
0014 7800 F 128 MOV R0,#OSStkStart
129
0016 130 restore_stack:
131
0016 A3 132 INC DPTR
0017 08 133 INC R0
0018 E0 134 MOVX A,@DPTR
0019 F6 135 MOV @R0,A
001A DDFA 136 DJNZ R5,restore_stack
137
001C 8881 138 MOV SP,R0
139
140 ;OSRunning=TRUE
001E 7800 F 141 MOV R0,#LOW (OSRunning)
0020 7601 142 MOV @R0,#01
143
144 POPALL
0044 D2AF 167 SETB EA
0046 32 168 RETI
169
170
171 ;//----------------------------------------------------------------
172
173 ;//----------------------------------------------------------------
---- 174 RSEG ?PR?OSCtxSw?OS_CPU_A
175
176
0000 177 OSCtxSw:
178 PushAll
0022 201 OSIntCtxSw_in:
0022 E581 202 MOV A,SP
0024 C3 203 CLR C
0025 9400 F 204 SUBB A,#OSStkStart
0027 FD 205 MOV R5,A
206
207 ;OSTCBCur ===> DPTR
0028 7800 F 208 MOV R0,#LOW (OSTCBCur)
002A 08 209 INC R0
002B 8683 210 MOV DPH,@R0
002D 08 211 INC R0
002E 8682 212 MOV DPL,@R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -