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

📄 sw_int.ls1

📁 基本STC4052写的一个小的OS, 完成了任务调度功能,及堆栈空间切换, 及中断处理
💻 LS1
📖 第 1 页 / 共 5 页
字号:
                     225     ;       }
                     226                             ; SOURCE LINE # 76
000B                 227     ?C0001:
                     228     ;       __asm POP DPL
000B D082            229              POP DPL
                     230     ;       __asm POP DPH
000D D083            231              POP DPH
                     232     ;       if (1==gOsIntLevel)
                     233                             ; SOURCE LINE # 79
000F E500     F      234             MOV     A,gOsIntLevel
0011 B4010F          235             CJNE    A,#01H,?C0003
                     236     ;       {
                     237                             ; SOURCE LINE # 80
                     238     ;               tmpsp1 = DPL;
                     239                             ; SOURCE LINE # 81
0014 A800     F      240             MOV     R0,?C_IBP
0016 08              241             INC     R0
0017 A682            242             MOV     @R0,DPL
                     243     ;               tmpsp2 = DPH;
                     244                             ; SOURCE LINE # 82
0019 A800     F      245             MOV     R0,?C_IBP
001B 08              246             INC     R0
001C 08              247             INC     R0
001D A683            248             MOV     @R0,DPH
                     249     ;               __asm POP DPL
001F D082            250              POP DPL
                     251     ;               __asm POP DPH 
0021 D083            252              POP DPH 
                     253     ; 
                     254     ;       }
                     255                             ; SOURCE LINE # 86
A51 MACRO ASSEMBLER  SW_INT                                                               11/24/2006 11:35:22 PAGE     5

0023                 256     ?C0003:
                     257     ;       tmp = gOs.currTask;
                     258                             ; SOURCE LINE # 87
0023 A800     F      259             MOV     R0,?C_IBP
0025 A600     F      260             MOV     @R0,gOs+01FH
                     261     ;       gOs.tcb[tmp].sp = SP;
                     262                             ; SOURCE LINE # 88
0027 E6              263             MOV     A,@R0
0028 FF              264             MOV     R7,A
0029 75F007          265             MOV     B,#07H
002C A4              266             MUL     AB
002D 2400     F      267             ADD     A,#LOW (gOs+02H)
002F F8              268             MOV     R0,A
0030 A681            269             MOV     @R0,SP
                     270     ; 
                     271     ;       if (OS_TASK_RUN==gOs.tcb[tmp].state)
                     272                             ; SOURCE LINE # 90
0032 EF              273             MOV     A,R7
0033 75F007          274             MOV     B,#07H
0036 A4              275             MUL     AB
0037 2400     F      276             ADD     A,#LOW (gOs+07H)
0039 F8              277             MOV     R0,A
003A E6              278             MOV     A,@R0
003B FC              279             MOV     R4,A
003C 08              280             INC     R0
003D E6              281             MOV     A,@R0
003E FD              282             MOV     R5,A
003F EC              283             MOV     A,R4
0040 C4              284             SWAP    A
0041 F8              285             MOV     R0,A
0042 54F0            286             ANL     A,#0F0H
0044 C8              287             XCH     A,R0
0045 ED              288             MOV     A,R5
0046 C4              289             SWAP    A
0047 540F            290             ANL     A,#0FH
0049 48              291             ORL     A,R0
004A 540F            292             ANL     A,#0FH
004C 6403            293             XRL     A,#03H
004E 7015            294             JNZ     ?C0004
                     295     ;       {
                     296                             ; SOURCE LINE # 91
                     297     ;               gOs.tcb[tmp].state = OS_TASK_RDY; 
                     298                             ; SOURCE LINE # 92
0050 A800     F      299             MOV     R0,?C_IBP
0052 E6              300             MOV     A,@R0
0053 75F007          301             MOV     B,#07H
0056 A4              302             MUL     AB
0057 2400     F      303             ADD     A,#LOW (gOs+07H)
0059 F8              304             MOV     R0,A
005A AE04            305             MOV     R6,AR4
005C ED              306             MOV     A,R5
005D 540F            307             ANL     A,#0FH
005F 4410            308             ORL     A,#010H
0061 A606            309             MOV     @R0,AR6
0063 08              310             INC     R0
0064 F6              311             MOV     @R0,A
                     312     ;       }
                     313                             ; SOURCE LINE # 93
0065                 314     ?C0004:
                     315     ;       for(tmp=0;tmp<OS_TASK_MAX_NUM;tmp++)
                     316                             ; SOURCE LINE # 94
0065 A800     F      317             MOV     R0,?C_IBP
0067 E4              318             CLR     A
0068 F6              319             MOV     @R0,A
0069                 320     ?C0005:
0069 A800     F      321             MOV     R0,?C_IBP
A51 MACRO ASSEMBLER  SW_INT                                                               11/24/2006 11:35:22 PAGE     6

006B E6              322             MOV     A,@R0
006C FF              323             MOV     R7,A
006D C3              324             CLR     C
006E 9404            325             SUBB    A,#04H
0070 506A            326             JNC     ?C0006
                     327     ;       {
                     328                             ; SOURCE LINE # 95
                     329     ;               if (gOs.osPrio&(1<<tmp))
                     330                             ; SOURCE LINE # 96
0072 7401            331             MOV     A,#01H
0074 7E00            332             MOV     R6,#00H
0076 A807            333             MOV     R0,AR7
0078 08              334             INC     R0
0079 8005            335             SJMP    ?C0029
007B                 336     ?C0028:
007B C3              337             CLR     C
007C 33              338             RLC     A
007D CE              339             XCH     A,R6
007E 33              340             RLC     A
007F CE              341             XCH     A,R6
0080                 342     ?C0029:
0080 D8F9            343             DJNZ    R0,?C0028
0082 FF              344             MOV     R7,A
0083 E500     F      345             MOV     A,gOs
0085 5E              346             ANL     A,R6
0086 FE              347             MOV     R6,A
0087 E500     F      348             MOV     A,gOs+01H
0089 5F              349             ANL     A,R7
008A 4E              350             ORL     A,R6
008B 604A            351             JZ      ?C0007
                     352     ;               {       
                     353                             ; SOURCE LINE # 97
                     354     ;                       if (OS_TASK_RDY==gOs.tcb[tmp].state)
                     355                             ; SOURCE LINE # 98
008D A800     F      356             MOV     R0,?C_IBP
008F E6              357             MOV     A,@R0
0090 FD              358             MOV     R5,A
0091 75F007          359             MOV     B,#07H
0094 A4              360             MUL     AB
0095 2400     F      361             ADD     A,#LOW (gOs+07H)
0097 F8              362             MOV     R0,A
0098 E6              363             MOV     A,@R0
0099 FE              364             MOV     R6,A
009A 08              365             INC     R0
009B E6              366             MOV     A,@R0
009C FF              367             MOV     R7,A
009D EE              368             MOV     A,R6
009E C4              369             SWAP    A
009F F8              370             MOV     R0,A
00A0 54F0            371             ANL     A,#0F0H
00A2 C8              372             XCH     A,R0
00A3 EF              373             MOV     A,R7
00A4 C4              374             SWAP    A
00A5 540F            375             ANL     A,#0FH
00A7 48              376             ORL     A,R0
00A8 540F            377             ANL     A,#0FH
00AA 6401            378             XRL     A,#01H
00AC 7029            379             JNZ     ?C0007
                     380     ;                       {
                     381                             ; SOURCE LINE # 99
                     382     ;                               gOs.tcb[tmp].state = OS_TASK_RDY;                          
                                  
                     383                             ; SOURCE LINE # 100
00AE ED              384             MOV     A,R5
00AF 75F007          385             MOV     B,#07H
00B2 A4              386             MUL     AB
A51 MACRO ASSEMBLER  SW_INT                                                               11/24/2006 11:35:22 PAGE     7

00B3 2400     F      387             ADD     A,#LOW (gOs+07H)
00B5 F8              388             MOV     R0,A
00B6 C000            389             PUSH    AR0
00B8 E6              390             MOV     A,@R0
00B9 FE              391             MOV     R6,A
00BA 08              392             INC     R0
00BB E6              393             MOV     A,@R0
00BC 540F            394             ANL     A,#0FH
00BE 4410            395             ORL     A,#010H
00C0 D000            396             POP     AR0
00C2 A606            397             MOV     @R0,AR6
00C4 08              398             INC     R0
00C5 F6              399             MOV     @R0,A
                     400     ;                               gOs.currTask = tmp;
                     401                             ; SOURCE LINE # 101
00C6 8D00     F      402             MOV     gOs+01FH,R5
                     403     ;                               SP = gOs.tcb[tmp].sp;
                     404                             ; SOURCE LINE # 102
00C8 A800     F      405             MOV     R0,?C_IBP
00CA E6              406             MOV     A,@R0
00CB 75F007          407             MOV     B,#07H
00CE A4              408             MUL     AB
00CF 2400     F      409             ADD     A,#LOW (gOs+02H)
00D1 F8              410             MOV     R0,A
00D2 E6              411             MOV     A,@R0
00D3 F581            412             MOV     SP,A
                     413     ;                               break;  
                     414                             ; SOURCE LINE # 103
00D5 8005            415             SJMP    ?C0006
                     416     ;                       }
                     417                             ; SOURCE LINE # 104
                     418     ;               }               
                     419                             ; SOURCE LINE # 105
                     420     ;       }
                     421                             ; SOURCE LINE # 106
00D7                 422     ?C0007:
00D7 A800     F      423             MOV     R0,?C_IBP
00D9 06              424             INC     @R0
00DA 808D            425             SJMP    ?C0005
00DC                 426     ?C0006:
                     427     ;       __asm PUSH DPH
00DC C083            428              PUSH DPH
                     429     ;       __asm PUSH DPL
00DE C082            430              PUSH DPL
                     431     ;       if (1==gOsIntLevel)
                     432                             ; SOURCE LINE # 109
00E0 E500     F      433             MOV     A,gOsIntLevel
00E2 B40111          434             CJNE    A,#01H,?C0002
                     435     ;       {
                     436                             ; SOURCE LINE # 110
                     437     ;               DPH = tmpsp2;
                     438                             ; SOURCE LINE # 111
00E5 A800     F      439             MOV     R0,?C_IBP
00E7 08              440             INC     R0
00E8 08              441             INC     R0
00E9 E6              442             MOV     A,@R0
00EA F583            443             MOV     DPH,A
                     444     ;               DPL = tmpsp1;
                     445                             ; SOURCE LINE # 112
00EC A800     F      446             MOV     R0,?C_IBP
00EE 08              447             INC     R0
00EF E6              448             MOV     A,@R0
00F0 F582            449             MOV     DPL,A
                     450     ;               __asm PUSH DPH
00F2 C083            451              PUSH DPH
                     452     ;               __asm PUSH DPL
A51 MACRO ASSEMBLER  SW_INT                                                               11/24/2006 11:35:22 PAGE     8

00F4 C082            453              PUSH DPL
                     454     ;       }
                     455                             ; SOURCE LINE # 115

⌨️ 快捷键说明

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