Определение типа процессора
Мы уже говорили о том, для чего может потребоваться программе определять тип используемого процессора.
Для определения типа процессора можно использовать следующую программу:
.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
Работа программы основывается на записи в стек слова состояния процессора и последующего извлечения его. При этом проверяется содержимое старших извлеченных из стека битов.