随笔三十二:访问条件码

来源:互联网 发布:加载虚拟光驱的软件 编辑:程序博客网 时间:2024/06/05 05:46

        条件码通常不会直接读取,常用的使用方法有三种:

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 位清零。