• 汇编JCC学习


    1.JMP指令:修改EIP的值(只修改了EIP的值,寄存器以及堆栈都没有改变)

        mov eip,寄存器/立即数          简写为      JMP 寄存器/立即数

     

    2.Call指令:(修改了EIP的值,[ESP-4],把返回地址的值(当前地址+指令所占字节)压栈)

        push 地址B

        mov eip,地址A/寄存器    简写为:CALL 地址A/寄存器

    3.RET指令:(相当于pop eip)

        lea esp,[esp+4]

        mov eip,[esp-4]      简写为:RET

    4.CMP指令: 格式:CMP R/M,R/M/IMM (只修改标志寄存器的值)(加入SF=1了,一定是因为第一个操作数比第二个操作数小了,因为相减位负数,最高位为1

      该指令是比较两个操作数,实际上,它相当于SUB指令,但是相减的结构并不保存到第一个操作数中。
      只是根据相减的结果来改变零标志位的,当两个操作数相等的时候,零标志位置1

        
    MOV EAX,100
        MOV ECX,100
        CMP EAX,ECX        观察Z位


       
     MOV EAX,100
        MOV ECX,200
        
    CMP EAX,ECX        观察S位


        CMP AX,WORD PTR DS:[405000]

        CMP AL,BYTE PTR DS:[405000]

        CMP EAX,DWORD PTR DS:[405000]

    5.TEST指令: (判断某一个寄存器是否为空,TEST EAX,EAX

      指令格式:TEST R/M,R/M/IMM

      该指令在一定程序上和CMP指令时类似的,两个数值进行与操作,结果不保存,但是会改变相应标志位.

      与的操作表项如下:

        1 and 1 = 1

        1 and 0 = 0

        0 and 1 = 0

        0 and 0 = 0

      常见用法:用这个指令,可以确定某寄存器是否等于0。

      TEST EAX,EAX 观察Z位

      但是如果EAX的二进制某些位为1的话,那么运算的结果就不为零。

     

    6. JE(两个操作数相等), JZ 结果为零则跳转(相等时跳转) ZF=1


    7. JNE, JNZ 结果不为零则跳转(不相等时跳转) ZF=0


    8、 JS 结果为负则跳转 SF=1


    9、 JNS 结果为非负则跳转 SF=0


    10、 JP, JPE 结果(低8位)中1的个数为偶数则跳转 PF=1


    11、 JNP, JPO 结果中1的个数为非偶数则跳转 PF=0


    12、 JO 结果溢出了则跳转 OF=1


    13、 JNO 结果没有溢出则跳转 OF=0


    14、 JB, JNAE 小于则跳转 (无符号数) CF=1


    15、 JNB, JAE 大于等于则跳转 (无符号数) CF=0


    16、 JBE, JNA 小于等于则跳转 (无符号数) CF=1 or ZF=1


    17、 JNBE, JA 大于则跳转(无符号数) CF=0 and ZF=0


    18、 JL, JNGE 小于则跳转 (有符号数) SF≠ OF


    19、 JNL, JGE 大于等于则跳转 (有符号数) SF=OF


    20、 JLE, JNG 小于等于则跳转 (有符号数) ZF=1 or SF≠ OF


    21、 JNLE, JG 大于则跳转(有符号数) ZF=0 and SF=OF



      有符号无符号的区别:

      CMP AL,CL
      JG 0x12345678
      JA 0x12345678

  • 相关阅读:
    算法学习02天nlp之TF-IDF
    kylin 密码修改
    kylin报错: failed on local exception: org.apache.hadoop.hbase.ipc.CallTimeoutException : Call id=xxxxx waitTime=xxxxx,operationTimeout = 5000 expired
    kafka 练习
    hdfs 3备份 2备份
    nlp 电商评论处理 -史诗级长文
    调用百度OCR模块进行文字识别
    简单的社交网络
    maxscript.api
    【pytorch】保存与加载模型(1.7.0官方教程)
  • 原文地址:https://www.cnblogs.com/heyhx/p/14181916.html
Copyright © 2020-2023  润新知