菜农的超级51反汇编disasm51用着如何?
菜农的51超级反汇编disasm51是在1993年编写的,在DOS上用命令行运行的。
当时发现万利的仿真器自带的intel编写的61反汇编不错,但是代码和数据的分离做的不太好,但优点是可以手工指定从某区域开始反汇编。
菜农是受到还反汇编的启发产生了编写反汇编的念头。
当时需要许多数据格式的转换,所以想练手,故编写了许多转换程序,如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网上有下载,也可通过头条私信联系菜农。