📄 s610411sw.prn
字号:
RASU8(ML610411)Relocatable Assembler, Ver.1.30.2 assemble list. page: 1
Source File: s610411sw.asm
Object File: _output\_obj\s610411sw.obj
Date : 2009/02/25 Wed.[15:43]
Title :
## Loc. Object Line Source Statements
1 ;***************************************************************
2 ; ML610Q411 start up assembly source file
3 ; for CCU8 version 1.xx/2.xx/3.xx
4 ; SMALL CODE MODEL
5 ; ROMWINDOW 0-03DFFh
6 ; Version 1.01
7 ; Copyright (C) 2008 OKI SEMICONDUCTOR CO., LTD.
8 ;***************************************************************
9
10 type(M610411)
11
12 model small
13 romwindow 0, 03dffh
14
15 extrn code: _main
16 extrn data near: _$$SP
17 public $$start_up
18
-------------------------- 19 cseg at 0:0h
00:0000 00-00' 20 dw offset _$$SP
21
-------------------------- 22 cseg at 0:4h
00:0004 00-00' 23 dw $$brk_reset
24
25 $$NCODs610411sw segment code #0
-------------------------- 26 rseg $$NCODs610411sw
27
00:0000 28 $$start_up:
29
00:0000 01 CE 30 bal $begin
31
00:0002 32 $$brk_reset:
00:0002 FF CE 33 bal $ ;endless loop
34
00:0004 35 $begin:
36
37 ;---------------------------------------------------------------
38 ; setting Memory Model
39 ;---------------------------------------------------------------
40 ; nothing (fixed as Small model)
41
42 ;---------------------------------------------------------------
43 ; setting Rom Window range
44 ;---------------------------------------------------------------
45 ; nothing (fixed as range 0-03dffh)
46
47 ;---------------------------------------------------------------
48 ; user SFR definition
49 ;---------------------------------------------------------------
50 ; nothing
51
52 ;---------------------------------------------------------------
53 ; Data memory zero clear
54 ;---------------------------------------------------------------
= 0000E000H 55 NEAR_RAM_START equ 0e000h
= 0000E3FFH 56 NEAR_RAM_END equ 0e3ffh
57
00:0004 00 E0 58 mov er0, #0
00:0006 00 E2 59 mov er2, #0
00:0008 00 E4 60 mov er4, #0
00:000A 00 E6 61 mov er6, #0
62
00:000C 00 08 63 mov r8, #BYTE1 NEAR_RAM_START
00:000E E0 09 64 mov r9, #BYTE2 NEAR_RAM_START
00:0010 8A-F0 65 lea [er8]
00:0012 66 __near_ram_loop:
00:0012 57-90 67 st qr0, [ea+]
00:0014 88 E8 68 add er8, #8 ;er8 += 8
00:0016 E4 79 69 cmp r9, #BYTE2 (NEAR_RAM_END+1)
00:0018 FC C1 70 blt __near_ram_loop
00:001A 00 78 71 cmp r8, #BYTE1 (NEAR_RAM_END+1)
00:001C FA C1 72 blt __near_ram_loop
73
74 ;---------------------------------------------------------------
75 ; WDT counter clear (for ML610Q411)
76 ;
77 ; !!NOTICE!!
78 ; After this process, you have to clear WDT counter within
79 ; the time described in "ML610Q411/Q412/Q415 user's manual
80 ; Chapter12 WDT".
81 ;---------------------------------------------------------------
00:001E 5A 0C 82 mov r12, #05ah
00:0020 A5 0D 83 mov r13, #0a5h
00:0022 81-A0 0E-F0 84 tb WDP
00:0026 02 C9 85 bz __wdtcounter_clear
00:0028 11-9D 0E-F0 86 st r13, WDTCON
00:002C 87 __wdtcounter_clear:
00:002C 11-9C 0E-F0 88 st r12, WDTCON
00:0030 11-9D 0E-F0 89 st r13, WDTCON
90
91 ;---------------------------------------------------------------
92 ; data variable initialization
93 ;---------------------------------------------------------------
00:0034 00'0A 94 mov r10, #SEG $$init_info
00:0036 0C-F0 00-00' 95 lea OFFSET $$init_info
00:003A 96 __init_loop:
97 ;---------------------------------------------
98 ; get source offset address and set in ER0
99 ;---------------------------------------------
00:003A AF-90 52-90 100 l er0, r10:[ea+]
00:003E FF 70 101 cmp r0, #0ffh
00:0040 02 C8 102 bne __skip
00:0042 FF 71 103 cmp r1, #0ffh
00:0044 20 C9 104 beq __init_end ;if er0==0ffffh then exit
00:0046 105 __skip:
106 ;---------------------------------------------
107 ; get destination offset address and set in ER2
108 ;---------------------------------------------
00:0046 AF-90 52-92 109 l er2, r10:[ea+]
110
111 ;---------------------------------------------
112 ; get size of objects and set in ER4
113 ;---------------------------------------------
00:004A AF-90 52-94 114 l er4, r10:[ea+]
115
116 ;---------------------------------------------
117 ; get source phy_seg address and set in R6
118 ;---------------------------------------------
00:004E AF-90 50-96 119 l r6, r10:[ea+]
120
121 ;---------------------------------------------
122 ; get destination phy_seg address and set in R7
123 ;---------------------------------------------
00:0052 AF-90 50-97 124 l r7, r10:[ea+]
125
126 ;---------------------------------------------
127 ; copy
128 ;---------------------------------------------
129
00:0056 80 E4 130 add er4, #0
00:0058 F0 C9 131 bz __init_loop ;if er4==0000 then next
132
00:005A 01-A2 133 tb r2.0
00:005C 0B C8 134 bnz __loop_by_byte
00:005E 01-A4 135 tb r4.0
00:0060 09 C8 136 bnz __loop_by_byte
137
00:0062 138 __init_loop2:
00:0062 6F-90 02-98 139 l er8, r6:[er0]
00:0066 82 E0 140 add er0, #2 ;er0 += 2
00:0068 7F-90 23-98 141 st er8, r7:[er2]
00:006C 82 E2 142 add er2, #2 ;er2 += 2
143
00:006E FE E4 144 add er4, #-2 ;er4 -= 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -