欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

全面掌握汇编语言:由入门到精通的指令集指南

最编程 2024-02-15 15:42:25
...

指令汇总

1、数据传送指令

1.1、传送指令

指令的语法

举例

周期数

MOV reg,reg

mov bp,sp

1

MOV mem,reg

mov array[di],bx

1

MOV reg,mem

mov bx,pointer

1

MOV mem,immed

mov [bx],15

1

MOV reg,immed

mov cx,256

1

MOV mem,accum

mov total,ax

1

MOV accum,mem

mov al,string

1

MOV segreg,reg16

mov ds,ax

2, 3

MOV segreg,mem16

mov es,psp

2, 3

MOV reg16,segreg

mov ax,ds

1

MOV mem16,segreg

mov stack_save,ss

1

MOV reg32,controlreg

mov eax,cr0

22

mov eax,cr2

12

mov eax,cr3

21, 46

mov eax,cr4

14

MOV controlreg,reg32

mov cr0,eax

4

MOV reg32,debugreg

mov edx,dr0

DR0-DR3, DR6,DR7=11

DR4,DR5=12

MOV debugreg,reg32

mov dr0,ecx

DR0-DR3,

DR4,DR5=12 DR6,DR7=11

1.2、传送-填充指令

MOVSX reg,reg

movsx bx,al

3

MOVSX reg,mem

movsx eax,bsign

3

MOVZX reg,reg

movzx bx,al

3

MOVZX reg,mem

movzx eax,bunsign

3

1.3、交换指令

XCHG reg,reg

xchg cx,dx

3

XCHG reg,mem

xchg bx,pointer

3

XCHG mem,reg

xchg [bx],ax

3

XCHG accum,reg

xchg ax,cx

2

XCHG reg,accum

xchg cx,ax

2

1.4、取段地址和有效地址指令

LDS reg,mem

lds si,fpointer

4

LES reg,mem

les di,fpointer

4

LFS reg,mem

lfs edi,fpointer

4

LGS reg,mem

lgs bx,fpointer

4

LSS reg,mem

lss bp, fpointer

4, pm=8

LEA reg,mem

lea bx,npointer

1

1.5、进栈指令

PUSH reg

push dx

1

PUSH mem

push [di]

2

PUSH segreg

push es

1

PUSH immed

push 15000

1

PUSHA

pusha

5

PUSHAD

pushad

5

PUSHF

pushf

4, pm=3

PUSHFD

pushfd

4, pm=3

1.6、出栈指令

POP reg

pop cx

1

POP mem

pop param

3

POP segreg

pop es

3

POPA

popa

5

POPAD

popad

5

POPF

popf

6, pm=4

POPFD

popfd

6, pm=4

1.7、转换指令

XLAT [[segreg:]mem]

xlat

4

XLATB [[segreg:]mem]

xlatb es:table

4

1.8、输入指令

IN accum,immed

in ax,60h

7, pm=4,21*(注), vm=19

IN accum,DX

in ax,dx

7, pm=4,21*, vm=19

INS [ES:]dest, DX

ins es:instr,dx

9, pm=6,24*, vm=22

INSB

Insb

9, pm=6,24*, vm=22

INSW

Insw

9, pm=6,24*, vm=22

INSD

Insd

9, pm=6,24*, vm=22

注:当CPL≤IOPL时,执行时间是第一个时钟周期,否则是第二个时钟周期。

1.9、输出指令

OUT immed8,accum

out 60h,al

12, pm=9,26, VM=24

OUT DX,accum

out dx,ax

12, pm=9,25  VM=24

OUTS DX,[segreg:]src

outs dx,buffer

13, pm=10,27, VM=24

OUTSB [DX,[segreg:]src]

outsb

13, pm=10,27, VM=24

OUTSW [DX,[segreg:]src]

outsw

13, pm=10,27, VM=24

OUTSD [DX,[segreg:]src]

outsd

13, pm=10,27, VM=24

2、标志位操作指令

2.1、标志位操作指令

指令的语法

举例

周期数

CLC

clc

2

CMC

cmc

2

STC

stc

2

CLD

cld

2

STD

std

2

CLI

cli

7

STI

sti

7

2.2、标志位存取操作指令

SAHF

Sahf

2

LAHF

lahf

2

2.3、标志位堆栈操作指令

PUSHF

pushf

4, pm=3

PUSHFD

pushfd

4, pm=3

POPF

popf

6, pm=4

POPFD

popfd

6, pm=4

3、算术运算指令

3.1、加法指令

指令的语法

举例

周期数

ADC reg,reg

adc dx,cx

1

ADC mem,reg

adc word ptr m16[2],dx

3

ADC reg,mem

adc dx,dword ptr m32[2]

2

ADD reg,reg

add ax,bx

1

ADD mem,reg

add total, cx

3

ADD reg,mem

add cx,incr

2

ADD reg,immed

add bx,6

1

ADD mem,immed

add pointers[bx][si],6

3

ADD accum,immed

add ax,10

1

INC reg

inc bx

1

INC mem

inc vpage

3

XADD reg,reg

xadd dl,al

3

XADD mem,reg

xadd string,bl

4

3.2、减法指令

SUB reg,reg

sub ax,bx

1

SUB mem,reg

sub array[di],bi

3

SUB reg,mem

sub al,[bx]

2

SUB reg,immed

sub bl,7

1

SUB mem,immed

sub total,4000

3

SUB accum,immed

sub ax,32000

1

SBB accum,immed

sbb ax,320

1

SBB reg,immed

sbb dx,45

1

SBB mem,immed

sbb word ptr m32[2],40

3

SBB reg,reg

sbb dx,cx

1

SBB mem,reg

sbb word ptr m32[2],dx

3

SBB reg,mem

sbb dx,word ptr m32[2]

2

DEC reg

dec ax

1

DEC mem

dec counter

3

NEG reg

neg ax

1

NEG mem

neg balance

3

3.3、乘法指令

MUL reg

mul bx

MUL memX

mul word ptr [bx]

8,16-bit=11

32-bit=10

IMUL reg

imul dx

11

IMUL mem

imul factor

11

IMUL reg,immed

imul cx,25

10

IMUL reg,reg,immed

imul dx,ax,18

10

IMUL reg,mem,immed

imul bx,[si],60

10

IMUL reg,reg

imul cx,ax

10

IMUL reg,mem

imul dx,[si]

10

3.4、除法指令

DIV reg

div cx

byte=17 word=25

DIV mem

div [bx]

dword=41

IDIV reg

idiv dl

8-bit=22;16-bit=30

IDIV mem

idiv itemp

32-bit=46

3.5、类型转换指令

CBW

cbw

3

CWD

cwd

2

CWDE

cwde

3

CDQ

cdq

2

4、逻辑运算指令

4.1、逻辑与操作指令

指令的语法

举例

周期数

AND reg,reg

and dx,bx

1

AND mem,reg

and bitmask,bx

3

AND reg,mem

and bx,masker

2

AND reg,immed

and dx,0F7h

1

AND mem,immed

and masker,100lb

3

AND accum,immed

and ax,0B6h

1

4.2、逻辑与操作指令

OR reg,reg

or ax,dx

1

OR mem,reg

or bits,dx

3

OR reg,mem

or dx,color[di]

2

OR reg,immed

or dx,110110b

1

OR mem,immed

or flag_rec,8

3

OR accum,immed

or ax,40h

1

4.3、逻辑与操作指令

NOT reg

not ax

1

NOT mem

not masker

3

4.4、逻辑异或操作指令

XOR reg,reg

xor cx,bx

1

XOR reg,mem

xor cx,flags

2

XOR mem,reg

xor [bp+10],cx

3

XOR reg,immed

xor bl,1

1

XOR mem,immed

xor switches[bx],101b

3

XOR accum,immed

xor ax,01010101b

1

5、移位操作指令

5.1、算术左移指令

指令的语法

举例

周期数

SAL reg,1

sal bx,1

1

SAL mem,1

sal word ptr m32[0],1

3

SAL reg,CL

sal ah,cl

4

SAL mem,CL

sal BYTE PTR [di],cl

4

SAL reg,immed

sal cx,6

1

SAL mem,immed

sal array[bx+di],14

3

5.2、算术右移指令

SAR reg,1

sar di,1

1

SAR mem,1

sar count,1

3

SAR reg,CL

sar bx,cl

4

SAR mem,CL

sar sign,cl

4

SAR reg,immed

sar bx,5

1

SAR mem,immed

sar sign_count,3

3

5.3、逻辑左移指令

SHL reg,1

shl si,1

1

SHL mem,1

shl index,1

3

SHL reg,CL

shl di,cl

4

SHL mem,CL

shl index,cl

4

SHL reg,immed

shl di,2

1

SHL mem,immed

shl unsign,4

3

5.4、逻辑右移指令

SHR reg,1

shr dh,1

1

SHR mem,1

shr unsign[di],1

3

SHR reg,CL

shr dx,cl

4

SHR mem,CL

shr word ptr m32[2],cl

4

SHR reg,immed

shr bx,8

1

SHR mem,immed

shr mem16,11

3

5.5、双精度左移指令

SHLD reg16,reg16,immed8

shld ax,dx,10

4

SHLD reg32,reg32,immed8

SHLD mem16,reg16,immed8

shld bits,cx,5

4

SHLD mem32,reg32,immed8

SHLD reg16,reg16,CL

shld ax,dx,cl

4

SHLD reg32,reg32,CL

SHLD mem16,reg16,CL

shld masker,ax,cl

5

SHLD mem32,reg32,CL

5.6、双精度右移指令

SHRD reg16,reg16,immed8

shrd cx,si,3

4

SHRD reg32,reg32,immed8

SHRD mem16,reg16,immed8

shrd [di],dx,5

4

SHRD mem32,reg32,immed8

SHRD reg16,reg16,CL

shrd ax,dx,cl

4

SHRD reg32,reg32,CL

SHRD mem16,reg16,CL

shrd [bx],ax,cl

5

SHRD mem32,reg32,CL

5.7、循环左移指令

指令的语法

举例

周期数

ROL reg,1

rol ax,1

1

ROL mem,1

rol bits,1

3

ROL reg,CL

rol ax,cl

4

ROL mem,CL

rol color,cl

4

ROL reg,immed8

rol ax,13

1

ROL mem,immed8

rol byte ptr [bx],10

3

5.8、循环右移指令

ROR reg,1

ror ax,1

1

ROR mem,1

ror word ptr [bx],1

3

ROR reg,CL

ror dx,cl

4

ROR mem,CL

ror color,cl

5

ROR reg,immed8

ror bl,3

1

ROR mem,immed8

ror bits,6

3

5.9、带进位的循环左移指令

RCL reg,1

rcl dx,1

1

RCL mem,1

rcl WORD PTR [si],1

3

RCL reg,CL

rcl dx,cl

7-24

RCL mem,CL

rcl masker,cl

9-26

RCL reg,immed8

rcl bx,5

8-25

RCL mem,immed8

rcl word ptr [bp+8],3

10-27

5.10、带进位的循环右移指令

RCR reg,1

rcr bl,1

1

RCR mem,1

rcr word ptr m32[0],1

3

RCR reg,CL

rcr bl,cl

7-24

RCR mem,CL

rcl word ptr [bx=di],cl

9-26

RCR reg,immed8

rcr si,9

8-25

RCR mem,immed8

rcr masker,3

10-27

6、位操作指令

6.1、正向位扫描指令

指令的语法

举例

周期数

BSF reg16,reg16

bsf cx,bx

6-34

BSF reg32,reg32

bsf cx,bx

6-42

BSF reg16,mem16

bsf ecx,bitmask

6-35

BSF reg32,mem32

bsf ecx,bitmask

6-43

6.2、正向位扫描指令