NEC 78KOR User Guide

用户手册
RA78K0R Ver. 1.00
汇编器
语言篇
78K0R 系列
文件编号 U17835CA1V0UM00 (第一版) 印刷日期 2007年12 CP(K)
© NEC Electronics Corporation 2007
日本印刷
[备忘]
2
用户手册 U17835CA1V0UM00
Windows 是微软公司在美国或其他国家中的注册商标或商标。
z 本文档所刊登的内容有效期截至 2007 12 月。将来可能未经预先通知而更改。在实际进行生产
设计时,请参阅各产品最新的数据表或数据手册等相关资料以获取本公司产品的最新规格。并非 所有的产品和/或型号都向每个国家供应。请向本公司销售代表查询产品供应及其他信息。
z 未经本公司事先书面许可,禁止复制或转载本文件中的内容。本文件所登载内容的错误,本公司
概不负责。
z 本公司对于因使用本文件中列明的本公司产品而引起的,对第三者的专利、版权以及其它知识产
权的侵权行为概不负责。本文件登载的内容不应视为本公司对本公司或其他人所有的专利、版权
以及其它知识产权作出任何明示或默示的许可及授权。
z 本文件中的电路、软件以及相关信息仅用以说明半导体产品的运作和应用实例。用户如在设备设
计中应用本文件中的电路、软件以及相关信息,应自行负责。对于用户或其他人因使用了上述电
路、软件以及相关信息而引起的任何损失,本公司概不负责。
z 虽然本公司致力于提高半导体产品的质量及可靠性,但用户应同意并知晓,我们仍然无法完全消
除出现产品缺陷的可能。为了最大限度地减少因本公司半导体产品故障而引起的对人身、财产造
成损害(包括死亡)的危险,用户务必在其设计中采用必要的安全措施,如冗余度、防火和防故
障等安全设计。
z 本公司产品质量分为:
标准等级专业等级以及特殊等级三种质量等级。
特殊等级仅适用于为特定用途而根据用户指定的质量保证程序所开发的日电电子产品。另外,
各种日电电子产品的推荐用途取决于其质量等级,详见如下。用户在选用本公司的产品时,请事
先确认产品的质量等级。
标准等级: 计算机,办公自动化设备,通信设备,测试和测量设备,音频·视频设备,家
电,加工机械以及产业用机器人。
专业等级: 运输设备(汽车、火车、船舶等),交通用信号控制设备,防灾装置,防止犯
罪装置,各种安全装置以及医疗设备(不包括专门为维持生命而设计的设
备)。
特殊等级: 航空器械,宇航设备,海底中继设备,原子能控制系统,为了维持生命的医疗
设备、用于维持生命的装置或系统等。
除在本公司半导体产品的数据表或数据手册等资料中另有特别规定以外,本公司半导体产品的质
量等级均为标准等级。如果用户希望在本公司设计意图以外使用本公司半导体产品,务必事先
与本公司销售代表联系以确认本公司是否同意为该项应用提供支持。
(注)
1) 本声明中的本公司是指日本电气电子株式会社(NEC Electronics Corporation
及其控股公司。
2) 本声明中的本公司产品是指所有由日本电气电子株式会社开发或制造或为日本电气电子株式会社
(定义如上)开发或制造的产品。
M5 02.11-1
用户手册 U17835CA1V0UM00
3
[备忘]
4
用户手册 U17835CA1V0UM00
前 言
该手册是为了使用户更容易地、正确地理解RA78K0R汇编器包(此后称为RA78K0R)中每个程序的基本功能以
及描述源程序的方法而设计的。
该手册没有说明如何操作RA78K0R中的各个程序。因此,在你理解了本手册中的内容后,请阅读RA78K0R汇编
器包用户手册操作篇(U17836E)(此后称为操作篇)以用来操作汇编器包中的各个程序。
本手册中与RA78K0R相关的描述适用于1.00版或更高的版本。
[目标读者]
写作本手册的目的,是为了帮助使用微控制器(78K0R系列)进行开发应用的工程师更好的理解设备的功能和指令。
[结构]
本手册由以下六个章节和附录组成:
第1章 概述
概述RA78K0R中的所有基本功能。
第2章 如何描述源程序
概述如何描述源程序,并说明了汇编器中的运算符。
第3章 伪指令
说明了如何写入以及使用伪指令,并包含有应用示例。
第4章 控制指令
说明了如何写入以及使用控制指令,并包含有应用示例。
第5章
解释了所有宏功能,包括宏定义、宏引用和宏扩展。 关于宏的伪指令在第3章 伪指令中进行说明。
第6章 产品应用
介绍一些用于描述源程序的推荐方法。
附录
这些附录包括了保留字列表,伪指令列表以及索引。
本手册没有对指令集进行详细说明。关于这些指令的详细信息,敬请参阅软件开发所使用的微控制器用户手册。 同样,关于各个体系结构的指令信息,敬请参阅软件开发所使用的微控制器用户手册(硬件版)。
用户手册 U17835CA1V0UM00
5
[]
对于第一次使用汇编器的用户来说,请阅读本手册的第1章 概述。而对于那些具备一定汇编器知识的用户
来说,则可以跳过本手册的第1章 概述。然而,请务必阅读1.2 程序开发前的提示以及第2章 如何描述源程 序。
对于那些希望了解汇编器的伪指令以及控制指令的用户来说,请分别阅读第3章 伪指令和第4章 控制指令。
每个伪指令或控制指令的格式、功能和用途以及应用示例均在这些章节中进行了详细的说明。
[约定]
以下的符号和缩写用于整本手册中:
: 重复同一格式。
[ ]: 可以省略封闭在方括号中的字符。
{ }: { }中的一个项被选择。
“ ”: 封闭在“ ”(双引号)中的字符是一个字符串。
‘ ’: 封闭在‘ ’(单引号)中的字符是一个字符串。
( ): 在圆括号间的字符是一个字符串。
< >: 封闭在这些括号中的字符(主要为标题)是一个字符串。
__: 下划线用于说明一个重要点或用于表示输入字符串。
: 表示一个或更多的空白字符或制表符。
/: 字符分隔符
~: 连续
粗体: 粗体字符用于提示重要点或引用点。
6
用户手册 U17835CA1V0UM00
[相关文件]
与本手册相关的文件(用户手册)如下。 本文中出现的相关文件可能会包含初稿版本。 然而,不会对初稿版本作特殊标记。
文件名 文件编号
RA78K0R V1.00版汇编器
CC78K0R V1.00版C编译器
SM + 系统仿真器 操作 PM+ 6.20 ID78K0R-QB 3.20版综合调试器 操作
操作 语言 本手册 操作 语言
U17836E
U17838E U17837E U18010E U17990E U17839E
注意 上表列出的相关文档可能会随时改变而不做通知。请确保在设计时使用每个文档的最新版本。
用户手册 U17835CA1V0UM00
7
[备忘]
8
用户手册 U17835CA1V0UM00
目 录
前 言 .........................................................................................................................................................5
目 录 .......................................................................................................................................................9
插图列表 ..........................................................................................................................................12
表格列表 ..........................................................................................................................................13
1
2
概述 ..........................................................................................................................................14
1.1 汇编器概
1.1.1 什么是汇
1.1.2 应用微控
1.1.3 什么是浮
1.2 开发程序
1.2.1 RA78K0R
1.3 RA78K0R的特
.............................................................................................................................14
编器? ........................................................................................................15
制器的产品开发以及RA78K0R的作用........................................................16
动汇编器? .................................................................................................17
前的提示..................................................................................................................19
最大使用性能 ........................................................................................19
....................................................................................................................21
如何描述源程序 ......................................................................................................................22
2.1 基本结构 ................................................................................................................................22
2.1.1 模块头.......................................................................................................................23
2.1.2 模块体.......................................................................................................................24
2.1.3 模块尾.......................................................................................................................24
2.1.4 源程序的
2.1.5 源程序描
2.2 源程序的
描述格式..................................................................................................................29
总体结构.....................................................................................................25
述示例 ........................................................................................................26
2.2.1 语句结构 ...................................................................................................................29
2.2.2 字符集.......................................................................................................................30
2.2.3 符号字段 ...................................................................................................................32
2.2.4 助记符字
2.2.5 操作数字
................................................................................................................36
................................................................................................................36
2.2.6 注释字段 ...................................................................................................................40
2.3 表达式和
2.4 算术运算 +
- * /
运算符 ................................................................................................................................48
运算符 .....................................................................................................................41
.............................................................................................................................44
算符................................................................................................................................45
算符.................................................................................................................................46
算符.................................................................................................................................47
MOD ........................................................................................................................................49
+ 号........................................................................................................................................50
- 号........................................................................................................................................51
2.5 逻辑运算
.............................................................................................................................52
NOT .........................................................................................................................................53
AND .........................................................................................................................................54
OR ...........................................................................................................................................55
XOR .........................................................................................................................................56
2.6 关系运算
.............................................................................................................................57
EQ (=).................................................................................................................................58
NE< >...............................................................................................................................59
GT (>).................................................................................................................................60
GE>=................................................................................................................................61
LT(<)....................................................................................................................................62
LE<=.................................................................................................................................63
2.7 循环移动
运算符 .....................................................................................................................64
SHR .........................................................................................................................................65
SHL..........................................................................................................................................66
2.8 字节分离
运算符 .....................................................................................................................67
HIGH........................................................................................................................................68
LOW.........................................................................................................................................69
用户手册 U17835CA1V0UM00
9
2.9 字分离运
算符 .........................................................................................................................70
HIGHW ....................................................................................................................................71
LOWW .....................................................................................................................................72
2.10 特殊运算
.............................................................................................................................73
DATAPOS ................................................................................................................................74
BITPOS....................................................................................................................................75
MASK.......................................................................................................................................76
2.11 其他运算
.............................................................................................................................77
( )..............................................................................................................................................78
2.12 运算限制 ................................................................................................................................79
2.12.1 运算符和
2.12.2 运算符和
2.12.3 如果检查
2.13 绝对表达
2.14 位位置说
式的定义..................................................................................................................85
明符 .........................................................................................................................86
重定位属性 .................................................................................................79
符号属性.....................................................................................................82
运算中的限制 .............................................................................................84
.............................................................................................................................................87
2.15 操作数的
3
3.1 伪指令概
3.2 区段定义
2.15.1 操作数的
2.15.2 指令所需
2.15.3 操作数的
伪指令.......................................................................................................................................99
特征 .........................................................................................................................89
值的尺寸和地址范围 ..................................................................................89
的操作数的尺寸..........................................................................................95
符号属性和重定位属性...............................................................................95
.............................................................................................................................99
伪指令 ...................................................................................................................100
CSEG.....................................................................................................................................102
DSEG.....................................................................................................................................106
BSEG.....................................................................................................................................110
ORG.......................................................................................................................................114
3.3 符号定义
伪指令 ...................................................................................................................117
EQU .......................................................................................................................................118
SET........................................................................................................................................122
3.4 存储器初
始化和区域保留伪指令 ..........................................................................................124
DB..........................................................................................................................................125
DW.........................................................................................................................................127
DG .........................................................................................................................................129
DS..........................................................................................................................................131
DBIT.......................................................................................................................................133
3.5 链接伪指
...........................................................................................................................134
EXTRN...................................................................................................................................135
EXTBIT ..................................................................................................................................137
PUBLIC..................................................................................................................................139
3.6 目标模块
名称声明伪指令.....................................................................................................141
NAME ....................................................................................................................................142
3.7 自动分支
指令选择伪指令.....................................................................................................143
BR..........................................................................................................................................144
CALL......................................................................................................................................146
3.8 宏伪指令 ..............................................................................................................................148
MACRO .................................................................................................................................149
LOCAL ...................................................................................................................................151
REPT .....................................................................................................................................154
IRP.........................................................................................................................................156
EXITM....................................................................................................................................158
ENDM ....................................................................................................................................161
3.9 汇编终止
伪指令 ...................................................................................................................163
END .......................................................................................................................................164
4
控制指令.................................................................................................................................165
4.1 控制指令
4.2 处理器类
概述 .......................................................................................................................165
型定义控制指令.....................................................................................................167
10
用户手册 U17835CA1V0UM00
PROCESSOR........................................................................................................................168
4.3 调试信息
DEBUG/NODEBUG DEBUGA/NODEBUGA
4.4 交叉引用
输出控制指令.........................................................................................................170
...............................................................................................................171
..........................................................................................................172
列表输出定义控制指令 ..........................................................................................173
XREF/NOXREF .....................................................................................................................174
SYMLIST/NOSYMLIST .........................................................................................................175
4.5 包含控制
指令 .......................................................................................................................176
INCLUDE ...............................................................................................................................177
4.6 汇编列表
控制指令................................................................................................................179
EJECT ...................................................................................................................................180
LIST/NOLIST .........................................................................................................................182
GEN/NOGEN.........................................................................................................................184
COND/NOCOND ...................................................................................................................186
TITLE .....................................................................................................................................187
SUBTITLE..............................................................................................................................189
FORMFEED/NOFORMFEED................................................................................................192
WIDTH ...................................................................................................................................193
LENGTH ................................................................................................................................194
TAB ........................................................................................................................................195
4.7 条件汇编
IF/_IF/ELSEIF/_ELSEIF/E
控制指令................................................................................................................196
LSE/ENDIF ..................................................................................197
SET/RESET...........................................................................................................................201
4.8 日文汉字
kanji)码控制指令 .............................................................................................203
日文汉字(kanji)码 ..............................................................................................................204
4.9 其他控制
5
............................................................................................................................................206
指令 .......................................................................................................................205
5.1 宏概述..................................................................................................................................206
5.2 宏的使用 ..............................................................................................................................207
5.2.1 宏的定义 .................................................................................................................207
5.2.2 宏的引用 .................................................................................................................208
5.2.3 宏的展开 .................................................................................................................209
5.2.4 应用示例 .................................................................................................................209
5.3 宏内的符
...........................................................................................................................210
5.4 宏操作符 ..............................................................................................................................212
6
附录A 附录B
产品应用.................................................................................................................................214
6.1 启动汇编
6.2 如何开发
器时节省时间,减少故障 .............................................................................214
具有高内存利用率的程序 .............................................................................215
保留字列表...............................................................................................................................216
伪指令列表...............................................................................................................................218
索 引 ...................................................................................................................................................220
用户手册 U17835CA1V0UM00
11

插图列表

插图编号 标题 页码
1-1 RA78K0R汇编器包.............................................................................................................14
1-
2 汇编器流程 .........................................................................................................................15
1-
3 应用微控制器的产品的开发过程 ........................................................................................16
1-
4 为调试重新进行汇编...........................................................................................................18
1-
5 使用存在的模块的程序开发................................................................................................18
2-
1 源模块的结构 .....................................................................................................................22
2-
2 源模块的总体结构 ..............................................................................................................25
2-
3 源模块结构示例..................................................................................................................25
2-
4 样例程序的结构..................................................................................................................26
2-
5 组成语句的字段..................................................................................................................29
3-
1 段的内存位置 ...................................................................................................................101
3-
2 代码段的重定位................................................................................................................102
3-
3 数据段的重定位................................................................................................................106
3-
2 两模块之间的符号的关系 .................................................................................................134
12
用户手册 U17835CA1V0UM00

表格列表

表格编号 标题 页码
2-1 可以在模块头中描述的指令................................................................................................23
2-
2 字母数字式字符..................................................................................................................30
2-
3 特殊字符.............................................................................................................................30
2-
4 运算符的类型 .....................................................................................................................41
2-
5 运算符的优先级顺序...........................................................................................................42
2-
6 重定位属性的类型 ..............................................................................................................79
2-
7 按照重定位属性区分的项和操作符的组合..........................................................................80
2-
8 用重定位属性组合项和操作符 (外部引用项)......................................................................81
2-
9 操作中的符号属性类型.......................................................................................................82
2-
10 用符号属性组合项和操作符..............................................................................................83
2-
11 指令的操作数值的范围 .....................................................................................................89
2-
12 伪指令的操作数的值范围 .................................................................................................94
2-
13 作为操作数被表述的符号特性 ..........................................................................................96
2-
14 作为伪指令的操作数被描述的符号特性............................................................................97
3-
1 伪指令列表 .........................................................................................................................99
3-
2 段定义方法和内存地址位置..............................................................................................100
3-
3 CSEG的重定位属性 .........................................................................................................103
3-
4 DSEG的重定位属性 .........................................................................................................107
3-
5 BSEG的重定位属性 ......................................................................................................... 111
4-
1 控制指令列表 ...................................................................................................................165
4-
2 控制指令与汇编选项.........................................................................................................166
A-1A-2B-1
保留字的类型....................................................................................................................216
保留字列表........................................................................................................................216
伪指令列表........................................................................................................................218
用户手册 U17835CA1V0UM00
13

1 章 概述

本章节描述了RA78K0R在微控制器软件开发中所起的作用及其特点。

1.1 汇编器概述

RA78K0R汇编器 (后面简称"RA78K0R")是用于将以78K0R系列微控制器的汇编语言来编码的源程序转换为机
器语言编码的一系列程序的通用术语。
RA78K0R包含5个程序:汇编器,连接器,对象转换器,库管理和列表转换器。 另外,RA78K0R也提供了PM+,它可以帮助你在Windows中完成对程序的编辑、编译/汇编,连接和调试等一系
列操作。
1-1 RA78K0R 汇编器包
汇编器
RA78K0R 汇编器包
连接器
目标转换器
库管理程序
列表转换器。
项目管理器

1.1.1 什么是汇编器?

(1) 汇编语言与机器语言
汇编语言是微控制器最基本的程序语言。 微控制器中的微处理器需要程序和数据来完成它的工作。这些程序和数据必须由用户来写入微控制器的内 存中。 由微控制器处理的程序和数据是称为机器语言的二进制数的集合。 然而,对于用户来说,机器语言编码非常难记,因此会导致频繁地发生错误。幸运的是,已经存在易于被 人理解的方法,它通过使用英文缩写或助记符来表示原始机器语言编码的含义。使用这种符号编码方式的 基础程序语言系统称为汇编语言。 由于机器语言是唯一的可以被微控制器直接处理的程序语言,因此需要另一个可以将在汇编语言中创建的 程序转换为机器语言的程序。这个程序就称为汇编器。
以汇编语言写的程序 以二进制数编码的机器语言程序
(源模块文件) (汇编器) (目标模块文件)
1 章 概述
1-2 汇编器流程
用户手册 U17835CA1V0UM00
15
1 章 概述

1.1.2 应用微控制器的产品开发以及RA78K0R的作用

下图说明了在产品开发过程中汇编语言程序设计所处的位置。
1-3 应用微控制器的产品开发过程
硬件开发 软件开发
逻辑设计
生产
检查 汇编
OK
产品规划
系统设计
系统评价
产品营销
软件设计
汇编语言程序代码
RA78K0R
的位置
OK
调试
OK
16
用户手册 U17835CA1V0UM00
1 章 概述

1.1.3 什么是浮动汇编器?

源语言通过汇编器转换后得到的机器语言在使用前会被写入微控制器的内存中。要完成这个操作,必须确定每
个机器语言指令在内存中所写入的位置。
因此,说明每个机器语言指令在内存中所处位置的信息将被添加到由汇编器汇编的机器语言中。 根据将地址置于机器语言指令的方法,汇编器总的来说可以分成完全汇编器和可重定位汇编器。
- 完全汇编器 完全汇编器将以汇编语言进行汇编的机器语言指令放置到绝对地址中。
- 可重定位汇编器 在可重定位汇编器中,为汇编语言进行汇编得到的机器语言指令所分配的地址是暂定的。绝对地址随后将 由连接器来确定。
过去,当使用完全汇编器来创建一个程序时,通常必须同时完成全部的程序设计。然而,如果一个大的程序中 所有组成部分被创建为一个唯一的实体,那么程序将变得非常复杂,程序的分析和维护都会变得非常困难。为了避 免这种情况,将这类大的程序分成多个子程序来开发,这些子程序称为模块,代表每个功能组件。这种程序设计技 术被称为模块化程序设计。
可重定位汇编器是一种适合于模块化程序设计的汇编器,它具有以下优势:
(1) 提高开发效率
同时完成一个大型程序是非常困难的。在这种情况下,将程序根据每个功能分成多个模块能让两个或更多 的程序员来并行开发子程序,同时也提高了开发效率。 此外,如果在程序中发现任何漏洞,将不需要汇编整个程序,而只需改正程序中的一部分,即重新汇编那 个必须要改正的模块。这就缩短了调试的时间。
用户手册 U17835CA1V0UM00
17
1 章 概述
1-4 为调试重新进行汇编
由单一模块组成的程序 由两个或更多的模块所组成的程序
模块
发现漏洞!
发现漏洞! 模块
xxx
模块
xxx
整个程序
模块
必须重新汇编
模块
(2) 资源利用
以前创建的具有高可靠性和通用性的模块可以重新用于另一个程序的创建。如果你将这类高通用性的模块 累积为软件资源,你将可以在开发一个新程序的过程中节省时间和人力。
1-5 使用存在的模块的程序开发
模块A 模块D
新程序
模块B 模块C
新模块
模块A
新模块
模块D
只有该模块需要重新汇编
18
用户手册 U17835CA1V0UM00
1.2 开发程序前的
提示
开始开发程序之前请参考以下内容。

1.2.1 RA78K0R的最大使用性能

(1) 汇编器的最大使用性能
符号数量(局部+公共) 65,535 个符号
可以输出交叉引用表的符号的数量 65,534 个符号
用于一个宏引用的宏体的尺寸
所有宏体的总尺寸
一个文件中的区段数量 256 个区段
一个文件中的宏和要包含的规范
一个被包含的文件中的宏和包含的规范
可重定位的数据
行号数据 65,535 个项目
一个文件中的 BR/CALL 指令的数量 32,767 条指令
每行中的字符数 2,048 个字符
符号长度 256 个字符
开关名定义的数量
开关名的字符长度
区段名称的字符长度 8个字符
模块名称的字符长度(NAME 伪指令) 256 个字符
宏定义伪指令中的形参数量 16 个参数
宏引用时的实参数量 16 个参数
IRP 伪指令中的实参数量 16 个参数
宏定义内的本地符号数量 64 个符号
宏的嵌套层数(宏引用,REPT 伪指令,IRP 伪指 令)
通过 TITLE 控制指令,-lh 选项指定的字符数量
通过 SUBTITLE 控制指令指定的字符数量 一个文件中 include 指令的嵌套层数 8 层 条件汇编嵌套层数 8 层
-I 选项指定包含文件的路径数量
通过-d 选项定义的符号数量 30 个符号
2
65,535 个项目
4
4
31 个字符
1 章 概述
条目 最大使用性能
1
1 MB
10 MB
10,000
10,000
3
1,000
8
5
60 个字符
72 个字符
64 个路径
用户手册 U17835CA1V0UM00
19
1. 不包括模块名称和区块名称的数量。 使用存储器,如果没有存储器,则使用文件。
2. 当汇编器不能解决符号值时,被传递到连接器中的信息。 例如,当一个外部引用符号被MOV指令引用时,将会在.rel文件中生成两个重定位信息。
3. 这里包含CRLF代码。如果在一行中描述2049个或更多的字符,那么将输出一个警告消息并
忽略2049之后的字符。 注4. 开关名称由SET/RESET伪指令设置为真/ 假,且被$IF 等一起使用。 注5. 如果在汇编列表文件(“X”)的单行指定的字符数量最大为119,该数字为“X-60”或更少。
(2) 连接器的最大使用性能
符号数量(局部+公共) 65,535 个符号 同一区段的行号数据 65,535个项目 区段的数量 65,535 个区段注 输入模块的数量 1,024 个模块 存储器区域名称的字符长度 256个字符 存储器区域的数量 100个区域注 通过-b选项可以指定的库文件数量 64个文件 由-I选项指定包含文件的路径数量 64个路径
默认包含这些已经定义的。
1 章 概述
项目 最大工作特性
20
用户手册 U17835CA1V0UM00

1.3 RA78K0R的特点

RA78K0R具有以下特点:
(1) 宏功能
当同一组指令必须在源程序中反复描述时,可以用宏定义来描述一组指令的执行。 通过使用该宏功能,可以提高编码效率和程序的可读性。
(2) 分支指令的优化功能
RA78K0R具有自动分支指令选择导引( BRCALL)
为了创建一个带有高存储效率的程序,字节分支指令必须依照分支指令的分支目的范围来进行描述。然 而,对于程序员来说,描述一个分支指令的同时,又需要注意每个分支的目的范围是非常麻烦的。通过描 述BR指令或CALL指令,汇编器将会依照分支目的范围生成适当的分支指令。这被称为分支指令的优化功 能。
(3) 条件汇编功能
使用该功能时,一部分源程序可以依照预先确定的条件指定为汇编语言或非汇编语言。 如果在源程序中描述调试语句,是否将调试语句转换为机器语言,则可以通过为条件汇编设置一个开关来 选择。当不再需要调试语句时,源程序可以加入汇编且不会对程序进行大的修改。
1 章 概述
用户手册 U17835CA1V0UM00
21

2 章 如何描述源程序

本章节描述了源程序的描述方法,表达式和运算符。

2.1 基本结构

当通过将源程序分为几个模块来对其进行描述时,成为输入到汇编器中单元的每个模块都将被称为源模块(如
果一个源程序由单一的模块组成,那么源程序就是源模块)。
作为输入到编译程序中的单元的每个模块主要由以下三部分组成:
(1) 模块头
(2) 模块体
(3) 模块尾
2-1 源模块的结构
模块头
模块体
模块尾
2 章 如何描述源程序

2.1.1 模块头

下表中显示的是可以在模块头中进行描述的控制指令。注意,这些控制指令只能在模块头中进行描述。
模块头也可以省略。
2-1 可以在模块头中描述的指令
可以描述的项目 说明 在本手册中的章/节
- PROCESSOR
- XREF/NOXREF
- DEBUG/NODEBUG,
DEBUGA/NODEBUGA
与汇编器选项具有相同功能 的控制指令
由高级程序例如C语言编译 器输出的特殊控制指令
- TITLE
- SYMLIST/NOSYMLIST
- FORMFEED/NOFORMFEED
- WIDTH
- LENGTH
- TAB
- KANJICODE
- TOL_INF
- DGS
- DGL
4章 控制指令
用户手册 U17835CA1V0UM00
23
2 章 如何描述源程序

2.1.2 模块体

不能在模块体中进行描述以下指令:
- 与汇编器选项具有相同功能的控制指令
所有其他伪指令,控制指令以及可以在模块体中进行描述的指令。 必须通过将模块体分为称作“段”的单元对其进行描述。
用户可以使用与每个段相应的指令来定义以下四个段:
(1) 代码段
必须以CSEG指令来定义。
(2) 数据段
必须以DSEG指令来定义。
(3) 位段
必须以BSEG指令来定义。
(4) 绝对段
必须通过将字单元地址指定为具有重定位属性(AT字单元地址),并以CSEG,DSEGBSEG伪指令来定义 该段。也可以以ORG指令来定义。
模块体可以以任何段的组合来构成。 然而,在代码区段前应该定义一个数据区段和一个位区段。

2.1.3 模块尾

模块尾表明源模块结束。在这部分中必须有END指令。 如果任何不同于注释,空格,制表符或换行符代码的内容接在EDN指令后进行描述,那么编译程序将输出一
个警告消息并忽略在END指令后描述的字符。
24
用户手册 U17835CA1V0UM00
)
V
M
E
ENDF
W
S
$

2.1.4 源程序的总体结构

源模块(源程序)的总体结构如下所示。
与汇编器选项具有同等功能的控制指令
由高级程序例如 C 语言编译器输出的特 殊控制指令
伪指令
2 章 如何描述源程序
2-2 源模块的总体结构
模块头
控制指令
指令
END 指令
简单的源模块结构示例显示在2-3中。
模块头
模块体
$ PROCESSOR(f1166a0
ECT CSEG AT 0H
AIN CSEG
模块体
模块尾
2-3 源模块结构示例
PROCESSOR(f1166a0)
LAG BSEG
ORK DSEG
UB CSEG
模块尾
ND
用户手册 U17835CA1V0UM00
25
2 章 如何描述源程序
C
C
C
R
S
N
E

2.1.5 源程序描述示例

在本小节中,源模块(源程序)的描述示例显示为样例程序。样例程序的结构可以按如下进行简单说明。
2-4 样例程序的结构
<主程序>
NAME SAMPM
DATA DSEG AT 0FE20H
变量定义
CODE CSEG AT 0H MAIN: DW START
CSEG
START:
<子程序>
ONVAH:
AME SAMPS
SEG
ALL !SASC
CSEG
ASC:
RET
CALL !CONVAH
END
ND
ET
26
用户手册 U17835CA1V0UM00
2 章 如何描述源程序
<主程序>
NAME SAMPM ; (1) ; *********************************************** ; HEX -> ASCII Conversion Program ; main-routine ; *********************************************** PUBLIC MAIN , START ; (2) EXTRN CONVAH ; (3) EXTRN _@STBEG ; (4) <-- Error DATA DSEG AT 0FFE20H ; (5) HDTSA : DS 1 STASC : DS 2 CODE CSEG AT 0H ; (6) MAIN : DW START CSEG ; (7) START : ; 芯片初始化
MOVW SP , #_@STBEG MOV HDTSA , #1AH MOVW HL , #LOWW ( HDTSA ) ; set hex 2-code data in HL registor CALL !CONVAH ; convert ASCII <- HEX ; output BC-register <- ASCII code MOVW DE , #LOWW ( STASC ) ; set DE <- store ASCII code table MOV A , B MOV [ DE ] , A INCW DE MOV A , C MOV [ DE ] , A BR $$ END ; (8)
(1) 模块名称的声明。
(2) 被另一个模块中作为而外部引用符号引用的符号声明。
(3) 在另一个模块中定义为一个外部引用符号的符号声明。
(4) 从连接器的”-S”选项中生成一个外部引用符号作为堆栈解决符号的声明(如果连接时没有指定”-S”选项,将会 产生一个错误)。
(5) 数据段开始声明(位于saddr中)
(6) 代码段开始声明(设置为一个从地址0H开始的绝对区段)
(7) 代码段开始声明(表示绝对段结束)
(8) 模块结束声明
用户手册 U17835CA1V0UM00
27
2 章 如何描述源程序
NAME SAMPS ; (1) ; ************************************************************* ; HEX -> ASCII Conversion Program ; sub-routine ; ; input condition : ( HL ) <- hex 2 code ; output condition : BC-register <- ASCII 2 code ; ************************************************************* PUBLIC CONVAH ; (2) CSEG ; (3) CONVAH : XOR A , A ROL4 [ HL ] ; hex upper code load (4) CALL !SASC MOV B , A ; store result
XOR A , A ROL4 [ HL ] ; hex lower code load CALL !SASC MOV C , A ; store result RET
; ************************************************************* ; subroutine convert ASCII code ; ; input Acc ( lower 4bits ) <- hex code ; output Acc <- ASCII code ; ************************************************************* SASC : CMP A , #0AH ; check hex code > 9 BC $SASC1 ADD A , #07H ; bias ( +7H ) SASC1 : ADD A , #30H ; bias ( +30H ) RET END ; (5)
(1) 模块名称的声明
(2) 被另一个模块中作为而外部引用符号引用的符号声明。
(3) 代码段开始声明
(4) 由于ROL4指令是针对78K0系列的,而78K0R系列编译器不支持该指令,需要指定汇编选项(-compati)
关于汇编选项(-compati),敬请参阅RA78K0R系列汇编器操作篇用户手册。
(5) 声明模块的结束
28
用户手册 U17835CA1V0UM00
2 章 如何描述源程序
2.2 源程序的描述

2.2.1 语句结构

格式
源程序由语句所组成。 每个语句包含下图显示的四个字段。
2-5 组成语句的字段
语句
符号字段 助记符字段 操作数字段 注释字段
[ CR ] LF
(1) (2)
(3)
(4)
(1) 符号字段和助记符字段间必须用冒号(:),或一个或更多的空格或制表符隔开(它根据在助记符字段描述的指令
决定来决定是否使用冒号或空格)。
(2) 助记符字段和操作数字段间必须用一个或更多的空格或制表符隔开。根据在助记符字段中所描述的指令,可能
不需要操作符字段。 (3) 如果使用注释字段,则必须在前面加上分号(;)。 (4) 每一行必须用一个LF码来定界(在LF码前可能会存在一个CR码)。
一个语句必须在一行内进行描述。每行最多可以描述 2048 个字符(包括 CR LF)。 每个 TAB 或独立的 CR 都被计作一个字符。如果描述了 2049 个或更多的字符,将会输出一条警告消息且任何 2049 之后的任何字符都会被忽略。然而,2049 个或更多的字符将被输出到汇编列表中。
独立的 CR 不会被输出到汇编列表中。
以下的行也可以被描述:
(1) 虚拟行(没有语句描述的行)
(2) 仅由符号字段组成的行
(3) 仅由注释字段组成的行
用户手册 U17835CA1V0UM00
29
2 章 如何描述源程序

2.2.2 字符集

可以在一个源文件中进行描述的字符被分为以下三类:
- 语言字符
- 字符数据
- 注释字符
(1) 语言字符
语言字符是用于在源程序中描述指令的字符。 它包括字母,数字和特殊字符。
2-2 字母数字式字符
名称 字符
数字字符 字母字符
字符 名称 主要用途
? @ _
HT ( 09H )
逗号 操作数的分隔 : 冒号 标签的分隔 ; 分号 表示注释字段开始的符号
CR ( 0DH )
LF ( 0AH )
大写字母 小写字母
问号 相当于字母字符的符号 圈 a 相当于字母字符的符号 下划线 相当于字母字符的符号 空格 每个字段的分隔 制表码 相当于空格的字符
回车码 表示行结束的符号(在汇
换行码 表示行结束的符号
0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T UV W X Y Z a b c d e f g h i j k l m n o p q r s t uv w x y z
2-3 特殊字符
编器中忽略)
分隔符号
30
用户手册 U17835CA1V0UM00
Loading...
+ 193 hidden pages