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

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

?? os_cpu_a.asm

?? ucos操作系統(tǒng)的完整的中文注釋
?? ASM
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
;                                           BX
;                                           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
;調(diào)用用戶定義的task switch hook
            MOV    AX, SEG _OSTCBCur                ; Reload DS in case it was altered
            MOV    DS, AX                           ; 
;如果DS改變的話,就重裝DS
            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                               ; 中斷已經(jīng)將CPU寄存器保存進(jìn)棧
            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)  
;                                                             取FPU寄存器
;*********************************************************************************************************

_OSFPRestore PROC   FAR
; SP和BP為指針寄存器,把整型寄存器的值保存到當(dāng)前的任務(wù)堆棧中。
             PUSH   BP                              ; Save work registers
             MOV    BP,SP
             PUSH   ES                              
             PUSH   BX
;放在ES:BX中的指針作為自變量傳給OSFPRestore().
             LES    BX, DWORD PTR [BP+6]            ; Point to 'pblk'
;LES是地址傳送指令,將源地址傳送到ES寄存器
             FRSTOR ES:[BX]                         ; Restore FPU context
;執(zhí)行浮點(diǎn)單元指令。
             POP    BX                              ; Restore work registers
             POP    ES;恢復(fù)臨時(shí)寄存器
             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)  
;                                                             保存FPU寄存器
;*********************************************************************************************************

_OSFPSave    PROC   FAR
;
             PUSH   BP                              ; Save work registers
             MOV    BP,SP
             PUSH   ES                              
             PUSH   BX
;
             LES    BX, DWORD PTR [BP+6]            ; Point to 'pblk'
;LES是地址傳送指令,將源地址傳送到ES寄存器
             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              ;保存CPU寄存器內(nèi)容
            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 ;如果不等于一,跳到 _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
;11個(gè)時(shí)鐘節(jié)拍,跳進(jìn)DOS
            MOV    BYTE PTR DS:_OSTickDOSCtr, 11
            INT    081H                             ; Chain into DOS's tick ISR
            ;跳到DOS的節(jié)拍中斷
            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調(diào)用時(shí)鐘節(jié)拍處理函數(shù)
;
            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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
看片网站欧美日韩| 亚洲天天做日日做天天谢日日欢 | 国内一区二区视频| 欧美一级久久久| 久久精品国产99久久6| 精品国产123| av不卡免费电影| 亚洲国产一区在线观看| 日韩欧美在线影院| 国产成人综合精品三级| 中文字幕在线视频一区| 在线观看国产日韩| 日本强好片久久久久久aaa| 成人app网站| 午夜不卡av在线| 26uuu久久天堂性欧美| www.日本不卡| 丝袜诱惑制服诱惑色一区在线观看| 欧美一区二区三区在线看| 国产精品系列在线观看| 亚洲黄色片在线观看| 欧美一区二区三区在线看| 成人性生交大合| 亚洲18女电影在线观看| 精品粉嫩aⅴ一区二区三区四区| 国产成人精品免费在线| 亚洲综合成人在线| 欧美精品一区二区蜜臀亚洲| 99热精品一区二区| 秋霞成人午夜伦在线观看| 国产欧美一区二区精品久导航 | 久久久亚洲精品石原莉奈| 成人av网在线| 日韩av在线免费观看不卡| 国产亚洲成年网址在线观看| 欧美综合亚洲图片综合区| 国产精品18久久久| 日韩和欧美一区二区三区| 久久精品免费在线观看| 欧美伦理视频网站| 菠萝蜜视频在线观看一区| 日韩国产欧美视频| 亚洲人成精品久久久久| 欧美精品一区二| 欧美日韩亚洲国产综合| 国产sm精品调教视频网站| 爽好多水快深点欧美视频| 中文欧美字幕免费| 2024国产精品视频| 69p69国产精品| 一本一本大道香蕉久在线精品| 国产在线国偷精品免费看| 亚洲成人免费观看| 亚洲你懂的在线视频| 国产日产欧美一区二区视频| 欧美一级免费大片| 欧美亚洲一区二区在线| 成人av手机在线观看| 国产jizzjizz一区二区| 精品一区二区久久| 成人黄页在线观看| 激情五月婷婷综合网| 日韩主播视频在线| 亚洲网友自拍偷拍| 亚洲免费观看高清完整版在线 | 91精品国产丝袜白色高跟鞋| 欧洲精品在线观看| 91亚洲永久精品| av一区二区三区黑人| www.性欧美| 成人精品一区二区三区四区| 国产不卡高清在线观看视频| 国产剧情一区二区| 国产精品一区在线观看你懂的| 免费成人av资源网| 久久66热偷产精品| 精品一区二区免费看| 韩国三级电影一区二区| 久久国产精品99久久人人澡| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲成a人v欧美综合天堂| 亚洲一区二区三区在线看| 亚洲午夜私人影院| 午夜国产精品影院在线观看| 日本在线观看不卡视频| 看片的网站亚洲| 国产一区在线观看视频| 丰满放荡岳乱妇91ww| 不卡视频一二三四| 色婷婷av一区二区三区gif| 91久久精品一区二区三| 欧美日韩精品高清| 日韩免费一区二区| 国产日韩欧美高清在线| 国产精品久久久久影院| 亚洲精品日韩专区silk| 亚洲一区在线电影| 免费看日韩精品| 国产精品正在播放| 99re视频精品| 欧美一区二区三区喷汁尤物| 久久色中文字幕| 亚洲日本在线a| 奇米综合一区二区三区精品视频| 经典三级视频一区| 成人午夜免费av| 欧美色倩网站大全免费| 精品国产三级a在线观看| 欧美国产欧美综合| 亚洲成人激情av| 国产成人无遮挡在线视频| 成人激情动漫在线观看| 欧美年轻男男videosbes| 2023国产精品| 亚洲免费观看在线视频| 久久精品国产精品亚洲精品| 大白屁股一区二区视频| 欧美日本国产视频| 国产日产欧美一区| 亚洲成人av资源| 波多野结衣欧美| 日韩小视频在线观看专区| 国产精品高清亚洲| 蜜桃av一区二区三区电影| av电影在线观看完整版一区二区| 欧美精品第一页| 中文字幕一区二区在线观看| 日韩精品一区第一页| 99精品桃花视频在线观看| 欧美一区二区在线视频| 亚洲另类在线制服丝袜| 国产一区91精品张津瑜| 欧美裸体一区二区三区| 亚洲欧美色图小说| 黄色日韩三级电影| 久久综合九色综合久久久精品综合 | 亚洲最色的网站| 国产精品一区二区久久不卡 | 无码av中文一区二区三区桃花岛| 国产91精品精华液一区二区三区 | 中文字幕精品一区二区精品绿巨人| 视频一区视频二区中文字幕| 99久久精品免费观看| 精品国产乱码久久久久久影片| 亚洲国产日日夜夜| 色一区在线观看| 国产精品伦理一区二区| 国产在线播放一区| 日韩无一区二区| 午夜精品久久久久久久 | 免费观看成人鲁鲁鲁鲁鲁视频| av毛片久久久久**hd| 国产日本亚洲高清| 久久99精品国产.久久久久久| 欧美日韩在线精品一区二区三区激情 | 精品在线播放免费| 欧美一级黄色录像| 日本不卡视频在线| 欧美日韩国产另类不卡| 一区二区三区美女| 色噜噜狠狠成人网p站| 亚洲欧洲国产日本综合| 成人免费的视频| 中文字幕国产精品一区二区| 丁香婷婷综合网| 日本一二三不卡| 99免费精品在线观看| 日韩美女视频一区| 91片黄在线观看| 亚洲影院在线观看| 在线电影院国产精品| 水野朝阳av一区二区三区| 7777女厕盗摄久久久| 日本v片在线高清不卡在线观看| 欧美日韩一级二级| 日韩**一区毛片| 久久新电视剧免费观看| 国产成人综合亚洲91猫咪| 国产精品网站导航| 97aⅴ精品视频一二三区| 亚洲精品中文在线影院| 欧美性视频一区二区三区| 亚洲成在线观看| 日韩女优av电影| 粉嫩13p一区二区三区| 综合分类小说区另类春色亚洲小说欧美| 粉嫩aⅴ一区二区三区四区五区| 亚洲欧美一区二区三区极速播放| 色婷婷久久久久swag精品| 亚洲最大成人综合| 欧美丰满美乳xxx高潮www| 老司机免费视频一区二区| 久久丝袜美腿综合| 91性感美女视频| 亚洲成av人影院| 久久久久久久电影| 在线视频欧美精品| 日本伊人色综合网| 国产精品久久久久久久久免费相片 | 成人精品一区二区三区四区 |