已知汇编代码怎样知道对应的机器码?
要经过汇编程序才可以的.一般有ASM-86和MASM-86这两种编释工具
方法一、
开始运行里面输入DEBUG并确认执行,这时候打开一个黑色的DOS窗口,提示符是-,你可以在-后面输入命令,你输入A并回车之后就可以输入汇编指令,最后按几次回车就推出输入汇编语句的界面,回到-提示符号,这时候你输入U并回车就可以查看你刚才输入的汇编语句的机器代码,我用这个方法查看XOR AX,AX代码的过程如下:
-a
0AFC:0100 xor ax,ax
0AFC:0102
-u
0AFC:0100 31C0 XOR AX,AX
方法二、
查阅CPU手册,每一个CPU都有相应的机器代码手册,详细说明每一条机器指令的编码规则。
如图
我随便写了下,
查手册,或者用反汇编工具.
因为,汇编指令与机器码并不一定是一一对应的.
用个反汇编工具就可以了.
已知汇编代码怎样知道对应的机器码?
如图 我随便写了下,
怎么才能知道汇编指令所对应的机器码呢?
方法一、开始运行里面输入DEBUG并确认执行,这时候打开一个黑色的DOS窗口,提示符是-,你可以在-后面输入命令,你输入A并回车之后就可以输入汇编指令,最后按几次回车就推出输入汇编语句的界面,回到-提示符号,这时候你输入U并回车就可以查看你刚才输入的汇编语句的机器代码,我用这个方法查看XOR AX,AX代...
keil怎样看编译产生的汇编代码
向TA提问 私信TA 展开全部 在成功编译的前提下,按Ctrl+F5,或依次点击菜单栏的“Debug”>>“Start\/Stop Debug Session”,切换到调试界面。 调试界面下,依次点击菜单栏的“View”>>“Disassembly Window”,即可打开反汇编窗口,其中包含有混排的源代码以及编译生成的汇编代码,如图所示。 注意经过优化后,源代码与汇编...
如何在Code:Blocks下查看程序的汇编代码
设定断点。就是设置查看汇编的那一段代码。在代码的左边(代码行)右键就可以设定调试断点了。点击调试,就可以看到汇编代码了。如下:如果想看指针或数组,可以编辑watch窗口,定义你想watch变量的类型。有很多窗口,自己可以多探索尝试。
如何查看C语言对应的汇编语言
有两种方法:(1)增加参数\/FA:Project->Setting...,C\/C++选项卡中的Project Options中增加参数\/FA,编译后debug目录中将会增加对应源文件的汇编文件(*.asm)。(2)如果想查看C语句对应的汇编代码的话,可以这样:F11单步调试,在debug工具栏中选择“disassembly”即可。每行C代码下面就是对应的汇编...
如何快速看懂汇编语言程序
可以看出,上述代码并不能告诉我具体结果是多少,除非我们通过工具去访问这一内存区域,于是一个系统会设计出来专门让我们进行基本的输入输出,把计算机的内部情况甚至内存情况通过I\/O口送出来,这些IO设备,比如键盘负责接收我们的机器指令(可以是汇编结果,也可以是高级语言产生的二进制指令和数据流),把...
如何快速看懂汇编语言程序?
可以看出,上述代码并不能告诉我具体结果是多少,除非我们通过工具去访问这一内存区域,于是一个系统会设计出来专门让我们进行基本的输入输出,把计算机的内部情况甚至内存情况通过I\/O口送出来,这些IO设备,比如键盘负责接收我们的机器指令(可以是汇编结果,也可以是高级语言产生的二进制指令和数据流),把...
如何查看IAR编译器编译后的汇编代码,我想知道这个编译器是如何处理中...
编辑界面右击工程点击options菜单项,选择c\/c++ compiler选项卡中的list选项,勾选output assembler files,编译后则生成离线汇编代码文件。调试界面下,点击view \/ disassembly 菜单项,则显示在线汇编代码窗口。
如何快速读懂反汇编的汇编代码?
回答:简单的逆向工程其实不难,IDA加Hex-Rays插件,可以直接把汇编还原成C代码。虽然还原出来的代码比较怪,但是已经比直接看汇编代码强多了。 如果想学逆向工程,常用的汇编指令要熟悉,各种调用约定要搞清楚,比如stdcallastcallcdecl、thiscall等,还有ARM的APCS,这对你理解函数之间的调用、参数的传递、栈指针的...
怎么查找汇编语言对应的机器码?
汇编语言有许多种。 不同的 CPU 的机器码,也不一样。比如,汇编语言 PUSH 的机器码,就有很多种形式 稳妥的方法,就是到它们的官网去查。 另外,机器码,人是看不懂的。机器码是由 CPU 来执行的,你查出来,也没有什么用。
丛言泉盈: 方法一、 开始运行里面输入DEBUG并确认执行,这时候打开一个黑色的DOS窗口,提示符是-,你可以在-后面输入命令,你输入A并回车之后就可以输入汇编指令,最后按几次回车就推出输入汇编语句的界面,回到-提示符号,这时候你输入U并回车就可以查看你刚才输入的汇编语句的机器代码,我用这个方法查看XOR AX,AX代码的过程如下: -a 0AFC:0100 xor ax,ax 0AFC:0102 -u 0AFC:0100 31C0 XOR AX,AX 方法二、 查阅CPU手册,每一个CPU都有相应的机器代码手册,详细说明每一条机器指令的编码规则.
蓬江区19187704720: 怎么查找汇编语言对应的机器码? - ?
丛言泉盈: 如果你指的是x86汇编的话,你可以往下看:一般的反汇编器会显示机器码,比如vs调试模式下的反汇编页就可以设置显示机器码.或者使用ollydbg等反汇编调试器,也会显示反汇编代码和机器码.如果你想知道一段汇编代码最终的生成机器码,一般需要编译它,让编译器生成机器码.如果你对汇编语言足够熟悉,你可以自己看出一部分的机器码,比如e8是call指令之类的,一般这个是比较困难的,熟练的逆向人员可能对这个更熟悉一些.x86汇编有自己的编码规则,细节可以参考intel的开发人员手册,里面有x86汇编的详细编码规则.还可以使用反汇编引擎 比如BeaEngine或者Capstone之类的,从输入汇编代码得到反汇编机器码.
蓬江区19187704720: 怎么用汇编获得本机的机器码 - ?
丛言泉盈: 什么机器码?按理说不就是汇编指令的二进制代码吗?那你通过Windous开始菜单中的运行,输入“debug”然后再在debug中输入a,编写你想知道的汇编代码,然后回车,再输入“d 段地址:偏移地址”查看16位机器码不就得了,如果要32位的,就用TASM里的 Turbo Debugger 32-bit .具体请看: http://baike.baidu.com/view/45108.htm http://baike.baidu.com/view/541942.htm
蓬江区19187704720: 怎么才知道汇编指令对照的机器指令?有什么数学算法可以互相转换这汇编和机器指令? - ?
丛言泉盈: 这不是算的,是对表查出来的.就像ASCII表一样,A对应65 a对应97.汇编指令其实是机器码助记符的代名词而已,它俩本就是一样一样滴.想要知道汇编指令对应的机器码是多少可以通过查表或者用trubo debug软件或者MS-DOS的DOS窗口下debug查询.
蓬江区19187704720: 汇编代码:call near ptr xxxx 怎么转换成机器码 - ?
丛言泉盈: 可以用下面的代码得到call near ptr xxxx的机器码:call near ptr xxxx nop xxxx:结果是{232,1,0,0,0,144} (十进制) 或 E8 01 00 00 00 90 (十六进制) 可以看出,call near ptr xxxx的机器码是:232 XXXX (十进制) 或 E8 XXXX (十六进制)
蓬江区19187704720: 汇编指令机器码问题 - ?
丛言泉盈: 机器指令有它的编码规则,以若干位代表不同的操作码,若干位代表寻址方式组合,若干位表示操作数类型是字还是字节,若干位表示各个操作数,等等. 8086指令的具体编码可以查阅一些机器语言参考手机.一般说来,CPU里面只有少数几...
蓬江区19187704720: 请问大神们,汇编指令怎么转机器码?
丛言泉盈: 汇编指令到机器码基本上是一对一的转换,具体转换规则帮你转了篇文章,可以看看: http://bbs.fishc.com/thread-34304-1-1.html悬赏的话只需要在发帖那里选择发布悬赏即可.
蓬江区19187704720: cpu执行的时候如何知道对应的汇编指令,如.地址为20000H,为什么起内存中的机器码 - ?
丛言泉盈: 汇编语言写的程序,编译后就是二进制的指令代码了,CPU执行的是二进制指令码,而不是汇编语言,,,,一切的编译类语言都是这样的,先成为二进制指令码,供CPU执行
蓬江区19187704720: 汇编 转换 机器代码 - ?
丛言泉盈: 1.我们写的汇编程序是确实需要汇编成机器码机器才能读懂的.2.我们写引导区是这样一个过程:1)在windows下用文本写了一个汇编的引导区程序.2)用编译器msam汇编成机器码.3)写入一个软盘.4)在裸机上运行这段引导区程序.注意:注意这里的第二步,这个时候已经汇编成机器码了.其他:开机的时候BIOS会直接读取我们软盘的前512字节的内容到内存中去.如果这512字节的最后两个字节是55AA,则它会认定这是引导区,从而开 始执行.
蓬江区19187704720: 汇编翻译成机器码的问题 - ?
丛言泉盈: 同样的汇编出不同的机器码是因为你不能把他转化十六进制看,应该看他的二进制. B8 0010的二进制是1011 1000 0000 0000 0001 0000 BB 0010的二进制是1011 1011 0000 0000 0001 0000 一条指令分为 操作码 操作数1 操作数2 8086的操作码是6位,并不是8位,所以你会觉得相同的指令机器码不同. 如果看到机器码101110,你可以翻译成MOV XX,XX