13.01.2007, 17:02
общий
это ответ
Здравствуйте, BugZex!
> Все не так ПРОСТО!....
> Я пишу на СИ ( BCB ) и делаю asm вставки...
| В С3 TOP С2 С1 С0 ES РЕ UE ОЕ ZE DE IE |
все советы остаются в силе. флаги сохраняются в переменную, после чего в коде С с помощью логических операндов проверять на наличие или отсутствие флага.
& это and (применятся для обнуления бит и проверки на наличие установленного бита)
| это or (используется для установки бит)
^ это xor (используется для инвертации нужных битов)
примерный пример в приложении
> Так как компилятор от Borland, то там нет команд условного перехода. Поэтому здесь надо как-то по другому поступить...
команды условного перехода во встроенном ассемблере борланда тоже есть.
пример 2 делает тоже что и 1 только силами ассемблера
Приложение:
unsigned int fpu_flags; /* подразумевается что int 16 битный */asm { fdtsw ax mov fpu_flags, ax}/* проверяем установлен ли, например, флаг деления на 0*/if (fpu_flags & 0x04){ /* тут делаем все что нужно если флаг установлен */}пример 2:asm { fdtsw ax test ax, 4 ;/* проверяем установлен ли, например, флаг деления на 0*/ jz end ;/* тут делаем все что нужно если флаг установлен */end:}