Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Аппаратное обеспечение 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

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

[Назад] [Содеожание] [Дальше]