x86彙編第二天學習之指令大全

MOV指令格式

  • MOV r/m8 , r8
  • MOV r/m16 , r16
  • MOV r/m32 , r32
  • MOV r8 , r/m8
  • MOV r16 , r/m16
  • MOV r32 , r/m32
  • MOV r8 , imm8
  • MOV r16 , imm16
  • MOV r32 , imm32

注意:
1、以上的 r 表示通用寄存器,如:eax,ecx等等
2、mx表示x位的內存
3、immx表示x位的立即數
4、r8表示8位通用寄存器
5、m8表示8位的內存
6、imm8表示8位立即數
更多細節:請上網查找intel的白皮書!!!

舉例:

1、
格式:MOV r32 , r/m32
實例:MOV DWORD PTR DS:[0xEFFD48],0x11223344

2、
格式:MOV r/m16 , r16
實例:MOV AX,0x1122

ADD指令格式

  • ADD r/m8 , imm8
  • ADD r/m16 , imm16
  • ADD r/m32 , imm32
  • ADD r/m16 , imm8
  • ADD r/m32 , imm8
  • ADD r/m8 , r8
  • ADD r/m16 , r16
  • ADD r/m32 , r32
  • ADD r8 , r/m8
  • ADD r16 , r/m16
  • ADD r32 , r/m32

結果: 將第一操作數與第二操作數相加後的結果放在第一操作數中

舉例:

1、
格式:ADD r/m16 , imm8
實例:ADD AX,0x11

2、
格式:ADD r/m16 , r16
實例:ADD AX,0x1122

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

結果: 將第一操作數與第二操作數相減後的結果放在第一操作數中

舉例:

1、
格式:SUB r/m16 , imm8
實例:SUB AX,0x55

2、
格式:SUB r/m16 , r16
實例:SUB CX,0x3344

AND指令格式

  • AND r/m8 , imm8
  • AND r/m16 , imm16
  • AND r/m32 , imm32
  • AND r/m16 , imm8
  • AND r/m32 , imm8
  • AND r/m8 , r8
  • AND r/m16 , r16
  • AND r/m32 , r32
  • AND r8 , r/m8
  • AND r16 , r/m16
  • AND r32 , r/m32

結果: 將第一操作數與第二操作數相位與後的結果放在第一操作數中

舉例:

1、
格式:AND r/m16 , imm8
實例:AND BX,0x15

2、
格式:AND r/m16 , r16
實例:AND DX,0x6644

OR指令格式

  • OR r/m8 , imm8
  • OR r/m16 , imm16
  • OR r/m32 , imm32
  • OR r/m16 , imm8
  • OR r/m32 , imm8
  • OR r/m8 , r8
  • OR r/m16 , r16
  • OR r/m32 , r32
  • OR r8 , r/m8
  • OR r16 , r/m16
  • OR r32 , r/m32

結果: 將第一操作數與第二操作數相位或後的結果放在第一操作數中

舉例:

1、
格式:OR r/m16 , imm8
實例:OR AX,0x35

2、
格式:OR r/m16 , r16
實例:OR CX,0x8844

XOR指令格式

  • OR r/m8 , imm8
  • OR r/m16 , imm16
  • OR r/m32 , imm32
  • OR r/m16 , imm8
  • OR r/m32 , imm8
  • OR r/m8 , r8
  • OR r/m16 , r16
  • OR r/m32 , r32
  • OR r8 , r/m8
  • OR r16 , r/m16
  • OR r32 , r/m32

結果: 將第一操作數與第二操作數相位異或後的結果放在第一操作數中

舉例:

1、
格式:XOR r/m16 , imm8
實例:XOR AX,0x35

2、
格式:XOR r/m16 , r16
實例:XOR CX,0x8844

NOT指令格式

  • NOT r/m8
  • NOT r/m16
  • NOT r/m32

結果: 將操作數取反

舉例:

1、
格式:NOT r/m8
實例:NOT AL

2、
格式:NOT r/m32
實例:NOT EAX

MOVS指令格式

  • movs byte ptr es : [edi] , byte ptr ds : [esi] 簡稱MOVSB

  • movs word ptr es : [edi] , word ptr ds : [esi] 簡稱MOVSW

  • movs dword ptr es : [edi] , dword ptr ds : [esi] 簡稱MOVSD

注:
1、這裏就用到了edi、esi兩個通用寄存器,這是他們非常常用的地方!
2、結果就是把esi地址的值進行拷貝到edi地址的值,拷貝長度由byte、word、dword決定!
3、指令用過一次,則edi、esi會產生遞增或者遞減的效果

注:
1、MOVSB
MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
用完之後,edi和esi會自動+1或者-1

2、MOVSW
MOVS WORD PTR ES:[EDI],WORD PTR DS:[ESI]
用完之後,edi和esi會自動+2或者-2
3、MOVSD
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
用完之後,edi和esi會自動+4或者-4

注: 爲什麼所edi和esi可能加可能減呢?這是由EFI標誌位寄存器的DF位決定的,DF=0則是加,DF=1則是減

STOS指令格式

  • stos byte ptr es : [edi] 簡稱STOSB

  • stos word ptr es : [edi] 簡稱STOSW

  • stos dword ptr es : [edi] 簡稱STOSD

注: 這裏就用到了edi這個寄存器

**結果:**將AL/AX/EAX的值存儲到地址爲EDI的內存單元,並且edi產生遞增或者遞減,常用於循環對內存進行初始化操作

REP指令格式

目的: 按計數寄存器ECX中指定的次數重複執行字符串指令

例:

1、
mov ecx , 5
rep movsd

2、
mov ecx , 5
rep stosd

今天就到此爲止,學到吐!!!ou~~~~~

老鐵們覺得還不錯的,記得別忘了點個贊呦!!!我是航行的土豆

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章