美文网首页
汇编简介

汇编简介

作者: 全村的卡密 | 来源:发表于2020-02-29 23:37 被阅读0次

    学习汇编两大知识点:
    1.汇编指令
    2.寄存器

    image.png

    64bit:
    RAX \RBX\RCX\RDX :通用寄存器
    32bit:
    EAX\EBX\ECX\EDX :通用寄存器
    16bit:
    AX\BX\CX\DX :通用寄存器

    image.png

    现代计算机普遍64位,以前是32位。为了向下兼容,如上图,64位一半包含着32位的寄存器。

    一般规律:
    R开头的寄存器是64位的,占8字节。
    E开头的寄存器是32位的,占4字节。

    image.png
    注意:寄存器是独立存在的,不是连续的。
    c++支持内联汇编
    __asm{
    }
    

    验证eax包含ax


    image.png
    image.png

    可以发现,ax的值发生了变化,变成了3344

    汇编指令

    move dest,src

    • 将src的内容复制到dest,类似于dest = src

    [地址值]

    • 中括号里面包含的都是地址值

    word是2字节,dword是4字节,qword是8字节
    作用:
    int a = 3;int类型告诉编译器分配4个字节给a变量。

    image.png

    所以汇编要通过dword等告诉编译器分配多少个字节。
    ptr是固定写法,表示指定单位大小。
    一个格子代表1个字节。


    image.png

    指定大小后就知道占4个字节。


    image.png

    通常是向高地址存/取。[1128->112b而不是1128->1124]

    通过cout<<&a,输出a的地址值。然后查看汇编窗口里的ebp地址值。发现括号里面的值的确是a的地址值。


    image.png
    • 全局变量地址是固定的。


      全局

    cpu大小端模式

    image.png

    现在大部分cpu是小端模式,低字节放低地址,高字节放高地址(高高低低)。读取从小端开始读取。

    lea dest,[地址值],直接把地址给dest

    lea eax,[1122h]
    等价于eax = 1122h
    lea(load effect address)

    ret 函数返回

    xor op1,op2

    异或操作,等价于op1 =op1^op2
    类似的还有add,sub,inc(自增),dec

    jmp [内存地址]

    cpu跳转到该内存地址进行执行

    还有很多j开头的指令,比如jne()jump not equal


    jump

    相关文章

      网友评论

          本文标题:汇编简介

          本文链接:https://www.haomeiwen.com/subject/pnvrhhtx.html