導航:首頁 > 源碼編譯 > 十六進制文件反編譯成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語言相關的資料

熱點內容
貝葉斯演算法程序 瀏覽:442
萬變語音的語音文件夾儲存在哪 瀏覽:27
小米手機裝的app哪裡顯示 瀏覽:982
androidcpu位數 瀏覽:830
去哪裡舉辦app 瀏覽:708
木匠解壓器 瀏覽:365
反詐app在哪裡下安全 瀏覽:745
python判斷linux系統 瀏覽:823
git伺服器如何啟動 瀏覽:43
noi演算法 瀏覽:461
zip解壓縮是電腦自帶的嗎 瀏覽:643
魔術演算法術嗎 瀏覽:783
復式五肖演算法 瀏覽:721
海康威視設備已加密 瀏覽:663
自適應路由演算法 瀏覽:315
pythonxlwt寫入一列 瀏覽:995
性之助app哪裡可以下載 瀏覽:414
安卓如何自己改圖標 瀏覽:848
如何去掉app資源庫的建議 瀏覽:730
中興研發面試要寫演算法嗎 瀏覽:65