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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? os_cpu_a.asm

?? 帶時鐘功能溫度和濕度測量的儀器
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;*********************************************************************************************************
;**                                            Small RTOS 51 
;**                                   The Real-Time Kernel For Keil c51
;**
;**                                  (c) Copyright 2002-2003, chenmingji
;**                                           All Rights Reserved
;**
;**                                                  V1.12.1
;**
;**
;**--------------------文件信息---------------------------------------------------------------------------
;**文   件   名: OS_CPU_A.ASM
;**創(chuàng)   建   人: 陳明計
;**版        本: V1.12.1
;**最后修改日期:  2002年2月5日
;**描       述:  Small RTOS 51 與CPU(8051系列)相關(guān)的匯編程序
;**---------------------歷史版本信息----------------------------------------------------------------------
;** 創(chuàng)建人: 陳明計
;** 版  本:V0.50
;** 日 期: 2002年2月22日
;** 描 述: 原始版本
;**
;**------------------------------------------------------------------------------------------------------
;** 修改人: 陳明計
;** 版  本: V1.00
;** 日 期: 2002年6月10日
;** 描 述: 支持軟的非屏蔽中斷
;**
;**------------------------------------------------------------------------------------------------------
;** 修改人: 陳明計
;** 版  本: V1.10.3
;** 日 期: 2002年9月16日
;** 描 述: 修改了LoadCtx代碼使之執(zhí)行更快,代碼更小
;**         
;**------------------------------------------------------------------------------------------------------
;** 修改人: 陳明計
;** 版  本: V1.10.4
;** 日 期: 2002年10月5日
;** 描 述: 將OS_CPU_A.ASM和OS_CPU_A_task16.ASM合并
;**
;**------------------------------------------------------------------------------------------------------
;** 修改人: 陳明計
;** 版  本: V1.11.0
;** 日 期: 2002年12月2日
;** 描 述: 根據(jù)新版本要求使任務(wù)堆棧包含Os_Enter_Sum,使優(yōu)先級最低
;**         的任務(wù)只保存少量寄存器;增加注釋
;**------------------------------------------------------------------------------------------------------
;** 修改人: 陳明計
;** 版  本: V1.12.0
;** 日 期: 2002年12月30日
;** 描 述: 根據(jù)新版本要求更改少量代碼
;**------------------------------------------------------------------------------------------------------
;** 修改人: 陳明計
;** 版  本: V1.12.1
;** 日 期: 2002年2月5日
;** 描 述: 更正LoadCtx中OS_MAX_TASKS為8或16的bug
;**---------------------當(dāng)前版本修訂-----------------------------------------------------------------------
;** 修改人:
;** 日 期:
;** 描 述:
;**
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
#include "OS_CPU.H"
#include "OS_CFG.H"

#if EN_REENTRANT > 0
#define SP_ADD_BYTE  5
#else
#define SP_ADD_BYTE  3
#endif


    NAME    OS_CPU_A_ASM

?PR?OSCtxSw?OS_CPU_A                     SEGMENT CODE
?PR?OSIntCtxSw?OS_CPU_A                  SEGMENT CODE
?PR?LoadCtx?OS_CPU_A                     SEGMENT CODE
?PR?C_OSCtxSw?OS_CPU_A                   SEGMENT CODE 
?PR?_OSTaskStkInit?OS_CPU_A              SEGMENT CODE 


    EXTRN   CODE (OSMapTbl)
    EXTRN   DATA (OSFastSwap)
    EXTRN   DATA (OSTaskID)
    EXTRN   DATA (OSNextTaskID)
    EXTRN   DATA (OSTsakStackBotton)
    EXTRN   DATA (Os_Enter_Sum)
IF EN_SP2  <> 0
    EXTRN   IDATA (Sp2)
ENDIF
IF EN_REENTRANT > 0
    EXTRN   DATA (?C_XBP)
ENDIF

    PUBLIC  _OSTaskStkInit
    PUBLIC  LoadCtx
    PUBLIC  OSIntCtxSw
    PUBLIC  OSCtxSw
    PUBLIC  STACK
    PUBLIC  C_OSCtxSw

;****************************************************************************************
;?STACK SEGMENT IDATA

?STACK      SEGMENT   IDATA

        RSEG    ?STACK
STACK:                                          ;堆棧
        DS  1

; /*********************************************************************************************************
; ** 函數(shù)名稱: OSTaskStkInit
; ** 功能描述: 任務(wù)堆棧初始化
; ** 輸 入: 無
; ** 輸 出 : 無
; ** 全局變量: OSTaskID,OSTsakStackBotton,SP
; ** 調(diào)用模塊: LoadCtx
; ** 
; ** 作 者: 陳明計
; ** 日 期: 2002年2月22日
; **-------------------------------------------------------------------------------------------------------
; ** 修改人:
; ** 日 期:
; **-------------------------------------------------------------------------------------------------------
; ********************************************************************************************************/
 
    RSEG  ?PR?_OSTaskStkInit?OS_CPU_A
_OSTaskStkInit:
    USING   0
;---- Variable 'cp?147' assigned to Register 'R0' ----
;---- Variable 'cp?146' assigned to Register 'R1' ----
;---- Variable 'i?145' assigned to Register 'R2' ----
;---- Variable 'TaskID?144' assigned to Register 'R3' ----
;---- Variable 'ptos?143' assigned to Register 'R4/R5' ----
    
    PUSH    AR6
    PUSH    AR7
; {
#if OS_MAX_TASKS < 9
;         OSFastSwap[0] &= ~OSMapTbl[TaskID];
    MOV     A,R3
    MOV     DPTR,#OSMapTbl
    MOVC    A,@A+DPTR
    ORL     OSFastSwap,A
#else
;         if (TaskID < 8)
    MOV     A,R3
    CLR     C
    SUBB    A,#08H
    MOV     A,R3
    JNC     StkInit07
;         {
;             OSFastSwap[1] &= ~OSMapTbl[TaskID];
    MOV     DPTR,#OSMapTbl
    MOVC    A,@A+DPTR
    ORL     OSFastSwap+1,A
;         }
    SJMP    StkInit08
StkInit07:
;         else
;         {
;             OSFastSwap[0] &= ~OSMapTbl[TaskID & 0x07];
    ANL     A,#07H
    MOV     DPTR,#OSMapTbl
    MOVC    A,@A+DPTR
    ORL     OSFastSwap,A
;         }
StkInit08:
#endif

;     if (TaskID < OSRunningTaskID())
    MOV     A,R3
    CLR     C
    SUBB    A,OSTaskID
    JNC     StkInit5
;     {
;         i =  OSRunningTaskID() - TaskID;
    CLR     C
    MOV     A,OSTaskID
    SUBB    A,R3
    MOV     R2,A
;         cp = (uint8 idata *)(&(OSTsakStackBotton[TaskID + 1]));
    MOV     A,#LOW (OSTsakStackBotton+01H)
    ADD     A,R3
    MOV     R1,A
StkInit8:
;         do
;         {
;             *cp += SP_ADD_BYTE;
    MOV     A,#SP_ADD_BYTE
    ADD     A,@R1
    MOV     @R1,A
;             cp++;
    INC     R1
;         } while (--i != 0);
    DJNZ    R2,StkInit8

;         cp1 = (uint8 idata *)SP;
    MOV     R0,SP
;         SP = SP + SP_ADD_BYTE;
            ; SOURCE LINE # 172
    MOV     A,#SP_ADD_BYTE
    ADD     A,SP
    MOV     SP,A
;         i = SP - (uint8)(OSTsakStackBotton[TaskID + 1]) + 1;
    MOV     A,#LOW (OSTsakStackBotton+01H)
    ADD     A,R3
    MOV     R1,A
    MOV     AR7,@R1
    CLR     C
    MOV     A,SP
    SUBB    A,R7
    MOV     R2,A
    INC     R2
;         cp = (uint8 idata *)SP;
    MOV     R1,SP
StkInit11:
;         do
;         {
;             *cp-- = *cp1--;
    MOV     A,@R0
    MOV     @R1,A
    DEC     R0
    DEC     R1
;         } while (--i != 0);
    DJNZ    R2,StkInit11
;     }
    SJMP    StkInit12
StkInit5:
;     else
;     {
;         cp1 = (uint8 idata *)(&(OSTsakStackBotton[OSRunningTaskID() + 1]));
    MOV     A,#LOW (OSTsakStackBotton+01H)
    ADD     A,OSTaskID
    MOV     R0,A
;         i = TaskID - OSRunningTaskID();
    CLR     C
    MOV     A,R3
    SUBB    A,OSTaskID
    MOV     R2,A
StkInit15:
;         do
;         {
;             *cp1 -= SP_ADD_BYTE;
    MOV     A,#(-SP_ADD_BYTE)
    ADD     A,@R0
    MOV     @R0,A
;             cp1++;
    INC     R0
;         } while (--i != 0);
    DJNZ    R2,StkInit15
;         
;         cp = OSTsakStackBotton[OSRunningTaskID() + 1];
    MOV     A,#LOW (OSTsakStackBotton+01H)
    ADD     A,OSTaskID
    MOV     R0,A
    MOV     A,@R0
    MOV     R1,A
;         i = OSTsakStackBotton[TaskID] - cp - SP_ADD_BYTE;
    MOV     A,R1
    ADD     A,#(-SP_ADD_BYTE)
    MOV     R7,A

    MOV     A,#LOW (OSTsakStackBotton)
    ADD     A,R3
    MOV     R0,A
    MOV     A,@R0
    CLR     C
    SUBB    A,R7
    MOV     R2,A
;         cp1 = cp - SP_ADD_BYTE;
    MOV     R0,AR7
StkInit18:
;         do
;         {
;             *cp1++ = *cp++;
    MOV     A,@R1
    MOV     @R0,A
    INC     R0
    INC     R1
;         } while (--i != 0);
    DJNZ    R2,StkInit18
;     }
StkInit12:
;     cp = OSTsakStackBotton[TaskID];
    MOV     A,#LOW (OSTsakStackBotton)
    ADD     A,R3
    MOV     R0,A
    MOV     A,@R0
    MOV     R1,A
;     *cp++ = (uint16)task % 256;
    pop     ACC
    MOV     @R1,A
    INC     R1
;     *cp++ = (uint16)task / 256;
    pop     ACC
    MOV     @R1,A
    INC     R1
#if EN_REENTRANT > 0
;     *cp++ = (uint16)ptos / 256;
    MOV     @R1,AR4
    INC     R1
;     *cp++ = (uint16)ptos % 256;
    MOV     @R1,AR5
    INC     R1
#endif
;     *cp = 0;
    CLR     A
    MOV     @R1,A
; }
    RET     

;/*********************************************************************************************************
;** 函數(shù)名稱: LoadCtx
;** 功能描述: 任務(wù)環(huán)境恢復(fù)函數(shù)
;** 輸 入: OSTaskID,OSFastSwap
;** 輸 出 : 無
;** 全局變量: 無
;** 調(diào)用模塊: 無
;** 
;** 作 者: 陳明計
;** 日 期: 2002年2月22日
;**-------------------------------------------------------------------------------------------------------
;** 修 改: 陳明計
;** 日 期: 2002年12月2日
;**-------------------------------------------------------------------------------------------------------
;** 修 改: 陳明計
;** 日 期: 2003年2月5日
;**-------------------------------------------------------------------------------------------------------
;** 修 改:
;** 日 期:
;**-------------------------------------------------------------------------------------------------------
;********************************************************************************************************/

    RSEG  ?PR?LoadCtx?OS_CPU_A
LoadCtx:
    USING   0
   
    POP     Os_Enter_Sum            ;恢復(fù)關(guān)中斷計數(shù)器

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

                                    ;判斷是否需要恢復(fù)所有寄存器
    MOV     A,OSTaskID
    CJNE    A,#OS_MAX_TASKS,LoadCtx_0
    SJMP    LoadCtx_2
LoadCtx_0:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美另类在线| 久久久久久久久岛国免费| 国产丝袜在线精品| 欧美丰满少妇xxxbbb| 色哟哟国产精品| 色综合网站在线| www.欧美.com| 91蜜桃在线观看| 色哟哟在线观看一区二区三区| 91丨porny丨户外露出| 色婷婷av一区二区三区大白胸 | 粉嫩av一区二区三区| 国模套图日韩精品一区二区 | 成人午夜激情视频| 99久久久久免费精品国产| 99精品热视频| 91高清在线观看| 欧美日韩激情一区二区三区| 9191久久久久久久久久久| 欧美一级欧美三级| 国产亚洲综合在线| 国产精品乱人伦| 乱中年女人伦av一区二区| 精品一区二区三区视频| 美女性感视频久久| 国产最新精品免费| 国产**成人网毛片九色 | 日韩一级片在线观看| 欧美tk—视频vk| 欧美国产一区视频在线观看| 最近日韩中文字幕| 亚洲尤物在线视频观看| 免费人成精品欧美精品 | 91精品国产综合久久香蕉的特点| 69堂成人精品免费视频| 久久久99精品久久| 一区二区日韩电影| 麻豆视频观看网址久久| 国产成人精品免费看| 在线观看区一区二| 欧美成人精精品一区二区频| 国产精品久久久久影院| 午夜精品久久久| 国产乱理伦片在线观看夜一区| 91免费视频网| 欧美成人精精品一区二区频| 91精品视频网| 国产福利一区在线观看| 99精品欧美一区二区三区综合在线| 欧美性一二三区| 精品福利视频一区二区三区| 亚洲猫色日本管| 青椒成人免费视频| 国产福利一区在线| 欧美肥妇free| 国产精品传媒在线| 秋霞午夜av一区二区三区| 成人中文字幕合集| 日韩情涩欧美日韩视频| 亚洲日本丝袜连裤袜办公室| 精品无人码麻豆乱码1区2区| 色悠悠亚洲一区二区| 久久欧美一区二区| 日韩国产精品大片| 91在线观看成人| 久久久久久久久久久黄色| 日韩精品久久理论片| 播五月开心婷婷综合| 日韩丝袜美女视频| 一区二区三区国产豹纹内裤在线| 国产精一品亚洲二区在线视频| 欧美优质美女网站| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 91成人看片片| 久久久午夜精品理论片中文字幕| 亚洲成人1区2区| 91年精品国产| 欧美激情中文字幕| 久久99精品国产| 欧美一卡二卡三卡| 亚洲一区二区高清| 色综合久久久久综合99| 中文字幕av免费专区久久| 久久草av在线| 欧美一级日韩不卡播放免费| 亚洲国产精品久久久久婷婷884| 波多野结衣一区二区三区| 久久久青草青青国产亚洲免观| 日产国产欧美视频一区精品| 欧美在线观看视频在线| 亚洲精品日韩专区silk| 99re热视频这里只精品| 国产精品色呦呦| 国产成人av一区二区三区在线观看| 精品少妇一区二区三区日产乱码| 日韩成人午夜电影| 欧美日本一区二区三区四区 | 麻豆91在线观看| 91视频xxxx| 中文字幕一区在线| 北条麻妃国产九九精品视频| 国产精品久久福利| 97久久人人超碰| 亚洲欧美激情插| 日本精品一区二区三区高清| 一区二区三区久久| 在线免费观看日本欧美| 亚洲综合自拍偷拍| 在线一区二区三区四区五区 | 一区二区理论电影在线观看| 99国产欧美另类久久久精品| 1区2区3区国产精品| 99久久综合精品| 自拍偷拍亚洲综合| 色老汉av一区二区三区| 亚洲一区二区三区中文字幕在线| 在线观看免费成人| 午夜精品视频在线观看| 91精品欧美久久久久久动漫 | 日韩欧美www| 国产原创一区二区三区| 亚洲视频在线一区观看| 久久精品欧美日韩| 国产成人高清视频| 亚洲视频在线观看三级| 色八戒一区二区三区| 亚洲国产精品久久人人爱| 欧美一级理论片| 激情五月激情综合网| 日本一区二区成人在线| 色综合天天做天天爱| 亚洲一区二区在线视频| 欧美一区二区福利在线| 国产成人在线视频免费播放| 中文字幕亚洲一区二区va在线| 在线亚洲免费视频| 久久精品国产精品亚洲综合| 中文字幕二三区不卡| 在线精品视频免费播放| 欧美aaaaaa午夜精品| 欧美激情艳妇裸体舞| 日本高清无吗v一区| 日本视频中文字幕一区二区三区| 久久色成人在线| 91麻豆国产精品久久| 日韩精品91亚洲二区在线观看| 久久婷婷久久一区二区三区| 在线精品视频免费播放| 激情综合色播五月| 亚洲欧美激情小说另类| 精品精品欲导航| 91麻豆国产福利精品| 蜜桃av一区二区| 国产网站一区二区三区| 中文字幕亚洲成人| 欧美挠脚心视频网站| 国产美女精品在线| 一区二区不卡在线视频 午夜欧美不卡在| 欧美日韩高清一区二区三区| 国产综合色精品一区二区三区| 综合精品久久久| 欧美一级理论片| 一本大道久久精品懂色aⅴ| 麻豆精品视频在线观看免费| 亚洲欧美国产三级| 26uuu国产在线精品一区二区| 一本色道久久综合亚洲精品按摩| 久久福利资源站| 亚洲在线中文字幕| 国产精品伦理一区二区| 精品日韩在线观看| 欧美日韩国产精选| 97久久精品人人做人人爽| 精品一区二区免费视频| 亚洲成人福利片| 国产精品国产a级| 久久久精品综合| 日韩亚洲欧美在线| 欧美色偷偷大香| av毛片久久久久**hd| 国产美女在线精品| 日本视频免费一区| 亚洲一二三四区不卡| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美成va人片在线观看| 在线播放欧美女士性生活| 色婷婷久久一区二区三区麻豆| 成人免费视频一区二区| 中文字幕一区日韩精品欧美| 欧美精品第1页| 欧美在线观看一区| 色综合久久88色综合天天免费| 国产成人精品免费视频网站| 久久精品国产精品亚洲精品| 天天综合色天天| 午夜精品福利在线| 亚洲国产成人av网| 一区二区欧美在线观看| 亚洲女与黑人做爰| 亚洲免费观看视频|