📄 crtatmegaram.lis
字号:
0000 ; make sure to assemble w/ -n flag, e.g.
0000 ; iasavr -n crt...
0000
.area func_lit(rom)
0000 __func_lit_start::
.area lit(rom)
0000 __lit_start::
.area idata(rom)
0000 __idata_start::
.area text(rom)
0000 __text_start::
.area data(ram)
0000 __data_start::
.area bss(ram)
0000 __bss_start::
0000
.text
0000 __start:: ; entry point
0035 MCUCR = 0x35
0000
0000 00E8 ldi R16,0x80 ; extern RAM enable
0002 10E0 ldi R17,FRAM
0004 10FF sbrs R17,0
0006 0064 ori R16,0x40 ; wait state
0008 05BF out MCUCR,R16
0000 USE_ELPM = 0
000A C0E0 ldi R28,<ram_end
000C D0E0 ldi R29,>ram_end
000E CDBF out $3D,R28
0010 DEBF out $3E,R29
0012 C050 subi R28,<hwstk_size
0014 D040 sbci R29,>hwstk_size
0016
0016 0AEA ldi R16,0xAA ; sentenial
0018 0883 std Y+0,R16 ; put sentenial at bottom of HW stack
001A
001A 0024 clr R0
001C E0E0 ldi R30,<__bss_start
001E F0E0 ldi R31,>__bss_start
0020 10E0 ldi R17,>__bss_end
0022
0022 ; this loop zeros out all the data in the bss area
0022 ;
0022 init_loop:
0022 E030 cpi R30,<__bss_end
0024 F107 cpc R31,R17
0026 11F0 breq init_done
0028 0192 st Z+,R0
002A FBCF rjmp init_loop
002C init_done:
002C
002C 0083 std Z+0,R16 ; put sentenial at bottom of SW stack
002E
002E ; copy data from idata to data
002E ; idata contains the initialized values of the global variables
002E
002E E0E0 ldi R30,<__idata_start
0030 F0E0 ldi R31,>__idata_start
0032 A0E0 ldi R26,<__data_start
0034 B0E0 ldi R27,>__data_start
0036 10E0 ldi R17,>__idata_end
0038
.if USE_ELPM
; set RAMPZ to 1
ldi R16,1
out 0x3B,R16
.endif
0038 copy_loop:
0038 E030 cpi R30,<__idata_end
003A F107 cpc R31,R17
003C 21F0 breq copy_done
.if USE_ELPM
elpm ; load (RAMPZ:Z)
.else
003E C895 lpm ; load (Z) byte into R0
.endif
0040 3196 adiw R30,1
0042 0D92 st X+,R0
0044 F9CF rjmp copy_loop
0046 copy_done:
0046
0046 ; call user main routine
0046 0E940000 call _main
004A _exit::
004A FFCF rjmp _exit
004C
004C ; interrupt vectors. The first entry is the reset vector
004C ;
.area vector(abs)
.org 0
0000 0C940000 jmp __start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -