美文网首页
简单汇编指令

简单汇编指令

作者: Justin_901e | 来源:发表于2019-07-16 16:34 被阅读0次

1, NOP(无操作)

运行这条指令不会对寄存器,内存以及堆栈造成任何影响,英文单词的意思是”无操作”,也就是说,它没有特殊的用途。例如,你用一个短指令来替换一个长指令的话,如果处理器 没有错误多余的空间将会被NOP填充。

适当数目的nop指令可以将其他指令完全替换掉。

2, PUSH

PUSH指令-将操作数压入堆栈中。

“PUSH 0”指令将把0存入到堆栈的顶部

PUSH [0x401008]  压入内存地址:0x401008 的值 ,默认取4字节内存

PUSH DWORD PTR DS:[0x401008]  像这样的,除非有明确规定,否则OD都是认为你要操作的是4个字节的内存,也就是DWORD

PUSH EAX的话,那么堆栈的顶部将保存EAX的值。

3, POP

POP指令是出栈:它会取出堆栈顶部的第一个字母或者第一个值,然后存放到指定的目标地址内存单元中

POP EAX”, 将栈顶值放入EAX

4, PUSHAD

PUSHAD指令把所有通用寄存器的内容按一定顺序压入到堆栈中,PUSHAD也就相当于’PUSH EAX,PUSH ECX,PUSH        EDX,PUSH EBX,PUSH ESP,PUSH EBP,PUSH ESI, PUSH EDI’。

5, POPAD

该指令与PUSHAD正好相反,它从堆栈中取值,并将它们放到相应的寄存器中。POPAD等价于“POP EDI,POP ESI,POP ESP,POP        ESP,POP EBX,POP EDX,POP ECX,POP EAX”。

6, MOV

该指令将第二个操作数赋值给第一个操作数,例如:

MOV EAX, EBX     EBX值赋值给EAX

MOV AL, CL   这条指令时将CL的值赋值给AL

如果移动的是4个字节使用DWORD,移动两个字节的话使用WORD。

MOV DWORD PTR DS:[400500],EAX    将EAX写入4字节内存

MOV AX,WORD PTR DS:[405008]    将2字节内存值写入AX

MOV AL, BYTE PTR DS:[405008]   将1字节内存值定稿AL

7, MOVSX (带符号扩展的传送指令)

第二个操作数可能一个寄存器也可能是内存单元,第一个操作数的位数比第二个操作数多,第二个操作数的符号位填充第一个操作数剩余部分。

8, MOVZX (带0扩展的传送指令)

MOVZX类似于前面的语句,但是这种情况下,剩余的部分不根据第二个操作数的正负来进行填充。我们这里不提供范例,因为和上面是相似的,剩余的部分总是被填充为0。

9, LEA (取地址指令)

类似于MOV指令, 但是第一个操作数是一个通用寄存器,并且第二个操作数是一个内存单元。当计算的时候要依赖于之前的结果的话,那么这个指令就非常有用。

我们在OD中写入以下指令:  LEA EAX, DWORD PTR DS:[ECX+38]  在这个例子中,LEA指令就计算ECX + 38的值,然后将计算的结果赋值给EAX。

指定的地址被存放到了EAX中,因为完成的是赋值操作,所以我们会认为操作数是内存单元中的值,但是实际上操作数仅仅是内存单元的地址,而不是里面的内容。

10, XCHG (交换寄存器/内存单元和寄存器)

该指令交换两个操作数的值,例如:

XCHG EAX,ECX

EAX的值将被存放到ECX中。反之亦然。我们在OD中来验证这一点。

相关文章

  • 简单汇编指令

    1, NOP(无操作) 运行这条指令不会对寄存器,内存以及堆栈造成任何影响,英文单词的意思是”无操作”,也就是说,...

  • 逆向笔记(三)-汇编指令

    汇编指令 针对汇编来说,汇编指令是必须了解的,而且汇编中汇编指令比较多,但是每一个汇编指令对应的机器码是固定不变的...

  • 16位汇编简记

    汇编: 汇编即是机器指令助记符,机器指令让cpu工作。像是mov、jmp、jcxz等汇编指令都有对应的机器指令。有...

  • 学习汇编--写一个完整的汇编(一)

    汇编指令 汇编有两类指令组成汇编指令如move,add,sub等,有对应的机器指令,可以被编译为机器指令最终被CP...

  • 逆向学习 持续更新中

    什么是汇编 机器指令能被计算机直接识别 汇编指令需要通过编译器转为机器指令 汇编指令和机器指令的差别在于指令的表示...

  • <<汇编语言>>第1章笔记

    第一章 基础知识 汇编语言基本概念 汇编指令是机器指令便于记忆的书写格式,通过编译器把汇编指令对应到机器指令,汇编...

  • 汇编三

    完整的汇编指令:#### 汇编由两种指令组成1.汇编指令如mov、add、sub等有对应的机器指令,可以被编译为机...

  • 彻底搞清楚Java并发 (二) 底层实现

    Java代码 -> Java字节码 -> 汇编指令(汇编指令是cpu指令的集合) Volatile Java语言提...

  • 汇编程序基础

    汇编程序基础 一、汇编程序基本结构 二、汇编指令 1.汇编指令基本结构 三、伪指令 1.段定义 2.数据定义 数据...

  • 汇编语言学习笔记-仅供个人

    汇编语言 汇编指令通过编译器可以将汇编指令翻译成机器指令 伪指令告诉翻译软件,也就是编译器,这里怎么翻译,那里怎么...

网友评论

      本文标题:简单汇编指令

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