導航:首頁 > 源碼編譯 > 十六進制文件反編譯成c語言

十六進制文件反編譯成c語言

發布時間:2024-11-23 16:24:40

❶ 機器語言(二進制或十六進制)是如何轉成匯編語言(英語)的 能不能轉成中文 為什麼

1.
你需要明白,微處理器的所有執行功能都是固定的,並且它們是有固定順序的,比方說在51指令集里功能的順序是:
00——Nop(空操作)
01——AJmp(絕對跳)
02——LJmp(長跳)
03——RR(邏輯右移)
04——Inc(遞加)
……
也就是說,51單片機里共N種功能,第X種功能是***。
而在80x86匯編里,更加復雜的匯編指令其實也都是按順序組織好的「數字」,比如ADD指令,按照其操作碼的不同(比方說目標操作符是Ax還是Bx),從B8開始有數個標號都屬於Add指令。

匯編時,我們寫的代碼都是助記符也就是諸如Add,Mov這樣的指令,而編譯時,就會把這些指令換成對應的數字了。這種轉換是固定的,也就是說Mov永遠只會轉換成那幾種形式(之所以會有好幾種是因為操作數的類型不同)。

2.
機器語言其實就是上面提到的「數字標號」,也就是指功能序號。比方說一條機器語言是00,按照上面的表找出來,就是Nop空操作指令,當單片機從ROM中執行到00這條代碼的時候就會自動調用「第00號功能」,而這個功能就是空操作。所有同型號的51單片機都是這么處理的。

3.
上面從字面上解決了你這個問題。但是我看了你的追問,似乎你想知道的不是這個,而是數字怎麼變成字?好吧……

首先你要知道ASCII碼,也就是數字和英文字母及標點符號之間的關系。舉個例子,65這個數字,在ASCII碼中可以表示大寫字母A,依次的,66可以表示B;32表示空格,13表示回車,等等。ASCII碼佔一個位元組。

漢字,比較特殊的一類字元,關鍵就在於它的復雜。英文字母加上標點符號和一堆稀奇古怪的符號,撐死了用127個ASCII碼表示就完事了,但是常用漢字遠不止它的十倍。所以漢字在數字邏輯中的處理,是按另一種編碼存在的。一般的ANSI格式文件是將漢字表示為GB-2312編碼,這種編碼跟ASCII碼不沖突,占兩個位元組。關於GB-2312編碼的具體情況可以網路查詢,規則比較復雜,沒辦法簡單講清楚的。注意這里講的是字元的表示規范。

至於指令能不能用漢字來表示,就是相當於 加 A,#30 這樣的指令能否存在,我想說的是,完全可以實現;但是這種匯編指令跟 ADD A,#30 有什麼區別?我們只需要把現有的匯編編譯器稍做修改,讓它可以識別這樣的指令,然後將「加」換成ADD,再把它轉換成數字,在實現上和用Add根本沒有區別。

現在的「易語言」,差不多也是用的這種原理,只是寫出了可以識別漢字指令的編譯器,然後還是使用的形如Delphi和VB一樣的編程風格。說白了就是將國外的產品進行一個「山寨」。如果你還不懂,說明我上面講的你沒懂。。。那我也沒辦法。

4.
其實在微處理器,或者CPU運行期間,內存中只有數字,也就是二進制碼,上面所有提到的,包括指令和字元,都是數字形式存在。而我們通常操作時看到的字元,都是用另外的方式(如顯卡)轉換成圖形放到顯示器上的,並不是處理器自帶的功能;單片機要顯示圖形字元,需要另外編程。

而對於輸入,其實也是將輸入的字元轉換成數字才能存儲到內存之中。

❷ 用於單片機燒寫的文件-----.hex文件,如何將.hex文件轉換為容易解讀的語言---C語言。詳細步驟!

用51反匯編工具 V1.0 智能版(這個可以反匯編的)
Hex-Rays插件 v1.0.071108。。。(這個可以反C語言的,貌似是最好的了)
但是反出來的效果不太好。。
因為官方的要付費,所以沒用過,不能給你提供詳細步驟了,不好意思
自己去搜索下,研究下吧 呵呵

閱讀全文

與十六進制文件反編譯成c語言相關的資料

熱點內容
中原找房app如何注銷 瀏覽:839
程序員思考高手 瀏覽:593
gcc編譯器是幹啥的 瀏覽:808
int在java中的長度 瀏覽:132
電腦必備的五個神仙軟體程序員 瀏覽:212
什麼系統屬於安卓 瀏覽:359
有什麼游戲安卓oppo可以玩 瀏覽:721
microchip編程 瀏覽:872
數控車床宏程序編程入門 瀏覽:651
如何查伺服器上的密碼 瀏覽:874
手機alipay文件夾刪除 瀏覽:801
浩辰cad命令行 瀏覽:351
移動加密思路 瀏覽:970
php手冊pdf 瀏覽:752
安卓手機推薦什麼鍵位 瀏覽:112
android登錄驗證碼 瀏覽:476
聯通雲伺服器管理賬號 瀏覽:309
蘋果7加密晶元壞了 瀏覽:516
壓縮包2g解壓後有多大 瀏覽:956
php人才管理系統 瀏覽:21