应该就可以。
所谓的机器码应该就是二进制文件吧?
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键空出一格,网络标号必须顶格
;*******************************************************************
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)