основан на том факте,
Способ распознавания процессоров Intel 8086/ 8088 основан на том факте, что биты 12-15 регистра FLAGS всегда установлены в единицу.
Прежде всего программа записывает текущее содержимое регистра FLAGS в регистр AX. Для этого используется стек:
pushf
pop ax
Первоначальное содержимое регистра FLAGS сохраняется в регистре CX:
mov cx, ax
Далее программа пытается записать нулевые значения в биты 12-15 регистра FLAGS:
and ax, 0fffh
push ax
popf
Теперь нужно проверить, изменилось ли содержимое указанных битов регистра FLAGS. Для этого новое содержимое регистра FLAGS записывается через стек в регистр AX, а затем, после наложения маски 0f000h, сравнивается со значением 0f000h:
pushf
pop ax
and ax, 0f000h
cmp ax, 0f000h
je is_8086
Если биты 12-15 остались установленными в единичное значение, программа работает на процессоре Intel 8086/8088, если нет – в компьютере установлена более старшая модель процессора.