经常使用指令

 

1.MOV指令(移动)

 

 

 好比MOV r/m16,r16spa

  r:表明寄存器   m16:表明内存  r16:表明16位的通用寄存器3d

  因而这条指令的意思就是,能够把r16的寄存器中的数据 存到 通用寄存器中也能够存到16位的内存中。blog

2.ADD指令(相加) 

 

 

 例子:假如EAX 00000001,ECX 00000002内存

  执行:ADD EAX,ECX (EAX和ECX相加再放入EAX里)字符串

  执行完以后会存在EAX里面因此EAX 00000003im

3.SUB指令(相减)

 

 

 例子: SUB r8,r/m8(r8减去r/m8中去再存入r8d3

        SUB AL,byte ptr ds:[18FFA0]数据

4.AND指令(与)

 

 

 例子 AND r/m32,r32(r/m32的值与r32再存入r/m32)margin

  AND dword ptr ds:[18FFA0] ,EAXword

 

   5.or指令(或)

 

 

 6.XOR指令(异或)

 

 

 

7.NOT指令(取反)

 

 

 8.MOVS指令(移动数据)内存-内存

 

 

1.MOVS容许内存到内存

2.用MOVS就默认用EDI和ESI

  EDI:要把数据复制到哪里去  ESI:要复制的数据在哪里

例子:

指令:一个字节一个字节进行复制

 

 

 执行前:

 

   执行后:

 

 说明只要指令执行一次,地址的编号就会加1(由于是byte 一个字节一个字节复制,同理若是是word那么内存的地址编号就会每执行一次加2)

3.标志寄存器EFI (暂时介绍)

 DF 是指第十位

 

 DF位为0 则EDI和ESI的值就+1/+2/+4

 DF位为1  则EDI和ESI的值就-1/-2/-4

 

 

9.STOS指令(AI/AX/EAX的值存储到[EDI]指定的内存单元)

 

 

 

 

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

好比ECX存储的值为10

则MOV  ECX,10(把10存到ECX)

REP MOVSD(rep执行多少次呢??执行16次。 10 :1111 0000,每执行一次ECX的值会-1,计数嘛)

REP STOSD(同上)

相关文章
相关标签/搜索