C/C++ 您当前所在位置:首页 > C/C++ > 常用汇编指令(一)

常用汇编指令(一)

陈成 陈成 2020-07-02 21:29:47 C/C++ 154人已围观

简介 在目前流行的编程语言下,还有更底层的语言,那就是汇编语言,当然还有更底层的机器语言。汇编语言由一条条指令组成,在分析软件的时候会经常和汇编打交道,所以掌握汇编指令是必须的,介绍几个常用汇编指令。

在目前流行的编程语言下,还有更底层的语言,那就是汇编语言,当然还有更底层的机器语言。汇编语言由一条条指令组成,在分析软件的时候会经常和汇编打交道,所以掌握汇编指令是必须的,介绍几个常用汇编指令。

先作一个说明,如:mov eax,0x1 

这里的mov叫操作码,eax叫目标操作数,0x1叫源操作数。即:mov 目标操作数,源操作数

r:代表通用寄存器

m:代表内存

imm:代表立即数

r32:代表32位通用寄存器

m32:代表32位内存

imm32:代表32位立即数

8位、16位一样。

mov指令

mov指令是最重要的一个指令,以后会经常遇到,它的意思是将源操作数放入到目标操作数,就像我们程序中的int a = 1。有以下几种情况,

mov r/m8,r8

将一个8位寄存器的值放到一个8位寄存器或8位内存中。

mov r/m16,r16

将16位寄存器的值放到一个16位寄存器或内存

mov r/m32,r32

将32位寄存器的值放到一个32位寄存器或内存

mov r8,r/m8

将8位寄存器或内存的值放到一个8位寄存器中

mov r16,r/m16

将16位寄存器或内存的值放到一个16位寄存器中

mov r32,r/m32

将32位寄存器或内存的值放到一个32位寄存器中

mov r8,imm8

将8位立即数放到8位寄存器中

mov r16,imm16

将16位立即数放到16位寄存器中

mov r32,imm32

将32位立即数放到32位寄存器中

注意

目标操作数可以是寄存器、内存单元或段寄存器

源操作数可以是立即数、寄存器、内存单元或段寄存器

操作数的宽度必须一样

两边不能同时为内存单元

add指令

add r/m8,imm8

add r/m16,imm16

add r/m32,imm32

add r/m16,imm8

add r/m32,imm8

add r8,r/m8

add r16,r/m16

add r32,r/m32

add r/m8,r8

add r/m16,r16

add r/m32,r32

这add指令就是将目标操作数加上源操作数并放到目标操作数里

sub指令

sub r/m8,imm8

sub r/m16,imm16

sub r/m32,imm32

sub r/m16,imm8

sub r/m32,imm8

sub r/m8,r8

sub r/m16,r16

sub r/m32,r32

sub r8,r/m8

sub r16,r/m16

sub r32,r/m32

sub指令和add指令一样也是将结果放到目标操作数里,只是加变成了减

文章评论

发送

站点信息

  • 上线时间:2020年05月30日
  • 网站程序:自建框架
  • 博客模板:今夕何夕
  • 文章统计43篇文章
  • 评论统计0条评论
  • 留言统计0条留言
  • 统计数据:百度统计