Аппаратное обеспечение IBM PC

Определение типа процессора


Мы уже говорили о том, для чего может потребоваться программе определять тип используемого процессора.

Для определения типа процессора можно использовать следующую программу:

.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

Работа программы основывается на записи в стек слова состояния процессора и последующего извлечения его. При этом проверяется содержимое старших извлеченных из стека битов.



Содержание раздела