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


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

Для определения типа процессора можно использовать следующую программу: .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

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



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