我制作了以下 intel hex 文件片段来测试几个 8051 处理器模拟器:
:1000F5007002501F500CED2562FDEE3561FEEF35A7
:1001050060FFE56233F562E56133F561E56033F57E
我使用的一个位于此处:http ://www.jroweb.de/8051/
根据我的研究,据我了解,英特尔十六进制文件的校验和是通过将所有十六进制数字对(最后一个除外)相加来计算的,然后将结果与 255 进行与运算以获得 8 位值,将值取反,加 1,然后做 mod 256。
我基本上遵循了这些论坛的受访者的数学:
当我执行计算时,上面代码片段中每一行的校验和值都是正确的,但是在我上面提到的 8051 处理器模拟器程序中,它在最后一行显示校验和错误。它认为该值应该是 7F 而不是 7E。
是否有可能在最后一个 hex 文件行中存在误报(这会使某些软件误以为 7F 是正确的值)?如果是这样,我应该如何安排我的十六进制文件中的最后一行来修复它?