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

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

?? os_cpu_a.asm

?? 嵌入式操作系統UCOS在DSP芯片TI的2407A上的移植
?? ASM
字號:
;********************************************************************************************************
;                                               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
;********************************************************************************************************
          ;  .include "lf2407a.h"
;	        .include "F2407REGS.H"
            .global _OSTickISR
            .global _OSStartHighRdy
            .global _OSCtxSw
            .global _OSIntCtxSw 
            .global _OSIntEnter

            .global  _OSIntExit
            .global  _OSTimeTick
            .global  _OSTaskSwHook
            
            .global  _OSIntNesting
            .global  _OSTickDOSCtr
            .global  _OSPrioHighRdy
            .global  _OSPrioCur
            .global  _OSRunning
            .global  _OSTCBCur
            .global  _OSTCBHighRdy
            .global	 I$$SAVE
            .global	 I$$REST  
            .global	 PVECTORS  

                         ; /*$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:
                 call _OSTaskSwHook,ar1
				 ldpk _OSRunning
				 splk #1,_OSRunning
				 ldpk _OSTCBHighRdy
				 nop
				 nop
				 lar AR1,*
				 nop
				 nop
				 b I$$REST
            
;*********************************************************************************************************
;                                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:

    call I$$SAVE	

_OSCtxSw_0:
	call _OSTaskSwHook
	ldpk _OSPrioCur
	bldd #_OSPrioHighRdy,_OSPrioCur
	lar AR2,#_OSTCBCur
	mar *,AR2
	lar AR0,*,AR0
	sar AR1,*
	lar AR0,#_OSTCBHighRdy
	lar AR0,*
	lar AR1,*,AR2
	sar AR0,*,AR1
	b I$$REST

_OSIntCtxSw:
			POP 			;彈出調用_OSIntCtxSw時的返回地址
			SBRK	3	    ;調整堆棧指針,清除調用OSIntExit時保存的返回地址和幀指針
			B	_OSCtxSw_0  ;執行與OSCtxSw函數一樣的代碼
;*********************************************************************************************************
;                                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
;                                           DX
;                                           CX
;                                           AX
;                                           OFFSET  of task code address
;                                           SEGMENT of task code address
;                                           Flags to load in PSW             (High memory)
;*********************************************************************************************************


;*********************************************************************************************************
;                                           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)  
;*********************************************************************************************************


;*********************************************************************************************************
;                                           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)  
;*********************************************************************************************************


;*********************************************************************************************************
;                                            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:
;           call I$$SAVE
;
;		   ldpk _OSIntNesting
;		   lacc _OSIntNesting
;		   add #1
;		   sacl _OSIntNesting
;		   ldp #232
;		   splk #0001h,_EVIFRB
;		   clrc INTM
;		   call _OSTimeTick
;		   call _OSIntExit
;;		   
;		   b I$$REST
;
            







 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜成aⅴ人片| 国产成人精品亚洲777人妖| 青椒成人免费视频| 成人avav在线| 亚洲一区二区影院| 国产中文字幕精品| 欧美日韩国产另类不卡| 国产女同性恋一区二区| 日韩成人免费电影| 在线视频你懂得一区| 国产欧美中文在线| 麻豆精品蜜桃视频网站| 欧美三级日韩三级| 国产精品电影一区二区| 国产激情一区二区三区| 日韩无一区二区| 日日骚欧美日韩| 91福利资源站| 一区二区三区日韩欧美精品 | 亚洲国产精品综合小说图片区| 国产成人在线看| 精品日韩在线一区| 日本aⅴ精品一区二区三区| 欧美吞精做爰啪啪高潮| 亚洲欧美视频在线观看视频| 成人少妇影院yyyy| 国产精品国产三级国产| 丁香啪啪综合成人亚洲小说| 日韩一区二区三区高清免费看看| 亚洲一区二区三区四区不卡| 91在线视频网址| 亚洲人午夜精品天堂一二香蕉| 国产成+人+日韩+欧美+亚洲| 国产欧美日韩激情| 粉嫩高潮美女一区二区三区| 国产精品无圣光一区二区| 成人毛片在线观看| 亚洲欧洲av一区二区三区久久| 91在线看国产| 亚洲综合自拍偷拍| 欧美少妇xxx| 日韩精品高清不卡| 日韩精品综合一本久道在线视频| 九九国产精品视频| 久久精品亚洲麻豆av一区二区| 国产剧情一区在线| 综合久久一区二区三区| 欧美亚一区二区| 日产国产欧美视频一区精品| 日韩欧美在线网站| 国产99久久久国产精品免费看| 日本一区二区免费在线观看视频| 91性感美女视频| 婷婷成人综合网| 亚洲精品一区二区三区福利| 国产mv日韩mv欧美| 亚洲久草在线视频| 日韩精品一区二| caoporen国产精品视频| 亚洲福中文字幕伊人影院| 欧美一区二区美女| 风间由美性色一区二区三区| 亚洲九九爱视频| 精品毛片乱码1区2区3区| 岛国av在线一区| 亚洲国产精品一区二区www| 日韩视频一区二区三区| 成人性生交大片| 日韩精品一卡二卡三卡四卡无卡| 久久蜜桃av一区精品变态类天堂| 一本色道久久加勒比精品| 日韩成人免费电影| 亚洲欧美日韩系列| 精品国产乱码久久久久久久久 | 久久久久久亚洲综合| 色婷婷精品大在线视频| 久久国产欧美日韩精品| 亚洲精品高清在线观看| 精品对白一区国产伦| 色狠狠色噜噜噜综合网| 国内精品在线播放| 亚洲1区2区3区4区| 国产女人aaa级久久久级 | 色狠狠色狠狠综合| 国产电影一区在线| 日本不卡免费在线视频| 亚洲欧美国产三级| 国产欧美日产一区| 日韩精品一区二区三区在线观看 | 亚洲一区二区三区小说| 国产午夜精品理论片a级大结局 | 欧美极品少妇xxxxⅹ高跟鞋| 欧美理论电影在线| 91麻豆国产精品久久| 国产精品一卡二卡| 男男gaygay亚洲| 亚洲一区二区欧美日韩| 亚洲欧洲在线观看av| 久久新电视剧免费观看| 精品捆绑美女sm三区| 3d成人h动漫网站入口| 在线观看av一区| 色偷偷久久人人79超碰人人澡| 国产91精品久久久久久久网曝门| 久久精品国产精品青草| 免费观看日韩av| 视频一区二区欧美| 日韩国产在线一| 日本美女一区二区三区视频| 日日骚欧美日韩| 日韩黄色片在线观看| 三级欧美韩日大片在线看| 日日嗨av一区二区三区四区| 亚洲福利一二三区| 丝袜美腿亚洲色图| 男人的j进女人的j一区| 免费一级片91| 国产综合久久久久久鬼色| 精品一区二区三区在线播放| 精品亚洲免费视频| 国产精品88av| 成人成人成人在线视频| 91免费精品国自产拍在线不卡| av网站免费线看精品| 色综合天天综合网天天狠天天| 在线免费不卡电影| 91黄色激情网站| 欧美日韩激情一区二区| 欧美一级国产精品| 26uuu亚洲| 国产精品国产a级| 亚洲卡通动漫在线| 日韩**一区毛片| 国产精品亚洲专一区二区三区| 国产精品99久久久| 色av一区二区| 日韩写真欧美这视频| 久久久久久久久蜜桃| 日韩一区日韩二区| 午夜精品在线视频一区| 国产一区高清在线| 波多野结衣中文字幕一区 | av一区二区三区黑人| 欧美日韩欧美一区二区| 日韩亚洲欧美综合| 国产精品免费网站在线观看| 亚洲男同性视频| 秋霞成人午夜伦在线观看| 国产成人免费9x9x人网站视频| 日本高清不卡视频| 欧美www视频| 亚洲欧美一区二区久久| 男人的j进女人的j一区| 丁香网亚洲国际| 欧美人妇做爰xxxⅹ性高电影| 久久久久久毛片| 亚洲第一二三四区| 高清免费成人av| 日韩一卡二卡三卡| 亚洲色图视频免费播放| 麻豆国产欧美一区二区三区| 91在线视频播放地址| 777a∨成人精品桃花网| 国产日韩亚洲欧美综合| 婷婷开心激情综合| 99re免费视频精品全部| 欧美mv日韩mv国产网站| 伊人开心综合网| 国产成人免费视频网站| 日韩视频在线永久播放| 一区二区三区电影在线播| 国产91丝袜在线18| 欧美xxxx在线观看| 水蜜桃久久夜色精品一区的特点| 成人免费视频caoporn| 欧美大片在线观看一区| 伊人色综合久久天天| 波多野结衣亚洲| 久久日一线二线三线suv| 日韩激情一二三区| 欧美日韩中文另类| 亚洲女性喷水在线观看一区| 国产一区二区三区不卡在线观看| 欧美情侣在线播放| 一区二区久久久久久| 9i在线看片成人免费| 日本一区二区三区在线不卡| 久久精品国产99国产精品| 欧美一区二区免费视频| 无码av中文一区二区三区桃花岛| 色一情一伦一子一伦一区| 国产精品第四页| 成人av网站在线观看| 国产欧美日产一区| 成人avav影音| 1000部国产精品成人观看| 成人一区二区在线观看| 中文字幕av一区二区三区高| 国产激情一区二区三区四区 | 欧美大片一区二区|