Everything
3.5.1 インテル拡張ヘキサ・ファイルの構成

インテル拡張ヘキサ・ファイル(20ビット)は,スタート・セグメント・アドレス・レコード,拡張セグメント・アドレス・レコード,データ・レコード,およびエンド・レコードの4種類のレコードにより構成されます。

インテル拡張ヘキサ・ファイル(32ビット)は,スタート・リニア・アドレス・レコード,拡張リニア・アドレス・レコード,スタート・セグメント・アドレス,拡張セグメント・アドレス・レコード,データ・レコード,およびエンド・レコードの6種類のレコードにより構成されます。

各レコードは,ASCIIコードで出力します。

 

インテル拡張ヘキサ・ファイルの構成と内容を以下に示します。

図 3.1

インテル拡張ヘキサ・ファイルの構成

拡張セグメント・アドレス・レコード,およびデータ・レコードは繰り返されます。

 

出力情報

説明

スタート・リニア・アドレス・レコード

リニア・アドレス

拡張リニア・アドレス・レコード

ビット32~ビット16の上位16ビット・アドレス

スタート・セグメント・アドレス・レコード

エントリ・ポイント・アドレス

拡張セグメント・アドレス・レコード

ロード・アドレスのパラグラフ値

データ・レコード

コードの値

エンド・レコード

コードの終わり

 

各レコードは,各種フィールドにより以下の形で構成されます。

:   XX  XXXX  XX  DD......DD SS  NL
(1) (2) (3)   (4)     (5)    (6) (7)

項番

説明

(1)

レコード・マーク

(2)

バイト数

(5)の2桁ずつの16進数で表されるバイトのバイト数です。

(3)

ロケーション・アドレス

(4)

レコード・タイプ

05 : スタート・リニア・アドレス・レコード

04 : 拡張リニア・アドレス・レコード

03 : スタート・セグメント・アドレス

02 : 拡張セグメント・アドレス・レコード

00 : データ・レコード

01 : エンド・レコード

(5)

コード

コードの1バイトごとを2桁の16進数で表したものです。

(6)

チェック・サム

:,SS,NLを除くレコード内の各バイト値を16進数で加算した結果の2の補数です(2桁)。

(7)

ニュー・ライン(\n)

備考

インテル・ヘキサ・フォーマットのロケーション・アドレスは2バイト(16ビット)です。
したがって,64Kの空間しか直接指定はできません。
それを拡張するために,16ビットの拡張アドレスを追加して1M(20ビット)の空間まで扱えるようにしたのがインテル拡張ヘキサ・フォーマットです。
具体的には,16ビットの拡張アドレスを指定するレコード・タイプを追加しています。
この追加した拡張アドレスの4ビットをシフトしてロケーション・アドレスと加算することで,20ビットのアドレスを表現できるようになっています。