十六进制转换实用程序输出地址字段对应于 ROM 器件地址。EPROM 编程器将数据烧录到由十六进制转换实用程序输出文件地址字段指定的位置。十六进制转换实用程序提供了一些机制来控制每段在 ROM 中的起始地址。但是,许多 EPROM 编程器都直接控制 ROM 中的数据烧录位置。
十六进制转换实用程序输出文件的地址字段由以下项(按优先级从低到高列出)控制:
- 链接器命令文件。默认情况下,十六进制转换实用程序输出文件的地址字段是加载地址(在链接器命令文件中给出).
- SECTIONS 指令的 paddr 参数。为段指定 paddr 参数后,十六进制转换实用程序会绕过段加载地址并将段放置在由 paddr 指定的地址中。
- --zero 选项。当您使用 --zero 选项时,该实用程序会将每个输出文件的地址原点复位为 0。由于每个文件从 0 开始并向上计数,因此任何地址记录都表示从文件开头(ROM 中的地址)的偏移量,而不是数据的实际目标地址。
您必须将 --zero 选项与 --image 选项搭配使用,以强制每个输出文件中的起始地址为零。如果您指定了不带 --image 选项的 --zero 选项,该实用程序会发出警告并忽略 --zero 选项。
- --byte 选项。一些 EPROM 编程器可能要求输出文件地址字段包含字节数(而非字数)。如果您使用 -byte 选项,输出文件地址将针对每个字节递增一次。例如,如果起始地址为 0h,第一行包含 8 个字,并且您不使用 -byte 选项,则第二行将从地址 8 (8h) 开始。如果起始地址为 0h,第一行包含 8 个字,并且您使用 -byte 选项,则第二行将从地址 16 (010h) 开始。两个示例中的数据是一样的;-byte 仅会影响输出文件地址字段的计算结果,而不影响转换后数据的实际目标处理器地址。
--byte 选项使输出文件中的地址记录引用该文件中的字节位置,无论目标处理器是否可按字节寻址。