亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os_cpu_a.asm

?? 帶時鐘功能溫度和濕度測量的儀器
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
    MOV     DPTR,#OSMapTbl
#if OS_MAX_TASKS < 9
    MOVC    A,@A+DPTR
    ANL     A,OSFastSwap
#else
    MOV     R6,OSFastSwap
    CLR     C
    SUBB    A,#8
    JNC     LoadCtx_1
    MOV     R6,OSFastSwap + 1
    MOV     A,OSTaskID
LoadCtx_1:
    MOVC    A,@A+DPTR
    ANL     A,R6
#endif
    JNZ     LoadCtx_2
                                    ;恢復寄存器
    POP     7
    POP     6
    POP     5
    POP     4
    POP     3
    POP     2
    POP     1
    POP     0
    POP     PSW
    POP     DPL
    POP     DPH
    POP     B
    POP     ACC
LoadCtx_2:
                                    ;判斷是否需要開中斷
    INC     Os_Enter_Sum
    djnz    Os_Enter_Sum,LoadCtx_3
    SET_EA                          ;開中斷
LoadCtx_3:
    RET


;/*********************************************************************************************************
;** 函數名稱: OSCtxSw
;** 功能描述: 任務主動放棄CPU環境保存函數
;** 輸 入: OSTaskID
;** 輸 出 : 無
;** 全局變量: OSFastSwap
;** 調用模塊: 無
;** 
;** 作 者: 陳明計
;** 日 期: 2002年2月22日
;**-------------------------------------------------------------------------------------------------------
;** 修 改:
;** 日 期:
;**-------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
    RSEG  ?PR?OSCtxSw?OS_CPU_A
OSCtxSw:
    USING   0

#if EN_REENTRANT > 0
    PUSH     ?C_XBP
    PUSH     ?C_XBP+1
#endif

    PUSH    Os_Enter_Sum            ;保存關中斷計數器
                                    ;設置標志:任務再次恢復運行時不必恢復所有寄存器
    MOV     DPTR,#OSMapTbl
    MOV     A,OSTaskID
#if OS_MAX_TASKS < 9
    MOVC    A,@A+DPTR
    ORL     OSFastSwap,A
#else
    CLR     C
    SUBB    A,#8
    JC      OSCtxSw_1
    MOVC    A,@A+DPTR
    ORL     OSFastSwap,A
    LJMP    C_OSCtxSw
OSCtxSw_1:
    MOV     A,OSTaskID
    MOVC    A,@A+DPTR
    ORL     OSFastSwap+1,A
#endif
    LJMP    C_OSCtxSw
;****************************************************************************************
;/*********************************************************************************************************
;** 函數名稱: C_OSCtxSw
;** 功能描述: 堆棧處理函數
;** 輸 入: 無
;** 輸 出 : 無
;** 全局變量: OSTaskID,OSTsakStackBotton,SP
;** 調用模塊: LoadCtx
;** 
;** 作 者: 陳明計
;** 日 期: 2002年2月22日
;**-------------------------------------------------------------------------------------------------------
;** 修 改: 陳明計
;** 日 期: 2002年12月2日
;**-------------------------------------------------------------------------------------------------------
;** 修 改:
;** 日 期:
;**-------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
    RSEG  ?PR?C_OSCtxSw?OS_CPU_A
C_OSCtxSw:

    mov     r2,sp
    
;     cp1 = (unsigned char idata *)SP +1;
    MOV     R0,SP

IF EN_SP2  <> 0
    mov     sp,#(Sp2-1)             ;堆棧指向臨時空間,允許“軟非屏蔽中斷”
ENDIF

    INC     R0
;     temp = (unsigned char )OSTsakStackBotton[OSNextTaskID+1];
    MOV     A,#LOW (OSTsakStackBotton+01H)
    ADD     A,OSNextTaskID
    MOV     R1,A
    MOV     A,@R1
    MOV     R7,A
;     cp2 = OSTsakStackBotton[OSTaskID+1];
    MOV     A,#LOW (OSTsakStackBotton+01H)
    ADD     A,OSTaskID
    MOV     R1,A
    MOV     A,@R1
    MOV     R1,A
;     if( OSNextTaskID > OSTaskID)
    MOV     A,OSNextTaskID
    SETB    C
    SUBB    A,OSTaskID
    JC      ?C0001
;     {
;         while(cp2 != (unsigned char idata *)temp)
;         {
;             *cp1++ = *cp2++;
;         }
    MOV     A,R7
    CLR     C
    SUBB    A,R1
    MOV     R6,A
?C0002:
    MOV     A,@R1
    MOV     @R0,A
    INC     R0
    INC     R1
    DJNZ    R6,?C0002
?C0003:
;         temp = OSTsakStackBotton[OSTaskID+1] - (unsigned char idata *)SP-1;
    MOV     A,#LOW (OSTsakStackBotton+1)
    ADD     A,OSTaskID
    MOV     R1,A
    MOV     A,@R1
    SETB    C
    ;SUBB    A,sp
    SUBB    A,r2
    MOV     R7,A
;         SP = (unsigned char )cp1 - 1;
    DEC     R0;
    MOV     SP,R0
;         for(i = OSTaskID+1;i < OSNextTaskID+1; i++)
;         {
;             OSTsakStackBotton[i] -= temp;
;         }
    MOV     A,OSNextTaskID
    CLR     C
    SUBB    A,OSTaskID
    MOV     R6,A
    JZ      ?C0005

    MOV     A,#LOW (OSTsakStackBotton)
    ADD     A,OSTaskID
    MOV     R1,A    
    MOV     A,R7
    CPL     A
    INC     A
    MOV     R7,A
?C0004:
    INC     R1
    MOV     A,R7
    ADD     A,@R1    
    MOV     @R1,A
    DJNZ    R6,?C0004
?C0005:
;         OSTaskID = OSNextTaskID;
    MOV     OSTaskID,OSNextTaskID
;         LoadCtx();    
    LJMP    LoadCtx
;     }
?C0001:
; 
;     if( OSNextTaskID != OSTaskID)
    MOV     A,OSNextTaskID
    XRL     A,OSTaskID
    JZ      ?C000r
;     {
;          cp2--;
;          cp1--;
;         while(cp2 != (unsigned char idata *)temp)
;         {
;             *cp2-- = *cp1--;
;         }
    ;MOV     A,R7
    ;CLR     C
    ;SUBB    A,R1
    ;MOV     R6,A
    mov     a,r0
    clr     c
    subb    a,r7
    mov     r6,a
?C0008:
    DEC     R0
    DEC     R1
    MOV     A,@R0
    MOV     @R1,A
    DJNZ    R6,?C0008
?C0009:
;         temp = OSTsakStackBotton[OSTaskID+1] - (unsigned char idata *)SP-1;
    MOV     A,#LOW (OSTsakStackBotton+01H)
    ADD     A,OSTaskID
    MOV     R1,A
    MOV     A,@R1
    SETB    C
    ;SUBB    A,SP
    SUBB    A,r2
    MOV     R7,A
;         SP = (unsigned char )OSTsakStackBotton[OSNextTaskID+1];
    MOV     A,#LOW (OSTsakStackBotton+01H)
    ADD     A,OSNextTaskID
    MOV     R1,A
    MOV     A,@R1
    MOV     SP,A
;         for(i = OSNextTaskID+1;i < OSTaskID+1; i++)
;         {
;             OSTsakStackBotton[i] += temp;
;         }

    MOV     A,OSTaskID
    CLR     C
    SUBB    A,OSNextTaskID
    JZ      ?C0011

    MOV     R6,A
    MOV     A,#LOW (OSTsakStackBotton)
    ADD     A,OSNextTaskID
    MOV     R1,A    
?C0010:
    INC     R1
    MOV     A,R7
    ADD     A,@R1    
    MOV     @R1,A
    DJNZ    R6,?C0010

?C0011:
;         OSTaskID = OSNextTaskID;        
    MOV     OSTaskID,OSNextTaskID
;         SP--;
    DEC     SP
;     }
?C0007:
;     LoadCtx();
    LJMP    LoadCtx
?C000r:
IF EN_SP2  <> 0
    mov     SP,r2
ENDIF
    LJMP    LoadCtx
;****************************************************************************************
;/*********************************************************************************************************
;** 函數名稱: OSIntCtxSw
;** 功能描述: 中斷使任務放棄CPU環境保存函數
;** 輸 入: OSTaskID
;** 輸 出 : 無
;** 全局變量: OSFastSwap
;** 調用模塊: 無
;** 
;** 作 者: 陳明計
;** 日 期: 2002年2月22日
;**-------------------------------------------------------------------------------------------------------
;** 修 改: 陳明計
;** 日 期: 2002年12月2日
;**-------------------------------------------------------------------------------------------------------
;** 修 改:
;** 日 期:
;**-------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
    RSEG  ?PR?OSIntCtxSw?OS_CPU_A
OSIntCtxSw:
    USING   0
                                        ;是否是優先級最低任務
    MOV     A,#OS_MAX_TASKS
    XRL     A,OSTaskID
    JNZ     OSIntCtxSw_0
                                        ;是則不需要保存所有寄存器
;SP=SP-13-4                             ;4:兩層函數調用堆棧,13:寄存器數目
    MOV     A,#(-17)
    ADD     A,SP
    MOV     SP,A
                                        ;跳轉到OSCtxSw,同時通知CPU中斷處理完成
    MOV     A, #LOW  OSCtxSw
    PUSH    ACC
    MOV     A, #HIGH OSCtxSw
    PUSH    ACC
    RETI
                                        ;需要保存所有寄存器
OSIntCtxSw_0:
;SP=SP-4                                ;4:兩層函數調用堆棧
    MOV     A,#0FCH
    ADD     A,SP
    MOV     SP,A
                                        ;設置標志:任務再次恢復運行時需要恢復所有寄存器
    MOV     DPTR,#OSMapTbl
    MOV     A,OSTaskID
#if OS_MAX_TASKS < 9
    MOVC    A,@A+DPTR
    CPL     A
    ANL     OSFastSwap,A
#else
    CLR     C
    SUBB    A,#8
    JC      OSIntCtxSw_1    
    MOVC    A,@A+DPTR
    CPL     A    
    ANL     OSFastSwap,A
    SJMP    OSIntCtxSw_2
OSIntCtxSw_1:
    MOV     A,OSTaskID
    MOVC    A,@A+DPTR
    CPL     A    
    ANL     OSFastSwap+1,A
OSIntCtxSw_2:
#endif

#if EN_REENTRANT > 0
    PUSH     ?C_XBP
    PUSH     ?C_XBP+1
#endif
    PUSH    Os_Enter_Sum            ;保存關中斷計數器
                                        ;跳轉到堆棧處理,同時通知CPU中斷處理完成
    MOV     A, #LOW  C_OSCtxSw
    PUSH    ACC
    MOV     A, #HIGH C_OSCtxSw
    PUSH    ACC
    RETI

;/*********************************************************************************************************
;**                            End Of File
;********************************************************************************************************/
    END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜精品久久| 色噜噜狠狠色综合欧洲selulu| 亚洲欧美国产三级| 国产精品白丝在线| 亚洲欧美区自拍先锋| 亚洲人成网站色在线观看| 亚洲欧洲色图综合| 亚洲精选视频在线| 亚洲一区成人在线| 三级在线观看一区二区| 污片在线观看一区二区| 麻豆国产精品777777在线| 麻豆精品一区二区| 国产精品综合网| 国产suv精品一区二区6| 不卡一区在线观看| 欧美四级电影网| 色婷婷av一区二区三区软件| 在线视频一区二区三区| 91麻豆精品国产| 久久久久久久久岛国免费| 亚洲欧美一区二区在线观看| 一区二区久久久久久| 午夜av一区二区三区| 国产在线不卡一区| 91年精品国产| 日韩精品在线网站| 亚洲欧洲精品一区二区三区| 亚洲成人av资源| 激情五月播播久久久精品| 白白色 亚洲乱淫| 这里只有精品免费| 中文字幕一区在线观看| 日韩不卡手机在线v区| 国产成人在线观看| 欧美群妇大交群中文字幕| 欧美精品一区二区三区久久久| 国产精品美女久久久久久| 亚洲成av人**亚洲成av**| 国产一区二区三区黄视频 | 欧美日本乱大交xxxxx| 日韩一区二区三区高清免费看看 | 99精品视频一区二区三区| 欧美影院精品一区| 久久久午夜精品理论片中文字幕| 亚洲人成伊人成综合网小说| 免费xxxx性欧美18vr| 91碰在线视频| 国产亚洲欧美日韩日本| 丝袜美腿亚洲一区二区图片| 成人免费电影视频| 欧美精品一区在线观看| 亚洲一卡二卡三卡四卡| 成人h动漫精品一区二区| 日韩欧美一级二级| 五月天欧美精品| 91福利在线观看| 国产精品素人一区二区| 久久er精品视频| 制服.丝袜.亚洲.另类.中文| 一区二区三区国产豹纹内裤在线| 国产69精品久久久久毛片| 91精品婷婷国产综合久久| 一区二区三区自拍| 94-欧美-setu| 国产精品丝袜黑色高跟| 国产精品一区2区| 欧美草草影院在线视频| 青青草一区二区三区| 欧美丰满嫩嫩电影| 视频一区欧美日韩| 91精品综合久久久久久| 日韩av不卡在线观看| 欧美乱熟臀69xxxxxx| 天天综合色天天综合色h| 欧美日韩成人综合天天影院 | 国产精品毛片高清在线完整版| 久久99精品久久久久久久久久久久 | 欧美一级理论性理论a| 五月综合激情网| 日韩欧美一区在线观看| 精品一区二区国语对白| 欧美精品一区二区三区高清aⅴ | 欧美精品 日韩| 日韩黄色免费电影| 91精品国产免费久久综合| 全国精品久久少妇| 久久综合九色综合久久久精品综合| 老司机精品视频导航| 久久久久久97三级| 成人精品一区二区三区中文字幕| 综合网在线视频| 色88888久久久久久影院野外 | 水蜜桃久久夜色精品一区的特点| 欧美老女人第四色| 久久国产人妖系列| 国产夜色精品一区二区av| 床上的激情91.| 夜色激情一区二区| 日韩欧美一区二区不卡| 丁香婷婷综合激情五月色| 成人欧美一区二区三区1314| 91亚洲资源网| 日韩不卡一区二区三区| 久久久国产一区二区三区四区小说| a4yy欧美一区二区三区| 婷婷综合另类小说色区| 国产欧美日韩三级| 欧美人xxxx| 91亚洲精品一区二区乱码| 日日欢夜夜爽一区| 国产精品欧美精品| 3d动漫精品啪啪一区二区竹菊| 国产一区二区按摩在线观看| 国产精品高潮久久久久无| 日韩一区二区免费电影| 一本大道av伊人久久综合| 肉色丝袜一区二区| 亚洲精品成a人| 久久免费午夜影院| 欧美一级夜夜爽| 色综合久久天天| 国产精品白丝av| 美女精品自拍一二三四| 亚洲精品免费电影| 国产精品久久毛片av大全日韩| 欧美精品第一页| 色网综合在线观看| 成人一道本在线| 国产精品99久久久久久久女警| 偷拍自拍另类欧美| 尤物在线观看一区| 中文字幕在线免费不卡| 久久久不卡影院| 精品国免费一区二区三区| 欧美日韩在线不卡| 在线观看av不卡| 99re这里都是精品| jizz一区二区| 成人国产在线观看| 不卡视频免费播放| 成人18视频在线播放| av男人天堂一区| 国产91丝袜在线播放0| 久国产精品韩国三级视频| 亚洲成人av电影在线| 亚洲风情在线资源站| 亚洲激情图片小说视频| 亚洲男人天堂一区| 亚洲天堂精品在线观看| 国产精品久久国产精麻豆99网站| 国产色爱av资源综合区| 久久在线免费观看| 日本一二三四高清不卡| 国产日本欧洲亚洲| 国产精品乱码一区二区三区软件| 久久久午夜精品| 亚洲国产精品精华液2区45| 久久蜜臀精品av| 亚洲国产精品激情在线观看| 欧美极品少妇xxxxⅹ高跟鞋 | 国产福利电影一区二区三区| 精品一区二区三区的国产在线播放| 日本女人一区二区三区| 久久精品国产**网站演员| 国产专区欧美精品| 国产99久久久精品| 97久久超碰国产精品| 欧美色图12p| 精品欧美一区二区久久| 国产日产精品1区| 一区二区三区欧美亚洲| 日韩激情视频网站| 国产99精品在线观看| 色综合久久中文字幕| 91精品国产91热久久久做人人 | 亚洲欧美日韩系列| 调教+趴+乳夹+国产+精品| 久久国产尿小便嘘嘘| 国产·精品毛片| 精品视频一区三区九区| 精品国产三级电影在线观看| 欧美国产精品v| 亚洲国产精品人人做人人爽| 麻豆精品视频在线观看免费| 成人免费视频一区二区| 欧美影院一区二区三区| 国产夜色精品一区二区av| 亚洲国产综合色| 国产成人综合在线观看| 色吧成人激情小说| 久久午夜国产精品| 亚洲午夜久久久久久久久久久| 国产精品99久久久久久久女警| 欧美亚洲图片小说| 中文字幕 久热精品 视频在线| 日韩成人一区二区| 99国产精品久久久久久久久久久| 欧美精品一二三| 夜夜精品视频一区二区|