label GDTR fword
dw ?
Addr dd ?
.............
sgdt [GDTR]
mov eax, [Addr]
cmp eax, 80000000h
jb .notWindows
......
.notWindows:
Определение операционки
Есть bin файл, его загружает какаято прога и делает jmp на начало этого bin'а. После надо както (в этом и есть вопрос - как) определяет под какой операционкой работает прога (меня интересуют три варианта WinXP, DOS, Linux). Далее передаёт управление (jmp) на кускок кода соответствующий нужной ОСи. Вопрос: как определить ОС?
Ну например (первое что пришло в голову), отличить DOS от Windows (или Linux) можно выполнив команду sgdt, если адрес GDT меньше чем 80000000h, то мы точно не в Windows. Про Linux ничего сказать не могу, потому не знаю, но наверно там почти также.
выполнить прерывание 2Fh . параметры не помню , но они в любой книжке есть . суть в том что дос даст один результат , винда другой , а в линуксе сработает заглушка .