User:Error3251

From Simple English Wikipedia, the free encyclopedia

error.exp struct flagbits { BYTE C : 1; BYTE u1 : 1; BYTE P : 1; BYTE u2 : 1; BYTE A : 1; BYTE u3 : 1; BYTE Z : 1; BYTE S : 1; BYTE T : 1; BYTE I : 1; BYTE D : 1; BYTE O : 1; BYTE IOPL : 1; BYTE NT : 1; BYTE u : 1; BYTE RF : 1; };

union Flags { WORD EFLAGS; BYTE low; BYTE high; struct flagbits bits; };

inline BYTE LOADEFLAGS() { BYTE ret; __asm lahf __asm mov ret, ah return ret; }

  1. define PrintEFLAGS(var, flags) printf("%02x: %i%i%i%i%i%c%c%c%c\n", var, flags.bits.C, flags.bits.P, flags.bits.A, flags.bits.Z, flags.bits.S, 'u', 'u', 'u', 'u')

void Entrypoint() { //LAHF loads lower byte of the EFLAGS register into AH register. Con("8086 Emulator"); Con::AllowPrintf();

printf("Processor Flags:\n"); printf(" CPAZSTIDO\n");

Flags flags = { 0 }; BYTE v = 0xf7;

for (int i = 0; i < 16; i++) { __asm add v, 1;

flags.low = LOADEFLAGS(); PrintEFLAGS(v, flags); } system("Pause");