zoukankan      html  css  js  c++  java
  • [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
  • 相关阅读:
    shell练习--PAT题目1008:数组元素循环右移问题 (失败案例,运行超时)
    shell练习--PAT题目1007:关于素数对(失败案例)
    2019年7月25日 shell练习--PAT题目1006:换个格式输出整数(失败案例)
    shell练习--PAT题目1005:继续(3n+1)猜想(全绿失败喜加一)
    shell练习--关于关联数组自增统计判断的学习
    UITableView中的beginUpdates和endUpdates
    实现类似微信表情包横向滚动翻页的功能,运用UICollectionView,自定义UICollectionViewFlowLayout,cell左右排版 ,支持多组Cell实现。
    利用UICollectionView做的水平滑动分页视图
    获取手势点击哪个控件 UIGestureRecognizer
    JS中如何获取url中的某个参数的值
  • 原文地址:https://www.cnblogs.com/abeen/p/1589261.html
Copyright © 2011-2022 走看看