NEC Electronics (China) NEC ELECTRONICS (CHINA)
日电电子 NEC
主  页
应  用
产  品
技  术
支  持
购  买
最  新  消  息
关  于  我  们
header
产品名称搜寻
关键字搜寻
文档搜寻
参数搜寻
    网页指南  联系我们  

FAQ



 RA78K
内容    
FA问-ID = 78ra-nnnn
0001: 当使用位SFR名称时,发生错误
0002: 关于在一个包含文件中的多重CSEG的问题。
0003: 库管理程序输出消息"F104 非法库文件 -- 不同的目标芯片"
0004: 当RA78Kx启动时会输出这条消息"环境没有足够空间"[RA78Kx (16位版本)]
0005: 关于短指令saddrp2代码输出的问题 [RA78K4]
0006: 关于汇编程序中符号定义选择的问题
0007: LOCATION 0H 定位指令的条件下,汇编器输出错误F325 [RA78K4]
0008: 能否建立一个库?
0009: 关于RA78K0S中的包含文件名
0010: 输出"A102 非法的处理器类型被指定"
0011: RA78K0S中描述$PROCESSOR时输出的一个错误
0012: 汇编程序所需要的常规内存。
0013: 我想执行A-(-10)
0014: 在RA78K中使用IEBus相关寄存器名称时发生的错误。

78ra
-0001
当使用位SFR名称时,发生错误
问1 uPD780076中有象"EGP"和"EGN"这样特殊的以位为单元的寄存器,但是当我尝试用汇编程序处理这些寄存器的时候就会有错误发生。
1 这款设备的用户手册的介绍中作过这样的解释,那些包括在内的位操作的寄存器才适用于RA78K0, 而没有包括在内的位操作寄存器就不适用于RA78K0。

如果用户想参考这些未定义的位,可以像"EGP.0"这样规定这些位编号。
参考文献:
RA78K0 Assembler Package -- Language
78ra
-0002
关于在一个包含文件中多重CSEG的问题。
1 如果在一个包含文件中描述多重"CSEG"的指令, 将会输出这样的提示"F627:在这个INCLUDE/MACRO中包含了两个以上的段" 。
1 当在包含文件或者宏中描述多重CSEG的时候,就会产生你所说的这种错误。
这就是你的问题的答案。
78ra
-0003
库管理程序输出消息"F104 非法库文件 -- 不同的目标芯片"
问1 当我试图观察78K/0库管理程序中信息的时候,就会输出以下这些错误提示。
请问为什么会产生这些错误,我如何处理这些错误?

|   78K/0 Series Librarian V3.10  [ 5 Mar 96]
|      Copyright (C) NEC Corporation 1990,1996
|   *l cl0.lib
|   F104 Illegal library file - different target chip (file : CL0.LIB)
|   *
1 之所以会输出这样的错误提示,是因为当创建cl0.lib的时候没有找到合适的设备文件。
你可以将uPD78014的设备文件包含进去试试。
uPD78014的设备文件可以在NEC网页中"Download Development Tools"处下载。
78ra
-0004
当RA78Kx启动时会输出这条消息"环境没有足够空间"[RA78Kx (16位版本)]
1 当我安装RA78K4汇编程序包并启动项目管理器的时候, 会输出这样的错误提示(环境没有足够的空间)并且无法打开项目管理器。
1 当这个错误发生的时候,先重新启动一次系统,取消一些不需要的驻留程序的驻留性, 然后再尝试重新启动项目管理器。
78ra
-0005
关于短指令saddrp2代码输出的问题 [RA78K4]
1 指令长度的不同主要取决于MOVW saddrp, #word指令是否使用了saddrp1或是saddrp2,这是自动产生的还是要用户自己指定?
1 如果用户什么都没有指定,系统就会自动执行象saddrp1(长指令)这样的处理。
如果你想要执行象saddrp2这样的短指令,可以在将数据段定义为"DSEG"时, 用saddrp2定义操作数的重定义属性后,执行符号定义。
   area1        DSEG       saddrp2
   data1:       DS         2
                 :
                 :
                CSEG
                 :
                MOVW        data1,#0H
当用户完成以上这些定义,这条MOVW指令就变成一条短指令了。
想要得到更详细的信息,可以参阅语言用户手册中伪指令中的DSEG部分。
2 这个源程序被分成了两个文件,一个是数据定义文件,另一个是逻辑文件。
数据定义源文件中对数据的重定义属性有所描述, 但是我如何在逻辑文件中指定数据重定义属性呢?
2 使用DSEG作为RAM的定义模式,为定义在DSEG段中的操作数指定重定义属性saddrp2, 然后参照下列方法在逻辑块中用EXTRN声明saddrp2。

EXTRN saddr2 (data1, ... , ... , ...)

结果,用号用","划分的操作数,例如data1等等,通过指令在saddrp2区域产生。
按照这些步骤应该可以成功控制你所问的这个案例。
想要得到更详细的信息,可以参阅语言用户手册中的有关EXTRN指令的描述。
78ra
-0006
关于汇编程序中符号定义选择的问题
1 使用汇编程序编程的时候,是否可以象编译器定义参数那样用同样的方式来定义符号?
1 RA78K0的3.50版本可以这样做。
用-d选项可以得到类似与编译器的指定。
如何完成这些指定,可以参照下面的命令行。
  C> ra78k0 k0main.asm c054 -dSYM
Or,
  C> ra78k0 k0main.asm c054 -dSYM=1
当用项目管理器完成这些指定的时候, 在汇编程序选项的"other"页上的"Other Options"选项中输入 -dSYM或者-dSYM=1。
78ra
-0007
LOCATION 0H 定位指令的条件下,汇编器输出错误F325 [RA78K4]
1 当用 location 0H 进行定位设置时输出一个错误。
1 这是因为当SFR区域改变指定选项在RA78K4中被忽略时,这就被误认为是-CS15。
当源文件中存在LOCATION 0这条指令的时候,就会输出这样的错误提示。
如果想要设置LOCATION 0H的话,请在RA78K4中添加-CS0这个选项。
78ra
-0008
能否建立一个库?
1 我想用项目管理器创建一个库文件,是否可行?
1 若要将目标文件变成库文件,请使用汇编包提供的库管理。
如果要在项目管理器中创建一个库文件,在"Project Settings"对话框中把"Series Name"设置到"xxxxx Series Library"。
在项目管理中通过对项目管理进行多种多样的设置和执行是可行的。
78ra
-0009
关于RA78K0S中的包含文件名
1 我创建了一个包含文件(.inc),但是我却不知道在项目管理中它的设置方法。
1 通常,包含文件不是单独被创建出来的。
如果某个包含文件是包含在另外一个ASM文件中的,那么就没有必要在项目管理器中再去注册它了。
在项目管理器中,系统会自动的分析包含文件并且将它显示在文件列表中。
78ra
-0010
输出"A102 非法的处理器类型被指定"
1 当我用汇编编好一个uPD789104A的程序的时候,

A102 非法的处理器类型被指定

错误提示被输出。
1 首先检查是否安装了uPD789104A的设备文件。
为了完成汇编,必须单独安装针对目标设备的设备文件。

你可以从NEC网站"Download Development Tools"这里下载到这个设备文件。
78ra
-0011
RA78K0S中描述$PROCESSOR时输出的一个错误。
1 我使用的是uPD789114。
但我在RA78K0S中描述$ PROCESSOR(114)时,输出了一个错误提示。
1 这是因为处理器指定方法不正确。
你所述的是
$ PROCESSOR(114)
正确的方法应该是
$ PROCESSOR(9114)
这样的。
所需要的是低四位的数字而不是低三位的数字。
78ra
-0012
汇编程序所需要的常规内存。
1 但我用MEM命令检查时,还有581KB的常规内存,但在汇编程序执行时是否有问题?
     Name            Total          Conventional       Higher Memory
     --------  ----------------   ----------------   ----------------
     MSDOS       49,872   (49K)     49,872   (49K)          0    (0K)
     HIMEM        4,992    (5K)      4,992    (5K)          0    (0K)
     IFSHLP       2,816    (3K)      2,816    (3K)          0    (0K)
     SETVER         768    (1K)        768    (1K)          0    (0K)
     WIN          3,840    (4K)      3,840    (4K)          0    (0K)
     vmm32        3,296    (3K)      3,296    (3K)          0    (0K)
     COMMAND      7,760    (8K)      7,760    (8K)          0    (0K)
     FREE       581,712  (568K)    581,712  (568K)          0    (0K)
1 对于32位的Windows兼容产品中,没有常规内存的约束。
对于DOS和16位的Windows的兼容产品来说,如果扩展内存规范或是保护内存能够被使用, 系统会自动使用。
如果按照你问题中常规内存的大小来判断的话,可能会发生一个问题,或许你使用了很多的符号?
另外,是否输出交叉参考?
在这个案例中,如果符号数超过大约6000左右的话,可能会输出错误提示。
这种情况下,你可以通过停止交叉参考输出和减少符号数量来预防这样错误的发生。
78ra
-0013
我想执行A-(-10)
1 我想在RA78K0中实现A-(-10),具体该如何编写?
我试过写SUB A, #-10,得到的结果是超越范围的错误提示。
我也试过写SUBW AX, #-10,得到的结果是非法的操作数错误。
我想是不是-1被机器认为是FF?
1 你可以按照下面语句编写:

SUB A,#LOW -10

在上面所使用的方法中,-10被翻译成FFF6, 导致这个错误的原因是程序试图从8位的寄存器A中减去这个数。 我们可以通过使用这个值的低位进行减法运算来解决这个问题。
因此,用LOW这个命令。
78ra
-0014
在RA78K中使用IEBus相关寄存器名称时发生的错误。
1 当我使用一个IEBus相关寄存器名例如使用A/D电流切断选择寄存器IEAD的时候, 系统报了一个汇编错误(未定义符号)。
1 首先用EQU等定义地址, 然后通过寄存器A来完成设置。(或者直接写地址)。
您的问题中提到的寄存器(如IEBus相关寄存器)通常占用一个和SFR不同的区域, 对这类寄存器不提供类似于支持SFR的寻址方式。

此外,对于一些只能当作常规内存(addr16)使用寄存器。
因为不能直接设置值,所以要确保通过寄存器A来设置。



   LEGAL    最新之产品资料, 请参阅英文版
 请用Internet Explorer浏览本网站以达最佳效果。
  © 2005-2008  NEC Electronics China Limited