我正在尝试编写Intex HEX解析器。似乎扩展地址有两种样式(允许你处理大于64 kB的内存),并且这两种样式不应混合在同一个文件中:
我想编写一个解析器,它将以上述两种样式中的任何一种采用Intel HEX,并以上述任何一种样式输出。
除了03
(开始段地址)和05
(开始线性地址)之外,我已经处理了所有记录类型)。我基于维基百科文章的假设是,对于以下类型03
的记录(忽略破折号 - 只是为了帮助注释):
:04-0000-03-00003800-C1
|_1|___2|_3|_______4|_5|
其中:
1 - 04 -> byte count
2 - 0000 -> address
3 - 03 -> record type (Start Segment Address)
4 - 00003800 -> data
5 - C1 -> checksum
如果我要将其转换为05
类型的记录类型,则为:
:0400000500003800BF
我只需获取IP
记录的03
地址(最后2个数据字节),并将其设置为05
类型的数据字段,填充{{1} }};完全忽略0000
记录的数据部分的前2个字节(在此示例中为03
)。
这是对的吗?我是否做出任何错误的假设/完全忽略了这一点?