x86指令设置奇偶校验,溢出和符号标志

Naj*_*han 3 x86 assembly masm32

我们有STC设置进位标志的指令.我们是否有类似的奇偶校验,溢出,符号标志等指令?我试过STP,STS但似乎这些不存在!

Ira*_*ter 7

不,这些命令不存在.您发现的方法是仔细阅读说明参考手册.

他们并不真的需要存在.您可以非常轻松地有效地实现它们.如果你不介意设置其他位,这里有很多方法之一:

STP:  XOR  AL,AL  ; resets parity bit
      XOR  AL,1   ; ... then set parity bit

STO:  OR   AL, 0FFh
      SUB  AL, 080h ; sets overflow

STS:  OR   AL, 0FFh ; sets sign bit
Run Code Online (Sandbox Code Playgroud)

如果你坚持只设置特定的位:

      PUSHFD
      OR    dword ptr[ESP], <bitmask_for_flag_bit> ; see Intel manual
      POPFD
Run Code Online (Sandbox Code Playgroud)

硅片空间是宝贵的,CPU设计者倾向于不提供易于完成的事情的说明.(STC从8080天开始,在进行各种多精度算术时非常有用,而且不会损坏寄存器是非常好的事情).

  • @PeterCordes:OP询问如何*设置*这些位; 我同意你的计划清除它们.OR AL 0FFH如何清除*设置*奇偶校验位?有*8*一位,即*偶数*奇偶校验.我为那些你不能损坏寄存器的情况提供了PUSHFD序列. (2认同)