Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Лабораторная работа №3

Цель работы: изучить практические методы перевода МП в защищённый режим и организации межуровневой защиты.

 

Сегмент видеобуфера RPL=1,DPL=3

Внешний сегмент RPL=0, DPL=1. Адрес A=110130h, P=2130h.

Символ: код 13h, размещение 630h.

 

P286; Р разрешает асемблировать команды защищенного режима

; для MASM надо.286P

;

; Модуль Main

NAME main

bios_data_seg SEGMENT at 0040h; сегмент начинается с адреса 0040

ORG 0067h; переменные io_rom - с 0067

io_rom_init dw?; используютс в сегменте данных

io_rom_seg dw?; BIOS для хранения двойного

bios_data_seg ENDS; слова адреса

;

descriptor STRUC; сруктура дескриптора

seg_limit dw 0; предел(размер) сегмента

base_lo_word dw 0; базовый адрес

base_hi_byte db 0

access_rights db 0; байт прав доступа

dw 0; резерв для адреса в МП286

descriptor ENDS

;

cmos_port equ 070h

code_seg_access equ 10011010b

code_seg_access9 equ 10011010b; байт атрибутов код сег 2

;

data_seg_access equ 10010010b

data_seg_access5 equ 11110010b; *******************

data_seg_access7 equ 10010010b;*******************

;

shluz_access10 equ 11100100b; байт атрибутов шлюза сег 2

wc equ 00000100b; максим число передаваемых

; в процедуру параметров

;

disable_bit20 equ 11011101b

;

enable_bit20 equ 11011111b

;

inta01 equ 021h

intb01 equ 0a1h

port_a equ 060h

shut_cmd equ 0feh

shut_down equ 00fh

;

status_port equ 064h

virtual_enable equ 0001h

;

ton1 equ 5000h

ton2 equ 1000h

;

………………………………………….

;

cseg SEGMENT para public 'code'

ASSUME cs:cseg

ORG 100h

start: jmp main

;

EVEN

;

gdt LABEL byte

; пустой дескриптор, селектор = 0

dummy db 0,0,0,0,0,0,0,0

; Дескриптор GDT

ddt_desc EQU (($-gdt)/8)*8 + 0000000000000000b;селектор=8

gdt1 dw gdt_leng

base_lo_word_1 dw 0

base_hi_byte_1 db 0

db data_seg_access

db 0,0

; Дескриптор кодового сегмента

cs_code EQU (($-gdt)/8)*8 + 0000000000000000b;селектор = 10

gdt2 dw cseg_leng

base_lo_word_2 dw 0

base_hi_byte_2 db 0

db code_seg_access

db 0,0

; Алиас дескриптора кодового сегмента

cs_data EQU (($-gdt)/8)*8 + 0000000000000000b;селектор = 18

gdt3 dw cseg_leng

base_lo_word_3 dw 0

base_hi_byte_3 db 0

db data_seg_access

db 0,0

; Дескриптор стекового сегмента

ss_desc EQU (($-gdt)/8)*8 + 0000000000000000b;селектор = 20

gdt4 dw 0FFFFh

base_lo_word_4 dw 0

base_hi_byte_4 db 0

db data_seg_access

db 0,0

; Дескриптор сегмента данных;*******************

ds_desc equ (($-gdt)/8)*8 + 0000000000000001b;селектор = 28

gdt5 dw 0FFFFh

base_lo_word_5 dw 0

base_hi_byte_5 db 0

db data_seg_access5

db 0,0

; Дескриптор дополнительного сегмента данных;*****************

es_desc equ (($-gdt)/8)*8 + 0000000000000001b;селектор = 30

gdt6 dw 0FFFFh

base_lo_word_6 dw 0

base_hi_byte_6 db 0

db data_seg_access5

db 0,0

; Дескриптор сегмента данных 1;*************

ds_desc_1 equ (($-gdt)/8)*8 + 0000000000000000b;селектор = 38

gdt7 dw 2208h

base_lo_word_7 dw 0

base_hi_byte_7 db 0

db data_seg_access7

db 0,0

; Дескриптор дополнительного сегмента данных 1;***************

es_desc_1 equ (($-gdt)/8)*8 + 0000000000000000b;селектор = 40

gdt8 dw 2208h;razmer vneshnego segmenta

base_lo_word_8 dw 0

base_hi_byte_8 db 0

db data_seg_access7

db 0,0

; Дескриптор кодового сегмента 2

cs_code2 equ (($-gdt)/8)*8 + 0000000000000000b;селектор = 48

gdt9 dw cseg2_leng

base_lo_word_9 dw 0

base_hi_byte_9 db 0

db code_seg_access9

db 0,0

; Дескриптор шлюза кодового сегмента 2

cs_shluz2 equ (($-gdt)/8)*8 + 0000000000000000b;селектор = 50

gdt10 dw offset beep;адрес начала процедуры в сегменте 2

dw cs_code2; селектор сегмента 2

db WC; число передаваемых параметров в проц

db shluz_access10; байт атрибутов шлюза

dw 0

;

…………………………………………………………….

;

mov ax,cs_data

mov ds,ax

mov base_lo_word_7,2130h;// базовый адрес внешнего сегмента

mov base_hi_byte_7,15h;*********************************

mov base_lo_word_8,2130h

mov base_hi_byte_8,15h

mov ax,ds_desc_1

mov ds,ax

mov ax,es_desc_1

mov es,ax

mov di,630h;******************************

mov ah,40h

mov al,13h;******************************

stosw

…………………………………………………………….

 

Результат:

 

До и после загрузки селектора Видеобуфер Внешний сегмент Контрольный символ
CS DS CS DS Sel AR Sel AR
С К С К С К С К С К С К С К С К С К
BB @       )   F2     T   !!  

 

Вывод по работе: В результате проделанной лабораторной работы были изучены практические методы перевода МП в защищённый режим и организации межуровневой защиты.

Отсутствие перехода в защищённый режим будет наблюдаться при:

-уменьшении уровня RPL или увеличения уровня DPL;

-размещении символа за пределами сегмента;

-уменьшении предела внешнего сегмента.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...