經常使用指令

 

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(同上)

相關文章
相關標籤/搜索