如何将16进制机器码反汇编输入到8086(debug)RAM数据区,并在debug中反汇编

机器码和汇编代码如何互相转换啊!_易语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:125,822贴子:
机器码和汇编代码如何互相转换啊!收藏
用易语言转换!求大神。
易语言精易模块,天猫电器城,汇聚国内电子元件大品牌,100%正品,安心购买!天猫电器城,品牌旗舰,闪电到家,超值包邮,智新生活!
逗比来了......逗比你好,逗比再见
你可以百度下 看雪论坛的一个系列的帖子,叫 【原创】打造自己的反汇编引擎虽然不是易语言的,不过看懂的话易语言也能写
对这方面是一片空白
debug e指令?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或汇编 工具debug显示汇编指令的 原理 --有图
汇编 工具debug显示汇编指令的 原理 --有图 30
debug 原理 &有图内存地址 & &内存数据 & 汇编代码 & 8b01 & & & mov ax,[bx+di]就是在内存地址里 8b01 这里的数据 对应的汇编指令是 &mov ax,[bx+di]&在od里面的汇编指令每一个 mov ax,[bx+di] 对应是内存数据多是8b011.系统他是怎么样知道 内存地址 的数据8b01对应是汇编指令是 8b01 &2.比如我知道某内存地址的数据 怎么样知道他对应是汇编指令是那一条呢 、3.od里面的汇编指令他是怎么样得到的
1:因为汇编指令和机器指令是一一对应的,所以,debug的反汇编功能比如遇到b8,就把它翻译成mov ax,???然后向后读取两个字节做常数,也就是源操作数.
2:每个指令都不同,个机器指令,从0--0ffh,每个指令的长度和做的功能都不同,而且指令不对齐.
3:od的实现反汇编和debug实现是一样的.
汇编指令和机器指令是一一对应的,
那不同的cpu
的“汇编指令对应的机器指是不一样懂咯??,”
是的呀.不同的cpu有不同的指令集.
有反汇编引擎的 反汇编引擎的工作就是把你看到的8b01机器码翻译成mov ax,[bx+di]这种你能看懂的伪指令。看Intel指令手册,都是有规则的
相关知识略懂社热议
其他回答 (1)
走不同的通道识别类型
相关知识略懂社热议等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号汇编语言怎么使用debug命令查看相加结果在哪里_百度知道218750实验一
DEBUG的使用_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
218750实验一
DEBUG的使用
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢第6章 动手操作-DEBUG的使用2(X86汇编教程)
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
第6章 动手操作-DEBUG的使用2(X86汇编教程)
本教程目录
&&&&&&本章将真正开始教你一些汇编指令,也许你早就期待着了.好,首先说汇编指令的格式(看不懂的话不要纠结在这里,继续看,后边会进行讲解!):
[代码标号][:]&指令名&[空格][操作数1][,][操作数2]
&&&&&&&&打了尖括号的是每行汇编代码都必须有的,打方括号的是看情况决定有没有的,详解:
标号(这个暂时不用理解,先大概看看,以后讲到了再理解.):
&&&&&&&&之前说过,汇编代码是在内存中的,所以,每行代码都会在内存中占用一定字节,当然,也就有了个地址.有的时候我们可能会需要用到某行代码的地址,代码将会被放到内存的什么地方,一般在代码编译出来就会计算好.所以在代码中可以直接输入那行代码在内存中的地址.但是呢.假如修改了代码,那内存地址不就变了吗? 所以人们想了这么个办法:用一句文本代替数字地址,等编译器编译的时候计算出那行文本所代表的代码的地址再自动填写进引用到那句文本的地方.
&&&&&&&&这个是跟在标号后边的,把标号和指令名区分开来(就算特殊情况标号后边没有任何东西也必须加&:&).
&&&&&&&&汇编代码的指令,CPU根据指令知道要做什么事.
&&&&& & 把指令和操作数区分开来.
&&&&&&&&把2个操作数区分开来
&&&&&&&&执行指令所需要的数据,比如我们在数学中要进行除法运算,需要被除数和除数这2个&操作数&,在汇编里,汇编指令也需要相应的操作数才能进行计算,需要多少个操作数由指令决定,有些指令不需要操作数,有些需要1个,有些需要2个)
第一个指令
&&&&&&&&相信你已经从前边的内容中学会了汇编的语法格式.现在将教你1个指令,并教你在Debug中输入它进行测试.指令资料:
指令名&&&&&&&&&&&&&&&&&&&&&&&&&&&:MOV&
操作数数量&&&&&&&&&&&&&&&&&&&&:2
操作数用途&&&&&&&&&&&&&&&&&&&&:目标操作数,源操作数
指令用途&&&&&&&&&&&&&&&&&&&&&&&&:把一个数据从源操作数复制到目标操作数
&&&&&&&&我希望你能写一个笔记,把将来教的各种指令记录下来.这对学习有好处,指令手册什么的,只有手册作者的理解,无法写入你自己的理解.人家写的你不一定看的懂.
& &&&&&&好了,接下来,在Debug里面试一下这个指令吧.打开DeBug,用A指令进入[汇编代码编辑模式](不要急着输入代码,先看讲解!!!)
汇编代码编辑模式讲解
&&&&&&&&根据上图,你会看到右边显示一个内存地址,你输入的代码将被转换成机器码放到这个地址.旁边有一个光标,这就是你输入汇编代码的地方了.在这里输入代码,按下回车,就会直接将该行代码转换成机器码,并计算出长度.如果输入的代码有错误,DeBug会在错误处下面显示:&Error&
&&&&&&&&DeBug并不是汇编编译器,所以对汇编代码是有限支持,标号是不给用的,只支持十六进制,至于二进制和十进制,反正我是没在这里用到过.
好了,来试试MOV指令吧,用MOV往寄存器AX里写入数据1234H.
&&&&&&&&把1234H写入AX,那么1234H就是&源操作数&了,AX就是&目标操作数&了,代码这么写(注意指令名和第一个操作数之间的空格,不要漏了!):
MOV AX,1234
输入指令后回车,你会看到DeBug还在代码编辑模式.在么退出代码编辑模式呢?直接空代码回车即可:
代码编辑成功,如何执行刚才输入的代码呢?不急,先看看寄存器内容吧,R指令:
首先看,AX寄存器.内容是0000,接着看内容的最下方.之前看不懂的一行.现在已经基本能看懂了.这里显示的是即将执行的代码(地址为:CS段寄存器:IP偏移寄存器)格式如下:
内存地址(段:偏移) 机器码(数字代码) 反汇编(汇编代码转机器码了,机器码转回汇编代码叫反汇编)
&&&&&&&&由上可见MOV AX,1234的机器码是B8 34 12(这个34 12就是第2个操作数了,至于为啥会反过来,这是高位低位排序原因,请自行翻阅之前的章节)好了,来执行代码看看吧(终于执行代码了TAT),在 DeBug中,用T指令可以执行一行代码.执行看看:
好了执行完毕.看看AX寄存器的内容:
&&&&&&&&&成功了,我们用汇编指令把一个数字写入到了AX寄存器里.
这一章就讲到这里,给个小作业,试试看把1234H写入BX寄存器,然后把BX寄存器的内容复制到AX寄存器,成功后把代码回复上来~
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights Reserved}

我要回帖

更多关于 反汇编 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信