指令

作者: FX喂你袋盐 | 来源:发表于2017-11-13 21:40 被阅读26次

    1、32位通用寄存器

    EAX EXC EDX EBX ESP EBP ESI EDI

    2、16位通用寄存器

    AX XC DX BX SP BP SI DI

    3、8位通用寄存器

    AH  AL

    XH XL

    DH DL

    BH BL

    4、寄存器的结构

    EAX-AX-AH-AL

    5、内存单元:字节---每个字节都有编号,称为内存地址。

    操作指定的内存:8位内存、16、32位内存

    内存中的存放方式是倒叙的。与堆栈中的数据反序。

    命令:db 0x88ff1c 查看  反序

    dd  0x88ff1c 查看 正序

    6、基础汇编指令

    1)移动 mov

    mov eax,0x1234

    mov eax,ecx

    2)减 sub

    mov eax,0x3

    sub eax,0x2

    3)加 add

    mov eax,0x2

    add eax,0x3

    4)内存存储、读取

    存储:mov dword ptr ds:[0x0015FF1C],0x1234

    读取:mov eax,dword ptr ds:[0x0015FF1C]

    5)ADC带进位的加法

    adc al,cl

    6)sbb带进位的减法

    sbb al,cl

    7)XCHG 交换数据

    SCHG al,cl

    8) movs 移动数据 内存--内存、

    movs dword ptr es:[0x1245ff2d],dword ptr ds:[0x1245ff2e]

    movsd 加上D 的意思是,调用esi edi寄存器中存放的值

    9)STOS将al\ah\ax\eax通用寄存器里的值存储到EDI指定的内存单元中

    stos dword ptr es:[edi]

    10)REP 按计数寄存器(ecx)中指定的次数重复执行字符串指令

    mov ecx,10

    rep movsd

    rep stosd

    --------------------------------------------

    修改EIP的一些指令

    11)JMP

    jmp 0x418356F1

    堆栈、寄存器 无影响

    12)CALL

    为了CALL能成功,跳之前下断点

    call 0x418356F1

    RETN

    执行完,会出堆栈,push 一个跳转之前额度下一跳地址,俗称 返回地址

    13)RET

    ----------------------------------------------------

    JCC

    14)CMP 比较两个值

    与sub的不同,cmp 只是比较,修改标志位,不会修改通用寄存器

    cmp  eax,ecx

    15)TEST  进行与运算操作。

    主要是判断是否为空。为空Z位为1,否则为0

    -------------------------------------------------------

    相关文章

      网友评论

          本文标题:指令

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