Аппаратное обеспечение IBM PC
© Александр Фролов, Григорий Фролов
Том 2, книга 1, М.: Диалог-МИФИ, 1992.
Мы уже говорили о том, для чего может
потребоваться программе определять тип
используемого процессора.
Для определения типа процессора можно
использовать следующую программу:
.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
Работа программы основывается на записи в стек
слова состояния процессора и последующего
извлечения его. При этом проверяется содержимое
старших извлеченных из стека битов.
|