条件码通常不会直接读取,常用的使用方法有三种:
1)可以根据条件码的某个组合,将一个字节设置为 0 或者 1;
2)可以条件跳转到程序的某个其他的部分;
3)可以有条件地传递数据。
对于第一种情况,下表描述的指令根据条件码的某个组合,将一个字节设置为 0 或者 1.这一类指令称为 SET 指令;它们之间的区别就在于他们考虑的条件码的组合是什么,这些名字的不同后缀指明了它们所考虑的条件码的组合,这些指令的后缀表示不同的条件而不是操作数大小。
指令 | 同义名 | 效果 | 设置条件 |
sete D setne D
sets D setns D
setg D setge D setl D setle D
seta D setae D setb D setbe D | setz setnz
setnle setnl setnge setng
setnbe setnb setnae setna | D ZF D ~ZF
D SF D ~SF
D ~(SF ^ OF) & ~ZF D ~(SF^OF) D SF ^ OF D (SF ^ OF) | ZF
D ~CF & ~ZF D ~CF D CF D CF | ZF | 相等/零 不等/非零
负数 非负数
大于(有符号>) 大于等于(有符号>=) 小于(有符号<) 小于等于(有符号<=)
超过(无符号>) 超过或相等(无符号>=) 低于(无符号<) 低于或等于(无符号<=) |
一条 SET 指令的目的操作数是 8 个单字节寄存器元素之一,或是存储一个字节的存储器位置,将这个字节设置成 0 或者 1。为了得到一个 32 位结果,必须对最高的 24 位清零。