我制作了以下intel十六进制文件片段,以使用几个8051处理器模拟器进行测试:
:1000F5007002501F500CED2562FDEE3561FEEF35A7
:1001050060FFE56233F562E56133F561E56033F57E
我使用的一个位于:http://www.jroweb.de/8051/
根据我的研究,据我所知,intel十六进制文件的校验和是通过对所有十六进制数字对(最后一个除外)求和,然后将结果与255进行“与”运算得到8位值,然后求反值,加1,并做256模。
我基本上是从这些论坛的受访者那里学数学的:
当我执行计算时,以上代码段中每行的校验和值都是正确的,但是在上面提到的8051处理器模拟器程序中,它在最后一行显示了校验和错误。它认为该值应该是7F而不是7E。
最后一个十六进制文件行中是否存在误报(这会使某些软件认为7F是正确的值)?如果是这样,我应该如何在hex文件中排列最后一行以对其进行修复?
答案 0 :(得分:0)
AFAICT您的校验和正确。根据此记录以及我提供给它的其他一些记录,模拟器似乎在某些输入上存在一个错误的错误。
您有几种选择,包括:
编辑模拟器的t8051m.ini文件,并将IgnoreChecksum
设置为1
通过编辑十六进制记录来携带模拟器的校验和,以此来嘲笑模拟器 期望而不是正确的校验和
反汇编模拟器的.exe文件,找到错误并修复。 (在您之前 竭尽全力,您可以尝试将问题报告给作者。它 修复程序可能是一个已知的问题,而作者却从未解决过 在他的网站上发布。)
使用其他模拟器