Аппаратное обеспечение IBM PC© Александр Фролов, Григорий ФроловТом 2, книга 1, М.: Диалог-МИФИ, 1992. 1.5. Определение типа процессораМы уже говорили о том, для чего может потребоваться программе определять тип используемого процессора. Для определения типа процессора можно использовать следующую программу:
.MODEL tiny
.STACK 100h
.DATA
msg1 db "Тип вашего процессора: ", "$"
m_8086 db "8086","$"
m_80286 db "80286","$"
m_80386 db "80386","$"
.CODE
.STARTUP
mov ah, 9h
mov dx, OFFSET msg1
int 21h
; Записываем 0 в регистр флагов
xor ax,ax
push ax
popf
; Переписываем регистр флагов через
; стек в регистр AX
pushf
pop ax
; Проверяем установку старших четырех битов
and ax,0F000h
cmp ax,0F000h
; Если эти биты установлены, программа
; работает на процессоре 8086
je short CPU_8086
; Записываем 0F000h в регистр флагов
mov ax,0F000h
push ax
popf
; Переписываем регистр флагов через
; стек в регистр AX
pushf
pop ax
; Проверяем установку старших четырех битов
and ax,0F000h
; Если эти биты установлены, программа
; работает на процессоре 80286
jz short CPU_80286
; Если биты не установлены, то программа
; работает на процессоре 80386
mov dx, OFFSET m_80386
jmp end_program
CPU_80286:
mov dx, OFFSET m_80286
jmp end_program
CPU_8086:
mov dx, OFFSET m_8086
end_program:
mov ah, 9h
int 21h
.EXIT 0
END
Работа программы основывается на записи в стек слова состояния процессора и последующего извлечения его. При этом проверяется содержимое старших извлеченных из стека битов. |

