x86 instructions to set parity, overflow, & sign flags

前端 未结 1 1704
一向
一向 2021-01-20 10:43

We have the STC instruction to set the carry flag. Do we have similar instructions for parity, overflow, sign flags etc? I have tried STP, ST

相关标签:
1条回答
  • 2021-01-20 11:24

    No, those commands don't exist. The way you find out is by reading the instruction reference manuals carefully.

    They don't really need to exist. You can effectively implement them pretty easily. Here's one of many ways, if you don't mind other bits getting set:

    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
    

    If you insist on setting just the specific bit:

          PUSHFD
          OR    dword ptr[ESP], <bitmask_for_flag_bit> ; see Intel manual
          POPFD
    

    Silicon space being precious, CPU designers tend not to provide instructions for things that are easily done. (STC is left over from 8080 days, where it was useful in doing various kinds of multiprecision arithmetic and not damaging registers was a Very Good Thing).

    0 讨论(0)
提交回复
热议问题