导航:首页 > 源码编译 > 十六进制文件反编译成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语言相关的资料

热点内容
python目标识别代码 浏览:337
为什么我的世界连不到服务器 浏览:813
更改pdf字体大小 浏览:574
java一对一聊天 浏览:477
如何查看服务器峰值cpu 浏览:660
30岁入行程序员 浏览:858
51单片机汇编指令表 浏览:377
储存卡的安卓文件夹 浏览:787
吃鸡如何换服务器属性 浏览:403
凤鸣为什么目标服务器无响应 浏览:598
二手房面签通过后才去解压 浏览:306
pdf如何删除其中一页 浏览:162
爱情数字加密码 浏览:836
编译原理属于计算机的什么层次 浏览:438
app是什么属性 浏览:445
我的世界扁桃服务器在什么地方 浏览:67
下载免费pdf转word软件 浏览:400
javapdf转换成word 浏览:170
php取一条记录 浏览:136
cwindows高级编程 浏览:85