Download MN102L00 Series Cross Assembler User’s Manual MICROCOMPUTER

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
MICROCOMPUTER
MN102L00
MN102L00 Series
Cross Assembler
User’s Manual
Pub.No.12210-071E
MS-DOS is a registered trademark of Microsoft Corporation.
MIFES is a trademark of Megasoft, Inc.
PC/AT is a registered trademark of International Business Machine, Incorporated.
VZ Editor is a registered trademark of Village Center, Inc.
SPARC station is a trademark of SPARC International, Inc., licensed exclusively to Sun Microsystems Corporation.
Sun OS is a trademark of Sun Microsystems Corporation.
Windows is a trademark of Microsoft Corporation.
PanaXSeries is a trademark of Matsushita Electric Industrial Co., Ltd.
The other corporation names, logotype and product names written in this book are trademarks or registered trademarks of their
corresponding corporations.
Request for your special attention and precautions in using the technicalinformation
and semiconductors described in this book
(1) An export permit needs to be obtained from the competent authorities of the Japanese Government if any of
the products or technologies described in this book and controlled under the "Foreign Exchange and Foreign
Trade Law" is to be exported or taken out of Japan
(2) The contents of this book are subject to change without notice in matters of improved function. When
Þnalizing your design, therefore, ask for the most up-to-date version in advance in order to check for any
changes.
(3) We are not liable for any damage arising out of the use of the contents of this book, or for any infringement
of patents or any other rights owned by a third party.
(4) No part of this book may be reprinted or reproduced by any means without written permission from our
company.
If you have any inquiries or questions about this book or our semiconductors, please contact one of our sales
ofÞces listed at the back of this book or Matsushita Electronics Corporation's Sales Department
About This Manual
This manual describes the functions and operation of the cross-assembler for this series of microcontrollers.
¥ Manual Features
¥
Chapters on installation, program development ßow, and introductory operation are provided, so Þrsttime users can quickly get an overview and easily master operation.
¥
Optimization, a special feature of the Cross-Assembler, is explained in its own chapter.
¥
Explanations of how to operate the assembler and linker and how to write programs are made mostly
through the use of examples.
¥
Syntax, usage notes, and examples are given for each assembler directive, assembler control statement,
and macro control statement.
¥
Use of the library manager, a tool for managing library Þles, is also explained.
¥
For users of engineering workstations (EWS), a separate chapter describes differences from the MSDOS version.
¥
Chapters provides listings of machine-language instructions and error messages, as well as sample
programs that demonstrate usage.
< About This Manual 1 >
¥ How to read
Chapter 1 Installation
Heading
1.3.4
Environment Settings
Before using the Cross-Assembler, verify or change the following two Þles.
CONFIG.SYS
If FILES and BUFFERS speciÞcations do not already exist in CONFIG.SYS, then you must add them.
If they do already exist, then check their settings, and change them if necessary.
Program example
FILES=20
BUFFERS=20
NOTE:
Be sure to make these settings. If the assembler is started without them, then
the error message "bad tmpbss(w)" will be output and processing will stop. This
means that the number of Þles that can be opened simultaneously is insufÞcient.
Terminology:
CONFIG.SYS
This is the Þle that sets the MS-DOS operating environment. FILES speciÞes
the number of Þles that can be read and written simultaneously.
BUFFERS speciÞes the size of memory used for reading/writing disks.
Usage note
Supplementary explanation
Installing PC Version 14
¥ Heading
Chapter titles are shown here on each page, so the reader can get a quick idea of contents while ßipping
through the pages.
¥ Program example
These are actual examples of command options and instructions used by the assembler. First-time users
should refer to these examples when trying to use the assembler.
¥ Usage note
These give important information. Usage note provide cautions about usage, so they should always be read.
¥ Supplementary explanation
These are hints ands terminology deÞnitions that can help the reader use the assembler.
<About This Manual 2 >
¥ Reference Techniques
Table of Contents
Table of Contents
Chapter Contents
1.1 Purpose of This Chapter
Table of Contents
...................................
...................................
...................................
....................................
...........
Chapter1..
Chapter 1...
Chapter 2...
..........
Chapter 8...
Index
Index
...........
...........
...........
...........
...........
...........
...........
...........
¥
...........
...........
...........
...........
...........
...........
...........
...........
Main Contents
This shows the main contents of this manual. Use it to look up the start of each chapter.
¥
Table Of Contents
This shows the title of all sections of this manual.
¥
Chapter Contents
Located at the start of each chapter, this shows the titles of all sections in that chapter.
¥
Index
Refer to the index at the back of this manual to look up technical terms.
< About This Manual 3 >
¥ Related Manuals
The following related manuals are available. Please contact your sales representative for more details.
MN102L00 Series LSI User's ManualÓ
<Describes the device hardware>
MN102L00 Series Instruction Manual"
<Describes the instruction set>
MN102L00 Series C Compiler User's Manual: Usage Guide"
<Describes the installation, the commands, and options of the C
Compiler>
MN102L00 Series C Compiler User's Manual: Language Description"
<Describes the syntax of the C Compiler>
MN102L00 Series C Compiler User's Manual: Library Reference"
<Describes the the standard library of the C Compiler>
MN102L00 Series C Source Code Debugger User's Manual"
<Describes the use of the C source code debugger>
(NOTE: Not required for C Source Code Debugger for Windows¨ users.)
MN102L00 Series C Source Code Debugger for Windows¨ User's Manual
<Describes the use of the C source code debugger for Windows¨>
MN102L00 Series Installation Manual"
<Describes the installation of the C compiler, cross-assembler and C
source code debugger and the procedure for bringing up the in-circuit
emulator>
<About This Manual 4 >
< About This Manual 5 >
Table of Contents
Chapter 1
Installation
Chapter 2
Program Development Flow
Chapter 3
Introduction To Operation
Chapter 4
Optimization
Chapter 5
Using Assembler
Chapter 6
Using Linker
Chapter 7
Types Of Source Statements
Chapter 8
Chapter 9
Chapter 10
Writing Source Statements
Writing Machine Language Instruction
Statements And Directive Statements
Writing Assembler Control Statements
Chapter 11
Writing Macro Control Statements
Chapter 12
List Of Machine Language Instructions
Chapter 13
Error Messages
Chapter 14
Readinig List Files
Chapter 15
Using Library Manager
Chapter 16
EWS Version
Chapter 17
Appendix
Index
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
index
Ta b l e o f C o n t e n t s
Chapter 1
Installation
1.1
Purpose Of This Chapter ................................................................................................................... 2
1.2
Installing the PC Version Of the Assembler..................................................................................... 3
1.2.1 Hardware Environment ............................................................................................................... 3
1.3
File Organization .............................................................................................................................. 4
1.4
Installation ........................................................................................................................................ 6
1.5
Configuring the Operating Environment .......................................................................................... 7
1.6
User Customization ........................................................................................................................... 9
1.6.1 Assembler Customization ........................................................................................................... 9
1.6.2 Linker Customization ................................................................................................................ 11
1.7
File Conversion Utility ................................................................................................................... 13
Chapter 2
Program Development Flow
2.1
Purpose Of This Chapter................................................................................................................. 18
2.2
Program Development Flow ........................................................................................................... 19
2.3
Programming With Assemble........................................................................................................ r 21
Chapter 3
Introduction To Operation
3.1
Purpose Of This Chapter................................................................................................................. 26
3.2
Files Used By Assembler And Linker ............................................................................................ 27
3.3
Basic Operation Of Assembler And Linker .................................................................................... 29
3.4
Assembling And Linking Multiple Sections .................................................................................. 35
3.5
Conditional Assembly And Linking ............................................................................................... 46
3.6
Error Correction Using Tag Jumps ................................................................................................. 53
Chapter 4
4.1
<TOC 1 >
Optimization
Purpose Of This Chapter................................................................................................................. 58
4.2
Rules Of Usage ............................................................................................................................... 59
4.2.1 Usage Example .......................................................................................................................... 71
Chapter 5
Using Assembler
5.1
Purpose of This Chapter ................................................................................................................. 80
5.2
Starting Assembler .......................................................................................................................... 81
5.3
Command Options .......................................................................................................................... 85
5.3.1 Output File Options ................................................................................................................... 86
5.3.2 Error Message Options............................................................................................................ 110
5.3.3 Preprocessor Options .............................................................................................................. 116
5.3.4 Program Generation Options ................................................................................................... 123
5.3.5 Other Options .......................................................................................................................... 127
5.4
Operation example ........................................................................................................................ 129
Chapter 6
Using Linker
6.1
Purpose Of This Chapter............................................................................................................... 132
6.2
Starting Linker .............................................................................................................................. 133
6.3
Command Options ........................................................................................................................ 136
6.3.1 Output File Options ................................................................................................................. 137
6.3.2 Error Message Options ............................................................................................................ 142
6.3.3 Program Generation Options ................................................................................................... 146
6.3.4 Library File Options ................................................................................................................ 152
6.3.5 Other Options .......................................................................................................................... 154
6.4
Operation Examples ...................................................................................................................... 157
Chapter 7
Types Of Source Statement
7.1
Purpose of This Chapter ............................................................................................................... 160
7.2
Program Format ............................................................................................................................. 161
7.3
Machine Language Instruction Statements And Directive Statements......................................... 163
7.4
Assembler Control Statements...................................................................................................... 164
7.5
Macro Control Statements ............................................................................................................ 165
<TOC 2 >
7.6
Comment Statements .................................................................................................................... 166
7.7
Blank Statements .......................................................................................................................... 167
Chapter 8
Writing Source Statements
8.1
Purpose of This Chapter ............................................................................................................... 170
8.2
Permitted Characters ..................................................................................................................... 171
8.3
Numbers ........................................................................................................................................ 172
8.4
Character Constants ...................................................................................................................... 175
8.5
Address Constants ......................................................................................................................... 177
8.6
Location Counter .......................................................................................................................... 178
8.7
Expressions ................................................................................................................................... 179
8.7.1 Operators ................................................................................................................................. 180
8.7.2 Expression Evaluation ............................................................................................................. 182
8.7.3 Expression Syntax ................................................................................................................... 184
8.7.4 Expression Attributes .............................................................................................................. 185
8.8
Reserved Words ............................................................................................................................ 187
Chapter 9
Writing Machine Language Instruction Statements And Directive Statements
9.1
Purpose Of This Chapter ............................................................................................................... 190
9.2
Instruction Statement Fields ......................................................................................................... 191
9.2.1 Writing Label Field ................................................................................................................ 192
9.2.2 Writing Operation Field .......................................................................................................... 193
9.2.3 Writing Operand Field ............................................................................................................ 194
9.2.4 Writing Comment Field .......................................................................................................... 195
9.3
Writing Machine Language Instruction Statements ..................................................................... 196
9.4
Writing Directive Statements ........................................................................................................ 197
9.4.1 section ..................................................................................................................................... 199
9.4.2 align ......................................................................................................................................... 201
9.4.3 end ........................................................................................................................................... 203
9.4.4 listoff, liston ............................................................................................................................ 204
<TOC 3 >
9.4.5 notation .................................................................................................................................... 206
9.4.6 org ........................................................................................................................................... 208
9.4.7 opt............................................................................................................................................ 210
9.4.8 page ......................................................................................................................................... 212
9.4.9 radix ......................................................................................................................................... 213
9.4.10 dc ............................................................................................................................................. 215
9.4.11 ds ............................................................................................................................................. 217
9.4.12 dw ............................................................................................................................................ 219
9.4.13 dd ............................................................................................................................................. 221
9.4.14 global ....................................................................................................................................... 225
9.4.15 tit ............................................................................................................................................. 227
9.4.16 xlistoff, xliston ........................................................................................................................ 228
Chapter 10 Writing Assembler Control Statements
10.1
Purpose Of This Chapter............................................................................................................... 232
10.2
#include ......................................................................................................................................... 233
10.3
#define .......................................................................................................................................... 235
10.4
#undef ........................................................................................................................................... 237
10.5
Conditional Assembly ................................................................................................................... 239
10.5.1 #ifdef,#ifndef ........................................................................................................................... 241
10.5.2 #if,#ifn ..................................................................................................................................... 243
10.5.3 #ifeq,#ifneq ............................................................................................................................. 246
10.5.4 #iflt,#ifle .................................................................................................................................. 251
10.5.5 #ifgt,#ifge ................................................................................................................................ 255
10.5.6 #ifb,#ifnb ................................................................................................................................. 259
Chapter 11 Writing Macro Control Statements
11.1
Purpose Of This Chapter............................................................................................................... 266
11.2
Macro Definitions (macro, endm) ................................................................................................. 267
11.3
Macro Calls And Expansion .......................................................................................................... 269
11.4
Macro Operators ........................................................................................................................... 272
11.5
Local Symbol Declaration (local) ................................................................................................. 275
11.6
Forced Termination Of Macro Expansion (exitm) ....................................................................... 278
<TOC 4 >
11.7
Purging Macro Definitions (purge) ............................................................................................... 283
11.8
rept ................................................................................................................................................ 285
11.9
irp .................................................................................................................................................. 288
11.10 irpc ................................................................................................................................................ 291
11.11 front / back .................................................................................................................................... 294
Chapter 12 List Of Machine Language Instructions
12.1
Purpose Of This Chapter............................................................................................................... 298
12.2
Addressing Modes ........................................................................................................................ 299
12.3
List Of Machine Language Instructions ....................................................................................... 303
12.3.1 Data Move Instructions ........................................................................................................... 304
12.3.2 Arithmetic Instructions............................................................................................................ 307
12.3.3 Logical Instructions................................................................................................................. 310
12.3.4 Subroutine Call Instructions .................................................................................................... 312
12.3.5 Unconditional Branch Instructions ......................................................................................... 312
12.3.6 Conditional Branch Instructions ............................................................................................. 313
12.3.7 Bit Manipulation Instructions ................................................................................................. 316
12.3.8 Other Instructions.................................................................................................................... 316
Chapter 13 Error Messages
13.1
Purpose Of This Chapter ............................................................................................................... 318
13.2
Assembler Errors .......................................................................................................................... 319
13.2.1 Error Messages ........................................................................................................................ 319
13.2.2 Warning Messages .................................................................................................................. 322
13.2.3 Fatal Error Messages............................................................................................................... 323
13.3
Linker Errors ................................................................................................................................. 326
13.3.1 Fatal Error Messages............................................................................................................... 328
Chapter 14 Readinig List Files
14.1
<TOC 5 >
Purpose Of This Chapter ............................................................................................................... 332
14.2
Reading List Files ......................................................................................................................... 333
14.2.1 Output Format Of Machine Language Code........................................................................... 334
14.2.2 Symbol Table .......................................................................................................................... 337
14.2.3 Cross-Reference Table ............................................................................................................ 339
Chapter 15 Using Library Manager
15.1
Purpose Of This Chapter ............................................................................................................... 342
15.2
Starting Library Manager .............................................................................................................. 343
15.3
Error/Warning Messages .............................................................................................................. 351
Chapter 16 EWS Version
16.1
Purpose of This Chapter ............................................................................................................... 356
16.2
Installation .................................................................................................................................... 357
16.2.1 Hardware Environmen ............................................................................................................ 357
16.2.2 File Organization..................................................................................................................... 358
16.2.3 Installation............................................................................................................................... 359
16.3
Differences With MS-DOS Version ............................................................................................. 360
16.4
Configuration ................................................................................................................................ 361
16.4.1 Configuration .......................................................................................................................... 361
16.4.2 Configuration File Contents .................................................................................................... 363
16.5
Kanji Use ...................................................................................................................................... 365
Chapter 17 Appendix
17.1
Numeric Restrictions .................................................................................................................... 368
17.1.1 Numeric Value in Assembler .................................................................................................. 370
17.2
List Of Command Options ............................................................................................................ 371
17.2.1 List Of Assembler Command Options .................................................................................... 372
17.2.2 List Of Linker Command Options .......................................................................................... 374
17.3
List Of Assembler Directives ....................................................................................................... 376
17.4
List Of Assembler Control Statements ......................................................................................... 379
17.5
Program Example ......................................................................................................................... 381
<TOC 6 >
<TOC 7 >
Chapter 1
Installation
1
Chapter 1 Installation
1.1
Purpose Of This Chapter
This chapter describes installation of the Cross-Assembler.
It also describes the environment settings, memory requirements, and DOS version of personal
computers that can use the assembler and linker.
2
Purpose Of This Chapter
Chapter 1 Installation
1.2
Installing the PC Version Of the Assembler
This section describes the personal computers that can use the assembler and linker, their environment,
and memory requirements
1.2.1
Hardware Environment
Personal Computer
This package is developed under DOS extender (EXEGCCV) , so it requires the following system.
¥
Machine
PC/AT or compatibles
¥
CPU
Intel 80386 or higher
¥
Memory
Minimum of 5.6 Mbytes free (recommended) This software
uses extended memory, so does not run on personal computers
with only 640 Kbytes of memory.
¥
Memory manager
Fully compliant with the VCPI standard
¥
OS
MS-DOS: ver.3.3 or later
¥
Windows:
95/98/NT3.51/NT4.0/2000
Conventional Memory Requirements
The amount of conventional memory (640 Kbytes or less of the memory area) required depends on
such factors as assembler and linker options and program size, so the following is only the bare
minimum.
¥
Conventional memory requirements
NOTE:
Minimum of 320 Kbytes
A long file name cannot be used under Windows NT3.51/NT4.0/2000.
Installing the PC Version Of the Assembler
3
Chapter 1 Installation
1.3
File Organization
The distribution disk contains the following Þles.
A>DIR B:
Volume in
Directory of B
32RT
AS102L00
AS102L00
AS102L00
DPMI32VM
EXCV102
EXEGCCV
LD102L00
LD102L00
LD102L00
PAINST
SLIB102L
SLIB102L
WINDPMI
drive B: has
no label
EXE
EXE
OUT
RC
OVL
EXE
EXE
EXE
OUT
RC
EXE
EXE
OUT
386
14 Þles
1,386,441,
156,204
1,986
183,028
946
58,744
53,248
100,944
1,986
100,356
1,010
26,168
1,986
44,692
17,996
216 bytes
98-11-10
98-11-10
98-11-10
98-11-10
98-11-10
98-11-10
98-11-10
98-11-10
98-11-10
98-11-10
98-11-10
98-11-10
98-11-10
98-11-10
749,284 bytes
free
11:25
11:25
11:25
11:25
11:25
11:25
11:25
11:25
11:25
11:25
11:25
11:25
11:25
11:25
Þles
File sizes and dates differ between shipping versions.
AS102L00.EXE AS102L00.OUT (assembler)
This pair constitutes the executable for the assembler.
LD102L00.EXE LD102L00.OUT (linker)
This pair constitutes the executable for the linker.
PAINST.EXE (installer)
This utility is for customizing the assembler and linker, changing work areas, etc.This chapter describes
how to use this.
EXCV102.EXE (file conversion utility)
This utility converts EX format executable Þles from the linker to Intel HEX format.
SLI102L.EXE (library manager)
This utility manages library Þles.
EXEGCCV.EXE (DOS extender)
The assembler and linker use this module to run in extended memory.
AS102L00.RC (assembler configuration)
This Þle contains customization parameters for the assembler.
LD102L00.RC (linker configuration)
This Þle contains customization parameters for the linker.
4
File Organization
Chapter 1 Installation
32RTM.EXE, DPMI32VM.OVL, WINDPMI.386
This Þle executes EXCV102.EXE(Þle conversion utility) in DOS and Windows 3.1.
There may also be a README.DOC Þle in addition to the above Þles. This Þle contains new
information unavailable in this manual, so please be sure to read it.
File Organization
5
Chapter 1 Installation
1.4
Installation
The explanation below assumes the use of a personal computer with two ßoppy disk drives.
Before installation, create a backup of the ßoppy disk containing the assembler.
Backup
The ßoppy disk containing the assembler does not contain MS-DOS. You should provide a ßoppy disk
with MS-DOS if needed.
Insert the original ßoppy disk of the assembler in the B drive, and copy it to the A drive.
>COPY B:*.*
Store the original ßoppy disk in a safe place.
After this, use the copied ßoppy disk. The installation process writes to the ßoppy disk, so do not afÞx
a write-protect seal to it.
Installation
Before starting installation, read section 1.6, "User Customization", and determine if you need any
customization. If needed, then perform the customization before the installation. Installation of the
assembler and linker does require special operations. If you develop programs on the copied ßoppy
disk, then they can be used as is.
To use with a hard disk, copy the following programs to the appropriate directory on the hard disk, and
set command search path in the directory. That will be the end of installation.
EXEGCCV.EXE
AS102L00.EXE
AS102L00.OUT
LD102L00.EXE
LD102L00.OUT
AS102L00.RC
LD102L00.RC
6
Installation
Chapter 1 Installation
1.5
ConÞguring the Operating Environment
Two Þles may require editing before you can use the package.
CONFIG.SYS (obligatory)
Add the following lines to CONFIG.SYS. If the Þle already contains such lines, make sure that the
numbers are greater than or equal to the numbers appearing here.
NOTE:
Any changes made do not take effect until the next reboot.
FILES=20
BUFFERS=20
NOTE:
If these numbers are too low, the assembler aborts with the totally opaque error
message "bad tmpbss (w)," its way of saying that the operating system provides
insufficient room to open all necessary files simultaneously
Terminology:
CONFIG.SYS
This is the file that sets the MS-DOS operating environment. Files specify the
number of files that can be read and written simultaneously. BUFFERS
specifies the size of memory used for reading/writing disks.
Configuring the Operating Environment
7
Chapter 1 Installation
AUTOEXEC.BAT
If you do not want intermediate work Þles cluttering the current directory, then modify
AUTOEXEC.BAT. This modiÞcation is not necessary if you do not mind them being generated there.
Before making this setting, create a subdirectory TMP below the root directory to hold the intermediate
work Þles
.
A>MD
TMP
Add the following line to AUTOEXEC.BAT.
SET
TMP=A:\ TMP
Add the following line to AUTOEXC.BAT when operating under MS-DOS or MS-DOS mode of
Windows 9X.
SET
LONGNAME=OFF
NOTE:
When you have finished the above procedure, reset the personal computer and
boot it again. This enables use of the new environment setting.
Terminology:
8
AUTOEXEC.BAT
This is a batch file automatically executed when MS-DOS starts. SET sets the
value of an MS-DOS environment variable. Environment variables can be
freely referenced by application programs.
Configuring the Operating Environment
Chapter 1 Installation
1.6
User Customization
ConÞguring the Package PAINST is a utility for updating such assembler and linker conÞguration
options as default radix and language for messages.
It stores these conÞguration options in the Þles AS102L00.RC or LD102L00.RC. For this reason, make
sure to use a copied ßoppy disk, and remove the write-protect tab before starting the change process.
1.6.1
Assembler Customization
To customize the assembler, load the conÞguration utility with the following command line.
A>PAINST AS102L00.EXE
¥
Selecting Items
The utility starts with a list of conÞguration items.
PanaX Series Assembler
Installer For IBM PC/AT
Copyright(c) 1996
ConÞguration ***
***AS 102L00.EXE
ConÞguration Options
Number formatting
Language
Optimization
RF Þle output
Version2.0 Release 1
Panasonic/KMC
Extended C syntax
English
OFF
OFF
UP and DOWN to select.
LEFT and RIGHT to change.
ESC to exit.
Use the up and down arrow keys to select an item and the left and right arrow keys to cycle between the
settings available for that item.
Press the Esc key to terminate editing.
The following Table lists the conÞguration items, their descriptions, factory settings, and available
settings.
Table 1-1
Screen Label
Assembler Configuration Options
Description
Factory Setting
Available Settings
Number formating
SpeciÞes the format for Extended C syntax
displaying intergers
Matsushita, Intel,
Extended C syntax
Language
Specify the default
English
Japanese, English
Optimization
settings for command
OFF
ON, OFF
RF Þle output
line options.
OFF
ON, OFF
User Customization
9
Chapter 1 Installation
¥
Exiting
Pressing the ESC key displays a slightly different screen listing the new settings.
PanaX Series Assembler
***AS 102L00.EXE
ConÞguration Options
Number formatting
Language
Optimization
RF Þle output
Installer For IBM PC/AT
Copyright(c) 1996
ConÞguration ***
Version2.0 Release 1
Panasonic/KMC
Extended C syntax
English
OFF
OFF
OK to update settings(Y/N)?
Press Y to update the conÞguration Þle (AS102L00.RC) on disk or N to cancel all changes.
10
User Customization
Chapter 1 Installation
1.6.2
Linker Customization
To customize the linker, load the conÞguration utility with the following command line.
A>PAINST LD102L00.EXE
¥
Selecting Items
The utility starts with a list of conÞguration items.
PanaX Series Assembler
***AS 102L00.EXE
Language
Debugging information output
Symbol table output
MAP Þle output
EX.Þle output with errors
UP and DOWN to select.
Installer For IBM PC/AT
Copyright(c) 1996
ConÞguration ***
LEFT and RIGHT to change.
Version2.0 Release 1
Panasonic/KMC
English
OFF
OFF
OFF
OFF
ESC to exit.
Use the up and down arrow keys to select an item and the left and right arrow keys to cycle between the
settings available for that item.
Press the Esc key to terminate editing.
The following Table lists the conÞguration items, their descriptions, factory settings, and available
settings.
Table 1-2
Screen Label
Linker Configuration Options
Description
Language
Factory Setting
Available Setting
English
Japanese, English
Debugging
information output
Specify the default
settings for command
OFF
ON, OFF
Symbol table
output
line options.
OFF
ON, OFF
MAP Þle output
OFF
ON, OFF
EX Þleoutput with
errors
OFF
ON, OFF
User Customization
11
Chapter 1 Installation
¥
Exiting
Pressing the ESC key displays a slightly different screen listing the new settings.
PanaX Series Assembler
***AS 102L00.EXE
Language
Debugging information output
Symbol table output
MAP Þle output
EX.Þle output with errors
OK to update settings(Y/N)?
Installer For IBM PC/AT
Copyright(c) 1996
ConÞguration ***
Version2.0 Release 1
Panasonic/KMC
English
OFF
OFF
OFF
OFF
Press Y to update the conÞguration Þle (LD102L00.RC) on disk or N to cancel all changes.
12
User Customization
Chapter 1 Installation
1.7
File Conversion Utility
This utility converts EX format executable Þles from the linker to Intel HEX or Motorola format.
The default format is Intel HEX, with extended addresses for code sizes above 0xFFFF up to
0xFFFFF. A code size greater than 1 Mbyte produces an error.
The limit for the Motorola S2 format is 0xFFFFFF.
Command Syntax
The general command formatused to start the Þle conversion utility is shown below.
A>EXCV102 [options] ex_format_filename
Contents of brackets [ ]may be omitted.
Command Line Options
Option
Description
-j
Displays error and warning messages in Japanese. *1
-e
Displays error and warning messages in English. *2
-h
Displays help information regarding Þle conversion utility options to the screen.
-w
Perform conversion using a work Þle during execution. This enables a large
amount of data to be converted even if the personal computer has little memory.
However, conversion speed will be slower.
-i
Output the execution Þle in Intel HEX format.
-S2
Output the execution Þle in Motorola S2 format.
S1
Output the execution Þle in Motorola S1 format.
-oÞle
Specify the Þle name to output
-p
Performs conversion only for the codes that actually exist. If omitted, 0xFF is
padded for the address that does not exist. Perform conversion only for the
addresses of the speciÞed range.
-R start address,
end address
If omitting the end address, a conversion is performed until the last address in EX
format Þle.
-A start address
Perform conversion for the starting address of EX format Þle into the speciÞed
address.
*1 Option for UNIX version.
*2 Option for DOS/V, PC9800 version
File Conversion Utility
13
Chapter 1 Installation
NOTE:
Like outputing the range of 0x80000 - 0x180000 (1Mbyte) in Intel HEX format,
even if a cord size for output is within 1 Mbyte and an end address is greater than
0xFFFFF, you should use -A Option and adjust a start address in order that the
end address do not excel 0xFFFFF. If the code size for output is within 1 Mbyte
but excel 0xFFFFF, a correct output will not be given.
(Example)
Output the code for 0x80000 to 0x180000 into the Intel HEX file starting with
0x0
>excv102
-A0
-R80000, 180000 sample. ex
Default SpeciÞcation
Default operation is as follows.
Operation
Default operation
Output message
UNIX, PC/AT version :
DOS/V, PC9800 version
English
Japanese
Conversion
No use of work Þle.
Output format
Intel HEX format.
Padding
None
Output Þlename
the same Þlename as EX format Þle with Ò.hexÓ extension.
Conversion range
from the start to the end address in EX format Þle.
Ruels of Output Filename
Option
14
Extension
i
.hex
S2, S1
.sf
default
.hex
File Conversion Utility
Chapter 1 Installation
Option SpeciÞcation Examples
1. Specify the range for data conversion (-R)
excv102
-R1000, 1020 sample.ex
(Description)
Converts the data of 1000 to 1020 address in the sample.ex Þle.
2. Specify the start address for format conversion (-A)
excv102
-A1000 saple.ex
(Description)
sample. ex Þle has the starting address information speciÞed at linking.
Use these information to convert the starting address when converting the format.
at the example above, a conversion is performed for the starting address at 1000.
excv102
R4000, 8000-A1000 sample.ex
(Description)
Conversion is performed for the data of 4000 to 8000 address in sample.ex Þle as data from
1000 address.
3. Convert to Intel HEX format
excv102
-i
sample.ex
(Description)
Conversion is performed to intel HEX format.
4. Specify the conversion into motorola S format
excv102
-S1
sample.ex
excv102
-S2
sample.ex
(Description)
Conversion is performed into motorola S format.
-S1 : 16 bits address format
-S2 : 24 bits address format
5. Specify the conversion without padding
excv102
-p
sample.ex
(Description)
no padding (0xff)the blank space of the data at converting the format.
File Conversion Utility
15
Chapter 1 Installation
16
Chapter 2
Program Development Flow
2
Chapter 2 Program Development Flow
2.1
Purpose Of This Chapter
Programs can be developed with a compiler or an assembler.
Currently most program development is done with a compiler, but an assembler is where compact code
generation or faster processing speed is required.
This chapter gives an overview of development with the assembler, and explains the ßow of
development through completion.
18
Purpose Of This Chapter
Chapter 2 Program Development Flow
2.2
Program Development Flow
Main development ßow
The microcomputers are used in such diverse applications as AV equipment, household electronics,
information equipment, automobiles, robots, portable phones, computer peripherals, etc. Programs
developed with the Cross-Assembler are ultimately incorporated into these products.
In order to execute a program in an environment (on hardware) different from the operating
environment of the machine used for its development, the developer must debug it on a target board
using a source code debugger, and must then perform a special process called ROM conversion to
incorporate the Þnished program.
Assembler and compiler
Both the assembler and C compiler can be used to develop programs for the microcomputers.
Compared to assembly language, C language is a more productive language. Programs coded using a
high-level language also offer superior documentabirity.
On the other hand, microcomputer operations can be directly coded by programming with assembly
language. Compared to high-level languages, programs can be created with more compact code size,
less redundancy, and faster processing.
Given the features of both languages, the main body of a program can be coded using C language,
while parts that require fast processing can be coded using assembly language.
When developing a program, the programmer must Þrst consider which language to use, program
structure, processing speed required to meet the target performance of the end product, ROM size of
the device, and several other related factors.
Source code debugger
Programs developed under MS-DOS must have their operation veriÞed on the same hardware
environment as when incorporated into a product.
Nearly all microcomputers will ultimately be incorporated within end products. Therefore, program
debugging must also be performed under the same conditions as the end product. This is why a source
code debugger and in-circuit emulator are provided.
The probe of the in-circuit emulator can operate in place of the microcomputer by connecting it
through the microcomputer socket in the product.
The source code debugger is a program for controlling the in-circuit emulator's hardware. It writes
executable Þles created under MS-DOS into emulator memory, creating the same state as when written
into microcomputer ROM. It can start program execution as the address of any source statement, and
can temporarily stop execution. Also, when execution is stopped, the source code debugger can display
values of internal registers and memory and can be used to verify desired operation of programs by
changing those values. It also enables more detailed operation checks with step operation, whereby
execution proceeds one instruction at a time.
Using this development environment, the developer can prove programs in the same state as when
Þnally incorporated into the microprocessor.
Program Development Flow
19
Chapter 2 Program Development Flow
ROM conversion
Programs that have been completely debugged using the source code debugger and in-circuit emulator
must be written into ROM in order to be incorporated within the end product.
There are two methods of ROM conversion.
¥
Limited production
Using a device type that has internal EPROM, write the Þnished program into the EPROM using
dedicated programming equipment (ROM writer). Any number of erases and writes can be performed.
All devices provide device types with internal EPROM. This method is also suitable for producing
prototypes before moving to volume production.
¥
Volume production
When all product tests are complete, write the program into the mask ROM of a device. Matsushita
Electronics Corporation will convert the executable Þle to a mask.
Please consult with your sales representative for details.
20
Program Development Flow
Chapter 2 Program Development Flow
2.3
Programming With Assembler
Before creating programs using the assembler, you must understand the following items.
Required knowledge
¥
Machine-language instructions
¥
Device operation
¥
Editor use
¥
C compiler use
¥
Assembler and linker use (in this manual)
¥
Debugger use
Program development is an iterative process of editing, assembling, linking, and debugging many times
until Þnished. Therefore, you should as much as possible automate assembler and linker commands,
debugger calls, and error correction.
MAKE
When a program is divided into multiple Þles for joint development efforts by several programmers, a
control system must be created for assembly and linking without error.
If this is not done, then an old undebugged program could be linked within the iterative development
process.
To solve this problem, the following program is effective running under MS-DOS.
¥
MAKE
With MAKE the programmer deÞnes the dependency relationships of the Þles needed to generate the
Þnal executable Þle and list Þles. Afterwards MAKE will automatically assemble and link only those
Þles that have been modiÞed.
Program format
The Cross-Assembler utilizes a program format called section address format.
Section address format speciÞes the start addresses of programs for each section linked. Even when the
program is divided between multiple Þles, or when a Þle is divided into multiple sections, identical
sections are linked together with the same attributes. Therefore, the programmer must create programs
such that addresses do not overlap.
Refer to chapter 6, "Using The Linker", for details.
Programming With The Assembler
21
Chapter 2 Program Development Flow
Programming style
It is important to use a consistent style for program coding from start to Þnish. When several people
are to create a program, they should meet in advance to decide on a common style.
You should consider the following points regarding the Þxed style of the Cross-Assembler.
¥
Header Þles
Constants and variables used in all Þles and deÞne identiÞers used in common should be gathered into
a single header Þle. As a result, changes can be made at just one location in the header Þle.
¥
Library Þles
Subroutine programs frequently used by different Þles should be gathered by function as library Þles to
make programs easier to use.
¥
Declaration position global directives
Use one position for global directive declarations. The global directive can be declared anywhere
within a program, but confusion will result if the declaration positions differ across source Þles.
¥
Unify radix and notation directives
Choose a common default radix for coding numbers, constant values, strings, etc.
¥
Comment statements
Comments reveal program algorithms and processing details within a program. Choose a common
format for coding comment statements.
Optimization
The following conditional branch instructions and unconditional branch instructions are objects of
optimization with this series.
¥
Conditional branch instructions that are objects of optimization
¥
Unconditional branch instructions that are objects of optimization
Coding is not a simple task if the programmer must always select the optimal instruction from the
above instructions. In particular, it is nearly impossible to select the optimal instructions when coding
a program divided between Þles in section format.
Optimization solves this problem. The assembler and linker generate the optimal code when invoked,
regardless of the source code.
The assembler evaluates source statements. For conditional branch instructions, it generates code that
can be optimized only when the branch label range (-128-127) is exceeded.
For unconditional branch instructions, it generates code that can be optimized from JMP and BRA
instructions.
The linker evaluates instructions that were the object of optimization, and selects the optimal codes.
As a result, the programmer must be aware that the generated code will differ from the source
statements coded in the list Þle.
Refer to chapter 4, "Optimization", for details.
22
Programming With The Assembler
Chapter 2 Program Development Flow
Conditional assembly
If a program for product A is to be created by partially modifying a program for product B, then both
can be combined into a single program by using conditional assembler control instructions.
Conditional assembly is done by deÞning a single symbol at the start of the program using a deÞne
control directive.
Here is an example.
#define
TYPE
A
Using TYPE and conditional assembler control directives to process different parts of the program, the
programmer writes code in the format below.
.
.
.
TYPE
Program of product A
#else
Program of product B
#endif
.
.
.
TYPE has been deÞned with deÞne, so in this case the program for product A will be assembled. If the
statement
#define
TYPE
A
is omitted, then the program for product B will be assembled.
By using conditional assembler control directives in this manner, different versions of programs can be
managed in a single source Þle.
Refer to chapter 10, "Writing Assembler Control Statements", for details.
Macros
Macros are an important function of the assembler. A macro assigns a name to a process, thereby
simplifying the coding of that process. By assigning an appropriate macro name to a block of multiple
machine language instructions, the programmer can create custom instructions.
When performing Þnal program debugging, the programmer must verify whether the intended
operations are being performed or not. A source code debugger is provided for this. The programmer
uses the debugger to download generated and linked object code and then verify operation.
The g option of the assembler and linker generates information that allows the debugger to work with
symbols. This allows symbols to be used for specifying debugger start addresses, breakpoint settings,
memory references and changes, etc.
Programming With The Assembler
23
Chapter 2 Program Development Flow
24
Chapter 3
Introduction To Operation
3
Chapter 3 Introduction To Operation
3.1
Purpose Of This Chapter
Many options are provided with the Cross-Assembler and Linker, but you can use the assembler and
linker without knowing all of them. This chapter explains how to use the most useful options while
demonstrating actual operation.
This chapter Þrst uses an example to show how to run the assembler and linker. Next, it explains
assembler and linker use when assembler control statements and macro instructions are included for
high-level operations.
To make correction of syntax errors generated at the assembly level easier, this chapter also explains
error Þle generation and the procedure for correcting the source Þle with the tag jump function of an
editor using that error Þle.
After reading this chapter once through and trying actual operation, you will have mastered basic
assembler and linker operation.
26
Purpose Of This Chapter
Chapter 3 Introduction To Operation
3.2
Files Used By Assembler And Linker
Figure 3-1 shows the inter-relationships of the Þles used by the assembler and linker.
Map file
Source file
Include file
SAMPLE.MAP
SANPLE.ASM
SAMPLE.H
-a
-l
List file
Assembler
SAMPLE.LST
Library file
SAMPLE.LIB
@
Relocatable object files
SAMPLE.RF ...
Linker
-m
Map file
Executable file
SAMPLE.MAP
SAMPLE.EX
Figure: 3-1 Files Used
The assembler inputs source Þles and include Þles, and outputs relocatable object Þles.
Include Þles are not special Þles, but are just Þles that comprise parts of the source Þle. They are
incorporated into assembly at the location of include directives deÞned within source statements.
Depending on the option speciÞcations input for the source Þle and map Þle, a list Þle will be output
with fully resolved addresses.
Files Used By The Assembler And Linker 27
Chapter 3 Introduction To Operation
The map Þle is used to output a list Þle with fully resolved addresses.
The linker inputs relocatable object Þles output by the assembler and, depending on option
speciÞcations, library Þles. It generates an executable format Þle and, depending on option
speciÞcations, a map Þle.
Library Þles are collections of relocatable object Þles of frequently used programs and hardware
interface programs. Only needed modules are speciÞed to have the linker extract the appropriate
relocatable object Þles from library Þles and load them into the executable format Þle. Several library
Þles are provided, but you can maintain them or newly create them yourself. Refer to chapter 15,
"Using The Library Manager", for details.
Below are the default Þle extensions and formats when Þle extensions are omitted.
¥
Source Þle
.ASM (text format)
¥
Map Þle
.MAP (text format)
¥
List Þle
.LST (text format)
¥
Relocatable object Þle .RF (binary format)
¥
Library Þle
.LIB (binary format)
¥
Executable format Þle
.EX (binary format)
NOTE:
When extensions are omitted, the assembler searches the appropriate directory
for a file with the specified file name and the extension .ASM. For example, if the
file name SAMPLE is specified, then the assembler will search for
SAMPLE.ASM.
You cannot force different extensions for map Þles and list Þles. You can only specify whether or not to
output these Þles. However, the extensions of relocatable object Þles and the executable format Þle can
be changed with assembler and linker option speciÞcations. Since those options mean default
extensions cannot be applied, you would then have to include extensions in Þle name speciÞcations.
28
Files Used By The Assembler And Linker
Chapter 3 Introduction To Operation
3.3
Basic Operation Of Assembler And Linker
The Cross-Assembler uses a section address format, in which the start address for each section as
deÞned with the section directive corresponds to its start address when linked. This allows the
programmer to freely change the order of linking Þles.
The following explanation illustrates a simple example of only one section. In this example you will
assemble and link two source Þles, PROGRAM1.ASM and PROGRAM2.ASM.
These two Þles have related external references and external deÞnitions, where the subroutine of
PROGRAM2.ASM is called from PROGRAM1.ASM. Therefore the Þnal list Þles cannot be created
just by assembling PROGRAM1.ASM. In this example, you will generate with the linker a map Þle
and then generate the Þnal list Þles.
Create source files
First, create the source Þles. Using an editor, create the two programs shown below
(PROGRAM1.ASM and PROGRAM2.ASM).
The contents of PROGRAM1.ASM are as follows.
__CODE
main
_DATA
data1
global
section
data_set
CODE, PUBLIC, 2
mov
mov
mov
jsr
bra
section
ds
end
0, A0
0xff, D0
0x80, D1
data_set
main
DATA, PUBLIC, 2
4
PROGRAM1.ASM consists of a section called _CODE (attribute CODE, link type PUBLIC) and a
section called _DATA (attribute DATA, link type PUBLIC).
The contents of PROGRAM2.ASM are as follows.
Basic Operation Of The Assembler And Linker 29
Chapter 3 Introduction To Operation
__CODE
data_set
global
section
data_set
CODE, PUBLIC, 2
mov
0, D2
cmp
bcc
D1, D2
data_set_end
mov
add
add
bra
D0, (A00
1, D2
2, A0
data_set_loop
data_set_loop
data_set_end
rts
end
PROGRAM2.ASM also consists of a section called _CODE (attribute CODE, link type PUBLIC), and
it makes an external declaration of data_set.
Assemble
Assemble the two programs that you created to generate relocatable object Þles.
A>AS102L00 PROGRAM1
A>AS102L00 PROGRAM2
This will generate two relocatable object Þles (PROGRAM1.RF and PROGRAM2.RF). List Þles
cannot be generated at this stage. These Þles will be generated after linking when the relationships of
external references and external deÞnitions are resolved.
Link
Link the two relocatable object Þles to generate an executable format Þle. A map Þle will be generated
along with the executable format Þle at this time.
A>LD102L00 -m -T_CODE=80000 PROGRAM1 PROGRAM2
m optionOption to output map Þle.
T optionOption to specify section address.
This will link the two relocatable object Þles (PROGRAM1.RF and PROGRAM2.RF) and create an
executable format Þle (PROGRAM1.EX) and map Þle (PROGRAM1.MAP) in the current directory.
30
Basic Operation Of The Assembler And Linker
Chapter 3 Introduction To Operation
NOTE:
The file name and directory for output can be specified with the o (small letter o)
option. If the o option is omitted, then the name of the first file specified to be
linked (PROGRAM1 in this example) will be appended with the file extension .EX
to become the name of the executable format file. The map file name cannot be
specified, just as for the executable file name when the o option is omitted, the
map file will be output as the name of the first file specified to be linked with the
extension .MAP appended.
Generate final list files
After link processing is complete, generate the Þnal list Þles using the map Þle (PROGRAM1.MAP).
A>AS102L00 -l -a PROGRAM1 PROGRAM1
A>AS102L00 -l -a PROGRAM1 PROGRAM2
l option
Option to output a list Þle.
a option
Option to read a map Þle. Specify the map Þle name after it. This example
speciÞes PROGRAM1 as the map Þle name with .MAP omitted.
This operation will generate the Þnal list Þles (PROGRAM1.LST and PROGRAM2.LST) in the
current directory.
With the above operations, you can generate an executable format Þle and Þnal list Þles in the current
directory.
You must generate the Þnal list Þles using the map Þle after linking. This is because linking determines
the start addresses of sections following the T option for Þles in section address format. In addition,
there may be addresses unresolved until after link processing due to forward references, optimization,
etc. (Refer to chapter 4, "Optimization".)
Basic Operation Of The Assembler And Linker 31
Chapter 3 Introduction To Operation
The contents of the Þnal list Þle PROGRAM1.LST are as follows.
A>TYPE PROGRAM1.LST
***
Loc
mn102L00
Object
080000
080003
080006
080009
08000E
DC0000
F8FF00
F98000
F4E1020000
EAF0
08001E
08001F
080020
080021
00
00
00
00
ROM size is
No errors in
No warnings
524322(Hex.
this
in this
*** Symbol
00080000
0008001E
00080010
0008001E
00080000
Table ***
A_CODE
A_DATA
T data_set
D data1
T main
Cross
Line
1
2
3
4
5
6
7
8
9
10
11
12
12
12
12
13
PROGRAM1.
Assembler
Source
_CODE
main
_DATA
data1
Basic Operation Of The Assembler And Linker
Page1
global
data_set
section
CODE, PUBLIC, 2
mov
mov
mov
jsr
0, A0
0xff, D0
0x80, D1
data_set
section
ds
DATA, PUBLIC, 2
4
end
00080022)
assembly
assembly
PROGRAM1
32
LST
***
.LST
Page2
Chapter 3 Introduction To Operation
The contents of the Þnal list Þle PROGRAM2.LST are as follows.
A>TYPE
***
Loc
PROGRAM2.LST
mn102L00
Object
080010
8A00
080012
080014
F396
E607
080016
080017
080019
08001B
00
D601
D002
EAF5
08001D
FE
ROM size is
No errors in
No warnings
524318(Hex.
this
in this
*** Symbol
00080010
00080010
0008001D
00080012
Table ***
A_CODE
T data_set
T data_set_
T data_set_
Cross
Line
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PROGRAM1.
Assembler
Source
_CODE
data_set
data_set_
data_set__
LST
***
Page1
global
data_set
section
CODE, PUBLIC, 2
mov
0, D0
loop
cmp
bcc
D1, D2
data_set_end
mov
add
add
bra
D0, (A0)
1, D2
2, A0
data_set_loop
end
rts
end
008001E)
assembly
assembly
PROGRAM2
.LST
Page2
end
loop
Here is a simple explanation of how to read the list Þles. A list Þle shows four items of information.
Source statements and machine language code
¥
ROM size
¥
Errors and warning messages
¥
Symbol table
Source statements and their corresponding machine language code are further divided into Loc, Object,
Line, and Source headings.
Basic Operation Of The Assembler And Linker 33
Chapter 3 Introduction To Operation
The Loc heading gives location counter values, which show execution addresses in the Þnal list Þles.
PROGRAM1.LST starts from location 80000 (hex.), and PROGRAM2.LST starts from location 80010
(hex.).
The Object heading shows the codes of instructions converted to machine language by the assembler.
Instructions consist of one to four bytes (1 byte=8 bits), shown as two to eight hex digits. After some
machine language code, the symbol 'M' will be added. The 'M' indicates an instruction that was
expanded from a macro instruction.
The Line heading shows line numbers added by the assembler. The Source heading shows the source
statements as coded.
34
Basic Operation Of The Assembler And Linker
Chapter 3 Introduction To Operation
3.4
Assembling And Linking Multiple Sections
In section 3.3, "Basic Operation Of The Assembler And Linker", source Þles each comprising one
section were assigned to the same section as a basic example. However, normally a program will be
divided into multiple sections to clearly divide programs by function and type.
The start addresses of a program in section format are set for each section during linking. Therefore,
when a program divided into multiple Þles is developed, work can proceed without the programmer
staying aware of the code size of each Þle. The programmer an also freely change the order in which
Þles are linked.
The following explanation illustrates a simple example dividing two source Þles into sections for each
routine, allocated to two sections.
Create source files
Using an editor, create the two programs shown below (PROGRAM3.ASM and PROGRAM4.ASM).
The contents of PROGRAM3.ASM are as follows.
_CODE_00
main
_DATA
data1
global
global
section
main
data_set, time_filler
CODE, PUBLIC, 2
mov
mov
mov
jsr
jsr
bra
0, A0
0xff, D0
0x80, D1
data_set
time_filler
main
section
ds
end
DATA, PUBLIC, 2
4
Assembling And Linking Multiple Sections 35
Chapter 3 Introduction To Operation
The contents of PROGRAM4.ASM are as follows.
_CODE_01
data_set
data_set_
global
data_set, time_filler
section
CODE, PUBLIC, 2
mov
0, D2
loop
cmp
bcc
D1, D2
data_set_end
mov
add
add
bra
D0, (A0)
1, D2
2, A0
data_set_loop
rts
section
CODE, PUBLIC, C2
data_set_end
_CODE_00
time_filler
Time_filler
time_filler
mov
_loop
cmp
bcc
bra
_end
rts
end
0, D2
D1, D0
time_filler_end
time_filler_loop
As can be seen from the above two Þles, these programs are divided as follows.
36
¥
main, time_Þller..._CODE_00
¥
data_set..._CODE_01
¥
data1..._DATA
Assembling And Linking Multiple Sections
Chapter 3 Introduction To Operation
Assemble and generate list files
Next assemble the two programs. Assemble with the option for output of list Þles in order to see what
the list Þle is like when Þnal addresses are not resolved.
A>AS102L00 -l -g PROGRAM3
A>AS102L00 -l -g PROGRAM4
g option
Option to output debug information in the relocatable object Þle.
l option
Option to output list Þle (not normally speciÞed at this stage before linking, but
specify it here to see intermediate values).
This will assemble the two source Þles PROGRAM3.ASM and PROGRAM4.ASM in the current
directory. It will add debug information (g option) to the relocatable object Þles PROGRAM3.RF and
PROGRAM4.RF, and generate list Þles PROGRAM3.LST and PROGRAM4.LST respectively in the
current directory (l option). Adding debug information (g option) enables symbols to be used during
debugging.
Let's take a look at the list Þles that were created.
Assembling And Linking Multiple Sections 37
Chapter 3 Introduction To Operation
The contents of the list Þle PROGRAM3.LST are as follows.
A>TYPE PROGRAM3.LST
***
Loc
mn102L00
Object
000000
000003
000006
000009
00000E
000013
DC0000
F8FF00
F98000
F4E1000000
F4E1000000
EA00
000000
000001
000002
000003
00
00
00
00
ROM size is
No errors in
No warnings
25 (Hex.
this
in this
*** Symbol
00000000
00000000
00000000
00000000
00000000
00000000
Table ***
A_CODE_00
A_DATA
*U data_set
D data1
T main
*U time_fil
Cross
Line
1
2
3
4
5
6
7
8
+9
+10
R11
12
13
14
14
14
14
15
PROGRAM3.
Assembler
Source
_CODE_00
main
_DATA
data1
LST
***
Page1
global
global
main
data_set, time_filler
section
CODE, PUBLIC, 2
mov
mov
mov
jsr
jsr
bra
0, A0
0xff, D0
0x80, D1
data_set
time_filler
main
section
ds
DATA, PUBLIC, 2
4
end
00000019)
assembly
assembly
PROGRAM3
.LST
Page2
ler
There is a plus sign '+' before line numbers 9 and 10. This indicates that the object code does not have
Þnal values. This is because the two functions data_set and time_Þller do not exist in this program, so
the call addresses will not be resolved unless linked. That further means that this list Þle is not the Þnal
list Þle.
There is an 'R' before line number 11. This also indicates that the object code does not have Þnal
values. It warns that the code includes a relocatable symbol whose value will be resolved when linked.
Finally, notice that the list begins from location 000000. The start addresses of section format
programs are speciÞed with the linker. Here the assembler uses relative values beginning from 000000
as location counter values.
38
Assembling And Linking Multiple Sections
Chapter 3 Introduction To Operation
The contents of the list Þle PROGRAM4.LST are as follows.
A>TYPE PROGRAM4.LST
***
Loc
mn102L00
Object
000000
8A00
000002
000004
F396
E600
000006
000007
000009
00000B
00
D601
D002
EA00
00000D
FE
000000
8A00
000002
000004
000006
F394
B600
EA00
000008
FE
ROM size is
No errors in
No warnings
23 (Hex.
this
in this
*** Symbol
00000000
00000000
00000000
0000000D
00000002
00000000
00000008
Table
A_CODE
A_CODE
T data_
T data_
T data_
T time_
T time_
Cross
Line
1
2
3
4
5
6
7
8
+9
10
11
12
13
R14
15
16
17
18
19
20
21
22
23
24
25
+26
R27
28
29
30
31
PROGRAM4.
Assembler
Source
LST
***
Page1
global
global
data_Set, time_filler
data_set, time_filler
section CODE, PUBLIC, 2
mov
0, D2
cmp
bcc
D1, D2
data_set_end
mov
add
add
bra
D0, (A0)
1, D2
2, A0
data_set_loop
_CODE_01
data_set
data_set_loop
data_set_end
rts
_CODE_00
sectio
n
CODE, PUBLIC, 2
mov
0, D2
loop
cmp
bcc
bra
D1, D0
time_filler_end
time_filler_loop
time_filler
time_filler_
Time_filler_
end
rts
end
00000017)
assembly
assembly
PROGRAM4
***
_00
_01
set
set_
set_
fille
fille
.LST
Page2
end
loop
r
r_end
Assembling And Linking Multiple Sections 39
Chapter 3 Introduction To Operation
00000002
T time_
fille loop
r_
This Þle is deÞned as two sections. The addresses of the starting locations of both sections is assumed
000000.
The 'R' added before '27' on line number 14 has the same meaning as in PROGRAM3.LST. It means
that the code includes a relocatable symbol.
Link
Link the two relocatable object Þles to generate an executable format Þle. Specify the
g option to add debug information to the executable format Þle.
A>LD102L00 -m -g -T_CODE_00=80000 -T_CODE_01=80200 PROGRAM3
PROGRAM4
m option
Option to output map Þle.
g option
Option to add debug information to the executable format Þle.
T option
Option to specify section address.
This will link the two relocatable object Þles (PROGRAM3.RF and PROGRAM4.RF), assigning
80000 (hex.) and 80200 (hex.) respectively as the start addresses of the two sections _CODE_00 and
_CODE_01. This command will generate an executable format Þle PROGRAM3.EX with debug
information added and a map Þle PROGRAM3.MAP, both output to the current directory.
40
Assembling And Linking Multiple Sections
Chapter 3 Introduction To Operation
Parameter file during linking
The following command was input to link.
A>LD102L00 -m -g -T_CODE_00=80000 -T_CODE_01=80200 PROGRAM3
PROGRAM4
Repeated input of lines like this is tedious and prone to errors. For this reason the very convenient @
option is provided with the linker. With an editor create a Þle PFILE (the name can be freely chosen)
with the following contents.
The contents of PFILE are as follows.
-m
-g
-T_CODE_00
-T_CODE_01
PROGRAM3
=80000
=80200
PROGRAM4
This Þle is called a parameter Þle. If the @ option is speciÞed when linking, then the linker will read a
parameter Þle, and will interpret its contents as command options for execution.
The two speciÞcations below will be equivalent.
A>LD102L00 @PFILE
A>LD102L00 -m -g -T_CODE_00=80000 -T_CODE_01=80200 PROGRAM3
PROGRAM4
Assembling And Linking Multiple Sections 41
Chapter 3 Introduction To Operation
Generate final list files
After link processing is complete, generate the Þnal list Þles using the map Þle (PROGRAM3.MAP).
This will show what happens to the previous '+' and 'R' marks.
A>AS102L00 -l -a PROGRAM3 PROGRAM3
A>AS102L00 -l -a PROGRAM3 PROGRAM4
l option
Option to output a list Þle.
a option
Option to use a map Þle.
Specify the map Þle name after the a option, followed by the source Þle name. Based on the link
information written in the map Þle, the assembler will reassemble the source Þle and generate a Þnal
list Þle.
42
Assembling And Linking Multiple Sections
Chapter 3 Introduction To Operation
Let's look at the Þnal list Þles with all addresses resolved.
The contents of the Þnal list Þle PROGRAM3.LST are as follows.
A>TYPE PROGRAM3.LST
***
Loc
mn102L00
Object
080000
080003
080006
080009
08000E
000013
DC0000
F8FF00
F98000
F4E1F20100
F4E1030000
EAEB
08020E
08020F
080210
080211
00
00
00
00
ROM size is
No errors in
No warnings
524818 (Hex.
this assembly
in this
*** Symbol
00000000
00000000
00000000
00000000
00000000
00000000
Table ***
A_CODE_00
A_DATA
T data_set
D data1
T main
T time_filler
Cross
Line
1
2
3
4
5
6
7
8
9
10
11
12
13
14
14
14
14
15
PROGRAM3.
Assembler
Source
_CODE_00
main
_DATA
data1
LST
***
Page1
global
global
main
data_set, time_filler
section
CODE, PUBLIC, 2
mov
mov
mov
jsr
jsr
bra
0, A0
0xff, D0
0x80, D1
data_set
time_filler
main
section
ds
DATA, PUBLIC, 2
4
end
0080212)
assembly
PROGRAM3
.LST
Page2
Assembling And Linking Multiple Sections 43
Chapter 3 Introduction To Operation
Compare this to the list Þle with unresolved addresses. The '+' on line numbers 9 and 10 and the 'R' on
line number 11 have disappeared. Addresses also start from address 80000 (hex) as speciÞed by the T
option.
The contents of the Þnal list Þle PROGRAM4.LST are as follows.
A>TYPE PROGRAM4.LST
***
Loc
mn102L00
Object
080200
8A,,
080202
080204
F396
E607
080206
080207
080209
08020B
00
D601
D002
EAF5
08020D
FE
Cross
Line
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
19
20
21
22
23
24
25
26
27
28
29
30
31
080016
8A00
080018
08001A
08001C
F394
E602
EAFA
000119
FE
ROM size is
No errors in
No warnings
in
524818 (Hex.
this assembly
this assembly
*** Symbol
00080016
00080200
00080200
0008020D
00080000
00080016
Table ***
A_CODE_00
A_CODE_01
T data_set
T data_set_
end
T main
T time_filler
PROGRAM4.
Assembler
Source
_CODE_01
data_set
data_set_
_CODE_00
Assembling And Linking Multiple Sections
Page1
global
data_set, time_filler
section
CODE, PUBLIC, 2
mov
0, D2
loop
cmp
bcc
D1, D2
data_set_end
mov
add
add
bra
D0, (A0)
1, D2
2, A0
data_set_loop
rts
section
CODE, PUBLIC, 2
mov
0, D2
time_filler
time_filler_ loop
cmp
bcc
bra
D1, D0
time_filler_end
time_filler_loop
time_filler_ end
rts
end
0008020E)
PROGRAM4
44
LST
***
.LST
Page2
Chapter 3 Introduction To Operation
0008001E
000800018
T
time_filler_
T
time_filler_
end
loop
In this Þle the 'R' on line numbers 14 and 27 have disappeared, and the start address of the Þrst section
_CODE_01 has been changed to address 80200 (hex.) as speciÞed by the T option. However, the start
address of section _CODE_00 is address 80016 (hex.). This shows that it has been linked after the
same section existing in PROGRAM3.
Program locations after linking
Program locations in the executable Þle after linking as above are shown below.
0X0000
~~
~~
Unused
0X080000
~~
~~
main
0X080016
time_filler
0X08001E
~~
~~
Unused
0X080200
~~
~~
data_set
0X08020E
data1
0X080211
~~
~~
Unused
~~
~~
Figure: 3-2 Program Location
Programs are laid out in accordance with the following rules when multiple sections are speciÞed.
Each section is placed at the starting address speciÞed during linking.
¥ Sections with the same section names are linked in the order speciÞed for linking (in the order
that object Þle names are entered after link option speciÞcations).
¥
Section linking rules:
Link in order of appearance during linking.
Link by attribute.
Link by link format.
For PUBLIC, link all link Þles.
For PRIVATE, link within one Þle.
Assembling And Linking Multiple Sections 45
Chapter 3 Introduction To Operation
3.5
Conditional Assembly And Linking
The MN10200 Series Cross-Assembler provides many assembler directives. Assembler directives are
not converted directly to machine language, but are used to control how the assembler processes.
For example, during the development stage a programmer may want to include a special program only
for debugging. This program must be deleted when the product is complete. That can be accomplished
by editing the source Þle, but if that editing is spread throughout the program, then mistakes will be
easy to make.
It is convenient to use assembler directives in such cases. The conditions for assembly are deÞned at
the start of the program, and programs to be assembled when the conditions are satisÞed or not satisÞed
are written in the source Þle.
Create source file
Using an editor, create the program PROGRAM5.ASM shown below.
The contents of PROGRAM5.ASM are as follows.
#define
*
dat_set
*
_CODE
main
#else
#endif
_DATA
data1
data2
DEBUG
macro
mov
mov
mov
endm
section CODE, PUBLIC,2
DEBUG
dat_set
dat_set
section DATA, PUBLIC, 2
dw
dw
end
adr, dat
adr, A0
dat, D0
D0, (A0)
data1, 0x11
data1, 0x22
0
0
The operation of this program is meaningless. The program will be used instead to explain program
structure as it pertains to conditional assembly.The deÞne DEBUG on the Þrst line selects DEBUG as a
condition by deÞning the identiÞer DEBUG. In the assembly control block starting with #ifdef
DEBUG on line 13, the instructions between #ifdef to #else will be assembled if DEBUG has been
deÞned, and the instructions between #else to #endif will be assembled if DEBUG is undeÞned. In this
example DEBUG was deÞned on line 1, so the instructions in the deÞned block will be assembled.
This program also uses a macro control directive. Lines 4 to 8 are the macro deÞnition. The macro's
name is dat_set, and it has two parameters (adr, dat).
46
Conditional Assembly And Linking
Chapter 3 Introduction To Operation
Assemble and link
Assemble and link the program that you have created.
A>AS102L00 -g PROGRAM5
A>LD102L00 -m -g -T_CODE=80000 PROGRAM5
A>AS102L00 -l -a PROGRAM5 PROGRAM5
The Þrst assembly generates the relocatable object Þle PROGRAM5.RF. The second assembly
generates the Þnal list Þle PROGRAM5.LST.
Assembling And Linking Multiple Sections 47
Chapter 3 Introduction To Operation
The contents of the Þnal list Þle PROGRAM5.LST are as follows.
A>TYPE PROGRAM5.LST
***
Loc
mn102L00
Object
080000
080005
080007
F474080008
8011
00
080008
08000A
0000
0000
ROM size is
No errors in
No warnings
524300(Hex.
this assembly
in this
*** Symbol
00080000
00080008
00080008
0008000A
00080000
Table ***
A_CODE
A_DATA
T data1
D data2
T main
Cross
Line
1
2
3
4
5
6
7
8
9
10
11
12
13
M14
14+
14+
14+
15
XX
17
18
19
20
21
22
PROGRAM5.
Assembler
Source
#define
*
dat_set
LST
***
Page1
DEBUG
macro
mov
mov
mov
endm
adr, dat
adr, A0
dat, D0
D0, (A0)
section
CODE, PUBLIC, 2
DEBUG
dat_set
mov
mov
mov
data1, 0x11
data1, A0
0x11, D0
D0, (A0)
dat_set
data1, 0x22
section
dw
dw
end
DATA, PUBLIC, 2
0
0
.LST
Page2
*
_CODE
main
#ifdef
#else
#endif
_DATA
data1
data2
0008000C)
assembly
PROGRAM5
Line number 14 extends over four lines. This indicates lines where macro expansion has been
performed. An 'M' is added before the line number where the macro instruction statement is shown,
and a '+' is added after the line numbers where the instruction statements from macro expansion are
shown.DEBUG has been deÞned, so the block between #ifdef-#else was assembled. There is no line
16, which has become XX. This indicates a statement that was not assembled because a condition was
not fulÞlled.
48
Assembling And Linking Multiple Sections
Chapter 3 Introduction To Operation
Select false condition, assemble, and link
Make the deÞne source statement line into a comment line, or just delete it. Then assemble and link
with the same procedure as before.
A>AS102L00 -g PROGRAM5
A>LD102L00 -m -g -T_CODE=80000 PROGRAM5
A>AS102L00 -l -a PROGRAM5 PROGRAM5
Assembling And Linking Multiple Sections 49
Chapter 3 Introduction To Operation
The contents of the Þnal list Þle PROGRAM5.LST are as follows.
A>TYPE PROGRAM5.LST
***
Loc
mn102L00
Object
080000
080005
080007
F474080008
8022
00
080008
08000A
0000
0000
ROM size is
No errors in
No warnings
524300(Hex.
this assembly
in this
*** Symbol
00080000
00080008
00080008
0008000A
00080000
Table ***
A_CODE
A_DATA
T data1
D data2
T main
Cross
Line
1
2
3
4
5
6
7
8
9
10
11
12
13
XX
15
M16
16+
16+
16+
17
18
19
20
21
22
PROGRAM5.
Assembler
Source
#define
*
dat_set
LST
***
DEBUG
macro
mov
mov
mov
endm
adr, dat
adr, A0
dat, D0
D0, (A0)
section
CODE, PUBLIC, 2
DEBUG
dat_set
data1, 0x11
dat_set
mov
mov
mov
data1, 0x11
data1, A0
0x22, D0
D0, (A0)
section
dw
dw
end
DATA, PUBLIC, 2
0
0
.LST
Page2
*
_CODE
main
#ifdef
#else
#endif
_DATA
data1
data2
0008000C)
assembly
PROGRAM5
Line 14 has become XX, and line 16 has been assembled instead.
50
Assembling And Linking Multiple Sections
Page1
Chapter 3 Introduction To Operation
Specify assembly conditions in the command
Until this point the condition has been speciÞed by deÞne in the source Þle, but it has been bothersome
to edit the source Þle each time. The explanation below describes how to directly specify conditions
with command options. This operation is valid only with regards to #ifdef.
In the previous Þle, you either deleted the deÞne line or made it into a comment, so you can use it to
once again select the true condition.
A>AS102L00 -g -D DEBUG PROGRAM5
A>LD102L00 -m -g -T_CODE=80100 PROGRAM5
A>AS102L00 -l -a PROGRAM5 -D DEBUG PROGRAM5
D option
Option to specify an identiÞer (DEBUG), having the same effect as specifying
deÞne DEBUG in the source Þle.
Assembling And Linking Multiple Sections 51
Chapter 3 Introduction To Operation
The contents of the Þnal list Þle PROGRAM5.LST are as follows.
A>TYPE PROGRAM5.LST
***
Loc
mn102L00
Object
080100
080105
080107
F474080008
8011
00
080108
08010A
0000
0000
ROM size is
No errors in
No warnings
524556(Hex.
this assembly
in this
*** Symbol
00080100
00080108
00080108
0008010A
00080100
Table ***
A_CODE
A_DATA
T data1
D data2
T main
Cross
Line
1
2
3
4
5
6
7
8
9
10
11
12
13
M14
14+
14+
14+
15
XX
17
18
19
20
21
22
PROGRAM5.
Assembler
Source
#define
*
dat_set
LST
***
Page1
DEBUG
macro
mov
mov
mov
endm
adr, dat
adr, A0
dat, D0
D0, (A0)
section
CODE, PUBLIC, 2
DEBUG
dat_set
mov
mov
mov
data1, 0x11
data1, A0
0x11, D0
D0, (A0)
dat_set
data1, 0x22
section
dw
dw
end
DATA, PUBLIC, 2
0
0
.LST
Page2
*
_CODE
main
#ifdef
#else
#endif
_DATA
data1
data2
0008010C)
assembly
PROGRAM5
Line number 14 was assembled. Check for yourself that omitting -D DEBUG will assemble line
number 16 instead. This technique enables the programmer to freely choose assembly conditions with
command option speciÞcations.
Other assembly options include suppression of output to the list Þle of source statements in unselected
conditions, and output of the relocatable object Þle to other directories. Refer to chapter 5, "Using The
Assembler",and chapter 6, "Using The linker", for details.
52
Assembling And Linking Multiple Sections
Chapter 3 Introduction To Operation
3.6
Error Correction Using Tag Jumps
This section describes a convenient way to Þx errors. When code mistakes, syntax errors, or other
errors and warnings occur in a source Þle, further development cannot proceed unless they are Þxed.
In long source Þles, it can be a lot of work to Þnd the source statements in which errors and warnings
were detected.
The error correction method described in this section uses the tag jump function of editors such as
MIFESTM, etc.
This assumes the necessity of an error Þle that incorporates tag jumps.
Assembler error messages implement the tag jump function. When the assembler detects an error, it
outputs an error message to the display. It will also output error messages to the list Þle if the l option
was speciÞed.
When the l option has not been speciÞed and the assembler detects errors, you can assemble again such
that errors are not displayed to the screen but are redirected to an error Þle that the assembler generates.
The list Þle will include correct source statements in which errors were not detected, while the Þle
created by redirection will consist only of source statements in which errors were detected. It is
accordingly faster to access the Þle created by redirection when the source Þle is large.
Generate error file
The example below shows the generation of an error Þle (ERROR) by redirection. This example
assembles MAIN.ASM and outputs error messages to the Þle ERROR instead of the screen.
First assemble a Þle that actually includes errors and generate an error Þle. The following source Þle
(MAIN.ASM) includes two errors and one warning.
_CODE
data
main
section
equ
CODE, PUBLIC, 2
-1
mov
move
mov
0x11, D0
0x11, D0
D0, (data)
main
end
The assembler will detect the errors, so it will generate an error Þle by redirection.
A>AS102L00 MAIN > ERROR
Error Correction Using Tag Jumps 53
Chapter 3 Introduction To Operation
The contents of the generated error Þle are as follows.
A>TYPE ERROR
PanaX Series
(c)Copyright
MAIN.ASM
MN102L00 Assembler
1994 Panasonic/KWC
for linear Version3.1 Release1.1.1
MAIN.ASM(7):
5
Error
2000:
F440FFFFFF 6
Warning 2054:
7
Error
2003:
move
Incorrect assembler
mov
Illegal RAM address
main
Symbol defined
ROM size is 7
2 errors in
1 warnings in
(Hex. 00000007)
this assembly
this assembly
MAIN. ASM(5):
000002
MAIN.ASM(6):
0x11, D0
syntax.
D0, (data)
used
twice
This example assumes use of MIFES with a PC-9800 series computer. Start up MIFES and open two
Þles.
A>MI
MAIN.ASM ERROR
The contents of the Þle ERROR will be displayed on the screen.
PanaX Series
(c)Copyright
MAIN.ASM
MN102L00 Assembler
1994 Panasonic/KWC
for linear Version3.1 Release1.1.1
MAIN.ASM(7):
5
Error
2000:
F440FFFFFF 6
Warning 2054:
7
Error
2003:
move
Incorrect assembler
mov
Illegal RAM address
main
Symbol defined
ROM size is 7
2 errors in
1 warnings in
(Hex. 00000007)
this assembly
this assembly
MAIN. ASM(5):
000002
MAIN.ASM(6):
54
Error Correction Using Tag Jumps
0x11, D0
syntax.
D0, (data)
used
twice
Chapter 3 Introduction To Operation
Tag jumps
The Þrst error message matches this display on the screen.
MAIN. ASM(5): Error 2000: Incorrect assembler syntax.
This line works with tag jumps regardless of the character positions on screen.
Look at the display of function key F10 on the CRT screen. It should be [Tag JP]. This key speciÞes a
tag jump, so try pressing F10. The screen will switch, and the cursor will be placed at the source Þle
statement in which the error was detected.
_CODE
data
main
section
equ
CODE, PUBLIC, 2
-1
mov
move
mov
0x11, D0
0x11, D0
D0, (data)
main
end
Fix errors
The cursor will be located on the Þfth line. Fix the error here.
Change move to mov. That alone Þxes the line. Switch the screen again to the error Þle.
Return to error file
To return to the error Þle, press the HOME CLR key (above and to the left of the period key).
When the screen switches to the error Þle, the cursor will move to the next error line.
MAIN.ASM(6):Warning 2054:Illegal RAM address used.
This is a warning, not an error. You can see the problem by looking at the machine language code
generated in the list Þle. The assembler processed assuming an address of 0. Tag jumps are valid here
as well.
Press F10 for the source screen.
By repeating this procedure, you can Þx all the errors.
Error Correction Using Tag Jumps 55
Chapter 3 Introduction To Operation
Uncorrectable errors
Some errors cannot be easily corrected. In some cases there are too many labels, exceeding the label
registrations provided by the assembler. This kind of error must be Þxed by changing an initial value of
the assembler or by deleting labels.
Use the PAINST.EXE installer to change initial values of the assembler. You can avoid errors by
customizing the assembler. Refer to chapter 1, "Installation," regarding customization.
Supplemental Explanation:
You can use other editors that support tag jumps (VZ EditorTM, RED++TM).
56
Error Correction Using Tag Jumps
Chapter 4
Optimization
4
Chapter 4 Optimization
4.1
Purpose Of This Chapter
The assembler and linker evaluate source statements coded as conditional branch instructions,
unconditional branch instructions, subroutine call instructions, data move instructions, arithmetic
instructions, and comparison instructions, and then select the optimal instructions that shorten
instruction codes to the maximum possible extent. This is called optimization.
This chapter uses examples to explain what optimization is.
NOTE:
58
Purpose of This Chapter
The assembler and linker make changes to object code, not instruction
mnemonics. Pay close attention to this point when viewing list files. When an @
is displayed before a line number in the list file, it indicates that the statement has
been optimized.
Chapter 4 Optimization
4.2
Rules Of Usage
To use the optimization function, optimization must be turned on by using the Ot option or by placing
an opt directive at the start of the source Þle.
opt
on
NOTE:
Optimization is off by default.
Rules of Usage
59
Chapter 4 Optimization
4.3
Usage Example
Optimization Instructions
The conditional branch instructions, unconditional branch instructions, subroutine call instructions,
move instructions, arithmetic instructions, and comparison instructions shown below will be objects of
optimization.
Table 4-1 Optimized Conditional Branch Instructions
Instruction
BLT LABEL
BGT LABEL
BGE LABEL
BLE LABEL
BCS LABEL
BHI LABEL
BCC LABEL
BLS LABEL
BEQ LABEL
BNE LABEL
BVC LABEL
BVS LABEL
BVC LABEL
BNS LABEL
BLTX LABEL
BGTX LABEL
BLEX LABEL
BCSX LABEL
BHIX LABEL
BCCX LABEL
BLSX LABEL
BEQX LABEL
BNEX LABEL
BVCX LABEL
BVSX LABEL
BVSX LABEL
BNCX LABEL
BNSX LABEL
60
Usage Example
Type
Relative branch
instruction
Branch Range
Branch within -128 to +127 bytes of the PC.
Chapter 4 Optimization
Table 4-2 Optimized Unconditional Branch Instructions
Instruction
BRA LABEL
JMP LABEL
JSR LABEL
Type
Branch Range
Relative branch
instrction
Absolute branch
instruction
Branch within -128 to +127 bytes of the PC
Branch within the 16M-byte memory space.
Table 4-3 Optimized Data Move Instructions
Instruction
MOV An, (abs)
MOV Dn, (abs)
MOV (abs), An
MOV (abs), Dn
MOVB Dn, (abs)
MOVBU (abs), Dn
MOV An, (d, An)
MOV Dn,(d, An)
MOV (d, An), An
MOV (d, An), Dn
MOVB Dn, (d, An)
MOVB (d, An),Dn
MOVBU (d, An), Dn
MOVX Dn, (d,An), Dn
MOVX (d, An), Dn
MOV imm, An
MOV imm, Dn
Type
Absolute addressing
Branch Range
16M-byte memory space
Register relative indirect
addressing
16M-byte memory space.
Immediate addressing
24-bit immediate data.
Table 4-4 Optimized Arithmetic Instructions
Instruction
ADD
ADD
SUB
SUB
imm, An
imm, Dn
imm, An
imm, Dn
Type
Immediate addressing
Branch Range
24-bit immediate data
Table 4-5 Optimized Comparison instructions
Instruction
CMP imm, An
CMP imm, Dn
Type
Immediate addressing
Branch Range
24-bit imediate data.
Usage Example
61
Chapter 4 Optimization
Optimixation processing
The assembler informs the linker about all instructions to be optimized. Based on the information from
the assembler, the linker outputs instruction codes with the smallest code size.
Optimization processing of conditional branch instructions
The linker resolves address values for labels when linking multiple Þles. In the example below, the
linker will determine whether or not the LABEL coded as an operand is within the allowable range of
the current instruction. If not in range, then the linker will replace it with instructions for a wider
branch range.
Take the BEQ instruction for example.
BEQ
LABEL
......
LABEL
The destination label of the BEQ instructions must be in the range -128 to +127. However, the
assembler cannot make that determination, so the following determinations are made during assembly
and linking.
Assembler processing
The assembler outputs information about instructions to be optimized to the linker.
Linker processing
1. The linker inputs information from the assembler.
2. The linker determines if the branch destinations of conditional branches are in range.
3. If determined to be in range, then the linker generates the normal code.
4. If determined to be not in range, then the linker will substitute code that can branch correctly.
The substitution for the above example would be as follows.
BNE
*+5
JMP
LABEL
......
LABEL
62
Usage Example
Chapter 4 Optimization
Table 4-6 Substituted Instructions For Conditional/Unconditional Branch Instructions
Source Instrudtion
Candidate instruction 1
Candidate instruction 2
BLT LABEL
BRA LABEL
BGT LABEL
BGT LABEL
BGE LABEL
BGE LABEL
BLE LABEL
BLE LABEL
BCS LABEL
BCS LABEL
BHI LABEL
BHI LABEL
BCC LABEL
BCC LABEL
BLS LABEL
BLS LABEL
BEQ LABEL
BEQ LABEL
BNE LABEL
BNE LABEL
BVC LABEL
BVC LABEL
BVS LABEL
BVS LABEL
BNC LABEL
BNC LABEL
BNS LABEL
BNS LABEL
BLTX LABEL
BLTX LABEL
BGTX LABEL
BGTX LABEL
BGEX LABEL
BGEX LABEL
BLEX LABEL
BLEX LABEL
BCSX LABEL
BCSX LABEL
BHIX LABEL
BHIX LABEL
BCCX LABEL
BCCX LABEL
BLSX LABEL
BLSX LABEL
BEQX LABEL
BEQX LABEL
BNEX LABEL
BNEX LABEL
BVCX LABEL
BVCX LABEL
BGE *+5
JMP LABEL
BLE *+5
JMP LABEL
BLT *+5
JMP LABEL
BGT * +5
JMP LABEL
BCC *+5
JMP LABEL
BLS *+5
JMP LABEL
BCS *+5
JMP LABEL
BHI *+5
JMP LABEL
BNE *+5
JMP LABEL
BEQ *+5
JMP LABEL
BVS *+6
JMP LABEL
BVC *+6
JMP LABEL
BNS *+6
JMP LABEL
BNC *+6
JMP LABEL
BGEX *+6
JMP LABEL
BLEX *+6
JMP LABEL
BLTX *+6
JMP LABEL
BGTX *+6
JMP LABEL
BCCX *+6
JMP LABEL
BLSX *+6
JMP LABEL
BCSX *+6
JMP LABEL
BHIX *+6
JMP LABEL
BNEX *+6
JMP LABEL
BEQX *+6
JMP LABEL
BVSX *+6
JMP LABEL
Candidate instruction 3
BGE *+7
JMP LABEL
BLE *+7
JMP LABEL
BLT *+7
JMP LABEL
BGT *+7
JMP LABEL
BCC *+7
JMP LABEL
BCC *+7
JMP LABEL
BCS *+7
JMP LABEL
BHI *+7
JMP LABEL
BNE *+7
JMP LABEL
BEQ *+7
JMP LABEL
BVS *+8
JMP LABEL
BVC *+8
JMP LABEL
BNS *+8
JMP LABEL
BNC *+8
JMP LABEL
BGEX *+8
JMP LABEL
BLEX *+8
JMP LABEL
BLTX *+8
JMP LABEL
BGTX *+8
JMP LABEL
BCCX *+8
JMP LABEL
BLSX *+8
JMP LABEL
BCSX *+8
JMP LABEL
BHIX *+8
JMP LABEL
BNEX *+8
JMP LABEL
BEQX *+8
JMP LABEL
BVSX *+8
JMP LABEL
Usage Example
63
Chapter 4 Optimization
Table 4-6 Substituted Instructions For Conditional/Unconditional Branch Instructions
Source Instrudtion
Candidate instruction 1
Candidate instruction 2
BVSX LABEL
BVSX LABEL
BNCX LABEL
BNCX LABEL
BNSX LABEL
BNSX LABEL
BVCX *+6
JMP LABEL
BNSX *+6
JMP LABEL
BNCX *+6
JMP LABEL
Candidate instruction 3
BVCX *+8
JMP LABEL
BNSX *+8
JMP LABEL
BNCX *+8
JMP LABEL
Optimization processing of unconditional branch instructions
If the branch destination of a JMP LABEL unconditional branch instruction is within the range of the
relative branch instruction BRA LABEL, then it will be replaced by BRA LABEL.
Therefore, regardless of whether the JMP instruction or BRA instruction is used, the linker will output
the optimal unconditional branch.
Table 4-7 Substituted Instructions For Unconditional Branch Instructions.
Source Instruction
BRA
JMP
JSR LABEL
64
Usage Example
Candidate Instruction1
BRA D8
BRA D8
JSR LABEL
Candedate Instruction2
JMP d16
JMP d16
JSR LABEL
Candidate Instruction3
JMP d24
JMP d24
Chapter 4 Optimization
Optimization of data move, arithmetic and comparison instructions
Data move, arithmetic, and comparison instructions will be replaced by instructions of the optimal bit
length when operating on immediate data, memory addresses, and relative data. In this manner optimal
code will be output without the user distinguishing between each instruction variation.
Table 4-8 Substituted Instructions For Data Move, Arithmetic, Comparison Instructions
Source instruction
Candidate instruction 1
Candidate instruction 2
Candidate instruction 3
ADD imm, An
ADD imm8, An
ADD imm16, An
ADD imm24, An
ADD imm, Dn
ADD imm8, Dn
ADD imm16, Dn
ADD imm24, Dn
SUB imm, An
SUB imm16, An
SUB imm24, An
SUB imm, Dn
SUB imm 16, Dn
SUB imm24, Dn
CMP imm, An
CMP imm16, An
CMP imm24, An
CMP imm, Dn
CMP imm8, Dn
CMP imm16, Dn
MOV An, (abs)
MOV An, (abs16)
MOV An, (abs24)
MOV Dn, (abs)
MOV Dn, (abs16)
MOV Dn, (abs24)
MOV (abs), An
MOV (abs16), An
MOV (abs)24, An
MOV (abs), Dn
MOV (abs16), Dn
MOV (abs)24, Dn
MOV An, (d, An)
MOV An, (D8, An)
MOV An, (d16, An)
MOV An, (d24, An)
MOV Dn, (d, An)
MOV Dn, (D8, An)
MOV Dn, (d16, An)
MOV Dn, (d24, An)
MOV (d, An), An
MOV (D8, An), An
MOV (d16, An), An
MOV (d24, An), An
MOV (d, An), Dn
MOV (D8, An), Dn
MOV (d16, An), Dn
MOV (d24, An), Dn
MOVB Dn, (abs)
MOVB Dn, (abs16)
MOVB Dn, (abs24)
MOVB Dn, (d, An)
MOVB Dn, (D8, An)
MOVB Dn, (d16, An)
MOVB Dn, (d24, An)
MOVB (d, An), Dn
MOVB (d8, An), Dn
MOVB (d16, An), Dn
MOVB (d24, An), Dn
MOVBU (abs), Dn
MOVBU (A8), Dn
MOVBU (abs16), Dn
MOVBU (abs24), Dn
MOVBU (d, An), Dn
MOVBU (D8, An), Dn
MOVBU (d16, An), Dn
MOVBU (d24, An), Dn
MOV imm, Dn
MOV imm16, An
MOV imm24, An
MOV imm, Dn
MOV imm8, Dn
MOV imm16, Dn
MOV imm24, Dn
MOVX Dn,(d, An)
MOVX Dn, (D8, An)
MOVX Dn,(d16, An)
MOVX Dn, (d24, An)
movx (d, An), Dn
MOVX (D8, An), Dn
MOVX (d16, An),Dn
MOVX (d24, An), Dn
CMP imm24, Dn
Usage Example
65
Chapter 4 Optimization
Example: Branch Destination of Conditional Branch Instruction Within Range
This example shows a branch in the permitted range (-128 to 127 of PC) of a BCC LABEL conditional
branch instruction.
The source list is as follows.
_CODE
opt
on
section
CODE, PUBLIC,2
mov
0, D2
cmp
D1, D2
bcc
func_end
org
addr_set+127
sub_func
addr_set
func_end
rts
end
The final list file after assembly is shown next. The start address during linking is assumed to be 1000
(hex). The @ mark on line number 6 indicates that the instruction was the object of optimization. Here
the branch of BCC LABEL is within range, so the code has not been changed.
***
Loc
mn102L00
081000
081002
081004
Object
8A00
F396
E67F
Cross
Line
1
2
3
4
5
@6
7
8
9
10
11
PROGRAM4.
Assembler
Source
_CODE
sub_func
FE
ROM size is
No errors in
No warnings
528522
this
in this
(Hex. 0008108A)
assembly
assembly
*** Symbol
00081000
00081006
00081085
00081000
Table
A_CODE
T addr_
T func_
T sub_
***
Usage Example
section
CODE, PUBLIC, 2
mov
cmp
bcc
0, D2
D1, D2
func_end
org
addr_set+127
func_end
rts
end
OPT2
66
Page1
addr_set
081089
set
end
func
LST
***
.LST
Page2
Chapter 4 Optimization
Example: Unconditional Branch Instruction Converted To Relative Branch
This example shows a branch outside the permitted range (-128 to +127 of PC) of a BCC LABEL
conditional branch instruction.
The source list is as follows.
_CODE
opt
on
section
CODE, PUBLIC,2
jmp
func_end
org
addr_set+127
sub_func
addr_set
func_end
rts
end
The final list file after assembly is shown next. LABEL exceeds the permitted branch range of BCC
LABEL, so the code has been converted to BCS *+5, JMP LABEL. Note that the mnemonics and object
code are different.
***
Loc
mn102L00
Object
081000
EA7F
081081
FE
ROM size is
528514
Cross
Line
1
2
3
@4
5
6
7
8
9
PROGRAM4.
Assembler
Source
LST
***
Page1
opt
on
section
_CODE
sub_func
CODE, PUBLIC, 2
jmp
func_end
org
addr_set+127
addr_set
func_end
rts
end
00081082)
(Hex.
No errors in
No warnings
in
this
this
***
Table
***
A_CODE
T addr_
T func_
T sub_
assembly
assembly
OPT3
Symbol
00081000
00081006
00081085
00081000
.LST
Page2
set
end
func
Usage Example
67
Chapter 4 Optimization
Example: Unconditional Branch Instruction Converted To Absolute Branch
This example shows the branch destination of a JMP LABEL unconditional branch instruction within
the permitted range (-128 to +127 of PC) for relative branching.
The source list is as follows.
_CODE
opt
on
section
CODE, PUBLIC,2
bra
func_end
org
addr_set+128
sub_func
addr_set
func_end
rts
end
The final list file after assembly is shown next. The branch destination of the JMP LABEL instruction
on line number 4 is in the permitted range for relative branching, so it has been converted to BRA
LABEL. Note that the mnemonics and object code are different.
***
Loc
mn102L00
Object
081000
FC8000
081083
FE
ROM size is
528516
Cross
Line
1
2
3
@4
5
6
7
8
9
PROGRAM4.
Assembler
Source
LST
***
Page1
opt
on
section
_CODE
sub_func
bra
func_end
org
addr_set+128
addr_set
func_end
rts
end
00081084)
(Hex.
No errors in
No warnings
in
this
this
***
Table
***
A_CODE
T addr_
T func_
T sub_
assembly
assembly
OPT4
Symbol
00081000
00081003
00081083
00081000
68
Usage Example
set
end
func
CODE, PUBLIC, 2
.LST
Page2
Chapter 4 Optimization
Optimization of complex branch instructions
For the complex branch instructions, optimizations of both conditional branch and comparison
instructions are performed simultaneously. That is, the source instructions will be replaced by
instructions of the optimal branch range and the optimal bit length.
Table 4-9 Substituted Instructions for Complex Branch Instructions
Source instruction
CBEQ
imm8,(abs),LABEL
CBNE
imm8,(abs),LABEL
TBZ
(abs)bp,LABEL
Candidate
instruction 1
Candidate
instruction 2
CBEQ
imm8,(abs8),LABE
L
(LABEL=d8+PC)
CBEQ
imm8,(abs8),LABE
L
(LABEL=d12+PC)
CBNE
imm8,(abs8),LABE
L
(LABEL=d8+PC)
TBZ
(abs8)bp,LABEL
(LABEL=d8+PC)
CBNE
imm8,(abs8),label
JMP LABEL
label:
(LABEL=abs18)
CBEQ
CBEQ
imm8,(abs16),LABE imm8,(abs16),LABE
L
L
(LABEL=d12+PC)
(LABEL=d8+PC)
CBEQ
imm8,(abs8),label
JMP LABEL
label:
(LABEL=abs18)
CBNE
CBNE
imm8,(abs16),LABE imm8,(abs16),LABE
L
L
(LABEL=d12+PC)
(LABEL=d8+PC)
TBNZ
(abs8)bp,LABEL
(LABEL=d8+PC)
Candidate
instruction 4
CBNE
imm8,(abs16),label
JMP LABEL
label:
(LABEL=abs18)
CBNE
imm8,(abs8),LABE
L
(LABEL=d12+PC)
TBZ
(abs8)bp,LABEL
(LABEL=d12+PC)
CBEQ
imm8,(abs16),label
JMP LABEL
label:
(LABEL=abs18)
TBNZ
(abs8)bp,LABEL
(LABEL=d12+PC)
TBNZ (abs8)bp,label
JMP LABEL
label:
(LABEL=abs18)
TBZ
TBNZ
(abs16)bp,LABEL
(abs16)bp,label
(LABEL=d12+PC)
JMP LABEL
label:
(LABEL=abs18)
TBZ (abs8)bp,label
JMP LABEL
label:
(LABEL=abs18)
TBNZ
(abs16)bp,LABEL
(LABEL=d8+PC)
TBNZ
(abs16)bp,LABEL
(LABEL=d12+PC)
TBZ
(abs16)bp,LABEL
(LABEL=d8+PC)
TBNZ
(abs)bp,LABEL
Candidate
instruction 3
TBNZ
(abs16)bp,label
JMP LABEL
label:
(LABEL=abs18)
Usage Example
69
Chapter 4 Optimization
Optimization of subroutine call instructions
The linker converts subroutine calls (JSR) to the 16 subroutines with the highest frequencies of
appearance to their vector indirect versions (JSRV). Normally this form of optimization automatically
applies to all JSR instructions, but it is also possible to modify the process to force conversion for
speciÞc functions with vecton directives and prohibit conversion for other functions with vectoff
directives. Conversion to the vector indirect versions is limited to functions called a minimum of three
times. When there are multiple functions with the same frequency of appearance eligible for the 16th
position in the vector table, the one with the highest address takes precedence.
NOTE:
The frequencies represent counts based on a static analysis of the source code.
Thus the linker counts a JSR instruction inside a loop only once even though a
dynamic analysis would indicate that the same instruction would be repeated
multiple times during actual execution of the loop.
70
Usage Example
Chapter 4 Optimization
4.3.1
Usage Example
Branch destination of conditional branch instruction within range
This example shows a branch in the permitted range (-1024 to +1023.5 of PC) of a BCC LABEL
conditional branch instruction.
The source list is as follows.
_CODE
opt
on
section
CODE, PUBLIC, 0
mov
0, D2
cmp
D1, D2
bcc
func_end
org
addr_set+1023.5
sub_func
addr_set
func_end
rts
end
Usage Example
71
Chapter 4 Optimization
The Þnal list Þle after assembly is shown next. The start address during linking is assumed to be 4100
(hex). The @ mark on line number 6 indicates that the instruction was the object of optimization. Here
the branch of BCC LABEL is within range, so the code has not been changed.
OPT1LST
***
mn101C101d0 Cross
0
Loc
Object
Line
Assembler
***
Source
1
2
_CODE
3
sub_func
opt
on
section
CODE, PUBLIC,0
004100
AA00
4
mov
0,D2
004102
326
5
cmp
D1, D2
004103_
9CFF7
@6
bcc
func_end
org
addr_set+1023.5
7
addr_set
8
9
004505_
01
func_end
10
rts
11
end
ROM size is
1031
No error in
this
(Hex.
00000407)
assembly
No warning
in this
this assembly
opt1.LST
72
Page1
*** Symbol
Table
00004100
T _CODE
00004106
T addr_set
00004505_
T func_end
00004100
T sub_func
Usage Example
***
Page 2
Chapter 4 Optimization
Branch destination of conditional branch instruction out of range
This example shows a branch outside the permitted range (-1024 to +123.5 of PC) of a BCC LABEL
conditional branch instruction.
The source list is as follows.
_CODE
opt
on
section
CODE, PUBLIC, 0
mov
0, D2
cmp
D1, D2
bcc
func_end
org
addr_set+1024
sub_func
addr_set
func_end
rts
end
Usage Example
73
Chapter 4 Optimization
The Þnal list Þle after assembly is shown next. LABEL exceeds the permitted branch range of BCC
LABEL, so the code has been converted to BCS *+5, JMP LABEL. Note that the mnemonics and
object code are different.
OPT2LST
***
mn101C101d00
Loc
Object
Cross
Assembler
Line
Source
1
opt
2
_CODE
3
sub_func
004100
AA00
4
004102
326
5
004103_
8D7039090547 @6
7
section
cmp
D1, D2
func_end
org
addr_set+1023.5
addr_set
func_end
01
10
rts
11
end
ROM size is
1034
(Hex. 0000040A)
No error in
this
assembly
No warning
in this
assembly
*** Symbol
Table
00004100
T _CODE
00004109
T addr_set
00004509
T func_end
00004100
T sub_func
opt2.LST
74
Usage Example
0,D2
bcc
004509
***
on
CODE, PUBLIC,0
mov
8
9
Page1
***
Page 2
Chapter 4 Optimization
Unconditional branch instruction converted to relative branch
This example shows the branch destination of a JMP LABEL unconditional branch instruction within
the permitted range (-1024 to +1023.5 of PC) for relative branching.
The source list is as follows.
_CODE
opt
on
section
CODE, PUBLIC, 0
jmp
func_end
cmp
D1, D2
bcc
func_end
org
addr_set+1023.5
sub_func
addr_set
func_end
rts
end
The Þnal list Þle after assembly is shown next. The branch destination of the JMP LABEL instruction
on line number 4 is in the permitted range for relative branching, so it has been converted to BRA
LABEL. Note that the mnemonics and object code are different.
Usage Example
75
Chapter 4 Optimization
OPT3LST
***
mn101C101D0 Cross
0
Loc
Object
Line
Assembler
Source
1
004100
99FF7
2
_CODE
3
sub_func
@4
5
01
8
ROM size is
1027
(Hex.
No error in
this
assembly
No warning
in this
assembly
*** Symbol
Table
00004100
T _CODE
00004102_
T addr_set
00004502
T func_end
00004100
T sub_func
9
jmp
func_end
cmp
D1, D2
org
addr_set+1023.5
rts
org
end
00000403)
opt3.LST
76
on
CODE, PUBLIC,0
func_end
004502
***
opt
section
addr_set
6
7
Page1
***
Page 2
addr_set+1023.5
Chapter 4 Optimization
Unconditional branch instruction converted to absolute branch
This example shows the branch destination of a BRA LABEL unconditional branch instruction outside
the permitted range (-1024 to +1023.5 of PC) for relative branching.
The source list is as follows.
_CODE
opt
on
section
CODE, PUBLIC, 0
bra
func_end
org
addr_set+1024
sub_func
addr_set
func_end
rts
end
The Þnal list Þle after assembly is shown next. The branch destination of the BRA LABEL instruction
on line number 4 is outside the permitted range for relative branching, so it has been converted to JMP
LABEL. Note that the mnemonics and object code are different.
OPT4LST
***
mn101C101D0 Cross
0
Loc
Object
Line
Assembler
Source
1
004100
3913054
2
_CODE
3
sub_func
@4
5
004503_
01
No warning
in this
assembly
(Hex.
T addr_set
T func_end
00004100
T sub_func
org
addr_set+1024
00000405)
opt4.LST
00004503_
func_end
end
assembly
00004103_
bra
rts
this
T _CODE
CODE, PUBLIC,0
9
1029
Table
section
8
No error in
00004100
on
func_end
ROM size is
*** Symbol
opt
addr_set
6
7
Page1
***
Page 2
***
77
Chapter 4 Optimization
78
Chapter 5
Using Assembler
5
Chapter 5 Using Assembler
5.1
Purpose of This Chapter
This chapter explains operation of the Cross-Assembler. Many options are provided by the assembler.
This chapter includes examples to aid its explanations.
Assembler operation can be classiÞed into three target uses.
¥
Normal assembly
¥
Generation of Þnal list Þle with resolved addresses
¥
Display of help screen for assembler operation
The appropriate object is decide by specifying options.
80
Purpose of This Chapter
Chapter 5 Using Assembler
5.2
Starting Assembler
The assembler is started by entering a command name and parameters, just as for other MS-DOS
external commands.
General format of commands
Below is the general format of the command to use when starting the assembler.
AS102L [options] source_filename
Contents of brackets [ ] may be omitted.
Specifying options
An option starts with a slash (/) or hyphen (-) as the options speciÞer, followed by a character that
indicate the particular option.
/l or -l
Option speciÞcations are case sensitive, so upper case and lower case letters must be speciÞed
correctly.
-Lc
Single-character options not accompanied by parameters can be speciÞed as multiple characters
following the slash (/) or hyphen (-) option speciÞer. The order is optional.
/lcgrj or -crjgl
When an option is accompanied by a parameter and other options are to follow, add a space after the
parameter, and then follow with the slash (/) or hyphen (-) option speciÞer.
-IA:\USER\SOURCE
-Li -Lc
Parameters can be speciÞed right after the option character or separated by one space.
/w100 or -w
100
When options are omitted, assembly will be performed in accordance with the default interpretations
built in to the assembler. Refer to section 3.3, "Command Options", for default interpretations.
Starting Assembler
81
Chapter 5 Using Assembler
82
NOTE:
When path names are not specified, the assembler will assume that files are in
the current directory on the current drive. When only a source file path name and
file name are specified, the assembler will generate the list file and relocatable
object file in the source file's directory.
When the source file extension is omitted, the assembler will assume .ASM. The
following example will cause the source file name to be SAMPLE.ASM. The
assembler will generate the list file (SAMPLE.LST) and relocatable object file
(SAMPLE.RF) in the directory of the source file.
A>AS102L -l SAMPLE
When the source file is specified with a path name, the assembler will also
generate the list file and relocatable object file in the same directory as the
source file.
A>AS102L -l B:\USR\SAMPLE
By using the o option, you can generate the relocatable file in a directory other
than that of the source file.
A>AS102L -l -o B:\USER\BIN\SAMPLE.RF SAMPLE.ASM
The above example will assemble the source file (SAMPLE.ASM) in the current
directory, will output the list file (SAMPLE.LST) in the current directory, and will
output the relocatable object file (SAMPLE.RF) in the B drive's \USER\BIN
directory.
NOTE:
Windows 9X will be hung up if specifying a file name including a drive name which
is not connected to your computer under MS-DOS mode of Windows 9X.
C: >AS102L
-l
-0t
B: SAMPLE.ASM
( in case the drive B does not exist.)
Starting Assembler
Chapter 5 Using Assembler
Below is a list of options
.
Table 5-1 Assembler Options
Option Type
Symbol
Output Þle Options O Þle_name
l
c
Li
Lm
Ls
Lc
a map_Þle name
Xl
Error message
options
j
e
W number
Preprocessor
options
Wall
I path_name
D identiÞer
Program generation g Þle.
options
r
Other
Od
Ot
h
Description
Specify the relocatable object Þle name to be output.
Output a list Þle.
Append a cross-reference to the list Þle.
Do not output Þles included by include to the list Þle.
Do not output assembler source created by macro expansion
using macro or irp to the list Þle. Output only the machine
language code.
Do not output a symbol table to the list Þle.
Do not output source statements that were not assembled due
Read the map Þle to output a list Þle with resolved
addresses.
Output the list Þle to the same directory as the relocatable
object Þle.
Output error and warning messages in Japanese. Output will
be to the screen and, when a list Þle is speciÞed, to the list
Þle.
Output error and warning messages in English. Output will
be to the screen and, when a list Þle is speciÞed, to the list
Þle.
Do not output warning messages of the speciÞed number.
Output will not be performed to either the screen or list Þle.
Refer to chapter 10, "Error Messages", for warning
messages and their corresponding numbers
Do not output any warning messages.
SpeciÞes the path name of the directory that contains Þles
speciÞed by include.
Specifies an identifier to be used by ifdef during conditional
assembly.
Output debug information to the relocatable object Þle.
Output a relocatable object Þle even if errors are detected in
the source Þle.
Turn off optimization
Turn on optimization
Output help information about assembler options to the
screen
Starting Assembler
83
Chapter 5 Using Assembler
Assembler and linker directories
When the assembler is in the same directory as the source Þle, it can be speciÞed by a direct command.
When in a different directory, the assembler's directory must have been speciÞed with the PATH
command. The examples below assume the following directory hierarchy.
A:
\BIN
AS102L.EXE
LD102L.EXE
\TOOL
EDITOR
\USER
\SOURCE
\SAMPLE.ASM
\SAMPLE.LST
\OBJ
\SAMPLE.RF
Table 5-1 Command Directory Example
Assuming that the current directory is A:\USER\SOURCE, the assembler is started as follows.
A>PATH A:\BIN\102L00 -l -o A: \USER\OBJ\SAMPLE SAMPLE
A>PATH A: \BIN
A>AS102L -l -o A:\USER\OBJ\SAMPLE SAMPLE
84
Starting Assembler
or
Chapter 5 Using Assembler
5.3
Command Options
This section describes the options used by the assembler. The assembler has many options for
controlling assembler processing and Þle output.
Assembler operation can be divided into the three categories below based on the reason for its use.
Normal assembly
With section address format, the addresses of each section are determined by linking. Therefore unless
your intention is to output an error Þle, you cannot debug after assembly even if a list Þle is output by
the l option. The same holds for the c option.
Generation of Þnal list Þle with resolved addresses
When programs are in section address format, addresses are not resolved until after the program has
passed through the linker. To resolve them, you must generate a map Þle with the linker and then reassemble the source Þle using the generated map information, thereby generating a list Þle with
resolved addresses. Use the a and l options to do this.
Display of help screen
The h option will output assembler operation information to the screen.
Thus all options are not valid at the same time. Furthermore, even when some options are not speciÞed
the assembler will use pre-determined default values. The default values have been set to values that
are frequently used, so if the default values are acceptable then you can omit many option
speciÞcations. For details on default interpretations, refer the descriptions of the options in question.
Command Options
85
Chapter 5 Using Assembler
5.3.1
Output File Options
o file_name
Specify the relocatable object file name to be output
Functional description
The o option speciÞes the relocatable object Þle name to be output by the assembler. If the speciÞed
Þle already exists, then its previous contents will be erased. If a path name that does not exist is
speciÞed, then the assembler will display an error message and suspend processing.
If specifying an extension, the extension will be the speciÞed one.
If omitting an extension, the extension will be .RF.
o option type
generated files
-o test
-o test.rf
-o test.obj
test.rf
test.rf
test.obj
NOTE:
Because the @ symbol is used as the character for specifying parameter files, it
cannot be used as the first character of file names
Rules of use
The o option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'o', then either immediately followed by the Þle name or a space and the Þle name. If
the Þle is to be output to the current directory, then only the Þle name needs to be speciÞed. If the Þle
is to be output to a different directory, then both a path name and a Þle name must be speciÞed.
AS102L -o A:\USER\OBJ\TEST MAIN
Default speciÞcation
By default the assembler will generate a Þle with the source Þle name and extension .RF in the same
source directory as the source Þle.
If no path name is speciÞed for the source Þle, then the assembler will assume the current directory of
the current drive.
86
Command Options
Chapter 5 Using Assembler
Operation example
This example assembles a source Þle (SAMP1.ASM) in the current directory, and generates a
relocatable Þle with the name SAMP1.RF in the A drive's \USER\OBJ directory.
A>AS102L -o A:\USER\OBJ\SAMP1 SAMP1
PanaX Series MN102L00 Assembler Version 3.1 Release 1.1.1
(c)Copyright 1994 Panasonic/KMC
SAMP1.ASM
ROM size is 11 (Hex. 0000000B)
No error in this assembly
No warning in this assembly
A>DIR A:\USER\OBJ
Volume in
drive A:
Directory of
A:\USER\OBJ
.
is SYSTEM
<DIR>
..
93-06-21
<DIR>
SAMP1
RF
2277376
bytes free
267
11:55
93-06-21
11:55
93-06-21
11:56
3 file(s)
Command Options
87
Chapter 5 Using Assembler
I
Output a list file
Functional description
The l option outputs a list Þle. The Þle name of the list Þle will be the source Þle name with the
extension .LST. The list Þle will be generated in the same directory as the source Þle.
If any assembler errors are detected, then error information will also be written to the list Þle.
Refer to chapter 3, ÒIntroduction To OperationÓ, regarding high-level error correction using an editorÕs
tag jump functions\.
Rules of use
The l option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'l'. If multiple options without parameters are to be speciÞed, then they can all be
speciÞed after a single option speciÞcation character. A parameter following the option should be
delimited by a space before the next option starts.
AS102L -l SAMPLE
Default speciÞcation
No list Þle will be output.
88
Command Options
Chapter 5 Using Assembler
Operation example
This example assembles a source Þle (SAMP1.ASM) and generates a list Þle (SAMP1.LST) in the
same directory. You can see that both output Þles are generated in the same directory.
A>AS102L -l SAMP1
PanaX Series MN102L00 Assembler Version 3.2 Release 1.1.1
(c)Copyright 1994 Panasonic/KMC
SAMP1.ASM
ROM size is 11 (Hex. 0000000B)
No error in this assembly
No warning in this assembly
A>DIR SAMP1.*
Volume in
drive A:
is SYSTEM
Directory of
A:
\MN102L00
SAMP1
ASM
209
SAMP1
RF
267
93-06-21
11:54
SAMP1
LST
1144
93-06-21
11:54
93-06-21
11:07
3 file(s)
2269184 bytes free
Command Options
89
Chapter 5 Using Assembler
c
Output a cross-reference
Functional description
The c option outputs symbol reference information during assembly by appending it to the list Þle. If
the c option is speciÞed, then even when the l option is not speciÞed a list Þle will be generated
automatically.
The following information is written in the cross-reference.
¥
symbol names
¥
addresses, values assigned to symbols
¥
symbol types
¥
line numbers of source statements that reference or declare the symbols
If you create a program split between multiple Þles, then specify the cross-reference when you generate
the Þnal list Þle after having generated a map Þle with the linker. This allows you to create a list Þle
and cross-reference table with resolved addresses.
Rules of use
The c option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'c'. If multiple options without parameters are to be speciÞed, then they can all be
speciÞed after a single option speciÞcation character. A parameter following the option should be
delimited by a space before the next option starts.
AS102L -c SAMPLE
Default speciÞcation
No cross-reference will be output.
90
Command Options
Chapter 5 Using Assembler
Operation example
This example assembles a source Þle (SAMP1.ASM) with the c option and generates a list Þle
(SAMP1.LST). You can see that a cross-reference table will be appended to the list Þle.
The + before line numbers 4, 6, 7, and 9 indicates that the machine language code is not the Þnal code.
A>AS102L00 -c SAMP1
A>TYPE SAMP1.LST
SAMP1.LST
Page 1
***
mn102L00
Cross
Assembler
***
Loc
object
Line
Source
1
_CODE
2
main
section
CODE, PUBLIC,2
000000
8001
3
mov
1, D0
000002
F4E1000000
+4
mov
data, A0
000007
00
5
mov
D0, (A0)
000008
F4E1000000
+6
jsr
subr
00000D
EA00
R7
bra
main
00000F
F474000000
+9
mov
data, A0
000014
20
10
mov
(A0), D0
000015
8501
11
mov
1, D1
000017
F284
12
addc
D1, D0
000019
00
13
mov
D0, (A0)
00001A
FE
14
rts
8
subr
15
000000
0000
16
_DATA
section
DATA, PUBLIC, 2
17
data
dw
0
18
19
end
20
ROM size
is 29
(HEX.
0000001D)
No error
in this
assembly
No warning
in this
assembly
***
Reference
SAMP1.LST
Cross
Table
Page2
***
_CODE
00000000
ABS
#SAMP1.ASM(1)
_DATA
00000000
ABS
#SAMP1.ASM(16)
data
00000000
DAT
SAMP1.ASM(4)
SAMP1.ASM(4)
SAMP1.ASM(4)
SAMP1.ASM(9)
SAMP1.ASM(9)
SAMP1.ASM(9)
Command Options
91
Chapter 5 Using Assembler
#SAMP1.ASM(17)
main
00000000
TXT
#SAMP1.ASM(2)
SAMP1.ASM(7)
subr
0000000F
TXT
SAMP1.ASM(6)
#SAMP1.ASM(8)
The information output in the cross-reference table lists symbols, their values or addresses, types, and
file names and line numbers where the symbols are coded (the numbers in parentheses).
92
Command Options
Chapter 5 Using Assembler
Li
Do not output files included by include to the list file
Functional description
The Li option suppresses output of source Þle contents included by assembler directive (#include) to
the list Þle. However, the machine language code will be written to the relocatable object Þle.
This option is convenient when you need a listing only for a particular source Þle while debugging.
The Li option speciÞcation will be ignored for source Þles that do not have any #include statements.
Rules of use
The Li option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
upper-case letter 'L' and lower-case letter 'i'. The pair of characters of Li are handled as a single option.
If multiple options without parameters are to be speciÞed, then they can all be speciÞed after a single
option speciÞcation character. A parameter following the option should be delimited by a space before
the next option speciÞcation character starts.
AS102L -Lil SAMPLE
NOTE:
The Li option is used in conjunction with the l option (lower-case 'l', list output).
Default speciÞcation
Source Þles included by include will be output to the list Þle.
Command Options
93
Chapter 5 Using Assembler
Operation example
This example shows two source Þles (SAMP2.H and SAMP2.ASM). SAM2.H is a header Þle that
deÞnes data, and is included in SAMP2.ASM with an include directive.
NOTE:
Files included with include must not terminate with the end directive.
A>TYPE SAMP2.H
DATA1
equ
0x11
DATA2
equ
0x22
DATA2
equ
0x33
A>TYPE SAMP2.ASM
#include
ÒSAMP2.HÓ
_CODE
section
CODE, PUBLIC, 0
movw
data1, A0
mov
1, D0
main
mov
D0, (A0)
movw
data2, A0
mov
2, D0
mov
D0, (A0)
movw
data3, A0
mov
3, D0
mov
D0, (A0)
end
94
Command Options
Chapter 5 Using Assembler
First try assembling without the Li option. The list Þle will be as follows.
Lines where the line number is preceded by a period (.) are statements that were included by include.
A>102L -l SAMP2
A>TYPE SAMP2.LST
SAMP2.LST
Page 1
***
mn102L00
Cross
Assembler
***
Loc
object
Line
Source
1
#include
ÒSAMP2.HÓ
=00000011
.1
data1
equ
0x11
=00000022
.2
data2
equ
0x22
=00000033
.3
data3
equ
0x33
3
_CODE
section
CODE, PUBLIC, 2
4
main
2
000000
DC1100
5
mov
data1, A0
000003
8001
6
mov
1, D0
000005
00
7
mov
D0, (A0)
000006
DC2200
8
mov
data2, A0
000009
8002
9
mov
2, D0
00000B
00
10
mov
D0, (A0)
00000C
DC3300
11
mov
data3, A0
00000F
8003
12
mov
3, D0
000011
00
13
mov
D0, (A0)
14
end
ROM size
is 18
No error
in this
(HEX.
00000012)
assembly
No warning
in this
assembly
SAMP2.LST
***
Symbol
Table
00000000
T _CODE
00000011
A data1
00000022
A data2
00000033
A data3
00000000
T main
NOTE:
Page2
***
Supplemental Explanation
Further include directives can be written within include files. Up to three include
nesting levels are allowed. Refer to section 10.2, "#include", for details
Command Options
95
Chapter 5 Using Assembler
Next, look at part of the list Þle when assembled with the Li option. You can see that source statements
included with include have not been output.
A>AS102L -lLi SAMP2
A>TYPE SAMP2.LST
SAMP2.LST
Page 1
***
mn102L00
Cross
Assembler
***
Loc
object
Line
Source
1
#include
ÒSAMP2.HÓ
3
_CODE
section
CODE, PUBLIC, 2
4
main
2
000000
CD1100
5
mov
data1, A0
000003
8001
6
mov
1, D0
000005
00
7
mov
D0, (A0)
000006
DC2200
8
mov
data2, A0
000009
8002
9
mov
2, D0
00000B
00
10
mov
D0, (A0)
00000C
DC3300
11
mov
data3, A0
00000F
8003
12
mov
3, D0
000011
00
13
mov
D0, (A0)
ROM size
is 18
(HEX.
14
end
00000012)
No error
in this
assembly
No warning
in this
assembly
***
Table
SAMP2.LST
96
Symbol
00000000
T _CODE
00000011
A data1
00000022
A data2
00000033
A data3
00000000
T main
Command Options
***
Page2
Chapter 5 Using Assembler
Lm
Do not output assembler source created by macro expansion to the list file
Functional description
The Lm option suppresses output of assembler source created by macro expansion using macro
directives macro and irp to the list Þle. Only display of machine language instruction mnemonics will
be suppressed; machine language code will be output.
By using names that represent their processing actions, macro names can make listings easier to read.
In such cases, listings without expanded mnemonics will be easier to look at. This is why the Lm
option is provided.
If the l option is not speciÞed, then the Lm option will be ignored even if speciÞed. Source Þles with
no macro expansion will be assembled normally even if assembled with the Lm option.
Rules of use
The Lm option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by
the upper-case letter 'L' and lower-case letter 'm'. The pair of characters of Lm are handled as a single
option. If multiple options without parameters are to be speciÞed, then they can all be speciÞed after a
single option speciÞcation character. A parameter following the option should be delimited by a space
before the next option speciÞcation character starts.
AS102L -Lml SAMPLE
NOTE:
The Lm option is used in conjunction with the l option (lower-case 'l', list output
Default speciÞcation
Source statements expanded from macros will be output to the list Þle.
Command Options
97
Chapter 5 Using Assembler
Operation example
First see part of the source list when the source Þle (SAMP3.ASM) has been assembled without the Lm
option.
Lines where the line number is preceded by 'M' are macro expansion lines.Lines where the line number
is followed by '+' are expanded source statements, where the machine language codes are output in the
Object Þeld and the machine language mnemonics are output in the Source Þeld.
A>AS102L -l SAMP3
A>TYPE SAMP3.LST
***
Loc
98
mn102L0
object
=00000080
=00000090
000000
000002
000005
000006
000008
00000B
8011
DC8000
00
8011
DC8000
00
00000C
00000E
000011
000012
000014
000017
8022
DC9000
00
8022
DC9000
00
ROM size is
No error
No warning
24
in this
in this
***
Table
Symbol
Command Options
Cross
Line
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
M16
16+
16+
16+
17
18
19
M20
20+
20+
20+
21
22
23
24
25
(HEX.
***
SAMP3.LST
Assembler
Source
val1
var2
Page 1
***
equ
equ
0x80
0x90
*macro
dat_set
defenition
macro
mov
mov
mov
endm
------adr, dat
dat, D0
adr, A0
D0, (A0)
section
CODE, PUBLIC, 2
expansion
--------
dat_set
mov
mov
mov
mov
mov
mov
dat_set
mov
mov
mov
mov
mov
mov
end
var1, 0x11
0x11, D0
var1, A0
D0, (A0)
0x11, D0
var1, A0
D0, (A0)
var2, 0x22
0x22, D0
var2, A0
D0, (A0)
0x22, D0
var2, A0
D0, (A0)
*
_CODE
*
*macro
main
00000018)
assembly
assembly
SAMP3.LST
Page2
Chapter 5 Using Assembler
00000000
00000000
00000080
00000090
T
T
A
A
_CODE
main
var1
var2
Command Options
99
Chapter 5 Using Assembler
Next, try assembling the same source file with the Lm option. You can see that the machine language
code of macro expansion lines is output correctly, but the mnemonics are not output.
A>AS102L -lLm SAMP3
A>TYPE SAMP3.LST
***
Loc
mn102L00
object
=00000080
=00000090
000000
000002
000005
000006
000008
00000B
A011
DC8000
00
8011
DC8000
00
00000C
00000E
000011
000012
000014
000017
8022
DC9000
00
8022
DC9000
00
ROM size is
No error
No warning
24
in this
in this
*** Symbol
00000000
00000000
00000080
00000090
Table
T _CODE
T main
A var1
A var2
100 Command Options
Cross
Line
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
M16
16+
16+
16+
17
18
19
M20
20+
20+
20+
21
22
23
24
25
(HEX.
***
SAMP3.LST
Assembler
Source
val1
var2
Page 1
***
equ
equ
0x80
0x90
*macro
dat_set
defenition
macro
mov
mov
mov
endm
------adr, dat
dat, D0
adr, A0
D0, (A0)
section
CODE, PUBLIC, 2
expansion
--------
dat_set
var1, 0x11
mov
mov
mov
dat_set
0x11, D0
var1, A0
D0, (A0)
var2, 0x22
mov
mov
mov
end
0x22, D0
var2, A0
D0, (A0)
*
_CODE
*
*macro
main
00000018)
assembly
assembly
SAMP3.LST
Page2
Chapter 5 Using Assembler
Suppress output source statements of unfulfilled conditions of conditional
assembly to the list file
Lc
Functional description
The Lc option suppresses output of blocks of unsatisÞed conditions with conditional assembly to the
list Þle. It also suppresses output of source statements of conditional directives.
Rules of use
The Lc option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by
the upper-case letter 'L' and lower-case letter 'c'. The pair of characters of Lc are handled as a single
option. If multiple options without parameters are to be speciÞed, then they can all be speciÞed after a
single option speciÞcation character. A parameter following the option should be delimited by a space
before the next option speciÞcation character starts.
NOTE:
The Lc option is used in conjunction with the l option (lower-case 'l', list output).
AS102L -Lcl SAMPLE
Default speciÞcation
UnfulÞlled conditional statements will be output to the list Þle.
Command Options 101
Chapter 5 Using Assembler
Operation example
The example below uses conditional assembly directives (deÞne and ifdef). VERSION has been
deÞned by a deÞne directive, so the block following ifdef (in the example, "mov 0X11,D0") will be
assembled, and the block between else and endif (in the example, "mov 0X22,D0") will not be
assembled.
First, look at the source list when assembled without the Lc option.
A>AS102L -l SAMP4
A>TYPE SAMP4.LST
SAMP4.LST
Page 1
***
***
mn102L00
Cross
Assembler
Loc
object
Line
Source
1
#define
VERSION
3
_CODE
section
4
main
5
#ifdef
2
000000
8011
6
7
2
in this assembly
in this assembly
(HEX.
***
Table
***
00000000
A_CODE
00000000
T main
mov
0x22, D0
end
00000002)
SAMP4.LST
Symbol
0x11, D0
#endif
10
ROM size is
No error
No warning
VERSION
mov
#else
X
9
CODE, PUBLIC, 2
Page2
Lines marked with X for the line number are source statements unexpanded because a condition was not
satisfied, so no machine language code is output.
102 Command Options
Chapter 5 Using Assembler
Next, look at the source list when the same source Þle is assembled with the Lc option. Only the source
statement of the fulÞlled condition is output. You can see that the unfulÞlled statements and the
assembler directives themselves are not output.
A>AS102L -lLc SAMP4
A>TYPE SAMP4.LST
SAMP4.LST
Page 1
***
***
mn102L00
Cross
Assembler
Loc
object
Line
Source
1
#define
VERSION
3
_CODE
section
CODE, PUBLIC,2
4
main
6
mov
0x11, D0
10
end
2
000000
7011
ROM size is
No error
No warning
2
in this assembly
in this assembly
(HEX.
***
Table
***
00000002)
SAMP4.LST
Symbol
00000000
A _CODE
00000000
T main
Page2
Command Options 103
Chapter 5 Using Assembler
Ls
Do not output a symbol table to the list file
Functional description
The Ls option suppresses output of a symbol table when the list Þle is output.
Rules of use
The Ls option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
upper-case letter 'L' and lower-case letter 's'. The pair of characters of Ls are handled as a single option.
If multiple options without parameters are to be speciÞed, then they can all be speciÞed after a single
option speciÞcation character. A parameter following the option should be delimited by a space before
the next option speciÞcation character starts.
AS102L -Lsl SAMPLE
NOTE:
The Ls option is used in conjunction with the l option (lower-case 'l', list output
Default speciÞcation
A symbol table will be output.
104 Command Options
Chapter 5 Using Assembler
a map_filename
Generate a list file with resolved addresses
Functional description
The a option is used to generate a Þnal list Þle with resolved addresses.
First you must have generated a map Þle (.MAP) by specifying the m option with the linker. Then
using this map Þle, reassemble with the a option to generate the Þnal list Þle.
If the wrong map Þle is speciÞed, then the assembler help screen will be displayed on the screen.
Rules of use
The a option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'a', then followed by the map Þle name. If no Þle extension is speciÞed, the .MAP will
be assumed. If an extension is included in the speciÞcation, then any extension is allowed.
AS102L -l -a SAMPLE SAMPLE
NOTE:
When specifying the a option, always specify the l option to output a list file. No
list file will be generated if only the a option is specified.
Default speciÞcation
The assembler will not generate a Þnal list Þle with addresses resolved by a map Þle.
Command Options 105
Chapter 5 Using Assembler
Operation example
This example assembles a source Þle (SAMP5.ASM), links it, and then generates a Þnal list Þle.
First, assemble the source Þle with the l option and look at the list Þle at a stage when addresses are not
resolved.
A>AS102L -l SAMP5
A>TYPE SAMP5.LST
SAMP5.LST
Page 1
***
mn102L00
Cross
Assembler
***
Loc
object
Line
Source
=000000AB
1
var
equ
0xab
3
_CODE
section
CODE, PUBLIC, 2
4
main
2
000000
DCAB00
5
mov
var, A0
000003
F4E1000000
+6
jsr
subr
000008
EA00
R7
bra
main
00000A
8011
9
mov
0x11, D0
00000C
00
10
mov
D0, (A0)
00000D
FE
11
rts
12
end
8
ROM size is
No error
No warning
14
in this
in this
(HEX.
***
Table
***
subr
0000000E)
assembly
assembly
SAMP5.LST
Symbol
00000000
A _CODE
00000000
T main
00000008
T subr
000000AB
A var
Page2
The + on line numbers 6 and 7 indicates that the machine language code is not the final value.
The R on line 7 indicates that this line includes a relocatable symbol (a symbol whose value is determined at link time).
Also, the list location starts from 000000. This will be the relative value before linking.
106 Command Options
Chapter 5 Using Assembler
Next, link this Þle located from address 4100 (hex.) and generate a map Þle. Then using that map Þle,
generate a Þnal list Þle with resolved addresses.
A>LD102L -m -T_CODE=4100 SAMP5
A>AS102L -la SAMP5 SAMP5
A>TYPE SAMP5.LST
SAMP5.LST
Page 1
***
mn102L00
Cross
Assembler
***
Loc
object
Line
Source
=000000AB
1
var
equ
0xab
3
_CODE
section
CODE, PUBLIC, 2
4
main
2
080100
DCAB00
5
mov
var, A0
080103
F4E1020000
6
jsr
subr
080108
EAF6
7
bra
main
08010A
8011
9
mov
0x11, D0
08010C
00
10
mov
D0, (A0)
08010D
FE
11
rts
ROM size is
No error
No warning
524558
in this assembly
in this assembly
(HEX.
***
Table
***
8
subr
12
end
0008010E)
SAMP5.LST
Symbol
00080100
A _CODE
00080100
T main
0008010A
T subr
000000AB
T var
Page2
You can verify that the + on line number 6 and the R on line number 7 disappeared once the addresses
were resoloved. Also you can see that the location counter was placed from address 80100(hex.).
Command Options 107
Chapter 5 Using Assembler
For reference, here are the contents of the map file used.
A>TYPE SAMP5.MAP
#MEMORY MAP
INFORMATION
;Address
Length
Class
:0X004100
0x0000000C
CODE
;Address
Length
Section
Class
:0X004100
0X0000000C
_CODE
SAMP5.RF
;
;
;Address
Length
Section
File
:0X004100
0X0000000C
_CODE
SAMP5.RF
#LOCAL SYMBOL
INFORMATION
;(Clas: F=File,
L=Local,
G=Global)
;(Type: TEXT=Text
Type, ABS=Absolute
Type)
Type/Size
Symbol Name
;
;Value
Clas
:0X000000
F
0X000C
SAMP5.RF
:0X004100
L
TEXT
main
:0X004108
L
TEXT
subr
108 Command Options
Count
Chapter 5 Using Assembler
Xl
Output the list file to the same directory as the relocatable object file.
Functional description
The assembled list Þle is output to the same directory as the relocatable object Þle. The list Þle is
named with the .LST extension appended to the relocatable object Þle name.
Rules of use
The Xl option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
letter 'Xl'. 'X' is an upper-case letter and 'l' is a lower-case letter. These two letters, 'Xl', are treated as a
single option character. If multiple options without parameters are to be speciÞed, then they call all be
speciÞed after a single option speciÞcation character. A parameter following the option should be
delimited by a space before the next option speciÞcation character starts.
Default speciÞcation
The list Þle is not output.
Operation example
This example assembles the source Þle (SAMPLE.ASM) and outputs the list Þle (SAMPLE.LST) and
the relocatable object Þle to the C:\USER\OBJ directory.
A>AS102L -Xl -o A:\USER\OBJ\SAMPLE SAMPLE
Command Options 109
Chapter 5 Using Assembler
5.3.2
Error Message Options
j
Output error and warning messages in Japanese
Functional description
The j option displays messages for errors and warnings detected in assembler commands and assembler
processing to the screen and list Þle in Japanese. This option is used when English has been made the
default by user customization.
Rules of use
The j option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'j'. If multiple options without parameters are to be speciÞed, then they can all be
speciÞed after a single option speciÞcation character. A parameter following the option should be
delimited by a space before the next option speciÞcation character starts.
AS102L -j SAMPLE
Default speciÞcation
Display will be in Japanese.
By customizing the assembler, the output message default can be changed to English. Refer to section
1.3.5 ,"User Customization".
110 Command Options
Chapter 5 Using Assembler
Operation example
Below is the screen display when a source Þle (SAMP6.ASM) that includes errors is assembled with
the j option.
A>AS102L -j SAMP6
PanaX Series MN102L00 Assembler Version 3.2 Release 1.1.1
(c)Copyright 1994 Panasonic/KMC
SAMP6.ASM
5
move
0x11 ,D0
SAMP6.ASM(5): Error 2000: Syntax error.
000002
F440FFFFFF
6
mov
D0,(data)
SAMP6.ASM(6): Warning 2054: Illegal RAM address.
7
main
SAMP6.ASM(7): Error 2003: Symbol defined twice.
ROM size is 7 (Hex. 00000007)
2 errors in this assembly
1 warning in this assembly
Command Options 111
Chapter 5 Using Assembler
e
Output error and warning messages in English
Functional description
The e option displays messages for errors and warnings detected in assembler commands and
assembler processing to the screen and list Þle in English.
Rules of use
The e option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'e'. If multiple options without parameters are to be speciÞed, then they can all be
speciÞed after a single option speciÞcation character. A parameter following the option should be
delimited by a space before the next option speciÞcation character starts.
AS102L -e SAMPLE
Default speciÞcation
Display will be in Japanese.
By customizing the assembler, the output message default can be changed to English. Refer to section
1.3.5, "User Customization".
Operation example
Below is the screen display when a source Þle (SAMP6.ASM) that includes errors is assembled with
the e option.
A>AS102L -e SAMP6
PanaX Series MN102L00 Assembler Version 3.2 Release 1.1.1
(c)Copyright 1994 Panasonic/KMC
SAMP6.ASM
5
SAMP6.ASM(5):
000002
Error 2000:
F440FFFFFF
SAMP6.ASM(6):
Syntax error.
Warning 2054:
Error 2003:
ROM size is 7 (Hex. 00000007)
2 errors in this assembly
No warning in this assembly
112 Command Options
0x11 ,D0
6
7
SAMP6.ASM(7):
move
Illegal RAM address.
main
Symbol defined twice.
Chapter 5 Using Assembler
W number
Do not output warning messages of the specified number
Functional description
The W option suppresses output of speciÞed warnings detected during assembly. Refer to chapter 10,
"Error Messages", for warning numbers and their corresponding messages.
When an unregistered number is speciÞed, it will be ignored.
Rules of use
The W option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
upper-case letter 'W', and then followed by the warning number speciÞcation. When further options are
speciÞed, they should be delimited by a space before the option speciÞcation character.
AS102L -W2054 SAMPLE
Default speciÞcation
Warning messages are output.
Operation example
Below is the screen display when a source Þle (SAMP7.ASM) that includes warnings is assembled
without the W option.
A>AS102L SAMP7
PanaX Series MN102L00 Assembler Version 3.1 Release 1.1.1
(c)Copyright 1994 Panasonic/KMC
SAMP7.ASM
000004
F440FFFFFF
SAMP7.ASM(6):
Warning
6
mov
D0,(data)
2054: Illegal RAM address.
ROM size is 9 (Hex. 00000009)
No error in this assembly
1 warning in this assembly
Warning messages are output to the screen. Next suppress that output by assembling with the W option.
Command Options 113
Chapter 5 Using Assembler
Below is the screen when warning message output is suppressed.
A>AS102L -W2054 SAMP7
PanaX Series MN102L00 Assembler Version 3.1 Release 1.1.1
(c)Copyright 1994 Panasonic/KMC
SAMP7.ASM
ROM size is 9 (Hex. 00000009)
No error in this assembly
No warning in this assembly
You can see that warning messages are not output.
114 Command Options
Chapter 5 Using Assembler
Wall
Do not output any warning messages
Functional description
The Wall option suppresses output of all warnings detected during assembly.
Rules of use
The Wall option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by
the letters 'Wall'. When further options are speciÞed, they should be delimited by a space before the
option speciÞcation character.
AS102L -Wall SAMPLE
Default speciÞcation
Warning messages are output.
Operation example
The Wall option is speciÞed as follows.
A>AS102L -gWall SAMPLE
Command Options 115
Chapter 5 Using Assembler
5.3.3
Preprocessor Options
l path_name
Specifies the path name of the directory that contains files specified by
#include
Functional description
The #include directive causes the assembler to read speciÞed Þles during assembly and assembles them
as part of the source Þle. The I option speciÞes the directory that contains those source Þles as a
command option.
The I option is speciÞed when you want to temporarily change the directive for some reason.
Otherwise specify #include directives with directories.
When #include directives are speciÞed with path names, no error will occur even if a different directory
is speciÞed with the I option. In this case the path name speciÞed with the I option will be ignored.
Rules of use
The I option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
upper-case letter 'I', then either immediately followed by the path name or a space and the path name.
AS102L -I A:\USER\DEFS MAIN
Default speciÞcation
The current directory is speciÞed
116 Command Options
Chapter 5 Using Assembler
Operation example
Assume that the Þle SAMP8.H is speciÞed by an #include directive in SAMP8.ASM, and that
SAMP8.H is in the directory A:\USER\DEFS.
First, here are the contents of the two Þles.
A>TYPE SAMP8.ASM
#include
ÒSAMP8.HÓ
_CODE
section
CODE,PUBLIC,0
movw
data,A0
mov
0x11 ,D0
mov
D0,(A0)
main
end
A>TYPE A:\USER\DEFS\SAMP8.H
data
equ
0xff
Next is the assembled list Þle when the I option is speciÞed for assembly in the directory of
SAM8.ASM.
Command Options 117
Chapter 5 Using Assembler
A>AS102L -lI A:\USER\DEFS SAMP8
A>TYPE SAMP8.LST
SAMP8.LST
Page 1
***
***
mn00
Cross
Assembler
Loc
object
Line
Source
1
#include
ÒSAMP8.HÓ
=000000FF
.1
data
equ
0xff
3
_CODE
section
CODE, PUBLIC, 0
4
main
2
000000
0EFF
5
movw
data, A0
000002
A011
6
mov
0x11, D0
000004
58
7
mov
D0, (A0)
ROM size is
5
(HEX.
8
end
00000005)
No error
in this
assembly
No warning
in this
assembly
***
Table
SAMP8.LST
Symbol
00000000
T _CODE
000000FF
A data
00000000
T main
Page2
***
The period (.) preceding line numbers indicates that the contents were read from an include Þle.
118 Command Options
Chapter 5 Using Assembler
D identifier
Specifies an identifier to be used by ifdef during conditional assembly
Functional description
The assembler directives #ifdef, #else, and #endif select which source statements are to be assembled
depending on whether an identiÞer has been deÞned by a deÞne directive. The D option has the same
function as the deÞne directive, but with direct speciÞcation from the command line.
IdentiÞer speciÞcations by deÞne directives in source statements may be omitted. The statements to be
assembled can instead be selected by specifying identiÞers with the D option as needed.
Thus, the D option allows conditions to be set freely at the assembly stage without Þxing the conditions
with deÞne directives in source statements.
There are four conditional assembly directives that can make use of the D option.
ifdef, ifndef, if, ifn
No error will occur if identiÞers speciÞed by the D option are not used in the source Þle. Assembly will
process as though conditions are unfulÞlled.
Rules of use
The D option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
upper-case letter 'D', then followed by the identiÞer. A space can be inserted between D and the
identiÞer. The identiÞer must exactly match the string speciÞed by #ifdef. Characters are casesensitive. If multiple options without parameters are to be speciÞed, then they can all be speciÞed after
a single option speciÞcation character. A parameter following the option should be delimited by a
space before the next option speciÞcation character starts.
AS102L -D VERSION SAMPLE
Default speciÞcation
UnfulÞlled conditions will be selected. The #elseÐ#endif blocks will be assembled.
Command Options 119
Chapter 5 Using Assembler
Operation example
This example is the simplest source Þle that includes #ifdef,#else and #endif. The identiÞer is
VERSION. VERSION is not declared in the source Þle with a deÞne directive. If assembly is
performed as is, then the #elseÐ#endif block (here "mov 0x22,D0") will always become the object of
assembly.
A>TYPE SAMP9.ASM
_CODE
section
CODE, PUBLIC, 0
main
#ifdef
VERSION
mov
0x11, D0
mov
0x22, D0
#else
#endif
end
120 Command Options
Chapter 5 Using Assembler
Below is the list Þle assembled without the D option.
A>AS102L -l SAMP9
A>TYPE SAMP9.LST
SAMP9.LST
Page 1
***
mn102L00
Cross
Assembler
***
Loc
object
Line
Source
1
_CODE
2
main
3
#ifdef
X
5
000000
8022
2
(HEX.
in this
assembly
in this
assembly
***
Table
SAMP9.LST
T _CODE
00000000
T main
0x11, D0
mov
0x22, D0
end
No warning
00000000
mov
00000002)
No error
Symbol
VERSION
#endif
8
ROM size is
CODE, PUBLIC, 0
#else
6
7
section
Page2
***
VERSION is not declared within the source Þle and it has not been speciÞed with an option, so the
unfulÞlled condition statements have been assembled. The line numbers marked with X indicate lines
that were not assembled.
Command Options 121
Chapter 5 Using Assembler
Next is the list Þle assembled from the same source Þle but with VERSION speciÞed with a D option.
You can see that the result of fulÞlling the condition is that the #ifdefÐ#else block (here "mov
0x11,D0") has been assembled.
A>AS102L -lD VERSION SAMP9
A>TYPE SAMP9.LST
SAMP9.LST
Page 1
***
mn102L00
Cross
Assembler
***
Loc
object
Line
Source
1
_CODE
2
main
3
#ifdef
000000
8011
4
5
2
(HEX.
in this
assembly
in this
assembly
***
Table
SAMP9.LST
00000000
T _CODE
00000000
T main
122 Command Options
0x11, D0
mov
0x22, D0
end
No warning
***
mov
00000002)
No error
Symbol
VERSION
#endif
8
ROM size is
CODE, PUBLIC, 0
#else
X
7
section
Page2
Chapter 5 Using Assembler
5.3.4
Program Generation Options
g
Output debug information to the relocatable object file
Functional description
Assembled programs are debugged using a source code debugger. The g option enables source-level
debugging at the debug stage by adding the information needed for debugging to the relocatable object
Þle (.RF).
Debug information includes the following information.
¥
Names assigned to program addresses
¥
Names assigned to constants and variables
¥
Correspondence between line numbers and addresses
The symbol information includes addresses, so you can specify symbol names instead of addresses
during debugging. This can make debugging efforts much easier.
NOTE:
The g option must also be specified when linking. If the g option is not specified
for either the assembler or linker, then debug information will not be output to
the executable format file (.EX)
Rules of use
The g option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'g'. If multiple options without parameters are to be speciÞed, then they can all be
speciÞed after a single option speciÞcation character. A parameter following the option should be
delimited by a space before the next option speciÞcation character starts.
AS102L -g SAMPLE
Default speciÞcation
Debug information will not be output.
Operation example
The g option is speciÞed as follows.
A>AS102L -cg SAMPLE
Command Options 123
Chapter 5 Using Assembler
Output a relocatable object file even if errors are detected in the source
file
r
Functional description
The assembler normally does not output a relocatable object Þle (.RF) when it detects errors in the
source Þle. The r option speciÞed during assembly will generate a relocatable object Þle even when
errors are detected.
NOTE:
If errors are detected, then even when an executable format file is generated it
cannot normally be executed. Therefore the r option is no more than a
temporary measure; it cannot be used when finalizing programs.
The r option is used to see the locations of errors and to start debugging error-free areas in advance.
When the r option is speciÞed, note that a relocatable object Þle will be generated even when there are
errors in machine language instructions.
Rules of use
The r option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'r'. If multiple options without parameters are to be speciÞed, then they can all be
speciÞed after a single option speciÞcation character. A parameter following the option should be
delimited by a space before the next option speciÞcation character starts.
AS102L -r SAMPLE
Default speciÞcation
When the assembler detects errors during assembly, it will not generate a relocatable object Þle.
You can change the default using customization to force output of relocatable object Þles. Refer to
section 1.6, "User Customization".
Operation example
The r option is speciÞed as follows.
A>AS102L -ro TEST.RF TEST
124 Command Options
Chapter 5 Using Assembler
Od
Turn off optimization
Functional description
The assembler and linker evaluate source statements for the instructions to be optimized, and then
select the optimal instructions. The Od option turns this optimization function off.
Rules of use
The Od option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by
the upper-case letter 'O' and lower-case letter 'd'. The pair of characters of Od are handled as a single
option. If multiple options without parameters are to be speciÞed, then they can all be speciÞed after a
single option speciÞcation character. A parameter following the option should be delimited by a space
before the next option speciÞcation character starts.
AS102L -Od SAMPLE
Default speciÞcation
Optimization will not be performed.
You can change the default for optimization to on or off using customization. Refer to section 1.6,
"User Customization".
Operation example
The Od option is speciÞed as follows.
A>AS102L -Od
SAMPLE
Command Options 125
Chapter 5 Using Assembler
Ot
Turn on optimization
Functional description
The assembler and linker evaluate source statements for the instructions to be optimized, and then
select the optimal instructions. The Ot option turns this optimization function on.
Rules of use
The Ot option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
upper-case letter 'O' and lower-case letter 't'. The pair of characters of Ot are handled as a single option.
If multiple options without parameters are to be speciÞed, then they can all be speciÞed after a single
option speciÞcation character. A parameter following the option should be delimited by a space before
the next option speciÞcation character starts.
AS102L -Ot SAMPLE
Default speciÞcation
Optimization will not be performed.
You can change the default for optimization to on or off using customization. Refer to section 1.6,
"User Customization".
Operation example
The Ot option is speciÞed as follows.
A>AS102L -Ot
126 Command Options
SAMPLE
Chapter 5 Using Assembler
5.3.5
Other Options
h
Output help information to the screen
Functional description
The h option displays assembler command options and their descriptions to the screen. The h option is
used alone.
Rules of use
Specify a lower case 'h' after a slash (/) or hyphen (-).
AS102L -h
NOTE:
Even if the h option is not specified, input of ÒAS102L00 Ò alone will also display
the help screen.
Default speciÞcation
Help information will not be displayed to the screen.
Command Options 127
Chapter 5 Using Assembler
Operation example
The speciÞcation of the h option and the screen displayed are shown below.
A>AS102L00 -h
PanaX Series MN102L00 Assembler Version 3.2 Release 1.1.1
(c)Copyright 1994 Panasonic/KMC
Command format:
ASXXXX
[Options]
SRC-file
Options:
/I dir. = Set include files directory
/D str. = Define 'string'
/L{imc} = Control listing process
/Ls
= Stop Symbol Table
/a file = Output fixed location list
/c
= Output cross reference
/e
= English messages
/g
= Output debug information
/j
= Japanese messages
/l
= Output listing file
/o file = Specify output file name
128 Command Options
/r
= Ignore error and output RF file
/W num
= Stop warning message
/Wall
= Stop all warning messages
/O{td}
= Optimize on/off
/h
= Show this menu
Chapter 5 Using Assembler
5.4
Operation example
There are three steps to perform when you need a Þnal list Þle with resolved addresses.
With the assembler, generate a relocatable object Þle (.RF).
With the linker, generate an executable format Þle (.EX) and map Þle (.MAP).
With the assembler again, use the map Þle to generate a Þnal list Þle (.LST) with addresses resolved by
the linker.
Program assembly
Generation of a list Þle with the l option on the Þrst assembly will not resolve addresses, so you would
not do so unless you have some special purpose. For the same reason, the c, Li, Lm, and Lc options are
also not used.
A>AS102L -g SAMPLE
The above command assembles the source Þle (SAMPLE.ASM) in the current directory, and generates
a relocatable object Þle (SAMPLE.RF) with debug information in the current directory.
A>AS102L -LcgD VERSION -o TEST.RF A:\USER\SOURCE\MAIN
The above command assembles the source Þle (MAIN.ASM) in the A drive's \USER\SOURCE
directory. For conditional assembly of the source Þle, assembly will proceed as though VERSION
were deÞned.
The above command also generates a relocatable object Þle named TEST.RF with debug information in
the current directory.
A>AS102L -go TEST.RF -IA:\USER\LIB SAMPLE
The above example assembles the source Þle (SAMPLE.ASM) in the current directory. Files speciÞed
by include will be read from the A drive's \USER\LIB directory.
The above command also generates a relocatable object Þle named TEST.RF with debug information in
the current directory.
A>AS102L -I A:\USER\DEFS -o B:\BIN\SAMPLE.RF -D TYPE FILE
The above example assembles the source Þle (FILE.ASM) in the current directory. For conditional
assembly (ifdef), assembly will proceed as though TYPE were declared. Also, Þles speciÞed by
include directives will be taken from the A drive's \USER\DEFS directory.
The above example will store the relocatable object Þle with name SAMPLE.RF in the B drive's \BIN
directory with debug information.
Command Options 129
Chapter 5 Using Assembler
Generation of Þnal list Þle with resolved program addresses
The Þnal list Þle is generated as follows.
1. First use the assembler to generate a relocatable object Þle.
2. Next use the linker to generate an executable format Þle by specifying the start address of each section and linking multiple Þles. Specify the linker's m option to generate the map Þle. Refer to
chapter 4, "Using The Linker", for details.
3. Use the assembler once more to assemble the source Þle. This time read the map Þle generated by
the linker with the assembler's a option. Specify the same options as those of the Þrst assembly.
The following descriptions assume that a map Þle has already been generated.
A>AS102L00 -la MAIN.MAP SUB
In the above example all Þles exist in or are output to the current directory. The source Þle (SUB.ASM)
is assembled using a map Þle (MAIN.MAP), generating a list Þle (SUB.LST).
A>AS102L00 -lLcLma MAIN -D MODE PROG1
The above example assembles the source Þle (PROG1.ASM) in the current directory using a map Þle
(MAIN.MAP), generating a list Þle (PROG1.LST). Assembly will be performed assuming that the
identiÞer MODE has been deÞned for conditional assembly directives (ifdef). Source statements of
unfulÞlled conditions and macro expansion source will not be output.
130 Command Options
Chapter 6
Using Linker
6
Chapter 6 Using Linker
6.1
Purpose Of This Chapter
This chapter explains how to use all the options provided by the linker. The linker reads relocatable
object Þles output by the assembler, outputs an executable format Þle, and if speciÞed by option
outputs a map Þle containing link information. If optimization was speciÞed at the assembly stage,
then the linker will also adjust code such that it outputs optimal code for conditional and unconditional
branch instructions. In addition, the linker also resolves forward references.
For programs in section address format, the start address of each section is speciÞed when linking. The
linker links relocatable object Þles by section in the order speciÞed by the link command, and then
outputs an executable format Þle.
Relocatable Object Files
Executable Format File
000
sectionA
sectionA
Start Addresses
sectionA=000
sectionB=200
sectionC=500
PROGRAM1.RF
PROGRAM1
sectionA
sectionB
PROGRAM3
200
sectionB
sectionC
PROGRAM2.RF
PROGRAM1
Linker
sectionB
PROGRAM2
sectionB
sectionB
PROGRAM3
sectionB
500
PROGRAM3.RF
sectionC
sectionA
PROGRAM2
Figure 6-1 Link Model of Section Address Format
132 Purpose of This Chapter
Chapter 6 Using Linker
6.2
Starting Linker
The linker is started by entering a command name and parameters, just as for other MS-DOS external
commands. The parameters are linker options and names of Þles to be linked.
The command name differs depending on the device being used. This chapter uses the terminology of
LD102L00 as is general format.
General format of commands
Below is the general format of the command to use when starting the linker.
LD102L [options] relocatable_object_filename ...
[library_filename]
Contents of brackets [ ] may be omitted.
Ellipses (...) indicate item may be repeated.
Specifying options
Except for the @ option, an option starts with a slash (/) or hyphen (-) as the options speciÞer, followed
by a character that indicate the particular option.
/g or -g
The @ option is not preceded by a slash or hyphen.
Option speciÞcations are case sensitive, so upper case and lower case letters must be speciÞed
correctly.
-Eg
Single-character options not accompanied by parameters can be speciÞed as multiple characters
following the slash (/) or hyphen (-) option speciÞer. The order is optional.
/jmEgr or -jmEgr
If you want to separate multiple options, delimit them with spaces.
/j /m /g or -j -m -g
When an option is accompanied by a parameter and other options are to follow, add a space after the
parameter, and then follow with the slash (/) or hyphen (-) option speciÞer.
-o A:\USER\MAIN.EX
-gm
Starting Linker 133
Chapter 6 Using Linker
Parameters can be speciÞed right after the option character or separated by one space.
/T_CODE=80000 or /T _CODE=80000
When options are omitted, assembly will be performed in accordance with the default interpretations
built in to the assembler. Refer to section 6.3, "Command Options," for default interpretations
NOTE:
When multiple files are specified, the must be delimited by single spaces. When
path names are not specified, the linker will assume that files are in the current
directory on the current drive. When only relocatable object file path names and
file names are specified, the linker will generate the map file and executable
format file in the relocatable object files' directory.
A>LD102L -mj MAIN PROG1 SUB
When a relocatable object file extension is omitted, the linker will assume .RF.
The above example will cause the relocatable object files MAIN.RF, PROG1.RF,
and SUB.RF in the current directory to be linked, generating an executable
format file also in the current directory.
When the output file name is omitted, the name of the first relocatable object file
after the options will be output with the extension .EX (extension .MAP for the
map file).
A>LD102L -mj MAIN PROG1 SUB
The above example will generate an executable format file (MAIN.EX) and map
file (MAIN.MAP).
By using the o option, you can generate the executable format file in a directory
other than that of the relocatable object files.
A>LD102L -m -o A:\USER\OBJ\MAIN.EX MAIN SUB
The above example links relocatable object files (MAIN.RF and SUB.RF) in the
current directory, and outputs an executable format file (MAIN.EX) and map file
(MAIN.MAP) in the A drive's \USER\OBJ directory.
NOTE:
Windows 9X will be hung up if specifying a filename including a drive name which
is not connected to your computer under MS-DOS mode of Windows 9x.
C: LD102L
-m
B: SAMPLE.RF
(in case the drive B does not exist)
134 Starting Linker
Chapter 6 Using Linker
Below is a list of options.
Table 6-1 Linker options
Option Type
Output Þle options
Symbol
Description
o Þlename
Specify the path name and Þle name
of the executable format Þle to be
output.
m
Output a map Þle
Xm
Output an extended format map Þle.
Error message options j
Output error and warning messages in
Japanese.
e
Output error and warning messages in
English.
W number
Do not output warning messages of
the speciÞed number.
Refer to chapter 10, "Error Messages,"
for warning messages and their
corresponding numbers.
Wall
Do not output any warning messages.
g
Output debug information to the
executable format Þle.
Tesction_name[,section_name] start
address [,end address]
Specify the start/end addresses of a
start address [,end address]section
(section group).
T@section_attribute start address
[,end address]
Specify the start/end addresses of a
section start address [,end address]
attribute.
r
Output an executable format Þle even
if errors are detected.
En
Do not output symbol table within the
executable format Þle.
l library_Þlename
Specify a library Þle.
L path_name
Specify a path name for library Þles.
@Þlename
Specify a parameter Þle.
h
Output help information to the screen.
Program generation
options
Library Þle options
Other
Starting Linker 135
Chapter 6 Using Linker
6.3
Command Options
This section describes the options used by the linker. The linker has many options for controlling
output Þle speciÞcations and the information written to Þles. The linker reads multiple relocatable
object Þles, links them into one, and creates an executable format Þle.
If optimization was selected at the assembly stage, then the linker will output the optimal machine
language code for conditional and unconditional branch instructions, regardless of the mnemonics
deÞned in the source Þle.
In addition, the linker resolves the values of forward-referenced symbols and undeÞned operands.
136 Command Options
Chapter 6 Using Linker
6.3.1
Output File Options
o filename
Specify the path name and file name of the executable format file
to be output
Functional description
The o option speciÞes the directory and Þle name of the executable format Þle to be output by the
linker.
If the directory is omitted, then the Þle will be output to the current directory. If a Þle name that already
exists is speciÞed, then that Þle will be overwritten with new contents.
If a directory that does not exist is speciÞed, then an error message will be displayed.
If specifying an extension, the extension will be the speciÞed one.
If omitting an extension, the extension will be .EX.
o option type
generated files
-o test
test.ex
-o test.ex
test.ex
-o test.out
test.out
NOTE:
Because the @ symbol is used as the character for specifying parameter files, it
cannot be used as the first character of file names.
Rules of use
The o option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'o', then either immediately followed by the Þle name or a space and the Þle name.
LD102L -o B:\USER\OBJ\MAIN -T_CODE=80100 PROG1 PROG2
Command Options 137
Chapter 6 Using Linker
Default speciÞcation
The executable format Þle will be output to the current directory with the name of the Þrst speciÞed Þle
and the extension .EX.
LD102L -T_CODE=80100 MAIN SUB
In the above example the Þrst Þle name speciÞed for linking in MAIN, so the executable format Þle
will be MAIN.EX.
Operation example
The example below links two relocatable object Þles (PROG1.RF and PROG2.RF) in the current
directory from start address 4100 (hex) for section _CODE, and generates an executable format Þle
(MAIN.EX) in the B drive's \USER\OBJ directory.
A>LD102L -o B:\USER\OBJ\MAIN -T_CODE=80100 PROG1 PROG2
The next example links two relocatable object Þles (PROG1.RF and PROG2.RF) in the current
directory from start address 4100 (hex) for section _CODE, and generates an executable format Þle
(PROG1.EX) and map Þle (PROG1.MAP) in the same current directory.
A>LD102L -T_CODE=80100 -m PROG1 PROG2
138 Command Options
Chapter 6 Using Linker
m
Output a map file
Functional description
The m option writes to a map Þle all symbols linked and their values, identifying information for local
and global symbols, symbol types (text and absolute), size, etc.
In any programs the values of symbols assigned to addresses will not be resolved until after linking.
The linker outputs a list of symbols with resolved values to the map Þle.
To create a Þnal list Þle, reassemble the source Þle using the map Þle.
Rules of use
The m option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'm'. The map Þle name will be the name of the Þrst Þle speciÞed in the link command
with the extension .MAP. The map Þle will be output to the same directory as the directory where the
executable format Þle is generated.
LD102L00 -m MAIN SUB
Default speciÞcation
A map Þle will not be output.
The default can be changed to output a map Þle by using customization. Refer to section 1.6, "User
Customization".
Command Options 139
Chapter 6 Using Linker
Operation example
The example below links two relocatable object Þles (PROG1.RF and PROG2.RF) in the current
directory from start address 0000 (hex.) for section _DATA, and generates an executable format Þle
(PROG1.EX) and map Þle (PROG1.MAP) in the current directory.
A>LD102L00 -m -T_DATA=0000 PROG1 PROG2
The next example links two relocatable object Þles (PROG1.RF and PROG2.RF) in the current
directory from start address 4200 (hex.) for section _PRO and 4400 (hex) for section _SUB, and
generates an executable format Þle (MAIN.EX) and map Þle (MAIN.MAP) in the B drive's
\USER\OBJ directory.
A>LD102L00 -m -T_PRO=80200 -T_SUB=80400 -o B:\USER\OBJ\MAIN.EX
PROG1 PROG2
The next example links a relocatable object Þle (PROG1.RF) in the A drive's \USER\TEST directory
and a relocatable object Þle (SUB.RF) in the A drive's \USER\LIB library, and generates an executable
format Þle (PROG1.EX) and map Þle (PROG1.MAP) in the A drive's \USER\TEST directory.
A>LD102L00 -m A:\USER\TEST\PROG1 A:\USER\LIB\SUB
140 Command Options
Chapter 6 Using Linker
Xm
Output the extended format map file.
Functional description
An extended map Þle will be output.
With the extended map Þle, the information for each symbol is rearranged in the address order and then
output.
Global symbols are collectively output as a single item.
Rules of use
Enter an upper case letter ÔXÕ and a lower case letter ÔmÕ after the option speciÞer character slash(/) or
hyphen(-).
This Þle retains the base name of the Þrst Þle supplied to the linker, but changes the extension to .Xm.
It is created in the same directory in which the executable format Þle is generated.
This option can be speciÞed alone or with the m option. Specifying both options creates a regular map
Þle and an extended one.
Default speciÞcation
An extended map Þle will not be output.
Operation example
The example below links two relocatable object Þles (PROG1.RF and PROG2.RF) in the current
directory from start address 0000 (hex.) for section_DATA, and generates an executable Þle
(PROG1.EX) and extended map Þle (PROG1.XM) in the current directory.
A>LD102L00 -Xm -T_DATA=0000 PROG1 PROG2
The example below links two relocatable object Þles (PROG1.RF and PROG2.RF) in the current
directory from start address 4000 (hex.) for section_CODE, and generates an executable Þle
(PROG1.EX), extended map Þle (PROG1.XM), and standard map Þle simultaneously in the current
directory.
A>LD102L00 -m -Xm -T_CODE=4000 PROG1 PROG2
Command Options 141
Chapter 6 Using Linker
6.3.2
Error Message Options
j
Output error and warning messages in Japanese
Functional description
The j option displays messages for errors and warnings detected in link commands and link processing
in Japanese. This option is used when English has been made the default by user customization.
Rules of use
The j option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'j'.
LD102L00 -j PROG1 PROG2
Default speciÞcation
Display will be in Japanese.
By customizing the linker, the output message default can be changed to English. Refer to section 1.6,
"User Customization".
Operation example
The j option is speciÞed as follows.
A>LD102L00 -j PROG1
142 Command Options
Chapter 6 Using Linker
Output error and warning messages in English.
Output will be to the screen and, when a list file is specified, to the list file
e
Functional description
The e option displays messages for errors and warnings detected in link commands and link processing
to the screen and list Þle in English.
Rules of use
The e option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'e'.
LD102L00 -e PROG1 PROG2
Default speciÞcation
Display will be in Japanese.
By customizing the linker, the output message default can be changed to English. Refer to section 1.6,
"User Customization".
Operation example
The e option is speciÞed as follows.
A>LD102L00 -e PROG1
Command Options 143
Chapter 6 Using Linker
W number
Do not output warning messages of the specified number
Functional description
The W option suppresses output of speciÞed warnings detected during linking. Unlike errors, warnings
are not fatal, so the W option is used when you understand their meanings sufÞciently and need to
suppress their output. Specifying Wall will suppress output of all warnings. Refer to chapter 10, "Error
Messages", for warning numbers and their corresponding messages.
Rules of use
The W option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
upper-case letter 'W', and then followed by the warning number speciÞcation. A space may or may not
be inserted between the 'W' and the warning number. This option is provided for future expansion of
functions.
LD102L00 -Wmmm PROG1 PROG2
Here 'mmm' speciÞes the linker warning number.
Default speciÞcation
Warning messages are output.
144 Command Options
Chapter 6 Using Linker
Wall
Do not output any warning messages
Function description
The Wall option suppresses output of all warnings detected during linking.
Ruels of use
The Wall option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by
the letters 'Wall'. When further options are speciÞed, they should be delimited by a space before the
option speciÞcation character.
LD102L00 -Wall SAMPLE
Default speciÞcation
Warning messages are output.
Option example
The Wall option is speciÞed as follows.
A>LD102L00 -gWall SAMPLE
Command Options 145
Chapter 6 Using Linker
6.3.3
Program Generation Options
g
Output debug information to the executable format file
Functional description
In order to use symbols during program debugging, the g option outputs the executable format Þle with
debug information added. The source code debugger can then read the debug information at the same
time it reads the executable format Þle. Debug information includes symbol names and their values, so
during debugging you can use symbols to specify start addresses and breakpoints and to reference
memory.
NOTE:
The g option must also be specified when assembling. If the g option is not
specified for either the assembler or linker, then debug information will not be
output to the executable format file (.EX). If files assembled with the g option and
files not assembled with the g option are linked with the g option, then debug
information will be output only for the files assembled with the g option.
Rules of use
The g option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'g'.
LD102L00 -g MAIN SUB
Default speciÞcation
Debug information will not be output.
The default can be changed to output debug information using customization. Refer to section 1.3.5,
"User Customization".
Operation example
The example below links two relocatable object Þles in the current directory (MAIN.RF and SUB.RF),
and generates and executable format Þle with debug information (MAIN.EX) and map Þle in the
current directory.
A>LD102L00 -mg MAIN SUB
146 Command Options
Chapter 6 Using Linker
Tsection_name
[,section_name]=
addresses
Specify section (section group) start
Functional description
The T option speciÞes a section start address and a section end address. It will change the start address
of the speciÞed section where it exists in relocatable object Þles deÞned after the T option.The linker
will check that the speciÞed ranges for start address values. SpeciÞcations cannot exceed the range of
ROM area of the target device.
LD102L00 -TTEXT1=80000, -T
Sample 2
TEXT3=0x83000 sample.rf
Object assignment
after linking
TEXT1 section code
0x8000
TEXT1 section code
TEXT2 section code
TEXT2 section code
TEXT3 section code
0x83000
TEXT3 section code
Figure: 6-2 functional description(2)
Command Options 147
Chapter 6 Using Linker
Rules of use
The T option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
upper-case letter 'T', and then the section name, start address. The start address is speciÞed in
hexadecimal. A space may be inserted between the T and the section name. The start address will be
taken as hexadecimal without modiÞcation. For example, "-T_CODE=abc" will indicate the hex
address 0xABC.
LD102L00 -T_CODE=80000
PROG1 PROG2
LD102L00 -T_TEXT=80000 MAIN -T_CODE=80100 SUB
When multiple Þles are linked, the individual sections will be linked in the order that the Þles are
speciÞed. Be aware of the order of speciÞcation.
The start addresses of the CODE attribute and DATA attribute can be speciÞed by the
T@section_attribute=address option.
LD102L00 -T@CODE=80000 PROG1 PROG2
Default speciÞcation
The Þrst Þle is assigned from address 0. For second and further Þles that are omitted, the assigned
address will be the next address after the last address of the previous object Þle that was deÞned by
linker argument.
148 Command Options
Chapter 6 Using Linker
r
Output an executable format file even if errors are detected
Functional description
The r option is used in conjunction with the assembler's r option.
The assembler's r option is used when you know where errors are located, but want to start debugging
the error-free areas in advance. To link Þles that include errors generated this way, specify the r option
for linking as well.
As a result the r option will forcibly generate an executable format Þle.
Rules of use
The r option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'r'.
LD102L00 -r PROG1
Default speciÞcation
An executable format Þle will not be generated.
You can change the default using customization to force output of an executable format Þle even when
errors occur. Refer to section 1.6, "User Customization".
Operation example
The r option is speciÞed as follows.
A>LD102L00 -r PROG1
Command Options 149
Chapter 6 Using Linker
En
Do not output symbol table within the executable format file
Functional description
The En option suppresses output of a symbol table in the executable format Þle. Only executable code
will be output to the executable format Þle.
Rules of use
The En option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by
the upper-case letter 'E' and lower-case letter 'n'. The pair of characters of En are handled as a single
option.
LD102L00 -En
MAIN SUB
Default speciÞcation
The entire symbol table (local and global symbols) will be output.
Operation example
The En option is speciÞed as follows.
A>LD102L00 -En PROG1 PROG2 PROG3
150 Command Options
Chapter 6 Using Linker
Ed
Output the DATA-attribute section into the EX file.
Functional description
Output the DATA-attribute section other than CODE-attribute section into the EX Þles.
Rules of use
The Ed option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by
the upper-case letter 'E' and lower-case letter 'd'. The pair of characters of En are handled as a single
option.
LD102L00 -Ed
SAMPLE
Default speciÞcation
The CODE-attribute section will be output in the EX Þles.
Operation example
The Ed option is speciÞed as follows.
A>LD102L00 -m -Ed -T@DATA=100
SAMPLE
Command Options 151
Chapter 6 Using Linker
6.3.4
Library File Options
l library_filename
Specify a library file
Functional description
The l options speciÞes a library Þle.
Rules of use
The l option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'l', then either immediately followed by the path name and Þle name or a space and the
path name and Þle name. The l option must be coded end of the command line.
LD
PROG1 PROG2 -lB: \USER\OBJ\SAMPLE.lib
Default speciÞcation
No library files will be read.
152 Command Options
Chapter 6 Using Linker
L path_name
Specify a directory containing library files
Functional description
The L option speciÞes a directory that contains library Þles.
Library Þles following the L option speciÞcation will be searched for in the speciÞed directory.
Searching will be performed Þrst in the current directory and then in the directories speciÞed by L.
When the L option is deÞned multiple times, the search will be performed in the order of deÞnition.
Rules of use
The L option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'L', then either immediately followed by the path name or a space and the path name.
LD102L00 -LB:\USER\OBJ -lsample.lib -lsample2.lib PROG1 PROG2
The Þles sample.lib and sample2.lib will be searched for in the directory B:\USER\OBJ.
Default speciÞcation
Library Þles speciÞed by the l option will be read.
Command Options 153
Chapter 6 Using Linker
6.3.5
Other Options
@filename
Specify a parameter file
Functional description
By writing various option used by the linker in a Þle, the @ option lets you specify just that Þle during
execution, and the linker will replace it with the option speciÞcations.
All options other than the @ option can be written in a parameter Þle.
If a parameter Þle that does not exist is speciÞed, then the linker will display an error message.
Rules of use
The @ option does not use the slash (/) or hyphen (-) option speciÞcation character. It speciÞed alone,
followed by the parameter Þle name.
LD102L00 @PFILE
Default speciÞcation
None.
-o MAIN.EX
-gm
-T_CODE=80100 PROG1
-T_DATA=F000 PROG2
Operational example
Assume the following contents for PFILE.
Then specifying the following two commands is equivalent.
A>LD102L00 @PFILE
A>LD102L00 -o MAIN.EX -gm
PROG2
154 Command Options
-T_CODE=80000 PROG1 -T_DATA=F000
Chapter 6 Using Linker
h
Output help information to the screen
Functional description
The h option displays linker command options and their descriptions to the screen. The h option is
used alone.
Rules of use
The h option is speciÞed with the slash (/) or hyphen (-) option speciÞcation character, followed by the
lower-case letter 'h'.
LD102L00 -h
NOTE:
Even if the h option is not specified, input of LD102L00 alone will also display
the help screen
Default speciÞcation
Help information will not be displayed to the screen.
Command Options 155
Chapter 6 Using Linker
Operation example
The speciÞcation of the h option and the screen displayed are shown below.
A>LD102L00 -h
PanaX
Series MN102L00
(c)Copyright
1994
Linker
Version3.1 Release1.1.1
Command
format:
LDXXXX
[Options]
@file
=
Read parameter-file
/g
=
Output debug information
/En
=
Stop output symbol into EX-file
/Ed
=
Output data section into EX-file
/e
=
English messages
/j
=
Japanese messages
Panasonic/KWC
RF-files...
Options:
156 Command Options
/m
=
Output a map-file
/o file
=
Specify output EX-name
/r
=
Ignore error and make EX-file
/T sec=addr
=
Specify section start address
(hexadecimal)
/l file
=
Specify a library file
/L file
=
Set library file direction
/W num
=
Stop output warning message
/Wall
=
Stop output all warning messages
/b
=
EMS memory enable
/h
=
Show this menu
Chapter 6 Using Linker
6.4
Operation Examples
The following examples of linker operation assume that there are three relocatable object Þles
(MAIN.RF, PROG.RF, and SUB.RF) in the current directory.
These three relocatable object Þles will be linked. Debug information will be added to the executable
format Þle.
The start addresses of the sections deÞned in these Þles will have the following values.
_CODE
80000
_SUB
80200
_DATA
F000
First, link the Þles in the current directory (MAIN.RF, PROG1.RF, SUB.RF), and generate an
executable format Þle with debug information (MAIN.EX) in the same directory.
A>LD102L00 -g -T_CODE=80000 -T_SUB=80200 -T_DATA=F000 MAIN PROG1
SUB
Next, link the same Þles, but generate just the executable format Þle in a separate directory.
A>LD102L00 -go A:\USER\BIN\MAIN.EX -T_CODE=80000 -T_SUB=80200
-T_DATA=F000 MAIN PROG1 SUB
The above example will generate an executable format Þle (MAIN.EX) in the A drive's \USER\BIN
directory.
Command Options 157
Chapter 6 Using Linker
158
Chapter 7
Types Of Source Statement
7
Chapter 7 Types Of Source Statements
7.1
Purpose of This Chapter
Programs used by the Cross-Assembler are collections of source statements. There are Þve types of
source statements, classiÞed by their purpose.
¥
Machine language instruction statements and directive statements
¥
Assembler control statements
¥
Macro control statements
¥
Comment statements
¥
Blank statements
This chapter describes these Þve types of statements, and at the same time explains their position and
use when constructing a program.
160 Purpose Of This Chapter
Chapter 7 Types Of Source Statements
7.2
Program Format
A program is text created to assemble as machine language instructions in order to operate a
microprocessor. The assembler translates the text into machine language code, while the linker joins
that code to make an executable format Þle.
One line of text is called a source statement. There are Þve types of source statements, with the type
determining how a source statement is written.
Basic program format is shown below.
* Comment statement
#include
#deÞne
deÞnitions of constants, macros, globals
Write comments as needed
#include speciÞcations
DeÞne #deÞne identiÞers
Statements to deÞne constants and macros andto
declare and deÞne globals
section name
.
.
.
program body
Declare start of section
.
.
.
end
section
Machine language instructions, conditional assembly
directives, macro expansions
End of program
Program Format 161
Chapter 7 Types Of Source Statements
There are several points to be aware of when writing programs.
¥ Always declare an attribute and link type for a section name the Þrst time it appears in a Þle.The
same section name cannot be set to a different attribute or link type.
¥
The effective scope of a section is until the line preceding the next section
¥
Assembler instructions and dc, dw, ds and da directives cannot be coded before a section.
¥
The end of a program is indicated by end.
NOTE:
If the last line of an assembler source file does not have a return before the EOF,
then the following error will occur. Always code a return at the end of the last line.
Error
Error 2026:
No return code at end of line.
Example code causing error
RET[EOF]
(No return after RET)
Example code fixing error
RET
[EOF]
(Return after RET)
Below is an example source Þle.
; comment
;include a Þle
;deÞne identiÞer for conditional assembly
;deÞne a constant
; SAMPLE
#include
#define
KEYBORD
PROGRAM
"FILE1.H
equ
0x32
data_set
macro
movw
mov
mov
endm
section
data
data, A0
0x12, D0
D0, (A0)
_CODE
;end of macro
CODE,
PUBLIC,0
main
#ifdef
;deÞne a macro
mov
TYPE
data_set
0x10,
KEYBORD
mov
0,
D1
;blank statement
;statement with label only
;machine language instruction statement
;conditional assembly directive
;expand macro
#else
D1
#endif
end
162 Program Format
;end of program
Chapter 7 Types Of Source Statements
7.3
Machine Language Instruction Statements
And Directive Statements
Machine language instruction statements
Machine language instructions are instructions that the microprocessor directly executes on its own
hardware. Each machine language code has a corresponding mnemonic.
Machine language instruction statements are statements that code these mnemonics. The assembler
will convert them into machine language code (called object code). After the program has been
converted to ROM, these statements will be executed by the microprocessor.
The instructions have the following features.
¥
Memory-oriented instruction set(all calculations performed throughout memory)
¥
Single and double-operand instructions
¥
Minimized instruction set and instruction codes
¥
Supports common instruction space and data space expandable to 16MB with bank switching.
¥
Six addressing formats
The example below shows machine language instruction statements.
mov
mov
mov
add
rts
0xff , D0
data1, A0
D0, (A0)
1, D0
Directive statements
Directive statements are not converted to machine language code. Within programs they specify
assembler attributes to modify program structure and addresses, select radices, deÞne constants, and
control list Þle style.
The example below shows directive statements.
CONST
_CODE
MESG
global
equ
section
org
dc
end
save
0x12
CODE, PUBLIC, 2
100
ÔSÕ
Machine Language Instruction Statements And Directive Statements 163
Chapter 7 Types Of Source Statements
7.4
Assembler Control Statements
Assembler control statements are source statements that control how the assembler processes.
The assembler provides include directives that include Þles and conditional assembly directives that
specify conditions for changing which instructions are assembled.
The example below shows assembler control statements.
#include
ÒFILE1
#define
MODE
.ASM
;include a Þle
;deÞne an identiÞer
MODE
.
.
.
mov
0x22, D0
;begin conditional assembly
;block to assemble if condition is fulÞlled
mov
0x11, D0
;block to assemble if unfulÞlled
#ifdef
#else
#endif
.
.
.
164 Assembler Control Statements
Chapter 7 Types Of Source Statements
7.5
Macro Control Statements
Macro control statements reduce coding effort by replacing strings coded in source statements with
other strings. This enables low-level assembly language for a program block to be abstracted as a
macro name.
Macros are coded in two formats: macro deÞnitions and macro calls.
A macro deÞnition deÞnes a macro name and macro body. The macro body uses multiple machine
language instructions to construct a single program process.
A macro call is just a macro name coded as a source statement. The assembler will replace it with all
the machine language instructions coded in the macro body. This process is called macro expansion.
The basic difference between a macro call and a subroutine call is that a macro call actually outputs
machine language instructions as source statements, with arguments used to output different machine
language instructions for each call.
The example below shows macro control statements.
*macro deÞnition-------
------------------
-------
adr_set
macro data, reg
movw
reg, A0
mov
data, D0
mov
D0, (A0)
endm
.
.
.
---------------
--------
*macro call--------------
adr_set
.
.
.
adr_set
.
.
.
data1, reg1
data2, reg2
Macro Control Statements 165
Chapter 7 Types Of Source Statements
7.6
Comment Statements
Comments start with an asterisk in column one or a semicolon in any column. All text from the starting
character through to the end of the line is ignored, so does not affect program operation or function. Use
this space to document data structures, algorithms and other relavant information.
Comment statements are an important structural element of documentation. You should add comments
that are detailed as possible to enhance program maintenance.
The example below shows comment statements.
**********************
******************
MN10200 Series
Sample Program
Cross-Assembler
**********************
******************
***************************
#include
Òram.hÓ
;RAM deÞnition Þle
;macro deÞnition Þle
;conditional assembly deÞnition
#include
Òmacro.hÓ
#define
VERSION
* Program Start
main
.
.
166 Comment Statements
***************************
Chapter 7 Types Of Source Statements
7.7
Blank Statements
A blank statement consists of a single carriage return. Blank statements are used to make printed lists
easier to read.
Blank Statements 167
Chapter 7 Types Of Source Statements
168
Chapter 8
Writing Source Statements
8
Chapter 8 Writing Source Statements
8.1
Purpose of This Chapter
This chapter explains common information for writing source statements. Source statements include
machine language instruction statements, assembler control statements, and macro control statements.
This chapter explains how to code the characters and numbers that can be used when writing source
statements, and it describes how to write character constants, address constants, location counters, and
expressions.
170 Purpose of This Chapter
Chapter 8 Writing Source Statements
8.2
Permitted Characters
There are four types of characters that can be coded in source statements for the MN101C00 Series
Cross-Assembler.
Digits
0123456789
Letters
Upper-case
A B C D E F G H I J K L M N O P Q R S T UV W XY Z
Lower-case
abcdefghijklmnopqrstuvwxyz
Control characters
space
tab
carriage return
line feed
!Ó # $ % & Õ ( ) * + Ð . , / ; : < = > ? @ \ ^ [ ] Ð
_ (underscore)
Can be used in names, labels, mnemonics, operands, and comments.
Permitted Characters 171
Chapter 8 Writing Source Statements
8.3
Numbers
The Cross-Assembler provides three coding formats for use in numbers and (single) character
constants (refer to section 8.4, "Character Constants").
¥
Extended C language format
¥
Intel format
¥
Matsushita format
One of these formats is selected by using the notation directive. The default is extended C language
format.
Four radices can be used.
¥
Radix 2 (binary)
¥
Radix 8 (octal)
¥
Radix 10 (decimal)
¥
Radix 16 (hexadecimal)
Any radix can be selected by using the radix directive (but only decimal is allowed in extended C
language format). The default is decimal, regardless of coding format.
To code numbers with a radix other than the default, a Þxed sufÞx indicating the radix is appended to
the digits.
Radices and allowed digits
Radix 2(binary)
Radix 8(octal)
Radix 10(decimal)
Radix 16(hexadecimal)
0
0
0
0
A
10
1
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 A B C D E F or
B C D E F are hexadecimal digits that correspond to decimal
11 12 13 14 15. Lower case letters can also be used.
The next page shows how the various radices and formats are coded.
172 Numbers
Chapter 8 Writing Source Statements
Extended C language format
Radix
Binary
Octal
Decimal
Hexadecimal
Current default
radix
Binary
Octal
Decimal
Hexadecimal
-----
-----
0B101
0765
789
0XDEF
-----
Coding rules:
Binary
Start with '0' (zero) and letter 'B' (or 'b'), followed by binary digits.
Octal
Start with '0' (zero), followed by octal digits.
Decimal
Code decimal number as is.
Hexadecimal
Start with '0' and letter 'X' (or 'x'), followed by hexadecimal digits.
Intel format
Radix
Binary
Octal
Current default
radix
Binary
Octal
Decimal
Hexadecimal
101B
101
567O
567Q
101B
101B
101B
567O
567Q
567O
567Q
789D
789
0defH
789D
Decimal
789D
567O
567Q
567
789D
Hexadecimal
0defH
0defH
0defH
0def
Coding rules:
Binary
Follow binary digits with letter 'B' (or 'b'). When the default is binary, the sufÞx
'B' may be omitted.
Octal
Follow octal digits with letter 'O' (or 'o') or 'Q' (or 'q'). When the default is octal,
the sufÞx 'O' or 'Q' may be omitted.
Decimal
Follow decimal digits with letter 'D' (or 'd'). When the default is decimal, the
sufÞx 'D' may be omitted.
Hexadecimal
Follow hexadecimal digits with letter 'H' (or 'h'). If the digits begin with a letter A
Ð F, then they must be preÞxed with the digit '0' (zero). When the default is
hexadecimal, the sufÞx 'H' may be omitted.
Numbers 173
Chapter 8 Writing Source Statements
Matsushita format
Radix
Binary
Octal
Current default
radix
Binary
Octal
Decimal
Hexadecimal
567O
567Q
567O
567Q
567O
567Q
789D
789
0defH
789D
Decimal
789D
567O
567Q
567
789D
Hexadecimal
0defH
0defH
0defH
0def
Coding rules:
174 Numbers
Binary
Start with letter 'B' (or 'b'), and enclose binary digits in single quotation marks ( '
). When the default is binary, code the binary number as is.
Octal
Start with letter 'O' (or 'o'), and enclose octal digits in single quotation marks ( ' ).
When the default is octal, code the octal number as is.
Decimal
Start with letter 'F' (or 'f'), and enclose decimal digits in single quotation marks ( '
). When the default is decimal, code the decimal number as is.
Hexadecimal
Start with letter 'X' (or 'x'), and enclose hexadecimal digits in single quotation
marks ( ' ). When the default is hexadecimal, code the hexadecimal number as is.
When the number begins with a letter, preÞx it with '0' (zero).
Chapter 8 Writing Source Statements
8.4
Character Constants
Displayable ASCII characters can be coded as character constants or string constants. The characters
that can be used for constants are as follows.
¥
Digits
¥
Letters (upper or lower case)
NOTE:
String constants can use underscores and control characters (other than
carriage returns or line feeds).
Character constants
A character constant is stored as an ASCII code in the space of a single character. The method for
specifying character constants differs depending on the coding format.
The coding format is selected using the notation directive. The default is extended C language format.
NOTE:
The coding format also applies to numbers. Refer to section 8.3, "Numbers", for
details.
Coding rules:
In extended C format and Intel format, character constants are speciÞed just with the character enclosed
in single quotation marks ( ' ). In Matsushita format, the enclosed character is preceded by the letter 'C'
(or 'c').
The character 'A' (ASCII code 042) is speciÞed in each coding format as follows.
Coding Format
Extended C language format
Matsushita format
Intel format
Character Constant
ÔAÕ
CÕAÕ or cÕAÕ
ÔAÕ
When more than one character is speciÞed (such as C'FEDCBA' or 'FEDCBA'), only the that last
character will be valid (in this case the letter 'A' (ASCII code 042) will be valid.
NOTE:
To specify a single quotation mark for a character constant, precede the mark by
a backslash (\):
CÕ\ÕÕ
Specifies "Õ".
Character Constants 175
Chapter 8 Writing Source Statements
String constants
String constants are strings of one or more characters stored as ASCII code. When a string constant is
one character it will be the same as a character constant.
Coding rules:
String constants are speciÞed by enclosing the string in double quotation marks ( " ).
"ABCDEFG"
SpeciÞes the string ABCDEFG as ASCII code.
"+-[&%$#@!,.;:'"
SpeciÞes the string +-[&%$#@!,.;:' as ASCII code.
NOTE:
To specify a double quotation mark in a character constant, precede the mark by
a backslash (\):
"\""
Specifies """ in ASCII code.
NOTE:
Note that string constants are specified the same regardless of coding format.
The coding format has no effect even when a single-character string constant is
specified.
176 Character Constants
Chapter 8 Writing Source Statements
8.5
Address Constants
Address constants return particular bits from expressions that can be evaluated as addresses.
They are written as follows.
address_speciÞer (expression)
An address constant is written as an expression enclosed in parentheses following an address speciÞer.
An expression consists of names, self-reference address symbols, and constants linked by operators,
with the result representing a single value (refer to section 6.7, "Expressions", for details).
The address speciÞers are shown below.
A or a
Return the whole 18 bits of the expression value (bits 0 Ð 23).
AL or al
Return the lower 16 bits of the expression value
excluding a half byte (bits 1 Ð 15).
AH or ah
Return the upper 2 bits of the expression value (bits 16 Ð 23).
Example:
Assume that the following address is assigned to the label with the name MESSAGE.
address =
001110010101011011101001(binary)
a(MESSAGE) represents
1001110010101011011101001
al(MESSAGE) represents
0101011011101001
ah(MESSAGE) represents
100111001
Address Constants 177
Chapter 8 Writing Source Statements
8.6
Location Counter
The assembler contains an variable for counting addresses of instructions. This variable is called the
location counter. Each time the assembler converts an instruction to machine language, it increments
the location counter by the number of words in that instruction.
Location counter values are Þrst set during linking for each section deÞned by the section directive, so
location counter values during assembly will not necessarily match the addresses assigned to
instructions during execution. Location counter values during execution will be offset values from the
start of each section.
The address of the current instruction can be coded as an asterisk (*). This asterisk is called the selfreference address symbol. By using a self-reference address symbol in the operand Þeld of a source
statement, you can reference the address assigned to that statement during execution.
The self-reference address symbol is also used to specify the operand of equ directives.
Example:
main
equ
*
This assigns the current address value to main.
178 Location Counter
Chapter 8 Writing Source Statements
8.7
Expressions
Expressions are symbols, self-reference address symbols, and constants linked by operators, with the
result representing a single value. When an expression is coded as an operand, its result will be a
number or an address depending on the type of instruction.
When a symbol or self-reference address included in an expression is a forward referenced symbol, a
relocatable symbol, or an undeÞned symbol, the result of the expression cannot be resolved by the
assembler. It will then be resolved by the linker.
Expressions 179
Chapter 8 Writing Source Statements
8.7.1
Operators
There are three types of operators.
¥
Arithmetic operators
¥
Shift operators
¥
Logical operators
Arithmetic operators
Arithmetic operators perform the four standard arithmetic calculations.
Operator
*
/
%
+
+
-
Meaning
Multiplication
Division
Modulo operator (remainder)
Addition
Subtraction
Unary plus (positive)
Unary minus (negative)
Formats:
180 Expressions
Example:
operand1
*
operand2
123 * LABEL
operand1
/
operand2
123 / 10
operand1
%
operand2
COUNT % 4
operand1
+
operand2
SATRT + 0x10
operand1
Ð
operand2
STACK Ð 16
+ operand
+SIGN
Ð operand
-SIGN
Chapter 8 Writing Source Statements
Shift operators
The shift operators shift to the left or right in bit units.
Operator
Meaning
>>
<<
logical right shift
Logical left shift
Formats:
operand>>count
ADDRESS >> 3
3-bit right shift
operand<<count
ADDRESS << 4
4-bit left shift
Binary 0(zero) will be shifted in. Shifted out bits will be lost.
Logical operators
Logical operators perform calculation in bit units.
Operator
Meaning
&
^
|
-
Logical AND
Exclusive OR
Logical OR
Unary negation (1Õs complement)
Formats:
Example:
operand1
&
operand2
ADDRESS & MASK
operand1
^
operand2
CONST ^ 0b11110000
operand1
|
operand2
VECT | 0b11110000
- operand
MAIN
Expressions 181
Chapter 8 Writing Source Statements
8.7.2
Expression Evaluation
There are seven levels of operator precedence. The order of precedence can be changed using
parentheses ( ). Operators with the same precedence are evaluated in order from left to right.
Table 8-1 Operator Precedence
Precedence
Operator
Highest
+ * / %
+ << >>
&
^
|
Lowest
182 Expressions
Description
Unary negation, unary plus, unary minus
Multiply, divide, remainder
Add, subtract
Left shift, right shift
Logical AND
Exclusive OR
Logical OR
Chapter 8 Writing Source Statements
An example of operator is hown below.
***mn102L00
Loc
Cross
Object
=0000000A
=0000006E
000000
000001
000002
000003
000004
000005
000006
000007
000008
000009
15
07
92
91
1B
28
00
27
03
6F
000100
F470000000
ROM size is
261
(HEX.
No error in
this assembly
No warning in this assembly
Assembler
line
1
2
3
4
5
6
7
8
9
10
11
12
+13
14
15
16
17
+18
19
00000105)
SIKI.LST
***
Source
global
c2
c1
c2
equ
equ
10
0b01101110
_CODE
d1
d2
d3
d4
d5
d6
d7
d8
d9
d10
section
dc
dc
dc
dw
dc
dc
dc
dc
dc
dc
org
mov
end
CODE, PUBLIC,2
c1/3 * (3+4)
c1%3 * (3+4)
-c2
~c2
c2>>2
c1<<2
main>>2
c2>>2^0b00111100
(c2&0b00001111)>>2
c2|0b00001111
0x100
c2 & 0b00001111,D0
main
SIKI.LST
***Symbol
00000000
0000000A
0000006E
00000000
00000009
00000001
00000002
00000003
00000004
00000005
00000006
00000007
00000008
00000100
Page 1
Page2
Table***
A _CODE
A c1
*U c2
T d1
T d10
T d2
T d3
T d4
T d5
T d6
T d7
T d8
T d9
T main
An asterisk * is used as both the self-reference address symbol and the multiplication operator, so take
care in its use. The expression *** will be multiplication of the self-reference address symbol by itself.
Expressions 183
Chapter 8 Writing Source Statements
8.7.3
Expression Syntax
Below is an expression syntax diagram
(
expression
expression
binary operator
)
expression
unary operator
symbol
constant
*
Figure 8.1 Expression Syntax
NOTE:
Example:
mov
mov
mov
184 Expressions
When the expressions starting with parenthsis are coded to the operands of
Machine language instructions, it will be regarded as an address-referene. To be
proceeded as expressions, put 0+ before the parenthsis and distinguish them
from others.
(10+5), d0
(0+(10+5), d0
(10+5)+2, d0
; move the value of address 15 to D0 equal to mov(15), d0
; move the value of constant 15 to d0 equal to mov 15, d0
; Error. "(10+5)" is regarded as an address-reference. It is
syntax error.
Chapter 8 Writing Source Statements
8.7.4
Expression Attributes
When expression operands are connected by an operator, the calculated result of the expression will
have attributes of the operands and the operator.
The most important attributes for expression evaluation are as follows.
¥
UndeÞned
(undeÞned
-UND)
¥
Absolute
(absolute
-ABS)
¥
External
(external
-EXT)
¥
Relative
(relocate
-REL)
Operation result attributes
The operation result attributes for the label itself or the labels are following four.
UND: undeÞned attributes
the label is undeÞned at the reference.
ABS: absolute attributes
The label is undeÞned with equ pseud instruction. The value is not changed.
The constant value written directly will be regarded as an absolute attribute.
REL: relative attributes
The label is already deÞned in the same Þle at the reference (the label referring forward).
EXT: external reference attrobites
The label is declared with global pseud instruction and deÞned by another Þle.
The rules for connecting attributes are as follows.
For Ð, +, Ð (unary) operators
Attribute Of Operand
Attribute Of Result
UND
ABS
REL
EXT
UND
ABS
REL
EXT
Expressions 185
Chapter 8 Writing Source Statements
For + (addition) operator
operand1 + operand2
+ (addition)
Operand 1
Operand 2
UND
ABS
REL
EXT
UND
ABS
REL
EXT
UND
UND
UND
UND
UND
ABS
REL
EXT
UND
REL
REL
EXT
UND
EXT
EXT
EXT
For - (subtraction) operator
operand1 - operand2
-(SUBTRACTION)
Operand 2
UND
ABS
REL
EXT
Operand 1
UND
ABS
REL
EXT
UND
UND
UND
UND
UND
ABS
REL
EXT
UND
REL
REL
EXT
UND
EXT
EXT
EXT
For *, /, %, <<, >>, &, ^ , | operators
operand1 operator operand2
*,/,%,<<,>>,&,
Operand 1
NOTE:
^,|
UND
ABS
REL
EXT
Operand 2
UND
ABS
REL
EXT
UND
UND
UND
UND
UND
ABS
REL
EXT
UND
REL
REL
EXT
UND
EXT
EXT
EXT
The expressions writing in the operands of pseud instructions and Assembler
Control instruction must result in ABS. However, unlike the other pseud
instructions, the expressions written in the operands of org pseud instruction
and equ pseud instruction may write the instructions of operands other then
ABS.
[Reference: 9.4.6 org and 9.4.14 equ for details. ]
186 Expressions
Chapter 8 Writing Source Statements
8.8
Reserved Words
The assembler gives special meanings to the symbols listed below, so they cannot be used for other
purposes. These symbols are called reserved words.
Either all upper-case or all lower-case letters may be used to code reserved words, but they cannot be
mixed within one reserved word.
¥
Machine language instruction mnemonics
¥
Port names
¥
Register names
¥
Address constants
¥
Directives
¥
Assembler control instructions
¥
Macro control instructions
Except for machine language instruction mnemonics and port names, the reserved words are listed
below.
Register name
D0, D1, D2, D3, A0, A1,A2, A3,
Address constants
ah, al, a
PSW,
MDR
Assembler control
instructions
align, dc, dd, ds, dw, end, equ, global, listoff,
liston, xlistoff, xliston, notation, org, opt,
page, radix, section, tit
define, if, ifb, ifdef, ifeq, ifge, ifgt, fle,
iflt, ifn, ifnb, ifndef, ifneq, include, undef
Macro control
instructions
back, endm, exitm, front, irp, irpc, instructions,
local, macro, purge, rept
Directives
Reserved Words 187
Chapter 8 Writing Source Statements
188
Chapter 9
Writing Machine Language Instruction
Statements And Directive Statements
9
Chapter 9 Writing Machine Language Instructions And Directive Statements
9.1
Purpose Of This Chapter
This chapter explains how to write machine language instructions and directives.
There are five source statement formats
¥
Instruction statements that code machine language instructions and directives.
¥
Assembler control statements that code assembler control instructions
¥
Macro control statements that code macro control instructions
¥
Comment statements
¥
Blank statements
Each is coded differently.
This chapter explains in detail the code syntax and usage examples of machine language instructions
and directives.
Refer to chapter 8, "Writing Source Statements", regarding address constants, numeric constants,
expressions, and the syntax rules for numbers and characters.
Refer to the "Instruction Manual" for detailed descriptions of machine language instructions.
190
Purpose Of This Chapter
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.2
Instruction Statement Fields
Source statements that code machine language instructions and directives are built from four Þelds.
[label] [operation [operand [, operand]]] [comment]
Contents of brackets [ ] can be omitted.
Coding rules
Source statements may contain a label Þeld only.
Depending on the operation, source statements may contain no operand.
Fields are delimited by at least one space or tab. Two operands are delimited by a comma (,).
A statement with an LF only, omitting all Þelds, is a blank statement.
Statements are terminated by the LF character (line feed = 0x0A).
The maximum number of characters on one line is 256.
Instruction Statement Fields 191
Chapter 9 Writing Machine Language Instructions And Directive Statements
9.2.1
Writing Label Field
Labels are called both symbols and names. The assembler assigns a label the value of the location
counter at the point it is deÞned.
Coding rules
Labels can use upper-case and lower-case letters, digits, underscores (_).
Labels are coded in the Þrst column.
The Þrst character of a label must not be a digit.
The Þrst through 64th characters will be registered as the label.
Labels are case sensitive.
The same label name cannot be deÞned twice.
When the label is omitted, it must be replaced with at least one space or tab.
Terminology:
* Column
This is a column on the display or printer paper. One character takes one
column. Columns are counted from the left as column 1, 2, etc.
Coding examples
LABEL
LONGLABELLONGLABELLONGLABELLONGLAB
main
start_cont
The following examples are incorrect.
1LABEL
@START
START
192
Instruction Statement Fields
; Starts with a digit
; Uses a prohibited character
; Does not start from the Þrst column
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.2.2
Writing Operation Field
The operation Þeld is written with a machine language instruction mnemonic or directive.
Coding rules
The operation Þeld can be coded using upper-case and lower-case labels.
Coding examples
CONST1
_CODE
start
equ
tit
section
mov
rts
10
ÒCalculation ProgramÓ
CODE, UBLIC, 2
CONST1, D0
Instruction Statement Fields 193
Chapter 9 Writing Machine Language Instructions And Directive Statements
9.2.3
Writing Operand Field
The operand Þeld coding is determined by the machine language instruction or directive in the
operation Þeld. Refer to the "Instruction Manual" for details on coding machine language instructions.
Coding rules
Operands are written with expressions and reserved words (register names, etc.).
Operands cannot include spaces, except for character constants and string constants.
When two operands are coded, they must be delimited by a comma (,).
Coding examples
ROR
mov
jsr
194
Instruction Statement Fields
D0
CONST+3, D0
PRINT
;One operand
;Operands are aregister and expression
;Operand is an address
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.2.4
Writing Comment Field
The Þeld that starts from a semicolon (;) after the operands is called the comment Þeld. Comments
coded in this position are called end-of-line comments, as opposed to comment statements where the
entire line is a comment.
Coding rules
Comments being with a semicolon (;) and end with a line feed (LF).
Comment Þelds may be written with letters, digits, special characters, and control characters other than
carriage return and line feed.
Coding examples
mov
0x10, D0
;Set count value
Instruction Statement Fields 195
Chapter 9 Writing Machine Language Instructions And Directive Statements
9.3
Writing Machine Language Instruction
Statements
Each machine language instruction is deÞned by speciÞc mnemonics. Mnemonics are formed from
operations and operands accurately coded in the statement Þelds previously described.
Both upper-case and lower-case letters may be used.
Refer to the "Instruction Manual" for details of machine language instructions.
Coding rules
When coding a label, insert at least one space or tab between it and the operation Þeld.
When the label Þeld is omitted, replace it with at least one space or tab.
Both upper-case and lower-case letters may be used.
Insert at least one space or tab between the operation Þeld and operand Þeld.
The assembler and linker optimization function will adjust conditional and unconditional branch
instructions to generate the optimal code.
When a relative address is speciÞed in an operand and only labels with speciÞc addresses are coded, the
assembler will calculate and set the relative values.
Coding examples
START
indirect
mov
D0, (A0)
;src=register, dst=register indirect
mov
0x11, D0
;src=immediate data
not
rol
ror
and
or
xor
add
sub
mul
divu
cmp
bra
jmp
indirect)
jsr
rts
D0
D0
D0
0x0f, D0
0x30, D0
D0, D1
D1, D0
D1, D0
D1, D0
D1, D0
0x05, D0
SUBR
(A0)
;negate
;rotate left
;rotate right
;logical AND
;logical OR
;exclusive OR
;add
;subtract
;multiply
;divide
;compare
;unconditional branch
;unconditional branch
SUBR
;subroutine call
;return from subroutine
dst=register
(register
196
Writing Machine Language Instruction Statements
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.4
Writing Directive Statements
Directives differ from machine language instructions in that they only have effect on the assembler.
Directives specify program structure and start addresses, set constants and radices, and specify options
and label attributes.
List of directives
Below is a list of directives.
Directive
section
align
end
listoff
liston
notation
org
opt
page
radix
dc
ds
dw
dd
equ
global
tit
xlistoff
xliston
Function
SpeciÞes a section
Aligns the location counter value to a multiple of an expression.
Indicates the end of the program.
Stops list output from the line following this directive.
Starts list output from this directive.
Selects the coding format for numbers.
Changes the program address.
Enables/disables optimization functions.
SpeciÞes the number of columns and rows on one page of the list Þle.
Selects the radix to be speciÞed by default.
Stores an 8-bit constant in a memory area.
Reserves an 8-bit data area in a memory area.
Stores a 16-bit constant in a memory area.
Stores a 32-bit constant in a memory area.
DeÞnes a name as the value of an operand expression.
Declares external references with external declarations.
SpeciÞes the header name of the list Þle.
Stops list output including this directive.
Starts list output from the line following this directive.
Writing Direcrive Statements 197
Chapter 9 Writing Machine Language Instructions And Directive Statements
Document conventions
Symbols used in this chapter have the following meanings.
[]
( )...
|
Contents of brackets [ ] may be omitted.
Contents of parentheses ( ) may be repeated.
Specify one or the other of the terms delimited by a vertical bar |.
NOTE:
198
Writing Directive Statements
The blank in the colums of "label" and 'operand" means that you can not write the
label or operand.
Example:
label
operation operand
notation
CLANG|INTEL|PANA
The "label" is not coded in the same line as notation directives.
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.4.1
section
Syntax
label
operation
operand
section_name
section
[deÞnition1 [,deÞnition2 [,expression]]]
definition1 Section attribute (CODE|DATA)
definition2 Link type (PUBLIC|PRIVATE)
expression Location counter boundary value (power of 2, or 0)
Default settings
When deÞnition1, deÞnition2, or expression are omitted, they will inherit the current section type.
Functional description
The section directive speciÞes a section name, as well as its attribute, link type, and location boundary.
During linking the linker gathers sections with the same name and links them together by attribute. The
order of linking is determined by the link type and the order in which the linker encounters the sections.
Section linking rules
1. Link sections in order of appearance.
2. Link by attribute.
3. Link by link type.
PUBLIC(PRIVATE)
Link across all linked Þles.
Writing Directive Statements
199
Chapter 9 Writing Machine Language Instructions And Directive Statements
Operand coding rules
When the Þrst section name encountered in a Þle is deÞned, deÞnition1, deÞnition2, and expression
cannot be omitted. If omitted, then the assembler will generate an error and ignore this directive.
Only speciÞc strings can be deÞned for deÞnition1 and deÞnition2. If some other string is deÞned, then
the assembler will generate an error and ignore this directive.
The value of expression must be a power of 2 between 1 and 32768, or 0. If its value is outside this
range, then the assembler will assume the closest valid value instead. If the value is 0, the location
counter boundary value is 0.5 bytes.
The attribute, link type, and location boundary of sections with the same name must be either identical
or omitted. If a different attribute, link type, or location boundary is deÞned, then actual value will be
inherited from the setting of the very Þrst section.
If there is the same section name in a Þle with a different attribute, link type, or location boundary, then
the linker will locate the section using the attribute, link type, and location boundary of the Þrst
occurrence that it encounters.
Directive coding rules
The section directive has no restrictions on where in the source Þle it can be deÞned.
Usage example
Below is an example use of the section directive.
*
_CODE
main
comment
section
jsr
.
.
.
200
CODE, PUBLIC, 2
INIT
NOTE:
Assembler instructions and dc, dd, ds and dw directives must be coded after a
section has been defined. If used before a section has been defined, then the
assembler will generate an error and ignore that assembler instruction or directive.
NOTE:
The value for the section name will be the starting address in the same section
after link
Writing Directive Statements
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.4.2
align
Syntax
label
operation
operand
align
expression
Default settings
The current location counter value will be inherited.
Functional description
The align directive adjusts the location counter to be a multiple of the value indicated by expression.
The expression must be a power of 2 in the range 1 to 215.
When the expression value is 4, the multiples of 4 will be the following series.
4, 8, 12, 16, 20, 24, 28, 32, ...
When the location counter value is 13, then the statement after align 4 will have its location counter
changed to 16. When the location counter is 23, the statement will have its location counter changed to
24. When the location counter is 30, the statement counter will have its location counter changed to 32.
Thus, the align directive rounds up the current location counter value up to the next greater multiple of
the expression value.
Operand coding rules
The attribute of the calculated result of the expression coded in the operand must be abs (absolute).
Refer to Section 6.7.4, "Expression Attributes", regarding expression attributes.
The expression value must be a power of 2 in the range 1 to 215.
2, 4, 8, 16, 32, 64, 128, 256, ...
If the expression value is not a power of 2, then the assembler will generate an error and round up to the
next greater power of 2. In such a case, if the assembler's r option has been speciÞed, then the
assembler will generate a relocatable object Þle even with the error.
NOTE:
When the expression value is between 5 to 7, it can be round up to 8. Also,When the
expression value is between 17to 31,it can be round up to 32.
Writing Directive Statements 201
Chapter 9 Writing Machine Language Instructions And Directive Statements
Usage example
Below is an example use of the align directive.
***mn102L00
Loc
Cross
Object
000000
000001
000002
00
00
00
ALIGN.ASM(6)
000008
000009
00000A
:Error2002:
00
00
00
000010
000011
00
00
000020
000021
00
00
ROM size is
34
(HEX.
1 error in
this assembly
No warning in this assembly
ALIGN
Assembler
Line
1
2
3
4
5
6
Illegal
7
8
9
10
11
12
13
Page 1
section
CODE, PUBLIC, 2
mov
D0, (A0)
mov
D0, (A0)
mov
D0, (A0)
align
6
operand
value.
mov
mov
mov
align
mov
mov
14
15
16
17
00000022)
ALIGN
***Symbol
00000000
00000000
.LST
***
Source
_CODE
main
.LST
D0, (A0)
D0, (A0)
D0, (A0)
8
D0, (A0)
D0, (A0)
align
16
mov
mov
end
D0, (A0)
D0, (A0)
Page2
Table***
A_CODE
T main
In the align 6 directive on line 6, the expression value 6 is not a power of 2, so the assembler will convert
it to align 8.
The series of multiples of 8 is shown below. Numbers in parentheses are hexadecimal.
8(8) 16(10) 24(18) 32(20) 40(28) 48(30) 56(38) 64(40)
The location counter value at the line of align 6 is 0003 (hex.), which is between 0000 and 0008 (hex.).
Therefore the next line will start from location 0008 (hex.).
The same series applies to the align 8 on line 10. The location counter there is 000B (hex.), which is
between 0008 and 0010 (hex.). Therefore the next line will start from location 0010 (hex.).
Similarly, the align 16 on line 13 uses the series 16 (10), 32 (20), 48 (30)... The location counter there
is 0012 (hex.), which is between 0010 and 0020 (hex.). Therefore the next line will start from location
0020 (hex.).
202
Writing Directive Statements
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.4.3
end
Syntax
label
operation
[name]
end
operand
Default settings
If the end directive is omitted, then the assembler Þle will assume that the end of the Þle is the end of
the program.
Functional description
The end directive is coded once at the end of a program. All text coded after the end directive will be
ignored by the assembler (but it will be output to the source list).
When a name is coded in the label Þeld, the current location counter value will be assigned to it.
Operand coding rules
The end directive takes no operands. If operands are coded, they will cause an assembler syntax error.
Usage example
Below is an example use of the end directive.
_CODE
main
section
CODE, PUBLIC, 2
jsr
mov
.
.
end
data_move
0, D0
Writing Directive Statements 203
Chapter 9 Writing Machine Language Instructions And Directive Statements
9.4.4
listoff, liston
Syntax
label
operation
[name]
listoff
operand
.
.
.
[name]
liston
Functional description
The listoff and liston directives are used in pairs. Statements from the statement following the listoff
directive until the statement preceding the liston directive will not be output to the list Þle. These
directives are used when you do not want to output an already debugged program to the list Þle.
NOTE:
The listoff and liston directives themselves are output.
Only output to the list Þle will be suppressed. Output of object code will not be suppressed at all.
Operand coding rules
These directives take no operands.
Usage example
Below is an example use of the listoff and liston directives. The mov 0x22,D0 is a statement that
should not be output to the list Þle.
_CODE
main
204
Writing Directive Statements
section
CODE, PUBLIC, 2
mov
listoff
mov
liston
mov
end
0x11,D0
0x22, D0
0x33, D0
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
The list file created by the assembler is shown below. The mov 0x22,D0 statement between the listoff
and liston directives has not been output. The listoff and liston directives themselves are shown on two
consecutive lines in the list file.
***mn102L00
Loc
Cross
Object
000000
8011
000004
8033
ROM size is
6
(HEX.
No error in
this assembly
No warning in this assembly
LISTON
Assembler
Line
1
2
3
4
6
7
8
00000006)
.LST
***
Source
_CODE
main
Page 1
section
CODE, PUBLIC, 2
mov
listoff
liston
mov
end
0x11, D0
0x33, D0
Writing Directive Statements 205
Chapter 9 Writing Machine Language Instructions And Directive Statements
9.4.5
notation
Syntax
label
operation
operand
notation
CLANG | INTE | PANA
Default settings
CLANG will be selected.
Functional description
The notation directive selects the format of numbers and character constants (single character).
The Cross-Assembler provides three numeric formats.
¥
Extended C language format
¥
Intel format
¥
Matsushita format
Each format gives a speciÞc way to represent binary, octal, decimal, and hexadecimal numbers, as well
as character constants.
The notation directive selects which format numbers and character constants will be coded with. This
directive can be coded any number of times in a program.
Refer to section 6.3, "Numbers", for details about numeric formats, and to section 6.4, "Character
Constants", for details about character constant formats
Operand coding rules
The strings that can be speciÞed in the operand and the format that they select are listed below.
operand
CLANG
INTEL
PANA
Format
Extended C language format
Intel format
Matsushita format
If other strings are speciÞed, then the assembler will generate an error and ignore this directive.
206
Writing Directive Statements
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
Usage example
Below is an example use of the notation directive.
***mn102L00
Loc
Cross
Object
000000
000003
000006
000009
00000C
F8FF00
F8FF00
F8FF00
F8FF00
F8FF00
00000F
000012
000015
000018
F8FF00
F8FF00
F8FF00
F8FF00
00001B
00001E
000021
000024
F8FF00
F8FF00
F8FF00
F8FF00
NOTATION
Assembler
Line
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.LST
***
Source
_CODE
Page 1
section
notation
mov
mov
mov
mov
mov
notation
mov
mov
mov
movw
notation
mov
mov
mov
mov
end
CODE, PUBLIC, 2
INTEL
11111111b, D0
377q, D0
377o, D0
255d, D0
0ffh, D0
CLANG
0b11111111, D0
0377, D0
255, D0
0xff, DW0
PANA
bÕ11111111Õ, D0
oÕ377Õ, D0
fÕ255Õ, D0
xÕffÕ, D0
Writing Directive Statements 207
Chapter 9 Writing Machine Language Instructions And Directive Statements
9.4.6
org
Syntax
label
operation
operand
[name]
org
expression
expression
label_name + constant, constant + label_name, label_name or constant
Default settings
The current location counter value will be inherited.
Functional description
The org directive sets the location counter to the address value speciÞed by expression.
Operand coding rules
The expression coded in the operand is speciÞed in the form of label_name + constant, constant +
label_name, label_name or a constant alone. The attribute of the calculation result must be rel
(relative). If the label is a forward reference or an external label that exists in a later position, then it
will cause an error.
Even when both of the operand formata and the value are correct, it will cause an error if an another
code already exists in the address after the location counter setting.
If specifying the constants, it will be regarded as offset of the starting in the section. If the expression
consists the labels, set the location counter in the address value speciÞed with the expressions.
Refer to section 8.7.4, "Expression Attributes", regarding attributes of expressions.
When a name is coded with the org directive, that name will be set the current location counter value.
208
Writing Directive Statements
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
NOTE:
If the expressions written in the operands are label name + constant,
constant+label name, label name or in non-constant format, the error will occur
no matter what the constant value is. Even if the expressions are in the
adequate format, they will cause an error when the constant value is in negative
number.
Example 1: Expression format is incorrect.
org label-10
; error (inadequate format)
org abel-(-10)
; error (inadequate format)
Example 2: Format is correct but Constant Value is in negative number.
org label+(-10)
; error (negative constant value)
org -10`
; error (negative constant value)
Example 3: Format is correct but Constant Value result is positive.
org -(-10)
; correct coded
org -(-10)+label
; correct coded
Usage example
Below is an example use of the org directive.
_CODE
sec_adr
sec_fnc
section
equ
.
instructions
.
org
equ
.
instructions
.
org
.
.
.
end
CODE, PUBLIC, 2
*
sec_adr+0x20
*
sec_fnc+0x10
Writing Directive Statements 209
Chapter 9 Writing Machine Language Instructions And Directive Statements
9.4.7
opt
Syntax
label
operation
operand
opt
on | off
Default settings
If omitted, then opt off will be assumed.
Functional description
The opt directive enables and disables the optimization functions of the assembler and linker.
Optimization applies only to conditional and unconditional branch instructions. The optimization
function evaluates how the source statements are coded, and then converts them to the optimal code
with the linker.
When a program split into multiple Þles is assembled, the assembler at this stage cannot determine if
the branch destinations of conditional branch instructions are within the speciÞed range or if
unconditional branch instructions can be replaced with relative branch instructions. The purpose of the
optimization function is to solve this problem. The assembler informs the linker of the instructions
subject to optimization.
While the linker is linking multiple Þles, it outputs the instructions with the smallest possible code size
for the instructions subject to optimization.
Refer to chapter 2, "Optimization", for details.
NOTE:
The -Od assembler option disables the optimization function, however,
optimization will be enabled if opt on is coded in the source file
Operand coding rules
The strings that can be coded for the operand and their meanings are as follows.
210
opt on
Enables optimization.
opt off
Disables optimization.
Writing Directive Statements
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
Usage example
Below is an example use of the opt directive.
opt
opt
on
off
Writing Directive Statements 211
Chapter 9 Writing Machine Language Instructions And Directive Statements
9.4.8
page
Syntax
label
operation
operand
page
lines_expression, columns_expression
Default settings
Number of lines = 60
Number of columns = 132
Functional description
The page directive speciÞes the number of lines and columns per page. At the line where the page
directive itself is speciÞed the assembler will output a carriage return and then apply the newly set
values.
Operand coding rules
The expressions coded in the operand must result in the attribute abs (absolute). Refer to section 8.7.4,
"Expression Attributes", regarding attributes of expressions.
Specify the number of lines in the range 10 Ð 255. Specify the number of columns in the range 60 Ð
255.
If a value outside the allowable range is speciÞed, then the assembler will generate an error and ignore
this directive.
Usage example
Below is an example use of the page directive.
page
page
212
Writing Directive Statements
24, 80
LINE_NO, COLUMN_NO
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.4.9
radix
Syntax
label
operation
operand
radix
expression
Default settings
Radix 10 (decimal).
Functional description
The radix directive speciÞes the radix that will be used by default. The Cross-Assembler provides
three coding formats for numbers.
¥
Extended C language format
¥
Intel format
¥
Matsushita format
The format is selected with the notation directive. Refer to the description of the notation directive.
The default is extended C language format.
The radix directive speciÞes the default radix for numbers in these coding formats by the expression in
the operand. Select one from radix 2 (binary), radix 8 (octal), radix 10 (decimal), and radix 16
(hexadecimal).
NOTE:
In extended C language format, the default radix cannot be specified by the radix
directive. The default is fixed as radix 10 (decimal), and it cannot be changed to
another radix
Operand coding rules
The expression coded in the operand must result in the attribute abs (absolute). Refer to section 8.7.4,
"Expression Attributes", regarding attributes of expressions.
The calculated result of the expression coded in the operand must be either 2, 8, 10, or 16. The radix of
the expression in the operand is always 10 (decimal), regardless of the current default radix. If the
expression results in a number that does not specify a radix, then the assembler will generate an error
and ignore this directive.
Writing Directive Statements 213
Chapter 9 Writing Machine Language Instructions And Directive Statements
Usage example
Below is an example use of the radix directive.
radix
radix
214
Writing Directive Statements
16
BINARY
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.4.10 dc
Syntax
label
operation
operand
[name]
dc
constant | expression (, constant | expression )...
Functional description
The dc directive is used to deÞne constants in a memory area. The 8-bit constant speciÞed by the
operand will be stored at the location of the statement specifying this directive.
When a name is coded for the label, the assembler will assign the current location counter value to that
name.
Operand coding rules
The expression coded in the operandmust result in the attribute abs(absolute).
Refer to section 8.7.4 ÒExpression AttributesÓ, regafding attributes of expressions.
Specify one of the following constants or the operand.
¥
character constant
¥
string constant
¥
address constant
The operands are delimited with commas (,). Any number of operands can be coded.
If data that exceeds 8 bits is speciÞed, then the lower 8 bits will be valid, and the upper bits will be lost.
The assembler will output a warning message in such cases.
When the speciÞed data has fewer than 8 bits, those bits will Þll the lower bits, and the upper bits will
be padded with zeroes.
Writing Directive Statements 215
Chapter 9 Writing Machine Language Instructions And Directive Statements
Usage example
Below is an example use of the dc directive.
***
Loc
216
mn102L00
Object
000000
000001
000002
000003
000004
000005
000006
000007
000008
000009
00000A
41
41
42
43
3F
0E
FF
FF
FE
FF
FF
00000B
F470000000
Writing Directive Statements
DC.LST
***
Page 1
_CODE
d0
d1
radix
section
dc
dc
10
CODE, PUBLIC, 2
ÔAÕ
ÒABCÓ
d2
d3
d4
d5
dc
dc
dc
dc
255>>2
(12+3)/2*2
0b11111111
0377,0376
d6
d7
main
dc
dc
255
0xff
+12
mov
d7, D0
13
end
end
Cross
Line
1
2
3
4
4
4
5
6
7
8
8
9
10
11
Assembler
Source
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.4.11 ds
Syntax
label
operation
operand
[name]
ds
expression1 [, expression2 [, expression3]]
expression1
Number of bytes of memory to reserve
expression2
Initial value
expression3
Number of iterations
Default settings
expression2 (initial value) If omitted, the assembler will assume 0.
expression3 (iterations) If omitted, the assembler will assume 1.
Functional description
The ds directive reserves a memory area of the number of bytes speciÞed by expression1 of the
operand. When expression2 (initial value) is speciÞed, that memory area will be Þlled with the initial
value. Note that expression2 can be speciÞed only when the value of expression1 is 4 or less. When
expression3 (iterations) is speciÞed, the same speciÞcation will be repeated for the number of
iterations. For example, if the operand is 4, 0, 3, then a 4-byte area will be Þlled with 0 three times.
Thus, a 12-byte area will be reserved.
When a name is coded for the label, the assembler will assign the current location counter value to that
name.
Operand coding rules
The expression1 (bytes), expression2 (initial value), and expression3 (iterations) coded in the operand
must result in the attribute abs (absolute). Refer to section 6.7.4, "Expression Attributes", regarding
attributes of expressions.
NOTE:
When expression2 is omitted, expression3 cannot be specified.
Usage example
Below is an example use of the ds directive.
DC.LST
***
mn102L00
Cross
Assembler
Loc
Object
Line
Source
1
_CODE
000000
00
2
Page 1
***
section
CODE, PUBLIC, 2
ds
1
Writing Directive Statements 217
Chapter 9 Writing Machine Language Instructions And Directive Statements
000001
11
3
000002
22
3
000003
33
4
000004
44
4
000005
55
4
000006
33
4
000007
44
4
000008
55
4
5
218
Writing Directive Statements
ds
2, 0x1122
ds
3, 0x334455, 2
end
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.4.12 dw
Syntax
label
operation
operand
[name]
dw
expression (, expression )...
Functional description
The dw directive is used to deÞne 16-bit constants in a memory area. The 16-bit constant speciÞed by
the operand will be stored at the location of the statement specifying this directive.
When a name is coded for the label, the assembler will assign the current location counter value to that
name.
Operand coding rules
The operands are delimited with commas (,). Any number of operands can be coded.
If data that exceeds 16 bits is speciÞed, then the lower 16 bits will be valid, and the upper bits will be
lost. The assembler will output a warning message in such cases.
When the speciÞed data has fewer than 16 bits, those bits will Þll the lower bits, and the upper bits will
be padded with zeroes.
Writing Directive Statements 219
Chapter 9 Writing Machine Language Instructions And Directive Statements
Usage example
Below is an example use of the dw directive.
***
Loc
mn102L00
Object
=00000000
000000
0000
000004
0000
000006
0000
000008
0000
000100
000105
000107
000108
00010A
00010B
000110
000112
000113
F474000000
8022
21
F281
01
F474000000
8011
00
FE
000000
220
0000
Writing Directive Statements
DW>LST
Cross Assembler
Line Source
1
_CODE
R2
start
3
+4
5
+6
7
+8
9
+10
11
+12
main
13
14
15
16
+17
no_int
18
19
20
21
22
_DATA
23
data
24
Page 1
***
section
equ
org
dw
org
dw
org
dw
org
dw
org
mov
mov
mov
addc
mov
mov
mov
mov
rts
CODE, PUBLIC, 2
*
start+0x0
a(main)
start+0x4
a(no_int)
start+0x6
a(no_int)
start+0x8
a(main)
0x100
data, A0
0x22, D0
(A0), D1
D0, D1
D1, (A0)
data, A0
0x11, D0
D0, (A0)
section DATA, PUBLIC, 2
dw
0
end
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.4.13 dd
Syntax
labeloperationoperand
[name]ddexpression(, expression)...
Functional description
The dd directive is used to define 32-bit constants in a memory area. The 32-bit constant specified by
the operand wil be stored at the location of the statement specifying this directive.
When a name is coded for the label, the assembler will assign the current location counter value to that
name.
Operand coding rules
The operands are delimited with commas(,). Any number of operands can be coded.
When the specified data has fewer than 24 bits, those bits will fill the lower bits and the upper bits will
be padded with zeros.
Usage example
Below is an example use of the dw directive.
***
Loc
mn102L00
Object
=00000000
000000
00000000
000006
00000000
00000C
00000000
0000012
00000000
000100
000105
000107
000108
00010A
00010B
F474000000
8022
21
F281
01
F474000000
DD.LST
Cross Assembler
Line Source
1
_CODE
R2
start
3
+4
5
+6
7
+10
9
+10
11
+12
main
13
14
15
16
+17
no_int
Page 1
***
section
equ
org
dd
org
dd
org
dd
org
dd
org
mov
mov
mov
addc
mov
mov
CODE, PUBLIC, 2
*
start+0x0
a(main)
start+0x6
a(no_int)
start+0xc
a(no_int)
start+0x12
a(main)
0x100
data, A0
0x22, D0
(A0), D1
D0, D1
D1, (A0)
data, A0
Writing Directive Statements 221
Chapter 9 Writing Machine Language Instructions And Directive Statements
000110
000112
000113
000000
8011
00
FE
18
19
20
21
22
23
24
0000
mov
mov
rts
_DATA
data
0x11, D0
D0, (A0)
section DATA, PUBLIC, 2
dw
0
end
9.4.14 equ
Syntax
label
operation
operand
name
equ
expression
Functional description
The equ directive deÞnes the name to be the value of the expression coded in the operand. When that
name is coded in the operand of machine language instructions, the assembler will reference the name's
value.
System constants often used in programs (memory size, clock frequency, etc.) can be assigned to
names that describe those values.
MEMORY
equ
0x20
MOTOR
equ
10
STOP
equ
0b00001000
BASE
equ
0x1000
This allows numbers used in programs to be coded as descriptive names instead, making programs
easier to read. Furthermore, values can be changed just by modifying the equ directive, which in turn
changes the data wherever it is used. This makes programs easier to maintain.
Operand coding rules
Names deÞned in other programs cannot be speciÞed within expression.
Names deÞned once with the equ directive cannot be deÞned again.
No memory area is reserved when an equ directive statement is executed.
A 0.5-byte unit value is acceptable for the constant.
Only the ezpressions of ABS can be coded in operands of equ pseud instruction. However, the self
address symbol "*" can be coded. the label deÞned with equ will be the label of REL.
Example:
Label1 will be deÞned as label of REL consisting of location counter value.
222
Writing Directive Statements
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
label 1
equ
*
;can be coded
Operand, "*" is not coded alone, which causes an error.
lagel 2
equ
*+1
error
Writing Directive Statements 223
Chapter 9 Writing Machine Language Instructions And Directive Statements
NOTE:
Symbols with unresolved values cannot be coded in the operand. In the
following example, the value of ram1 is not resolved at the point where the value
of ram2 is to be resolved, so the assembler will generate an error.
Error example:
ram2
equ
ram1+0x1
ram1
equ
0x10
By changing the order such that the value of ram1 is resolved first, no error will
occur.
No error example:
ram1
equ
0x10
ram2
equ
ram1+0x1
Usage example
Below is an example use of the equ directive.
***
Loc
000000
000002
000005
00000A
00000C
00000E
00000F
000011
000013
000000
224
mn102L00
Object
=00000064
=00000020
8000
DC2000
F471000000
D864
E600
01
D002
EA00
FE
0000
Writing Directive Statements
Cross
Line
1
2
3
4
5
6
+7
8
+9
10
11
+12
13
14
15
16
17
BQU.LST
Assembler
Source
count
memory
Page 1
***
equ
equ
100
0x20
_CODE
step
section
mov
mov
mov
cmp
bcc
mov
add
bra
rts
CODE, PUBLIC, 2
0, D0
memory, A0
data, D1
count, D0
step_end
D1, (A0)
2, A0
step_loop
step_loop
step_end
_DATA
data
section DATA, PUBLIC, 2
dw
0
end
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.4.15 global
Syntax
label
operation
operand
[name]
global
name(, name)...
Default settings
External reference when omitted = external label
External declaration when omitted = undeÞned label error during linking
Functional description
The global directive declares external references and external declarations.
For external references, the global directive declares that the names coded in the operand are from other
Þles.
For external declarations, the global directive declares that the names coded in the operand can be
referenced externally.
The global directive can be coded anywhere in a source programs.
Operand coding rules
Write the name coded in the label Þeld as an operand. Generally this will be a program name.
The names are delimited with commas (,). Any number of operands can be coded.
When a speciÞed name has been coded in a label Þeld within the program, it will be considered an
external declaration. When it has been coded as operands, it will be considered an external reference.
Writing Directive Statements 225
Chapter 9 Writing Machine Language Instructions And Directive Statements
Usage example
Below is an example use of the global directive.
global
global
main
SUB1
226
jsr
.
.
jsr
.
.
mov
.
.
rts
end
Writing Directive Statements
SUB1
READ,
WRITE
READ
WRITE
0x11, D0
;external declaration
;external reference
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
9.4.16 tit
Syntax
label
operation
operand
tit
["string"]
Default settings
No header will be output to the list Þle.
Functional description
The tit directive speciÞes that the string coded as its operand is to be output as the header of the list Þle.
Typically the string is written with the program name, function, author, version, company, date, etc.
Operand coding rules
The operand is written with any string enclosed by double quotation marks ("). A double quotation
mark itself cannot be included in the string.
Usage example
Below is an example use of the tit directive.
TIT.LST
Title of
Practice
Program
Loc
Object
Line
Source
1
programÓ
000000
54
2
3
Page 1
tit ÒTitle Practice ProgramÓ
main
mov
end
(xp), (yp)
(a0), d0
4
Writing Directive Statements 227
Chapter 9 Writing Machine Language Instructions And Directive Statements
9.4.17 xlistoff, xliston
Syntax
label
operation
[name]
xlistoff
operand
.
.
.
[name]
xliston
Functional description
The xlistoff and xliston directives are used in pairs. Statements from the xlistoff directive until the
xliston directive will not be output to the list Þle. These directives are used when you do not want to
output an already debugged program to the list Þle.
NOTE:
The xlistoff and xliston directives themselves are not output.
Only output to the list Þle will be suppressed. Output of object code will not be suppressed at all.
Operand coding rules
These directives take no operand.
Usage example
Below is an example use of the xlistoff and xliston directives. The range from xlistoff to xliston will be
suppressed
.
_CODE
main
228
section
CODE, PUBLIC, 0
mov
xlistoff
mov
xliston
mov
end
0x11, D0
Writing Directive Statements
0x22, D0
0x33, D0
Chapter 9 Writing Machine Language Instruction Statements And Directive Statements
The list Þle created by the assembler is shown below. The directive statements are not included in the
output. The xlistoff and xliston directives themselves are hidden from the list Þle by having their
output suppressed
***
Loc
000000
000004
mn102L00
Object
8011
8033
Cross
Line
1
2
3
7
8
XLISTON
.LST
Assembler ***
Source
_CODE
section
main
mov
mov
end
Page 1
CODE, PUBLIC, 2
0x11, D0
0x33, D0
Writing Directive Statements 229
Chapter 9 Writing Machine Language Instructions And Directive Statements
230
Chapter 10
Writing Assembler Control Statements
10
Chapter 10 Writing Assembler Control Statements
10.1 Purpose Of This Chapter
Assembler control statements are statements that control assembler processing. They specify include
Þles and control conditional assembly.
Include Þles are used to place deÞnitions of constants, memory areas, I/O ports, and bit assignments
common to the entire program in separate Þles. They are read in during assembly.
Conditional assembly allows the assembler to evaluate conditions, and then to select a block of
statements to assemble depending on whether the conditions are fulÞlled or not.
This chapter describes these functions and how to code them, and provides examples of actual use.
Many directives used in conditional assembly are used only within macro deÞnitions. Refer to chapter
9, "Writing Macro Statements", as needed.
Common coding rules
Here are some rules common to coding of all assembly control statements.
The assembler directive should be coded from the Þrst column of its statement. Both upper and lower
case letters can be used.
The characters that can be used as identiÞers are upper and lower case letter, digits, and underscores
( _ ). However, the first character must not be a digit.
Further conditional assembly directives can be used within a block of conditional assembly directives.
Up to 255 nesting levels are allowed.
The #else directive and the second block can be omitted. Refer to section 8.5, "Conditional Assembly",
for details about the second block.
An expression combines symbols, self-reference address symbols, and constants with operators into an
equation that returns a single value as its result. The value must have the attribute abs (absolute). Refer
to section 8.7, "Expressions", regarding attributes of expressions.
Document conventions
Symbols used in this chapter have the following meanings.
[]
232
Purpose Of This Chapter
Contents of brackets [ ] may be omitted.
Chapter 10 Writing Assembler Control Statements
10.2 #include
Syntax
#include
ÓfilenameÓ
Functional description
The #include directive causes the assembler to read in the source Þle with the speciÞed name at the
location of the directive.
NOTE:
The included file will be assembled and output to the relocatable object file and
list file. In order for the list file to show that lines were included as part of an
include file, a period (.) will be prefixed before the line number.
By specifying the assembler's Li option, you can suppress output of include Þles to the list Þle.
Coding rules
The Þle is speciÞed by the Þle name enclosed in double quotation marks ("). If the Þle is in a different
directory, then the Þle name speciÞcation must include the path name. The assembler will assume an
.ASM extension if the extension is omitted.
NOTE:
By adding the I option when starting the assembler, you can specify a path name
for include files. However, even in this case the option will be ignored if a specific
path name is coded within "filename".
Usage example
This example will show an include Þle speciÞed in a different directory. Here is the contents of the Þle
INCL.H in the directory A:\USER\DEFS.
data
equ
0x12
#include 233
Chapter 10 Writing Assembler Control Statements
Here are the contents of the Þle to be assembled, which is in the current directory.
#include
ÒA:\USER\
DEFS\INCL.H
_CODE
section
CODE, PUBLIC, 2
movw
data, A0
mov
0x34, D0
mov
D0, (A0)
main
end
This example includes Þle INCL.H from the directory A:\USER\DEFS.
The results of assembly are shown below in the list Þle. Line number 1 of the list Þle was written
within an #include directive, so the next line number .1 shows the contents of the included Þle INCL.H.
INCLUDE
.LST
***
Page1
***
mn102L00
Cross
Assembler
Loc
Object
Line
Source
1
#include ÒA: \USER\DEFS
\INCL.HÓ
=00000012
.1
data
equ
0x12
3
_CODE
section
code,public,2
4
main
2
000000
DC1200
5
mov
data, A0
000003
8043
6
mov
0x34, D0
000005
00
7
mov
d0, (A0)
ROM
size is 6
(Hex.
No
error
in this
assembly
No
warning
in this
assembly
***
Symbol
Table
***
00000000
A_CODE
00000012
A data
00000000
T main
8
end
00000006)
INCLUDE
234
#include
.LST
Page2
Chapter 10 Writing Assembler Control Statements
10.3 #deÞne
Syntax
#define
identiÞer [replacement_string] [; comment]
Functional description
The #deÞne directive causes the assembler to replace the identiÞer with the replacement_string on all
further lines.
The #deÞne directive differs from the #equ directive in that a string can be speciÞed. Furthermore,
when used in conjunction with the #undef directive, redeÞnition is possible.
Coding rules
Any string can be coded for the replacement_string. The string can include spaces and tabs. If the
replacement_string is omitted, then the identiÞer will be deÞned as a null character.
Everything after a semicolon (;) is considered a comment. Therefore semicolons cannot be included in
the replacement_string.
The same identiÞer cannot just be redeÞned with another #deÞne directive. When used in conjunction
with the #undef directive, redeÞnition is possible. Refer to section 10.4, "#undef", for details.
If the replacement_string is omitted, then the identiÞer will be deÞned as a null character.
Usage example
Source Þle contents are shown below. The Þrst line replaces data with the character 5. The next line is
an example of changing a mnemonic, so mov data,D0 can be coded as load.
#define
data
5
#define
load
mov
_CODE
section
CODE, PUBLIC, 2
mov
data, D0
data, D0
main
load
end
#define 235
Chapter 10 Writing Assembler Control Statements
The assembled list Þle is shown below. Line number 6 and 7 show that the same machine language
code was generated.
DEF.LST
Page1
***
mn102L00
Cross
Assembler
Loc
Object
Line
Source
***
1
#define
data
5
2
#define
load
mov
data, D0
3
4
_CODE
5
main
section
000000
8005
6
mov
000002
8005
7
load
8
end
ROM
size is 4
(Hex.
00000004)
No
error
in this
assembly
No
warning
in this
assembly
DEF.LST
236
***
Symbol
00000000
A_CODE
00000000
T
#define
main
Table
***
CODE, PUBLIC, 2
data., D0
Page2
Chapter 10 Writing Assembler Control Statements
10.4 #undef
Syntax
identiÞer
#undef
Functional description
The #undef directive deletes an identiÞer deÞned by a #deÞne directive. The effective range of an
identiÞer is from the line following #deÞne until the line before #undef.
To redeÞne the replacement string of an identiÞer, redeÞne it with #deÞne after performing an #undef.
Coding rules
The identiÞer for an #undef directive must be the same string as the identiÞer for the corresponding
#deÞne directive. The string is case sensitive.
Usage example
A source Þle that uses #undef is shown below.
#define
data1
0x11
#define
data2
0x22
_CODE
section
CODE, PUBLIC, 2
mov
data1, D0
mov
data2, D1
#undef
data1
mov
#undef
data1, D0
data2
#define
#define
data1
0x33
data2
0x44
mov
data1, D0
mov
data2, D1
end
#undef 237
Chapter 10 Writing Assembler Control Statements
The assembled list Þle is shown below. Line number 7 deletes the identiÞer data1, so it is undeÞned (+)
in line number 8.
UNDEF
.LST
***
Page1
***
mn102L00
Cross
Assembler
Loc
Object
Line
Source
1
#define
data1
0x11
2
#define
data2
0x22
_CODE
section
CODE, PUBLIC, 2
3
4
000000
8011
5
mov
data1, D0
000002
8522
6
mov
data2, D1
7
000004
#undef
F470000000 +8
9
#undef
10
#define
11
#define
mov
data1, D0
data2
data1
data2
0x33
0x44
000009
8033
12
mov
data1, D0
00000B
8544
13
mov
data2, D1
14
end
ROM
size is 13 (Hex.
0000000D)
No
error
in this
assembly
No
warning
in this
assembly
UNDEF
238
data1
***
Symbol
00000000
A_CODE
00000000
+U data1
#undef
Table
***
.LST
Page2
Chapter 10 Writing Assembler Control Statements
10.5 Conditional Assembly
The Cross-Assembler provides conditional assembly capabilities. The directives explained in this
section are provided for this purpose.
By coding conditional assembly directives in a program, the assembler will select which block to
assemble by judging the speciÞed conditions at the time of assembly.
Many conditional assembly directives are used only within macro deÞnitions.
The actual program structure of conditional assembly is shown below.
block1 to be
expression, identiÞer, parameter, etc.
assembled if codition is true
block 2 to be
assembled if condition is false]
#if
[#else
#endif
NOTE:
The contents of brackets [ ] from #else on can be omitted.
The basic function of conditional assembly is for the assembler to evaluate the condition speciÞed by
#if, and then to select the block to assemble based on the result.
Conditional assembly is used for the following purposes.
¥
Different object code for different versions can be output with a single source program.
¥
Machine language instructions differ depending on the device type.
¥
Conditional assembly can be included in programs being debugged.
Conditional Assembly 239
Chapter 10 Writing Assembler Control Statements
The table below lists the directives used for conditional assembly.
Directive
#ifdef
#ifndef
#if
#ifn
#ifeq
(see note)
#ifneq
(see note)
#ißt
#iße
#ifgt
#ifge
#ifb
(see note)
#ifnb
(see note)
NOTE:
240
Conditional Assembly
Condition for selecting block1
IdentiÞer has been deÞned by #deÞne.
IdentiÞer has not been deÞned by #deÞne.
Expression value is not 0.
Expression value is 0.
Parameters 1 and 2 are the same string.
Condition for selecting block2
IdentiÞer has not been deÞned.
IdentiÞer has been deÞned.
Expression value is 0.
Expression value is not 0.
Parameters 1 and 2 are not the same string.
Parameters 1 and 2 are not the same string. Parameters 1 and 2 are the same string.
Expression value is negative.
Expression value is 0 or negative.
Expression value is positive.
Expression value is 0 or positive.
Parameter is the null character.
Expression value is not negative.
Expression value is not 0 and not negative.
Expression value is not positive.
Expression value is not 0 and not positive.
Parameter is not the null character.
Parameter is not the null character.
Parameter is the null character.
These directives can be used only within macro definitions
Chapter 10 Writing Assembler Control Statements
10.5.1 #ifdef,#ifndef
Syntax
Syntax for #ifdef
#ifdef
identiÞer
Syntax for #ifndef
#ifndef
block1
[#else
identiÞer
block1
[#else
block2]
#endif
block2]
#endif
Functional description
#ifdef
If the identiÞer has been deÞned by a #deÞne directive before the #ifdef statement, then block1 will be
assembled. If it has not been deÞned and an #else directive has been coded, then block2 will be
assembled.
#ifndef
If the identiÞer has not been deÞned by a #deÞne directive before the #ifndef statement, then block1
will be assembled. If it has been deÞned and an #else directive has been coded, then block2 will be
assembled.
Coding rules
These directives can be used within macro deÞnitions and wherever machine language instructions can
be coded.
If an identiÞer is deÞned after #ifdef or #ifndef, then it will be considered undeÞned.
IdentiÞers can be speciÞed by the D option when the assembler is started, even if they are not deÞned
with #deÞne directives.
Conditional Assembly
241
Chapter 10 Writing Assembler Control Statements
Usage example
A source Þle that uses #ifdef and #ifndef is shown below.
#define
VERSION
_CODE
section
#ifdef
VERSION
CODE, PUBLIC, 2
mov
0x11, D0
mov
0x11, D0
mov
0x22, D0
#else
#else
#endif
#ifndef
VERSION
mov
0x33, D0
mov
0x44, D0
#else
#endif
end
The assembled list Þle is shown below.
IFDEF.LST
***
mn102L00
Cross
Assembler
Loc
Object
Line
Source
1
#define
VERSION
3
_CODE
section
4
#ifdef
Page 1
***
2
000000
8011
5
6
8
#endif
9
#ifndef
XX
000002
8044
is 4
No error
in
No warning
in
(Hex.
this
this
mov
0x22, D0
VERSION
mov
0x33, D0
mov
0x44, D0
#endif
14
ROM size
0x11, D0
#else
12
13
VERSION
mov
#else
x
11
CODE, PUBLIC, 2
end
00000004)
assembly
assembly
The identifier VERSION is defined in line number 1. The replacement string is a null character. Since
VERSION has been defined, the #ifdef starting from line number 4 will assemble block 1 (line number
5 here), and will not assemble block 2 (shown as line number X).
The #ifndef directive inverts the condition, so block 2 (line number 12) will be assembled.
242
Conditional Assembly
Chapter 10 Writing Assembler Control Statements
10.5.2 #if,#ifn
Syntax
Syntax for #if
#if
expression
Syntax for #ifn
#ifn
expression
block1
[#else
block1
[#else
block2]
#endif
block2]
#endif
Functional description
#if
If the value of expression is not 0, then block1 will be assembled. If it is 0 and an #else directive has
been coded, then block2 will be assembled.
#ifn
If the value of expression is 0, then block1 will be assembled. If it is not 0 and an #else directive has
been coded, then block2 will be assembled.
Coding rules
These directives can be used within macro deÞnitions and wherever machine language instructions can
be coded.
Conditional Assembly 243
Chapter 10 Writing Assembler Control Statements
Usage example
A source Þle that uses #if and #ifn is shown below.
DEVICE
equ
1
_CODE
section
CODE, PUBLIC, 2
#if
DEVICE-1
mov
0x11, D0
mov
0x22, D0
#else
#endif
#ifn
DEVICE-1
mov
0x33, D0
mov
0x44, D0
#else
#endif
end
The assembled list Þle is shown below. The program Þrst sets DEVICE to 1. Therefore the expression
DEVICE-1 will be 0, so the #if directive causes line number 7 to be assembled and the #ifn directive
causes line number 10 to be assembled.
IF1.LST
Page 1
***
mn102L00
Cross
Assembler
***
Loc
Object
Line
Source
=00000001
1
DEVICE
equ
1
3
_CODE
section
CODE, PUBLIC, 2
4
#if
DEVICE-1
2
X
6
000000
000002
8022
8033
7
8
#endif
9
#ifn
10
11
is 4
No error
in
No warning
in
0x22, D0
DEVICE-1
mov
0x33, D0
mov
0x44, D0
end
(Hex.
00000004)
this
assembly
this
mov
#endif
14
ROM size
0x11, D0
#else
XX
13
mov
#else
assembly
IF1.LST
244
***
Symbol
00000001
A
DEVICE
00000000
T
_CODE
Conditional Assembly
Table
***
Page2
Chapter 10 Writing Assembler Control Statements
Next is an assembled list file where the program sets DEVICE to 0. This conversely causes line numbers
5 and 12 to be assembled.
IF1.LST
Page 1
***
mn102L00
Cross
Assembler
***
Loc
Object
Line
Source
=00000000
1
DEVICE
equ
0
3
_CODE
section
CODE, PUBLIC, 2
4
#if
2
000000
8011
5
6
8
#endif
9
#ifn
XX
00002
8044
is 4
(Hex.
this
0x22, D0
DEVICE-1
mov
0x33, D0
mov
0x44, D0
#endif
14
ROM size
mov
#else
12
13
0x11, D0
#else
X
11
DEVICE-1
mov
end
00000004)
No error
in
No warning
in
this
assembly
assembly
***
Symbol
Table
***
00000000
A DEVICE
00000000
A _CODE
IF1.LST
Page2
Conditional Assembly 245
Chapter 10 Writing Assembler Control Statements
10.5.3 #ifeq,#ifneq
Syntax
Syntax for #ifeq
#ifeq
parameter1, parameter2
Syntax for #ifneq
#ifneq
parameter1, parameter2
block1
[#else
block1
[#else
block2]
#endif
block2]
#endif
Functional description
#ifeq
If parameter1 and parameter2 are the same string, then block1 will be assembled. If they are different
and an #else directive has been coded, then block2 will be assembled.
#ifneq
If parameter1 and parameter2 are different strings, then block1 will be assembled. If they are the same
and an #else directive has been coded, then block2 will be assembled.
Coding rules
These directives can only be used within macro deÞnitions.
Either or both of parameter1 and parameter2 may be dummy parameters set up during macro
deÞnition.
246
Conditional Assembly
Chapter 10 Writing Assembler Control Statements
Usage example
A source Þle that uses #ifeq and #ifneq is shown below. The macro named compare uses two dummy
parameters(data1,data2). Within the macro it compares the strings of those dummy parameters. If they
match, then an instruction that sets the A register to 1 will be assembled. If they do not match, then an
instruction that sets the A register to 0 will be assembled. The macro is called by specifying strings to
be passed to the dummy parameters.
compare
macro
#ifeq
data1, data2
data1, data2
mov
1, D0
mov
0, D0
#else
#endif
endm
_CODE
section
CODE, PUBLIC, 2
compare
abcdef, abcdef
compare
abcdef, acbdef
main
end
Conditional Assembly 247
Chapter 10 Writing Assembler Control Statements
The assembled list Þle is shown below. Line number 11 assembles the statements for a match, and line
number 12 assembles the statements for a mismatch.
IFEQ.LST
***
mn102L00
Cross
Assembler
Loc
Object
Line
Source
1
compare
macro
2
#ifeq
data1,data2
3
4
***
data1, data2
mov
1, D0
mov
0, D0
#else
5
6
Page 1
#endif
7
endm
8
9
_CODE
10
main
M11
11+
000000
8001
#ifeq
11+
11+
#ifeq
XX+
12+
000002
8000
is 4
(Hex.
this
mov
1, D0
mov
0, D0
Compare
abcdef, acbdef
abcdef, acbdef
mov
1, D0
mov
0, D0
#endif
13
ROM size
abcdef, abcdef
#else
12+
12+
compare
abcdef, abcdef
#endif
M12
12+
CODE, PUBLIC, 2
#else
XX+
11+
section
end
00000004)
No error
in
No warning
in
this
assembly
assembly
***
Symbol
Table
***
00000000
A _CODE
00000000
T main
IFEQ.LST
Page2
Next is an example where parameter1 is a dummy parameter, but parameter2 is a string specified within
the macro. The source file is shown below. The macro defines only one dummy parameter (data).
Therefore the assembler will evaluate the #ifeq directive assuming that parameter2 is the string
"abcdef."
248
Conditional Assembly
Chapter 10 Writing Assembler Control Statements
compare
macro
#ifeq
data1, abcdef
data
mov
1, D0
mov
0, D0
#else
#endif
endm
_CODE
section
CODE, PUBLIC, 2
compare
abcdef
compare
acbdef
main
end
Conditional Assembly 249
Chapter 10 Writing Assembler Control Statements
The assembled list Þle is shown below.
IFEQ2.LST
***
mn102L00
Cross
Assembler
Loc
Object
Line
Source
1
compare
macro
2
#ifeq
data1,abcdef
3
4
***
data
mov
1, D0
mov
0, D0
#else
5
6
Page 1
#endif
7
endm
8
9
_CODE
10
main
M11
11+
#ifeq
XX+
11+
000000
8000
#ifeq
XX+
12+
000002
8000
is 4
(Hex.
this
mov
1, D0
mov
0, D0
Compare
acbdef
data1, abcdef
mov
1, D0
mov
0, D0
#endif
13
ROM size
abcdef
#else
12+
12+
compare
data1,abcdef
#endif
M12
12+
CODE, PUBLIC, 2
#else
11+
11+
section
end
00000004)
No error
in
No warning
in
this
assembly
assembly
***
Symbol
Table
***
00000000
A _CODE
00000000
T main
IFEQ2.LST
250
Conditional Assembly
Page2
Chapter 10 Writing Assembler Control Statements
10.5.4 #ißt,#iße
Syntax
Syntax for #iflt
Syntax for #ifle
expression
#iflt
#ifle
block1
expression
block1
[#else
[#else
block2]
block2]
#endif
#endif
Functional description
#iflt
If the value of expression is negative, then block1 will be assembled. If it is not negative and an #else
directive has been coded, then block2 will be assembled.
#ifle
If the value of expression is 0 or negative, then block1 will be assembled. If it is positive and an #else
directive has been coded, then block2 will be assembled.
Usage example
The Þrst example will be of #ißt. A source Þle is shown below. The "size-16" expression of the #ißt is
not negative, so block 2 is assembled
MN10200
equ
16
MAX
equ
0xff
romsize
macro
size
#iflt
size-16
movw
(MAX-0x20), DW0
movw
MAX, DW0
#else
#endif
endm
_CODE
section
CODE, PUBLIC, 2
main
romsize
MN10200
end
Conditional Assembly 251
Chapter 10 Writing Assembler Control Statements
The assembled list Þle is shown below.
IFLT.LST
Page 1
***
mn102L00
Cross
Assembler
***
Loc
Object
Line
Source
=00000010
1
MN102L00
equ
16
=000000FF
2
MAX
equ
0xff
4
romsize
macro
size
5
#iflt
size-16
3
6
7
8
9
mov
(MAX-0x20), D0
mov
MAX, D0
#else
#endif
10
endm
11
12
_CODE
13
main
M14
14+
#iflt
XX+
14+
000000
F8FF00
size is 3
romsize
MN10200
MN10200-16
mov
(MAX-0x20), D0
mov
MAX, D0
#endif
15
ROM
CODE, PUBLIC, 2
#else
14+
14+
section
end
(Hex.
00000003)
this
assembly
No error
in
No warning
in
this
assembly
***
Symbol
Table
***
000000FF
A MAX
00000010
A MN10200
00000000
T _CODE
00000000
T main
IFLT.LST
Page2
Next the program's #iflt is changed to #ifle. The result of the #ifle directive's expression will be 0, so
block 1 will be assembled.
252
Conditional Assembly
Chapter 10 Writing Assembler Control Statements
MN10200
equ
16
MAX
equ
0xff
romsize
macro
size
#ifle
size-16
mov
(MAX-0x20), D0
mov
MAX, D0
#else
#endif
endm
_CODE
main
section
romsize
CODE, PUBLIC, 2
MN10200
end
Conditional Assembly 253
Chapter 10 Writing Assembler Control Statements
The assembled list Þle is shown below. You can see that block 1 was assembled.
IFLE.LST
Page 1
***
mn102L00
Cross
Assembler
Loc
Object
Line
Source
***
=00000010
1
MN10200
equ
16
=000000FF
2
MAX
equ
0xff
4
romsize
macro
size
5
#ifle
size-16
3
6
7
(MAX-0x20), D0
mov
MAX, D0
#else
8
9
mov
#endif
10
endm
11
12
_CODE
13
main
M14
14+
000000
C8DF00
#ifle
14+
14+
size is 3
No error
in
No warning
in
MN10200
MN10200-16
mov
(MAX-0x20), D0
mov
MAX, D0
end
(Hex.
00000003)
this
assembly
this
romsize
#endif
15
ROM
CODE, PUBLIC, 2
#else
XX+
14+
section
assembly
IFLE.LST
254
***
Symbol
000000FF
A MAX
00000010
A MN10200
00000000
T _CODE
00000000
T main
Conditional Assembly
Table
***
Page2
Chapter 10 Writing Assembler Control Statements
10.5.5 #ifgt,#ifge
Syntax
Syntax for #ifgt
#ifgt
Syntax for #ifge
expression
#ifge
block1
expression
block1
[#else
[#else
block2]
block2]
#endif
#endif
Coding rules
#ifgt
If the value of expression is positive, then block1 will be assembled. If it is not positive and an #else
directive has been coded, then block2 will be assembled.
#ifge
If the value of expression is 0 or positive, then block1 will be assembled. If it is negative and an #else
directive has been coded, then block2 will be assembled.
Note that 0 is not included in positive numbers.
Usage example
A source Þle that uses #ifgt is shown below. The value of the dummy parameter passed to the macro
type is 0, so block 2 will be assembled.
device
equ
0
type
macro
id
#ifgt
id
mov
1, D0
mov
2, D0
#else
#endif
endm
_CODE
section
CODE, PUBLIC, 2
type
device
main
end
Conditional Assembly
255
Chapter 10 Writing Assembler Control Statements
The assembled list Þle is shown below. You can see that the expression's value is 0, so block 2 was
assembled.
IFGT.LST
Page 1
***
mn102L00
Cross
Assembler
Loc
Object
Line
Source
***
=00000000
1
device
equ
0
3
type
macro
id
4
#ifgt
id
2
5
6
7
8
mov
1, D0
mov
2, D0
#else
#endif
9
endm
10
11
_CODE
12
main
M13
13+
000000
8001
#ifgt
13+
13+
14
size is 2
CODE, PUBLIC, 2
type
device
device
mov
1, D0
mov
2, D0
#else
XX+
ROM
section
end
(Hex.
00000002)
this
assembly
No error
in
No warning
in
this
assembly
***
Symbol
Table
***
00000000
A _CODE
00000000
A device
00000000
T main
IFGT.LST
Page2
Next the program's #ifgt is changed to #ifge. The dummy parameter's value is 0, so this time block 1
will be assembled.
256
Conditional Assembly
Chapter 10 Writing Assembler Control Statements
device
equ
0
type
macro
id
#ifge
id
mov
1, D0
mov
2, D0
#else
#endif
endm
_CODE
section
CODE, PUBLIC, 2
type
device
main
end
Conditional Assembly
257
Chapter 10 Writing Assembler Control Statements
The assembled list Þle is shown below. You can see that block 1 was assembled.
IFGE.LST
Page 1
***
mn102L00
Cross
Assembler
***
Loc
Object
Line
Source
=00000000
1
device
equ
0
3
type
macro
id
4
#ife
id
2
5
6
1, D0
mov
2, D0
#else
7
8
mov
#endif
9
endm
10
11
_CODE
12
main
M13
13+
000000
8001
#ifge
13+
13+
size is 2
No error
in
No warning
in
device
device
mov
1, D0
mov
2, D0
end
(Hex.
00000002)
this
assembly
this
type
#endif
14
ROM
CODE, PUBLIC,2
#else
XX+
13+
section
assembly
IFGE.LST
258
***
Symbol
00000000
T _CODE
00000000
A device
00000000
T main
Conditional Assembly
Table
***
Page2
Chapter 10 Writing Assembler Control Statements
10.5.6 #ifb,#ifnb
Syntax
Syntax for #ifb
#ifb
dummy_parameter
Syntax for #ifnb
#ifnb
block1
[#else
dummy_parameter
block1
[#else
block2]
#endif
block2]
#endif
Functional description
#ifb
If the dummy_parameter is a null character, then block1 will be assembled. If it is not a null character
and an #else directive has been coded, then block2 will be assembled.
#ifnb
If the value of expression is not a null character, then block1 will be assembled. If it is a null character
and an #else directive has been coded, then block2 will be assembled.
Coding rules
These directives can only be used within macro deÞnitions.
The parameter must be a dummy parameter.
Conditional Assembly
259
Chapter 10 Writing Assembler Control Statements
Usage example
A source Þle that uses #ifb is shown below. If the dummy parameter para to the macro debug is a null
character, then the program will execute next_cycle. If it is not a null character, then the program will
execute test and then execute next_cycle. In this example, the identiÞer MODE is passed to the macro
debug. When a replacement string has been speciÞed, the call is without a null character.
debug
macro
#ifb
para
para
jsr
next_cycle
jsr
test
jsr
next_cycle
#else
#endif
endm
_CODE
section
CODE, PUBLIC, 2
#define
MODE
debug_on
debug
MODE
main
#undef
MODE
#define
MODE
debug
end
260
Conditional Assembly
MODE
Chapter 10 Writing Assembler Control Statements
The assembled list Þle is shown below. Where the characters debug_on have been speciÞed, block 2 is
assembled. Where the null character has been speciÞed, block 1 is assembled
.
IFB.LST
***
mn102L00
Cross
Assembler
Loc
Object
Line
Source
1
debug
macro
2
#ifb
para
3
4
para
isr
next_cycle
jsr
test
jsr
next_cycle
#else
5
6
7
Page 1
***
#endif
8
endm
9
10
_CODE
section
CODE, PUBLIC, 2
11
#define
MODE
debug_on
12
main
debug
MODE
M13
13+
#ifb
XX+
13+
000000
F4E100000
+13+
000005
F4E100000
+13+
size is 15
No warning
in
jsr
next_cycle
#undef
MODE
15
#define
MODE
debug
MODE
jsr
next_cycle
XX+
jsr
test
XX+
jsr
next_cycle
#ifb
+16+
#else
#endif
17
in
test
14
16+
No error
jsr
#endif
16+
ROM
next_cycle
13+
16+
F4E1000000
jsr
#else
M16
00000A
debug_on
end
(Hex.
0000000F)
this
assembly
this
assembly
IFB.LST
***
Symbol
00000000
00000000
Table
Page2
***
A _CODE
T main
00000000
+U next_cycle
00000000
+U test
Next the program's #ifb is changed to #ifnb. Now the test routine for debugging will be assembled if a
null character has not been specified.
Conditional Assembly 261
Chapter 10 Writing Assembler Control Statements
debug
macro
#ifnb
para
para
jsr
next_cycle
jsr
test
jsr
next_cycle
#else
#endif
endm
_CODE
section
CODE, PUBLIC, 2
#define
MODE
debug_on
debug
MODE
main
#undef
MODE
#define
MODE
debug
end
262
Conditional Assembly
MODE
Chapter 10 Writing Assembler Control Statements
The assembled list Þle is shown below.
IFNB.LST
***
mn102L00
Cross
Assembler
Loc
Object
Line
Source
1
debug
macro
2
#ifnb
para
3
Page 1
***
para
isr
next_cycle
5
jsr
test
6
jsr
next_cycle
4
7
#else
#endif
8
endm
9
10
_CODE
section
CODE, PUBLIC, 2
11
#define
MODE
debug_on
12
main
debug
MODE
M13
13+
000000
F4E1000000
#ifnb
+13+
jsr
next_cycle
XX+
jsr
test
XX+
jsr
next_cycle
13+
#else
13+
#endif
14
#undef
MODE
15
#define
MODE
M16
16+
16+
000005
F4E1000000
+16+
00000A
F4E1000000
+16+
16+
MODE
jsr
next_cycle
jsr
test
jsr
next_cycle
#else
#endif
17
size is 15
debug
#ifnb
XX+
ROM
debug_on
end
(Hex.
0000000B)
this
assembly
No error
in
No warning
in
this
assembly
***
Symbol
Table
***
IFNB.LST
00000000
A _CODE
00000000
T main
00000000
+U next_cycle
00000000
+U test
Page2
Conditional Assembly
263
Chapter 10 Writing Assembler Control Statements
264
Chapter 11
Writing Macro Control Statements
11
Chapter 11 Writing Macro Control Statements
11.1 Purpose Of This Chapter
Macros consist of two parts: macro deÞnitions and macro calls. A macro that has been deÞned can be
coded as a macro call in any source statement after that.
When a macro without parameters is called, it becomes a simple text substitution. When a macro with
parameters is called, part of the text to be substituted will be modiÞed by the strings speciÞed as the
parameters.
This chapter explains how deÞne and call macros. It also describes the directives used for macros.
Common coding rules
The characters that can be used for macro names, dummy parameters, parameters, and identiÞers are
upper and lower case letters, digits, and underscores (_). The Þrst character must not be a digit.
Symbols used in expressions must have been previously deÞned.
The following directives cannot be coded within macro blocks.
#include directive
macro definitions
Refer to section 11.2, "Macro DeÞnitions", regarding macro deÞnitions and blocks.
The rept and irp directives and macro calls can be coded within macro blocks. Up to 20 nesting levels
are allowed.
Document conventions
Symbols used in this chapter have the following meanings.
[]
()
266
Purpose of This Chapter
Contents of brackets [ ] may be omitted.
Contents of parentheses ( ) may be repeated.
Chapter 11 Writing Macro Control Statements
11.2 Macro DeÞnitions (macro, endm)
Syntax
macro_name
macro
[dummy_parameter (, dummy_parameter)...]
macro_body
endm
NOTE:
10 dummy parameters can be specified.
Functional description
A macro assigns a name to a single process that is used repeatedly in a program, simplifying the coding
of source statements. Macros must be deÞned before they are called.
The macro body is coded with multiple machine language instructions, directives, macro control
instructions, and conditional assembly control instructions. A macro deÞnition is the assignment of a
name to the single process in the macro body.
A macro is called by coding its name in the operation Þeld of a source statement. The assembler then
inserts the text of the macro body at that position. This is called macro expansion.
Macro deÞnitions can have up to 10 dummy parameters. Dummy parameters are used within the
macro body to allow the caller to modify some of the expanded text.
Reference:
Subroutines have similar functions, but macros and subroutines differ on the following
points.
1) Macro expansion actually writes the macro body's machine language code in the
object file each time the macro is called at that call's position. For subroutines the
subroutine body exists at one location in the program.
2) By using parameters, macro expansion allows the programmer to change the
expanded machine language instructions each time the macro is called. For
subroutines the process cannot be changed.
Macro Definition (macro, endm) 267
Chapter 11 Writing Macro Control Statements
Coding rules
The following instructions cannot be used within macro deÞnitions.
¥
include directive
¥
macro directive Ñ within a macro deÞnition another different macro cannot be deÞned
¥
purge directive Ñ within a macro deÞnition macros cannot be purged
The symbols used in the label Þelds within a macro deÞnition must be declared with the local directive
or passed from the outside using dummy parameters. Refer to section 11.5, "Local Symbol Declaration
(local)", for details.
A macro can be redeÞned. The new deÞnition will be effective from the following line on.
The purge directive can purge a macro deÞnition. The macro will be recognized as an instruction or
symbol from the following line on.
The same mnemonic as a machine language instruction can be used as a macro name. Which receives
priority at assembly time can be speciÞed using front and back directives.
When the same mnemonic as a machine language instruction is deÞned as a macro, the default is as
though the back directive had been speciÞed, which causes assembly as a machine language
instruction. Lines after a front directive will give the macro deÞnition priority. Refer to section 9.11,
"front / back", for details.
The assembler does not perform syntax checks when a macro is deÞned. If there are errors or
warnings, then they will be output when the macro is expanded.
Usage example
An example macro deÞnition is shown below.
xchg
macro
mov
D2, D0
mov
D1, D2
mov
D0, D1
endm
268
Macro Definition (macro, endm)
Chapter 11 Writing Macro Control Statements
11.3 Macro Calls And Expansion
Syntax
macro_name
NOTE:
[parameter (, parameter)... ]
10 parameters can be specified.
Functional description
A macro is called by coding its name in the operation Þeld of a source statement. The assembler then
inserts the text of the macro body at that position.
When parameters are speciÞed, their values are passed in the same order as the dummy parameter when
the macro was deÞned.
mac1
macro
para1, para2, para3
;macro deÞnition
address, data, count
;macro call
.
.
endm
main
mac1
In this example para1, para2, and para3 are dummy parameters. The parameters of the macro call are
passed to the dummy parameters as follows.
para1 = address
para2 = data
para3 = count
Macro Calls And Expansion
269
Chapter 11 Writing Macro Control Statements
Coding rules
Any string can be speciÞed as a parameter. To specify a string that includes commas or spaces, use the
macro operator <>. Refer to section 9.4, "Macro Operators", for details.
If there are more parameters than there were dummy parameters in the macro deÞnition, then an error
will occur.
If there are fewer parameters than there were dummy parameters in the macro deÞnition, then the
assembler will process the remaining parameters as though null characters were speciÞed.
In the list Þle, the line numbers of source statements with macro calls will be preÞxed by the letter 'M'.
The source statements resulting from macro expansion will have a '+' appended to the line number.
Usage example
A source Þle is shown below. The macro add_adr has one dummy parameter. The dummy parameter is
used as the operand of an add machine language instruction within the macro body. Take note whether
a macro name is the same as a machine language instruction.
The macro is called with var1 and var2 as parameters.
var1
equ
0x10
var2
equ
var1+2
add_adr
macro
adr
add
adr, A0
endm
_CODE
section
CODE, PUBLIC, 2
add_adr
var1
add_adr
var2
main
end
Reference:
By adding the Lm option when the assembler is started, you can suppress the output
of mnemonics of macros expanded by the assembler.
270
Macro Calls And Expansion
Chapter 11 Writing Macro Control Statements
The assembled list Þle is shown below.
***
Loc
mn102L00
Object
=00000010
=00000012
000000
D010
000002
D012
ROM size
No
No
is 4(Hex.
error in
warning in
00000000
00000000
00000010
00000012
A
T
A
A
Cross
Line
1
2
3
4
5
6
7
8
9
M10
10+
M11
11+
12
this
this
INC_MAC
Assembler
Source
var1
var2
.LST
***
Page1
equ
equ
0x10
var1+2
add_adr
macro
add
adr
adr,A0
endm
_CODE
main
00000004)
assembly
assembly
INC_MAC
section
CODE, PUBLIC, 2
add_adr
add
add_adr
add
end
var1
var1, A0
var2
var2, A0
.LST
Page2
_CODE
main
var1
var2
Macro Calls And Expansion 271
Chapter 11 Writing Macro Control Statements
11.4 Macro Operators
Macro operators are used in macro bodies to operate on parameters of macro calls. Macro operators
are listed below.
Operator
&
Description
Concatenates strings.
Macro deÞnition dummy parameters
p1&p2&p3
®
p1&p2&p3
®
Escape characters for including normally
(<, >, &, \) in parameters of macro calls.
Macro deÞnition dummu parameters
p1&p2&\>\>&p3\&0x0f
®
Passes the enclosed string as a single
Macro deÞnition dummy parameters
p1
®
\
<>
Macro call
abc, def,ghi ®
data, 1, 3
®
unusable
Macro expansion
abcdefghi
data13
characters
Mcro calll
var. 3. 2 ®
parameter of a
Macro call
<ÒabcÓ, 1> ®
Macro expansion
var3>>2&0x0f
macro call.
Macro expansion
ÒabcÓ, 1
Usage example
The following example uses the operators \, <>, and &. The & characters in the body of macro mac1
are used with two different meanings. The & before the dummy parameters is a macro operator. The &
before the hexadecimal 0x0f indicates a logical AND.
mac1
mac2
_CODE
main
macro
mov
endm
macro
p1
endm
section
mac1
mac2
end
272
Macro Oprators
p1, p2, p3
p1&p2\>\>&p3\&0x0f, D0
p1, p2
p2
CODE, PUBLIC, 2
1,2,3
<add>, <1, D0>
Chapter 11 Writing Macro Control Statements
The assembled list Þle is shown below.
***
Loc
mn102L00
Object
000000
8001
000002
D401
ROM size
No
No
is 4 (Hex.
error in
warning in
00000000
00000000
A _CODE
T main
NOTE:
Cross
Line
1
2
3
4
5
6
7
8
9
10
M11
11+
M12
12+
13
this
this
MAC
Assembler
Source
mac1
.LST
***
Page1
macro
mov
endm
p1, p2, p3
p1&p2\>\>&p3\&0x0f, D0
mac2
p1
endm
_CODE
main
00000004)
assembly
assembly
MAC
macro p1, p2
p2
section
CODE, PUBLIC, 0
mac1
mov
mac2
add
end
1,2,3
12>>3&0x0f, D0
<add>, <1,D0>
1, D0
.LST
Page2
< > can be nested at a macro call.
Macro Operators
273
Chapter 11 Writing Macro Control Statements
Example:
mac2
NOTE:
1, <<10, 20>, <30, 40>>
Be sure to use < > in pairs for nesting. The parameter cannot be passed to
macro, if < > are not used in pairs.
Be sure to know the followings when you describe shift operators (<<, >>) in the
parameter enclosed with < >.
Left shift (<<) in the parameter enclosed with < > may be assumed as < of macro
operator, so that the pairs of < > cannot be recognized correctly. In this case,
macro expansion cannot be performed correctly. (Example(1)).
Right shift (>>) in the < > does not prevent the correct expansion because > of
macro operator is processed prior to shift operators (Example(2)).
If you describe shift operators in the < >, append backslash(\) just before < or > to
clarify it as not macro operator (Example(3), (4)).
Example:
mac3 <1<<2>, 3
mac3 <1>>2>, 3
mac3 <1\<\<2>, 3
mac3 <1\>\>2>, 3
274
Macro Operators
;(1)
;(2)
;(3)
;(4)
leads wrong expansion result
processed correctly
processed correctly
processed correctly
Chapter 11 Writing Macro Control Statements
11.5 Local Symbol Declaration (local)
Syntax
macro_name
symbol
macro
parameter
local
symbol (, symbol)...
.
.
.
endm
NOTE:
30 symbols can be specified.
Functional description
The local directive declares local symbols used in a macro body. When local symbols are expanded,
the are expanded in the form ??XXXXX, where XXXXX is in the range starting 00001 to 99999.
Coding rules
Symbols speciÞed with the local directive should not be used outside the macro deÞnition.
The local directive can be used only within macro deÞnitions.
Local symbols should be used after they have been declared by the local directive.
If the local symbol ??XXXXX used by the local directive is not undeÞned, then an error will occur.
Local Symbol Declaration (local)
275
Chapter 11 Writing Macro Control Statements
Usage example
An example using the local directive is shown below.
loc
lab1
lab2
macro
p1
local
lab1, lab2, lab3
mov
p1, D0
mov
0, D1
cmp
D1, D0
bcc
lab2
mov
(A0), D2
add
1, D1
bra
lab2
lab3
nop
_CODE
section
CODE, PUBLIC, 2
loc
3
loc
2
endm
main
end
The assembled list file is shown next. You can see that each time the local symbol is expanded it is
changed to ??00001, ??00002, ...
***
Loc
000000
000002
000004
276
mn102L00
Object
A030
A500
324
Local Symbol Declaration (local)
Cross
Line
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
M18
18+
18+
18+
LOCAL
Assembler
Source
loc
local
mov
mov
lab1
bcc
lab2
add
mov
addw
add
bra
lab3
endm
.LST
***
Page1
macro
lab1, lab2
p1, D0
0, D1
cmp
lab2
mov
1, D2
D2, (A0)
2, A0
1, D1
lab2
nop
p1
lab3
_CODE
main
section
CODE, PUBLIC, 0
loc
mov
mov
cmp
3
3, D0
3, D1
D1, D0
??00001
D1, D0
(A0), D2
Chapter 11 Writing Macro Control Statements
000005_
000008
000009
00000A_
00000B_
00000D
00000E_
000011
9C000
4A
821
5A
EC2
811
99000
00
000012
000014
000016
000017_
00001A
00001B
000001C_
000001D_
000001F
000020_
000023
A020
A500
324
9C000
4A
821
5A
EC2
811
99000
00
ROM size
No
No
is 36 (Hex.
error in
warning in
***
00000004
00000008
00000011
00000016
0000001A
00000023
00000000
00000000
Symbol
T ??00001
T ??00002
T ??00003
T ??00004
T ??00005
T ??00006
T _CODE
T main
+18
18+
18+
18+
18+
18+
+18+
18+
M19
19+
19+
19+
+19+
19+
19+
19+
19+
19+
+19+
19+
20
this
this
??00002
??00003
loc
??00004
??00005
??00006
bcc
mov
add
mov
addw
add
bra
nop
2
mov
mov
cmp
bcc
mov
add
mov
addw
add
bra
nop
end
00000024)
assembly
assembly
LOCAL .LST
Table
***
??00002
(A0), D2
1, D2
D2, (A0)
2, A0
1, D1
??00002
2, D0
0, D1
D1, D0
??00005
(A0), D2
1, D2
D2, (A0)
2, A0
1, D1
??00005
Page2
Local Symbol Declaration (local)
277
Chapter 11 Writing Macro Control Statements
11.6 Forced Termination Of Macro Expansion
(exitm)
Syntax
macro_name
macro
#ifndef
identiÞer
parameter
exitm
#endif
.
.
.
endm
Functional description
The exitm directive forcibly terminates macro expansion at the point it appears. Used in conjunction
with an #ifndef directive, it can end macro expansion if an identiÞer is undeÞned. If the identiÞer has
been deÞned, then expansion beyond #endif will be performed. (The conditions are reversed when
#ifdef is used.)
Coding rules
In addition to #ifdefÐ#endif, all directives listed in section 8.5, "Conditional Assembly", can be used.
The exitm directive can be used at any location. The assembler will terminate macro expansion after it
appears.
The exitm directive can only be used within macro deÞnitions.
Usage example
Usage example with #ifb directive
A source Þle is shown below. The identiÞer TEST is used for the condition. In main the Þrst macro
call is made with TEST undeÞned. This causes exitm to be executed, so jsr debug will not be
expanded.
TEST is deÞned before the second macro call, so here the statements after #endif will be assembled.
278
Local Symbol Declaration (local)
Chapter 11 Writing Macro Control Statements
extm
macro
#ifndef
TEST
mov
1, D0
exitm
#endif
jsr
debug
endm
_CODE
section
CODE, PUBLIC, 2
main
extm
#define
TEST
extm
end
Forced Termination Of Macro Expansion (exitm)
279
Chapter 11 Writing Macro Control Statements
The list Þle is shown below. The second macro call has been expanded after #endif.
***
Loc
000000
mn102L00
Object
8001
Cross
Line
1
EXITM .LST
Assembler
***
Source
extm
macro
2
3
#ifndef
4
5
6
7
8
9
10
M11
11+
11+
11+
11+
11+
12
000002
280
8001
000004
F4E1000000
ROM size
No
No
is 9 (Hex.
error in
warning in
***
00000000
00000000
00000000
Symbol
A _CODE
+U debug
T main
M13
13+
13+
XX+
13+
+13+
14
this
this
Forced Termination Of Macro Expansion (exitm)
mov
Page1
1, D0
TEST
exitm
#endif
_CODE
main
#ifndef
jsr
endm
debug
section
CODE, PUBLIC, 2
extm
mov
1, D0
TEST
exitm
#endif
jsr
#define
TEST
extm
mov
#ifndef
debug
1, D0
TEST
exitm
#endif
jsr
end
00000009)
assembly
assembly
EXITM .LST
Table
***
debug
Page2
Chapter 11 Writing Macro Control Statements
Usage example with #ifeq directive
A source Þle is shown below. The macro call parameter is passed to the expression used as the #ifeq
condition. If #ifeq has two different parameters, then expansion will terminate. In this example,
p1=off for the Þrst macro expansion, so the statements after #endif will be expanded.
In the second macro expansion p1=on, so statements after #endif will not be expanded.
extm
macro
#ifeq
p1, 0ff
p1
exitm
#else
jsr
debug
endm
_CODE
section
CODE, PUBLIC, 2
extm
off
extm
on
main
end
Forced Termination Of Macro Expansion (exitm)
281
Chapter 11 Writing Macro Control Statements
The assembled list Þle is shown below.
***
Loc
mn102L00
Object
Cross
Line
1
2
3
4
5
6
7
8
9
10
M11
11+
000000
282
F4E1000000
ROM size
No
No
is 5 (Hex.
error in
warning in
***
00000000
00000000
00000000
Symbol
A _CODE
+U debug
T main
11+
11+
11+
11+
M12
12+
XX+
12+
+12+
12+
13
this
this
Forced Termination Of Macro Expansion (exitm)
EXITM1 .LST
Assembler
***
Source
extm
macro
#ifeq
Page1
p1
p1, off
exitm
#else
jsr
debug
#endif
endm
_CODE
main
#ifeq
section
CODE, PUBLIC, 2
extm
off
off, off
exitm
#else
jsr
debug
extm
on, off
exitm
on
jsr
debug
#endif
#ifeq
#else
#endif
end
00000005)
assembly
assembly
EXITM1 .LST
Table
***
Page2
Chapter 11 Writing Macro Control Statements
11.7 Purging Macro DeÞnitions (purge)
Syntax
macro_name (, macro_name)...
purge
Functional description
The purge directive purges the deÞnitions of the speciÞed macro names.
Coding rules
The macro names speciÞed with the purge directive are valid for previously deÞned macro names.
After the purge directive, purged macros will not be expanded even if they are called. They will be
processed as instructions or symbols.
The purge directive cannot be used within macro deÞnitions.
When multiple macro names are speciÞed, they are delimited by commas (,).
Usage example
This example deÞnes the macro name rts, which is the same as a machine language instruction. The
Þrst rts will be taken as a macro call and expanded. The rts after purge has been executed will not be
recognized as a macro name, but will be taken as a return instruction.
front
rts
macro
nop
endm
_CODE
section
CODE, PUBLIC, 2
main
rts
purge
rts
rts
end
Forced Termination Of Macro Expansion (exitm)
283
Chapter 11 Writing Macro Control Statements
The assembled list Þle is shown below.
***
Loc
000000
F6
000001
FE
ROM size
No
No
is 2 (Hex.
error in
warning in
***
00000000
00000000
284
mn102L00
Object
Symbol
A _CODE
T main
Purging Macro Definitions (purge)
Cross
Line
1
2
3
4
5
6
7
M8
8+
9
10
11
this
this
PURGE .LST
Assembler
***
Source
Page1
front
rts
macro
nop
endm
_CODE
main
section
CODE, PUBLIC, 2
rts
nop
purge
rts
end
rts
00000002)
assembly
assembly
PURGE .LST
Table
***
Page2
Chapter 11 Writing Macro Control Statements
11.8 rept
Syntax
expression
rept
block
endm
Functional description
The rept directive repeatedly expands the speciÞed block the speciÞed number of times. It is used for
simple repeating without parameters. The rept directive can be coded anywhere in a program or even
within a macro deÞnition.
Coding rules
Symbols cannot be used within a block. If used, then a double deÞnition error will occur. The local
directive cannot be used either.
Further rept and ipt directives and macro calls can be coded within a block. Up to 20 nesting levels are
allowed.
Usage example
In the following example, the rept directive is in a macro deÞnition that is used twice in the program
main.
repeat
macro
p1
rept
p1
add
1, D0
endm
endm
_CODE
section
CODE, PUBLIC, 2
repeat
5
main
rept
3
repeat
2
endm
end
rept
285
Chapter 11 Writing Macro Control Statements
The assembled list Þle is shown below.
***
Loc
000000
000002
000004
000006
000008
286
rept
mn102L00
Object
D401
D401
D401
D401
D401
00000A
00000C
D401
D401
00000E
000010
D401
D401
0000012
0000014
D401
D401
ROM size
No
No
is 22 (Hex.
error in
warning in
***
00000000
Symbol
A _CODE
Cross
Line
1
2
3
4
5
6
7
8
M9
M9+
9+
9+
9+
9+
9+
9+
9+
M10
11
12
M12+
M12+
12+
12+
12+
12+
M12+
M12+
12+
12+
12+
12+
M12+
M12+
12+
12+
12+
12+
13
this
this
REPT .LST
Assembler
***
Source
repeat
macro
rept
add
endm
endm
_CODE
main
00000016)
assembly
assembly
REPT
Table
Page1
p1
p1
1, D0
section
CODE, PUBLIC, 2
repeat
rept
add
endm
add
add
add
add
add
rept
repeat
endm
repeat
rept
add
endm
add
add
repeat
rept
add
endm
add
add
repeat
rept
add
endm
add
add
end
5
5
1, D0
.LST
***
1,
1,
1,
1,
1,
3
2
D0
D0
D0
D0
D0
2
2
1, D0
1, D0
1, D0
2
2
1, D0
1, D0
1, D0
2
2
1, D0
1, D0
1, D0
Page2
Chapter 11 Writing Macro Control Statements
00000000
T main
The first call of the repeat macro expands to five add instructions. The next repeat macro call is within
a rept that repeats three times, so it will expand to three sets of two add instructions each.
rept
287
Chapter 11 Writing Macro Control Statements
11.9 irp
Syntax
irp
dummy_parameter, parameter (, parameter) ...
block
endm
NOTE:
10 dummy parameters can be specified.
Functional description
The irp directive repeatedly expands the speciÞed block the speciÞed number of times. The dummy
parameter is used within the block. The macro expansion replaces the dummy parameter with each
parameter in turn, repeated for the number of parameters.
Coding rules
Symbols cannot be used within a block. If used, then a double deÞnition error will occur. The local
directive cannot be used either.
If a comma (,) delimiters in a row are speciÞed, then the corresponding parameter will be processed as
though a null character had been speciÞed.
To specify strings that include commas and spaces, use the macro operator <>.
288
rept
Chapter 11 Writing Macro Control Statements
Usage example
In the following example, the irp directive is in a macro deÞnition that is used twice in the program
main.
init
_CODE
main
_DATA
data
macro
irp
mov
mov
endm
endm
section
init
irp
mov
endm
section
dw
opr, <data\& 0x0f>
opr, D0
opr, D1
CODE, PUBLIC, 0
reg, D2, D3
0, reg
DATA, PUBLIC, 2
0
end
irp
289
Chapter 11 Writing Macro Control Statements
The assembled list Þle is shown below.
***
Loc
290
irp
mn102L00
Object
000000
000002
F470000000
F470000000
000004
000006
AA00
AF00
000000
0000
ROM size
No
No
is 16(Hex.
error in
warning in
***
00000000
00000000
00000000
00000000
Symbol
A _CODE
A _DATA
D data
T main
Cross
Lne
1
2
3
4
5
6
7
8
9
M10
M10+
10+
10+
10+
+10+
+10+
M11
12
13
13+
13+
14
15
16
17
18
this
this
IRP .LST
Assembler
***
Source
init
macro
irp
mov
mov
endm
endm
Page1
_CODE
main
CODE, PUBLIC, 2
section
init
irp
mov
mov
endm
mov
mov
irp
mov
endm
mov
mov
_DATA
data
section
dw
end
00000010)
assembly
assembly
IRP .LST
Table
***
opr,<data\&0x0f>
opr, D0
opr, D1
opr,<data&0x0f>
opr, D0
opr, D1
data&0x0f, D0
data&0x0f, D1
reg, D2, D3
0, reg
0, D2
0, D3
DATA, PUBLIC, 2
0
Page2
Chapter 11 Writing Macro Control Statements
11.10 irpc
Syntax
dummy_parameter, "string"
irpc
block
endm
Functional description
The irpc description repeatedly replaces the dummy parameter with each character in the speciÞed
string one at a time. The dummy parameter can be used in the block. The macro expansion replaces
the dummy parameter with each character in turn, repeated for the number of characters.
Coding rules
The string cannot include the characters &, \, ', and ".
Symbols cannot be used within a block. If used, then a double deÞnition error will occur. The local
directive cannot be used either.
Usage example
The following example uses the irpc directive
.
_CODE
section
irpc
dc
endm
irpc
dc
irpc
dc
endm
irpc
dc
end
CODE, PUBLIC, 2
dummy, ÒA1!Ó
ÔdummyÕ
dummy, Ò#$%( ) = ! @ ~ [ Ò
ÔdummyÕ
dummy, Ò1234567890Ó
ÔdummyÕ
dummy, Ò?_Ó
ÔdummyÕ
irpc
291
Chapter 11 Writing Macro Control Statements
The assembled list Þle is shown below.
***
Loc
292
irpc
mn102L00
Object
IRPC .LST
Assembler ***
Source
_CODE
section
irpc
dc
endm
Page1
000000
41
Cross
Lne
1
M2
3
4
4+
000001
31
4+
dc
000002
20
4+
dc
000003
21
4+
dc
000004
20
4+
dc
000005
20
4+
dc
ÔAÕ
Ô1 Ô
Ô Õ
Ô!Õ
Ô Ô
Ô Ô
M5
6
7
irpc
dc
dummy, Ò#$%( )=!@~[
ÔdummyÕ
7+
7+
7+
7+
7+
7+
7+
7+
7+
7+
M8
9
10
10+
10+
10+
10+
10+
10+
10+
10+
10+
10+
M11
12
13
13+
13+
14
dc
dc
dc
dc
dc
dc
dc
dc
dc
dc
irpc
dc
endm
dc
dc
dc
dc
dc
dc
dc
dc
dc
dc
irpc
dc
endm
dc
dc
end
0000001C)
000006
000007
000008
000009
00000A
00000B
00000C
00000D
00000E
00000F
23
24
25
28
29
3D
21
40
7E
5B
000010
000011
000012
000013
000014
000015
000016
000017
000018
000019
31
32
33
34
35
36
37
38
39
30
00001A
00001B
3F
5F
ROM size
No
is 28
error in
this
dc
CODE, PUBLIC, 2
dummy, ÒA1 ! Ò
ÔdummyÕ
endm
(Hex.
assembly
Ô#Õ
Ô$Õ
Ô%Õ
Ô(Ô
Ô)Ô
Ô=Õ
Ô!Ô
Ô@Ô
Ô~Ô
Ô[
dummy, Ò1234567890Ó
ÔdummyÕ
Ô1Õ
Ô2Õ
Ô3Õ
Ô4Õ
Ô5Õ
Ô7Õ
Ô8Õ
Ô9Õ
Ô9Õ
Ô0Õ
dummy, Ò?_Ó
ÔdummyÕ
Ô?Õ
Ô_Õ
Chapter 11 Writing Macro Control Statements
No
warning in
***
00000000
Symbol
A _CODE
this
assembly
IRPC .LST
Table
***
Page2
irpc
293
Chapter 11 Writing Macro Control Statements
11.11 front / back
Syntax
front
.
.
back
.
.
Functional description
The front and back directives change the look-up sequence of machine language instructions and macro
names. They are used when deÞning macros with the same names as machine language instructions.
The assembler maintains two tables: one that registers machine language instructions and one that
registers macro instructions. Normally (in the default state) the assembler processes the table that
registers machine language instructions Þrst. That means macros with the same name as machine
language instructions will not be expanded.
The front directive changes the table look-up sequence so that the assembler searches the table that
registers macro instructions Þrst. When a macro has the same name as a machine language instruction,
the macro expansion will have priority.
front
First search table that registers macro instructions.
back
First search table that registers machine language instructions.
Coding rules
The front and back directives can be coded at any statement position in a program.
The look-up sequence will change from the next line after the front/back directive.
294
front / back
Chapter 11 Writing Macro Control Statements
Usage example
A source Þle is shown below. It deÞnes the macro rts, which has the same name as a machine language
instruction.
front
rts
macro
nop
endm
_CODE
section
CODE, PUBLIC, 2
main
rts
purge
rts
rts
back
rts
macro
nop
endm
rts
purge
rts
rts
end
front/back
295
Chapter 11 Writing Macro Control Statements
The assembled list Þle is shown below.
***
Loc
000000
F6
000001
FE
000002
FE
000003
FE
ROM size
No
No
is4
error in
warning in
***
00000000
00000000
296
mn102L00
Object
front/back
Symbol
A _CODE
T main
Cross
Lne
1
2
3
4
5
6
7
M8
8+
9
10
11
12
13
14
15
16
17
18
this
this
FRONT .LST
Assembler
***
Source
front
rts
macro
nop
endm
Page1
_CODE
main
section
CODE, PUBLIC, 2
rts
nop
purge
rts
back
rts
rts
macro
nop
endm
rts
purge
rts
end
00000004)
(Hex.
assembly
assembly
FRONT .LST
Table
***
rts
Page2
Chapter 12
List Of Machine Language Instructions
12
Chapter 12 List of Machine Language Instructions
12.1 Purpose Of This Chapter
The chapter lists machine language instructions of the microcomputers.
This comprehensive list of addressing modes and mnemonics for every instruction can be quite useful
when you are coding machine language instruction statements.
If you need to know about the detailed operation of individual instructions, then refer to the Instruction
Manual.
298
Purpose Of This Chapter
12.2 Addressing Modes
The microcomputers support four addressing modes for memory accesses.
The following four address formats are methods for accessing an address speciÞed as an address
register's contents or as the sum of an address register's contents and a displacement.
¥
Register indirect addressing
¥
Register relative indirect addressing
¥
Absolute addressing
¥
Index addressing
Register indirect addressing
Register indirect addressing
Register indirect addressing is speciÞes the address to access with the address register An.
0
23
An
RAM
Address specification
Addressing Modes 299
Chapter 12 List of Machine Language Instructions
Register relative indirect addressing
1. Register relative indirect addressing determines the address to access using the following three
combinations.
Address register An with a sign-extended 8-bit or 16-bit displacement
0
16
d16/d8
0
23
23
An
0
sign-extended
+
0
23
RAM
Address specification
300
Addressing Modes
2. Address register An with a 24-bit displacement
0
23
23
0
An
d24
+
0
23
RAM
Address specification
3. Program counter PC with a sign-extended 8-bit or 16-bit displacement
0
16
d16/d8
0
23
PC
23
0
sign-extended
0
23
RAM
Address specification
Addressing Modes 301
Chapter 12 List of Machine Language Instructions
Absolute addressing
Absolute addressing speciÞes the address to be accessed as a 24-bit or 16-bit displacement.
0
23
abs24/abs16
RAM
Address specification
Index addressing
Index addressing extends the offset of register indirect addressing, adds address register An and data
register Dn, and takes the resulting value as the offset.
0
23
15
0
An
Dn
+
0
23
RAM
Address specification
302
Addressing Modes
12.3 List Of Machine Language Instructions
Symbol
An, Am
Dn, Dm
imm8
imm16
imm24
d8
d16
d24
MDR
PSW
CF
ZF
NF
VF
CXF
ZXF
NXF
VXF
()
Description
Address register (n, M=3 to 0)
Data register (n, M = 3 to 0)
8-bit immediate data speciÞed with an instruction
16-bit immediate data speciÞed with an instruction
24-bit immediate data speciÞed with an instruction
8-bit offset data speciÞed with an instruction
16-bit offset data speciÞed with an instruction
24-bit offset data speciÞed with an instruction
Multiply/divide register
Program status word
Carry ßag
Zero ßag
Negative ßag
Overßow ßag
Extended carry ßag
Extended zero ßag
Extended negative ßag
Extended overßow ßag
Indicates an indirect address
List Of Machine Language Instructions 303
Chapter 12 List of Machine Language Instructions
12.3.1 Data Move Instructions
MOVE source to destination
Mnemonic
Register
Direct
Immediate
Value
Register
Indirect
MOV Dn, Am
MOV An, Dm
MOV Dn, Dm
MOV an, Am
MOV DBRn, Dn
MOV Dn, DBRn
MOV MDR, Dn
MOV Dn, MDR
MOV PSW, Dn
MOV Dn, PSW
MOV SCBR, Dn
MOV Dn, SCBR
MOV imm8, Dn
MOV imm16, Dn
MOV imm24, Dn
MOV imm16, An
MOV imm24, An
MOV (An),Dm
MOV Dn, (Am)
MOV (An), Am
MOVB(An), Dm
MOVB Dn, (Am)
MOVBU (An), Dm
Register
Relative
Indirect
304
MOV (d8, An), Dm
MOV Dn, (d8, Am)
MOV (d16, An), Dm
Description of operation
Moves contents of Dn to Am.
Moves contents of An to Dm
Moves contents of Dn to Dm
Moves contents of An to Am
Moves sign-extended contents of DBRn to Dn
Moves lower 8 bits of Dn to DBRn
Moves contents of MDR to Dn
Moves contents of Dn to MDR
Moves contents of PSW to Dn
Moves contents of Dn to PSW
Moves sign-extended contents of SCBR to Dn
Moves lower 8 bits of Dn to SCBR
Moves sign-extended 8-bit immediate data speciÞed by the
instruction to Dn
Moves 16-bit immediate data speciÞed by the instruction to Dn
Moves 24-bit immediate data speciÞed by the instruction to Dn
Moves 16-bit immediate data speciÞed by the instruction to An
Moves 24-bit immediate data speciÞed by ghe instruction to An
Moves contents of memory speciÞed by An to Dm
Moves contents of Dn to memory speciÞed by Am
Moves contents of An to memory speciÞed by Am
Moves sign-extended 8-bit contents of memory speciÞed by An
to Dm
Moves lower 8 bits of contents of Dn to memory speciÞed by Am
Moves zero-extended 8-bit contents of memory speciÞed by An
to Dm
Moves contents of memory speciÞed by An, d8 to Dm
Moves contents of Dn to memory speciÞed by Am, d8
Moves contents of Dn to memory specified by Am, d24
MOV Dn, (d16, Am) Moves contents of Dn to memory speciÞed by Am, d16
MOV (d24, An), Dm Moves contents of Dn to memory speciÞed by Am, d24
MOV Dn,(d24, Am) Moves contents of memory speciÞed by Am, d24
MOV (d8, An), Am
Moves contents of memory speciÞed by An,d8 to Am.
MOV An, (d8, Am)
Moves contents of An to memory speciÞed by Am,d8.
MOV (d16, An), Am Moves contents of memory speciÞed by An,d16 to Am
MOV An, (d16, Am) Moves contents of An to memory speciÞed by Am,d16
MOV (d24, An), Am Moves contents of memory speciÞed by An,d24 to Am
MOV An, (d24, Am) Moves contents of An to memory speciÞed by Am,d24
MOVB (d8, An), Dm Moves sign-extended 8-bit contents of memory speciÞed by
An,d8 to Dm.
List Of Machine Language Instructions
Mnemonic
(Register
Relative
Indirect)
Index
Absolute
Description of operation
MOVB Dn, (d8, Am)
Moves lower 8 bits of contents of Dn to memory speciÞed by
Am,d8.
MOVB (d16, An),
Moves sign-extended 8-bit contents of memory speciÞed by
Dm
An,d16 to Dm.
MOVB Dn, (d16,
Moves lower 8 bits of contents of Dn to memory speciÞed by
Am)
Am,d16.
MOVB (d24, An),
Moves sign-extended 8-bit contents of memory speciÞed by
Dm
An,d24 to Dm.
MOVB Dn, (d24,
Moves lower 8 bits of contents of Dn to memory speciÞed by
Am)
Am,d24.
MOVBU (d8, An),
Moves zero-extended 8-bit contents of memory speciÞed by
Dm
An,d8 to Dm
MOVBU (d16, An),
Moves zero-extended 8-bit contents of memory speciÞed by
Dm
An,d16 to Dm
MOVBU (d24, An),
Moves zero-extended 8-bit contents of memory speciÞed by
Dm
An,d24to Dm
MOVX (d8, An)), Dm Moves contents of memory speciÞed by An,d8 to Dm.
MOVX Dn, (d8, An) Moves contents of Dn to memory speciÞed by Am,d8
MOVX (d16, An)),
Moves contents of memory speciÞed by An,d16to Dm
Dm
MOVX Dn, (d16, An) Moves contents of Dn to memory speciÞed by Am,d16
MOVX (d24, An)),
Moves contents of memory speciÞed by An,d24 to Dm
Dm
MOVX Dn, (d24,
Moves contents of Dn to memory speciÞed by Am,d24
Am)
MOV (Dn, An), Dm Moves contents of memory speciÞed by Dn,An to Dm
MOV Dn, (Dm, An) Moves contents of Dn to memory speciÞed by Dm,An
MOV (Dn, An), Am
Moves contents of memory speciÞed by Dn,An to Am
MOV An, (Dn, Am)
Moves contents of Dn to memory speciÞed by Dm,Am
MOVB (Dn, An), Dm Moves sign-extended 8-bit contents of memory speciÞed by
An,Dn to Dm
MOVB Dn, (Dm, An) Moves lower 8 bits of contents of Dn to memory speciÞed by
An,Dm
MOVBU (Dn, An),
Moves zero-extended 16-bit contents of memory speciÞed by
Dm
An,Dn to Dm
MOV (abs16), Dn
Moves contents of memory speciÞed by abs16 to Dn
MOV (abs24), Dn
Moves contents of memory speciÞed by abs24 to Dn
MOV Dn, (abs16)
Moves contents of Dn to memory speciÞed by abs16
MOV Dn, (abs24)
Moves contents of Dn to memory speciÞed by abs24
MOV (abs16), An
Moves contents of memory speciÞed by abs16 to An
MOV (abs24), An
Moves contents of memory speciÞed by abs24 to An
MOV An, (abs16)
Moves contents of An to memory speciÞed by abs16
MOV An, (abs24)
Moves contents of An to memory speciÞed by abs24
MOVB (abs16), Dn
Moves sign-extended 8-bit contents of memory speciÞed by
abs16 to Dn
MOVB Dn, (abs16)
Moves lower 8 bits of contents of Dn to memory speciÞed by
abs16
List Of Machine Language Instructions 305
Chapter 12 List of Machine Language Instructions
Mnemonic
(Absolute)
Description of operation
MOVB (abs24), Dn
Moves sign-extended 8-bit contents of memory speciÞed by
abs24 to Dn
MOVB Dn, (abs24)
Moves lower 8 bits of contents of Dn to memory speciÞed by
abs24
MOVBU (abs16), Dn Moves zero-extended 8-bit contents of memory speciÞed by
abs16 to Dn
MOVBU (abs24), Dn Moves zero-extended 8-bit contents of memory speciÞed by
abs24 to Dn
EXTEND Sign
Mnemonic
EXT Dn
EXTX Dn
EXTU Dn
EXTXB Dn
EXTXBU Dn
306
Description of operation
Sign-extends contents of Dn to 32 bits, and moves the extended upper 16 bits
to MDR
Sign-extends the lower 16 bits of Dn to 24 bits, and stores in Dn.
Zero-extends the lower 16 bits of Dn to 24 bits, and stores in Dn.
Sign-extends the lower 8 bits of Dn to 24 bits, and stores in Dn
Zero-extends the lower 8 bits of Dn to 24 bits, and stores in Dn
List Of Machine Language Instructions
12.3.2 Arithmetic Instructions
ADD
Mnemonic
Register
ADD Dn, Dm
ADD Dn, An
ADD An, Dn
ADD An, Am
ADD imm8, Dn
Immediate
ADD imm16, Dn
Value
ADD imm24, Dn
ADD imm8, An
ADD imm16, An
ADD imm24, An
Description of operation
Adds contents of Dn and Dm, and stores result in Dm
Adds contents of Dn and An, and stores result in An
Adds contents of An and Dn, and stores result in Dn
Adds contents of An and Am, and stores result in Am
Adds sign-extended 8-bit immediate data speciÞed by the
instruction to Dn, and stores the result in Dn
Adds 16-bit immediate data speciÞed by the instruction to
Dn, and stores the result in Dn
Adds 24-bit immediate data speciÞed by the instruction to
Dn, and stores the result in Dn
Adds sign-extended 8-bit immediate data speciÞed by the
instruction to An, and stores the result in An
Adds 16-bit immediate data speciÞed by the instruction to
An, and stores the result in An
Adds 24-bit immediate data speciÞed by the instruction to
An, and stores the result in An.
ADD with CARRY
Mnemonic
ADDC Dn, Dm
Description of operation
Adds contents of Dn and Dm with the carry, and stores the result in Dm
ADD without FLAG
Mnemonic
ADDNF imm8, An
Description of operation
Sign-extends the 8-bit immediate data speciÞed by the instruction, adds this
to the contents of An, and stores the result in An.
List Of Machine Language Instructions 307
Chapter 12 List of Machine Language Instructions
SUBTRACT
Mnemonic
Register
Immediate
SUB Dn, Dm
SUB Dn, An
SUB An, Dn
SUB An, Am
SUB imm16, Dn
Value
SUB imm24, Dn
SUB imm16, An
SUB imm24, An
Description of operation
Subtracts contents of Dm from Dn, and stores result in Dm
Subtracts contents of An from Dn, and stores result in An
Subtracts contents of Dn from An, and stores result in Dn
Subtracts contents of Am from An, and stores result in Am
Subtracts 16-bit immediate data speciÞed by the instruction
from Dn, and stores the result in Dn
Subtracts 24-bit immediate data speciÞed by the instruction
from Dn, and stores the result in Dn
Subtracts 16-bit immediate data speciÞed by the instruction
from An, and stores the result in An
Subtracts 24-bit immediate data speciÞed by the instruction
from An, and stores the result in An
SUBTRACT with BORROW
Mnemonic
SUBC Dn, Dm
Description of operation
Subtracts contents of Dm from Dn with the carry, and stores the result in Dm
MULTPLY
Mnemonic
Signed
MUL Dn, Dm
Unsigned
MULU Dn, Dm
Description of operation
Multiplies contents of Dn (a signed 16-bit integer) and Dm
(a signed 16-bit integer), and stores upper 16 bits of the 32-bit
product in MDR and lower 16 bits in Dm
Multiplies contents of Dn (an unsigned 16-bit integer) and
Dm (an unsigned 16-bit integer), and stores upper 16 bits of the
32-bit product in MDR and lower 16 bits in Dm
DIVIDE
Mnemonic
Unsigned
308
DIVU Dn, Dm
List Of Machine Language Instructions
Description of operation
Divides contents of Dm (an unsigned 16-bit integer) into
contents of the 32-bit unsigned integer formed by
concatenating MDR (the upper 16 bits) and DN (the lower 16
bits), and stores the 16-bit quotient in Dm. If VF=1, then MDR
and Dm will be undeÞned
COMPARE source with destination
Mnemonic
Register
CMP Dn, Dm
CMP Dn, An
CMP An, Am
CMP An, Dn
Immediate
Value
CMP imm8, Dn
CMP imm16, Dn
CMP imm24, Dn
CMP imm16, An
CMP imm24, An
Description of operation
Subtracts contents of Dn from Dm, and reßects the result in the
ßags
Subtracts contents of Dn from An, and reßects the result in the
ßags
Subtracts contents of Am from An, and reßects the result in the
ßags
Subtracts contents of An from Dn, and reßects the result in the
ßags
Subtracts sign-extended 8-bit immediate data speciÞed by the
instruction from contents of Dn, and reßects the result in the
ßags
Subtracts 16-bit immediate data speciÞed by the instruction
from contents of Dn, and reßects the result in the ßags
Subtracts 24-bit immediate data speciÞed by the instruction
from contents of Dn, and reßects the result in the ßags
Subtracts 16-bit immediate data speciÞed by the instruction
from contents of An, and reßects the result in the ßags
Subtracts 24-bit immediate data speciÞed by the instruction
from contents of An, and reßects the result in the ßags
List Of Machine Language Instructions 309
Chapter 12 List of Machine Language Instructions
12.3.3 Logical Instructions
AND source with destination
Mnemonic
AND Dn, Dm
AND imm8, Dn
AND imm16, Dn
AND imm16, PSW
Description of operation
Performs logical AND of Dn and Dm, and stores result in Dm
Performs logical AND of Dn and zero-extended 8-bit
immediate data speciÞed by the instruction, and stores the
result in Dn
Performs logical AND of Dn and 16-bit immediate data
speciÞed by the instruction, and stores the result in Dn
Performs logical AND of PSW and 16-bit immediate data
speciÞed by the instruction, and stores the result in PSW
OR source with destination
Mnemonic
OR Dn, Dm
OR imm8, Dn
OR imm16, Dn
OR imm16, PSW
Description of operation
Performs logical OR of Dn and Dm, and stores result in Dm.
Performs logical OR of Dn and zero-extended 8-bit immediate
data speciÞed by the instruction, and stores the result in Dn.
Performs logical OR of Dn and 16-bit immediate data speciÞed
by the instruction, and stores the result in Dn
Performs logical OR of PSW and 16-bit immediate data
speciÞed by the instruction, and stores the result in PSW
EXCLUSIVE-OR source with destination
Mnemonic
Register
Immediate
Value
XOR Dn, Dm
XOR imm16, Dn
Description of operation
Performs exclusive OR of Dn and Dm, and stores result in Dm.
Performs exclusive OR of Dn and 16-bit immediate data
speciÞed by the instruction, and stores the result in Dn
NOT destination
Mnemonic
NOT Dn
310
List Of Machine Language Instructions
Description of operation
Inverts all bits of Dn and stores the result in Dn.
ARITHMETIC SHIFT RIGHT
Mnemonic
ASR Dn
Description of operation
Performs a 1-bit arithmetic shift right on contents of Dn and stores the
result in Dn. The LSB of Dn from before the calculation will be stored in
the C ßag
LOGICAL SHIFT RIGHT
Mnemonic
LSR Dn
Description of operation
Performs a 1-bit logical shift right on contents of Dn and stores the result in
Dn. The LSB of Dn from before the calculation will be stored in the C ßag.
The MSB of Dn will be set to 0
ROTATE RIGHT
Mnemonic
ROR Dn
Description of operation
Concatenates Dn and the C ßag, rotates it 1-bit to the right,and stores the
result in Dn
ROTATE LEFT
Mnemonic
ROL Dn
Description of operation
Concatenates Dn and the C ßag, rotates it 1 bit to the left, and stores the
result in Dn
List Of Machine Language Instructions 311
Chapter 12 List of Machine Language Instructions
12.3.4 Subroutine Call Instructions
CALL Subroutine
Mnemonic
JSR (An)
JSR label
RTS
RTI
Description of operation
After pushing the next instruction address on the stack (low byte Þrst), sets
PC to the contents of An and jumps to the subroutine.
After pushing the next instruction address on the stack (low byte Þrst),
jumps to the subroutine indicated by label
Pops the address that was pushed on the stack, sets the PC to that address,
and returns from the subroutine
Performs the following to return from an interrupt routine
¥ Pops the stack to restore the PSW.
¥ Pops the caller address from the stack, and sets the PC to it.
¥ Sets the contents of SCBR to CBR
12.3.5 Unconditional Branch Instructions
Unconditional BRANCH
Mnemonic
JMP (An)
JMP label
312
List Of Machine Language Instructions
Description of operation
Branches unconditionally to the address speciÞed by the contents of An
Branches unconditionally to the address speciÞed by label (branch range is
0 to 0xFFFFFF)
12.3.6 Conditional Branch Instructions
Conditional BRANCH
Mnemonic
Meaning
BEQ label
ZF set
BNE label
ZF clear
BGT label
<(signed)
BGE label
£(signed)
BLE label
³ (signed)
BLT label
> ( signed )
BHI label
< ( unsigned )
BCC label
£ ( unsigned )
CF clear
BLS label
³ ( unsigned )
BCS label
> ( unsigned )
CF set
BVC label
VF clear
BVS label
VF set
BNC label
NF clear
BNS label
NF set
Description of operation
If ZF=1, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If ZF=0, executes the next instruction.
If ZF=0, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If ZF=1, executes the next instruction.
If ZF=0 and NF=VF, branches to the relative address speciÞed by
label (branch range is -128 to +127).
If ZF=1 or NF<>VF, executes the next instruction.
IF NF=VF, branches to the relative address speciÞed by label (branch
range is -128 to +127).
IF NF¹VF, executes the next instruction.
If CF=1 or ZF=1, branches to the relative address speciÞed by label
(branch range is -128 to +127).
If CF=0 and ZF=0, executes the next instruction.
If NF=1 and VF=1, or if NF=0 and VF=0, branches to the relative
address speciÞed by label (branch range is -128 to +127).
If NF=1 and VF=0, or if NF=0 and VF=1, executes the next
instruction.
If CF=0 and ZF=0, branches to the relative address speciÞed by label
(branch range is -128 to +127).
If CF=1 or ZF=0, executes the next instruction.
If CF=0, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If CF=1, executes the next instruction.
If CF=1 or ZF=1, branches to the relative address speciÞed by label
(branch range is -128 to +127).
If CF=0 and ZF=0, executes the next instruction.
If CF=1, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If CF=0, executes the next instruction.
If VF=0, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If VF=1, executes the next instruction.
If VF=1, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If VF=0, executes the next instruction.
If NF=0, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If NF=1, executes the next instruction.
If NF=1, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If NF=0, executes the next instruction.
List Of Machine Language Instructions 313
Chapter 12 List of Machine Language Instructions
Mnemonic
BRA label
314
Meaning
l
List Of Machine Language Instructions
Description of operation
Unconditionally branches to the relative address speciÞed by the
operand label (branch range is -128 to +127).
Extended Conditional BRANCH
Mnemonic
Meaning
BEQX label
=
ZXF set
BNEX label
¹
ZXF clear
BGTX label
<(signed)
BGEX label
£(signed)
BLEX label
³ (signed)
BLTX label
> ( signed )
BHIX label
< ( unsigned )
BCCX label
£ ( unsigned )
CXF clear
BLSX label
³ ( unsigned )
BCSX label
> ( unsigned )
CFX set
BVCX label
VXF clear
BVSX label
VXF set
BNCX label
NXF clear
BNSX label
NXF set
Description of operation
If ZXF=1, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If ZXF=0, executes the next instruction.
If ZXF=0, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If ZXF=1, executes the next instruction.
If ZXF=0 and NXF=VXF, branches to the relative address speciÞed
by label (branch range is -128 to +127).
If ZXF=1 or NXF¹VXF, executes the next instruction.
IF NXF=VXF, branches to the relative address speciÞed by label
(branch range is -128 to +127).
IF NXF¹VXF, executes the next instruction.
If CXF=1 or ZXF=1, branches to the relative address speciÞed by
label (branch range is -128 to +127).
If CXF=0 and ZXF=0, executes the next instruction.
If NXF=1 and VXF=1, or if NXF=0 and VXF=0, branches to the
relative address speciÞed by label (branch range is -128 to +127). If
NXF=1 and VXF=0, or if NXF=0 and VXF=1, executes the next
instruction.
If CXF=0 and ZXF=0, branches to the relative address speciÞed by
label (branch range is -128 to +127).
If CXF=1 or ZXF=0, executes the next instruction.
If CFX=0, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If CFX=1, executes the next instruction.
If CXF=1 or ZXF=1, branches to the relative address speciÞed by
label (branch range is -128 to +127).
If CXF=0 and ZXF=0, executes the next instruction.
If CXF=1, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If CXF=0, executes the next instruction.
If VXF=0, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If VXF=1, executes the next instruction.
If VXF=1, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If VXF=0, executes the next instruction.
If NXF=0, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If NXF=1, executes the next instruction.
If NXF=1, branches to the relative address speciÞed by label (branch
range is -128 to +127).
If NXF=0, executes the next instruction.
List Of Machine Language Instructions 315
Chapter 12 List of Machine Language Instructions
12.3.7 Bit Manipulation Instructions
BIT Operation
Mnemonic
BTST imm8, Dn
BTST imm16, Dn
BSET Dn, (Am)
BCLR Dn, (Am)
Description of operation
Performs a logical AND of the contents of Dn and the zero-extended 8-bit
immediate data speciÞed by the instruction, and reßects the result in the ßags.
Performs a logical AND of the contents of Dn and the 16-bit immediate data
speciÞed by the instruction, and reßects the result in the ßags.
Loads a 16-bit internal temporary register with the zero-extended 8-bit
contents of the memory indicated by Am, performs a logical AND with the
contents of Dn, and reßects the ßag results in the PSW. Also performs a
logical OR of the contents of the temporary register and Dn, storing the lower
8 bits of the result in the memory indicated by Am. Bus clocks and interrupts
are disabled while all operations of this instruction are executed.
Loads a 16-bit internal temporary register with the zero-extended 8-bit
contents of the memory indicated by Am, performs a logical AND with the
contents of Dn, and reßects the ßag results in the PSW. Also performs a
logical OR of the contents of the temporary register and the inverted contents
of Dn, storing the lower 8 bits of the result in the memory indicated by Am.
Bus
12.3.8 Other Instructions
NO OPERATION
Mnemonic
NOP
316
Description of operation
Performs no processing. Consumes a Þxed amount of time.
List Of Machine Language Instructions
Chapter 13
Error Messages
13
Chapter 13
Error Messages
13.1 Purpose Of This Chapter
There are three types of errors
¥
Warnings
¥
Errors
¥
Fatal errors
This chapter lists the error messages that may occur during assembly and linking.
How to read
The meanings of each entry in the error message tables are as shown below.
error_number
318 Purpose Of This Chapter
displayed_message
cause
solutions
Chapter 10 Error Messages
13.2 Assembler Errors
The assembler has three types of messages: warning messages, error messages, and fatal error
messages.
13.2.1 Error Messages
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
Syntax error
This line has a syntax error.
Refer to the instruction guidelines in this manual.
Operand error
An incorrect type of operand was used for a machine language instruction
Check whether or not the operand type and value are incorrect.
Illegal operand value
The operand value is not a legal value.
Change the operand value to a legal value.
Symbol multiple defined
This is a symbol double-deÞnition error.
Change the symbol.
Symbol undefined
This is an undeÞned symbol error.
DeÞne the symbol or declare it as an external reference.
Can't output to listing file
The columns per line in the list Þle is too small.
Make the columns per line larger with the page directive.
Operand type should be absolute
The operand value is not an absolute address.
Specify an absolute address for the operand valu
Illegal address mode
An illegal address mode was used.
Check the address mode.
Illegal symbol type
An illegal address mode was used.
Check the symbol type.
Define symbol multiple defined
This is a symbol double-deÞnition error.
Change the #deÞne identiÞer or use the #undef directive.
ROM or RAM table over flow
The ROM or RAM check table is full.
Contact Matsushita Electronics Corporation.
Assembler Errors 319
Chapter 13
Error Messages
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
320
Assembler Errors
Use map file value
The map Þle and assembly results are different.
Check the map Þle value.
Expression oveflow
A value outside the allowed range was speciÞed for a dc directive operand.
Make the value fall within range.
Eliminated instruction
A value outside the allowed range was speciÞed for a dc directive operand.
Make the value fall within range.
Branch address out of range
The branch address exceeds the allowed range.
Check the branch address.
Unterminated conditional assemble
There is no #endif.
Specify an #endif.
Operand value should be 0 -15
The operand value is not a legal value.
Change the operand value to a legal value.
Operand value should be -128 -255.
The operand value is not a legal value.
Change the operand value to a legal value.
Operand value should be 0 - 255.
The operand value is not a legal value.
Change the operand value to a legal value.
Too many "#if" or "#endif"
The numbers of #if and #endif directives do not match.
Check the #if and #endif speciÞcations.
Too many "#else"
There are too many #else directives.
Check the #else speciÞcations.
No optimizing information
There is no optimization information in the map Þle.
Check the map Þle.
Illegal constant
The coding of an expression is illegal.
Check the expression coding.
Change PADIX equal 10
The radix for expressions in extended language is not 10.
Change the radix to using the radix directive.
Ignore RADIX
When expression format is extended language, te fadix directive is ignored.
Remove the radix directive.
Chapter 10 Error Messages
2025
2026
2030
Define symbol recursive defined
A #deÞne directive identiÞer is recursively deÞned.
Check the deÞnition of the #deÞne directive identiÞer.
Can't find newline at EOF
The source Þle ended without a carriage return character.
Add a carriage return character at the end of the line.
Write code at code section
An instruction is coded outside the code section.
Code instructions in the code section.
Assembler Errors 321
Chapter 13
Error Messages
13.2.2 Warning Messages
2002
2011
2050
2051
2052
2053
2054
2055
2056
322
Assembler Errors
Illegal operand value
The operand value is not a legal value.
Change the operand value to a legal value.
Use map file value
The map Þle and assembly results are different.
Check the map Þle value.
Operand value must be 0 - X'FF'
The operand value is not a legal value.
Change the operand value to a legal value.
Operand value must be 0 - XÕFFFFÕ
The operand value is not a legal value.
Change the operand value to a legal value.
Relative branch far -128 - 127.
The operand value is not a legal value.
Change the operand value to a legal value.
Illegal rom address
The operand value is not a legal value.
Chante the operand value to a legal value.
Illegal ram address
The operand value is not a legal value.
Change the operand value to a legal value.
Operand value must be -128 - 127
The operand value is not a legal value.
Change the operand value to a legal value.
Operand value must be -32768 - 32767
The operand value is not a legal value.
Change the operand value to a legal value.
Chapter 10 Error Messages
13.2.3 Fatal Error Messages
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
Memory full
The RAM size of the personal computer is insufÞcient.
Check that the RAM size is correctly set using the CHKDSK command of MSDOS.
Can't write to output file
Disk space is insufÞcient or there is a disk defect.
Perform a disk check using the CHKDSK command of MS-DOS.
Line too long ( MAX 256 char/line )
One line of a source statement exceeds 256 characters.
Edit the source statement so each line has 256 characters or fewer.
Can't open output file
The output Þle speciÞcation is incorrect, or disk space is insufÞcient, or there is
a disk defect.
For the former case, check that the Þle name is speciÞed correctly. For the latter
cases, perform a disk check using the CHKDSK command of MS-DOS.
Label buffer full
There are too many labels.
Split up the source Þle, or reduce the number of labels, or increase the label
registration areas using the install program (PAINST.EXE).
Can't open tmp file
Not enough Þles can be opened simultaneously.
Check the CONFIG.SYS setting.
Illegal option
The option speciÞcation is illegal.
Check the option speciÞcation.
Input file error
The input Þle speciÞcation is incorrect, or disk space is insufÞcient, or there is a
disk defect.
For the former case, check that the Þle name is speciÞed correctly. For the latter
cases, perform a disk check using the CHKDSK command of MS-DOS.
Cross reference buffer full
The RAM size of the personal computer is insufÞcient.
Check that the RAM size is correctly set using the CHKDSK command of MSDOS.
Directory name too long
A speciÞed directory name is too long.
Keep the directory name to 60 characters or fewer.
File name too long
A speciÞed Þle name is too long.
Keep the Þle name to 60 characters or fewer.
Assembler Errors 323
Chapter 13
Error Messages
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
324
Assembler Errors
Illegal file name
There is no Þle name speciÞcation for an option.
Specify a Þle name.
Include nesting error ( max 3 level )
There are more than 3 include nesting levels.
Keep the include nesting levels to 3 or fewer.
Symbol tmp buffer full
There is too much debug information.
Simplify the structure deÞnition
Member tmp buffer full
There is too much debug information.
Simplify the structure deÞnition.
Macro buffer full
There are too many macros.
Split up the source Þle, or reduce the number of labels.
Missing endm
There is no endm to correspond to a macro directive.
Check the macro and endm directives.
Macro nesting error ( max 15 level )
There are more than 15 macro nesting levels.
Keep the macro nesting levels to 15 or fewer.
Local label buffer full
There are too many labels.
Split up the source Þle, or reduce the number of labels.
Define buffer full
There are too many #deÞne directives.
Split up the source Þle, or reduce the number of #deÞne directives.
Tmp file I/O error
Disk space is insufÞcient or there is a disk defect.
Perform a disk check using the CHKDSK command of MS-DOS.
Illegal warning number
A warning number speciÞcation is illegal.
Check the warning number speciÞcations.
Can't unlink tmp file
Disk space is insufÞcient or there is a disk defect.
Perform a disk check using the CHKDSK command of MS-DOS
.
Can't open include file
The Þle name speciÞcation is incorrect, or disk space is insufÞcient, or there is a
disk defect.
For the former case, check that the Þle name is speciÞed correctly. For the latter
cases, perform a disk check using the CHKDSK command.
Chapter 10 Error Messages
2525
2526
2527
2528
2529
2530
Can't open reserve file
The directory that contains the assembler is too deep, or there is a disk defect.
For the former case, keep the directory speciÞcation to 60 characters fewer.
For the latter case, perform a disk check using the CHKDSK command.
Illegal I/O file name
The speciÞed Þle name is the same as another input/output Þle.
Change the Þle name.
Illegal map file format
The map Þle format is illegal.
Check the map Þle.
Too long #define line ( MAX 256 char/line )
The result of #deÞne expansion exceeds 256 characters.
Change deÞnitions such that #deÞne expansion is 256 characters or fewer.
Install a CPU-Type with the ASINS-TOOL
There has been an internal failure.
Contact Matsushita.
Section buffer full.
There are too many distinct section labels.
Reduce the number of section labels.
Assembler Errors 325
Chapter 13
Error Messages
13.3 Linker Errors
The linker has three types of messages: warning messages, error messages, and fatal error messages.
3300
3301
3302
3303
3304
3305
3306
326
Assembler Errors
Global label multiple define
A global label is deÞned twice.
Check the label deÞnition.
Undefined label
The label is undeÞned.
Check the label deÞnition.
/t option is used in absolute-File
A ROM address has been changed in an absolute address format program.
Check the ROM address.
Bad option switch
An option speciÞcation is in error.
Check the option speciÞcation.
Not warning message number
A warning number of the W option is in error.
Check the W option warning numbers.
ROM size overflow
The ROM size exceeds the maximum value.
Reduce the ROM size, or change the maximum value of ROM using the install.
Illegal section operand
An operand speciÞcation of the section directive is in error.
Make the operand of the section directive the same as the section name.
Chapter 10 Error Messages
13.3.1 Warning Messages
3050
3051
3052
3053
3054
3055
3056
3067
Operand value must be 0 - X'FF'
The operand value is not a legal value.
Change the operand value to a legal value.
Operand value must be 0 - X'FFFF'
The operand value is not a legal value.
Change the operand value to a legal value.
Relative branch far -128 - 127
The operand value is not a legal value.
Change the operand value to a legal value.
Illegal rom address
The operand value is not a legal value.
Change the operand value to a legal value.
Illegal ram address
The operand value is not a legal value.
Change the operand value to a legal value.
Operand value must be -128 - 127
The operand value is not a legal value.
Change the operand value to a legal value.
Operand value must be -32768 - 65535
The operand value is not a legal value.
Change the operand value to a legal value.
The line of map file exceeds 256 letters.
Since more than 256 letters are coded in one line of the map Þle, the Þnal list Þle
is not created.
Reduce the letters of the Þlename or sectionname.
Assembler Errors 327
Chapter 13
Error Messages
13.3.2 Fatal Error Messages
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
328
Cannot open RF-file
An input Þle does not exist.
Check that the Þle exists.
No RF-file
An input Þle is not an RF Þle.
Check that the input Þle is not in error.
File can't load
An input Þle has a problem.
Assemble the Þle again and check that the disk being used has not problems.
Bad file search
An input Þle has a problem.
Assemble the Þle again and check that the disk being used has not problems.
Operator not supported
An RF Þle has a problem.
Assemble the Þle again.
No memory space
Memory size of your personal computer is insufÞcient.
Check that memory size is adequate.
Disk full
Disk space on your personal computer is insufÞcient.
Check that disk space is adequate.
Invalid hex-data
A hexadecimal number is coded incorrectly.
Check the coding of the hexadecimal number.
Output-file can't open
The output Þle has a problem.
Check that the coding of the output Þle name is correct.
Address overlay
ROM addresses overlay each other.
Check ROM address settings.
3510
Cannot open Parameter-file
The parameter Þle has a problem.
Check that the coding of the parameter Þle name is correct.
3513
Operand error
An operand is in error.
Check that the coding of the operand is correct.
Assembler Errors
Chapter 10 Error Messages
3700
Internal error
An error occurred in internal processing.
Contact Matsushita Electronics Corporation.
Linker Errors
329
Chapter 13
330
Error Messages
Chapter 14
Readinig List Files
14
Chapter 14 Reading List Files
14.1 Purpose Of This Chapter
This chapter explains how to read the list Þles output during assembly.
There are three types of information output in a list Þle.
¥
Machine language code
¥
Symbol table
¥
Cross-reference table
This chapter also explains how to read the information added by individual options and the meanings of
special symbols.
332
Purpose Of This Chapter
Chapter 14 Reading List Files
14.2 Reading List Files
Adding the l (letter) option when the assembler is invoked will generate the list Þle in the current
directory. List Þle contents are entirely in text format, so the can be viewed with the TYPE command
of MS-DOS or by using an editor.
Reading List Files
333
Chapter 14 Reading List Files
14.2.1 Output Format Of Machine Language Code
The output format of the machine language code section is shown below.
Location
Loc
Machine
Language Code
Supplemental
Information
Object
R
*
+
M
@
Line
Number
Supplemental
Information
Source
Statement
+
Line
Source
.
Each of these Þelds is described below.
Location (Loc)
The location Þeld shows the location counter values during assembly.
For section address format programs, the location Þeld shows the relative value from the start of the
section. However, if the assembly is to output the Þnal list by incorporating the map Þle from linking,
then the location Þeld will match the execution addresses.
Machine language code (Object)
This Þeld shows machine language code.
The eight bits of one byte are shown as two hexadecimal digits. These are 1-byte, 2-byte, 3-byte and 4byte instrucions.
334
Reading List Files
Chapter 14 Reading List Files
Machine language code supplemental information
The characters R, *, +, M, and @ may be added to the machine language code as supplemental
information. The meaning of each character is as follows.
R
This line includes a relocatable symbol whose value will be determined during linking. The
machine language code does not indicate the Þnal values.
*
This line includes an externally deÞned symbol whose value will be determined during
linking. The machine language code does not indicate the Þnal values.
+
This line includes an undeÞned symbol that was automatically changed to an external
deÞnition. The machine language code does not indicate the Þnal values.
M
This line is a result of macro expansion.
@
This line includes an instruction whose value will be the object of optimization during
linking. The machine language code does not indicate the Þnal values.
Line number (Line)
The assembler adds a line number to each source statement.
Line number supplemental information
Sometimes the line number will be shown as X. Sometimes it will be preceded by a period (.), and
sometimes it will be followed by a plus sign (+).
X
Line numbers shown as X indicate that the line will not be processed by the assembler.
During conditional assembly this is used for lines in the block of the unfulÞlled condition.
If the Lc option is added when the assembler is invoked, then output of blocks of unfulÞlled conditions
will be suppressed.
.Line numbers preceded by a period indicate that the line was included by an include directive. The
number of periods indicate the nesting levels of include directives. For example ".." means the line was
included by an include directive that itself was within an include Þle.
.10
..10
...10
#include
#include, #include
#include, #include, #include
If the Li option is added when the assembler is invoked, then output of lines included by include
directives will be suppressed.
+
Line numbers followed by a plus sign indicate the line was a result of macro expansion. In
addition to macro expansions deÞned by macro directives, a plus sign is added to expansions
by irp and rept directives.
Reading List Files
335
Chapter 14 Reading List Files
Source statement
The source statements of the source Þle are output as is.
If the Lm option is added when the assembler is invoked, then output of source statements resulting
from macro expansion will be suppressed.
Below are example of source statement.
***
Loc
mn102L00
Object
=00001100
336
000000
000001
000002
000004
000006
000007
000008
00000A
20
04
D002
D102
20
04
D002
D102
00000C
00000B
F4E10000000
EA00
ROM size
No
No
is 19 (Hex.
error in
warning in
***
00000000
00001100
00000000
00000000
Symbol
A _CODE
A data
T main
*U move
Reading List Files
Cross
Line
1
.1
2
3
4
5
6
7
8
9
10
11
12
13
14
XX
XX
17
M18
18+
18+
18+
18+
19
20
21
22
23
+24
R25
26
this
this
***
OUTLIST
Assembler
Source
#include
data
load
_CODE
main
#ifdef
.lst
***
Page1
Òoutlist.hÓ
equ
0x1100
global
move
macro
mov
mov
add
add
endm
(A0), D0
D0, (A1)
2, A0
2, A1
section
CODE, PUBLIC, 2
mov
mov
VERSION
data, D0
D0, (A0)
load
mov
mov
add
add
mov
mov
add
add
(A0), D0
D0, (A1)
2, A0
2, A1
(A0), D0
D0, (A1)
2, A0
2, A1
#else
#endif
00000013)
assembly
assembly
OUTLIST
jsr
bra
move
main
end
.LST
Page2
Chapter 14 Reading List Files
14.2.2 Symbol Table
If only the l (letter) option is speciÞed, and not the c or s options, when the assembler is invoked, then
the assembler will output a symbol table to the list Þle after the machine language code section.
If the c option is speciÞed, then a cross-reference table will be output instead of the symbol table.
The symbol table outputs the name, value, and type of every symbol in the source Þle. It has the
following format.
Symbol Value
Supplemental
Inforamtion
*
Symbol Type
00000000
+
A
T
U
Symbol Name
XXXXXX
Symbol Value
The symbol's value is shown as eight hexadecimal digits.
Supplemental Information
The symbol type may be preceded by a * or +.
*
This indicates an externally deÞned symbol.
+
This indicates an undeÞned symbol that was automatically changed to an externally deÞned
symbol.
Symbol Type
This indicates the type of symbol. All symbols can be classiÞed into three types: A, U, and T.
A
This indicates that the symbol value is absolute.
T
This indicates a text format symbol. The symbol value is an address value.
U
This indicates that the symbol was not deÞned in the source Þle. It is an undeÞned symbol.
Reading List Files
337
Chapter 14 Reading List Files
Symbol Name
Symbol names are shown up to 64 characters.
An output example of a symbol table is shown below.
OUtLIST.LST
*** Symbol
00001100
00000000
00000000
338
Reading List Files
Table
***
A data
T main
*U move
Page2
Chapter 14 Reading List Files
14.2.3 Cross-Reference Table
If the c option is added when the assembler is invoked, then a cross-reference table will be output
instead of a symbol table. The format of the cross reference table is shown below.
Symbol Name
Symbol Value
XXXXX
00000000
Supplemental
Information
Symbol Type
*
+
ABS
EXT
TXT
UND
Reference List
XXXXXX
Symbol Name
Symbol names are shown up to 64 characters.
Symbol Value
The symbol's value is shown as eight hexadecimal digits.
Supplemental Information
The symbol type may be preceded by a * or +.
*
This indicates an externally deÞned symbol.
+
This indicates an undeÞned symbol that was automatically changed to an externally deÞned
symbol.
Symbol Type
The symbol type shows the attribute of a symbol.
ABS
This indicates that the symbol value is absolute.
EXT
This indicates that the symbol is deÞned in another Þle. It is an externally deÞned symbol.
TXT
This indicates a text format symbol. The symbol value is an address value.
UND
This indicates that the symbol was not deÞned in the source Þle. It is an undeÞned symbol.
Reading List Files
339
Chapter 14 Reading List Files
Reference List
This reference list shows the Þle names and line numbers where the symbol was deÞned and
referenced.
An example of a cross-reference table is shown below.
OUTLIST.LST
***
_CODE
data
main
Cross Reference
00000000
00001100
00000000
Table ***
TXT
ABS
TXT
move
00000000
*EXT
340 Reading List Files
#OUTLIST.ASM(2)
#OUTLIST.H(1)
#OUTLIST.ASM(10)
OUTLIST.ASM(22)
OUTLIST.ASM(22)
OUTLIST.ASM(3)
OUTLIST.ASM(21)
Page2
Chapter 15
Using Library Manager
15
Chapter 15 Using Library Manager
15.1 Purpose Of This Chapter
A library Þle is a collection of relocatable object Þles which you can pull out as needed. Library Þles
are convenient for placing frequently used modules.
When a module is called from within a program, the linker searches the library Þle, extracts only the
required relocatable object Þle, and loads it in the executable format Þle.
The library manager is a utility for managing library Þles. It can create library Þles and add, delete,
replace, and search for relocatable object Þles.
This chapter explains how to use the library manager.
342
Purpose Of This Chapter
Chapter 15 Using Library Manager
15.2 Starting Library Manager
The library manager is started by entering a command name and parameters, just as for other MS-DOS
external commands.
General format of commands
Below is the general format of the command to use when starting the library manager.
SLIB102L
library_Þle_name
[options] (relocatable_object_Þle_name) ...
Contents of brackets [ ] may be omitted.
Table 15-1 Library Manager Options
Option
-a
-c
-d
-e
-f
-h
-p
-r
-t
-x
@Þlename
Description
Add the speciÞed relocatable object Þle to the library Þle.
Create a library Þle.
If a library Þle of the same name already exists, then a message conÞrming the Þle update
will be output.
Delete the speciÞed relocatable object Þle from the library Þle.
Output messages in English. Messages will be output in Japanese unless this option is
speciÞed.
Force creation of a library Þle.
Output help information about library manager options on the screen.
Output information about externally deÞned symbols in the library Þle.
Replace the speciÞed relocatable object Þle in the library Þle.
Output a list of the relocatable object Þles that make up the library Þle.
Extract the speciÞed relocatable object Þle from the library Þle.
Specify a parameter Þle.
Starting Library Manager
343
Chapter 15 Using Library Manager
15.3 Command Options
a
Add the specified relocatable object file to the library file
Functional description
The -a option is used to add relocatable object Þles to the library Þle.
Operation example
>slib102L test.lib
-a test1.rf
This example adds the relocatable Þle test1.rf to the library Þle test.lib.
Multiple Þles can be added with one -a option. To add test1.rf, test2.rf, and test3.rf to test.lib, specify
the following.
>slib102L test.lib
NOTE:
344
Command Options
-a test1.rf test2.rf test3.rf
If any of the relocatable object files to add already exists in the library file, then the
library manage will output an error message and terminate without performing
any processing.
Chapter 15 Using Library Manager
c
Create a library file
Functional description
If a Þle with same name of the speciÞed library Þle already exists, the library manager will inquire if
the Þle should be modiÞed. Based on the response, the library manager will determine whether or not
to create the library Þle.
Operation example
>slib102L test.lib -c test1.rf test2.rf test3.rf test4.rf
This example will create a library Þle called test.lib from the four relocatable object Þles test1.rf,
test2.rf, test3.rf, and test4.rf.
NOTE:
With slib102L, files that mutually reference symbols cannot be placed in library
files with the same name.
d
Delete the specified relocatable object file from the library file
Functional description
The -d option is used to delete relocatable object Þles from the library Þle.
If a speciÞed Þle does not exist in the library Þle, then the library manager will output a warning
message and continue processing.
Operation example
>slib102L test.lib -d test1.rf
This example deletes the relocatable Þle test1.rf from the library Þle test.lib.
Multiple Þles can be deleted with one -d option. To delete test1.rf, test2.rf, and test3.rf from test.lib,
specify the following.
>slib102L test.lib
-d test1.rf test2.rf test3.rf
Command Options
345
Chapter 15 Using Library Manager
Output messages in English. Messages will be output in Japanese
unless this option is specified
e
Functional description
The default for slib101c is to output messages in Japanese, but the -e option makes the library manager
switch to English messages.
Operation example
>slib102L test.lib -f -e test1.rf test2.rf test3.rf
f
Force creation of a library file
Functional description
The -f option forces creation of the library Þle. If a Þle with the same name as the speciÞed library Þle
already exists, then the library manager will overwrite it.
Operation example
>slib102L test.lib -f test1.rf test2.rf test3.rf test4.rf
This example will create a library Þle called test.lib from the four relocatable object Þles test1.rf,
test2.rf, test3.rf, and test4.rf.
NOTE:
346
Command Options
With slib102L, files that mutually reference symbols cannot be placed in library
files with the same name
Chapter 15 Using Library Manager
h
Output help information about library manager options on the screen
Functional description
The -h option is used when you want information about options or the slib101c version number.
Operation example
When the library manager is started with the -h option as shown below, it will output a description of its
version number and options.
>slib102L -h
NOTE:
If the -h option is not used, then input of slib101c will also display help
information.
p
Output information about externally defined symbols in the library file
Functional description
The -p option is used when you want know the externally deÞned symbol names that exist in the library
Þle.
When a relocatable object Þle name is speciÞed following the -p option, and a Þle with the same name
exists in the library Þle, the externally deÞned symbol names in that relocatable object Þle will be
output. If the Þle does not exist, then the library manager will output a warning message and continue
processing.
When no relocatable object Þle name is speciÞed, the externally deÞned symbols in all relocatable
object Þles that exist in the library Þle will be output.
Operation example
>slib102L test.lib -p test1.rf
>slib102L test.lib -p
The Þrst example checks whether or not the Þle test1.rf exists in test.lib, and if it does, outputs the
externally deÞned symbols within it. The second example outputs the externally deÞned symbols in all
relocatable object Þles in test.lib.
Command Options
347
Chapter 15 Using Library Manager
r
Replace the specified relocatable object file in the library file
Functional description
The -r option is used to replace relocatable object Þles in the library Þle.
If a speciÞed Þle does not exist in the library Þle, then the library manager will output a message add
the relocatable object Þle.
Operation example
Specify the following to replace the relocatable object Þle test1.rf in the library Þle test.lib.
>slib102L test.lib -r test1.rf
Multiple Þles can be replaced with one -r option. To delete test1.rf, test2.rf, and test3.rf from test.lib,
specify the following.
>slib102L test.lib -r test1.rf test2.rf test3.rf
This example replaces the relocatable object Þles test1.rf, test2.rf, and test3.rf in test.lib.
t
Output a list of the relocatable object files that make up the library file.
Functional description
The -t option is used when you want to know the names of the relocatable object Þles that exist in the
library Þle.
When a relocatable object Þle name is speciÞed following the -t option, and a Þle with the same name
exists in the library Þle, that Þle name will be output. If the Þle does not exist, then the library manager
will output a warning message and continue processing.
When no relocatable object Þle name is speciÞed, the names of all relocatable object Þles that exist in
the library Þle will be output.
Operation example
>slib102L test.lib -t test1.rf
>slib102L test.lib -t
The Þrst example checks whether or not the Þle test1.rf exists in test.lib. The second example outputs
the names of all relocatable object Þles in test.lib.
348
Command Options
Chapter 15 Using Library Manager
x
Extract the specified relocatable object file from the library file
Functional description
The -x option is used when you want to extract relocatable object Þles that exist in the library Þle.
When a relocatable object Þle name is speciÞed following the -x option, and a Þle with the same name
exists in the library Þle, that relocatable object Þle will be extracted into the speciÞed Þle name. If the
Þle does not exist, then the library manager will output a warning message and continue processing.
When no relocatable object Þle name is speciÞed, all relocatable object Þles that exist in the library Þle
will be extracted.
Operation example
>slib102L test.lib -x test1.rf
>slib102L test.lib -p
The Þrst example checks whether or not the Þle test1.rf exists in test.lib, and if it does, extracts test1.rf.
The second example extracts all relocatable object Þles in test.lib.
NOTE:
When slib102Lis used to group relocatable object files into libraries, it will store
them with debug information in the relocatable object files deleted if such debug
information exists.
Therefore, when an ordinary relocatable object file is placed in a library, it will be
the same as that file when extracted from the library. However, if there will be
differences if the relocatable file was generated with the -g option.
Also, be aware that when an object file is extracted, it will overwrite any file of the
same name existing in the current directory.
Command Options
349
Chapter 15 Using Library Manager
@filename
Specify a parameter file.
Functional description
The options you will use with slib101c can be written to a Þle, so instead of specifying all those options
for execution, you can specify just that Þle name.
Every option other than the @ option can be written in a parameter Þle.
If a parameter Þle that doesn't exist is speciÞed, then the library manager will display an error message.
Operation example
>slib102L @PFILE
350
Command Options
Chapter 15 Using Library Manager
15.4 Error/Warning Messages
Below is a list of error messages and warning messages displayed by the library manager.
How to read
The meanings of each entry in the error message tables are as shown below.
error_number
displayed_message
cause
solutions
Error/Warning Messages
351
Chapter 15 Using Library Manager
Error messages
1
2
3
4
5
6
7
8
9
10
11
12
352
Error/Warning Messages
Illegal option.(string)
An option that is not provided by the library manager was input.
Check the option again.
Library file name not found.
No library Þle name was speciÞed for processing, or it was speciÞed in an
incorrect position.
Check how to specify the library Þle name.
Multiply specified library file name.(filename)
More than one library Þle names were speciÞed for processing.
Check how to specify the library Þle name.
Multiply specified object file name.(filename)
An object Þle with the same name was speciÞed more than once, or an object
Þle with the same name already exists in the library Þle.
Check how to specify object Þles, and change any necessary Þles.5
Memory allocation error.
Memory could not be allocated.
Check memory size.
Cannot open file.(filename)
The Þle with the name Þlename could not be opened.
Check that the Þle exists, and check its access rights.
Premature EOF.(filename)
The contents of the Þle with the name Þlename are incorrect.
The Þle contents are possibly corrupted, so generate the Þle again.
Cannot read file.(filename)
The Þle with the name Þlename could not be read.
Check that the Þle exists, and check its access rights.
Interrelated file exist.
There are Þles with mutual reference relationships.
Fix the source program.
Cannot make temporary file name.
The temporary Þle could not be generated correctly.
Check memory size.
Cannot create library file.(filename)
The library Þle could not be generated.
Check the size of the Þle system.
This file is not object file.(filename)
The Þle Þlename was not correctly speciÞed as an object Þle.
Check again whether an object Þle for MN101C00 was correctly speciÞed. If it
was, then the object Þle contents are possibly corrupted, so generate the object
Þle again.
Chapter 15 Using Library Manager
13
14
15
16
This file is not library file.(filename)
The Þle Þlename was not correctly speciÞed as a library Þle.
Check again whether a library Þle was correctly speciÞed. If it was, then the
library Þle contents are possibly corrupted, so generate the object Þle again.
Cannot write file.(filename)
Data could not be output to the output Þle Þlename.
Check the size of the Þle system.
Illegal offset for symbol name strings.(filename)
The offset to a symbol name string in the Þle with the name Þlename is not
correct.
The Þle contents are possibly corrupted, so generate the Þle again.
Object file name not found.
An option that was used needs an object Þle speciÞcation, yet not object Þle
name was speciÞed.
Check again how to specify the option.
Error/Warning Messages
353
Chapter 15 Using Library Manager
Warning messages
17
354
Error/Warning Messages
Filename not found
The speciÞed object Þle Þlename does not exist in the library Þle.
Check again the names of the object Þles in the library Þle.
Chapter 16
EWS Version
16
Chapter 16 EWS Version
16.1 Purpose of This Chapter
This chapter is for users of the engineering workstation (EWS) version. It mainly describes the
differences between the MS-DOS version and the EWS version.
This chapter also explains the environment settings for using the EWS version, the installation method,
and customization of the conÞguration Þle.
356
Purpose of This Chapter
Chapter 16 EWS Version
16.2 Installation
This section describes the engineering workstations that can use the EWS version of the assembler and
linker, their environments, and installation.
16.2.1 Hardware Environment
Engineering workstations
The engineering workstations that can be used and the corresponding operating system versions are as
follows.
¥
SPARC station
SunOS 4.0 or later
and upward compatible machines
Installation 357
Chapter 16 EWS Version
16.2.2 File Organization
The contents of the EWS version cross-assembler are as follows.
Instead of PAINST.EXE, the EWS version has .as102L00rc and .ld102L00rc.
%ls-a
as102L00
ld102L00
excv102
.as102L00rc .ld102L00r slib102l
c
Each Þle is used for the following purpose
as102L00 (assembler)
This is the assembler executable Þle.
ld102L00 (linker)
This is the linker executable Þle.
.as102L00rc (assembler configuration)
This Þle deÞnes customization of the assembler.
.ld102L00rc (linker configuration)
This Þle deÞnes customization of the linker.
excv102 (file conversion utility)
This utility converts the EX format executable Þles of this assembler (Ver. 3.0) to Intel HEX format.
slib102l(library manager)
This utility manages library Þles.
358
Installation
Chapter 16 EWS Version
16.2.3 Installation
To install, Þrst copy all Þles from the media you were sent to the EWS work directory that you will use.
Next, copy the executable Þles (as102L00, ld102L00, slib102l, and excv102) to the appropriate
directory. Copy the conÞguration Þles (.as102L00rc and .ld102L00rc) to the user's home directory.
NOTE:
The configuration files are referenced when the assembler and linker execute.
The directory to be reference will be the user's home directory as set by the
environment variable HOME.
NOTE:
If the assembler or linker executable file names are changed, then the
configuration file names must also change. Change their names to the
executable file name prefixed by a period (.) and suffixed by "rc".
Installation 359
Chapter 16 EWS Version
16.3 Differences With MS-DOS Version
Except for the following points, all MS-DOS version functions explained in this manual apply to the
EWS version assembler and linker.
Functions removed from MS-DOS version
¥
Slashes (/) cannot be used as the option speciÞcation character.
¥
The installed work area cannot be changed.
Functions in addition to the MS-DOS version
¥
Initial settings of the options and kanji codes can be set by the conÞguration Þle.
Refer to section 16.4, "ConÞguration", for details.
360
Difference With MS-DOS Version
Chapter 16 EWS Version
16.4 ConÞguration
The EWS version assembler and linker read the conÞguration Þles (.as102L00rc or .ld102L00rc) in the
user's home directory, allowing the user to change initial settings of options and kanji codes. In the
English mode, the setting for Þle kanji codes is ignored.
16.4.1 ConÞguration
If there is no conÞguration Þle in the user's home directory, then execution will be with the following
initial settings.
Assembler settings
Item
Purpose
Initial Setting
Range of Settings
Display kanji codes
Used to change kanji
codes displayed on the
screen. (Ignore in the
English mode.)
EUC
EUC code
SJIS code
New JIS 7-bit code
New JIS 8-bit code
Old JIS 7-bit code
Old JIS 8-bit code
File kanji codes
Used to change kanji
codes output to Þles.
Output Þles are list
Þles. (Ignore in the
English mode.)
EUC
EUC code
SJIS code
New JIS 7-bit code
Old JIS 7-bit code
Old JIS 8-bit code
Notation types
Used to change the
radix format type.
Extended C language
format
Matsushita, Intel,
Extended C language
English
Japanese, English
OFF
ON, OFF
OFF
ON, OFF
Output messages
Optimize
Ignore error and output
RF Þle
Used to change the
default settings of start
options.
Configuration 361
Chapter 16 EWS Version
Linker settings
Item
Initial Setting
Range of Settings
Display kanji codes
Used to change kanji
codes displayed on the
screen. (Ignore in the
English mode.)
EUC
EUC code
SJIS code
New JIS 7-bit code
New JIS 8-bit code
Old JIS 7-bit code
Old JIS 8-bit code
File kanji codes
Used to change kanji
codes output to Þles.
Output Þles are list
Þles. (Ignore in the
English mode.)
EUC
EUC code
SJIS code
New JIS 7-bit code
Old JIS 7-bit code
Old JIS 8-bit code
Output messages
English
Japanese, English
Output debug
information
OFF
ON, OFF
OFF
ON, OFF
Output map Þle
OFF
ON, OFF
Output EX Þle
OFF
ON, OFF
Suppress output
symbol into EX-Þle
362
Purpose
Configuration
Used to change the
default settings of start
options.
Chapter 16 EWS Version
16.4.2 ConÞguration File Contents
This section describes the contents of the assembler and linker conÞguration Þles.
Assembler configuration file
%cat .as102L00rc
#Configuration
#
#Display kanji
DISPKANJI
For
Assembler
code
EUC
for
...
...
...
...
...
...
screen output
EUC #Kanji code
Shift JIS code
New JIS 7-bit code
New JIS 8-bit code
Old JIS 7-bit code
Old JIS 8-bit code
#output file
FILEKANJI
kanji
EUC
setting
#Kanji code
#EUC
#SJIS
#NEWJIS7
#NEWJIS8
#OLDJIS7
#OLDJIS8
code setting
#Kanji code
#EUC
#SJIS
#NEWJIS7
#NEWJIS8
#OLDJIS7
#OLDJIS8
for
...
...
...
...
...
...
file output
EUC kanji code
Shift JIS code
New JIS 7-bit code
New JIS 8-bit code
Old JIS 7-bit code
Old JIS 8-bit code
#Options
NOTATION
setting
CLANG
#Notation
#PANA
#CLANG
type
...
...
MESSAGE
OPTIMIZE
r-OPTION
ENGLISH
OFF
OFF
#
#INTEL
#Output
messages
#JAPANESE
#ENGLISH
#Optimize
#Ignore error
and
(Ver. 3.0)
...
Matsushita format
Extended C
language
format
Intel format
...
...
(ON/
output
Japanese
English
OFF)
RF-file(ON/OFF)
Configuration 363
Chapter 16 EWS Version
Linker configuration file
%cat
#Configuration
#
#Display kanji
DISPKANJI
For
Linker
code
EUC
setting
#Kanji code
#EUC
#SJIS
#NEWJIS7
#NEWJIS8
#OLDJIS7
#OLDJIS8
setting
for
...
...
...
...
...
...
screen output
EUC #Kanji code
Shift JIS code
New JIS 7-bit code
New JIS 8-bit code
Old JIS 7-bit code
Old JIS 8-bit code
#Kanji code
#EUC
#SJIS
#NEWJIS7
#NEWJIS8
#OLDJIS7
#OLDJIS8
for
...
...
...
...
...
...
file output
EUC kanji code
Shift JIS code
New JIS 7-bit code
New JIS 8-bit code
Old JIS 7-bit code
Old JIS 8-bit code
#JAPANESE
#ENGLISH
#Output debug
...
...
Japanese
English
#Suppress output
symbol into EX-file
#output file
kanji
FILEKANJI
EUC
#Options
MESSAGE
setting
ENGLISH
g-OPTION
En-OPTION
m-OPTION
r-OPTION
364
.ld102L00rc
Configuration
code
OFF
OFF
OFF
OFF
(Ver. 3.0)
#Output messages
#(ON/OFF)
#Output map file
#Output EX file
information (ON/OFF)
(ON/OFF)
(ON/OFF)
Chapter 16 EWS Version
16.5 Kanji Use
The EWS version assembler and linker make use of the multiple kanji codes available in the EWS.
For multiple kanji codes, the assembler automatically determines the kanji code input and processes it.
The defaults for screen display and Þle output are EUC code. However, these can be changed by the
conÞguration Þle.
Screen display and Þle output for the linker are handled the same as for the linker.
Input kanji codes
¥
EUC code
¥
SJIS code
¥
New JIS 7-bit code
¥
New JIS 8-bit code
¥
Old JIS 7-bit code
¥
Old JIS 8-bit code
The assembler automatically distinguishes between the above kanji codes.
Output kanji codes
¥
EUC code
¥
SJIS code
¥
New JIS 7-bit code
¥
New JIS 8-bit code
¥
Old JIS 7-bit code
¥
Old JIS 8-bit code
The default is EUC code. The above kanji codes can be selected by the conÞguration Þle.
NOTE:
If half-size Japanese characters(Katakana) or secondary standard kanji codes are
encountered before any full-size characters(Kanji or Hiragana) in a file, then kanji
codes might not be processed correctly. This is also true if multiple kanji codes
are used within a single file.
Kanji Use 365
Chapter 16 EWS Version
366
Chapter 17
Appendix
17
Chapter 13 Appendix
17.1 Numeric Restrictions
This section shows the numeric restrictions on the cross-assembler. Be sure not to exceed these values
when writing programs.
17.1.1 Restrictions
Assembler restrictions
Item
Numeric Restriction
Label characters
64 characters
If a label exceeds 64 characters, the 65th and further characters will
be ignored
Characters per line
256 characters
Lines per Þle
No restriction
Number of labels
30,000 labels
Linker restrictions
Item
Numeric Restriction
Number of externally
referenced labels
15,000 labels
Number of link Þles
No restriction
Directive restrictions
Item
section directives
368
Numeric Restrictions
Numeric Restriction
255 directives
Chapter 13 Appendix
Assembler control directive restrictions
Item
Numeric Restriction
include directives
No restriction
deÞne directives
4,096 directives
include nesting levels
3 levels
if XX nesting levels
255 levels
Macro directive restrictions
Item
Numeric Restriction
Number of macros
1,024 macros
Macro nesting levels
20 levels
Macro local symbols
30 symbols (within one macro deÞnition)
Numeric Restrictions
369
Chapter 13 Appendix
17.1.2 Numeric Value in Assembler
Assembler has the area of 32-bit to save the numeric value. The numeric value exceeding 32-bit is disabled. If the value exceeds 32-bit, only the value below 32-bit will be abled.
370
Numeric Restrictions
Chapter 13 Appendix
17.2 List Of Command Options
How to read
The entries in the command option tables below and their meanings are as follows.
option_name
functional_description
speciÞcation_example
List Of Command Options
371
Chapter 13 Appendix
17.2.1 List Of Assembler Command Options
Assembler command general format
Below is the general format of the command to use when starting the assembler.
AS102L
[options] source_filename
Contents of brackets [ ] may be omitted.
Output Þle options
o Þlename
l
c
Li
Lm
Lc
Ls
a map_Þlename
Xl
372
List Of Command Options
Specify the relocatable object Þle name to be output.
AS102L -o A:\USER\OBJ\TEST SAMPLE
Output a list Þle.
AS102L -l SAMPLE
Append a cross-reference to the list Þle.
AS102L -c SAMPLE
Do not output Þles included by include to the list Þle.
AS102L -Lil SAMPLE
Do not output assembler source created by macro expansion using
macro or irp to the list Þle. Output only the machine language code.
AS102L -Lml SAMPLE
Do not output source statements that were not assembled due to
unfulÞlled conditions of conditional assembly to the list Þle.
AS102L -Lcl SAMPLE
Do not output a symbol table to the list Þle.
AS102L -Lsl SAMPLE
Read the map Þle to output a list Þle with resolved addresses.
AS102L -l -a SAMPLE SUB
Output the list Þle to the same directory as the relocatable object Þle.
AS102L -Xl SAMPLE
Chapter 13 Appendix
Error message options
j
e
W number
Wall
Output error and warning messages in Japanese.
Output will be to the screen and, when a list Þle is speciÞed, to the list Þle.
AS102L -j SAMPLE
Output error and warning messages in English. Output will be to the
screen and, when a list Þle is speciÞed, to the list Þle.
AS102L -e SAMPLE
Do not output warning messages of the speciÞed number. Output will not be
performed to either the screen or list Þle. Refer to chapter 10,
Error Messages", for warning messages and their corresponding
numbers.
AS102L -W 2016 SAMPLE
Do not output any warning messages.
AS102L -Wall SAMPLE
Preprocessor options
I path_name
D identiÞer
SpeciÞes the path name of the directory that contains Þles speciÞed by include.
AS102L -I A:\USER\DEFS SAMPLE
SpeciÞes an identiÞer to be used by ifdef during conditional assembly.
AS102L -D VERSION SAMPLE
Program generation options
g
r
Od
Ot
Output debug information to the relocatable object Þle.
AS102L -g SAMPLE
Output a relocatable object Þle even if errors are detected in the source Þle.
AS102L -r SAMPLE
Turn off optimization.
AS102L -Od SAMPLE
Turn on optimization.
AS102L -Ot SAMPLE
Other
h
Output help information about assembler options to the screen.
AS102L -h
List Of Command Options
373
Chapter 13 Appendix
17.2.2 List Of Linker Command Options
Linker command general format
Below is the general format of the command to use when starting the linker.
LD102L [options] (filename)...
Contents of brackets [ ] may be omitted.
Ellipses (...) indicate item may be repeated.
Output Þle options
o Þlename
m
Xm
Specify the path name and Þle name of the executable format Þle to be output.
LD102L -o B:\USER\OBJ\MAIN PROG1 PROG2
Output a map Þle.
LD102L -m PROG1 PROG2
Output a extended format map Þle.
LD102L -Xm PROG1
Error message options
j
e
W number
Wall
374
List Of Command Options
Output error and warning messages in Japanese.
LD102L -j PROG1 PROG2
Output error and warning messages in English.
LD102L -e PROG1 PROG2
Do not output warning messages of the speciÞed number. Refer to
chapter 10, "Error Messages", for warning messages and their corresponding
numbers.
LD102L -W100 PROG1 PROG2
Do not output any warning messages.
LD102L -Wall PROG1 PROG2
Chapter 13 Appendix
Program generation options
g
Tsection_name[,section_n
ame]=start address [,end
address]
T@section_attribute=addr
ess [,address]
r
En
Output debug information to the executable format Þle.
LD102L -g PROG1 PROG2
Specify a section start address and a section eend address.
LD102L -T_CODE=80000-T_SRC=80300 PROG1 PROG2
SpeciÞes the start and end addresses of a section attribute.
LD102L -T@CODE=80000 PROG1
Output an executable format Þle even if errors are detected.
LD102L -r PROG1
Do not output symbol table within the executable format Þle.
LD102L -En PROG1 PROG2
Library Þle options
l library_Þlename
L path_name
Specify a library Þle.
LD102L -lB:\SAMPLE.LIB
Specify a path name for library Þles.
LD -LB:\LIB -lSAMPLE.LIB PROG1
Other
@Þlename
h
Specify a parameter Þle.
LD102L @PFILE
Output help information to the screen.
LD102L -h
List Of Command Options
375
Chapter 13 Appendix
17.3 List Of Assembler Directives
This section provides a list of assembler directives.
Directives for program contro
Syntax
symbol
instruction
Function & Notes
operand
align
expression
[name]
[name]
end
org
expression
[name]
section
[deÞnition1[,deÞnition2[,expression]]]
opt
on|off
Adjusts the location counter to be a
multiple of the value indicated by
expression. The expression must be
a power of 2 in the range 1 to 215.
Indicates the end of the program.
Changes the program address to the
value speciÞed by expression.
expression = label_name + constant
ets the start of a section. deÞnition1:
section attribute
(CODE | DATA)
deÞnition2: link type
(PUBLIC | PRIVATE)
expression: location counter
boundary value (power of 2).
Enables/disables optimization.
Directives for symbols
376
Syntax
operand
symbol
instruction
name
equ
operand
global
name(, name)...
List Of Assembler Directives
Function & Notes
DeÞnes a name as the value of the
expression coded in the operand.
Declares global declarations and
global references
Chapter 13 Appendix
Directives for data area allocation
symbol
instruction
[name]
[name]
[name]
[name]
dc
dw
dd
ds
Syntax
operand
constant | expression(, constant | expression)..
expression (, expression)...
expression (,expression)..
expression1[, expression2[, expression3]]
Function & Notes
Allocates 8-bit data areas
Allocates 16-bit data areas
Allocates 32-bit data areas.
Allocates the number of bytes
speciÞed by expression1 to a
data area.
If expression2 (initial value) is
speciÞed, then the data area
will be Þlled with that initial
value.
If expression3 (repeat count)
is speciÞed, then this operation
will be repeated for the
speciÞed number of times.
List Of Assembler Directives
377
Chapter 13 Appendix
Directives for list control
symbol
instruction
[name]
tit
listoff
[name]
liston
[name]
xlistoff
[name]
xliston
Syntax
operand
[ÒstringÓ]
Function & Notes
SpeciÞes the header for the list Þle.
Suppresses list output from the next line
after this directive.
Resumes list output from the line of this
directive.
Suppresses list output from the line of this
directive.
Resumes list output from the next line
after this directive.
Other directives
symbol
378
Syntax
operand
instruction
notation
format
radix
expression
List Of Assembler Directives
Function & Notes
Selects the coding format of numbers.
format(CLANG | INTEL | PANA)
CLANG: Extended C language format
(default
INTEL: Intel format
PANA: Matsushita format
SpeciÞes the radix to be used by default.
The result of expression must be either 2,
8, 10, or 16. If the default is 10 and if
extended C language format has been
selected, then the radix will always be 10
regardless of the speciÞcation.
Chapter 13 Appendix
17.4 List Of Assembler Control Statements
This section provides a list of assembler control statements.
Syntax
#include
#deÞne
ÒÞle_nameÓ
identiÞer [replacement_string]
#undef
identiÞer
#ifdef
identiÞer
block1
[#else
block2]
#ifndef
#endif
identiÞer
block1
[#else
block2]
#endif
#if
expression
block1
[#else
#ifn
block2]
#endif
expression
block1
[#else
Function & Notes
Reads in the source Þle speciÞed by Þle_name.
Replaces the identiÞer with the
replacement_string.
Purges the identiÞer previously deÞned by
#deÞne.
Assembles block1 if the identiÞer was deÞned
before the #ifdef statement.
Assembles block2 if it was not deÞned (nothing
will be assembled if there is no #else).
Assembles block1 if the identiÞer was deÞned
before the #ifdef statement.
Assembles block2 if it was not deÞned (nothing
will be assembled if there is no #else).
Assembles block1 if the identiÞer was not
deÞned before the #ifndef statement.
Assembles block2 if it was deÞned (nothing will
be assembled if there is no #else).
Assembles block1 if the expression is not 0.
Assembles block2 if it is 0 (nothing will be
assembled if there is no #else)
block2]
#endif
#ifeq
parameter1, parameter2
block1
[#else
block2]
#endif
#ifneq
parameter1, parameter2
block1
[#else
block2]
#endif
Assembles block1 if parameter1 and parameter2
are equal. Assembles block2 if
they are not equal (nothing will be assembled if
there is no #else). At least one or the other of
parameter1 and parameter2 must be a dummy
parameter within a macro deÞnition. #ifeq can
only be used within macro deÞnitions.
Assembles block1 if parameter1 and parameter2
are not equal.
Assembles block2 if they are equal (nothing will
be assembled if there is no #else). At least one or
the other of parameter1 and parameter2 must be a
dummy parameter within a macro deÞnition.
#ifeq can only be used within macro deÞnitions.
List Of Assembler Control Statements
379
Chapter 13 Appendix
Syntax
#ißt
expression
block
[#else
#iße
block2]
#endif
expression
block1
[#else
#ifgt
block2]
#endif
expression
block1
[#else
#ifge
block2]
#endif
expression
block1
[#else
#ifb
block2]
#endif
dummy_parameter
block1
[#else
#ofnb
block2]
#endif
dummy_parameter
block1
[#else
block2]
#endif
380
List Of Assembler Control Statements
Function & Notes
Assembles block1 if the expression is negative.
Assembles block2 if it is not negative (nothing
will be assembled if there is no #else).
Assembles block1 if the expression is zero or
negative.
Assembles block2 if it is positive (nothing will be
assembled if there is no #else).
Assembles block1 if the expression is positive.
Assembles block2 if it is not positive (nothing
will be assembled if there is no #else).
Assembles block1 if the expression is zero or
positive.
Assembles block2 if it is negative (nothing will
be assembled if there is no #else)
Assembles block1 if the dummy_parameter is a
null character.
Assembles block2 if it is not (nothing will be
assembled if there is no #else). #ifb can only be
used within macro deÞnitions.
Assembles block1 if the dummy_parameter is
not a null character.
Assembles block2 if it is (nothing will be
assembled if there is no #else). #ifnb can only be
used within macro deÞnitions.
Chapter 13 Appendix
17.5 Program Example
This section provides an example of the use of the cross-assembler.
This example utilizes the following programming techniques.
Modular assembly
The program is divided into two files: MAIN.ASM and SUB.ASM. The program SUB is used from the
program MAIN, so the start of each program is declared as global.
File include
The constants used by both MAIN.ASM and SUB.ASM are collected in one file with the name
EQUTBL.H. This file is read in at the start of the MAIN.ASM and SUB.ASM programs by specifying
an #include directive.
Macro definitions
Sequences of instructions used repeated in the programs are defined as macros.
Iterated macros
The irp directive is used to define constants.
Use of #ifdef assembler control statement
NOTE:
This example is provided only to show the coding and program structure of
assembly programs. It is not guaranteed to operate in actual use.
Program Example 381
Chapter 13 Appendix
17.5.1 Source File
This section shows the contents of the source file.
EQUTBL.H file
**************
*************** *************** **************
MN10200
assember
sample
program
*************** *************** *************** **************
Special
Register MAP
for
MN10200
*************** **************
*************
***************
cpum
equ
0xfc00
mcr
equ
0fc02
iagr
equ
0xfc0e
icr1
equ
0xfc42
irc2
equ
0xfc44
icr4
equ
0xfc48
icr8
equ
0xfc50
**************
*************** *************** ******************
Communication
Terminal:
Equation
*************** *************** *************** *****************
port table
382
*************** *************** *************
*****************
port_tx
equ
0xfe00
;TX
port_rx
equ
0xfe01
;RX
port_cmd
equ
0xfe02
;Command (OUT)
port_sts
equ
0xfe02
;Status(IN)
port_dip_sw
equ
0xfe08
;DIP Switch
port_speed
equ
0xfe09
;Baud Rate Generator(BRG)
port_cyc_h
equ
0xfe10
;Cyclic LED
port_cyc_l
equ
0xfe11
port_alarm
equ
0xfe12
;Alarm LED
port_lcd
equ
0xfe20
;LCD
Program Example
Chapter 13 Appendix
**************
*************** *************** **************
Command/
Status
Definition
*************** *************** *************** **************
Special
for
MN10200
*************** **************
Register MAP
*************
***************
c_init
equ
0x00
;Initial value
c_reset
equ
0x40
;Hard reset
c_err_rest
equ
0x10
;RX Error reset
c_cmd_inst
equ
0x7a
;Command instruction
c_tx_rdy
equ
0x01
;TX ready
c_rx_rdy
equ
0x02
;Rx ready
c_line_con
equ
0x80
;Line connected
c_err_bit
equ
0x28
;RX error bits
*************
*************
**************
******************
Speed
Definition
**************
**************
*************** *********************
s_1200
equ
0x80
s_2400
equ
0x40
s_4800
equ
0x20
s_9600
equ
0x10
brg_1200
equ
0x80
brg_2400
equ
0x40
brg_4800
equ
0x20
;Dip switch image
;BRG image
brg_9600
equ
0x10
**************
*************
**************
********************
**************
**************
*******************
buffer_size
equ
16
**************
*************** **************
System
define
**************
**************
*************** *******************
MCR_WAIT
equ
0x0101
CPU_MODE
equ
0x0000
STACKTOP
equ
0xf400
PSW_OFF
equ
0x0000
PSW_SET
equ
0x0f00
Buffer Size
**************
*******************
Program Example 383
Chapter 13 Appendix
MAIN.ASM file
*************
*************
*************
MN102L00
assembler
sample
*************** *************** **************
Communication
Terminal:
**************
*************** **************
#include
Òequtbl.hÓ
if_clear
macro
icr_reg
mov
icr_reg, a0
mov
(a0), d0
or
0xff0f, d0
mov
d0, (a0)
********************
program
*****************
Main
******************
endm
_CODE
section
CODE, PUBLIC,
2
_DATA
section
DATA, PUBLIC,
2
_CODE
section
CODE, PUBLIC,
2
global
rx_proc,
tx_proc, cyc_proc
global
time_filler
*************
*************** **************
start up
routine
**************
*************** **************
********************
********************
_start
jmp
_main
nop
;*---start
interrupt
routine (64KB
org
_start+0x0008
model)---*
add
-14, A3
mov
D0, (12, A3)
;D0 Register PUSH
mov
D1, (10, A3)
;D1 Register PUSH
mov
D2, (8, A3)
;D2 Register PUSH
mov
D3, (6, A3)
;D1 Register PUSH
mov
A0, (4, A3)
;A0 Register PUSH
mov
A1, (2, A3)
; A1 Register PUSH
mov
A2, (A3)
; A2 Register PUSH
mov
(iagr), D0
and
D0, D0
_irg
384
Program Example
Chapter 13 Appendix
mov
D0, A0
add
_irg_vec_tbl, A0
mov
(0, A0, D0)
mov
D0, A0
nop
;*---interrupt
return
operation---*
mov
(12, A3), D0
;D0 Register POP
mov
(10, A3), D1
;D1 Register POP
mov
(8, A3), D2
;D2 Register POP
mov
(6, A3), D3
;D3, Register POP
mov
(4, A3), A0
;A0 Register POP
mov
(2, A3), A1
;A1 Register POP
mov
(A3), A2
;A1 Register POP
add
14, A3
_irq_end
rti
;*---interrupt
vector
table---*
dd
_irq_end
;NMI, WDT irq
dd
_ad_irq
;A/D irq
dd
_asci_irq
;SIF irq
dd
_irq_end
dd
_timer_irq
dd
_irq_end
dd
_irq_end
dd
_irq_end
_irq_vec_tbl
;*---program
;Timer irq
dd
_ext_irq
initialize
routine---*
; External irq
mov
MCR_WAIT, D0
mov
D0, (mcr)
;(Non wait cycle)
mov
CPU_MODE,D0
;clear WDT irq
mov
D0, (cpum)
;(disable WDT)
mov
STACKTOP, A3
Interrupt
Disable Flag
mov
PSW_OFF, D0
mov
D0, PSW
jmp
_main
bra
_loop1
interrupt
routine---*
_main
;*---set
;set External Bus cycle
---*
_loop
*---program
Program Example 385
Chapter 13 Appendix
*---A/D
interrupt
operation---*
if_clear
icr
_ad_irq
*---SIF
jmp
-irq
interrupt
operation---*
if_clear
icr2
jmp
-irq
-end
_asci_irq:
-end
*--TM interrupt operation---*
_timer_irq:
*---EXIRQ
if_clear
icr4
sub
d0, d0
mov
d0, (time_flg)
jmp
-irq
interrupt
operation---*
if_clear
icr8
imp
-irq
-end
_ext_irq:
386
Program Example
-end
Chapter 13 Appendix
**************
*************** *************
**********************
main
routine
**************
**************
*************** **********************
jsr
init_irq
; initialize IRQ
jsr
clear_memory
;clear memory
jsr
init_speed
;initialize BRG
jsr
init_trx
;initialize TRX
jsr
rx_proc
;Rx process
cmp
1, D0
bne
main_skip
jsr
tx_proc
jsr
rx_proc
cmp
1, D0
bne
main_skip
jsr
tx_proc
jsr
cyc_proc
;Cyclic process
bra
main_loop
;goto main loop
_main
main_loop
;if not received, skip Tx process
main_loop
;RX process
;if not received, skip Tx process
main_skip
*************** **************
*************** ********************
initialize IRQ
*************
*************** *************** *******************
init_irq
mov
0x0100, d0
mov
icr1, a0
mov
d0, (a0)
mov
0x0200, d0
mov
icr2, a0
mov
d0, (a0)
mov
0x0400, d0
mov
icr4, a0
mov
d0, (a0)
mov
0x0100, d0
mov
icr8, a0
mov
d0, (a0)
Program Example 387
Chapter 13 Appendix
mov
PSW_SET, D0
mov
D0, PSW
rts
388
Chapter 13 Appendix
*************
**************
**************
********************
clear
memory
*************
**************
*************
******************
mov
tx_buffer, A0
;set initial value
mov
rx_buffer, A1
mov
buffer_size, D0
mov
buffer_size, D1
mov
0, D2
movb
D2, (A0)
sub
1, D0
beq
memory_loop1
add
1, A0
bra
memory_loop0
movb
D2, (A1)
sub
1, D1
beq
memory_exit
add
1, A1
bra
memory_loop1
clear_memory
memory_loop0
;clear end
memory_loop1
;clear end
memory_exit
rts
**************
*************** *************
initialize Baud rate
**************
*********************
Generator
*************** ************
********************
init_speed
mov
port_dip_sw, A0
movbu
(A0), D0
mov
brg_1200, d1
btst
s_1200, D0
beq
speed_exit
mov
brg_2400, D1
btst
s_2400, D0
beg
speed_exit
;get Dip-sw (8 bits)
;1200bps
;2400bps
Program Example 389
Chapter 13 Appendix
mov
brg_4800, D1
btst
s_4800, D1
beq
speed_exit
mov
brg_9600, D1
btst
s_9600, D0
beq
speed_exit
;9600bps
mov
brg_1200, D1
;default...1200bps
mov
port_speed, A0
;set to BRG
movb
D1, (A0)
;4800bps
speed_exit
rts
390
Program Example
Chapter 13 Appendix
**************
**************
*************** ************************
**************
*************
mov
c_init, D0
mov
port_cmp, A0
movb
D0, (A0)
jsr
time_filler
movb
D0, (A0)
jsr
time_filler
movb
D0, (A0)
jsr
time_filler
mov
c_reset, D0
movb
D0, (A0)
jsr
time_filler
mov
c_cmd_inst, D0
movb
D0, (A0)
jsr
time_filler
mov
c_cmd_inst, D0
movb
D0, (A0)
jsr
time_filler
mov
port_sts, A0
movbu
(A0), D0
btst
c_line_con, D0
bne
trx_loop
;if line is not connected
section
DATA, PUBLIC,
2
global
time_flg,
tx_buffer, rx_buffer
initialize TRX
**************
**********************
init_trx
;set initial value x3
;set reset command
;set command inst.
;set mode inst.
trx_loop
rts
_DATA
end
Program Example 391
Chapter 13 Appendix
SUB.ASM file
************
**************
**************
**********************
MN10200
assembler
sample
program
************
**************
*************
********************
Communication
Terminal:
SUB
*************
*************** **************
*******************
#########
##########
###########
#############
Example of
include usage
#########
##########
##########
#############
#include
Òequtbl.hÓ
#define
HI_SPEED
_CODE
section
CODE, PUBLIC,
2
global
rx_proc,
tx_proc, cyc_proc
global
time_filler
#########
##########
##########
Example of
macro
declaration
#########
#########
#########
output
macro
mov
#############
##############
A0, (save_A0)
mov
port_tx, A0
movb
D0, (A0)
mov
(save_a0), A0
endm
time_fill
macro
count
local
fill_loop
mov
D0, (save_D0)
mov
count, D0
;
fill_loop
nop
nop
nop
sub
1, D0
bne
fill_loop
mov
(save_d0), D0
;
rts
endm
*************** **************
392
Program Example
*************** ***********************
Chapter 13 Appendix
Rx process
************
*************
**************
*********************
mov
0, D0
;set ÔNot ReceivedÕ
mov
port_sts, A0
movbu
(A0), D1
btst
c_rx_rdy, D1
beq
rx_exit
and
c_err_bit, D1
bne
rx_error
mov
port_rx, A0
movbu
(A0), D1
mov
rx_buffer, A0
mov
(rx_index), D0
rx_proc
;not received
;Rx error happended
;Rx data
add
D0, A0
movb
D1, (A0)
and
buffer_size-1,
D0
mov
D0, (rx_index)
mov
1, D0
bra
rx_exit
;Normal receiving
mov
port_alarm, A0
;Alarm LED ON
mov
1,D1
movb
D1, (A0)
;set into buffer
;next index
rx_error
rx_exit
rts
************
*************** ************
**********************
*************
*********************
Tx process
*************
*************
tx_proc
mov
0, D0
movb
D0, (cyc_lcd)
mov
(tx_index), D0
mov
(rx_index), D1
cmp
D0, D1
;clear lcd data
Program Example 393
Chapter 13 Appendix
beq
tx_exit
mov
rx_buffer, A1
mov
(rx_index), D1
add
D1, A1
movbu
(A1), D0
;get data in D0
movb
D0, (cyc_lcd)
;set lcd data
mov
tx_buffer, A1
mov
(tx_index), D1
add
D1, A1
movb
D0, (A1)
and
buffer_size-a,
D1
;save into buffer
mov
D1, (tx_index)
;next index
##########
###########
#########
###############
Example of
macro
expansion
##########
##########
##########
##############
output
time_fill
10
tx_exit
rts
*************
*************
*************
*******************
**************
*************
******************
cyclic process
**************
cyc_proc
##########
###########
##########
##############
Example of
assembler
control
statements
#########
##########
#########
#############
#ifdef
HI_SPEED
mov
500, D0
mov
port_cyc_h, A0
mov
1000, D0
mov
port_cyc_1, A0
mov
(cyc_count), D1
add
1, D1
cmp
D0, D1
bne
cyc_skip
movbu
(cyc_data), D0
#else
#endif
394
Program Example
Chapter 13 Appendix
xor
1, D0
movb
D0, (cyc_data)
mov
0, D1
mov
D0, (A0)
mov
D1, (cyc_count)
movbu
(cyc_lcd), D0
and
0x007f, D0
cmp
0x20, D0
bcc
cyc_exit
mov
port_lcd, A0
and
0x00ff, D0
mov
D0, D1
mov
D0, D2
lsr
D1
lsr
D1
lsr
D1
lsr
D1
mov
erro_disp, A1
add
D1, A1
movbu
(A1), D0
movb
D0, (A0)
sub
D1, A1
time_fill
10
and
0x000f, D2
add
D2, A1
movbu
(A1), D0
movb
D0, (A0)
;change ON/OFF
cyc_skip
;normal character
;shift right 4 bits
;upper
;lower
cyc_exit
rts
*************
**************
*************** ************************
**************
*************
time_fill
10
time filler
*************
************************
time_filler
rts
##########
##########
##########
Example of
data
definition
##########
#########
##########
###############
##############
Program Example 395
Chapter 13 Appendix
_DATA
section
DATA, PUBlIC,
2
global
time_flg,
tx_buffer, rx_buffer
time_flg
ds
1
tx_buffer
ds
1, 0,
buffer_size
rx_buffer
ds
1, 0,
buffer_size
##########
#########
#########
###############
Example of
iterated macro
use
#########
#########
#########
##############
irp
const,
Ò0123456789ABCDEFÓ
dc
const
erro_disp
endm
_DATA
section
DATA, PUBLIC,
tx_index
ds
2
rx_index
ds
2
save_A0
ds
2
save_D0
ds
2
cyc_count
ds
2
cyc_data
ds
1
cyc_lcd
ds
1
end
396
Program Example
2
Chapter 13 Appendix
17.5.2 Batch File
The batch file used for assembly and linking is shown below.
AS102L00
MAIN
AS102L00
SUB
LD102L00
-m -o
SAMPLE.EX
AS102L00
-a
SAMPLE MAIN
AS102L00
-a
SAMPLE SUB
-T_CODE=800000
-TDATA=F000 MAIN SUB
First, the batch file assembles the two files.
After assembly, it links the files, specifying the start addresses of the sections defined in the two files
(_CODE and _DATA) with the T option. It also specifies the -m option to generate a map
(SAMPLE.MAP) file.
Finally, the files are assembled again using the map file to create final list files.
Program Example 397
Chapter 13 Appendix
17.5.3 Execution Example
The final list files are shown below.
Final list file MAIN.LST
***
Loc
mn102L00
object
=0000FC00
=0000FC02
=0000FC0E
=0000FC42
=0000FC44
=0000FC48
=0000FC50
398
Program Example
MAIN.LST
Cross
Line Source
1
********
2
3
MN10200
4
5
********
6
7
********
8
COMMUNICAT
ION
9
**********
10
11
#include
.1
********
.2
.3
MN10200
.4
.5
*********
.6
.7
*********
.8
Special
.9
*********
.10
.11 cpum
.12 mcr
.13 iagr
.14
.15 icr1
.16 icr2
.17 icr4
.18 icr8
.19
.20 ********
.21
.22 ********
.23
.24 ********
.25
.26 port
Page1
Assembler***
**************
***************
assembler
sample
**************
*************
*************
TERMINAL:
************
MAIN
***************
***************
Òequtbl.hÓ
**************
***************
assembler
sample
program
program
**************** *************
***************
Register MAP
***************
*************
for MN10200
**************
equ
equ
equ
0xfc00
0xfc02
0xfc0e
equ
equ
equ
equ
0xfc42
0xfc44
0xfc48
0xfc50
*************
COMMUNICATION
*************
****************
TERMINAL:
EQUATION
***************
**************
***************
table
Chapter 13 Appendix
=0000FE00
=0000FE01
=0000FE02
=0000FE02
=0000FE08
.27
.28
.29
.30
.31
.32
.33
.34
.35
=0000FE09 .36
*********
**************
***************
port_tx
port_rx
port_cmd
port_sts
equ
equ
equ
equ
0xfe00
0xfe01
0xfe02
0xfe02
;TX
;RX
;Command (OUT)
;Status (IN)
port_dip_s equ
w
port_speed equ
0xfe08
;Dip Switch
0xfe09
;Baud Rate
Generator(BRG)
port_cyc_h equ
0xfe10
;Cyclic LED
port_cyc_
equ
0xfe11
port_alarm equ
0xfe12
;Alarm LED
port_lcd
equ
0xfe20
;LCD
**************
Page 2
Assembler***
***************
Command/Status
Definition
.37
=0000FE10
.38
=0000FE11 .39
.40
=0000FE12 .41
.42
=0000FE20 .43
.44
.45
***
Loc
mn102L00
Object
=00000000
=00000040
=00000010
=0000007A
*******
MAIN.LST
Cross
Line Source
.46 *
.47 *
.48 *
.49 **********
.50
.51 c_init
.52 c_reset
.53 c_err_rest
.54 c_cmd_ins
=00000037 .55
.56
=00000001 .57
=00000002 .58
.59
=00000080 .60
.61
=00000028 .62
.64
.65
.66
.67
.68
.69
*
*
*
**************** ****************
equ
equ
equ
equ
0x00
0x40
0x10
0x7a
;Initial value
;Hard reset
c_mod_inst equ
0x37
c_tx_rdy
c_rx_rdy
equ
equ
0x01
0x02
;Tx ready
;Rx ready
c_line_con equ
0x80
;Line connected
c_err_bit
********
equ
***************
0x28
**************
;Rx error bits
Speed
Definition
********
*************
;Command
instruction
;Mode
instruction
****************
Program Example 399
Chapter 13 Appendix
=00000080 .70
s_1200
equ
0x80
=00000040 .71
=00000020 .72
=00000010 .73
.74
=00000080 .75
=00000040 .76
=00000020 .77
=00000010 .78
.79
.80
.81
.82
.83
.84
.85
=00000010 .86
s_2400
s_4800
s_9600
equ
equ
equ
0x80
0x80
0x80
s_1200
s_2400
s_4800
s_9600
equ
equ
equ
equ
0x80
0x80
0x80
0x80
*********
***************
*************
Buffer
Size
********
*************
=00000101
=00000000
=0000F400
=00000000
=00000F00
***
Loc
400
mn102L00
Object
Program Example
.87
.88
.89
.90
.91
.92
.93
.94
.95
.96
.97
.98
.99
12
13
;DIP swtich
image
;BRG image
***************
buffer_siz equ
e
16
*******
**************
*************
System
define
********
***************
****************
MCR_WAIT
CPU_MODE
STACKTOP
PSW_OFF
PSW_SET
equ
equ
equ
equ
equ
0x0101
0x0000
0xf400
0x0000
0x0f00
macro
Page3
Assembler***
icr_reg
mov
mov
or
mov
endm
icr_reg,a0
(a0),d0
0xff0f, d0
d0, (a0)
section
section
CODE, PUBLIC,
DATA, PUBLIC,
2
2
section
CODE, PUBLIC,
2
global
global
rx_proc,
time_filler
Tx_proc,cyc_proc
if_clear
MAIN.LST
Cross
Line Source
14
15
16
17
18
19
20
_CODE
21
_DATA
22
23
_CODE
24
25
26
Chapter 13 Appendix
27
28
29
30
31
32
33
34
080
F4
080
080
080
080
080
080
080
080
080
080
F47
080
080
080
080
080
F46
000
000
000
E0610000
005
F6
0008
D3f0
000A
4C0E
000C
4D0C
00E
4E0A
010
4F08
012
5C06
014
5D04
016
5E02
018
4310008
01D
5C00
01F
C80EFC
022
F5003E
025
F230
027
4420008
02E
F000
030
F6
*********
***************
start
up routine
*********
***************
****************
jmp
nop
_main
start interrupt
org
routine(64KB
_start+0x0008
41
add
-16, A3
42
mov
D0,(14, A3) ;D0
Register PUSH
43
mov
D1,(12, A3) ;D1
Register PUSH
44
mov
D2,(10, A3) ;D2
Register PUSH
45
46
mov
D3,(8, A3) ;D1
Register PUSH
47
mov
A0,(6, A3) ;A0
48
mov
A1,(4, A3) ;A1
Register PUSH
49
50
mov
!2, (2, A3) ;A2
Register PUSH
51
mov
_irq_end, A0
52
mov
A0, (A3)
53
mov
(iagr), D0
54
and
0x3e, D0
55
mov
D0, A0
56
add
_irq_vec_tbl, A0
58
jmp
(A0)
59
nop
35
36
37
38
39
40
***************
_start
;*---
model)---*
_irg
Register PUSH
Program Example 401
Chapter 13 Appendix
60
61
interrupt
return operation ---*
63
mov
(12, A3), D0 ;D0 Register POP
64
mov
(10, A3), D1
;D1
register POP
65
mov
(8,A3),D2
Register POP
66
mov
(6, A3), D3
;D3 Register POP
67
mov
(4, A3), A0
;A0 Register POP
68
mov
(2, A3), A1
;A1 Register POP
69
mov
Page 4
Assembler ***
(A3), A2
70
add
14, A3
71
72
73
rti
;*---
74
_irq_vec_
62
080
080
080
080
080
080
080
***
Loc
080
080
080
080
080
080
080
080
080
080
080
402
031
6C0C
033
6D0A
035
6E08
037
6F06
039
7C04
03B
7D02
03D
7E00
mn102L00
Object
03F
D30E
041
EB
042
31000800
046
7F000800
04A
89000800
04E
31000800
052
93000800
056
31000800
05A
31000800
05E
31000800
062
A3000800
Program Example
;*--_irq_end
MAIN.LST
Cross
Line Source
;D2
;A2
Register POP
interrupt
vector
tbl
table---*
75
dd
_irq_end
;NMI, WDT irg
76
dd
_ad_irq
;A/D irq
77
dd
_asci_irq
;SIF irq
78
dd
_irq_end
79
dd
_timer_irq
80
dd
_irq_end
81
dd
_irq_end
82
dd
_irq_end
83
84
85
86
dd
_ext_irq
;External irq
program
initialize
routine---*
;*---
;Timer irq
Chapter 13 Appendix
87
080
080
080
080
080
080
080
080
080
080
080
080
080
080
080
080
080
_main
066
F80101
88
mov
MCR_WAIT, D0
069
C002FC
89
mov
D0, (mcr)
;(Non wait
cycle)
90
mov
CPU_MODE,D0
;clear EDT irq
91
mov
D0, (cpum)
;(disable WDT)
92
93
94
mov
STACKTOP, A3
Interrupt
Disable
mov
PSW_OFF, D0
mov
D0, PSW
program
A/D interrupt
interrupt
operation
if_clear
icr1
105+
mov
icr1, a0
105+
mov
(a0), d0
105+
or
0xff0f, d0
105+
mov
d0, (a0)
06C
8000
06E
C000FC
071
DF00F4
074
8000
076
F3D0
07F
DC42FC
082
20
083
F7400FFF
087
00
088
FE
089
DC44FC
08C
20
08D
F74000FFF
091
00
092
FE
;*--- set
95
96
97
100
101
102
103
104
M105
;
setExternal Bus
cycle
Flag ---*
_loop1
*--*--_ad_irq
106
rts
107 *--SIF interrupt
108 _asci_irq:
M109
if_clear
routine---*
---*
operation ---*
icr2
109+
mov
icr2, a0
109+
mov
(a0), d0
109+
or
0xff0f, d0
109+
mov
d0,(a0)
110
rts
Program Example 403
Chapter 13 Appendix
080
080
080
080
***
Loc
080
080
F44
080
080
080
080
080
080
080
080
080
404
093
DC48FC
096
20
097
F74000FFF
09B
00
mn102L00
Object
09C
A0
09D
000F000
0A2
FE
0A3
DC50FC
0A6
20
0AC
FE
0AD
F4E124000
0
0B2
F4E141000
0
0B7
F4E163000
0
0BC
F4E187000
0C1
Program Example
111 *---TM
112 _timer
M113
interrupt
_irq:
if_clear
113+
mov
icr4, a0
113+
mov
(a0), d0
113+
or
0xff0f, d0
113+
mov
Page5
Assembler ***
d0, (a0)
114
sub
d0, d0
115
mov
d0, (time_flg)
116
117 *---EXIRQ
118 _ext_irq:
M119
rts
interrupt
operation ---*
if_clear
icr8
119
mov
icr8,
119+
mov
(a0), d0
120
121
122
123
124
125
126
127
rts
MAIN.LST
Cross
Line Source
operation ---*
icr4
a0
********
**************
main
routine
*******
_main
**************
***************
128
jsr
init_irq
;initialize IRQ
129
jsr
clear_memory
;clear memory
130
jsr
init_speed
;initialize BRG
131
132
133
jsr
init_trx
;initialize TRX
main__loop
****************
Chapter 13 Appendix
080
080
Tx
080
F4
080
F4
080
080
080
080
080
080
080
080
080
080
080
080
F4E1BC000 134
0
0C6
D801
135
0C8
E905
136
process
CA
E1E70000
0CF
E1430100
0D4
EAEB
0D6
F80001
0D9
DC42FC
0DC
00
0DD
F80002
0E0
00
0E4
F80004
0E7
DC48FC
0EA
00
0EB
F80001
0EE
DC50FC
0F1
00
jsr
rx_proc
cmp
1, D0
bne
main_skip
jsr
tx_proc
140
jsr
cyc_proc
;Cyclic process
141
142
143
144
145
146
147
148
bra
main_loop
;goto main loop
137
138
139
;RX process
;if not
received, skip
main_skip
********
**************** ***************
initialize IRQ
*********
init_irq
**************** ****************
149
mov
0x0100, d0
150
mov
icr1, a0
151
152
mov
d0, (a0)
153
mov
0x0200, d0
155
156
mov
d0, (a0)
157
mov
0x0400, d0
158
mov
icr4, a0
159
160
mov
d0, (a0)
161
mov
0x100, d0
162
mov
icr8, a0
163
164
mov
d0, (a0)
Program Example 405
Chapter 13 Appendix
080
***
Loc
080
080
mn102L00
Object
0F5
F3D0
0F7
FE
080
F47
0F8
401F000
080
F47
080
0FD
511F000
102
8010
104
8510
106
8A00
080
080
080
080
F71
080
080
080
080
080
F71
080
080
080
406
0F2
F8000F
108
02
109
C0100
10D
E804
10F
D001
111
EAF5
113
06
114
D0100
118
E804
11A
D101
11C
Program Example
165
mov
Page 6
Assembler
***
166
167
mov
D0, PSW
168
169
170
171
172
173
174
175
rts
MAIN.LST
Cross
Line Source
PSW_SET, D0
********
***************
clear
memory
********
Clear_
**************
memory
****************
176
mov
tx_buffer, A0
177
mov
rx_buffer, A1
178
mov
buffer_size, D0
179
mov
buffer_size, D1
180
181
182
mov
0, D2
memory_
***************
;set initial
value
loop0
183
mov
D2, (A0)
184
sub
1, D0
185
beq
memory_loop1
186
add
1, A0
187
188
bra
memory_loop1
memory_loop0
189
mov
D2, (A1)
190
sub
1, D1
191
beq
memory_exit
192
add
1, A1
;clear end
;clear end
Chapter 13 Appendix
EAF5
080
080
080
11E
FE
11F
DC08FE
122
30
193
194
195
196
197
198
199
200
201
202
203
bra
memory_
memory_loop1
exit
rts
********
***************
initialize Baud
rate
****************
Generator
********* ***************
init_speed
**************
204
mov
port_dip_sw, A0
205
movbu
(A0), D0
207
mov
brg_1200, D1
208
btst
s_1200, D1
209
210
beq
speed_exit
211
mov
brg_2400, D1
212
btst
s_2400, D0
213
214
beq
speed_exit
215
mov
brg_4800, D1
216
btst
s_4800, D0
217
218
beq
speed_exit
219
mov
brg_9600, D1
220
btst
s_9600, D0
221
beq
Page 7
Assembler***
speed_exit
;get Dip-sw (8bit)
206
080
080
080
080
080
080
080
080
080
080
080
080
***
Loc
123
F98000
126
F50480
129
F818
12B
8540
12D
F50440
130
F818
132
8520
134
F50420
137
E80A
139
8510
13B
F50410
013E
E803
MN102L00
Object
MAIN.LST
Cross
Line Source
222
;1200bps
;2400bps
;4800bps
;9600bps
Program Example 407
Chapter 13 Appendix
080
140
F9800
223
mov
brg_1200, D1
;default...1200b
ps
226
mov
port_speed, A0
;set to BRG
227
movb
D1, (A0)
228
229
230
231
232
233
234
235
rts
224
225
080
080
080
080
080
080
080
F4E
080
080
F4E
080
080
F4E
080
080
080
F4E
080
080
408
143
DC09FE
146
11
147
FE
speed_exit
********
**************** ****************
initialize TRX
***************
****************
236
mov
c_init, D0
237
238
mov
port_cmp, A0
239
movb
D0, (A0)
240
jsr
time_filler
241
movb
D0, (A0)
242
jsr
time_filler
243
movb
D0, (A0)
244
245
jsr
time_filler
246
mov
c_reset, D0
247
movb
D0, (A0)
248
249
jsr
time_filler
167
807A
250
mov
c_cmd_inst, D0
169
10
251
movb
D0, (A0)
148
8000
14A
DC02FE
14D
10
14E
1300100
153
10
154
12A0100
159
10
15A
1240100
15F
8040
161
10
162
11C0100
Program Example
*********
init_trx
;set initial
value x3
;set reset
command
;set command
inst.
Chapter 13 Appendix
080
F4E
16A
1140100
080
16F
8037
171
10
172
10C0100
080
080
F4E
080
080
080
080
080
ROM
No
No
177
DC02FE
17A
30
17B
F50480
17E
F9FA
180
FE
size is
erros
warnings
252
253
jsr
time_filler
254
mov
c_mod_inst, D0
255
movb
D0, (A0)
256
257
jsr
time_filler
258
259
260
mov
port_sts, A0
261
movbu
(A0), D0
262
btst
c_line_con, D0
263
bne
trx_loop
264
265
266
267
268
269
270
rts
in
in
;set mode inst
trx_loop
_DATA
524673
this
this
section
DATA, PUBLIC, 2
global
time_flg,tx_buf
;if line is not
connected
fer,rx_buffer
end
(Hex.00080181)
assembly
assembly
Program Example 409
Chapter 13 Appendix
***Symbol
00000000
00000101
00000000
00000F00
0000F400
00080000
0000F000
00080066
0008007F
00080089
000800A3
00080008
00080031
00080042
00080078
000800AD
0080000
00080093
00000080
00000040
00000020
00000010
00000010
0000007A
00000028
00000010
00000000
00000080
00000037
00000040
00000002
00000001
000800F8
0000FC00
00080217
0000FC0E
0000FC42
0000FC44
0000FC48
0000FC50
000800D6
0008011F
00080148
000800C1
000800CF
410
Program Example
Table
T
T
T
T
T
A
A
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
MAIN.LST
***
CPU_MODE
MCR_WAIT
PSW_OFF
PSW_SET
STACKTOP
_CODE
_DATA
_MAIN
_ad_irq
_asci_irq
_ext_irq
_irq
_irq_end
_irq_vec_tbl
_loop1
_main
_start
_timer_irq
brg_1200
brg_2400
brg_4800
brg_9600
buffer_size
c_cmd_inst
c_err_bit
c_err_rest
c_init
c_line_con
c_mod_inst
c_reset
c_rx_rdy
c_tx_rdy
clear_memory
cpum
cyc_proc
iagr
icr1
icr2
icr4
icr8
init_irq
init_speed
init_trx
main_loop
main_skip
Page8
Chapter 13 Appendix
0000FC02
0008011E
00080108
00080113
0000FE12
0000FE02
0000FE10
0000FE11
0000FE08
0000FE20
0000FE01
T
T
T
T
T
T
T
T
T
T
T
*** Symbol
0000FE09
0000FE02
0000FE00
0000F011
00080182
00000080
00000040
00000020
00000010
00080143
00080283
0000F000
0008017A
0000F001
000801B6
T
T
T
D
T
T
T
T
T
T
T
D
T
D
T
mcr
memory_exit
memory_loop0
memory_loop1
port_alarm
port_cmd
port_cyc_h
port_cyc_l
port_dip_sw
port_lcd
port_rx
MAIN.LST
Table ***
Page 9
port_speed
port_sts
port_tx
rx_buffer
rx_proc
s_1200
s_2400
s_4800
s_9600
speed_exit
time_filler
time_flg
trx_loop
tx_buffer
tx_proc
Program Example 411
Chapter 13 Appendix
Final list file SUB.LST
***
Loc
mn102L00
object
SUB.LST
Cross
Line Source
1
********
2
MN10200
3
4
5
********
6
7
8
9
10
11
12
13
=0000FC00
=0000FC02
=0000FC0E
=0000FC42
=0000FC44
=0000FC48
=0000FC50
412
Program Example
14
15
16
.1
.2
.3
.4
.5
.6
.7
.8
.9
.10
.11
.12
.13
.14
.15
.16
.17
.18
.19
.20
.21
.22
.23
.24
Page 1
Assembler
***
************* *************
assembler
sample program
************* **************
*
*********
************* *************
COMMUNICATION TERMIVAL: SUB
********** ************* *************
*
######
###########
###########
Example
of include
usage
######
#include
*********
##########
Òequtbl.hÓ
************
*************
MN10200
assembler
sample program
*********
************* **************
********
Special
********
************ *************
Register MAP for MN10200
************* *************
vpum
mcr
iagr
equ
equ
equ
0xfc00
0xfc02
0xfc0e
icr1
icr2
icr4
icr8
equ
equ
equ
equ
0xfc42
0xfc44
0xfc48
0xfc50
********
COMMUNI
*******
************* ************
CATION
TERMINAL:
************* ************
********
************
###########
************
EQUATION
Chapter 13 Appendix
=0000FE08
.25
.26
.27
.28
.29
.30
.31
.32
.33
.34
.35
=0000FE09
.36
=0000FE10
=0000FE11
.37
.38
.39
.40
=0000FE00
=0000FE01
=0000FE02
=0000FE02
***
Loc
Port
table
*********
************* ************
port_tx
port_rx
port_rx
port_sts
equ
equ
equ
equ
0xfe00
0xfe001
0xfe002
0xfe02
;TX
;RX
;Command(OUT)
;Status (IN)
port_dip_s equ
w
port_speed equ
0xfe08
;Dip Switch
0xfe09
;Baud Rate
Generator(BRG)
port_cyc_h equ
port_cyc_l equ
0xfe10
0xfe11
;Cyclic LED
=00000000
=00000040
=00000010
SUB.LST
Page 2
Cross
Assembler
Line Source
.41 port_alarm equ
.42
.43 port_lcd
equ
.44
.45 ********
************
.46
.47 Command/
Status
Definition
.48
.49 ********* *************
.50
.51 c_init
equ
.52 c_reset
equ
.53 c_err_rest equ
=0000007A
.54
c_cmd_inst equ
0x7a
=00000037
.55
c_mod_inst equ
0x37
c_tx_rdy
c_rx_rdy
equ
equ
0x01
0x02
;Tx ready
;Rx ready
c_line_con equ
0x80
;Line
connected
c_err_bit
equ
0x28
;Rx error bits
*********
************
************
mn102L00
Object
=0000FE12
=0000FE20
=00000001
=00000002
=00000080
=00000028
.56
.57
.58
.59
.60
.61
.62
.63
.64
***
0xfe12
;Alarm LED
0xfe20
;LCD
*************
*************
0x00
0x40
0x10
;Initial value
;Hard reset
;Rx Error
reset
;Command
instruction
;Mode
instruction
Program Example 413
Chapter 13 Appendix
=00000080
=00000040
=00000020
=00000010
=00000010
.71
.72
.73
.74
.75
.76
.77
.78
.79
.80
.81
.82
.83
.84
.85
.86
=00000101
=00000000
=0000F400
.87
.88
.89
.90
.91
.92
.93
.94
.95
.96
=00000080
=00000040
=00000020
=00000010
Loc
414
Program Example
.65
.66
.67
.68
.69
.70
Object
=00000000
=0000F00
speed
Definition
********
***********
************
s_1200
equ
0x80
s_2400
s_4800
s_9600
equ
equ
equ
0x40
0x20
0x10
brg_1200
brg_2400
brg_4800
brg_9600
equ
equ
equ
equ
0x80
0x40
0x20
0x10
********
***********
*************
Buffer
Size
********
************
;BRG image
*************
buffer_siz equ
e
16
*********
************
************
System
define
*********
************* *************
MCR_WAIT
CPU_MODE
STACKTOP
SUB.LST
Line Source
.97 PSW_OFF
.98 PSW_SET
.99
17
18
#define
19
20
_CODE
21
22
23
24
25
#######
26
27
Example
;Dip switch
image
equ
equ
equ
Page 3
0x0101
0x0000
0xf400
equ
equ
0x0000
0x0f00
HI_SPEED
section
CODE, PUBLIC,
2
global
global
rx_proc,tx_pro c, cyc_proc
time_filler
##########
##########
of macro
declaration
Chapter 13 Appendix
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
080182
8000
080184
080187
080188
08018B
DC02FE
31
F50502
E828
08018D
080190
F50028
E91D
60
61
62
63
64
65
66
67
DC01FE
68
69
080192
***mn
080195
080196
102L00
31
70
71
F47411F000 72
######
##########
###########
output
macro
mov
mov
movb
mov
A0,(save_A0)
port_tx, A0
D0, (A0)
(save_A0), A0
endm
time_fill
;
fill_loop
macro
local
mov
mov
nop
nop
nop
sub
bne
count
fill_loop
count, D0
1, D0
fill_loop
;
mov
rts
endm
(save_D0), D0
********
************
************
Rx
process
********
rx_proc
************
*************
mov
0,D0
mov
movbu
btst
beq
port_sts, A0
(A0), D1
c_rx_rdy, D1
rx_exit
and
bne
c_err_bit, D0
rx_error
mov
Page 4
Assembler
movbu
port_rx, A0
***
(A0), D1
mov
rx_buffer, A0
SUB.LST
Cross
;set ÔNot
ReceivedÕ
;not received
;Rx error
happened
;Rx data
Program Example 415
Chapter 13 Appendix
08019B
0801A0
0801A2
F4C034F000 73
F200
74
11
75
mov
add
movb
0801A3
0801A6
F5000F
76
F44034F000 77
78
8001
79
EA06
80
and
mov
(rx_index), D0
D0, A0
D1, (A0)
;set into
buffer
buffer_size_1
,D0
D0, (rx_indes) ;next index
mov
bra
1, D0
rx_exit
mov
mov
movb
port_alarm, A0 ;Alarm LED ON
1, D1
D1, (A0)
0801AB
0801AD
0801AF
0801B2
0801B4
0801B5
0801B6
0801B8
0801BD
0801C2
0801C7
0801C9
F4C032F000
F4C134F000
F391
E84B
0801CB
0801D0
0801D5
0801D7
F47511F000
F4C134F000
F205
34
98
99
100
101
102
103
104
105
106
107
rx_error
rx_exit
*********
rts
************* **************
Tx
process
********
tx_proc
************
*************
mov
movb
0, D0
D0, (cyc_lcd)
mov
mov
cmp
beq
(tx_index), D0
(rx_index), D1
D0, D1
tx_exit
mov
mov
add
movbu
rx_buffer, A1
(rx_index), D1
D1, A1
(A1), D0
;get data in
D0
movb
D0,(cyc_lcd)
mov
mov
mov
add
movb
tx_buffer, A1
tx_buffer, A1
(tx_index), D1
D1, A1
D0, (A1)
;save into
buffer
buffer_size1,D1
D1,(tx_index)
;next index
0801DD
0801E2
0801E2
0801E7
0801E9
108
F4443DF000 109
110
F47501F000 111
F4C132F000 112
F4C132F000 112
F205
113
14
114
0801EA
F5010F
115
and
0801ED
F44132F000 116
mov
0801D8
416
81
82
DC12FE
83
8501
84
11
85
86
87
FE
88
90
91
92
93
94
95
8000
96
F4443DF000 97
Program Example
;Normal
receiving
;clear lcd
data
;set lcd data
Chapter 13 Appendix
0801F2
***
Loc
0801F7
0801FA
0801FB
080205
080207
080208
080209
08020A
08020E
080210
080215
080216
080217
08021A
08021D
080222
080224
080226
117
118 ######
119
120 Example of
121
122 ######
123
M124
F45036F000 124+
SUB.LST
mn102L00
Cross
Object
Line Source
DC00FE
124+
10
124+
F4D036F000 124+
M125
800A
125+
F6
125+ ??00001
F6
125+
F6
125+
F71C0100
125+
E9F7
125+
F4C038F000 125+
FE
125+
126
127 tx_exit
FE
128
129
130 *******
131
132 cyclic
133
134 *******
135 cyc_proc
136
137 ######
138
139 Example of
140
141 ######
142
143 #ifdef
F8F401
144
DC10FE
145
149 #endif
F4C13AF000 150
D501
151
F391
152
E910
153
########
#########
macro
expansion
########
#########
output
mov
Page 5
Assembler
mov
movb
mov
time_fill
mov
nop
nop
nop
sub
bne
mov
rts
A0, (save_A0)
***
port_tx,A0
D0, (A0)
(save_Ao), A0
10
D0, (save_D0)
1,D0
??00001
(save_D0),D0
rts
***********
*************
process
**********
************
#########
#########
assembler
control
#########
##########
HI_SPEED
mov
mov
500,D0
port_cyc_h, A0
mov
add
cmp
bne
(cyc_count),D1
1,D1
D0, D1
cyc_skip
statements
Program Example 417
Chapter 13 Appendix
080228
08022D
080231
080236
080238
080239
08023E
080243
080246
080248
154
155
156
157
158
159
160
00
161
F4413AF000 162
163
F4C83DF000 164
F5007F
165
D820
166
E638
167
F4C83F000
F74C0100
F4443CF000
8500
movbu
xor
movb
mov
(cyc_data), D0
1,D0
D0,(cyc_data)
;change ON/OFF
0,D1
mov
mov
D0,(A0)
D1,(cyc_count)
movbu
and
cmp
bcc
(cyc_lcd), D0
0x007f, D0
0x20, D0
cyc_exit
SUB.LST
Cross
Line Source
Page 6
Assembler
***
169
170
171
172
173
174
mov
and
mov
mov
port_lcd, A0
0x00ff, D0
D0, D1
D0, D2
lsr
D1
lsr
lsr
lsr
mov
add
movbu
movb
D1, A1
D1
D1
D1
error_disp, A1
D1, A1
(A1), D0
D0, (A0)
;upper
time_fill
mov
mov
nop
nop
syb
bne
mov
rts
10
D0,(save_Do)
10,D0
and
add
movbu
movb
0x000f,D2
D2, A1
(A1), D0
D0, (A0)
cyc_skip
;normal
character
168
***
Loc
mn102L00
Object
08024A
08024D
080250
080251
DC20FE
F500FF
81
82
080252
F33D
080254
080256
080258
08025A
08025F
080261
080262
080263
F33D
F33D
F33D
F47521F000
F205
34
10
F215
080265
08026A
08026C
08026D
08026F
080273
080275
08027A
08027B
08027E
080280
080281
418
Program Example
175
176
177
178
179
180
181
182 sub
183
M184
F44038F000 184+
800A
184+
F6
184+ ??00002
F6
184+
F71C0100
184+
E9F7
184+
F4C038F000 184+
FE
184+
185
F5020F
186
F209
187
34
188
10
189
;shift right 4
bits
1,D0
??00002
(save_D0)
;lower
Chapter 13 Appendix
080282
080283
080288
08028A
08028B
08028C
08028D
080291
080293
080298
080299
***
Loc
00F000
00F001
00F002
00F003
00F004
00F005
00F006
00F007
00F008
00F009
00F00A
00F00B
00F00C
00F00D
FE
F44038F000
800A
F6
F6
F6
F71C0100
E9F7
F4C038F000
FE
FE
mn102L00
Object
00
00
00
00
00
00
00
00
00
00
00
00
00
00
190
191
192
193
194
195
196
197
198
199
cyc_exit
rts
*******
************* **************
time
filler
********* ************
time_fille
r
time_fill
mov
mov
??00003
nop
nop
nop
sub
bne
mov
rts
rts
M200
200+
200+
200+
200+
200+
200+
200+
200+
200+
201
202
203 #####
204
205 Example
206
SUB/LST
Cross
Line Source
207 ######
208 _DATA
209
210
211
212 time_flg
213 tx_buffer
213
213
213
213
213
213
213
213
213
213
213
213
*************
10
D0,(save_D0)
10,D0
1,D0
??00003
(save_D0),D0
#########
#########
of data
definition
Page 7
Assembler
***
#########
section
##########
DATA, PUBLIC,
global
time_flg,tx_bu ffer,rx_buffer
ds
ds
1
1, 0, buffer
2
_size
Program Example 419
Chapter 13 Appendix
00F00E
00F00F
00F010
00F011
00F012
00F013
00F014
00F015
00F016
00F017
00F018
00F019
00F01A
00F01B
00F01C
00F01D
00F01E
00F01F
00F020
30
31
32
33
34
35
36
213
213
213
214
214
214
214
214
214
214
214
214
214
214
214
214
214
214
214
215
216
217
218
219
220
221
222
M223
224
225
225+
225+
225+
225+
225+
225+
225+
***
Loc
mn102L00
Object
SUB.LST
Cross
Line Source
00F028
00F029
00F02A
00F02B
00F02C
00F02D
00F02E
00F02F
00F030
37
38
39
41
42
43
44
45
46
225+
225+
225+
225+
225+
225+
225+
225+
225+
00F021
00F022
00F023
00F024
00F025
00F026
00F027
420
Program Example
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
rx_buffer
ds
1,0,buffer_
######
#########
##########
Example
of iterated
macro use
######
#########
error_disp
irp
dc
endm
dc
Page 8
Assembler
size
##########
const,Ó0123456 789ABCDEFÓ
const
Ò0123456789AB
***
CDEFÓ
Chapter 13 Appendix
00F032
00F033
00F034
00F035
00
00
00
00
00F036
00F037
00F038
00F039
00
00
00
00
00F03A
00F03B
00F03C
00F03D
00
00
00
00
ROM
No
No
size is
errors in
warning
***
Symbol
00080207
0008026C
0008028A
00000000
00000101
00000000
00000F00
0000F400
00080182
0000F000
00000080
00000040
00000020
00000010
00000010
0000007A
00000028
00000010
00000000
00000080
00000037
00000040
00000002
T
T
T
T
T
T
T
T STACKTOP
A _CODE
A_DATA
T brg_1200
T brg_2400
T brg_4800
T brg_9600
T buffer_
T c_cmd_
T c_err
T c_err_
T c_init
T c_line_
T c_mod_i
T c_reset
T c_rx_
00000001 T c_tx_
0000FC00 T cpum
226
227
228
229
229
230
230
231
232
232
233
233
234
235
235
236
237
238
in
_DATA
section
DATA, PUBLiC,
tx_index
ds
2
rx_index
ds
2
save_A0
ds
2
save_D0
ds
2
cyc_count
ds
2
cyc_data
cyc_lcd
ds
1
ds
1
end
Hex.0008029A)
assembly
assembly
Page 9
***
524954(
this
this
SUB.LST
Table
2
??0001
??00002
??00003
CPU_MODE
MCR_WAIT
PSW_OFF
PSW_SET
size
inst
_bit
rest
con
nst
rdy
rdy
Program Example 421
Chapter 13 Appendix
422
0000F03A
0000F03C
00080282
0000F03D
00080217
00080238
0000F021
D cyc_coun t
D cyc_data
T cyc_exit
D cyc_lcd
T cyc_proc
Tcyc_skip
disp
D error_
0000FC0E
0000FC42
0000FC44
0000FC48
0000FC50
0000FC02
0000FE12
0000FE02
0000FE10
0000FE11
0000FE08
0000FE20
0000FE01
0000FE09
0000FE02
0000FE00
0000F011
000801AF
000801AF
000801B5
000F034
00080182
00000080
00000040
00000020
T iagr
T icr1
T icr2
T icr4
T icr8
T mcr
T port_al
T port_cmd
T port_cyc
T port_cyc
T port_dip
T port_lcd
T port_rx
T port_sp
T port_sts
T port_tx
rx_buffer
T rx_error
T rx_error
T rx_exit
D rx_index
T rx_proc
T s_1200
T s_2400
T s_4800
***
Symbol
00000010
0000F036
0000F038
00080283
0000F000
00080216
0000F032
000801B6
T
D
D
T
D
T
D
T
Program Example
arm
_h
_l
_sw
eed
s_9600
save_A0
save_D0
time_fil ler
tx_buff er
tx_exit
tx_index
tx_proc
SUB.LST
Table ***
Page 10
Index
Symbols
#define .................................................... 235
#else ........................................................241
#endif .......................................................239
#if ........................................................... 243
#ifb ..........................................................259
#ifdef .......................................................241
#ifeq ........................................................ 246
#ifge ........................................................255
#ifgt ......................................................... 255
#ifle .........................................................251
#iflt ..........................................................251
#ifn .......................................................... 243
#ifnb ........................................................259
#ifndef ......................................................241
#ifneq .......................................................246
#include ....................................................233
#undef ...................................................... 237
&............................................................. 272
.as102L00rc ...............................................358
.ld102L00r ................................................358
@filename ........................................154, 350
A
A .............................................................177
a ..............................................................344
a map_filename .......................................... 105
ABS ......................................................... 185
Absolute ................................................... 185
Addition ................................................... 180
Address Constants ......................................177
address specifiers........................................ 177
Addressing Modes ......................................299
AH .......................................................... 177
AL ........................................................... 177
align ........................................................ 201
Arithmetic Instructions ................................307
Arithmetic operators ................................... 180
as102L00 .................................................. 358
AS102L00.EXE ............................................. 4
assembler ......................................................4
Assembler configuration .............................. 363
Assembler Control Statements ......................164
Assembler Customization .................................9
Assembler Errors ........................................319
Assembler Options ........................................83
Assembling And Linking Multiple Sections ....... 35
assembly language ........................................ 19
AUTOEXEC.BAT ......................................... 8
B
back ......................................................... 294
Bit Manipulation Instructions ....................... 316
Blank Statements ....................................... 167
C
c ....................................................... 90, 345
Character Constants .................................... 175
CLANG ................................................... 206
Command Options ...................................... 344
Comment Field .......................................... 195
Comment Statements .................................. 166
compiler ..................................................... 19
Conditional Assembly ................................. 239
Conditional assembly .................................... 23
Conditional Assembly And Linking ................. 46
Conditional Branch Instructions .................... 313
CONFIG.SYS ............................................... 7
Configuration ............................................ 361
Configuration Options ............................... 9, 11
COPY .......................................................... 6
cross-reference ............................................ 90
Cross-Reference Table ................................ 339
current directory ........................................... 31
D
d ............................................................. 345
D identifier ............................................... 119
Data Move Instructions ............................... 304
dc ............................................................ 215
Debugging information output ........................ 11
DIR ............................................................. 4
Directive statements .................................... 163
Division ................................................... 180
ds ............................................................ 217
dummy_parameter ...................................... 259
dw ........................................................... 219
<Index
1>
E
H
e ............................................. 112, 143, 346
Ed ........................................................... 151
Editor ........................................................ 21
En ........................................................... 150
end .......................................................... 203
endm ....................................................... 267
engineering workstation .............................. 356
equ .......................................................... 222
Error Message Options ................................ 110
Error Messages .......................................... 319
Error messages .......................................... 352
EWS version ............................................. 356
EX fileoutput with errors ............................... 11
EXCV102.EXE ............................................. 4
exitm ....................................................... 278
Expansion ................................................. 269
EXT ........................................................ 185
Extended C language format ........................ 173
External ................................................... 185
external declaration ...................................... 30
external label ............................................. 225
external reference ....................................... 185
external references ....................................... 30
h ..............................................127, 155, 347
Hardware Environment ....................................3
Header files ................................................. 22
I
I ................................................................88
include files .................................................27
Installation ............................................6, 359
installer......................................................... 4
Intel format .......................................173, 206
internal EPROM ...........................................20
irp ............................................................288
irpc ..........................................................291
J
j
......................................................110, 142
L
F
f ............................................................. 346
Factory Setting .............................................. 9
Fatal Error Messages .......................... 323, 328
Fatal Errors ...... 318, 319, 322, 323, 326, 327,
................................................ 328, 351, 352
file conversion utility ...................................... 4
file extensions ............................................. 28
File Organization ................................... 4, 358
Files Used By Assembler And Linker .............. 27
Forced Termination Of Macro Expansion ....... 278
front ........................................................ 294
G
g ..................................................... 123,
global ......................................................
< Index 2 >
146
225
l library_filename .......................................152
L path_name .............................................. 153
l path_name ...............................................116
Label Field ................................................192
Lc ............................................................ 101
ld102L00 ..................................................358
LD102L00.EXE ............................................. 4
Li ..............................................................93
Library File Options ....................................152
Library Manager ......................................... 343
Line .........................................................334
Line number ...............................................335
Line number supplemental information ...........335
Linker configuration ....................................364
Linker Errors .............................................326
Linker options ............................................135
linker) ..........................................................4
listoff .......................................................204
liston ........................................................204
Lm .............................................................97
Loc ..........................................................334
local ......................................................... 275
Local Symbol Declaration ............................275
Location Counter ........................................ 178
Logical AND ............................................. 181
Logical left shift .........................................181
Logical operators ........................................181
Logical OR................................................ 181
logical right shift ........................................181
Ls ............................................................104
M
m .............................................................139
Machine language code ................................334
Machine language code supplemental information
............................................................... 335
Machine language instruction statements .........163
macro ....................................................... 267
Macro Calls ...............................................269
Macro Control Statements ............................ 165
Macro Operators ........................................272
macro_body .............................................. 267
macro_name ......................................267, 269
Macros .......................................................23
MAKE ....................................................... 21
MAP file output ........................................... 11
Matsushita format .......................................174
Memory ........................................................ 3
mnemonics ................................................196
Modulo operator (remainder) ........................180
MS-DOS .......................................................3
Multiplication ............................................ 180
N
notation .................................................... 206
Number formating ..........................................9
Numbers ...................................................172
Numeric Restrictions ...................................368
O
o file_name .................................................86
o filename .................................................137
Object ......................................................334
Od ...........................................................125
Operand Field ............................................194
Operation Field .......................................... 193
Operator Precedence ................................... 182
Operators .................................................. 180
opt ........................................................... 210
Optimization ........................................... 9, 22
optimization ................................................ 58
org .......................................................... 208
Ot............................................................ 126
Output debug information ............................ 362
Output EX file ........................................... 362
Output File Options .............................. 86, 137
P
p ............................................................. 347
page ......................................................... 212
PAINST.EXE ................................................ 4
PANA ...................................................... 206
Parameter file during linking .......................... 41
Permitted Characters ................................... 171
Preprocessor Options .................................. 116
Program Format ......................................... 161
Program Generation Options ................ 123, 146
Program locations after linking ....................... 45
Programming style ....................................... 22
Programming With Assembler ........................ 21
Purging Macro Definitions (purge) ................ 283
R
r .............................................. 124, 149, 348
radix ........................................................ 213
Reading List Files ...................................... 333
Reference List ........................................... 340
Register indirect addressing .......................... 299
Register relative indirect addressing ............... 299
REL......................................................... 185
Relative .................................................... 185
identifier ................................................... 235
rept .......................................................... 285
Reserved Words ......................................... 187
RF file output ................................................ 9
ROM conversion .......................................... 20
ROM writer ................................................ 20
root directory ................................................. 8
<Index
3>
S
X
section ..................................................... 199
self-reference ............................................ 178
settings ........................................................ 9
Shift operators ........................................... 181
SLI102L.EXE ............................................... 4
slib102l .................................................... 358
Source ..................................................... 334
Source code debugger ................................... 19
Starting Assembler ....................................... 81
String constants ......................................... 176
subdirectory .................................................. 8
Subroutine Call Instructions ......................... 312
Subtraction ............................................... 180
Symbol Table ............................................ 337
Symbol table output ...................................... 11
Symbol Type ............................................. 339
x ..............................................................349
Xl ............................................................109
xlistoff ...................................................... 228
xliston ...................................................... 228
Xm ..........................................................141
T
t .............................................................. 348
tit ............................................................ 227
Tsection_name .......................................... 147
TYPE ................................................ 32, 333
U
Unary minus ............................................. 180
Unary negation .......................................... 181
Unary plus ................................................ 180
Unconditional Branch Instructions ........... 61, 312
UND ....................................................... 185
Undefined ................................................. 185
undefined ................................................. 225
User Customization ........................................ 9
W
W number ........................................ 113, 144
Wall ................................................ 115, 145
Warning Messages ............................. 322, 327
Warning messages ...................................... 354
< Index 4 >
102L00Series
Cross-Assembler UserÕs Manual
October, 2000 7th Edition 1st Printing
Issued by Matsuhita Electric Industrial Co., Ltd
Ó Matsushita Electric Industrial Co., Ltd.
Semiconductor Company, Matsushita Electronics Corporation
Nagaokakyo, Kyoto, 617-8520 Japan
Tel: (075) 951-8151
http://www.mec.panasonic.co.jp
SALES OFFICES
■ U.S.A. SALES OFFICE
■ HONG KONG SALES OFFICE
Panasonic Industrial Company
[PIC]
● New Jersey Office:
2 Panasonic Way, Secaucus, New Jersey 07094
Tel: 201-392-6173
Fax: 201-392-4652
● Milpitas Office:
1600 McCandless Drive, Milpitas, California 95035
Tel: 408-945-5630
Fax: 408-946-9063
● Chicago Office:
1707 N. Randall Road, Elgin, Illinois 60123-7847
Tel: 847-468-5829
Fax: 847-468-5725
● Atlanta Office:
1225 Northbrook Parkway, Suite 1-151,
Suwanee, Georgia 30174
Tel: 770-338-6940
Fax: 770-338-6849
● San Diego Office:
9444 Balboa Avenue, Suite 185
San Diego, California 92123
Tel: 619-503-2940
Fax: 619-715-5545
■ CANADA SALES OFFICE
Panasonic Canada Inc.
[PCI]
5700 Ambler Drive Mississauga, Ontario, L4W 2T3
Tel: 905-624-5010
Fax: 905-624-9880
■ GERMANY SALES OFFICE
Panasonic Industrial Europe G.m.b.H.
● Munich Office:
Hans-Pinsel-Strasse 2 85540 Haar
Tel: 89-46159-156
Fax: 89-46159-195
[PIEG]
Panasonic Industrial Europe Ltd.
[PIEL]
● Electric component Group:
Willoughby Road, Bracknell, Berkshire RG12 8FP
Tel: 1344-85-3773
Fax: 1344-85-3853
■ FRANCE SALES OFFICE
[PIEG]
[PSSA]
■ MALAYSIA SALES OFFICE
Panasonic Industrial Company (Malaysia) Sdn. Bhd.
● Head Office:
[PICM]
Tingkat 16B Menara PKNS PJ No.17,Jalan Yong
Shook Lin 46050 Petaling Jaya Selangor Darul Ehsan
Malaysia
Tel: 03-7516606
Fax: 03-7516666
● Penang Office:
Suite 20-17,MWE PLAZA No.8,Lebuh Farquhar,10200
Penang Malaysia
Tel: 04-2625550
Fax: 04-2619989
● Johore Sales Office:
39-01 Jaran Sri Perkasa 2/1,Taman Tampoi
Utama,Tampoi 81200 Johor Bahru,Johor Malaysia
Tel: 07-241-3822
Fax: 07-241-3996
Panasonic SH Industrial Sales (Shenzhen)
Co., Ltd.
[PSI(SZ)]
7A-107, International Business & Exhibition Centre,
Futian Free Trade Zone, Shenzhen 518048
Tel: 755-359-8500
Fax: 755-359-8516
Panasonic Industrial (Shanghai) Co., Ltd.
[PICS]
1F, Block A, Development Mansion, 51 Ri Jing Street,
Wai Gao Qiao Free Trade Zone, Shanghai 200137
Tel: 21-5866-6114
Fax: 21-5866-8000
Panasonic Industrial (Thailand) Ltd.
[PICT]
252/133 Muang Thai-Phatra Complex Building,31st
Fl.Rachadaphisek Rd.,Huaykwang,Bangkok 10320
Tel: 02-6933407
Fax: 02-6933423
[PIEG]
■ TAIWAN SALES OFFICE
Panasonic Industrial Sales Taiwan Co.,Ltd.
[PIST]
● Head Office:
6th Floor, Tai Ping & First Building No.550. Sec.4,
Chung Hsiao E. Rd. Taipei 10516
Tel: 2-2757-1900
Fax: 2-2757-1906
● Kaohsiung Office:
6th Floor, Hsien 1st Road Kaohsiung
Tel: 7-223-5815
Fax: 7-224-8362
 Matsushita Electronics Corporation 2000
Panasonic Semiconductor of South Asia
300 Beach Road # 16-01
The Concourse Singapore 199555
Tel: 390-3688
Fax: 390-3689
■ THAILAND SALES OFFICE
■ ITALY SALES OFFICE
Panasonic Industrial Europe G.m.b.H.
● Milano Office:
Via Lucini N19, 20125 Milano
Tel: 2678-8266
Fax: 2668-8207
■ SINGAPORE SALES OFFICE
■ CHINA SALES OFFICE
■ U.K. SALES OFFICE
Panasonic Industrial Europe G.m.b.H.
● Paris Office:
270, Avenue de President Wilson
93218 La Plaine Saint-Denis Cedex
Tel: 14946-4413
Fax: 14946-0007
Panasonic Shun Hing Industrial Sales (Hong Kong)
Co., Ltd.
[PSI(HK)]
11/F, Great Eagle Centre, 23 Harbour Road,
Wanchai, Hong Kong.
Tel: 2529-7322
Fax: 2865-3697
■ KOREA SALES OFFICE
Panasonic Industrial Korea Co., Ltd.
[PIKL]
Hanil Group Bldg.11th Fl.,191 Hangangro 2ga,
Youngsans-ku,Seoul 140-702,Korea
Tel: 82-2-795-9600
Fax: 82-2-795-1542
■ PHILIPPINES SALES OFFICE
National Panasonic Sales Philippines
[NPP]
102 Laguna Boulevard Laguna Technopark Sta.
Rosa. Laguna 4026 Philippines
Tel: 02-520-3150
Fax: 02-843-2778
080600
Printed in JAPAN