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

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

?? os_cpu_a.asm

?? uCOS在PC機(jī)(至少386上)的4個(gè)范例
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;                                           DX
;                                           CX
;                                           AX
;                                           OFFSET  of task code address
;                                           SEGMENT of task code address
;                                           Flags to load in PSW             (High memory)
;*********************************************************************************************************

_OSIntCtxSw PROC   FAR
;
            CALL   FAR PTR _OSTaskSwHook            ; Call user defined task switch hook
;
            MOV    AX, SEG _OSTCBCur                ; Reload DS in case it was altered
            MOV    DS, AX                           ; 
;
            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
;
_OSIntCtxSw ENDP

            PAGE                                    ; /*$PAGE*/
;*********************************************************************************************************
;                                           RESTORE FPU REGISTERS
;                                       void OSFPRestore(void *pblk)
;
; Description : This function is called to restore the contents of the FPU registers during a context
;               switch.  It is assumed that a pointer to a storage area for the FPU registers is placed
;               in the task's TCB (i.e. .OSTCBExtPtr).
; Arguments   : pblk    is passed to this function when called.
; Note(s)     : 1) The stack frame upon entry looks as follows:
;
;                      SP + 0 -> OFFSET  of caller             (Low memory)
;                         + 2    SEGMENT of caller
;                         + 4    OFFSET  of pblk
;                         + 6    SEGMENT of pblk               (High memory)  
;*********************************************************************************************************

_OSFPRestore PROC   FAR
;
             PUSH   BP                              ; Save work registers
             MOV    BP,SP
             PUSH   ES                              
             PUSH   BX
;
             LES    BX, DWORD PTR [BP+6]            ; Point to 'pblk'
;
             FRSTOR ES:[BX]                         ; Restore FPU context
;
             POP    BX                              ; Restore work registers
             POP    ES
             POP    BP
;
             RET                                    ; Return to caller
;
_OSFPRestore ENDP

             PAGE                                   ; /*$PAGE*/
;*********************************************************************************************************
;                                           SAVE FPU REGISTERS
;                                        void OSFPSave(void *pblk)
;
; Description : This function is called to save the contents of the FPU registers during a context
;               switch.  It is assumed that a pointer to a storage area for the FPU registers is placed
;               in the task's TCB (i.e. .OSTCBExtPtr).
; Arguments   : pblk    is passed to this function when called.
; Note(s)     : 1) The stack frame upon entry looks as follows:
;
;                      SP + 0 -> OFFSET  of caller             (Low memory)
;                         + 2    SEGMENT of caller
;                         + 4    OFFSET  of pblk
;                         + 6    SEGMENT of pblk               (High memory)  
;*********************************************************************************************************

_OSFPSave    PROC   FAR
;
             PUSH   BP                              ; Save work registers
             MOV    BP,SP
             PUSH   ES                              
             PUSH   BX
;
             LES    BX, DWORD PTR [BP+6]            ; Point to 'pblk'
;
             FSAVE  ES:[BX]                         ; Save FPU context
;
             POP    BX                              ; Restore work registers
             POP    ES
             POP    BP
;
             RET                                    ; Return to caller
;
_OSFPSave    ENDP

             PAGE                                   ; /*$PAGE*/
;*********************************************************************************************************
;                                            HANDLE TICK ISR
;
; Description: This function is called 199.99 times per second or, 11 times faster than the normal DOS
;              tick rate of 18.20648 Hz.  Thus every 11th time, the normal DOS tick handler is called.
;              This is called chaining.  10 times out of 11, however, the interrupt controller on the PC
;              must be cleared to allow for the next interrupt.
;
; Arguments  : none
;
; Returns    : none
;
; Note(s)    : The following C-like pseudo-code describe the operation being performed in the code below.
;
;              Save all registers on the current task's stack;
;              OSIntNesting++;
;              if (OSIntNesting == 1) {
;                  OSTCBCur->OSTCBStkPtr = SS:SP
;              }
;              OSTickDOSCtr--;
;              if (OSTickDOSCtr == 0) {
;                  OSTickDOSCtr = 11;
;                  INT 81H;               Chain into DOS every 54.925 mS 
;                                         (Interrupt will be cleared by DOS)
;              } else {
;                  Send EOI to PIC;       Clear tick interrupt by sending an End-Of-Interrupt to the 8259
;                                         PIC (Priority Interrupt Controller)
;              }
;              OSTimeTick();              Notify uC/OS-II that a tick has occured       
;              OSIntExit();               Notify uC/OS-II about end of ISR
;              Restore all registers that were save on the current task's stack;
;              Return from Interrupt;
;*********************************************************************************************************
;
_OSTickISR  PROC   FAR
;
            PUSHA                                   ; Save interrupted task's context
            PUSH   ES
            PUSH   DS
;
            MOV    AX, SEG(_OSIntNesting)           ; Reload DS 
            MOV    DS, AX
            INC    BYTE PTR DS:_OSIntNesting        ; Notify uC/OS-II of ISR
;
            CMP    BYTE PTR DS:_OSIntNesting, 1	    ; if (OSIntNesting == 1)
            JNE    SHORT _OSTickISR1             
            MOV    AX, SEG(_OSTCBCur)               ;     Reload DS
            MOV    DS, AX
            LES    BX, DWORD PTR DS:_OSTCBCur       ;     OSTCBCur->OSTCBStkPtr = SS:SP
            MOV    ES:[BX+2], SS                    ;
            MOV    ES:[BX+0], SP                    ;
;
_OSTickISR1:
            MOV    AX, SEG(_OSTickDOSCtr)           ; Reload DS
            MOV    DS, AX
            DEC    BYTE PTR DS:_OSTickDOSCtr
            CMP    BYTE PTR DS:_OSTickDOSCtr, 0
            JNE    SHORT _OSTickISR2                ; Every 11 ticks (~199.99 Hz), chain into DOS
;
            MOV    BYTE PTR DS:_OSTickDOSCtr, 11
            INT    081H                             ; Chain into DOS's tick ISR
            JMP    SHORT _OSTickISR3

_OSTickISR2:
            MOV    AL, 20H                          ; Move EOI code into AL.
            MOV    DX, 20H                          ; Address of 8259 PIC in DX.
            OUT    DX, AL                           ; Send EOI to PIC if not processing DOS timer.
;
_OSTickISR3:
            CALL   FAR PTR _OSTimeTick              ; Process system tick
;
            CALL   FAR PTR _OSIntExit               ; Notify uC/OS-II of end of ISR
;
            POP    DS                               ; Restore interrupted task's context
            POP    ES
            POPA
;
            IRET                                    ; Return to interrupted task
;
_OSTickISR  ENDP
;
            END

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99久久久欧美国产| 亚洲成人在线免费| 色狠狠色狠狠综合| 亚洲午夜av在线| 成人午夜在线免费| 亚洲一区二区三区美女| 精品三级在线看| 色婷婷久久99综合精品jk白丝| 久久www免费人成看片高清| 久久久久亚洲蜜桃| 欧美私模裸体表演在线观看| 久久国产精品一区二区| 亚洲精品videosex极品| 精品伦理精品一区| 欧美伊人久久久久久午夜久久久久| 欧美大片一区二区三区| 九一久久久久久| 一区二区三区影院| 久久中文字幕电影| 欧美午夜一区二区三区| 国产成人一区二区精品非洲| 丝袜诱惑亚洲看片 | 国产美女视频91| 国产精品国产自产拍高清av| 欧美人牲a欧美精品| 国产成人亚洲综合a∨猫咪| 水野朝阳av一区二区三区| 久久精品人人做人人爽人人| 日本久久一区二区| 国产成人av影院| 欧美96一区二区免费视频| 亚洲伦在线观看| 国产精品天干天干在线综合| 日韩电影在线观看电影| 亚洲女女做受ⅹxx高潮| 成人免费一区二区三区视频| 中文字幕制服丝袜成人av| 国产婷婷色一区二区三区在线| 99精品视频一区二区三区| 国产.欧美.日韩| 国产91色综合久久免费分享| 国产精品亚洲午夜一区二区三区| 综合网在线视频| 17c精品麻豆一区二区免费| 国产精品视频线看| 中文av一区特黄| 中文字幕中文字幕一区| 国产精品久久久久桃色tv| 国产精品久久久久久久久晋中| 91福利资源站| 欧美日韩黄视频| 91精品国产综合久久香蕉麻豆| 狠狠色伊人亚洲综合成人| 久久99蜜桃精品| 国产成人自拍网| 播五月开心婷婷综合| 在线视频亚洲一区| 6080国产精品一区二区| 欧美成人在线直播| 久久久激情视频| 亚洲精品成人天堂一二三| 婷婷成人综合网| 韩国视频一区二区| 成人综合婷婷国产精品久久免费| 午夜电影网一区| 久久激情五月激情| av亚洲精华国产精华精| 欧美这里有精品| 日韩欧美的一区| 欧美高清在线视频| 亚洲一区二区精品久久av| 麻豆国产欧美一区二区三区| 大胆欧美人体老妇| 欧美私模裸体表演在线观看| 日韩欧美成人一区二区| 中文字幕亚洲成人| 日韩精品一二三区| 丁香一区二区三区| 欧美男同性恋视频网站| 久久久九九九九| 亚洲成人午夜影院| 成人免费va视频| 在线播放欧美女士性生活| 国产免费观看久久| 亚洲1区2区3区4区| 不卡影院免费观看| 欧美一级高清大全免费观看| 国产精品乱子久久久久| 日韩电影免费在线看| 97久久久精品综合88久久| 日韩精品一区二区三区四区视频 | 日韩女优视频免费观看| 中文字幕精品—区二区四季| 亚洲va韩国va欧美va精品 | 国产麻豆成人传媒免费观看| 欧美制服丝袜第一页| 国产免费观看久久| 免费人成在线不卡| 日本高清不卡视频| 欧美高清一级片在线观看| 久久精品国产免费看久久精品| 午夜激情一区二区| 91亚洲大成网污www| 久久精品在这里| 麻豆成人久久精品二区三区小说| 美女国产一区二区| 欧美日韩在线免费视频| 国产精品美女久久久久久久网站| 欧美激情一区二区三区四区| 麻豆91精品视频| 蜜桃视频在线观看一区| 在线观看一区日韩| 欧美一级日韩免费不卡| 亚洲一区二区三区不卡国产欧美| 亚洲精品免费播放| 成人综合婷婷国产精品久久蜜臀 | 亚洲一区二区四区蜜桃| 国产盗摄女厕一区二区三区| 日韩一区二区在线播放| 午夜欧美2019年伦理| 欧美最新大片在线看| √…a在线天堂一区| 成人一区二区三区| 久久精品一区八戒影视| 韩国一区二区三区| 精品成人一区二区三区| 日本不卡免费在线视频| 欧美电影在线免费观看| 天天影视网天天综合色在线播放| 国内精品在线播放| 欧美大胆人体bbbb| 久久精品国产第一区二区三区| 成人免费观看视频| 国产精品久久久久精k8| 成人毛片在线观看| 国产精品美女久久久久久久久久久 | 国产91丝袜在线18| 国产欧美精品日韩区二区麻豆天美| 亚洲欧美日本韩国| 99视频一区二区| 成人免费在线观看入口| 色综合色综合色综合| 亚洲免费在线播放| 欧美日韩一区视频| 日日摸夜夜添夜夜添亚洲女人| 国产91清纯白嫩初高中在线观看 | 欧美美女bb生活片| 亚洲国产综合人成综合网站| 欧美午夜精品一区二区三区| 日韩电影免费在线看| 久久综合色8888| 成人久久18免费网站麻豆 | 欧美日韩免费不卡视频一区二区三区| 日韩一卡二卡三卡四卡| 另类小说图片综合网| 久久日一线二线三线suv| 国产91高潮流白浆在线麻豆 | 91在线看国产| 亚洲乱码国产乱码精品精的特点| 精品一区二区综合| 国产精品三级电影| 在线看不卡av| 日本一不卡视频| 国产日韩av一区| 91毛片在线观看| 蜜桃视频第一区免费观看| 国产丝袜在线精品| 91黄视频在线观看| 久久99久久99小草精品免视看| 在线亚洲一区观看| 日本三级韩国三级欧美三级| 亚洲精品一线二线三线| 91在线视频观看| 免费观看在线综合| 中文字幕在线视频一区| 欧美亚洲另类激情小说| 黄色日韩三级电影| 亚洲精品视频免费观看| 欧美成人a视频| 色综合久久天天| 另类小说欧美激情| 亚洲人成在线播放网站岛国| 欧美一级生活片| 色悠悠亚洲一区二区| 精品亚洲国产成人av制服丝袜| 欧美一区二区三区思思人| 国产精品一区2区| 五月天一区二区| 国产精品麻豆视频| 日韩一区二区三免费高清| 成人激情黄色小说| 六月婷婷色综合| 亚洲一区免费在线观看| 欧美激情艳妇裸体舞| 欧美一区二区精美| 日本韩国视频一区二区| 国产精品亚洲成人| 日本色综合中文字幕| 亚洲一区二区三区免费视频| 国产精品婷婷午夜在线观看|