菜農的超級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網上有下載,也可通過頭條私信聯系菜農。