www.pudn.com > uCOSV262.rar > OS_CPU_A.lst
A51 MACRO ASSEMBLER OS_CPU_A 04/11/2007 16:19:49 PAGE 1
MACRO ASSEMBLER A51 V8.00b
OBJECT MODULE PLACED IN ..\Output\OS_CPU_A.obj
ASSEMBLER INVOKED BY: D:\Program Files\keil\C51\BIN\A51.EXE ..\Port\OS_CPU_A.ASM SET(LARGE) DEBUG PRINT(..\Output\OS_CPU
_A.lst) OBJECT(..\Output\OS_CPU_A.obj) EP
LOC OBJ LINE SOURCE
1
2
3 NAME OS_CPU_A ;Ä£¿éÃû
4
5 ;¶¨ÒåÖØ¶¨Î»¶Î
6 ?PR?OSStartHighRdy?OS_CPU_A SEGMENT CODE
7 ?PR?OSCtxSw?OS_CPU_A SEGMENT CODE
8 ?PR?OSIntCtxSw?OS_CPU_A SEGMENT CODE
9 ?PR?OSTickISR?OS_CPU_A SEGMENT CODE
10
11
12
13 ;ÉùÃ÷ÒýÓÃÈ«¾Ö±äÁ¿ºÍÍⲿ×Ó³ÌÐò
14 EXTRN DATA (?C_XBP) ;·ÂÕæ¶ÑÕ»Ö¸ÕëÓÃÓÚÖØÈë¾Ö²¿±äÁ¿±£´æ
15
16 EXTRN IDATA (OSTCBCur)
17 EXTRN IDATA (OSTCBHighRdy)
18 EXTRN IDATA (OSRunning)
19 EXTRN IDATA (OSPrioCur)
20 EXTRN IDATA (OSPrioHighRdy)
21
22 EXTRN CODE (_?OSTaskSwHook)
23 EXTRN CODE (_?OSIntEnter)
24 EXTRN CODE (_?OSIntExit)
25 EXTRN CODE (_?OSTimeTick)
26
27
28 ;¶ÔÍâÉùÃ÷4¸ö²»¿ÉÖØÈ뺯Êý
29 PUBLIC OSStartHighRdy
30 PUBLIC OSCtxSw
31 PUBLIC OSIntCtxSw
32 PUBLIC OSTickISR
33
34
35 ;·ÖÅä¶ÑÕ»¿Õ¼ä¡£Ö»¹ØÐÄ´óС£¬¶ÑÕ»ÆðµãÓÉkeil¾ö¶¨£¬Í¨¹ý±êºÅ¿ÉÒÔ»ñµÃkeil·ÖÅäµÄSPÆðµã¡£
36 ?STACK SEGMENT IDATA
---- 37 RSEG ?STACK
0000 38 OSStack:
0000 39 DS 40H
FFFF 40 OSStkStart IDATA OSStack-1
41
42 ;¶¨Òåѹջ³öÕ»ºê
43 PUSHALL MACRO
44 PUSH PSW
45 PUSH ACC
46 PUSH B
47 PUSH DPL
48 PUSH DPH
49 MOV A,R0 ;R0-R7ÈëÕ»
50 PUSH ACC
51 MOV A,R1
52 PUSH ACC
53 MOV A,R2
54 PUSH ACC
55 MOV A,R3
56 PUSH ACC
57 MOV A,R4
A51 MACRO ASSEMBLER OS_CPU_A 04/11/2007 16:19:49 PAGE 2
58 PUSH ACC
59 MOV A,R5
60 PUSH ACC
61 MOV A,R6
62 PUSH ACC
63 MOV A,R7
64 PUSH ACC
65 ;PUSH SP ;²»±Ø±£´æSP£¬ÈÎÎñÇл»Ê±ÓÉÏàÓ¦³ÌÐòµ÷Õû
66 ENDM
67
68 POPALL MACRO
69 ;POP ACC ;²»±Ø±£´æSP£¬ÈÎÎñÇл»Ê±ÓÉÏàÓ¦³ÌÐòµ÷Õû
70 POP ACC ;R0-R7³öÕ»
71 MOV R7,A
72 POP ACC
73 MOV R6,A
74 POP ACC
75 MOV R5,A
76 POP ACC
77 MOV R4,A
78 POP ACC
79 MOV R3,A
80 POP ACC
81 MOV R2,A
82 POP ACC
83 MOV R1,A
84 POP ACC
85 MOV R0,A
86 POP DPH
87 POP DPL
88 POP B
89 POP ACC
90 POP PSW
91 ENDM
92
93 ;×Ó³ÌÐò
94 ;-------------------------------------------------------------------------
---- 95 RSEG ?PR?OSStartHighRdy?OS_CPU_A
0000 96 OSStartHighRdy:
97 USING 0 ;Éϵçºó51×Ô¶¯¹ØÖжϣ¬´Ë´¦²»±ØÓÃCLR EAÖ¸ÁÒòΪµ½´Ë´¦»¹Î´¿ªÖжϣ¬±¾³ÌÐòÍ
˳öºó£¬¿ªÖжϡ£
0000 120000 F 98 LCALL _?OSTaskSwHook
99
0003 100 OSCtxSw_in:
101
102 ;OSTCBCur ===> DPTR »ñµÃµ±Ç°TCBÖ¸Õ룬Ïê¼ûC51.PDFµÚ178Ò³
0003 7800 F 103 MOV R0,#LOW (OSTCBCur) ;»ñµÃOSTCBCurÖ¸ÕëµÍµØÖ·£¬Ö¸ÕëÕ¼3×Ö½Ú¡£+0ÀàÐÍ+1¸ß8λÊý¾Ý+2µÍ
8λÊý¾Ý
0005 08 104 INC R0
0006 8683 105 MOV DPH,@R0 ;È«¾Ö±äÁ¿OSTCBCurÔÚIDATAÖÐ
0008 08 106 INC R0
0009 8682 107 MOV DPL,@R0
108
109 ;OSTCBCur->OSTCBStkPtr ===> DPTR »ñµÃÓû§¶ÑÕ»Ö¸Õë
000B A3 110 INC DPTR ;Ö¸ÕëÕ¼3×Ö½Ú¡£+0ÀàÐÍ+1¸ß8λÊý¾Ý+2µÍ8λÊý¾Ý
000C E0 111 MOVX A,@DPTR ;.OSTCBStkPtrÊÇvoidÖ¸Õë
000D F8 112 MOV R0,A
000E A3 113 INC DPTR
000F E0 114 MOVX A,@DPTR
0010 F9 115 MOV R1,A
0011 8883 116 MOV DPH,R0
0013 8982 117 MOV DPL,R1
118
119 ;*UserStkPtr ===> R5 Óû§¶ÑÕ»ÆðʼµØÖ·ÄÚÈÝ(¼´Óû§¶ÑÕ»³¤¶È·ÅÔÚ´Ë´¦) Ïê¼ûÎĵµËµÃ÷ Ö
¸ÕëÓ÷¨Ïê¼ûC51.PDFµÚ178Ò³
0015 E0 120 MOVX A,@DPTR ;Óû§¶ÑÕ»ÖÐÊÇunsigned charÀàÐÍÊý¾Ý
A51 MACRO ASSEMBLER OS_CPU_A 04/11/2007 16:19:49 PAGE 3
0016 FD 121 MOV R5,A ;R5=Óû§¶ÑÕ»³¤¶È
122
123 ;»Ö¸´ÏÖ³¡¶ÑÕ»ÄÚÈÝ
0017 7800 F 124 MOV R0,#OSStkStart
125
0019 126 restore_stack:
127
0019 A3 128 INC DPTR
001A 08 129 INC R0
001B E0 130 MOVX A,@DPTR
001C F6 131 MOV @R0,A
001D DDFA 132 DJNZ R5,restore_stack
133
134 ;»Ö¸´¶ÑÕ»Ö¸ÕëSP
001F 8881 135 MOV SP,R0
136
137 ;»Ö¸´·ÂÕæ¶ÑÕ»Ö¸Õë?C_XBP
0021 A3 138 INC DPTR
0022 E0 139 MOVX A,@DPTR
0023 F500 F 140 MOV ?C_XBP,A ;?C_XBP ·ÂÕæ¶ÑÕ»Ö¸Õë¸ß8λ
0025 A3 141 INC DPTR
0026 E0 142 MOVX A,@DPTR
0027 F500 F 143 MOV ?C_XBP+1,A ;?C_XBP ·ÂÕæ¶ÑÕ»Ö¸ÕëµÍ8λ
144
145 ;OSRunning=TRUE
0029 7800 F 146 MOV R0,#LOW (OSRunning)
002B 7601 147 MOV @R0,#01
148
149 POPALL
004F D2AF 172 SETB EA ;¿ªÖжÏ
0051 75A000 173 mov p2,#000h
174
0054 32 175 RETI
176 ;-------------------------------------------------------------------------
---- 177 RSEG ?PR?OSCtxSw?OS_CPU_A
0000 178 OSCtxSw:
179 PUSHALL
202
0022 203 OSIntCtxSw_in:
204
205 ;»ñµÃ¶ÑÕ»³¤¶ÈºÍÆðÖ·
0022 E581 206 MOV A,SP
0024 C3 207 CLR C
0025 9400 F 208 SUBB A,#OSStkStart
0027 FD 209 MOV R5,A ;»ñµÃ¶ÑÕ»³¤¶È
210
211 ;OSTCBCur ===> DPTR »ñµÃµ±Ç°TCBÖ¸Õ룬Ïê¼ûC51.PDFµÚ178Ò³
0028 7800 F 212 MOV R0,#LOW (OSTCBCur) ;»ñµÃOSTCBCurÖ¸ÕëµÍµØÖ·£¬Ö¸ÕëÕ¼3×Ö½Ú¡£+0ÀàÐÍ+1¸ß8λÊý¾Ý+2µÍ
8λÊý¾Ý
002A 08 213 INC R0
002B 8683 214 MOV DPH,@R0 ;È«¾Ö±äÁ¿OSTCBCurÔÚIDATAÖÐ
002D 08 215 INC R0
002E 8682 216 MOV DPL,@R0
217
218 ;OSTCBCur->OSTCBStkPtr ===> DPTR »ñµÃÓû§¶ÑÕ»Ö¸Õë
0030 A3 219 INC DPTR ;Ö¸ÕëÕ¼3×Ö½Ú¡£+0ÀàÐÍ+1¸ß8λÊý¾Ý+2µÍ8λÊý¾Ý
0031 E0 220 MOVX A,@DPTR ;.OSTCBStkPtrÊÇvoidÖ¸Õë
0032 F8 221 MOV R0,A
0033 A3 222 INC DPTR
0034 E0 223 MOVX A,@DPTR
0035 F9 224 MOV R1,A
0036 8883 225 MOV DPH,R0
0038 8982 226 MOV DPL,R1
227
228 ;±£´æ¶ÑÕ»³¤¶È
003A ED 229 MOV A,R5
A51 MACRO ASSEMBLER OS_CPU_A 04/11/2007 16:19:49 PAGE 4
003B F0 230 MOVX @DPTR,A
231
003C 7800 F 232 MOV R0,#OSStkStart ;»ñµÃ¶ÑÕ»ÆðÖ·
003E 233 save_stack:
234
003E A3 235 INC DPTR
003F 08 236 INC R0
0040 E6 237 MOV A,@R0
0041 F0 238 MOVX @DPTR,A
0042 DDFA 239 DJNZ R5,save_stack
240
241 ;±£´æ·ÂÕæ¶ÑÕ»Ö¸Õë?C_XBP
0044 A3 242 INC DPTR
0045 E500 F 243 MOV A,?C_XBP ;?C_XBP ·ÂÕæ¶ÑÕ»Ö¸Õë¸ß8λ
0047 F0 244 MOVX @DPTR,A
0048 A3 245 INC DPTR
0049 E500 F 246 MOV A,?C_XBP+1 ;?C_XBP ·ÂÕæ¶ÑÕ»Ö¸ÕëµÍ8λ
004B F0 247 MOVX @DPTR,A
248
249 ;µ÷ÓÃÓû§³ÌÐò
004C 120000 F 250 LCALL _?OSTaskSwHook
251
252 ;OSTCBCur = OSTCBHighRdy
004F 7800 F 253 MOV R0,#OSTCBCur
0051 7900 F 254 MOV R1,#OSTCBHighRdy
0053 E7 255 MOV A,@R1
0054 F6 256 MOV @R0,A
0055 08 257 INC R0
0056 09 258 INC R1
0057 E7 259 MOV A,@R1
0058 F6 260 MOV @R0,A
0059 08 261 INC R0
005A 09 262 INC R1
005B E7 263 MOV A,@R1
005C F6 264 MOV @R0,A
265
266 ;OSPrioCur = OSPrioHighRdy ʹÓÃÕâÁ½¸ö±äÁ¿Ö÷ҪĿµÄÊÇΪÁËʹָÕë±È½Ï±äΪ×ֽڱȽϣ¬ÒÔ±
ã½Úʡʱ¼ä¡£
005D 7800 F 267 MOV R0,#OSPrioCur
005F 7900 F 268 MOV R1,#OSPrioHighRdy
0061 E7 269 MOV A,@R1
0062 F6 270 MOV @R0,A
271
0063 020000 F 272 LJMP OSCtxSw_in
273 ;-------------------------------------------------------------------------
---- 274 RSEG ?PR?OSIntCtxSw?OS_CPU_A
275
0000 276 OSIntCtxSw:
277
278 ;µ÷ÕûSPÖ¸ÕëÈ¥µôÔÚµ÷ÓÃOSIntExit(),OSIntCtxSw()¹ý³ÌÖÐѹÈë¶ÑÕ»µÄ¶àÓàÄÚÈÝ
279 ;SP=SP-4
280
0000 E581 281 MOV A,SP
0002 C3 282 CLR C
0003 9404 283 SUBB A,#4
0005 F581 284 MOV SP,A
285
0007 020000 F 286 LJMP OSIntCtxSw_in
287 ;-------------------------------------------------------------------------
288
---- 289 CSEG AT 000BH
000B 75A0FF 290 mov p2,#0ffh
000E 020000 F 291 LJMP OSTickISR
---- 292 RSEG ?PR?OSTickISR?OS_CPU_A
293
0000 294 OSTickISR:
A51 MACRO ASSEMBLER OS_CPU_A 04/11/2007 16:19:49 PAGE 5
295 USING 0
0000 C28C 296 CLR TR0
0002 758C00 297 MOV TH0, #00H
0005 758A00 298 MOV TL0, #00H
0008 D28C 299 SETB TR0
300 PUSHALL
002C 120000 F 323 LCALL _?OSIntEnter
002F 120000 F 324 LCALL _?OSTimeTick
0032 120000 F 325 LCALL _?OSIntExit
326 POPALL
0057 75A000 349 mov p2,#00h
350
005A 32 351 RETI
352 ;-------------------------------------------------------------------------
353
354 ;-------------------------------------------------------------------------
355 END
;-------------------------------------------------------------------------
A51 MACRO ASSEMBLER OS_CPU_A 04/11/2007 16:19:49 PAGE 6
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C_XBP. . . . . . . . . . . D ADDR ----- EXT
?PR?OSCTXSW?OS_CPU_A. . . . C SEG 0066H REL=UNIT
?PR?OSINTCTXSW?OS_CPU_A . . C SEG 000AH REL=UNIT
?PR?OSSTARTHIGHRDY?OS_CPU_A C SEG 0055H REL=UNIT
?PR?OSTICKISR?OS_CPU_A. . . C SEG 005BH REL=UNIT
?STACK. . . . . . . . . . . I SEG 0040H 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
OSCTXSW . . . . . . . . . . C ADDR 0000H R SEG=?PR?OSCTXSW?OS_CPU_A
OSCTXSW_IN. . . . . . . . . C ADDR 0003H R SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSINTCTXSW. . . . . . . . . C ADDR 0000H R SEG=?PR?OSINTCTXSW?OS_CPU_A
OSINTCTXSW_IN . . . . . . . C ADDR 0022H R SEG=?PR?OSCTXSW?OS_CPU_A
OSPRIOCUR . . . . . . . . . I ADDR ----- EXT
OSPRIOHIGHRDY . . . . . . . I ADDR ----- EXT
OSRUNNING . . . . . . . . . I ADDR ----- EXT
OSSTACK . . . . . . . . . . I ADDR 0000H R SEG=?STACK
OSSTARTHIGHRDY. . . . . . . C ADDR 0000H R SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSSTKSTART. . . . . . . . . I ADDR FFFFH R SEG=?STACK
OSTCBCUR. . . . . . . . . . I ADDR ----- EXT
OSTCBHIGHRDY. . . . . . . . I ADDR ----- EXT
OSTICKISR . . . . . . . . . C ADDR 0000H R SEG=?PR?OSTICKISR?OS_CPU_A
OS_CPU_A. . . . . . . . . . N NUMB -----
P2. . . . . . . . . . . . . D ADDR 00A0H A
PSW . . . . . . . . . . . . D ADDR 00D0H A
RESTORE_STACK . . . . . . . C ADDR 0019H R SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
SAVE_STACK. . . . . . . . . C ADDR 003EH R SEG=?PR?OSCTXSW?OS_CPU_A
SP. . . . . . . . . . . . . D ADDR 0081H A
TH0 . . . . . . . . . . . . D ADDR 008CH A
TL0 . . . . . . . . . . . . D ADDR 008AH A
TR0 . . . . . . . . . . . . B ADDR 0088H.4 A
_?OSINTENTER. . . . . . . . C ADDR ----- EXT
_?OSINTEXIT . . . . . . . . C ADDR ----- EXT
_?OSTASKSWHOOK. . . . . . . C ADDR ----- EXT
_?OSTIMETICK. . . . . . . . C ADDR ----- EXT
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)