Системное программное обеспечение. Особенности программирования 32-разрядных процессоров. Рощин А.В. - 19 стр.

UptoLike

Составители: 

19
сегментной адресацией памяти, которая осуществляется совсем не так, как
в реальном режиме.
Следует заметить, что для выполнения рассмотренной ниже
программы необходимо, чтобы на компьютере была установлена система
MS-DOS "в чистом виде" (не в виде сеанса DOS системы Windows). Перед
запуском программ защищенного режима следует выгрузить как систему
Windows, так и драйверы обслуживания расширенной памяти HIMEM.SYS
и EMM386.EXE.
Листинг 1.1 – Программа, работающая в защищенном режиме
1 ;*********************************************
2 ; Программа, работающая в защищенном режиме *
3 ;*********************************************
4 .386P ; Разрешение трансляции всех (в том
5 ; числе и привилегированных команд
6 ; процессоров 386 и 486
7 ; Структура для дескриптора сегмента
8 descr struc
9 lim dw 0 ; Граница (биты 0 - 15)
10 base_1 dw 0 ; База (биты 0 - 15)
11 base_m db 0 ; База (биты 16 - 23)
12 attr_1 db 0 ; Байт атрибутов 1
13 attr_2 db 0 ; Граница (биты 16 - 19)
14 ; и атрибуты 2
15 base_h db 0 ; База (биты 24 - 31)
16 descr ends
17
18 data segment use16
19 ; Таблица глобальных дескрипторов GDT
20 ; Селектор 0 –
обязательный нулевой дескриптор
21 gdt_null descr <0,0,0,0,0,0>
22 ; Селектор 8 - сегмент данных
23 gdt_data descr <data_size-1,0,0,92h,0,0>
24 ; Селектор 16 - сегмент кода
25 gdt_code descr <code_size-1,0,0,98h,0,0>
26 ; Селектор 24 – сегмент стека
27 gdt_stack descr <255,0,0,92h,0,0>
28 ;Селектор 32 - видеобуфер
29 gdt_screen descr <4095,8000h,0bh,92h,0,0>
30 gdt_size=$-gdt_null ; Размер GDT
31 ;======================================================
32 ; Поля данных программы
33 pdescr dq 0 ; Псевдодескриптор для команды lgdt
34 sym db 1 ; Символ для вывода на экран
35 attr db 1ah ; Атрибут символа
сегментной адресацией памяти, которая осуществляется совсем не так, как
в реальном режиме.
       Следует заметить, что для выполнения рассмотренной ниже
программы необходимо, чтобы на компьютере была установлена система
MS-DOS "в чистом виде" (не в виде сеанса DOS системы Windows). Перед
запуском программ защищенного режима следует выгрузить как систему
Windows, так и драйверы обслуживания расширенной памяти HIMEM.SYS
и EMM386.EXE.
       Листинг 1.1 – Программа, работающая в защищенном режиме
1    ;*********************************************
2    ; Программа, работающая в защищенном режиме *
3    ;*********************************************
4       .386P ; Разрешение трансляции всех (в том
5             ; числе и привилегированных команд
6             ; процессоров 386 и 486
7    ; Структура для дескриптора сегмента
8    descr    struc
9    lim      dw        0 ; Граница (биты 0 - 15)
10   base_1 dw          0 ; База (биты 0 - 15)
11   base_m db          0 ; База (биты 16 - 23)
12   attr_1 db          0 ; Байт атрибутов 1
13   attr_2 db          0 ; Граница (биты 16 - 19)
14                        ; и атрибуты 2
15   base_h db          0 ; База (биты 24 - 31)
16   descr    ends
17
18   data     segment use16
19   ; Таблица глобальных дескрипторов GDT
20   ; Селектор 0 – обязательный нулевой дескриптор
21   gdt_null descr <0,0,0,0,0,0>
22   ; Селектор 8 - сегмент данных
23   gdt_data descr 
24   ; Селектор 16 - сегмент кода
25   gdt_code descr 
26   ; Селектор 24 – сегмент стека
27   gdt_stack descr <255,0,0,92h,0,0>
28   ;Селектор 32 - видеобуфер
29   gdt_screen descr <4095,8000h,0bh,92h,0,0>
30   gdt_size=$-gdt_null       ; Размер GDT
31   ;======================================================
32   ; Поля данных программы
33   pdescr dq      0    ; Псевдодескриптор для команды lgdt
34   sym      db    1    ; Символ для вывода на экран
35   attr     db    1ah ; Атрибут символа


                                        19