⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 start905m.asm

📁 富士通单片机90540CAN总线通信源代码
💻 ASM
字号:
;==========================================================================
; F2MC-16 Family SOFTUNE C Compiler sample startup routine,
; ALL RIGHTS RESERVED, COPYRIGHT (C) FUJITSU LIMITED 1986
; LICENSED MATERIAL - PROGRAM PROPERTY OF FUJITSU LIMITED
;==========================================================================
;==========================================================================
; Sample program for initialization (medium model)
;--------------------------------------------------------------------------

    .PROGRAM  start
    .TITLE    start

;--------------------------------------------------------------------------
; external declaration of symbols
;--------------------------------------------------------------------------
    .EXPORT   __start
    .IMPORT   _main

;--------------------------------------------------------------------------
; definition to stack area
;--------------------------------------------------------------------------
    .SECTION  STACK,    STACK,    ALIGN=1
    .RES.B    254
SSTACK_TOP:
    .RES.B    2
    .RES.B    254
USTACK_TOP:
    .RES.B    2

;--------------------------------------------------------------------------
; definition to start address of data, const and code section
;--------------------------------------------------------------------------
    .SECTION  DIRDATA,  DIR,      ALIGN=2
DIRDATA_S:
    .SECTION  DIRINIT,  DIR,      ALIGN=2
DIRINIT_S:
    .SECTION  DATA,   DATA,     ALIGN=2
DATA_S:
    .SECTION  INIT,   DATA,     ALIGN=2
INIT_S:
    .SECTION  LIBDATA,  DATA,     ALIGN=2
LIBDATA_S:
    .SECTION  LIBINIT,  DATA,     ALIGN=2
LIBINIT_S:
    .SECTION  DIRCONST, DIRCONST, ALIGN=2
DIRCONST_S:
    .SECTION  DCONST,   CONST,    ALIGN=2
DCONST_S:
    .SECTION  CONST,    CONST,    ALIGN=2
CONST_S:
    .SECTION  LIBDCONST,CONST,    ALIGN=2
LIBDCONST_S:
    .SECTION  DTRANS,   CONST,    ALIGN=2
DTRANS_S:
    .SECTION  DCLEAR,   CONST,    ALIGN=2
DCLEAR_S:


;--------------------------------------------------------------------------
; code area
;--------------------------------------------------------------------------
    .SECTION  CODE,   CODE,     ALIGN=1
__start:
;--------------------------------------------------------------------------
; set register bank is 0
;--------------------------------------------------------------------------
    MOV RP, #0

;--------------------------------------------------------------------------
; set ILM to the lowest level
;--------------------------------------------------------------------------
    MOV ILM, #7

;--------------------------------------------------------------------------
; set direct page register
;--------------------------------------------------------------------------
    MOV A, #PAGE DIRDATA_S
    MOV DPR, A

;--------------------------------------------------------------------------
; set system stack
;--------------------------------------------------------------------------
    AND CCR, #0x20
    MOV A, #BNKSYM SSTACK_TOP
    MOV SSB, A
    MOVW  A, #SSTACK_TOP
    MOVW  SP, A
    AND CCR, #0x00DF

;--------------------------------------------------------------------------
; copy initial value *CONST section to *INIT section
;--------------------------------------------------------------------------
#macro    ICOPY src_addr, dest_addr, src_section, dest_section
    MOV A, #BNKSYM \src_addr
    MOV ADB, A
    MOV A, #BNKSYM \dest_addr
    MOV DTB, A
    MOVW  RW0, #SIZEOF (\src_section)
    MOVW  A, #\dest_section
    MOVW  A, #\src_section
    MOVSI DTB, ADB
#endm

    ICOPY DIRCONST_S, DIRINIT_S, DIRCONST,  DIRINIT
    ICOPY DCONST_S,   INIT_S,    DCONST,    INIT
    ICOPY LIBDCONST_S,LIBINIT_S, LIBDCONST, LIBINIT

;--------------------------------------------------------------------------
; zero clear of *VAR section
;--------------------------------------------------------------------------
#macro    FILL0 src_addr, src_section
    MOV A, #BNKSYM \src_addr
    MOV DTB, A
    MOVW  RW0, #SIZEOF (\src_section)
    MOVW  A, #\src_section
    MOVN  A, #0
    FILSI DTB
#endm

    FILL0 DIRDATA_S, DIRDATA
    FILL0 DATA_S,    DATA
    FILL0 LIBDATA_S, LIBDATA

;--------------------------------------------------------------------------
; copy initial value DCONST_module section to INIT_module section
;--------------------------------------------------------------------------
    MOV A, #BNKSYM DTRANS_S
    MOV DTB, A
    MOVW  RW1, #DTRANS_S
    BRA LABEL2
LABEL1:
    MOVW  A, @RW1+6
    MOV USB, A
    MOVW  A, @RW1+2
    MOV ADB, A
    MOVW  A, @RW1+4
    MOVW  A, @RW1
    MOVW  RW0, @RW1+8
    MOVSI SPB, ADB
    MOVN  A, #10
    ADDW  RW1, A
LABEL2:
    MOVW  A, RW1
    SUBW  A, #DTRANS_S
    CMPW  A, #SIZEOF (DTRANS)
    BNE LABEL1

;--------------------------------------------------------------------------
; zero clear of DATA_module section
;--------------------------------------------------------------------------
    MOV A, #BNKSYM DCLEAR_S
    MOV DTB, A
    MOVW  RW1, #DCLEAR_S
    BRA LABEL4
LABEL3:
    MOV A, @RW1+2
    MOV ADB, A
    MOVW  RW0, @RW1+4
    MOVW  A, @RW1
    MOVN  A, #0
    FILSI ADB
    MOVN  A, #6
    ADDW  RW1, A
LABEL4:
    MOVW  A, RW1
    SUBW  A, #DCLEAR_S
    CMPW  A, #SIZEOF (DCLEAR)
    BNE LABEL3

;--------------------------------------------------------------------------
; set data bank register
;--------------------------------------------------------------------------
    MOV A, #BNKSYM DATA_S
    MOV DTB, A

;--------------------------------------------------------------------------
; set user stack
;--------------------------------------------------------------------------
    MOV A, #BNKSYM USTACK_TOP
    MOV USB, A
    MOVW  A, #USTACK_TOP
    MOVW  SP, A

;--------------------------------------------------------------------------
; call main routine
;--------------------------------------------------------------------------
    CALLP _main
end:    jmp end
    .END  __start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -