> Встретился такой код: > mov si,0ffffh > mov WORD ptr [si],0 ;<-любое число > > (Virtual mode) > > В W98 режима выдается Прога выполнила недоп. опер и т.д(GP > -Fault), в 2000 есесно вылетает без вопросов. > В реальном (в чистом досе) тоже вылетает без вопросов. > Вопрос: какое исключение генерируется в ДОСе? Poprobui postavit exception handler i posmotret`.:
class Exception
{
private:
unsigned int m_n;
public:
Exception( unsigned int n ) : m_n( n ) {}
~Exception() {}
unsigned int GetNumber() { return m_n; }
};
void trans_func( unsigned int, EXCEPTION_POINTERS* pe)
{
throw Exception(pe->ExceptionRecord->ExceptionCode);
};
int main(int argc, char* argv[])
{
::_set_se_translator(trans_func);
try
{
_asm
{
mov si,0ffffh
mov WORD ptr [si],0 ;<-любое число
}
}catch(Exception e)
{
unsigned int i;
i = e.GetNumber();
}
}
|