📄 startup.asm
字号:
;==========================================================================
; F2MC-8FX Family SOFTUNE First Step Guide startup routine,
; ALL RIGHTS RESERVED, COPYRIGHT (C) FUJITSU LIMITED 2004
; LICENSED MATERIAL - PROGRAM PROPERTY OF FUJITSU LIMITED
;==========================================================================
; Sample program for initialization
;--------------------------------------------------------------------------
.PROGRAM start
.TITLE start
;--------------------------------------------------------------------------
; external declaration of symbols
;--------------------------------------------------------------------------
.EXPORT __start
.EXPORT STACK_TOP ; Monitor Debugger
.IMPORT _main
.IMPORT _SetClockMainToPll
.IMPORT LMEMTOMEM
.IMPORT LMEMCLEAR
.IMPORT _RAM_INIT
.IMPORT _ROM_INIT
.IMPORT _RAM_DIRINIT
.IMPORT _ROM_DIRINIT
;--------------------------------------------------------------------------
; definition to stack area
;--------------------------------------------------------------------------
.SECTION STACK, STACK, ALIGN=1
.RES.B 254
.RES.B 4 ; Monitor Debugger
STACK_TOP:
.RES.B 2
;--------------------------------------------------------------------------
; definition to start address of data, const and code section
;--------------------------------------------------------------------------
.SECTION DIRDATA, DIR, ALIGN=1
DIRDATA_S:
.SECTION DIRINIT, DIR, ALIGN=1
DIRINIT_S:
.SECTION DATA, DATA, ALIGN=2
DATA_S:
.SECTION INIT, DATA, ALIGN=2
INIT_S:
;--------------------------------------------------------------------------
; code area
;--------------------------------------------------------------------------
.SECTION CODE, CODE, ALIGN=1
__start:
;--------------------------------------------------------------------------
; set stack pointer
;--------------------------------------------------------------------------
MOVW A, #STACK_TOP
MOVW SP, A
;--------------------------------------------------------------------------
; set register bank is 0
;--------------------------------------------------------------------------
MOVW A, PS
MOVW A, #0x07FF
ANDW A
MOVW PS, A
;--------------------------------------------------------------------------
; set direct bank pointer
;--------------------------------------------------------------------------
; A default setup is B'000. (Direct address: 0x0080..0x00FF)
;--------------------------------------------------------------------------
; set I flag
;--------------------------------------------------------------------------
; A default setup is B'0. (Interruption disable)
;--------------------------------------------------------------------------
; set ILM to the lowest level(3)
;--------------------------------------------------------------------------
MOVW A, PS
MOVW A, #0x0030
ORW A
MOVW PS, A
;--------------------------------------------------------------------------
; call SetClockMainToPll routine
;--------------------------------------------------------------------------
CALL _SetClockMainToPll
;--------------------------------------------------------------------------
; copy initial value *CONST(ROM) section to *INIT(RAM) section
;--------------------------------------------------------------------------
#macro ICOPY src_addr, dest_addr, src_segment
MOVW EP, #\src_addr
MOVW A, #\dest_addr
MOVW A, #SIZEOF (\src_segment)
CALL LMEMTOMEM
#endm
ICOPY _ROM_INIT, _RAM_INIT, INIT
ICOPY _ROM_DIRINIT, _RAM_DIRINIT, DIRINIT
;--------------------------------------------------------------------------
; zero clear of *VAR section
;--------------------------------------------------------------------------
#macro FILL0 src_addr, src_segment
MOVW A, #\src_addr
MOVW A, #SIZEOF (\src_segment)
CALL LMEMCLEAR
#endm
FILL0 DIRDATA_S, DIRDATA
FILL0 DATA_S, DATA
;--------------------------------------------------------------------------
; call main routine
;--------------------------------------------------------------------------
CALL _main
end: JMP end
.END __start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -