1. 传送指令

       – 通用数据传送指令
            MOV:一般传送,包括movb、movw和movl等。
            MOVS:符号扩展传送,如movsbw、movswl等。
            MOVZ:零扩展传送,如movzwl、movzbl等。
            XCHG:数据交换,将两个寄存器内容互换。
            PUSH:入栈,SP先减2或ESP先减4,然后将一个字或双字从指定寄存器送到SP或ESP指定的栈单元中。
            POP:出栈,将一个字或双字从SP或ESP指定的栈单元中送到指定寄存器,然后SP先减2或ESP先减4。
        –地址传送指令
            LEA:加载有效地址,如leal (%edx,%eax), %eax”的功能为
                 R[eax]←R[edx]+R[eax],执行前,若R[edx]=i,
                 R[eax]=j,则指令执行后,R[eax]=i+j – 输入输出指令
            INOUT:I/O端口与寄存器之间的交换
        – 标志传送指令
            PUSHFPOPF:将EFLAG压栈,或将栈顶内容送EFLAG
  2. 定点算术运算指令

        – 加 / 减运算(影响标志、不区分无/带符号)
            ADD:加,不区分是无符号数还是有符号数
            SUB:减,不区分是无符号数还是有符号数
        – 增1 / 减1运算(影响除CF以外的标志、不区分无/带符号)
            INC:增,+1,不区分是无符号数还是有符号数
            DEC:减,-1,不区分是无符号数还是有符号数
        – 取负运算(影响标志、若对0取负,则结果为0且CF清0,否则CF置1)
            NEG:取负,各位取反,末尾加1
        – 比较运算(做减法得到标志、不区分无/带符号)
            CMP:比较,用目的操作数减去源操作数
        – 乘 / 除运算(不影响标志、区分无/带符号)
            MUL/ IMUL:无符号乘 / 带符号乘
            DIV/ IDIV:带无符号除 / 带符号除
  3. 按位运算指令

        – 逻辑运算指令
            NOT:取反,把操作数各位取反
            AND:与,进行按位逻辑“与”
            OR:或,进行按位逻辑“或”
            XOR:异或,进行按位逻辑“异或”
            TEST:根据将两操作数相“与”的结果设置条件标志,不改变原操作数
        – 移位指令
            SHL:逻辑左移,每位左移,最高位进CF,低位补0
            SHR:逻辑右移,每位右移,最低位进CF,高位补0
            SAL:算术左移,同SHL,若移位前后符号位改变,则OF=1
            SAR:算术右移,每位右移,最低位进CF,高位补符号
            ROL:循环左移,每位左移,最高位进最低位和CF
            ROR:循环右移,每位右移,最低位进最高位和CF
            RCL:带循环左移,将CF作为操作数的一部分循环左移
            RCR:带循环右移,将CF作为操作数的一部分循环右移
    
  4. 控制转移指令

        – 根据单个标志位的状态判断转移的指令
    
    指令转移条件说明
    JCCF=1 有进位/借位
    JNCCF=0无进位/借位
    JE/JZZF=1相等/等于零
    JNE/JNZZF=0不相等/不等于零
    JSSF=1是负数
    JNSSF=0是正数
    JOOF=1有溢出
    JNOOF=0无溢出
    JP/JPEPF=1有偶数个1
    JNP/JPOPF=0有奇数个1
    – 根据两个无符号数的比较结果判断转移的指令
    指令转移条件含义英文表述
    JA/JNBECF=0 AND ZF=0无符号数A>BJMP above (not below or equal)
    JAE/JNBCF=0无符号数A≥BJMP above or equal (not below )
    JB/JNAECF=1无符号数A<BJMP blow (not above or equal)
    JBE/JNACF=1 OR ZF=1无符号数A≤BJMP blow or equal (not above)
    – 根据两个有符号数的比较结果判断转移的指令
    指令转移条件含义英文表述
    JG/JNLESF=OF AND ZF=0有符号数A>BJMP greater (not less or equal)
    JGE/JNLSF=OF OR ZF=1有符号数A≥BJMP greater or equal (not less)
    JL/JNGESF≠OF AND ZF=0有符号数A<BJMP less (not greater or equal)
    JLE/JNGSF≠OF OR ZF=1有符号数A≤BJMP less or equal (not greater)
0
扫描二唯码在微信中打开

我一直在开辟我的天空