如何用MPLAB进行PIC反汇编

如何用MPLAB进行PIC反汇编,第1张

MPLAB

应该就可以。

所谓的机器码应该就是二进制文件吧?

MPLAB IDE 可以进行反汇编(相信它也是最准确最全的PIC反编译工具)

。具体步骤如下:

1.

启动MPLAB IDE 执行Configure菜单下的Select Device选择好芯片

.

2. File菜单下Import导入要反编译的HEX文件

.

3.View菜单下Program Memory 查看程序存储器的内容

,

在程序存储器内容显示窗口的左下角切换到Machine或Symbolic,

在这个窗口上就可以看到每一个地址和HEX文件对应的ASM“反编译”就是察看源代码,其实最佳的PIC“

反编译”工具就是MPLAB-IDE,也具有察看源代码的功能。不过大家要注意

由于PIC采用分页技术,“反编译”后的源程序再次编译后一般FILE-->IMPORT-->IMPORT TO MEMORY -->调入.HEX文件(你的机器码应该是bin文件或者hex文件,都差不多了!)

然后再WINDOW中打开PROGRAM MEMORY窗口,就得到了源程序

注意所有未用的程序段反汇编后全部成了XORLW 0FFH

1、pic单片机的汇编语言中,目前还没有直接能对位取反的指令,只有对寄存器取反的指令,比如:

COMFF,d

这条语句中“F”是寄存器的名称,当“d=1”时,结果存入“F”,当“d=0”时,结果存入“W”。这个“W”书面解释是工作寄存器。可理解为过渡寄存器或临时寄存器,做中转数据用。

2、在汇编语言中要实现位取反,可通过位状态检测判断来对位进行“置1”或“清零”,详见以下程序。

目的:将寄存器 PROTB,3 取反

*******************************************************************

BTFSSPORTB,3 检测PORTB,3位,为1跳转QINGLING。

GOTOZHIYI;为0跳转到ZHIYI。

QINGLING;清零程序段,这是网络标号,可理解为一段程序的名称。

BCFPORTB,3;判断之前PORTB,3位为1,这句作用是将 PORTB,3 清零 。

GOTOWORK 跳转到 WORK 程序段继续运行。

ZHIYI;置1程序段, 这是网络标号,可理解为一段程序的名称。

BSFPORTB,3判断之前PORTB,3位为0,这句作用是将 PORTB,3 置1。

GOTOWORK 跳转到 WORK 程序段继续运行。

WORK

... ...

;********************************************************************

;注意注意,编程时,指令必须用TAB键空出一格,网络标号必须顶格

;*******************************************************************


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12149082.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存