到底为什么有十六进制转换器的对象?

问题描述

我正在研究汇编语言编程。我遇到了开发微控制器程序的步骤。 在最后一步中,为什么将.obj文件转换为.hex文件。该过程说该文件已转换为.hex并刻录到ROM。根据我的理解,.obj文件已经是一种机器语言代码并且可以运行。 如果这个问题有意义,请解释为什么在最后一步中需要OH转换器?

enter image description here

解决方法

“ obj”可以是任何东西,没有标准。它可能是机器代码,可能是某种抽象的“目标代码”格式,它可能包含调试信息(例如,变量/函数名称),也可能不包含。通常,它不是最终的二进制文件,而是链接程序可以理解的格式。

即使使用汇编器编写代码,也必须通过在线调试器或专用电路编程器以某种方式将该代码下载到内存中。然后,您需要工具可以处理的文件格式。

“ abs”通常是机器代码,但包含调试信息,用于通过调试器下载程序并进行故障排除。

“ hex”是标准化的“ Intel hex”格式,它是没有调试信息的原始机器代码,以ASCII格式表示。在线编程人员通常使用它,并且将通用格式用于生产中的最终产品二进制文件。 (其他此类常见格式为.bin和.s19)