6

我遇到了 PIC Micro 控制器的问题。

我有一个很久以前编写的微控制器,我丢失了相关的源代码和原理图。现在我需要反转端口的值。我可以使用一些非门来做到这一点,但这样做很麻烦。或者,我需要将整个程序写回去。

我不希望在 PIC C 或 MikroC 中看到代码。拥有可理解的汇编代码就足够了。

那么有人对我可以用于此目的的优质 HEX 反编译器有任何经验吗?根据你的经验有什么意见吗?:)

编辑:设备 PIC 16F84A

4

4 回答 4

7

反编译不太可能是一个实用的解决方案,甚至更不可能存在用于您的特定编译器和指令集组合的工具。

然而,反汇编很简单,尽管您是否能够理解生成的代码是另一回事,因为 HEX 文件中没有保留任何注释或符号;如果您有原始目标代码,它可能会使反汇编更具可读性。有很多 PIC 反汇编器可用,只需谷歌它;我不能针对任何特定的问题指导您,因为有许多具有不同指令集的 PIC 系列,而您没有具体说明。

一个简单的反汇编方法是将您的 HEX 文件加载到 MPLAB 中并选择 View->Disassembly Listing,然后右键单击窗口并选择“Output to File”。这个输出可能需要一些按摩才能适合输入到汇编程序。

于 2010-06-03T10:44:40.347 回答
2

在官方 PICList 技术参考中有一个 PIC 反汇编器列表。

许多人从不使用独立的反汇编器,而是更喜欢在他们最喜欢的 PIC 模拟器中使用反汇编器。

http://piclist.com/techref/microchip/dissassemblers.htm

http://piclist.com/techref/microchip/simulators.htm

于 2010-06-23T16:27:52.110 回答
2

我知道这是一个旧帖子,但是我最近遇到了类似的问题,并没有在网上找到一个非常完整的答案。由于硬盘驱动器故障,我丢失了 MPLAB X IDE 项目,幸运的是我已经用代码的工作版本对设备进行了编程。

恢复 .hex 请
按照以下步骤从已编程设备中恢复 .hex 信息:

使用 MPLAB X IDE 和您的 PIC 编程器(我使用 PICkit3)从已编程的器件中读取 .hex 文件:

  • 为您的设备启动一个新项目。
  • 在“项目属性”中选择您的程序员。
  • 右键单击项目文件夹并选择“设置为主项目”。
  • 单击“Read Device Memory Main Project”旁边的箭头,然后选择“Read Device Memory to File”。将设备内存读取到 .hex 文件

反汇编 .hex
您可以在 MPLAB X IDE 中查看反汇编,但不能编辑或保存它(或者至少我不知道如何去做),而且它非常神秘。我发现最简单的,没有附加条件的反汇编器是与 gputils 一起打包的,它被称为 gpdasm。要下载和安装,请访问此处的 gputils 页面:

https://gputils.sourceforge.io/

现在打开命令提示符并导航到 .hex 文件所在的文件夹。使用以下命令从 .hex 生成汇编源文件:

gpdasm -p p16f84a -csno hexfile.hex > asmfile.dis

使用 -c -s -n 和 -o 选项,这会生成非常好的列表,非常接近能够按原样组装。显然变量名称和标签无法恢复,但至少可以识别子例程,这使事情变得容易得多。希望这对将来的某人有所帮助。

于 2020-12-12T09:32:42.903 回答
1

如果我没记错的话,您应该能够将 hex 文件加载到 MPLAB IDE 中并从那里查看汇编代码以及运行它并在仿真器中逐步执行代码。

如果设备不受代码保护,您还可以使用它从设备读取代码。

于 2010-06-03T10:43:26.523 回答