48214 (Програма модифікуюча команди, які використовуються в захищеному режимі), страница 3

2016-07-30СтудИзба

Описание файла

Документ из архива "Програма модифікуюча команди, які використовуються в захищеному режимі", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48214"

Текст 3 страницы из документа "48214"

NE (Numeric Error) - біт керування обробкою помилок FPU : якщо NE=0, то встановлюється схема обробки помилок, використовувана в МП 80286 і 80386 - через зовнішнє переривання IRQ 13 (переривання від співпроцесора). При цьому на вхід IRQ 13 контролера переривань надходить сигнал FERR# від МП, що приймає активний (низький) рівень при помилці FPU. Вхідний сигнал МП IGNNE# низьким рівнем дозволяє заборонити обробку помилок FPU. Якщо NE=1, помилки співпроцесора обробляються як внутрішні переривання з номером 16;

WP (Write Protection) - біт захисту від запису забороняє запис у сторінки, потрібні тільки для читання для всіх програм;

AM (Alignment Mask) - біт маски вирівнювання: при AM=0 забороняється перевірка невирівняності операндів;

NW (Not Write through) - біт заборони запису в кеш-пам'ять;

CD (Cache Disable) - біт заборони кэшировання, тобто заповнення рядка кеш-пам'яті;

PG (PaGing) - біт дозволу сторінкової організації. Установка PG=1 дозволена тільки в захищеному режимі, тобто при PE=1.

Занесення даних у регістр CR0 для мікропроцесорів починаючи с 80386 виконується спеціальною командою MOV, що здійснює промін із системними регістрами.

У МП 80286 замість 32-розрядного регістра CR0 мається 16-розрядний регістр MSW (Machine Status Word). Занесення даних у MSW виконується командою LMSW. Для сумісності молодші 16 розрядів CR0 збігаються з MSW і запис у них може здійснюватися також і командою LMSW.Установка біта PE здійснюється для мікропроцесора 80286 за допомогою команди LMSW, що заносить значення перемінної msw у регістр MSW: db 0fh,01h,36h { LMSW }

dw msw

jmp @prot

Для МП починаючи з 80386 установка біта PE CR0 без зміни інших розрядів регістра керування здійснюється за допомогою команди MOV:

db $0f,$20,0c0h { MOV EAX,CR0 }

db 66h,0dh { OR EAX,1 }

dd 1h

db $0f,22h,0c0h { MOV CR0,EAX }

jmp @prot

Відразу після переходу МП у захищений режим необхідно виконати програмний перехід для очищення буфера предвиборки від команд, занесених туди в реальному режимі. Перехід здійснюється на мітку @prot, з яким і починається робота МП у захищеному режимі. Помітимо, що оскільки в програмі P_MODE не було потрібно перевантажувати сегментний регістр коду (у захищеному режимі використовувалися ті ж базова адреса і розмір сегмента і того ж права доступу), те використовується внутрісегментний перехід і завантаження регістра

CS не відбувається. Потім у сегментні регістри DS, SS і ES завантажуються відповідні селектори:

@prot:mov ax,data_sel

mov ds,ax

mov ax,stack_sel

mov ss,ax

mov ax,video_sel

mov es,ax

На цьому переклад мікропроцесора в захищений режим завершується.

    1. Повернення в реальний режим.

Для повернення в реальний режим для МП 80286 використовується процедура RESET , що встановлює ознаку виконання скидання мікропроцесора (res=1), за допомогою команди контролера клавіатури здійснює скидання МП : mov al,$fe

out $64,al

і очікує завершення скидання мікропроцесора:

@wait_res:

hlt

jmp @wait_res.

Після скидання МП BIOS виконує перехід на крапку входу, адреса яке зберігається в осередку $40:$67. Для МП починаючи з 80386 повернення в реальний режим виконується за допомогою команди MOV, що здійснює скидання біта PE регістра CR0. Перед цим необхідно виконати наступні дії :

а) заборонити апаратні переривання командою CLI;

б) передати керування сегменту коду з R=1 і FFFFh;

в) завантажити в сегментні регістри DS, SS, ES селектори сегмента, що має атрибути, відповідні реальному режиму: границю сегмента, рівну 64ДО-1, ED=0 і W=1;

г) за допомогою команди LIDT завантажити в IDTR базова адреса (0) і границю (1Кб - 1) таблиці векторів реального режиму;

д) очистити біт PE регістра CR0;

е) здійснити межсегментний перехід.

З перерахованих вище дій у даній програмі потрібно виконати тільки пункти а), в), і д). Пункт б) не потрібно виконувати оскільки сегмент виконуваного коду уже володіє зазначенними параметрами. Пункт г) не потрібно, тому що в захищеному режимі не оброблялися і таблиця векторів (тобто IDT) і її розташування в пам'яті не були змінені.

Нарешті, пункт е) не потрібний через те, що не було завантаження регістра CS при вході в захищений режим.

Для завантаження сегментних регістрів DS, SS і ES використовується

селектор сегмента даних data_sel, що задовольняє перерахованим у пункті в) умовам : mov ax,data_sel

mov es,ax

mov ds,ax

mov ss,ax.

Очищення біта PE регістра CR0 виконуються командою MOV:

db $0f,$20,0c0h

db 66h,25h

dd 0fffffffeh

db $0f,22h,0c0h

jmp ret_r

Перехід на мітку ret_r необхідний для очищення буфера предвиборки команд.

    1. Відновлення регістрів МП.

Відновлення регістрів МП виконується в такий спосіб:

ret_r:

xor ax,ax { Відновлення регістрів після }

mov ds,ax { повернення в реальний режим: }

mov ds,ds:[4*$60] { DS, }

mov ss,real_ss { SS, }

mov es,real_es { ES і }

mov sp,real_sp { SP }

    1. Дозвіл маскуємих і немаскуємих переривань.

Дозвіл маскуємих і немаскуємих переривань здійснюється за допомогою процедури en_int. Ця процедура також виконує скидання стану клавіш-перемикачів.

  1. Система команд мікропроцесора :

    1. Кодування регістрів.

При двухбітовому полі rg :

Таблиця 4.

rg

00

01

10

11

Сегментні регістри

Es

Cs

Ss

Ds

При трьохбітовому полі rg :

Таблиця 5.

Reg

000

001

010

011

100

101

110

111

W=0

Al

Cl

Dl

Bl

Ah

Ch

Dh

Bh

W=1

Ax

Cx

Dx

Bx

Sp

Bp

Si

Di

    1. Визначення ефективної адреси.

Ефективна адреса EA операнда в пам'яті визначається в залежності від значень полів : mod і r/m :

Визначення ефективної адреси :

Таблиця 6.

Mod

DISP

R/m

EA

00

0

000

001

010

011

100

101

110

111

EA = (BX) + (SI)

EA = (BX) + (DI)

EA = (BP) + (SI)

EA = (BP) + (DI)

EA = (SI)

EA = (DI)

EA = DISP

EA = (BX)

01

Disp-low с расширением

со знаком

000

001

010

011

100

101

110

111

EA = (BX) + (SI) + DISP

EA = (BX)+(DI) + DISP

EA = (BP)+(SI) + DISP

EA = (BP)+(DI) + DISP

EA = (SI) + DISP

EA = (DI) + DISP

EA = (BP) + DISP

EA = (BX) + DISP

10

Disp-high : Disp-low

000

001

010

011

100

101

110

111

EA = (BX) + (SI) + DISP

EA = (BX)+(DI) + DISP

EA = (BP)+(SI) + DISP

EA = (BP)+(DI) + DISP

EA = (SI) + DISP

EA = (DI) + DISP

EA = (BP) + DISP

EA = (BX) + DISP

11

Код

регистра

Міністерство Освіти і Науки України

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”

Кафедра : “ОБЧИСЛЮВАЛЬНА ТЕХНІКА ТА ПРОГРАМУВАННЯ”

ЗАТВЕРДЖУЮ

Зав. Кафедрою xxxx.

___________ /xxxxxx./

_________________ 2002р.


Програма модифікуюча команди, які використовуються в захищеному режимі
Опис програми

ЛИСТ ЗАТВЕРДЖЕННЯ

Xxxxxx- 01 13 01-1 ЛЗ

Розробники :

Керівник проекту :

________ / xxxxxxx./

___________________ 2002р.

Виконавець :

_______ / Хххххххххххх Х.Х./

___________________ 2002р.


Харків

2002

ЗАТВЕРДЖЕНИЙ

Xxxxxx- 01 13 01-1 ЛЗ


Програма модифікуюча команди, які використовуються в захищеному режимі
Опис програми



Харків

2002

Опис програми


Зміст

  1. Опис змінних.

  2. Опис процедур і функцій.

  3. Список літератури.

  1. Опис змінних.

Змінна

Тип

Призначення

Dlina

Integer

Загальна довжина команди.

Cod

Byte

Шеснадцятирічне значення коду команди.

i

Byte

Номер команди.

p

Longint

Число яке перетвориться в

16-річну форму.

s

String

Получене 16-річне значення.

Dlin_Kom

Integer

Довжина команди.

b1

Byte

Байт, що йде за кодом операції.

Md

Byte

Значення поля mod

( Регистровій режим / режим пам'яті з довжиною зсуву).

Rm

Byte

Значення поля R/m

( Регистр-операнд / регістри, використовувані в обчисленні зсуву ).

hex_tabl

Array[0..15] of char

Шеснадцятирічне значення

чисел.

  1. Опис процедур і функцій.

Процедура Analiz :

( procedure Analiz;Assembler; )

У даній процедурі знаходиться код програми, написаний мовою Assembler, що аналізується, на розмір формату команди, у наслідку, головною програмою.

Функція hex :

( function hex(p:longint):string; )

Дана функція здійснює переклад числа p у шеснадцятирічне значення, для наступного виводу його на печатку, чи екран монітора.

Функція Opred_Dlin_Kom :

( function Opred_Dlin_Kom(cod:byte;n:word):integer; )

Дана функція здійснює обчислення розміру довжини байта, який

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5076
Авторов
на СтудИзбе
455
Средний доход
с одного платного файла
Обучение Подробнее