• 汇编语言从入门到精通-指令汇总


    目录

    1、数据传送指令

    2、标志位操作指令

    3、算术运算指令

    4、逻辑运算指令

    5、移位操作指令

    6、位操作指令

    7、比较运算指令

    8、循环指令

    9、转移指令

    10、条件设置字节指令

    11、字符串操作指令

    12、ASCII-BCD码运算调整指令

    13、处理器指令

    14、协处理器指令

     

    指令汇总

    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、正向位扫描指令

    BSR reg16,reg16

    bsr cx,dx

    7-39

    BSR reg32,reg32

    bsr ecx, edx

    7-71

    BSR reg16,mem16

    bsr ax,bitmask

    7-40

    BSR reg32,mem32

    bsr eax,bitmask

    7-72

    6.3、正向位扫描指令

    BT reg16,immed8*(注)

    bt ax,4

    4

    BT mem16,immed8

    bt [bx],4

    4

    BT reg16,reg16

    bt ax,bx

    4

    BT mem16,reg16

    bt [bx],dx

    9

    (注) 操作数也可以是32位数。

    6.4、正向位扫描指令

    BTC reg16,immed8*

    btc edi,4

    7

    BTC mem16,immed8*

    btc color[di],4

    8

    BTC reg16,reg16*

    btc eax,ebx

    7

    BTC mem16,reg16*

    btc [bp+8],si

    13

    6.5、正向位扫描指令

    BTR reg16,immed8*

    btr bx,17

    7

    BTR mem16,immed8*

    btr [bx],27

    8

    BTR reg16,reg16*

    btr cx,di

    7

    BTR mem16,reg16*

    btr rotate,cx

    13

    6.6、正向位扫描指令

    BTS reg16,immed8*

    bts ax,4

    7

    BTS mem16,immed8*

    bts maskit,4

    8

    BTS reg16,reg16*

    bts bx,ax

    7

    BTS mem16,reg16*

    bts flags[bx],cx

    13

    6.7、正向位扫描指令

    TEST reg,reg

    test dx,bx

    1

    TEST mem,reg

    test flags,dx

    2

    TEST reg,immed

    test cx,30h

    1

    TEST mem,immed

    test masker,1

    2

    TEST accum,immed

    test ax,90h

    1

    7、比较运算指令

    7.1、比较指令

    指令的语法

    举例

    周期数

    CMP reg,reg

    cmp dl,cl

    1

    CMP mem,reg

    cmp array[si],bl

    2

    CMP reg,mem

    cmp bh,array[si]

    2

    CMP reg,immed

    cmp bx,24

    1

    CMP mem,immed

    cmp tester,4000

    2

    CMP accum,immed

    cmp ax,1000

    1

    7.2、比较交换指令

    CMPXCHG mem,reg

    cmpxchg string,bl

    6

    CMPXCHG reg,reg

    cmpxchg bx,cx

    6

    CMPXCHG8B reg,mem64

    cmpxchg8b ax,[bx]

    10

    8、循环指令

    8.1、循环指令

    LOOP label

    loop wend

    5, 6

    LOOPE label

    loope again

    7, 8

    LOOPZ label

    loopz again

    7, 8

    LOOPNE label

    loopne for_next

    7, 8

    LOOPNZ label

    loopnz for_next

    7, 8

    8.2、循环指令

    JCXZ label

    jcxz notfound

    6,5

    JECXZ label

    jecxz notfound

    6,5

    9、转移指令

    9.1、无条件转移指令

    指令的语法

    举例

    周期数

    JMP label

    jmp NEAR PTR distant

    1

    jmp distant

    3

    JMP reg16

    jmp ax

    2

    JMP mem16

    jmp table[di]

    2

    JMP reg32

    jmp eax

    3

    JMP mem32

    jmp fpointer[si]

    2

    JMP mem48

    jmp FWORD PTR [di]

    4

    9.2、条件转移指令

    Jcondition label

    je next

    1

    9.3、子程序调用指令

    CALL label

    call upcase

    1

    call distant

    4

    CALL reg

    call ax

    2

    CALL mem32

    call [bx]

    2

    CALL mem32

    call dword ptr [bx]

    5

    9.4、子程序返回指令

    RETN

    retn

    2

    RETN immed16

    retn 8

    3

    RETF

    retf

    4, 23

    RETF immed16

    retf 32

    4, 23

    9.5、中断指令

    INT immed8

    int 25h

    16, pm=31, 48*(注)

    INT 3

    int 3

    13, pm=27, 44*

    INTO

    Into

    13, pm=27, 44*

    注:第一时间是同等优先级的中断时间,第二时间为高优先级的中断时间。

    9.6、中断返回指令

    IRET

    Iret

    8*(注),10, pm=27

    IRETD

    Iretd

    10, pm=27

    IRETF

    Iretf

    IRETDF

    Iretdf

    10、条件设置字节指令

    SETcondition reg8

    setc dh

    1

    SETcondition mem8

    setle flag

    2

    11、字符串操作指令

    11.1、取字符串数据指令

    指令的语法

    举例

    周期数

    LODS [segreg:]src

    lods es:source

    2

    LODSB [[segreg:]src]

    Lodsb

    2

    LODSW [[segreg:]src]

    Lodsw

    2

    LODSD [[segreg:]src]

    Lodsd

    2

    11.2、置字符串数据指令

    STOS [ES:]dest

    stor es:dstring

    3

    STOSB [[ES:]dest]

    stosb

    3

    STOSW [[ES:]dest]

    stosw

    3

    STOSD [[ES:]dest]

    stosd

    3

    11.3、字符串传送指令

    MOVS [es:]dest, [segreg:]src

    movs dest,es:source

    4

    MOVSB [[es:]dest, [segreg:]src]

    movsb

    4

    MOVSW [[es:]dest, [segreg:]src]

    movsw

    4

    MOVSD [[es:]dest, [segreg:]src]

    movsd

    4

    11.4、输入字符串指令

    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

    11.5、输出字符串指令

    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

    11.6、字符串比较指令

    CMPS [segreg:] src, [ES:]dest

    cmps source,es:dest

    5

    CMPSB [[segreg:[src,] ES:] dest]

    cmpsb

    5

    CMPSW [[segreg:[src,] ES:]dest]

    cmpsw

    5

    CMPSD [[segreg:[src,] ES:] dest]

    cmpsd

    5

    11.7、字符串扫描指令

    SCAS [ES]:dest

    scas es:destin

    4

    SCASB

    Scasb

    4

    SCASW

    Scasw

    4

    SCASD

    Scasd

    4

    11.8、重复前缀指令

    REP INS dest,DX

    rep ins dest,dx

    11+3n, pm=(8,25)+3n*

    REP MOVS dest,src

    rep movs dest,source

    6, 13n

    REP OUTS DX,src

    rep outs dx,source

    13+4n, pm=(10,27)+4n*

    REP LODS dest

    rep lods dest

    7, 7+3n

    REP STOS dest

    rep stos dest

    6, 9+3n

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

    11.9、相等重复前缀指令

    REPE CMPS src,dest

    repe cmps src,dest

    7, 9+4n

    REPE SCAS dest

    repe scas dest

    7, 9+4n

    11.10、不相等重复前缀指令

    REPNE CMPS src,dest

    repne cmps src,dest

    7, 8+4n

    REPNE SCAS dest

    repne scas dest

    7, 9+4n

    12、ASCII-BCD码运算调整指令

    指令的语法

    举例

    周期数

    AAA

    aaa

    3

    AAD

    aad

    10

    AAM

    aam

    18

    AAS

    aas

    3

    DAA

    daa

    3

    DAS

    das

    3

    13、处理器指令

    HLT

    Hlt

    12

    NOP

    nop

    1

    WAIT

    wait

    1

    LOCK

    lock

    1

    14、协处理器指令

    指令的语法

    举例

    周期数

    FBLD membcd fbld packbck 48-58
    FBSTP membcd fbstp bcds[bx] 148-154
    FLD reg fld st(3) 1
    FLD mem32real fld longreal 1
    FLD mem64real   1
    FLD mem80real   3
    FST reg fst st 1
    FST memreal fst longs[bx] 2
    FSTP reg fstp st(3) 1
    FSTP mem32real fstp longreal 2
    FSTP mem64real   2
    FSTP mem80real   3
    FXCH [reg] fxchg st(3) 1
    FILD memint fild quads[si] 3, 1
    FIST memint fist doubles[8] 6
    FISTP memint fistp longint 6
  • 相关阅读:
    log4net的使用
    在asp.net中使用 log4net 笔记
    JQuery插件开发
    使用Visual Studio宏来自动生成代码 [ Visual Studio | 宏 | 自动生成代码 ]
    如何在JBuilder 2006中打Jar包,并生成Exe文件
    如何更改java应用程序标题栏默认图标
    《ASP.NET AJAX程序设计》图书相关资源总索引
    Eclipse汉化的步骤,非常的详细
    家庭和睦、人生平淡也是一种成功
    程序员节诗词
  • 原文地址:https://www.cnblogs.com/little-kwy/p/9874804.html
Copyright © 2020-2023  润新知