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

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

?? os_cpu_a.asm

?? 《嵌入式實時操作系統μC/OS-Ⅱ》的源碼
?? 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
            PUSH   ES                               ; 
            PUSH   DS                               ; 
;
            MOV    AX, SEG _OSTCBCur                ; Reload DS in case it was altered
            MOV    DS, AX                           ; 
;
            LES    BX, DWORD PTR DS:_OSTCBCur       ; OSTCBCur->OSTCBStkPtr = SS:SP
            MOV    ES:[BX+2], SS                    ; 
            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    ; 
            MOV    WORD PTR DS:_OSTCBCur+2, AX      ; 
            MOV    WORD PTR DS:_OSTCBCur, DX        ; 
;
            MOV    AL, BYTE PTR DS:_OSPrioHighRdy   ; OSPrioCur = OSPrioHighRdy
            MOV    BYTE PTR DS:_OSPrioCur, AL       ;     
;
            LES    BX, DWORD PTR DS:_OSTCBHighRdy   ; SS:SP = OSTCBHighRdy->OSTCBStkPtr
            MOV    SS, ES:[BX+2]                    ; 
            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
;             OSTCBHighRdy points to the OS_TCB of the task to resume
;
;          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
;                                           BX

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臂av日日欢夜夜爽一区| 色哟哟一区二区三区| 五月天一区二区| 亚洲乱码国产乱码精品精小说| 久久尤物电影视频在线观看| 欧美日韩一区二区三区四区| 国产精品久久久久aaaa樱花 | 亚洲视频在线观看一区| 欧美激情在线观看视频免费| 国产三级一区二区| 中文字幕在线观看不卡| 国产精品盗摄一区二区三区| 亚洲免费电影在线| 日韩制服丝袜先锋影音| 激情五月婷婷综合网| 国产91精品精华液一区二区三区| 色天天综合色天天久久| 欧美卡1卡2卡| 久久免费美女视频| 自拍视频在线观看一区二区| 亚洲第一在线综合网站| 伦理电影国产精品| 亚洲一区在线观看免费| 91美女精品福利| 欧美性做爰猛烈叫床潮| 欧美一区二区三区在| 久久久美女毛片| 自拍av一区二区三区| 日韩高清国产一区在线| 国产麻豆精品久久一二三| 97精品国产露脸对白| 在线综合视频播放| 国产日韩av一区| 亚洲不卡在线观看| 国产99一区视频免费| 欧美喷水一区二区| 久久久精品蜜桃| 亚洲午夜久久久久久久久电影院| 激情深爱一区二区| 在线观看亚洲a| 久久久久久9999| 午夜久久电影网| 99久久伊人精品| 亚洲精品一区二区在线观看| 日本午夜精品一区二区三区电影 | 91精品久久久久久久99蜜桃| 国产日韩在线不卡| 日产精品久久久久久久性色| 99久久久国产精品| 精品剧情在线观看| 亚洲一区二区精品视频| 成人涩涩免费视频| 精品国精品国产尤物美女| 亚洲综合一区二区三区| 夫妻av一区二区| 日韩精品一区二| 香蕉成人啪国产精品视频综合网| 99久久婷婷国产精品综合| 国产亚洲美州欧州综合国| 日韩影院免费视频| 欧美又粗又大又爽| 亚洲精选免费视频| 成人综合在线视频| 国产日韩av一区| 国产一级精品在线| 精品免费视频一区二区| 蜜臀久久久久久久| 欧美一级高清片| 日韩精品一卡二卡三卡四卡无卡| 在线日韩一区二区| 一区二区三区精密机械公司| 99精品视频在线播放观看| 国产日产精品1区| 丁香婷婷综合五月| 国产精品国产三级国产有无不卡 | 91香蕉视频黄| 综合欧美一区二区三区| 粉嫩高潮美女一区二区三区| 欧美国产精品一区| a级高清视频欧美日韩| 国产精品美女久久久久av爽李琼| 国产98色在线|日韩| 国产精品视频免费看| 成人免费毛片嘿嘿连载视频| 国产精品国产精品国产专区不片| av高清不卡在线| 亚洲精品国产无套在线观| 欧美日韩中文精品| 毛片av一区二区三区| 欧美精品一区二区三区四区| 成人午夜在线视频| 一区二区日韩av| 久久精品欧美一区二区三区麻豆| 国产一区二区按摩在线观看| 国产精品免费久久久久| 欧美午夜视频网站| 久久er99热精品一区二区| 国产日韩精品久久久| 色老汉一区二区三区| 日韩专区在线视频| 日本一区二区三区dvd视频在线| 91视频.com| 美女www一区二区| 国产精品污www在线观看| 色欧美日韩亚洲| 久久丁香综合五月国产三级网站 | 中文字幕在线一区二区三区| 欧美色综合久久| 国产主播一区二区三区| 亚洲精品一卡二卡| 日韩精品中文字幕一区| 色中色一区二区| 国产在线不卡视频| 亚洲福利视频导航| 久久精品水蜜桃av综合天堂| 在线观看日韩电影| 国产成人精品免费| 99re亚洲国产精品| 奇米综合一区二区三区精品视频| 国产精品视频一二| 欧美成人vr18sexvr| 日本久久一区二区| 国产成人综合在线播放| 亚洲福利一区二区| 亚洲欧洲精品天堂一级 | 2023国产精品| 欧美老年两性高潮| 色av成人天堂桃色av| 国产成人av在线影院| 免费的成人av| 午夜久久久影院| 亚洲美女屁股眼交3| 国产精品天干天干在线综合| 日韩西西人体444www| 欧美日韩一区二区在线观看| 成人教育av在线| 国产一区二区毛片| 久久不见久久见免费视频7| 亚洲a一区二区| 一区二区三区电影在线播| 国产精品美女视频| 欧美激情一区二区三区全黄 | 国产欧美一区二区精品性| 欧美一区二区三区免费视频| 欧美三级午夜理伦三级中视频| 97se狠狠狠综合亚洲狠狠| 成人深夜视频在线观看| 国产成人综合亚洲网站| 国产米奇在线777精品观看| 青青国产91久久久久久| 日韩成人一区二区三区在线观看| 一区二区三区日韩| 悠悠色在线精品| 一区二区在线观看不卡| 亚洲伦理在线精品| 亚洲在线成人精品| 五月综合激情婷婷六月色窝| 91在线免费看| 欧美区在线观看| 91在线视频观看| 亚洲一区二区三区四区不卡| 亚洲人成在线观看一区二区| 国产精品久久久久久久久搜平片 | 欧美mv和日韩mv的网站| 欧美mv和日韩mv的网站| 国产欧美日韩中文久久| 国产精品久久久久久久岛一牛影视| 国产精品久久久久久亚洲毛片 | 免费精品视频最新在线| 美国毛片一区二区| 国产精品中文欧美| a在线欧美一区| 欧美性高清videossexo| 欧美高清dvd| 国产无人区一区二区三区| 亚洲三级视频在线观看| 亚洲国产日日夜夜| 韩日精品视频一区| 91网站最新网址| 欧美一区二区视频免费观看| 久久久久久久久免费| 亚洲男同1069视频| 麻豆免费精品视频| 99久久er热在这里只有精品15| 欧美主播一区二区三区| 精品国产免费久久| 一区二区三区中文在线| 国产一区二区精品久久99| 在线中文字幕不卡| 欧美精品一区二区三区四区| 亚洲最大成人综合| 九九热在线视频观看这里只有精品| 成人午夜激情在线| 欧美精选在线播放| 中文字幕在线不卡视频| 日韩电影在线看| 在线亚洲免费视频| 国产丝袜在线精品| 日韩高清在线一区| 色综合久久中文综合久久97|