Учебно методический переключение реального и защищенного режима для процессоров intel 386+


Скачать 59.17 Kb.
Название Учебно методический переключение реального и защищенного режима для процессоров intel 386+
Тип Программа
rykovodstvo.ru > Руководство эксплуатация > Программа

УЧЕБНО-МЕТОДИЧЕСКИЙ c:\documents and settings\paradox\desktop\безимени-3.png


Переключение реального и защищенного режима для процессоров INTEL 386+

(методические указания для студентов факультета ПМИ)

Г. Сардарян

Ереванский государственный университет

Рассматриваются некоторые вопросы управления рабочими режимами микропроцессоров фирмы Intel. Известно, что работа микропроцессоров всегда начинается с реального режима, и его возможности ограничены. По этой причине операционная система, совершая подготовительную работу, переводит микропроцессоры в защищенный режим, в котором действует ряд механизмов[2].

Приводится программа, которая реализует переход из реального режима в защищенный режим и возвращение снова в защищенный режим[1]. Предложенная программа отличается от аналогичных программ тем, что в данном случае сегменты отделены. Коды, работающие в реальном и защищенном режимах, находятся в разных сегментах. Сегменты данных и стека так же разделены.

Программа в защищенном режиме не обрабатывает прерывания, так как перед переходом в защищенный режим прерывания закрываются, и в дальнейшем, открываются после возвращения в реальный режим. Для обработки прерываний в защищенном режиме необходимо совершить некоторую работу: построить программу обработки прерываний, создать таблицу IDT и так далее. Исходя из того обстоятельства, что вывод данных на графическое устройство можно осуществлять не только с помощью прерываний, а еще непосредственной записью информации в соответствующую область памяти, в защищенном режиме некоторые данные так же можно отобразить на графическое устройство без помощи прерываний.

В текстовом режиме, адрес памяти выделенной для графического устройства, начинается с 0B8000h, в котором содержится ASCII код символа в левом верхнем углу. В 0B8002h содержится ASCII код следующего символа первой строки графического устройства и так далее... В нечетных адресах содержится атрибуты символов (цвет, вид и тому подобное).

В приведенном примере программа переходит из реального режима в защищенный, очищает содержимое графического устройства, в 8ой строке печатает текст – “Hello World ! ”, возвращается в реальный режим, ждет нажатия клавиши и после этого завершает работу.

Ниже приводится программа на языке Assembler-а с соответствующими комментариями.

  1. ; RM  PM  RM




  1. ; tasm /m pl.asm Ключи компиляции и сборки программы

  2. ; tlink /x /3 pl.obj

  3. .386p ;

  4. data segment 'data' use16 ;Сегмент данных

  5. message db 'H',7,'e',7,'l',7,'l',7,'o',7,' ',7,'W',7 ;выводимый текст

  6. db 'o',7,'r',7,'l',7,'d',7,' ',7,'!',7,' ',7

  7. message_l = $-message

  8. rest_scr=25*80 ; размер экрана

  9. GDT label byte ; таблица дескрипторов

  10. db 8 dup (0)

  11. GDT_flatCS db 0FFh,0FFh,0,0,0,10011010b,11001111b,0




  1. GDT_flatDS db 0FFh,0FFh,0,0,0,10010010b,11001111b,0

  2. GDT_16bitCS db 0FFh,0FFh,0,0,0,10011010b,0,0

  3. GDT_16bitDS db 0FFh,0FFh,0,0,0,10010010b,0,0

  4. GDT_l = $-GDT

  5. gdtr dw GDT_l-1 ;область GDTR-а

  6. dd ?



  7. data ends




  1. ;16-ти битный сегмент, в котором содержится код входа и выхода в защищенный режим

  2. RM_seg segment para public 'code' use16

  3. assume CS:RM_seg,SS:RM_stack,ds:data

  4. start:

  5. ;загрузить регистр DS

  6. mov ax,data

  7. mov ds,ax

  8. ;ввести символьную строку

  9. ;если будем работать с 32-ой памятью, тогда желательно открыть A20 Gate

  10. in al,92h

  11. or al,2

  12. out 92h,al

  13. ;посчитать линейный адрес PM_entry

  14. xor eax,eax

  15. mov ax,PM_seg

  16. shl eax,4

  17. add eax,offset PM_entry

  18. mov dword ptr cs:pm_entry_off,eax

  19. ;посчитать базу для GDT_16bitDS

  20. xor eax,eax

  21. mov ax,ds

  22. shl eax,4

  23. push eax

  24. mov word ptr GDT_16bitDS+2,ax

  25. shr eax,16

  26. mov byte ptr GDT_16bitDS+4,al

  27. ;посчитать базу для GDT_16bitCS

  28. xor eax,eax

  29. mov ax,cs

  30. shl eax,4

  31. mov word ptr GDT_16bitCS+2,ax

  32. shr eax,16

  33. mov byte ptr GDT_16bitCS+4,al

  34. ;определить адрес метки GDT

  35. pop eax

  36. add eax,offset GDT

  37. mov dword ptr gdtr+2,eax

  38. ;загрузить GDTR

  39. lgdt fword ptr gdtr

  40. ;закрыть прерывания



  1. cli

  2. ;закрыть немаскируемые прерывания (NMI)

  3. in al,70h

  4. or al,80h

  5. out 70h,al

  6. ;перейти в PM

  7. mov eax,cr0

  8. or al,1

  9. mov cr0,eax

  10. ;загрузить в CS новый селектор

  11. db 66h ;приставка для изменения битности операнда

  12. db 0EAh ;длинный jmp

  13. pm_entry_off dd ? ;32-х битное смещение

  14. dw SEL_flatCS ;селектор




  1. RM_return: ;точка возвращения из PM

  2. ;переход в RM

  3. mov eax,cr0

  4. and al,0FEh

  5. mov cr0,eax

  6. ;очистить командную очередь, загрузить CS с сегментным адресом

  7. db 0EAh ;длинный jmp

  8. dw $+4 ;адрес следующей команды

  9. dw RM_seg ;сегментный адрес RM_seg

  10. ;открыть NMI

  11. in al,70h

  12. and al,07Fh

  13. out 70h,al

  14. ;разрешенные прерывания

  15. sti

  16. ;ждать нажатия клавиши

  17. mov ah,0

  18. int 16h

  19. ;завершить программу

  20. mov ah,4Ch

  21. int 21h

  22. ;значения селекторов

  23. SEL_flatCS equ 00001000b

  24. SEL_flatDS equ 00010000b

  25. SEL_16bitCS equ 00011000b

  26. SEL_16bitDS equ 00100000b




  1. RM_seg ends




  1. ;32-х битнуй код сегмент реализуемый в PM

  2. PM_seg segment public 'CODE' use32

  3. assume cs:PM_seg

  4. PM_entry:

  5. ;загрузить сегментные регистры




  1. mov ax,SEL_16bitDS

  2. mov ds,ax

  3. mov ax,SEL_flatDS

  4. mov es,ax

  5. ;очистить содержимое графического устройства (CGA)

  6. mov edi,0B8000h

  7. mov ecx,rest_scr

  8. mov ax,720h

  9. rep stosw

  10. ;напечатать текст на 9-ой строке экрана

  11. mov esi,offset message

  12. mov edi,0B8500h

  13. mov ecx,message_l

  14. rep movsb

  15. ;загрузить CS 16-ти битным селектором сегмента RM_seg

  16. db 0EAh

  17. dd offset RM_return

  18. dw SEL_16bitCS

  19. PM_seg ends

  20. ;стек сегмент одинаков для 16,32 битностей

  21. RM_stack segment stack 'STACK' use16

  22. db 100h dup (?)

  23. RM_stack ends

  24. end start


Приведенную программу можно использовать для решения таких задач, в которых нужно совершить некоторые действия в реальном режиме – ввод информации, вывод и т.д. … Эти действия необходимо реализовывать между строками 28-66, а если они связаны с прерыванием, тогда между строками 28-60 (до закрытия прерываний). Если имеется необходимость выполнить некоторые действия после возвращения из защищенного режима в реальный режим, тогда эти действия нужно реализовывать между строками 84-90, а если они связаны с прерыванием, то после 90-ой строки. Реализовывать действия в защищенном режиме нужно вместо строк 111-120. Данные, необходимые программе, можно держать в сегменте данных, после строк 5,8,9,16,18.

Литература

1. Зубков С.В. Assembler для DOS, Windows и Unix, 2000

2. IA-32 Intel Architecture. Software Developer’s Manual. Volume 3. System Programming Guide. 2002.


Похожие:

Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon М. Е. Жуковский, Р. В. Усков о применении графических процессоров...
В работе рассмотрены основы применения технологии nVidia© cuda для распараллеливания вычислений с использованием графических процессоров....
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Библиотека системного программиста
В книге приведено описание методик программирования аппаратуры персональных компьютеров, выполненных с применением процессоров Intel,...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon 4. Литература. Введение в архитектуру intel
Однако, первым настоящим процессором в семействе ia является 8086, и выпущенный вслед за ним более дешевый процессор 8088. Объектный...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс по дисциплине «Маркетинг»
Учебно-методический комплекс предназначен для студентов очной формы обучения, содержит план лекционных и практических занятий, рекомендации...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс по дисциплине «Маркетинг»
Учебно-методический комплекс предназначен для студентов заочной формы обучения, содержит план лекционных и практических занятий,...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс по дисциплине «Языки и среды реализации web -приложений»
Учебно-методический комплекс предназначен для студентов заочной формы обучения, содержит план лекционных и практических занятий,...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс по дисциплине «Гештальт-психология»
Учебно-методический комплекс предназначен для бакалавров очной формы обучения, содержит учебно-тематический план, учебную программу,...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс по дисциплине «Деньги, кредит, банки»
Учебно-методический комплекс рекомендован к изданию кафедрой «Банковское дело» и утвержден Учебно-методическим советом (протокол...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Кафедра журналистики учебно-методический комплекс по курсу "организация работы пресс-службы"
...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс Для специальности: 080105 «финансы и кредит»
Учебно-методический комплекс «Банковское дело» составлен в соответствии с требованиями Государственного образовательного стандарта...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс по мдк 01. 01. Основы управления ассортиментом...
Учебно-методический комплекс предназначен для студентов 2-го курса специальности 100801 «Товароведение и экспертиза качества потребительских...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс для студентов специальности 080100. 62
Данный учебно-методический комплекс предназначен для оказания помощи студентам в более эффективном освоении программы учебного курса...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс по дисциплине опд. В. 01 Современные...
Настоящий учебно-методический комплекс разработан для курса по выбору «стфо: профильное обучение литературе», который изучается студентами...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс дисциплины
Учебно-методический комплекс составлен в соответствии с требованиями государственного образовательного стандарта высшего профессионального...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс дисциплины
Учебно-методический комплекс составлен на основании требований государственного образовательного стандарта высшего профессионального...
Учебно методический переключение реального и защищенного режима для процессоров intel 386+ icon Учебно-методический комплекс дисциплины «Трудовое право»
Учебно-методический комплекс составлен в соответствии с требованиями государственного образовательного стандарта высшего профессионального...

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск