📄 os_cpu_a.lst
字号:
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM PAGE 1
1 ;********************************************************************************************************
2 ; uC/OS-II
3 ; The Real-Time Kernel
4 ;
5 ; (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
6 ; All Rights Reserved
7 ;
8 ;
9 ; 80x86/80x88 Specific code
10 ; LARGE MEMORY MODEL
11 ;
12 ; IBM/PC Compatible Target
13 ;
14 ; File : OS_CPU_A.ASM
15 ; By : Jean J. Labrosse
16 ;********************************************************************************************************
17
18
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM PAGE 2
20 00000000 .text
21 ;*********************************************************************************************************
22 ; START MULTITASKING
23 ; void OSStartHighRdy(void)
24 ;
25 ; The stack frame is assumed to look as follows:
26 ;
27 ; OSTCBHighRdy->OSTCBStkPtr --> DS (Low memory)
28 ; ES
29 ; DI
30 ; SI
31 ; BP
32 ; SP
33 ; BX
34 ; DX
35 ; CX
36 ; AX
37 ; OFFSET of task code address
38 ; SEGMENT of task code address
39 ; Flags to load in PSW
40 ; OFFSET of task code address
41 ; SEGMENT of task code address
42 ; OFFSET of 'pdata'
43 ; SEGMENT of 'pdata' (High memory)
44 ;
45 ; Note : OSStartHighRdy() MUST:
46 ; a) Call OSTaskSwHook() then,
47 ; b) Set OSRunning to TRUE,
48 ; c) Switch to the highest priority task.
49 ;*********************************************************************************************************
50
51 00000000 _OSStartHighRdy:
52
53 .global _OSStartHighRdy
54 .ref _OSTCBHighRdy
55
56
57 00000000 761F! MOVW DP,#_OSTCBHighRdy
00000001 0000
58 00000002 8A00! MOVL XAR4,@_OSTCBHighRdy ; |148|
59 00000003 8AC4 MOVL XAR4,*+XAR4[0] ; |148|
60
61
62 ;模拟中断
63 00000004 22A9 PUSH AL
64
65 00000005 0004 PUSH RPC
66
67 00000006 D004 MOVB XAR0,#4
68 00000007 9294 MOV AL,*+XAR4[AR0] ;得到 ST0
69 00000008 D005 MOVB XAR0,#5
70 00000009 9394 MOV AH,*+XAR4[AR0] ;得到 T
71 0000000a 1EBD PUSH ACC
72
73
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM PAGE 3
74 0000000b D006 MOVB XAR0,#6
75 0000000c 9294 MOV AL,*+XAR4[AR0] ;得到 AL
76 0000000d D007 MOVB XAR0,#7
77 0000000e 9394 MOV AH,*+XAR4[AR0] ;得到 AH
78 0000000f 1EBD PUSH ACC
79
80 00000010 D008 MOVB XAR0,#8
81 00000011 9294 MOV AL,*+XAR4[AR0] ;得到 PL
82 00000012 D009 MOVB XAR0,#9
83 00000013 9394 MOV AH,*+XAR4[AR0] ;得到 PH
84 00000014 1EBD PUSH ACC
85
86
87 00000015 D00A MOVB XAR0,#10
88 00000016 9294 MOV AL,*+XAR4[AR0] ;得到 AR0
89 00000017 D00B MOVB XAR0,#11
90 00000018 9394 MOV AH,*+XAR4[AR0] ;得到 AR1
91 00000019 1EBD PUSH ACC
92
93 0000001a D00C MOVB XAR0,#12
94 0000001b 9294 MOV AL,*+XAR4[AR0] ;得到 ST1
95 0000001c D00D MOVB XAR0,#13
96 0000001d 9394 MOV AH,*+XAR4[AR0] ;得到 DP
97 0000001e 1EBD PUSH ACC
98
99 0000001f D00E MOVB XAR0,#14
100 00000020 9294 MOV AL,*+XAR4[AR0] ;得到 IER
101 00000021 D00F MOVB XAR0,#15
102 00000022 9394 MOV AH,*+XAR4[AR0] ;得到 DBGSTAT
103 00000023 1EBD PUSH ACC
104
105 00000024 93D4 MOV AH,*+XAR4[2] ;task addr
106 00000025 92DC MOV AL,*+XAR4[3]
107 00000026 1EBD PUSH ACC
108
109 00000027 7602 IRET
110
111
112 ;*********************************************************************************************************
113 ; PERFORM A CONTEXT SWITCH (From task level)
114 ; void OSCtxSw(void)
115 ;
116 ; Note(s): 1) Upon entry,
117 ; OSTCBCur points to the OS_TCB of the task to suspend
118 ; OSTCBHighRdy points to the OS_TCB of the task to resume
119 ;
120 ; 2) The stack frame of the task to suspend looks as follows:
121 ;
122 ; SP -> OFFSET of task to suspend (Low memory)
123 ; SEGMENT of task to suspend
124 ; PSW of task to suspend (High memory)
125 ;
126 ; 3) The stack frame of the task to resume looks as follows:
127 ;
128 ; OSTCBHighRdy->OSTCBStkPtr --> DS (Low memory)
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM PAGE 4
129 ; ES
130 ; DI
131 ; SI
132 ; BP
133 ; SP
134 ; BX
135 ; DX
136 ; CX
137 ; AX
138 ; OFFSET of task code address
139 ; SEGMENT of task code address
140 ; Flags to load in PSW (High memory)
141 ;*********************************************************************************************************
142
143 00000028 _OSCtxSw:
144 .ref _OSTCBHighRdy
145 .ref _OSTCBCur
146 .ref _OSPrioHighRdy
147 .ref _OSPrioCur
148 .global _OSCtxSw
149
150 ;模拟返回中断
151 ;保存当前环境
152
153 ;********************************************************************************
154 00000028 761F! MOVW DP,#_OSTCBCur
00000029 0000
155 0000002a 8A00! MOVL XAR4,@_OSTCBCur ; |165|
156 0000002b 8AC4 MOVL XAR4,*+XAR4[0] ; |165|
157
158 0000002c 06BE POP ACC
159 0000002d 97D4 MOV *+XAR4[2],AH ;保存task addr
160 0000002e 96DC MOV *+XAR4[3],AL
161
162
163
164 0000002f 06BE POP ACC
165 00000030 D00F MOVB XAR0,#15
166 00000031 9794 MOV *+XAR4[AR0],AH ;保存DBGSTAT
167 00000032 D00E MOVB XAR0,#14
168 00000033 9694 MOV *+XAR4[AR0],AL ;保存 IER
169
170 00000034 06BE POP ACC
171 00000035 D00D MOVB XAR0,#13
172 00000036 9794 MOV *+XAR4[AR0],AH ;保存 DP
173 00000037 D00C MOVB XAR0,#12
174 00000038 9694 MOV *+XAR4[AR0],AL ;保存 ST1
175
176 00000039 06BE POP ACC
177 0000003a D00B MOVB XAR0,#11
178 0000003b 9794 MOV *+XAR4[AR0],AH ;保存 AR1
179 0000003c D00A MOVB XAR0,#10
180 0000003d 9694 MOV *+XAR4[AR0],AL ;保存 AR0
181
182
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -