• sete 指令


    sete指令通常和算数指令或者逻辑运算指令一起出现。

    CMP eax,5

    sete cl

    首先顾名思义一下,sete的意思就是set equal 就是相等的时候设置,设置谁,设置cl,用谁设置cl的值,用ZF标志位的值。

    所以sete指令的意思就是根据ZF标志位的值设置一个变量的值是1和0

    上面代码的意思就是,当eax是5的时候就设置cl的值为1,不是5则设置cl的值为0。你看这个过程是不是一个分支判断的过程呀,有分支判断

    但是没有用到条件跳转语句。这就简化了流程了。

    所以cmp汗巾儿sete指令作用即能判断两个数相等不相等且能简化分支流程。

    不明白sete 指令的,其实可以用OD随便调试一下,改几句代码就明白了。

    76FE01E8 83F8 08 CMP EAX,8
    76FE01EB 0F94C1 SETE CL
    76FE01EE 90 NOP
    76FE01EF 90 NOP

    看一下仙剑4战斗系统里面的一段代码

    PAL4.exe+1844C0 - 8B 01 - mov eax,[ecx]
    PAL4.exe+1844C2 - FF 90 A8000000 - call dword ptr [eax+000000A8]
    PAL4.exe+1844C8 - 33 C9 - xor ecx,ecx
    PAL4.exe+1844CA - 83 F8 03 - cmp eax,03 { 3 }
    PAL4.exe+1844CD - 0F94 C1 - sete cl
    PAL4.exe+1844D0 - 8A C1 - mov al,cl

    调用了一个类的函数,看函数的返回值和3的大小,如果等于3则设置cl的值为1,如果不等于3则设置cl的值为0

  • 相关阅读:
    Docker 镜像
    为什么要用 Docker
    什么是 Docker
    python编码
    Python File(文件) 方法
    Python 日期和时间
    Python 字符串字典内置函数&方法
    Python 元组内置函数
    Epos消费管理系统使用发布订阅实现数据库SQL SERVER 2005同步复制
    Epos消费管理系统复制迁移SQL SERVER 2005数据库
  • 原文地址:https://www.cnblogs.com/yfish/p/15342211.html
Copyright © 2020-2023  润新知