?? init.s
字號:
; to be included by the crt*.s files
;
; initialize stacks
;
; set the hardware stack to ram_end, and the software stack some
; bytes below that
ldi R28,<ram_end
ldi R29,>ram_end
out $3D,R28
out $3E,R29
subi R28,<hwstk_size
sbci R29,>hwstk_size
ldi R16,0xAA ; sentenial
std Y+0,R16 ; put sentenial at bottom of HW stack
clr R0
ldi R30,<__bss_start
ldi R31,>__bss_start
ldi R17,>__bss_end
; this loop zeros out all the data in the bss area
;
init_loop:
cpi R30,<__bss_end
cpc R31,R17
breq init_done
st Z+,R0
rjmp init_loop
init_done:
std Z+0,R16 ; put sentenial at bottom of SW stack
; copy data from idata to data
; idata contains the initialized values of the global variables
ldi R30,<__idata_start
ldi R31,>__idata_start
ldi R26,<__data_start
ldi R27,>__data_start
ldi R17,>__idata_end
copy_loop:
cpi R30,<__idata_end
cpc R31,R17
breq copy_done
lpm ; load (Z) byte into R0
adiw R30,1
st X+,R0
rjmp copy_loop
copy_done:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -