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

📄 task_switch.ls1

📁 51上的一个简单的操作系统
💻 LS1
📖 第 1 页 / 共 3 页
字号:
008C 2400     F      504             ADD     A,#LOW (OS_pcb+02H)
008E F8              505             MOV     R0,A
008F 7600            506             MOV     @R0,#00H
                     507     ;         }
                     508                             ; SOURCE LINE # 135
                     509     ;       }
                     510                             ; SOURCE LINE # 136
0091                 511     ?C0016:
                     512     ;      if(OS_pcb[i].Suspend==0)          //查找未挂起任务
                     513                             ; SOURCE LINE # 137
0091 EF              514             MOV     A,R7
0092 75F005          515             MOV     B,#05H
0095 A4              516             MUL     AB
A51 MACRO ASSEMBLER  TASK_SWITCH                                                          02/25/2006 14:24:58 PAGE     9

0096 2400     F      517             ADD     A,#LOW (OS_pcb+02H)
0098 F8              518             MOV     R0,A
0099 E6              519             MOV     A,@R0
009A 7019            520             JNZ     ?C0015
                     521     ;       {
                     522                             ; SOURCE LINE # 138
                     523     ;        if(OS_pcb[i].Priority<OS_pcb[OS_Current_ID].Priority)   //如果优先级高,则切换之 
                     524                             ; SOURCE LINE # 139
009C AD00     F      525             MOV     R5,OS_Current_ID
009E ED              526             MOV     A,R5
009F 75F005          527             MOV     B,#05H
00A2 A4              528             MUL     AB
00A3 2400     F      529             ADD     A,#LOW (OS_pcb+01H)
00A5 F9              530             MOV     R1,A
00A6 EF              531             MOV     A,R7
00A7 75F005          532             MOV     B,#05H
00AA A4              533             MUL     AB
00AB 2400     F      534             ADD     A,#LOW (OS_pcb+01H)
00AD F8              535             MOV     R0,A
00AE E6              536             MOV     A,@R0
00AF C3              537             CLR     C
00B0 97              538             SUBB    A,@R1
00B1 5002            539             JNC     ?C0015
                     540     ;         {
                     541                             ; SOURCE LINE # 140
                     542     ;          OS_Current_ID=i;
                     543                             ; SOURCE LINE # 141
00B3 8F00     F      544             MOV     OS_Current_ID,R7
                     545     ;         }
                     546                             ; SOURCE LINE # 142
                     547     ;       }
                     548                             ; SOURCE LINE # 143
                     549     ;     }
                     550                             ; SOURCE LINE # 144
00B5                 551     ?C0015:
                     552     ;    temp<<=1;    //调整temp的值,以检查下一个任务 
                     553                             ; SOURCE LINE # 145
00B5 EE              554             MOV     A,R6
00B6 25E0            555             ADD     A,ACC
00B8 FE              556             MOV     R6,A
                     557     ;   }
                     558                             ; SOURCE LINE # 146
00B9 0F              559             INC     R7
00BA BF05A6          560             CJNE    R7,#05H,?C0012
00BD                 561     ?C0013:
                     562     ; 
                     563     ;  SP=OS_pcb[OS_Current_ID].Task_SP;    //任务堆栈指针切换
                     564                             ; SOURCE LINE # 148
00BD AE00     F      565             MOV     R6,OS_Current_ID
00BF EE              566             MOV     A,R6
00C0 75F005          567             MOV     B,#05H
00C3 A4              568             MUL     AB
00C4 2400     F      569             ADD     A,#LOW (OS_pcb)
00C6 F8              570             MOV     R0,A
00C7 E6              571             MOV     A,@R0
00C8 F581            572             MOV     SP,A
                     573     ; 
                     574     ;  __asm POP 7
00CA D007            575              POP 7
                     576     ;  __asm POP 6
00CC D006            577              POP 6
                     578     ;  __asm POP 5
00CE D005            579              POP 5
                     580     ;  __asm POP 4
00D0 D004            581              POP 4
                     582     ;  __asm POP 3
A51 MACRO ASSEMBLER  TASK_SWITCH                                                          02/25/2006 14:24:58 PAGE    10

00D2 D003            583              POP 3
                     584     ;  __asm POP 2
00D4 D002            585              POP 2
                     586     ;  __asm POP 1
00D6 D001            587              POP 1
                     588     ;  __asm POP 0
00D8 D000            589              POP 0
                     590     ;  __asm POP DPH
00DA D083            591              POP DPH
                     592     ;  __asm POP DPL         //恢复任务寄存器
00DC D082            593              POP DPL          
                     594     ; 
                     595     ;  EA=1;              //开中断
                     596                             ; SOURCE LINE # 161
00DE D2AF            597             SETB    EA
                     598     ; }
                     599                             ; SOURCE LINE # 162
00E0 D0D0            600             POP     PSW
00E2 D0F0            601             POP     B
00E4 D0E0            602             POP     ACC
00E6 32              603             RETI    
                     604     ; END OF Timer2ISR
                     605     
                     606             END
A51 MACRO ASSEMBLER  TASK_SWITCH                                                          02/25/2006 14:24:58 PAGE    11

SYMBOL TABLE LISTING
------ ----- -------


N A M E                         T Y P E  V A L U E   ATTRIBUTES

?C0001 . . . . . . . . . . . .  C ADDR   0030H   R   SEG=?PR?OS_TASK_SWITCH?TASK_SWITCH
?C0002 . . . . . . . . . . . .  C ADDR   006AH   R   SEG=?PR?OS_TASK_SWITCH?TASK_SWITCH
?C0004 . . . . . . . . . . . .  C ADDR   005DH   R   SEG=?PR?OS_TASK_SWITCH?TASK_SWITCH
?C0008 . . . . . . . . . . . .  C ADDR   0048H   R   SEG=?PR?TIMER2ISR?TASK_SWITCH
?C0009 . . . . . . . . . . . .  C ADDR   002BH   R   SEG=?PR?TIMER2ISR?TASK_SWITCH
?C0010 . . . . . . . . . . . .  C ADDR   003FH   R   SEG=?PR?TIMER2ISR?TASK_SWITCH
?C0012 . . . . . . . . . . . .  C ADDR   0063H   R   SEG=?PR?TIMER2ISR?TASK_SWITCH
?C0013 . . . . . . . . . . . .  C ADDR   00BDH   R   SEG=?PR?TIMER2ISR?TASK_SWITCH
?C0015 . . . . . . . . . . . .  C ADDR   00B5H   R   SEG=?PR?TIMER2ISR?TASK_SWITCH
?C0016 . . . . . . . . . . . .  C ADDR   0091H   R   SEG=?PR?TIMER2ISR?TASK_SWITCH
?C0021 . . . . . . . . . . . .  C ADDR   0050H   R   SEG=?PR?TIMER2ISR?TASK_SWITCH
?DT?TASK_SWITCH. . . . . . . .  D SEG    0002H       REL=UNIT
?PR?OS_TASK_SWITCH?TASK_SWITCH  C SEG    0094H       REL=UNIT
?PR?TIMER2ISR?TASK_SWITCH. . .  C SEG    00E7H       REL=UNIT
AC . . . . . . . . . . . . . .  B ADDR   00D0H.6 A   
ACC. . . . . . . . . . . . . .  D ADDR   00E0H   A   
AR6. . . . . . . . . . . . . .  D ADDR   000EH   A   
B. . . . . . . . . . . . . . .  D ADDR   00F0H   A   
CP_RL2 . . . . . . . . . . . .  B ADDR   00C8H.0 A   
CY . . . . . . . . . . . . . .  B ADDR   00D0H.7 A   
C_T2 . . . . . . . . . . . . .  B ADDR   00C8H.1 A   
DPH. . . . . . . . . . . . . .  D ADDR   0083H   A   
DPL. . . . . . . . . . . . . .  D ADDR   0082H   A   
EA . . . . . . . . . . . . . .  B ADDR   00A8H.7 A   
ES . . . . . . . . . . . . . .  B ADDR   00A8H.4 A   
ET0. . . . . . . . . . . . . .  B ADDR   00A8H.1 A   
ET1. . . . . . . . . . . . . .  B ADDR   00A8H.3 A   
ET2. . . . . . . . . . . . . .  B ADDR   00A8H.5 A   
EX0. . . . . . . . . . . . . .  B ADDR   00A8H.0 A   
EX1. . . . . . . . . . . . . .  B ADDR   00A8H.2 A   
EXEN2. . . . . . . . . . . . .  B ADDR   00C8H.3 A   
EXF2 . . . . . . . . . . . . .  B ADDR   00C8H.6 A   
F0 . . . . . . . . . . . . . .  B ADDR   00D0H.5 A   
FL . . . . . . . . . . . . . .  B ADDR   00D0H.1 A   
I?040. . . . . . . . . . . . .  D ADDR   0000H   R   SEG=?DT?TASK_SWITCH
IE . . . . . . . . . . . . . .  D ADDR   00A8H   A   
IE0. . . . . . . . . . . . . .  B ADDR   0088H.1 A   
IE1. . . . . . . . . . . . . .  B ADDR   0088H.3 A   
INT0 . . . . . . . . . . . . .  B ADDR   00B0H.2 A   
INT1 . . . . . . . . . . . . .  B ADDR   00B0H.3 A   
IP . . . . . . . . . . . . . .  D ADDR   00B8H   A   
IT0. . . . . . . . . . . . . .  B ADDR   0088H.0 A   
IT1. . . . . . . . . . . . . .  B ADDR   0088H.2 A   
OS_CURRENT_ID. . . . . . . . .  D ADDR   -----       EXT
OS_PCB . . . . . . . . . . . .  I ADDR   -----       EXT
OS_RUNNING . . . . . . . . . .  D ADDR   -----       EXT
OS_RUN_TIME. . . . . . . . . .  D ADDR   -----       EXT
OS_TASK_LIST . . . . . . . . .  D ADDR   -----       EXT
OS_TASK_SWITCH . . . . . . . .  C ADDR   0000H   R   SEG=?PR?OS_TASK_SWITCH?TASK_SWITCH
OV . . . . . . . . . . . . . .  B ADDR   00D0H.2 A   
P. . . . . . . . . . . . . . .  B ADDR   00D0H.0 A   
P0 . . . . . . . . . . . . . .  D ADDR   0080H   A   
P0_0 . . . . . . . . . . . . .  B ADDR   0080H.0 A   
P0_1 . . . . . . . . . . . . .  B ADDR   0080H.1 A   
P0_2 . . . . . . . . . . . . .  B ADDR   0080H.2 A   
P0_3 . . . . . . . . . . . . .  B ADDR   0080H.3 A   
P0_4 . . . . . . . . . . . . .  B ADDR   0080H.4 A   
P0_5 . . . . . . . . . . . . .  B ADDR   0080H.5 A   
P0_6 . . . . . . . . . . . . .  B ADDR   0080H.6 A   
P0_7 . . . . . . . . . . . . .  B ADDR   0080H.7 A   
A51 MACRO ASSEMBLER  TASK_SWITCH                                                          02/25/2006 14:24:58 PAGE    12

P1 . . . . . . . . . . . . . .  D ADDR   0090H   A   
P1_0 . . . . . . . . . . . . .  B ADDR   0090H.0 A   
P1_1 . . . . . . . . . . . . .  B ADDR   0090H.1 A   
P1_2 . . . . . . . . . . . . .  B ADDR   0090H.2 A   
P1_3 . . . . . . . . . . . . .  B ADDR   0090H.3 A   
P1_4 . . . . . . . . . . . . .  B ADDR   0090H.4 A   
P1_5 . . . . . . . . . . . . .  B ADDR   0090H.5 A   
P1_6 . . . . . . . . . . . . .  B ADDR   0090H.6 A   
P1_7 . . . . . . . . . . . . .  B ADDR   0090H.7 A   
P2 . . . . . . . . . . . . . .  D ADDR   00A0H   A   
P2_0 . . . . . . . . . . . . .  B ADDR   00A0H.0 A   
P2_1 . . . . . . . . . . . . .  B ADDR   00A0H.1 A   
P2_2 . . . . . . . . . . . . .  B ADDR   00A0H.2 A   
P2_3 . . . . . . . . . . . . .  B ADDR   00A0H.3 A   
P2_4 . . . . . . . . . . . . .  B ADDR   00A0H.4 A   
P2_5 . . . . . . . . . . . . .  B ADDR   00A0H.5 A   
P2_6 . . . . . . . . . . . . .  B ADDR   00A0H.6 A   
P2_7 . . . . . . . . . . . . .  B ADDR   00A0H.7 A   
P3 . . . . . . . . . . . . . .  D ADDR   00B0H   A   
P3_0 . . . . . . . . . . . . .  B ADDR   00B0H.0 A   
P3_1 . . . . . . . . . . . . .  B ADDR   00B0H.1 A   
P3_2 . . . . . . . . . . . . .  B ADDR   00B0H.2 A   
P3_3 . . . . . . . . . . . . .  B ADDR   00B0H.3 A   
P3_4 . . . . . . . . . . . . .  B ADDR   00B0H.4 A   
P3_5 . . . . . . . . . . . . .  B ADDR   00B0H.5 A   
P3_6 . . . . . . . . . . . . .  B ADDR   00B0H.6 A   
P3_7 . . . . . . . . . . . . .  B ADDR   00B0H.7 A   
PCON . . . . . . . . . . . . .  D ADDR   0087H   A   
PS . . . . . . . . . . . . . .  B ADDR   00B8H.4 A   
PSW. . . . . . . . . . . . . .  D ADDR   00D0H   A   
PT0. . . . . . . . . . . . . .  B ADDR   00B8H.1 A   
PT1. . . . . . . . . . . . . .  B ADDR   00B8H.3 A   
PT2. . . . . . . . . . . . . .  B ADDR   00B8H.5 A   
PX0. . . . . . . . . . . . . .  B ADDR   00B8H.0 A   
PX1. . . . . . . . . . . . . .  B ADDR   00B8H.2 A   
RB8. . . . . . . . . . . . . .  B ADDR   0098H.2 A   
RCAP2H . . . . . . . . . . . .  D ADDR   00CBH   A   
RCAP2L . . . . . . . . . . . .  D ADDR   00CAH   A   
RCLK . . . . . . . . . . . . .  B ADDR   00C8H.5 A   
RD . . . . . . . . . . . . . .  B ADDR   00B0H.7 A   
REN. . . . . . . . . . . . . .  B ADDR   0098H.4 A   
RI . . . . . . . . . . . . . .  B ADDR   0098H.0 A   
RS0. . . . . . . . . . . . . .  B ADDR   00D0H.3 A   
RS1. . . . . . . . . . . . . .  B ADDR   00D0H.4 A   
RXD. . . . . . . . . . . . . .  B ADDR   00B0H.0 A   
SBUF . . . . . . . . . . . . .  D ADDR   0099H   A   
SCON . . . . . . . . . . . . .  D ADDR   0098H   A   
SM0. . . . . . . . . . . . . .  B ADDR   0098H.7 A   
SM1. . . . . . . . . . . . . .  B ADDR   0098H.6 A   
SM2. . . . . . . . . . . . . .  B ADDR   0098H.5 A   
SP . . . . . . . . . . . . . .  D ADDR   0081H   A   
T0 . . . . . . . . . . . . . .  B ADDR   00B0H.4 A   
T1 . . . . . . . . . . . . . .  B ADDR   00B0H.5 A   
T2 . . . . . . . . . . . . . .  B ADDR   0090H.0 A   
T2CON. . . . . . . . . . . . .  D ADDR   00C8H   A   
T2EX . . . . . . . . . . . . .  B ADDR   0090H.1 A   
T2MOD. . . . . . . . . . . . .  D ADDR   00C9H   A   
TASK_SWITCH. . . . . . . . . .  N NUMB   -----       
TB8. . . . . . . . . . . . . .  B ADDR   0098H.3 A   
TCLK . . . . . . . . . . . . .  B ADDR   00C8H.4 A   
TCON . . . . . . . . . . . . .  D ADDR   0088H   A   
TEMP?041 . . . . . . . . . . .  D ADDR   0001H   R   SEG=?DT?TASK_SWITCH
TF0. . . . . . . . . . . . . .  B ADDR   0088H.5 A   
TF1. . . . . . . . . . . . . .  B ADDR   0088H.7 A   
TF2. . . . . . . . . . . . . .  B ADDR   00C8H.7 A   
TH0. . . . . . . . . . . . . .  D ADDR   008CH   A   
A51 MACRO ASSEMBLER  TASK_SWITCH                                                          02/25/2006 14:24:58 PAGE    13

TH1. . . . . . . . . . . . . .  D ADDR   008DH   A   
TH2. . . . . . . . . . . . . .  D ADDR   00CDH   A   
TI . . . . . . . . . . . . . .  B ADDR   0098H.1 A   
TIMER2ISR. . . . . . . . . . .  C ADDR   0000H   R   SEG=?PR?TIMER2ISR?TASK_SWITCH
TL0. . . . . . . . . . . . . .  D ADDR   008AH   A   
TL1. . . . . . . . . . . . . .  D ADDR   008BH   A   
TL2. . . . . . . . . . . . . .  D ADDR   00CCH   A   
TMOD . . . . . . . . . . . . .  D ADDR   0089H   A   
TR0. . . . . . . . . . . . . .  B ADDR   0088H.4 A   
TR1. . . . . . . . . . . . . .  B ADDR   0088H.6 A   
TR2. . . . . . . . . . . . . .  B ADDR   00C8H.2 A   
TXD. . . . . . . . . . . . . .  B ADDR   00B0H.1 A   
WR . . . . . . . . . . . . . .  B ADDR   00B0H.6 A   


REGISTER BANK(S) USED: 0 1 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -