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

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

?? qqpack.asm

?? 使用CYAN單片機(jī)的ECOG1開發(fā)板連接SIM300C的GSM模塊開發(fā)的短信收發(fā)程序.供UART和AT指令編程者參考
?? ASM
字號(hào):
;==============================================================================
; Cyan Technology Ltd
;
; FILE
;  cstartup.asm - Assembler startup for C programs.
;
; DESCRIPTION
;  Defines C segments. Contains initial code called before C is started
;==============================================================================

                  MODULE   cstartup
                  .ALL

;
; C reserves DATA address 0 for the NULL pointer. The value H'DEAD is put in
; here so that it is easier to spot the effect of a NULL pointer during
; debugging. User memory for constants grows upwards from H'0001. The first
; address is given the equate symbol $??LO_ADDR.
;
                  .SEG     C_RESERVED1
                  ORG      0
                  dc       H'DEAD
$??LO_ADDR        EQU      $

;
; DATA addresses H'EFE0-H'EFFF are used for scratchpad RAM in interrupt mode.
; DATA addresses H'EFC0-H'EFDF are used for scratchpad RAM in user mode.
; DATA addresses H'EFB8-H'EFBF are used for register storage in interrupt mode.
; Then follows the interrupt stack, user stack and user heap.
; User memory for variables grows downwards from the end of the user stack.
; This version of cstartup only contains one area of scratchpad RAM
; which constrains users not to write re-entrant re-interruptable
; code.
; The interrupt stack must start at IY-38 to be compatible with the C compiler.
;
                  .SEG     C_RESERVED2
                  ORG      H'EFB8

$??HI_ADDR        DEQU     $
                  ds       8           ; Interrupt register storage

                  ds       32          ; User Scratchpad
IY_SCRATCH        DEQU     $

$?irq_scratchpad? DEQU     $
                  ds       32          ; Interrupt Scratchpad

;
; The registers that control the functional blocks of the eCOG1 are located
; at addresses H'FEA0 to H'FFCF. The C header file <ecog1.h> declares an
; external structure that descibes the registers. This variable is defined
; below.
;
                  .SEG     REGISTERS
                  ORG      H'FEA0
$fd:
$rg               ds       304

;
; C requires the following segments:
;     CONST  - Constants in ROM. For example:
;                 const char c = 'c' ;
;                 printf( "Hello World!" ) ;
;     VAR    - Variables in RAM. These are set to zero by the cstartup code.
;              For example:
;                 int i ;              (in file scope)
;                 static int i ;       (in function scope)
;     INIT   - Initialisd variables in RAM. For example:
;                 int i = 9 ;          (in file scope)
;                 static int i = 9 ;   (in function scope)
;     INITC  - Initialisation data for the INIT segment
;     HEAP   - The heap. Required if malloc() etc. are used.
;     STACK  - The stack. Always required.
;
; The memory allocated to each segment is defined by the value of
; $??<segment_name>_SIZE as set below. These sizes can be set manually or, if
; the appropriate line is tagged with !PACK and the -pack option is specified
; to ECOGCL, ECOGCL will write in the size actually required for the segment.
; The sizes of the STACK and HEAP segments must be set by the user.
;
$??ISTACK_SIZE    =        H'0040
$??STACK_SIZE     =        H'0100
$??HEAP_SIZE      =        H'0080

; ROM segments
$??INITC_SIZE     =        h'0002 ; !PACK
$??CONST_SIZE     =        h'0110 ; !PACK

; RAM segments
$??INIT_SIZE      =        h'0002 ; !PACK
$??VAR_SIZE       =        h'0155 ; !PACK


; -- Locate DATA segments in memory --
;
; Segments are allocated sequentially by the ??ALLOCATE macro. They may be
; set at fixed addresses by setting ADDR prior to calling ??ALLOCATE.
;
??ALLOCATE        MACRO    seg
                  .SEG     &seg
                  ORG      ADDR
$??&seg!_LO       = ADDR
ADDR              = ADDR + $??&seg!_SIZE
$??&seg!_HI       = ADDR-1
                  ENDMAC

; Allocate DATA ROM
ADDR              = $??LO_ADDR
                  ??ALLOCATE INITC
                  ??ALLOCATE CONST

; Allocate DATA RAM
ADDR              = $??HI_ADDR - $??VAR_SIZE - $??INIT_SIZE
ADDR              = ADDR - $??ISTACK_SIZE - $??STACK_SIZE - $??HEAP_SIZE
                  ??ALLOCATE INIT
                  ??ALLOCATE VAR
                  ??ALLOCATE HEAP
                  ??ALLOCATE STACK
                  ??ALLOCATE ISTACK

; -- Memory initialisation macros --
;
; Segments may be initialised by filling with a constant value using the
; ??SEGFILL macro.  Two symbols are passed, the segment name and the value to
; fill with.  A third symbol (the size) is assumed.
;
??SEGFILL         MACRO    seg, value
                  LOCAL    fill_loop
                  IF       $??&seg!_SIZE
                  ld       x, #$??&seg
                  ld       al, #$??&seg!_SIZE
                  ld       ah, &value
&fill_loop:       st       ah, @(0,x)
                  add      x, #1
                  sub      al, #1
                  bne      &fill_loop
                  ENDIF
                  ENDMAC

;
; Segments may be initialised by copying an initialisation segment with
; the ??SEGCOPY macro. Two symbols are passed, the source and destination
; segment names.
;
??SEGCOPY         MACRO    src, dest
                  IF       $??&src!_SIZE NE $??&dest!_SIZE
                  .ERR     "Copy segments different sizes"
                  ENDIF
                  IF       $??&src!_SIZE
                  ld       x, #$??&src
                  ld       y, #$??&dest
                  ld       al, #$??&src!_SIZE
                  bc
                  ENDIF
                  ENDMAC

;
; Fills a block of memory with a value. Three values are passed, the start
; address for the block, the number of addresses to write to and the value
; to be written.
;
??MEMFILL         MACRO    start, length, value
                  LOCAL    fill_loop
                  ld       x, &start
                  ld       al, &length
                  ld       ah, &value
&fill_loop:       st       ah, @(0,x)
                  add      x, #1
                  sub      al, #1
                  bne      &fill_loop
                  ENDMAC


;
; Input argument for main().
;
                  .SEG     CONST
argv              dc       0,0         ; NULL as two-word byte address 


;
; Start of Code.
;
                  .CODE
                  ORG      H'40

$?cstart_code:
		bra $ecog1ConfigMMU	; configure MMU and Cache Banks

$ecog1ConfigContinue:
;
; Initialise segments. The HEAP and STACK are filled with H'9999 and H'aaaa
; respectively so that their maximum runtime extents can be checked. The
; INIT segment is set from the ROM initialisers in the INITC segment. The non
; initialised RAM segment VAR is set to zero (compiler puts 0 initialised
; variables in these segments as well as uninitialised ones,x).
;
                  ??SEGFILL HEAP, #h'9999
                  ??SEGFILL STACK, #h'AAAA
                  ??SEGFILL ISTACK, #h'BBBB
                  ??SEGCOPY INITC, INIT
                  ??SEGFILL VAR, #h'0

; Set interrupt stack pointer.
                  ld y, #IY_SCRATCH

; Set user mode flag to allow interupts.
                  st flags, @(-1,y)
                  ld al, @(-1,y)
                  or al, #h'10
                  st al, @(-1,y)
                  ld flags, @(-1,y)

; Set usermode stack pointer
                  ld y, #$??STACK_HI

; Call ecog1Config to setup eCOG1 peripherals
; Defined in module produced by configuration compiler
                  bsr $ecog1Config
                
; Call main, setting argc and argv[0] to 0.

                  ld ah, #argv
                  ld al, #0
                  bsr $main


;
; Main may exit by returning or by explicitly calling $exit. In either case
; exit code will be in AL.
;
$exit:
				  brk				; Alert the user if in debug mode
                  bra 0             ; Restart


;
; This is the minimal interrupt routine. The contents of FLAGS is restored
; as the program counter is restored using rti.
;
$minimal_handler:
                  st flags,@(-33,y)    ; Store Flags
                  st al, @(-34,y)      ; Store AL

                  ld al, @(-33,y)      ; Put Flags into AL
                  or al, #h'0010       ; Set usermode
                  st al, @(-33,y)      ; Store the value to be restored to Flags

				  brk				; Alert the user if in debug mode

                  ld al, @(-34,y)      ; Restore AL
                  rti @(-33,y)         ; Restore PC and Flags

;
; The address exception can happen often during development. A handler
; is put here to catch the exception.
;
$address_error:
        		st flags,@(-33,y)			; Store Flags
				st al, @(-34,y)	; Store AL

				ld al, @(-33,y)	; Put Flags into AL
				or al, #h'0010	; Set usermode
				st al, @(-33,y)	; Store the value to be restored to Flags

				brk				; Alert the user if in debug mode

				ld al, #h'a
				st al, @h'ff69	; Clear status in mmu.address_exception

				ld al, #h'200
				st al, @h'ff7a	; Clear status in emi.ctrl_sts

				ld al, @(-34,y)	; Restore AL
				rti @(-33,y)		; Restore PC and Flags


; End of startup code
$??CSTARTUP_END	  EQU      $

                  ENDMOD


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品欧美一区二区蜜桃免费| 亚洲摸摸操操av| 色综合久久精品| 免费视频最近日韩| 亚洲国产成人高清精品| 国产欧美日韩在线看| 欧美xxxxxxxxx| 97国产精品videossex| 韩国v欧美v日本v亚洲v| 日韩电影在线免费看| 亚洲激情在线激情| 国产精品国产馆在线真实露脸| 91精品国产综合久久精品麻豆| 一本色道久久综合精品竹菊| 成人免费三级在线| 国产成人福利片| 久久狠狠亚洲综合| 亚洲最新视频在线播放| 亚洲精品免费视频| 亚洲免费在线观看| 日韩毛片精品高清免费| 中文字幕一区二区三中文字幕| 日韩美女视频在线| 日韩视频免费观看高清完整版在线观看 | 国产91精品入口| 99在线热播精品免费| 欧美三级资源在线| 欧美白人最猛性xxxxx69交| 久久久精品tv| 亚洲男人的天堂在线观看| 婷婷开心激情综合| 国产毛片精品一区| 91国偷自产一区二区开放时间| 欧美日韩精品久久久| 26uuu国产一区二区三区| 国产精品乱人伦| 天天亚洲美女在线视频| 国产精品一区二区免费不卡 | 777色狠狠一区二区三区| 久久亚洲一级片| 一区二区三区在线视频观看| 久久精品国产成人一区二区三区 | 亚洲午夜电影网| 国产一区二区在线观看免费| www.亚洲色图.com| 精品久久久久久久一区二区蜜臀| 中文字幕在线观看一区二区| 另类专区欧美蜜桃臀第一页| 91浏览器在线视频| 国产亚洲精品中文字幕| 午夜精品一区二区三区三上悠亚| 成人精品鲁一区一区二区| 欧美日韩国产美女| 亚洲欧美国产高清| 成人午夜视频网站| 久久综合国产精品| 免费成人在线影院| 欧美亚洲动漫制服丝袜| 国产精品久久国产精麻豆99网站| 美女mm1313爽爽久久久蜜臀| 精品视频全国免费看| 综合在线观看色| 国产一区二区精品久久99| 日韩精品一区二区三区三区免费| 亚洲一区二区中文在线| kk眼镜猥琐国模调教系列一区二区 | 色天使久久综合网天天| 国产精品三级视频| 懂色中文一区二区在线播放| 日韩一级黄色大片| 日韩电影一区二区三区四区| 91国产福利在线| 日韩毛片视频在线看| 本田岬高潮一区二区三区| 国产农村妇女精品| 国产成人精品影视| 国产欧美精品一区| 国产成人av电影在线观看| 精品成a人在线观看| 韩国av一区二区三区在线观看| 日韩精品专区在线影院观看| 麻豆极品一区二区三区| 日韩三级视频在线看| 久久精品国产亚洲5555| 欧美白人最猛性xxxxx69交| 久久狠狠亚洲综合| 久久久www免费人成精品| 国产精品一区二区久久不卡| 久久久久高清精品| 成人污污视频在线观看| 亚洲欧美一区二区三区孕妇| 色综合久久久久久久| 亚洲一区二区三区国产| 欧美日韩国产系列| 久久国产精品72免费观看| 精品国产乱码久久久久久牛牛| 热久久一区二区| 精品国产不卡一区二区三区| 福利一区二区在线| 夜夜精品浪潮av一区二区三区| 欧美精品第1页| 国产一区二区三区四区五区美女| 中文天堂在线一区| 欧美亚洲日本一区| 久久精品国产99国产精品| 亚洲国产精品成人综合| 欧美在线观看视频一区二区| 欧美aaa在线| 国产精品久久久久一区二区三区共 | 秋霞成人午夜伦在线观看| 久久久久久久久久久久电影| 91视频91自| 六月丁香综合在线视频| 亚洲欧美一区二区三区孕妇| 欧美一区二区视频在线观看2020| 国产白丝精品91爽爽久久| 亚洲国产日韩a在线播放| 国产香蕉久久精品综合网| 欧美日韩国产一级片| 国产成人av一区二区三区在线| 亚洲国产美国国产综合一区二区| 欧美日韩午夜在线| 国产98色在线|日韩| 亚洲自拍偷拍九九九| 欧美草草影院在线视频| 91论坛在线播放| 国产一区二区在线看| 亚洲一区在线看| 国产精品欧美精品| 欧美一级在线免费| 91在线观看视频| 国产精品一区免费在线观看| 亚洲成人av福利| 国产精品二区一区二区aⅴ污介绍| 欧美一区二区三区视频免费| 在线一区二区三区| 99久久久精品| 粉嫩在线一区二区三区视频| 久久66热偷产精品| 蜜桃视频免费观看一区| 亚洲国产成人tv| 亚洲女人小视频在线观看| 中文字幕中文字幕在线一区| 久久久99久久精品欧美| 日韩手机在线导航| 日韩美女主播在线视频一区二区三区| 欧美最新大片在线看| 91在线观看污| 99精品欧美一区二区三区小说 | 欧美日韩在线三区| 欧美在线观看一二区| 在线观看视频91| 在线观看亚洲a| 欧美中文字幕亚洲一区二区va在线| av在线不卡观看免费观看| 国产精品综合一区二区| 国产一区二区日韩精品| 国内久久精品视频| 狠狠色丁香久久婷婷综合丁香| 日本美女视频一区二区| 美女在线视频一区| 精品一区二区三区影院在线午夜 | 日韩国产欧美三级| 麻豆91免费看| 精品一区二区三区免费播放| 国产一区欧美日韩| 不卡的av网站| 色先锋资源久久综合| 欧美色大人视频| 欧美一区二区大片| 日韩欧美一二区| 欧美成人猛片aaaaaaa| 久久久精品免费网站| 国产女人18水真多18精品一级做 | 午夜欧美在线一二页| 久久av老司机精品网站导航| 国产一区二区三区四区在线观看 | 欧美乱妇23p| 欧美va亚洲va国产综合| 日本一区二区高清| 亚洲狠狠爱一区二区三区| 久久99国产精品麻豆| 99久久精品国产一区| 欧美日韩夫妻久久| 久久久www成人免费毛片麻豆| 中文久久乱码一区二区| 一区二区三区日韩在线观看| 天天亚洲美女在线视频| 国产成人无遮挡在线视频| 色婷婷精品大在线视频| 日韩美一区二区三区| 亚洲手机成人高清视频| 免费看日韩精品| eeuss影院一区二区三区| 欧美日韩欧美一区二区| 亚洲国产成人自拍| 日本成人在线一区| 色婷婷av一区二区| 国产欧美日韩精品一区| 美腿丝袜亚洲综合|