当前位置:首页 > 单片机 > 单片机
[导读]要正确获取程序的目标代码,首先要明确程序代码的存放地点。51单片机的程序存储器最大空间为64KB,在一个实际的应用系统中,程序存储器的分布情况可能有以下几种:(1)只使用了片内程序空间。而没有使用片外的程序空间

要正确获取程序的目标代码,首先要明确程序代码的存放地点。51单片机的程序存储器最大空间为64KB,在一个实际的应用系统中,程序存储器的分布情况可能有以下几种:

(1)只使用了片内程序空间。而没有使用片外的程序空间。

其硬件特征为:/EA引脚接VCC;/PSEN引脚为空脚。

这种情况比较简单,全部应用程序都在单片机内部的程序存储器中,我们只要使用编程器将程序代码读出来,保存为一个目标代码文件就可以了。要注意的是,有一些新型的单片机具有加密功能,如果进行了加密,其中的程序代码就是不能读出。

(2)没有使用片内程序空间,片外程序空间由单个存储芯片构成。

其硬件特征为:/EA引脚接GND;/PSEN引脚接到一个存储芯片上。

这种情况下,全部应用程序都在单片机外部的程序存储器中, 原则上我们只要使用编程器将程序代码读出来,保存为一个目标代码文件就可以了。但要注意的是,这样得到的并不一定是真正的目标代码,因为,为了防止程序代 码被读取、反汇编,很多设计人员都采取跳接线的方法,将某些地址线跳接或将某些数据线跳接或将地址线、数据线都进行跳接,从而保护自己的程序不被反汇编 (参见图1~图4)。这样一来,我们从存储器中读取的就不是真正的程序目标代码,必须进行某种变换,将其转换为真正的程序目标代码,才能进行反汇编。

要进行目标代码的变换,首先必须根据硬件画出实际的地址和数据的接线图,然后借助于工具软件进行变换。在“51汇编集成开发环境”(其下载网址为www1.skycn.com/SOFt/15074/html)中,提供了一个变换工具,从软件界面的[辅助工具]—[目标代码转换]-[bin代码还原]就可以启动这个工具。

单击[浏览]可以选择要转换的代码文件,注意:这里的代码文件只能是二进制代码文件,即bin文件,如果你通过编程器读取后保存的文件不是bin文件,就 需要先将其转换为bin文件,在“51汇编集成开发环境”的[辅助工具]-[目标代码转换]菜单下,有相应的转换工具。

单击[另存为]可以选择转换结果的存放地点和文件名,转换结果也一定是bin文件。

再根据实际的地址、数据的接线图,来选择地址线跳接、数据线跳接,设置其接线表,然后单击[还原]即完成了代码的变换。

(3)没有使用片内程序空间,片外程序空间由多个存储芯片构成 其硬件特征为:/EA引脚接GND;/PSEN引脚接到了几个存储芯片上。

这种情况下,全部应用程序在单片机外部的多个存储芯片中,我们首先需要使用编程器将每一个存储芯片上的程序代码读出来,分别保存为一个目标代码文件,然后将它们合并为一个文件。

在读取存储芯片上的程序代码时,要注意查看硬件接线有无跳接线,如果有跳接线,必须进行代码的变换。

在合并程序代码时,要注意每一个存储芯片的地址范围,必须按地址连接,才能得到真正的目标代码文件。 在“51汇编集成开发环境”中,从[辅助工具][目标代码转换]-[bin代码合并]可以启动合并工具。 单击[浏览]可以选择要合并的两个代码文件,注意:第一个代码文件必须是从0地址开始的文件,单击

[另存为]可以选择合并后的文件存放地点和文件名,然后单击[开始]即完成了代码的合并。

若选择直接连接,则第二个代码文件将紧接着第一个文件后连接;若选择按地址连接,则第二个代码文件将从指定的地址开始连接。如果两个代码文件之间有空字 节,则将填充为“00H”或“FFH”;如果两个代码文件在空间上有重叠,则将得到提示:“地址空间存在重合现象,不能正常合并!”。

(4)既使用了片内程序空间,也使用片外的程序空间,其硬件特征为:/EA引脚接VCC;/PSEN引脚接到一个存储芯片或几个存储芯片上。

在这种情况下,全部应用程序分布在单片机内部的程序存储器和外部的多个存储芯片中,获取程序代码的基本方法同(3)。

这里要注意的是,片外程序存储器的 地址范围应该在1000H~FFFFH之间,如果某一片程序存储器的地址是从0000H开始的,那么其0000H~0FFFH之间的代码是无效的,必须将 其去除。借助于“51汇编集成开发环境”的[辅助工具]-[目标代码转换]菜单下的[bin代码拆分],可以完成这一 工作。

单击[浏览]可以选择要转换的代码文件,再选择片内ROM空间为4KB,然后单击[开始]即可。

要想成功进行反汇编,还必须有一个好的反汇编工具。在“51汇编集成开发环境”中集成有一个反汇编工具。该工具目前不支持对非0地址开始的部分代码 进行反汇编,因为非O地址开始的部分代码无法区分程序和数据,但是对于从O地址开始的全部或部分代码的反汇编效果较好,能够智能分段、自动地分离出程序和 数据,使获得的源程序具有较好的可读性。

从软件界面的[编译]-[反汇编]-[MCS-51反汇编]可以启动这个工具

处理。要进行反汇编必须按以下步骤进行:

(1)借助于编程器分别从单片机和28C64中读取代码,保存为两个

文件。其中,从单片机中读取的文件名为CODE0.bin;从28C64中

读取的文件名为CODE1.bin。

(2)用“51汇编集成开发环境”中的[bin代码还原],将从28C64中读取的文件CODE1.bin转换为真正的程 序代码,保存为文件CODE2.bin。

(3)用“51汇编集成开发环境”中的[bin代码合并],将CODE0.bin和CODE2.bin合并为一个文件CODE3.bin.

(4)用“51汇编集成开发环境”中的[MCS51反汇编],对CODE3.bin进行反汇编,得到的源程序文件保存为CODE.ASM。

至此,反汇编成功。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭