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

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

?? os_cpu_a.asm

?? ucos-II的中文注釋源代碼
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;********************************************************************************************************
;                                               uC/OS-II
;                                         The Real-Time Kernel
;                                         全面版
;
;                          (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
;                                          All Rights Reserved
;
;
;                                       80x86/80x88 Specific code
;                                 LARGE MEMORY MODEL WITH FLOATING-POINT
;                                          Borland C/C++ V4.51
;
; File         : OS_CPU_A.ASM
; By           : Jean J. Labrosse
;********************************************************************************************************

            PUBLIC _OSStartHighRdy
            PUBLIC _OSCtxSw
            PUBLIC _OSIntCtxSw
            PUBLIC _OSFPRestore
            PUBLIC _OSFPSave
            PUBLIC _OSTickISR

            EXTRN  _OSIntExit:FAR
            EXTRN  _OSTimeTick:FAR
            EXTRN  _OSTaskSwHook:FAR
            
            EXTRN  _OSIntNesting:BYTE
            EXTRN  _OSTickDOSCtr:BYTE
            EXTRN  _OSPrioHighRdy:BYTE
            EXTRN  _OSPrioCur:BYTE
            EXTRN  _OSRunning:BYTE
            EXTRN  _OSTCBCur:DWORD
            EXTRN  _OSTCBHighRdy:DWORD

.MODEL      LARGE
.CODE
.186
            PAGE                                    ; /*$PAGE*/
;*********************************************************************************************************
;                                          START MULTITASKING
;                                       void OSStartHighRdy(void)
;
; The stack frame is assumed to look as follows:
;
; OSTCBHighRdy->OSTCBStkPtr --> DS                               (Low memory)
;                               ES
;                               DI
;                               SI
;                               BP
;                               SP
;                               BX
;                               DX
;                               CX
;                               AX
;                               OFFSET  of task code address
;                               SEGMENT of task code address
;                               Flags to load in PSW             
;                               OFFSET  of task code address
;                               SEGMENT of task code address
;                               OFFSET  of 'pdata'
;                               SEGMENT of 'pdata'               (High memory)
;
; Note : OSStartHighRdy() MUST:
;           a) Call OSTaskSwHook() then,
;           b) Set OSRunning to TRUE,
;           c) Switch to the highest priority task.
;*********************************************************************************************************

_OSStartHighRdy  PROC FAR

            CALL   FAR PTR _OSTaskSwHook            ; Call user defined task switch hook
;
            MOV    AX, SEG _OSTCBHighRdy            ; Reload DS
            MOV    DS, AX                           ; 
            MOV    AL, 1                            ; OSRunning = TRUE;
            MOV    BYTE PTR DS:_OSRunning, AL       ;   (Indicates that multitasking has started)
;
            LES    BX, DWORD PTR DS:_OSTCBHighRdy   ; SS:SP = OSTCBHighRdy->OSTCBStkPtr
            MOV    SS, ES:[BX+2]                    ; 
            MOV    SP, ES:[BX+0]                    ; 
;
            POP    DS                               ; Load task's context
            POP    ES                               ; 
            POPA                                    ; 
;
            IRET                                    ; Run task

_OSStartHighRdy  ENDP

            PAGE                                    ; /*$PAGE*/
;*********************************************************************************************************
;                                PERFORM A CONTEXT SWITCH (From task level)
;                                           void OSCtxSw(void)
;                                                         從任務層中執行任務轉換
;
; Note(s): 1) Upon entry, 
;             OSTCBCur     points to the OS_TCB of the task to suspend
;             OSTCBHighRdy points to the OS_TCB of the task to resume
;
;          2) The stack frame of the task to suspend looks as follows:
;
;                 SP -> OFFSET  of task to suspend    (Low memory)
;                       SEGMENT of task to suspend      
;                       PSW     of task to suspend    (High memory)  
;
;          3) The stack frame of the task to resume looks as follows:
; 
;                 OSTCBHighRdy->OSTCBStkPtr --> DS                               (Low memory)
;                                               ES
;                                               DI
;                                               SI
;                                               BP
;                                               SP
;                                               BX
;                                               DX
;                                               CX
;                                               AX
;                                               OFFSET  of task code address
;                                               SEGMENT of task code address
;                                               Flags to load in PSW             (High memory)
;*********************************************************************************************************

_OSCtxSw    PROC   FAR
;
            PUSHA                                   ; Save current task's context
;PUSHA、POPA指令將所有通用寄存器的內容壓入或者彈出堆棧。壓入的
;順序是:AX,CX,DX,BX,SP,BP,SI,DI(SP是執行該指令之前的值)彈出的順序與壓入相反
            PUSH   ES                               ; 接下來是ES
            PUSH   DS                               ; 接下來是DS(見第二版書389頁)
;
            MOV    AX, SEG _OSTCBCur                ; Reload DS in case it was altered
            MOV    DS, AX                           ; 
;如果DS改變的話,就重裝DS
            LES    BX, DWORD PTR DS:_OSTCBCur       ; OSTCBCur->OSTCBStkPtr = SS:SP
            MOV    ES:[BX+2], SS                    ; OSTCBHighRdy->OSTCBStkPtr --> DS   
            MOV    ES:[BX+0], SP                    ; 
;
            CALL   FAR PTR _OSTaskSwHook            ; Call user defined task switch hook
;
            MOV    AX, WORD PTR DS:_OSTCBHighRdy+2  ; OSTCBCur = OSTCBHighRdy
            MOV    DX, WORD PTR DS:_OSTCBHighRdy    ; 因為是32位指令
            MOV    WORD PTR DS:_OSTCBCur+2, AX      ; 將最高優先級TCB賦給OSTCBCur
            MOV    WORD PTR DS:_OSTCBCur, DX        ; 
;
            MOV    AL, BYTE PTR DS:_OSPrioHighRdy   ; OSPrioCur = OSPrioHighRdy
            MOV    BYTE PTR DS:_OSPrioCur, AL       ; 將最高優先級值賦給 OSPrioCur 
;
            LES    BX, DWORD PTR DS:_OSTCBHighRdy   ; SS:SP = OSTCBHighRdy->OSTCBStkPtr
            MOV    SS, ES:[BX+2]                    ;LES是地址傳送指令,將源地址傳送到ES寄存器
            MOV    SP, ES:[BX]                      ; 
;
            POP    DS                               ; Load new task's context
            POP    ES                               ; 出棧
            POPA                                    ; 
;
            IRET                                    ; Return to new task中斷返回指令
;
_OSCtxSw    ENDP

            PAGE                                    ; /*$PAGE*/
;*********************************************************************************************************
;                                PERFORM A CONTEXT SWITCH (From an ISR)
;                                        void OSIntCtxSw(void)
;                                                         從中斷層中執行任務轉換
;
; Note(s): 1) Upon entry, 
;             OSTCBCur     points to the OS_TCB of the task to suspend
;             OSTCBCur     指向要掛起任務的OS_TCB
;             OSTCBHighRdy 指向要恢復任務的OS_TCB
;
;          2) The stack frame of the task to suspend looks as follows:
;要掛起任務的堆棧結構如下:
;             OSTCBCur->OSTCBStkPtr ------>  DS                              (Low memory)
;                                            ES
;                                            DI
;                                            SI
;                                            BP
;                                            SP
;                                            BX
;                                            DX
;                                            CX
;                                            AX
;                                            OFFSET  of task code address
;                                            SEGMENT of task code address
;                                            Flags to load in PSW            (High memory)
;
;          3) The stack frame of the task to resume looks as follows:
;要恢復任務的堆棧結構如下:
;             OSTCBHighRdy->OSTCBStkPtr --> DS                               (Low memory)
;                                           ES
;                                           DI
;                                           SI
;                                           BP
;                                           SP

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆免费看片| 国产成人超碰人人澡人人澡| av亚洲精华国产精华| 日韩视频一区二区三区在线播放 | 99久久99久久精品免费看蜜桃| 在线播放91灌醉迷j高跟美女 | 91麻豆精品国产91久久久久久 | 日韩女优电影在线观看| 一区二区三区精品久久久| 国产乱码精品一区二区三区忘忧草 | 日韩va欧美va亚洲va久久| 99视频精品全部免费在线| 久久奇米777| 蜜臀国产一区二区三区在线播放| 在线观看亚洲精品| 国产精品污www在线观看| 久久99国产精品尤物| 欧美一区二区久久| 午夜精品123| 欧美人体做爰大胆视频| 亚洲一区二区三区四区五区黄| av网站免费线看精品| 中日韩免费视频中文字幕| 国产精品99久久久| 久久一区二区三区国产精品| 裸体在线国模精品偷拍| 91精品国产91久久久久久一区二区 | 国产在线精品免费| 欧美不卡在线视频| 蜜桃91丨九色丨蝌蚪91桃色| 91精品国产丝袜白色高跟鞋| 午夜精品一区二区三区电影天堂| 欧美三级三级三级爽爽爽| 亚洲一区日韩精品中文字幕| 色综合久久六月婷婷中文字幕| 专区另类欧美日韩| 色中色一区二区| 一区二区三区在线高清| 在线视频欧美区| 亚洲午夜激情av| 欧美日韩一卡二卡三卡| 亚洲.国产.中文慕字在线| 在线播放视频一区| 久久国产三级精品| 欧美xxx久久| 国产一区亚洲一区| 国产日韩高清在线| av午夜精品一区二区三区| 亚洲欧美国产毛片在线| 91国产视频在线观看| 亚洲成人免费影院| 日韩一区二区不卡| 国产精品综合久久| 国产精品欧美精品| 色av成人天堂桃色av| 亚洲综合精品久久| 7777精品伊人久久久大香线蕉经典版下载 | 日韩在线一区二区| 精品国产伦一区二区三区观看方式 | 久久久久久综合| 成人免费av在线| 亚洲女爱视频在线| 欧美日韩三级一区| 久久国内精品自在自线400部| 久久蜜桃一区二区| 99精品偷自拍| 亚洲6080在线| 久久蜜桃一区二区| 91农村精品一区二区在线| 香蕉av福利精品导航| 精品少妇一区二区三区免费观看| 国产91对白在线观看九色| 中文字幕中文字幕一区| 欧美人伦禁忌dvd放荡欲情| 久久激情五月激情| 亚洲欧洲国产日韩| 69av一区二区三区| 国产乱国产乱300精品| 亚洲精品成人a在线观看| 欧美日韩成人综合| 国产成人在线视频播放| 亚洲最新视频在线播放| 日韩一区二区麻豆国产| 成人激情开心网| 婷婷久久综合九色国产成人| 久久精品视频一区二区| 在线亚洲一区二区| 国内久久精品视频| 亚洲乱码精品一二三四区日韩在线| 欧美一区欧美二区| av男人天堂一区| 亚洲高清一区二区三区| 国产欧美中文在线| 欧美精选在线播放| 99这里只有久久精品视频| 奇米精品一区二区三区在线观看一| 国产精品天美传媒沈樵| 中文字幕一区二区三区在线不卡| 欧美片网站yy| kk眼镜猥琐国模调教系列一区二区| 日韩中文字幕亚洲一区二区va在线| 国产精品日韩成人| 日韩欧美国产三级| 在线免费观看视频一区| 国产精品18久久久久久久久| 亚洲动漫第一页| 中文字幕乱码久久午夜不卡| 4438x亚洲最大成人网| 91在线视频播放地址| 国产精品综合一区二区| 日韩电影在线免费观看| 亚洲美女免费在线| 国产日本欧洲亚洲| 91精品国产色综合久久不卡蜜臀| 91年精品国产| 丁香桃色午夜亚洲一区二区三区| 日日噜噜夜夜狠狠视频欧美人| 国产精品国产自产拍在线| 精品日韩在线观看| 7777精品伊人久久久大香线蕉经典版下载 | av成人免费在线观看| 国产一区二区在线影院| 麻豆精品一二三| 天天影视涩香欲综合网| 亚洲一区二区美女| 国产精品久久久久久久浪潮网站| 26uuu精品一区二区| 欧美一区二区三区在线视频| 色婷婷久久99综合精品jk白丝| 国产 日韩 欧美大片| 老司机午夜精品99久久| 日日摸夜夜添夜夜添国产精品 | 久久久一区二区| 日韩精品一区二| 日韩亚洲欧美综合| 欧美精品乱码久久久久久按摩 | 94色蜜桃网一区二区三区| 国产成人综合网站| 韩国av一区二区| 久久99国产精品麻豆| 美女网站色91| 免播放器亚洲一区| 婷婷综合五月天| 亚洲国产日产av| 亚洲国产视频一区二区| 亚洲一区中文在线| 亚洲一区二区三区视频在线| 一区二区三区在线视频播放| 亚洲天堂久久久久久久| 国产精品国产自产拍在线| 国产欧美日产一区| 国产精品美女久久久久aⅴ | 国产日产欧美精品一区二区三区| 久久综合久久综合九色| 精品国免费一区二区三区| 日韩精品中文字幕在线不卡尤物| 91精品婷婷国产综合久久性色| 7777精品久久久大香线蕉| 欧美性一二三区| 欧美喷水一区二区| 欧美一区在线视频| 精品粉嫩超白一线天av| 精品国产1区二区| 国产亚洲短视频| 中文字幕日本乱码精品影院| 亚洲美女在线一区| 亚洲国产综合视频在线观看| 亚洲国产另类av| 日本vs亚洲vs韩国一区三区二区 | 亚洲一区二区三区小说| 午夜精品久久久久影视| 美国三级日本三级久久99| 国产一区91精品张津瑜| 成人美女在线视频| 色菇凉天天综合网| 这里只有精品电影| 精品av久久707| 国产三级一区二区| 亚洲丝袜美腿综合| 亚洲福利视频三区| 久久成人免费电影| 成人精品免费网站| 欧美色区777第一页| 日韩精品一区二区三区在线播放| 国产日韩综合av| 亚洲老妇xxxxxx| 蜜桃av一区二区| 国产91精品露脸国语对白| 色伊人久久综合中文字幕| 欧美电影一区二区| 久久久久久久久一| 自拍偷拍亚洲激情| 日韩国产精品大片| 国产传媒久久文化传媒| 成人av电影免费观看| 欧美性猛交xxxxxx富婆| 欧美v亚洲v综合ⅴ国产v| 国产精品久久久久桃色tv| 婷婷国产v国产偷v亚洲高清| 国产传媒一区在线|