菜农的51非常非常反汇编disasm51是在1993年编译程序的,在dos上用命令行不运行的。
当时发现到万利的仿真器自带的intelc语言程序的61反汇编比较不错,只不过代码和数据的分离做的不太好,但优点是可以手工更改从某区域开始反汇编。
菜农是受到还反汇编的启发再产生了c语言设计反汇编的念头。
当时要许多数据格式的转换,所以我想练手,故c语言设计了许多可以转换程序,如hex2bin,bin2hex的这些已经有的命令行程序。
反汇编的要点那就是“数据和代码的分离”!
菜农的原则是即便反汇编出的全部是数据区,也能实际编译器再次编译。
而51就开始必须是从“复位掉线向量”就开始正常运行的,它运行程序过的,是“程序区”,未运行到的地方就叫“数据区”。
51有其他自动向量,如外部关闭向量,定时器掉线向量,串口中断向量等,但不是肯定会先执行,即可能会不存在,如果硬是负责执行,反汇编的代码绝对不对。
因为程序中存在地“散转程序”或函数指针,故指令中隐藏了程序的入口地址,而真入口地址在“变量”或“数组中隐藏地着。
故必须用户自己先添加这些“追踪向量”,即“满入口地址表”。
disasm51只支持64k以内的程序的反汇编,故地址为两个字节4个16进制数字。
因此现在是windows时代,故命令行早没人使用也更加实在不方便,故菜农将其导进到hotisp软件内,hotisp的的确工作是用isp去下载程序。
在hotisp,也可以选择类型主菜单“hotwc3”,子菜单“mcs51反汇编”,变会会出现disasm51窗口界面。
它是需要能提供disasm51.exe的安装路径(巳经系统默认完全安装),用户必须提供给bin格式的文件!
要是是hex格式,要在“文件转换”里进行hex和bin的自动转换。
disasm51这个可以和keil文件或keil工程实现联动。
再点击“打开keil文件”,即可在keil里再打开用户的反汇编后的a51文件,很方便地再编辑修改文件。
再点击“打开keil工程”,即可在keil里可以打开用户的工程,直接用keil编译用户的反汇编a51文件,这个可以生成沉淀hex文件,非常方便。
用户可以不中有keil内的芯片inc头文件,但要先转换成为“用户定义”def文件并能保存。
用户的所以我你的操作就在“用户定义”窗口内,然后只需点击“单次”或“蓝色箭头”即可运行反汇编。
其输出来为a51文件,这个可以在disasm51内的“a51文件”窗口内打开系统,也是可以用keil打开系统,或其他编辑软件一栏。
hotisp网上有可以下载,也可头条私信联系菜农。
以下为数据显示格式:
bin,它表示二进制数;dec,可以表示十进制数;hex,可以表示十六进制数;floating_point,它表示浮点数;以下为数据格式;
int,它表示16位(单)整型;dint,它表示32位双整型;real,可以表示32位实数型(浮点数);
word,来表示16位(单)字;dword,来表示32位双字;