• [ASM]汇编常用指令


    高级语言经编译器编译生成后,最终会生成机器语言,汇编指令与机器语言又是对应的。所以汇编指令与高级语言语言定义存在一定的关系。

    如:CALL、RET组合相当于方法调用。

    LOOP、LOOPE、LOOPZ、LOOPNE、LOOPNZ、JCXZ、JECXZ循环执行指令。
    INT、INTO、IRET中断,与并发执行和调试等有关。
    —————————————————————————————————————

    1.通用数据传送指令. 
    MOV----> move
    MOVSX---->extended move with sign data
    MOVZX---->extended move with zero data
    PUSH---->push
    POP---->pop
    PUSHA---->push all
    POPA---->pop all
    PUSHAD---->push all data
    POPAD---->pop all data
    BSWAP---->byte swap
    XCHG---->exchange
    CMPXCHG---->compare and change
    XADD---->exchange and add
    XLAT---->translate
    2.输入输出端口传送指令.
    IN---->input
    OUT---->output
    3.目的地址传送指令.
    LEA---->load effective address
    LDS---->load DS
    LES---->load ES
    LFS---->load FS
    LGS---->load GS
    LSS---->load SS
    4.标志传送指令.
    LAHF---->load AH from flag
    SAHF---->save AH to flag
    PUSHF---->push flag
    POPF---->pop flag
    PUSHD---->push dflag
    POPD---->pop dflag

    二、算术运算指令
    ADD---->add
    ADC---->add with carry
    INC---->increase 1
    AAA---->ascii add with adjust
    DAA---->decimal add with adjust
    SUB---->substract
    SBB---->substract with borrow
    DEC---->decrease 1
    NEC---->negative
    CMP---->compare
    AAS---->ascii adjust on substract
    DAS---->decimal adjust on substract
    MUL---->multiplication
    IMUL---->integer multiplication
    AAM---->ascii adjust on multiplication
    DIV---->divide
    IDIV---->integer divide
    AAD---->ascii adjust on divide
    CBW---->change byte to word
    CWD---->change word to double word
    CWDE---->change word to double word with sign to EAX
    CDQ---->change double word to quadrate word

    三、逻辑运算指令
    ———————————————————————————————————————
    AND---->and
    OR---->or
    XOR---->xor
    NOT---->not
    TEST---->test
    SHL---->shift left
    SAL---->arithmatic shift left
    SHR---->shift right
    SAR---->arithmatic shift right
    ROL---->rotate left
    ROR---->rotate right
    RCL---->rotate left with carry
    RCR---->rotate right with carry

    四、串指令
    ———————————————————————————————————————
    MOVS---->move string
    CMPS---->compare string
    SCAS---->scan string
    LODS---->load string
    STOS---->store string
    REP---->repeat
    REPE---->repeat when equal
    REPZ---->repeat when zero flag
    REPNE---->repeat when not equal
    REPNZ---->repeat when zero flag
    REPC---->repeat when carry flag
    REPNC---->repeat when not carry flag

    五、程序转移指令
    ———————————————————————————————————————
    1>无条件转移指令(长转移)
    JMP---->jump
    CALL---->call
    RET---->return
    RETF---->return far
    2>条件转移指令(短转移,-128到+127的距离内)
    JAE---->jump when above or equal
    JNB---->jump when not below
    JB---->jump when below
    JNAE---->jump when not above or equal
    JBE---->jump when below or equal
    JNA---->jump when not above
    JG---->jump when greater
    JNLE---->jump when not less or equal
    JGE---->jump when greater or equal
    JNL---->jump when not less
    JL---->jump when less
    JNGE---->jump when not greater or equal
    JLE---->jump when less or equal
    JNG---->jump when not greater
    JE---->jump when equal
    JZ---->jump when has zero flag
    JNE---->jump when not equal
    JNZ---->jump when not has zero flag
    JC---->jump when has carry flag
    JNC---->jump when not has carry flag
    JNO---->jump when not has overflow flag
    JNP---->jump when not has parity flag
    JPO---->jump when parity flag is odd
    JNS---->jump when not has sign flag
    JO---->jump when has overflow flag
    JP---->jump when has parity flag
    JPE---->jump when parity flag is even
    JS---->jump when has sign flag
    3>循环控制指令(短转移)
    LOOP---->loop
    LOOPE---->loop equal
    LOOPZ---->loop zero
    LOOPNE---->loop not equal
    LOOPNZ---->loop not zero
    JCXZ---->jump when CX is zero
    JECXZ---->jump when ECX is zero
    4>中断指令
    INT---->interrupt
    INTO---->overflow interrupt
    IRET---->interrupt return
    5>处理器控制指令
    HLT---->halt
    WAIT---->wait
    ESC---->escape
    LOCK---->lock
    NOP---->no operation
    STC---->set carry
    CLC---->clear carry
    CMC---->carry make change
    STD---->set direction
    CLD---->clear direction
    STI---->set interrupt
    CLI---->clear interrupt

    六、伪指令
    —————————————————————————————————————
    DW---->definw word
    PROC---->procedure
    ENDP---->end of procedure
    SEGMENT---->segment
    ASSUME---->assume
    ENDS---->end segment
    END---->end
  • 相关阅读:
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 344 反转字符串
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
  • 原文地址:https://www.cnblogs.com/abeen/p/1589261.html
Copyright © 2020-2023  润新知