精华内容
下载资源
问答
  • 机器码汇编代码的工具·············································
  • 机器码转换汇编

    热门讨论 2012-07-30 07:39:14
    机器码转换为汇编代码
  • 汇编指定与机器码对照表
  • 汇编代码转成机器码——对输入有几点要求:指令是小写;一行只能有一条指令;每行开头不能有空格,必须一上来就是操作符,后面可以有空格;立即数只处理十进制数;输入-1代表程序结束
  • 8086机器码汇编对照表

    2010-12-13 10:59:50
    8086系统汇编机器码对照关系表 详细介绍8086到80386系列芯片对应的机器码的格式 并给出汇编机器码的对照关系表
  • 汇编代码转到机器码工具,支持CE OD格式显示,汇编转E 汇编机器码 非常好用的工具。 汇编代码转到机器码工具,支持CE OD格式显示,汇编转E 汇编机器码 非常好用的工具。 汇编代码转到机器码工具,支持CE OD格式...
  • 汇编机器码工具 ARM
  • 机器码 各种用二进制编码方式表示的指令,叫做机器指令码。开始,人们就用它编写程序,这就是机器语言。...由于机器码是由01组成的二进制序列,可读性实在太差,于是人们发明了指令。 指令就是把机器码中特定

    一 机器码

    各种用二进制编码方式表示的指令,叫做机器指令码。开始,人们就用它编写程序,这就是机器语言。

    机器语言虽然能够被计算机理解和接受,但和人们的语言差别太大,不易被人们理解和记忆,并且用它编程容易出差错。

    用它编写的程序一经输入计算机,CPU 直接读取运行,因此和其他语言编的程序相比,执行速度最快。

    机器指令与 CPU 紧密相关,所以不同种类的 CPU 所对应的机器指令也就不同。

    二 指令

    由于机器码是由0和1组成的二进制序列,可读性实在太差,于是人们发明了指令。

    指令就是把机器码中特定的0和1序列,简化成对应的指令(一般为英文简写,如mov,inc等),可读性稍好。

    由于不同的硬件平台,执行同一个操作,对应的机器码可能不同,所以不同的硬件平台的同一种指令(比如mov),对应的机器码也可能不同。

    三 指令集

    不同的硬件平台,各自支持的指令,是有差别的。因此每个平台所支持的指令,称之为对应平台的指令集。

    如常见的

    • x86 指令集:对应的是 x86 架构的平台

    • ARM指令集:对应的是 ARM 架构的平台

    四 汇编语言

    由于指令的可读性还是太差,于是人们又发明了汇编语言。

    在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbo1)或标号(Labe1)代替指令或操作数的地址。在不同的硬件平台,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。

    由于计算机只认识指令码,所以用汇编语言编写的程序还必须翻译成机器指令码,计算机才能识别和执行。

    五 高级语言

    为了使计算机用户编程序更容易些,后来就出现了各种高级计算机语言。

    高级语言比机器语言、汇编语言更接近人的语言。当计算机执行高级语言编写的程序时,仍然需要把程序解释和编译成机器的指令码。完成这个过程的程序就叫做解释程序或编译程序。

     

    高级语言也不是直接翻译成 机器指令,而是翻译成汇编语言吗,如下面说的C和C++

    六 C、C++源程序执行过程

    编译过程又可以分成两个阶段:编译和汇编。

    编译过程:是读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码。

    汇编过程:实际上指把汇编语言代码翻译成目标机器指令的过程。

     

    七 字节码

    字节码是一种中间状态(中间码)的二进制代码(文件),它比机器码更抽象,需要编译器转译后才能成为机器码。

    字节码主要为了实现特定软件运行和软件环境、与硬件环境无关。

    字节码的实现方式是通过编译器和虚拟机器。编译器将源码编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令。

    字节码典型的应用为:Java bytecode

    展开全文
  • 汇编指令与机器码对照表,按字母排序,有索引,有对应的英文解释,非常方便,可以用360极速浏览器打开
  • 转自wgj2009 ; http://d.download.csdn.net/down/1208711/wgj2009; 内含Intel80x86 OPCODEs.PDF,opcodes.html,汇编指令的字节大全.html三个文件。
  • 64位汇编机器码

    2017-06-30 13:28:02
    windows 64位汇编语言 转机器码工具
  • je或jz // 相等则跳(机器码是74或84) jne或jnz // 不相等则跳(机器码是75或85) jmp // 无条件跳(机器码是EB) 汇编指令对应机器码表 一、状态寄存器 PSW(Program Flag)程序状态字寄存器,是一个16位寄存器...

    je或jz         //  相等则跳(机器码是74或84)
       jne或jnz       //  不相等则跳(机器码是75或85)
       jmp            //  无条件跳(机器码是EB)

    汇编指令对应机器码表
    一、状态寄存器

    PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:
    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
    OF DF IF TF SF ZF AF PF CF
    条件码:

    ①OF(Overflow Flag)溢出标志。溢出时为1,否则置0。
    ②SF(Sign Flag)符号标志。结果为负时置1,否则置0.
    ③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0.
    ④CF(Carry Flag)进位标志,进位时置1,否则置0.
    ⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个节)产生的进位置。
    有进位时1,否则置0.
    ⑥PF(Parity Flag)奇偶标志。结果操作数中1的个数为偶数时置1,否则置0.
    控制标志位:

    ⑦DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。
    ⑧IF(Interrupt Flag)中断标志。
    ⑨TF(Trap Flag)陷井标志。
    二、 直接标志转移(8位寻址)

    指令格式| 机器码| 测试条件| 如...则转移
    ---|---|---|---
    JC| 72| C=1| 有进位
    JNC| 73| C=0| 无进位
    JZ/JE| 74| Z=1| 零/等于
    JNZ/JNE| 75| Z=0| 不为零/不等于
    JS| 78| S=1| 负号
    JNS| 79| S=0| 正号
    JO| 70| O=1| 有溢出
    JNO| 71| O=0| 无溢出
    JP/JPE| 7A| P=1| 奇偶位为偶
    JNP/IPO| 7B| P=0| 奇偶位为奇
    三、间接标志转移(8位寻址)

    指令格式| 机器码| 测试条件| 如...则转移
    ---|---|---|---
    JA/JNBE(比较无符号数)| 77| C或Z=0 > | 高于/不低于或等于
    JAE/JNB(比较无符号数)| 73| C=0 >= | 高于或等于/不低于
    JB/JNAE(比较无符号数)| 72| C=1 < | 低于/不高于或等于
    JBE/JNA(比较无符号数)| 76| C或Z=1 <= | 低于或等于/不高于
    JG/JNLE(比较带符号数)| 7F| (S异或O)或Z=0 > | 大于/不小于或等于
    JGE/JNL(比较带符号数)| 7D| S异或O=0 >= | 大于或等于/不小于
    JL/JNGE(比较带符号数)| 7C| S异或O=1 < | 小于/不大于或等于
    JLE/JNG(比较带符号数)| 7E| (S异或O)或Z=1 <= | 小于或等于/不大于
    四、无条件转移指令

    操作码|伪码指令|含义
    ---|---|---
    EB cb | JMP rel8 | 相对短跳转(8位, 使rel8处的代码位下一条指令
    E9 cw | JMP rel16 | 相对跳转(16位, 使rel16处的代码位下一条指令
    FF /4 | JMP r/m16 | 绝对跳转(16位, 下一指令地址在r/m16中给出 FF /4 | JMP r/m32 | 绝对跳转(32位, 下一指令地址在r/m32中给出 EA cb | JMP ptr16:16 | 远距离绝对跳转, 下一指令地址在操作数中
    EA cb | JMP ptr16:32 | 远距离绝对跳转, 下一指令地址在操作数中
    FF /5 | JMP m16:16 | 远距离绝对跳转, 下一指令地址在内存m16:16中
    FF /5 | JMP m16:32 | 远距离绝对跳转, 下一指令地址在内存m16:32中
    五、16位/32位寻址方式

    操作码 | 伪码指令 | 跳转含义 | 跳转类型 | 跳转的条件(标志位)
    ---|---|---|---|---
    0F 87 cw/cd | JA rel16/32 | 大于 | near | (CF=0 and ZF=0) 0F 83 cw/cd | JAE rel16/32 | 大于等于 | near | (CF=0)
    0F 82 cw/cd | JB rel16/32 | 小于 | near | (CF=1)
    0F 86 cw/cd | JBE rel16/32 | 小于等于 | near | (CF=1 or ZF=1)
    0F 82 cw/cd | JC rel16/32 | 进位 | near | (CF=1)
    0F 84 cw/cd | JE rel16/32 | 等于 | near | (ZF=1)
    0F 84 cw/cd | JZ rel16/32 | 为0 | near | (ZF=1)
    0F 8F cw/cd | JG rel16/32 | 大于 | near | (ZF=0 and SF=OF)
    0F 8D cw/cd | JGE rel16/32 | 大于等于 | near | (SF=OF) 0F 8C cw/cd | JL rel16/32 | 小于 | near | (SF<>OF) 0F 8E cw/cd | JLE rel16/32 | 小于等于 | near | (ZF=1 or SF<>OF)
    0F 86 cw/cd | JNA rel16/32 | 不大于 | near | (CF=1 or ZF=1)
    0F 82 cw/cd | JNAE rel16/32 | 不大于等于 | near | (CF=1)
    0F 83 cw/cd | JNB rel16/32 | 不小于 | near | (CF=0) 0F 87 cw/cd | JNBE rel16/32 | 不小于等于 | near | (CF=0 and ZF=0) 0F 83 cw/cd | JNC rel16/32 | 不进位 | near | (CF=0)
    0F 85 cw/cd | JNE rel16/32 | 不等于 | near | (ZF=0) 0F 8E cw/cd | JNG rel16/32 | 不大于 | near | (ZF=1 or SF<>OF)
    0F 8C cw/cd | JNGE rel16/32 | 不大于等于 | near | (SF<>OF)
    0F 8D cw/cd | JNL rel16/32 | 不小于 | near | (SF=OF)
    0F 8F cw/cd | JNLE rel16/32 | 不小于等于 | near | (ZF=0 and SF=OF)
    0F 81 cw/cd | JNO rel16/32 | 未溢出 | near | (OF=0)
    0F 8B cw/cd | JNP rel16/32 | 不是偶数 | near | (PF=0) 0F 89 cw/cd | JNS rel16/32 | 非负数 | near | (SF=0)
    0F 85 cw/cd | JNZ rel16/32 | 非零(不等于)| near | (ZF=0)
    0F 80 cw/cd | JO rel16/32 | 溢出 | near | (OF=1)
    0F 8A cw/cd | JP rel16/32 | 偶数 | near | (PF=1)
    0F 8A cw/cd | JPE rel16/32 | 偶数 | near | (PF=1) 0F 8B cw/cd | JPO rel16/32 | 奇数 | near | (PF=0)
    0F 88 cw/cd | JS rel16/32 | 负数 | near | (SF=1)
    0F 84 cw/cd | JZ rel16/32 | 为零(等于) | near | (ZF=1)
    注:一些指令操作数的含义说明:

    rel8 表示 8 位相对地址
    rel16 表示 16 位相对地址
    rel16/32 表示 16或32 位相对地址
    r/m16 表示16位寄存器
    r/m32 表示32位寄存器


    关于__emit
    __asm _emit 0x0F 和 __asm _emit 0x31是什么意思?
    在C语言中,允许直接插入汇编代码,甚至直接插入机器码。
    插入汇编代zhuan码可以用asm关键字来表shu示,如:
    asm {
    mov eax, ebx ; 插入mov 指令
    xor eax,edx ; 插入xor 指令
    }
    也可以直接插入机器码,用可用emit宏来表示,
    如直接插入机器码0x50(机器指令为:PUSH EAX),可写为:
    __emit__(0x50);
    你给的例子就是直接插入0X0F和0X31,具体的指令要结合其它数据才能确定。


    x86中
    jmp相对跳转
    EB  (目标地址 - JMP地址 - 指令长度)     相对短跳转8位
    E9 (目标地址 - JMP地址 - 指令长度)     相对跳转16位
    E8也有call


    x64中
    绝对远跳转: FF 25 00 00 00 00 XX XX XX XX XX XX XX XX
    FF 25: 是jmp
    四个00: 不用管
    八个XX: 是目标绝对地址

    展开全文
  • 机器码汇编代码对应方法

    千次阅读 2017-12-20 14:34:23
    1, 拿到机器码,写到c语言文件中 int main() { __asm__ __volatile__ (".byte 0x66, 0xf, 0x3a, 0xf, 0xd1, 0x4, 0x8d, 0x7f, 0x20, 0x66, 0xf, 0x7f, 0x54, 0x3a, 0xe0, 0x66"); } 2, gcc -m32 a.c 生成a.out ...

    1, 拿到机器码,写到c语言文件中

    int main()
    {
    	__asm__ __volatile__ (".byte 0x66, 0xf, 0x3a, 0xf, 0xd1, 0x4, 0x8d, 0x7f, 0x20, 0x66, 0xf, 0x7f, 0x54, 0x3a, 0xe0, 0x66");
    
    }
    

    2, gcc -m32 a.c 生成a.out

    3,objdump -d a.out 得到汇编代码(部分如下)

    080483ed <main>:
     80483ed:	55                   	push   %ebp
     80483ee:	89 e5                	mov    %esp,%ebp
     80483f0:	66 0f 3a 0f d1 04    	palignr $0x4,%xmm1,%xmm2
     80483f6:	8d 7f 20             	lea    0x20(%edi),%edi
     80483f9:	66 0f 7f 54 3a e0    	movdqa %xmm2,-0x20(%edx,%edi,1)
     80483ff:	66 5d                	pop    %bp
     8048401:	c3                   	ret    
     8048402:	66 90                	xchg   %ax,%ax
     8048404:	66 90                	xchg   %ax,%ax
     8048406:	66 90                	xchg   %ax,%ax
     8048408:	66 90                	xchg   %ax,%ax
     804840a:	66 90                	xchg   %ax,%ax
     804840c:	66 90                	xchg   %ax,%ax
     804840e:	66 90                	xchg   %ax,%ax

    可以对应起来(仅供参考)

    感谢东晓大神

    展开全文
  • 通过对世界计算机编程大赛第一名作品的分析,帮助程序人员理解机器码汇编语言. 所有涉及技术内容均为原著.本文由作者PPdos委托交付于csdn.版权所有.
  • 机器码汇编

    2020-09-18 11:09:24
    有时候,我们在分析问题的时候,能得到的只有机器码,例如 0f 11 01 4c 03 c1 48 83 c1 10 48 83 e1 f0 4c 2b c1 4d 要分析这段代码,可以找intel的数据手册,然后去解析这句话的意思。不过这样效率太低,我们可以...

    有时候,我们在分析问题的时候,能得到的只有机器码,例如

    0f 11 01 4c 03 c1 48 83 c1 10 48 83 e1 f0 4c 2b c1 4d
    

    要分析这段代码,可以找intel的数据手册,然后去解析这句话的意思。不过这样效率太低,我们可以通过如下方式分析。

    1. 先把机器码写到文件里
    #include <stdlib.h>
    #include <stdio.h>
    #include <fcntl.h>
    #include <unistd.h>
    
    int main(void)
    {
        char bin_data[] = {0x0f, 0x11, 0x01, 0x4c, 0x03, 0xc1, 0x48, 0x83, 0xc1, 0x10, 
                            0x48, 0x83, 0xe1, 0xf0, 0x4c, 0x2b, 0xc1, 0x4d};
        int fd = open("1.bin", O_RDWR | O_CREAT);
        if(fd < 0) {
            printf("error opening file\n");
            return 0;
        }
        
        write(fd, bin_data, 18);
        close(fd);
        return 0;
    }
    
    1. 使用objdump进行反汇编
      因为这段机器码是在x86机器上生成的,所以需要指定***-m i386:x86-64***
    objdump -b binary -m i386:x86-64  -D 1.bin
    

    在这里插入图片描述

    展开全文
  • 虽然机器码和内存地址领证在一起了,但是俩个人都和汇编指令有着说不清的关系,机器码的前任是汇编指令,而汇编指令又与内存地址暗地相通,这究竟是道德的沦丧还是人性的扭曲,今天就让我来领大家细细分解这三者的...
  • 【学生】老师啊~您现在忙吗?...【迂者】可以理解为B8对应的是mov ax【迂者】这种对应关系并不是很机械的那种【学生】这个计算机组成原理有关么,【学生】我翻出之前计算机组成原理实验的截图 ,
  • 即使使用C/C++或者其他高级语言编程,最后也会被编译工具转换为汇编代码,并最终作为机器码存储在内存、硬盘或者其他存储器上。在调试程序时,经常需要阅读它的汇编代码,以下面的汇编代码为例: 2023404: e...
  • 如何获取MIPS汇编对应的机器码

    千次阅读 2020-04-20 17:24:45
    在看《自己动手写CPU》的时候,里面需要将MIPS转换成机器码作为输入的指令,不过书上的工具以及一些步骤在实际中是不能用的,因此在这里将“从MIPS汇编转换成机器码”的完整过程下来 安装Linux虚拟机 因为汇编工具...
  • 汇编转换 机器码汇编

    热门讨论 2011-06-09 02:35:40
    汇编转换工具。机器码汇编汇编转字节集
  • 汇编和机器码相互转化

    千次阅读 2019-12-26 22:20:08
    由于要在PE文件中修改代码,本质上是在改十六进制的机器码(shellcode为经过处理的机器码),而我们阅读的是汇编码,汇编和机器码相互转化可以更好的修改程序。本来想用pwn tool或OllyDbg来转化,但通过搜索linux的...
  • 汇编语言 指令 机器码三者的关系

    万次阅读 2016-01-22 11:48:43
    机器码是01组成的二进制序列,可读性极差 指令就是把特定的01序列,简化成对应的指令(一般为英文简写,如mov,inc等),可读性稍好 汇编语言包括指令伪指令。伪指令是为了编程方便,对部分指令做的封装。 ...
  • 这是学汇编时能需要的东西 如果您正在学习汇编的话 你就拿出用吧
  • 机器码、字节码、汇编语言的区别

    千次阅读 2021-06-12 20:12:31
    机器码 机器码(machine code),机器语言指令,一种CPU的可读指令,是CPU可直接解读的0 1二进制序列。不同的CPU生产厂商,遵守的机器指令标准主体上是通用的,但也会有自己的一些比较特殊的指令。 字节码 字节码...
  • 用来查看汇编码对应的机器码 尤其用在Android NDK开发的so反编译上,要修改指定指令(如跳转指令), 可写下汇编指令,批处理工具自动生成对应的机器码
  • 汇编机器码

    2020-10-02 14:28:54
    case i_cmp://80 /7 ib CMP r/m8,imm8 81 /7 id CMP r/m32,imm32 writeBytes(opcode,1); exchar=0xf8;...操作是一个组属性操作,需要modR/M中的reg/opcode字段指明具体指令。 modR/M的mod为3...
  • 汇编指令与机器码对照表

    热门讨论 2011-07-20 22:02:33
    汇编指令与机器码对照表,按字母排序,有索引,非常方便
  • 汇编指令和机器码的对应表

    千次阅读 2021-04-15 19:20:11
    PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件标志(flag)控制标志构成,如下所示: 15 14 13 12 11 10 98 7 6 5 4 3 2 1 0  OF DFIF TF SF ZF AF PF CF 条件: ①OF(Overflow Flag)溢出...
  • 单片机51汇编代码与机器码转换对照表,是进行反汇编的有效利器。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 60,454
精华内容 24,181
关键字:

机器码和汇编