logo
несколько программ / bsp33

МоделиIntel 8086/8088

Способ распознавания процессоров 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, если нет – в компьютере установлена более старшая модель процессора.