Cygnalブランド時代の古い開発キットに付属するアセンブラについて

 下記のような不具合があります.

<症状>
 $NOMOD51ディレクティブが指定されているアセンブラ・ソースにおいて,行末が漢字の「能」で終わっているとき,続く改行コード(CR)が無視されてしまう.
「能」はコメントなので,結果として次の行もコメント扱いとなり,オブジェクトが出力されない.

<説明>
 ファイル"blinkable.asm"は,開発キットに付属しているサンプル・プログラム"blink.asm"の62行目に,コメント「;可能」を追加したものです.
 これを問題のアセンブラでアセンブルすると,下記のエラーが出ます.
A51 MACRO ASSEMBLER V6.14a - SN: Cygnal_8051Fxxx
COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2001

MACRO ASSEMBLER A51 V6.14a
OBJECT MODULE PLACED IN blink.OBJ
ASSEMBLER INVOKED BY: C:\SiLabs\MCU\IDEfiles\C51\BIN\a51.exe blink.asm XR GEN DB EP NOMOD51

LOC  OBJ            LINE     SOURCE

0019                 293                 djnz  R7, Loop1
*** _______________________________________________^
*** ERROR #A45 IN 293 (blink.asm, LINE 67): UNDEFINED SYMBOL (PASS-2)

ASSEMBLY COMPLETE.  0 WARNING(S), 1 ERROR(S)

 このときのリスト・ファイルが"blinkable_6.14a.LST"です.
「;可能」の次の行(63行目)に宣言されているLoop1が評価されなかったために,UNDIFINED SYMBOLエラーが発生しています.
 時期が違う3種類の開発キットに付属のCD-ROMリリース・ナンバーと,同梱のアセンブラのバージョンの対応は以下のとおりでした.

  (1)Cygnalブランド Release 1.81 CD-ROM→A51 MACRO ASSEMBLER V6.14a
  (2)SiLabsブランド Release 2.2 CD-ROM→A51 MACRO ASSEMBLER V7.04a
  (3)SiLabsブランド Release 2.40 CD-ROM→A51 MACRO ASSEMBLER V7.04a

 上記の症状が発生するのは(1)だけで,(2)(3)では発生しませんでした.(2)のリストファイルは"blinkable_7.04a.LST"です.

<まとめ>
 今回の現象は偶然該当行にラベルがあったために発見されましたが,もしそうでなかったら見つからなかったかもしれません.1行だけがアセンブルされないことによる非常に不可思議な動作不良を引き起こすので注意が必要です.
 また,この不具合の引き金となる文字は「能」だけではないかもしれません.
Cygnalブランド=バグありとは言えませんが,古い開発環境を持っている方は念のために確認しておくことが望ましいと思います.

ホームへ戻る Copyright 2006 by 8051.designerz-net.com