Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Тема лекции 15. Защищенный режим работы. Адресация при работе в защищенном режиме.






Микропроцессоры Pentium, так же, как и его предшественники (начиная с 80268), могут работать в двух режимах: реального адреса и виртуального защищенного адреса. Обычно эти режимы называют просто реальным и защищенным. В реальном режиме 32-разрядные микропроцессоры функционируют фактически так же, как МП 86 с повышенным быстродействием и расширенным набором команд. Характерной особенностью реального режима является ограничение объема адресуемой оперативной памяти величиной 1 Мбайт.

Только перевод микропроцессора в защищенный режим позволяет полностью реализовать все возможности, заложенные в его архитектуру и недоступные в реальном режиме. Сюда можно отнести:

-увеличение адресуемого пространства до 4 Гбайт;

-возможность работать в виртуальном адресном пространстве, превышающем максимально возможный объем физической памяти и составляющем 64 Тбайт;

-организация многозадачного режима с параллельным выполнением нескольких программ (процессов).

-страничная организация памяти, повышающая уровень защиты задач друг от друга и эффективность их выполнения.

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

В защищенном режиме программа состоит из сегментов, адресуемых с помощью 16-разрядных сегментных регистров. В сегментные регистры в защищенном режиме записываются селекторы, биты 3...15 которых рассматриваются, как номера (индексы) ячеек специальной таблицы, содержащей дескрипторы сегментов программы. Таблица дескрипторов обычно создается операционной системой защищенного режима (например, системой Windows) и, как правило, недоступна программе. Каждый дескриптор таблицы дескрипторов имеет размер 8 байт, и в нем хранятся все характеристики, необходимые процессору для обслуживания этого сегмента. Среди этих характеристик необходимо выделить в первую очередь две: адрес сегмента и его длину

Под адрес сегмента в дескрипторе выделяется 32 бит, и, таким образом, сегмент может начинаться в любой точке адресного пространства объемом 232 ~ 4 Гбайт. Это адресное пространство носит название линейного. В простейшем случае, когда выключено страничное преобразование, линейные адреса отвечают физическим. Таким образом, процессор может работать с оперативной памятью объемом до 4 Гбайт.

Адрес адресуемой ячейки вычисляется процессором, как сумма базового адреса сегмента и смещения:

Линейный адрес = базовый адрес сегмента + смещение В 32-разрядных процессорах смещение имеет размер 32 бит, поэтому максимальная длина сегмента составляет 232 = 4 Гбайт.

Адреса, используемые программой для обращения к ячейкам памяти, и состоящие всегда из двух компонентов — селектора и смещения — иногда называются виртуальными.

Система сегментной адресации преобразует виртуальные адреса в линейные. Программисту доступны только виртуальные адреса, преобразование же их в линейные и затем в физические берет на себя операционная система.

Каков объем виртуального адресного пространства? Программа указывает номер нужного ей дескриптора с помощью селектора, в котором для индекса дескриптора отведено 13 бит. Отсюда следует, что в дескрипторной таблице

может быть до 2 = 8 К дескрипторов. Однако в действительности их в два раза

больше, так как программа может работать не с одной, а с двумя дескрипторными таблицами — одной глобальной, разделяемой всеми выполняемыми задачами, и одной локальной, принадлежащей конкретной задаче. В селекторе предусмотрен специальный бит (бит 2), состояние которого говорит о типе требуемой программе дескрипторной таблицы. Таким образом, всего программе могут быть доступны 214 = 16 К дескрипторов, т.е. 16 К сегментов. Так

как размер каждого сегмента, определяемый максимальной величиной смещения, может достигать 232 = 4 Гбайт, объем виртуального адресного

пространства оказывается равным 16 К *4Гбайт = 64 Тбайт.

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

Преобразование линейных адресов в физические осуществляется с помощью страничной трансляции, частично реализуемой процессором, а частично — oneрационной системой. Если страничная трансляция выключена, все линейные адреса совпадают с физическими; если страничная трансляция включена, то линейные адреса преобразуются в физические в соответствии с содержимым страничных таблиц. На рисунке 12 представлена цепочка преобразований виртуального адреса в физический


 

 


        преобразование       преобразование  
Селектор Смещение   (таблицы     -► (таблицы -►

Виртуальный адрес

Линейный

адрес


 

Физически адрес

Рисунок 12. Цепочка преобразований виртуального адреса в физический.


Страницей называется связный участок линейного или физического адресного пространства объемом 4 Кбайт. Механизм страничной трансляции отображает логические страницы на физические в соответствии с информацией, содержащейся в страничных таблицах.

Система страничных таблиц состоит из двух уровней. На первом уровне находится каталог таблиц страниц (или просто каталог страниц) — резидентная в памяти таблица, содержащая 1024 4х-байтовых поля с адресами таблиц страниц. На втором уровне находятся таблицы страниц, каждая из которых содержит так же 1024 4х-байтовых поля с адресами физических страниц памяти. Максимально возможное число таблиц страниц определяется числом полей в каталоге и может доходить до 1024. Поскольку размер страницы составляет 4 Кбайт, 1024 таблицы по 1024 страницы перекрывают все адресное пространство (4 Гбайт). На рисунке 13 представлена схема страничной трансляции адресов.

Базовый адрес каталога Рисунок 13. Страничная трансляция адресов.

 

Не все 1024 таблицы страниц должны обязательно иметься в наличии (кстати, они заняли бы в памяти довольно много места — 4 Мбайт). Если программа реально использует лишь часть возможного линейного адресного пространства, а гак всегда и бывает, то неиспользуемые поля в каталоге страниц помечаются, как отсутствующие. Для таких полей система, экономя память, не выделяет страничные таблицы.

При включенной страничной трансляции линейный адрес рассмат­ривается, как совокупность трех полей: 10-битового индекса в каталоге страниц, 10-битового индекса в выбранной таблице страниц и 12-битового смещения в выбранной странице.

Старшие 10 бит линейного адреса образуют номер поля в каталоге страниц. Базовый адрес каталога хранится в одном из управляющих регистров процессора, конкретно, в регистре СR3. Из-за того, что каталог сам представляет собой страницу и выровнен в памяти на границу 4 Кбайт, в регистре CR3 для

адресации к каталогу используются лишь старшие 20 бит, а младшие 12 бит, зарезервированы для будущих применений.

Поля каталога имеют размер 4 байт, поэтому индекс, извлеченный из линейного адреса, сдвигается влево на 2 бит (т.е. умножается на 4) и полу­ченная величина складывается с базовым адресом каталога, образуя адрес конкретного поля каталога. Каждое поле каталога содержит физический базовый адрес одной из таблиц страниц, причем, поскольку таблицы страниц сами представляют собой страницы и выровнены в памяти на границу 4 Кбайт, в этом адресе, значащими являются только старшие 20 бит.

Далее из линейного адреса извлекается средняя часть (биты 12...21), сдвигается влево на 2 бит и складывается с базовым адресом, хранящимся в выбранном поле каталога. В результате образуется физический адрес страницы в памяти, в котором опять же используются только, старшие 20 бит. Этот адрес, рассматриваемый, как старшие 20 бит физического адреса адресуемой ячейки, носит название страничного кадра. Страничный кадр дополняется с правой стороны младшими 12 битами линейного адреса, которые проходят через страничный механизм без изменения и играют роль смещения внутри выбранной физической страницы.

Рассмотрим пример, позволяющий проследить цепочку преобразования виртуального адреса в физический. Пусть программа выполняет команду mov EAX, DS: [EBXJ при этом содержимое DS (селектор) составляет 1167h, а содержимое ЕВХ (смещение) 31678h, Старшие 13 бит селектора (число 1167h) образуют индекс дескриптора в системной дескрипторной таблице. Пусть в ячейке дескрипторной таблицы с номером 116h записан линейный адрес (базовый адрес сегмента) 01051000 h.

Тогда полный линейный адрес адресуемой ячейки определится, как сумма базового адреса и смещения:

Базовый адрес сегмента 01051000h.

Смещение 00031678 h

Полный линейный адрес 01082678h

При выключенной табличной трансляции величина 01082678h будет представлять собой абсолютный физический адрес ячейки, содержимое которой должно быть прочитано приведенной выше командой mov. Эта ячейка находится в самом начале 17-го мегабайта оперативной памяти. Посмотрим, как будет образовываться физический адрес при использовании страничной трансляции адресов. Полученный линейный адрес надо разделить на три составляющие для выделения индексов и смещения (рисунок 14)

0000 0001 00
00 1000 0010
0110 0111 1000

Индекс каталога Индекс таблицы Смещение страниц Рисунок 14. Пример линейного адреса.

31 22 21 12 11 0

Индекс каталога составляет 4h. Умножение его на 4 даст смещение от начала каталога. Это смещение равно 10h.

Индекс таблицы страниц оказался равным 82h. После умножения на 4 получаем смещение в таблице страниц, равное в данном случае 210h.

Предположим, что регистр CR3 содержит число 8000h. Тогда физический адрес ячейки в каталоге, откуда надо получить адрес закрепленной за данным участком программы таблицы страниц, составит 8000h + 10h = 8010 h Пусть по этому адресу записано число 46021h. Его 12 младших битов составляют служебную информацию (в частности, бит 1 свидетельствует о присутствии этой таблицы страниц в памяти, а бит 5 говорит о том, что к этой таблице уже были обращения), а старшие биты, т.е. число 46000h. образуют физический базовый адрес таблицы страниц. Для получения адреса требуемой ячейки этой таблицы к базовому адресу надо прибавить смещение 210h. Результирующий адрес составит 46210h.

Будем считать, что по адресу 46210h. записано число 01FF502111. Отбросив служебные биты, получим адрес физической страницы в памяти 01FF5000h. Этот адрес всегда оканчивается тремя нулями, так как страницы выровнены в памяти на границу 4 Кбайт. Для получения физического адреса адресуемой ячейки следует заполнить 12 младших бит полученного адреса битами смещения из линейного адреса нашей ячейки, в которых в нашем примере записано число 678h. В итоге получаем физический адрес памяти 01FF5678h, расположенный в конце 32-го Мбайта.

Основная литература: 1[101-129].2[511-569], 7[175-196]

Дополнительная литература: 16[570-639], 18[242-391]

Контрольные вопросы:

1. Какие возможности позволяет полностью реализовать перевод микропроцессора в защищенный режим?

2. Что записывается в сегментные регистры в защищенном режиме?

3. Какова структура селектора?

4. Как формируется линейный адрес в защищенном режиме?

5. Поясните, почему максимальный объем виртуальной памяти равен 64 Т байт?

6. В каком случае линейный адрес в защищенном режиме равен физическому?

2.3. Планы лабораторных занятий

Занятие №1. Ассемблирование и выполнение программы.

Задание

1. Подготовить исходную программу к трансляции..

2. Создать объектную программу.

3. Создать исполняемую программу.

4. Отладить исполняемую программу.

Методические рекомендации: Рассмотреть все возможные варианты подготовки исходной программы к трансляции, включая вариант использования редактора WORD. Познакомится подробно с ключами программы TASM.

Основная литература 5[63-82],

Дополнительная литература 15 [56-57]

Контрольные вопросы:

1. Структура программы на языке ассемблера.

2. Этапы выполнения программы.

3. Функции вывода 9Н и 2Н int 21h.

4. Как создается исходный файл?

5. Расширение исходного файла.

6. Имя транслятора.

7. Что делает транслятор?

8. Какие выходные файлы получаются в результате трансляции? (с какими расширениями)

9. Пример командной строки запуска транслятора.

10. Имя компоновщика.

11. Какие файлы являются входными при компоновке?

12. Какие файлы являются выходными при компоновке?

13. Какое расширение имеет исполняемый файл?

14. Пример командной строки запуска компоновщика.

15. Как можно посмотреть файл листинга?

Занятие №2 Описание простых типов данных. Отладчик Turbo Debugger (TD).

Задание.

1. Изучить основные возможности Turbo Debugger (TD), уметь пользоваться глобальным и локальным меню.

2. Набрать исходный текст программы согласно выданному варианту.

3. Получив загрузочный модуль, запустите его в Турбо отладчике (TD). В окне DUMP просмотреть сегмент данных, найти все переменные, заданные в вашем варианте и объяснить местоположение и занимаемый объем этой переменной. Вы ответственны не только за описание переменной в сегменте данных, но и за каждый байт памяти.

4. Набрать в кодовом сегменте команды:

Mov al, Pa ; al =?
Mov bx, Pb ; bx =?
Mov bl, byte ptr Pb ; bl =?
Mov dx, word ptr Pc ; dx =?
Mov cx, word ptr Pc+2 ; cx =?
Mov dl, byte ptr Pc ; dl =?
Mov dh, byte ptr Pc+1 ; dh =?
5. В отладчике посмотреть результат выполнения этих команд

 

Методические рекомендации: Просмотрите состояние сегментных регистров до выполнения инициализации и после.Просмотрите дамп памяти сегмента данных и найдите там все описанные в вашей программе переменные.

Основная литература: 5[77-82] 4 [28-31]

Дополнительная литература: 17 [457-464]

Контрольные вопросы:

1. Как определить переменную размером с байт?

2. Как определить переменную, размером с слово?

3. Как определить массив байт?

4. Как определить массив бит?

5. Как описать эффективный адрес переменной?

6. Как определить полный адрес переменной?

7. С какой опцией должен быть оттранслирован исходный модуль для работы в TD?

8. С какой опцией должна быть осуществлена компоновка объектного модуль для работы в TD?

Занятие №3.Работа с массивами: пересылка, сложение.

1. Задана программа пересылки массива байтов А на место массива байтов В.

Задание.

1) Перед выводом массива В на экран вывести текстовую строку: ”Это второй массив В”, т.е. на экране должно быть: Это второй массив В 1 2 3 4 5

Элементы массива вывести через пробелы (или запятую).

2) Измените количество элементов в массивах, введите необходимые изменения в программу.

3) Измените данную программу, организовав в теле программы лишь один цикл.

4) Изменить данную программу в программу для пересылки массива слов.

5). Напишите программу для преобразования массива байтов в массив слов.

; сегмен Данн  
т ых  
A Db 1, 2, 3, 4, 5, 6
B Dw 3 dup(?)
сегмент Кодов  
(ваша программа).  

 

6) Разработайте программу сложения двух массивов байтов A и B, сумму сохранить в массиве C, взяв за основу рассмотренные примеры.

Методические рекомендации: Обратите внимание на то, что в ассемблере на экран вы может выдавать информацию только в кодах ASCII. При работе с массивами помните, что индекс определяет не номер элемента массива, а смещение в байтах относительно начала массива.

Основная литература: 4[133-144]

Какие ограничения введены на использование команды mov?

1. Опишите алгоритм работы команды add.

2. Опишите алгоритм работы команды loop.

3. Какой режим адресации удобно использовать при работе с массивами?

4. Что необходимо сделать, чтобы в ассемблерной программе вывести на экран результат арифметической операции?

Занятие №4 Использование команд переходов. Команда сравнения - CMP.

Задание.

1) Заданы два массива байтов А и В, в третий массив нужно выбрать максимальные элементы, сравнивая поэлементно.

2) Измените предыдущую программу для выборки минимальных элементов в массив С,

3) Напишите программу, которая выбирает из элементов заданного массива байтов максимальный элемент.

4) Измените предыдущую программу для поиска минимального элемента в заданном массиве байтов.

5) Задан массив А.

A DB 1, 1, -2, -4, 6

DB 2, -5, 2, -2, 5

DB 3, -3, -3, 4, 4

DB 5, -5, 6, -7, 7

В данной области памяти требуется заменить все отрицательные элементы массива на нулевые байты, т.е.

1 1 0 0 6

2 0 2 0 5

3 0 0 4 4

5 0 6 0 7

Методические рекомендации: Обратите внимание на разнообразие команд передачи управления, определите в каких случаях применяются те или иные команды.

Основная литература: О5[203-235], 7 [74-82, 123-134], 9[63-82]

Дополнительная литература: Д18[ 49-55]

Контрольные вопросы:

1). Опишите алгоритм работы команды CMP.

2). Когда можно использовать команды условных переходов?

3). В чем заключается разница команд условного перехода для чисел со знаком и без знака?


4). Какие вы знаете команды условного перехода по состоянию определенного флага.

5). Назовите разновидности команд безусловного перехода.

6). Имеет ли место деление команд условного перехода на ближние и дальние?.

Занятие №5. Логические и строковые команды Задание.

1) Напишите программу, подсчитывающую количество единиц в заданном байте или слове:

; в сегменте данных

A DB 01101011B или A DW 0010111110101001B

2) Измените программу для подсчета нулей.

3) Задан массив байтов А из чисел со знаками. Напишите программу, подсчитывающую количество отрицательных элементов массива. Ваш любой вариант принимается. А теперь напишите с использованием команды TEST.

4) Измените программу для подсчета положительных элементов массива.

5) Напишите программу преобразования двух неупакованных BCD- чисел в слове памяти в упакованное BCD-число в регистре AL.

6) Напишите программу пересылки символов из одной строки в другую

; в сегменте данных

str_source DB ‘Строка_пересылаемая, , ’$’; строка-источник

str_dest DB 20 dup(?); строка-

приемник

7) Напишите программу посимвольного (поэлементного) сравнения двух строк.

8) Напишите программу поиска заданного символа в заданной строке, осуществите замену этого символа на другой, введенный с клавиатуры или заранее определенный в памяти.

9) Напишите программу, которая сравнивает две строки и первый несовпавший элемент помещает в регистр AL.

Основная литература: 4[69-76], 5[186-205], 7[130-134], 9[104-116]. Дополнительная литература: 13[[50-60].

Контрольные вопросы:

1) С помощью какой команды можно обнулить бит?

2) С помощью какой команды можно установить бит в единицу?

3) С помощью какой логической команды осуществляется умножение на степень двойки.

4) Какая команда определяет направление обработки строки?

5) Куда заносится длина обрабатываемой строки?

Занятие №6. Использование подпрограмм

Задание.

1.Оформить одну из предыдущих программ как процедуру и организовать передачу параметров по значению.

2. Оформить одну из предыдущих программ как процедуру и организовать передачу параметров по ссылке.

3. Оформить одну из предыдущих программ как процедуру и организовать передачу параметров по возвращаемому значению.

4. Оформить одну из предыдущих программ как процедуру и организовать передачу параметров по результату.

5. Оформить одну из предыдущих программ как процедуру и организовать передачу параметров по имени.

7. Оформить одну из предыдущих программ как процедуру и организовать передачу параметров в регистрах.

8. Оформить одну из предыдущих программ как процедуру и организовать передачу параметров в глобальных переменных.

Основная литература: 2[236-246], 5 [217-225], 7 [82-90]

Дополнительная литература: 18 [62-69]

Контрольные вопросы:

1.Чем процедура отличается от подпрограммы?

2. Как осуществляется запоминание адреса точки возврата в основную программу?

3. Как происходит возврат из процедуры в основную программу?

4. Назовите все разновидности использования команды call.

5. Каким образом можно передать параметры в процедуру?

6. Где можно передавать параметры в процедуру?

7. Как сделать, чтобы использованные параметры не накапливались в стеке?

Занятие №7. Изучение функций ввода с клавиатуры Задание.

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

Составить программу. Ответить на контрольные вопросы Методические рекомендации: Программы при запросе информации с клавиатуры на самом деле обращаются к буферу клавиатуры. Вспомнить, как осуществляется обнуление буфера клавиатуры. При необходимости, использовать эту возможность.

Основная литература: 2[151-162], 6[22-64]

Дополнительная литература: 16[85-103], 18[45-49], 15[45-46], 13[1-4]

Контрольные вопросы:

1. Чем отличаются функции 1, 7, 8 INT 21h?

2. Что записывается в первый и во второй байт буфера при использовании функции 0Ah INT 21h?

3. Как выполняется ввод при нажатии функциональной клавиши?

4. Чем отличается выполнение функций 0 INT 16h и 7 INT 21h?

5. Чем отличаются функции 0Ah и 3Fh INT 21h?

Занятие №8 Изучение функций вывода на экран Задание.

Изучить некоторые наиболее полезные функции VESA BIOS, которые поддерживаются распространенными в настоящее время моделями видеоконтроллеров. Согласно индивидуальному заданию осуществить рисование геометрической фигуры.

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

Основная литература: 6[131-266];

Дополнительная литература: 11[70-81], 16[85-103, 153-181], 18[152-153]

Контрольные вопросы:

1 Как осуществить вывод символа на экран в текстовом режиме?

2. Как получить информацию о версии VESA BIOS?

3. Как получить информацию о параметрах видеорежима?

4. Как сделать результат по выводу в графическом режиме наблюдаемым?

Занятие №9. Работа с дисковыми файлами Задание.

Изучить функции работы с файлами.

Согласно индивидуальному заданию составить алгоритм или блочное описание программы. Скомпоновать программу.

Методические рекомендации:

Стандартное число открытых файлов для одной программы -20 (15).Вспомните, как можно его увеличить. Примените эту возможность для своей программы.

Основная литература: О2[198-208], 4[230-251]

Дополнительная литература: Д20[56-87]

Контрольные вопросы:

1. Что такое дескриптор файла?

2. Что такое ASCII-z строка?

3. Дескрипторы стандартного ввода и стандартного вывода.

4. Как определяется успешность завершения какой-либо файловой операции?

5. Атрибуты файла.

6. Коды доступа при открытии файла.

7. Назначение регистров AL, CX, DX в функции установки указателя.

8. Как определить длину файла?

9. Что делает функция закрытия файла?

2.4 Планы занятий в рамках самостоятельной работы студентов под руководством преподавателя (СРСП)

№ пп Задание Форма проведен ия Методические рекомендации Рекоменду емая литератур а
  Формы представлени я данных Перевод из одной системы в другую. Тренинг Решение задач по теме «формы представления данных». Перевод чисел из одной системы в другую 1[2- 16], 2[17- 20]12-15] Д 10[17- 20]
  Архитектура микропроцесс ора. Тренинг Решить задачи на определение содержимого регистров по их составляющим и на определение состояний флагов при выполнении различных операций О: 5[16- 36], 38[33- 44], 3[7-12] Д19[10- 15]
  Режимы адресации. Тренинг Решить задачи по использованию различных режимов адресации О5[46, 120- 125], 8[21- 32]7[40- 50].
  Псевдооперат оры, их роль в программе на ассемблере Дискусси я Ра смотреть все виды псевдооператоров и их роль в программе на ассемблере О2[114- 115, 134­ 135]. 8[148-195]
  Структура программы на ассемблере. Псевдооперат оры описания данных Тренинг Рассмотреть разновидности структуры программы на ассемблере. Решить задачи на определение порядка расположения данных в памяти при использовании различных псевдооператоров определения данных. О2[110- 115], 8[18- 21], 5[83- 11]9[138- 140]
  Пересылки, арифметическ ие команды. Тренинг Решить задачи по использованию арифметических команд и пересылок. О5[129- 152], 9[42- 46] Д9[78-88].
  Переходы, циклы. Массивы, структуры Тренинг Решить задачи по использованию условных и безусловных переходов. Разобрать программы по работе с массивами. О5[203- 235], 7 [74­82, 123- 134], 9[63-

 

        82] Д18[ 49­55]
  Псевдооперат оры описания процедуры. Вызовы подпрограмм. Дискусси я Рассмотреть случаи использования подпрограмм. Директивы описания процедур. Передачу параметров в подпрограмму. О 2[236- 246], 9[152 168], 7[135 -139] Д4[75-79]
  Прерывания Написание обработчика прерывания Дискусси я Рассмотрение основных операций, связанных с обработкой прерываний. Разбор примера написания собственного обработчика прерываний О1[41-53], 2[269- 281], 5[370 -382]. Д [120­153]
  Обработка особых ситуаций при помощи собственных обработчиков исключений Дискусси я Рассмотрение примера обработки особых ситуаций при помощи собственных обработчиков исключений. О1[41-53], 2[269- 281], 5[370 -382]. Д [120­153]
  Ввод символьной информации .Очистка буфера клавиатуры. Тренинг Решение задач 1- по вводу и проверке пароля 2- по очистке буфера. О2[151- 162], 6[22- 64] Д16[85- 103], 18[45 -49], 15[45- 46]
  Управление программой с клавиатуры. Тренинг Написание программ по управлению программой с клавиатуры. О 6[131- 266]; Д 11 [70- 81], 16[85- 103, 153­181, 18[152- 153]

 

         
  Использовани е различных графических режимов Тренинг Написание программ рисования линий в различных графических режимах. О[131- 266]; Д 11 [70- 81], 16[85- 103, 153­181, 18[152- 153]
  Работа с файлами. Дискусси я Рассмотреть основные вопросы, связанные с работой с файлами. О2[198- 208], 4[230 -251] Д20[56- 87]
  Обработка прерываний в защищенном режиме. Дискусси я Рассмотреть основные вопросы. связанные с обработкой прерываний в защищенном режиме. О1[101- 129].2[511 569], 7[175 -196] Д16[570- 639], 18[24 2-391]

 

2.5. Планы занятий в рамках самостоятельной работы студентов (СРС)
Задания Методические рекомендации Рекомен дуемая литерат ура
  Опции командной строки TASM и TLINK. Описать возможности операций ассемблировании и компоновки, которые задаются опциями в командной строке. Д[56- 58] О5[463- 468]
  Обработка ошибок ассемблиров ания. Определить разницу между сообщениями об ошибках и предупреждениями. Описать структуру сообщения об ошибке. О5[654- 665]

 

  Работа с Turbo Debugger-ом Показать, каким образом используется Turbo Debugger для поиска и исправления логических ошибок. О5[77- 83], 4[26 -31]
  Режимы адресации для 386 и выше. Масштабиро вание Провести сравнительный анализ режимов адресации для микропроцессоров до 386 и для микропроцессоров 386 и выше. O8[50- 56]
  Применение оператора указания типа PTR Рассмотреть, в каких случаях используется оператор указания типа PTR. Пильщи ков стр 9[42-47]
  Разновиднос ти безусловных переходов. Рассмотреть различные возможности безусловной передачи управления и вызовы подпрограмм. Дать определение дальних и ближних процедур и способы их описания. O7[ 70­79], 9[63 -67].............
  Арифметиче ские команды. Рассмотреть основные арифметические команды. Их использование. 9[42- 57], 4[62 -69]
  Псевдоопера тор описания процедур. Ра ссмотреть псевдооператоры описания процедуры. Вызовы подпрограмм. О 2[236- 246], 9[1 52- 168], 7[1 35-139] Д4[75- 79]
  Перехват прерываний Разобраться в понятиях прерывание, ошибка, ловушка, останов. 2[269- 281], 18[ 193-205]
  Обработчик и прерываний Разобраться с основными этапами разработки обработчика прерываний 2[269- 281], 18[ 193-205]
  Принцип действия устанавлива емо драйвера клавиатуры Разобраться с работой программы - драйвером клавиатуры O6[59- 65]

 

  Работа в режимах SVGA Познакомится с процедурами, предназначенными для установки графических режимов и работы в них. O6[131- 266]
  Структура SFT Изучить структуру SFT, роль буфера. д20 [ 77-91]
  Структура COM и EXE файлов Разобраться с структурой файлов COM и EXE, написать простейшую программу, используя эти форматы, сделать выводы. O4[31- 34]
  Обработка прерываний в защищенном режиме Разобраться с процессом обработки прерываний в защищенном режиме. Рассмотреть примеры. O5[438- 463]

 

Рекомендуемая литература:

1. Зубков С.В. ASSEMBLER для DOS, Windows, Unix.-М.: ДМК, 1999.- 640с., ил

2. Сван Том. Освоение^гЬо Assembler пер. с англ, Диалектика, 1966.-544с

3. Кулаков В. Программирование на аппаратном уровне. Специальный Справочник. -СПб: Питер

, 2001-496 с.: ил.

4. Кулаков В. Программирование дисковых подсистем.-СПБ.: Питер, 2002.

5. Бурдаев О. В., Иванов М. А., Тетерин И.И. Ассемблер в задачах защиты информации.М.: КУДИЦ-ОБРАЗ, 2002.-320с.

6. Финогенов К.Г.Самоучитель по системным функциям МS-DOS.- М.: Горячая линия-Телеком, 2001.- 382с.: ил.

2.6 Тестовые задания для самоконтроля с указанием ключей правильных ответов.

1. Что такое виртуальная машина?

A) Программный комплекс, реализующий входной язык программирования

B) Программа, осуществляющая перевод текстов с одного языка на другой

C) Программа, обеспечивающая перевод программ с языка высокого уровня на язык более низкого уровня

D) Программа, обеспечивающая перевод программ с языка низкого уровня (языка Ассемблера) на машинный язык, имеющий примерно тот же уровень

E) Программный продукт, выполняющий предъявленную программу путем одновременного ее анализа и реализации предписанных ею действий

2. Что такое компилятор?

A) Программный комплекс, реализующий входной язык программирования

B) Программа, осуществляющая перевод текстов с одного языка на другой

C) Программа, обеспечивающая перевод программ с языка высокого уровня на язык более низкого уровня

D) Программа, обеспечивающая перевод программ с языка низкого уровня (языка Ассемблера) на машинный язык, имеющий примерно тот же уровень

Е) Программный продукт, выполняющий предъявленную программу путем одновременного ее анализа и реализации предписанных ею действий

3. Что такое Ассемблер?

A) Программный комплекс, реализующий входной язык программирования

B) Программа, осуществляющая перевод текстов с одного языка на другой

C) Программа, обеспечивающая перевод программ с языка высокого уровня на язык более низкого уровня

D) Программа, обеспечивающая перевод программ с языка низкого уровня (языка Ассемблера) на машинный язык

E) Программный продукт, выполняющий предъявленную программу путем одновременного ее анализа и реализации предписанных ею действий

4. Что такое интерпретатор?

A) Программный комплекс, реализующий входной язык программирования

B) Программа, осуществляющая перевод текстов с одного языка на другой

C) Программа, обеспечивающая перевод программ с языка высокого уровня на язык более низкого уровня

D) Программа, обеспечивающая перевод программ с языка низкого уровня (языка Ассемблера) на машинный язык, имеющий примерно тот же уровень

E) Программный продукт, выполняющий предъявленную программу путем одновременного ее анализа и реализации предписанных ею действий

5. Какое число является двоичным представлением числа -

4?

A) 1011

B) 0101

C) 1010

D) 1100

E) 1101

6. Какое число является шестнадцатеричным представление числа 1110?

A) 14

в) 6

C) А

D) 0EH

E) Q

7. Как записано слово 4523Н в памяти машины?

A) 4523Н

B) 2345Н

C) 4523

D) 2345

8. Определите действия функции 01 INT 21h?

A) Считывает символ с эхом, с ожиданием, с проверкой на Ctrl - Break*

B) Считывает символ без эха, с ожиданием и без проверки на Ctrl - Break;

C) Считывает символ без эха, с ожиданием и с проверкой на Ctrl - Break;

D) Считывает символ без эха, без ожидания и без проверки на Ctrl - Break;

E) Считывает строку без эха, без проверки на Ctrl - Break;

9. С помощью какой команды запрещаются аппаратные прерывания?

A) cli

b) sti

C) int

D) into

E) iret

10. Какие два флага относятся к программным средствам, реализующим механизм прерываний?

A) IF, DF

B) IF, TF

C) TF, DF

D) SF, IF

E) SF, TF

11. Какой вход схемы 8259А связан с таймером (с сигналом от таймера)?

A) irq 0

B) irq 1

C) irq 2

D) irq 3

E) irq 4

12. Укажите правильное описание кольцевого буфера клавиатуры:

A) Объём 15 слов, дисциплина LIFO, при переполнении прием новых слов блокируется;

B) Объем 15 слов, дисциплина FIFO, при переполнении прем новых слов блокируется и нажатие на клавиши возбуждает предупреждающий звуковой сигнал;

C) Объем 15 байт, дисциплина LIFO, при переполнении прием новых кодов блокируется;

D) Объем 15 байт, дисциплина FIFO, при переполнении прием новых кодов блокируется;

E) Объем 15 слов, дисциплина LIFO, при переполнении новый код записывается на место первого;

13. Какое прерывание должно выполнять программа, желая получить скан- код нажатой клавиши?

A) INT 23

B) INT 16

C) INT 10

D) INT 35

E) INT 21

14. Укажите, что находится в младшем байте расширенного ASCII кода:

A) 01

B) 02

C) 03

D) 00

E) 04

15. Что является результатом работы функции 0 INT 16h? (чтение символа с ожиданием)

A) AL - ASCII код символа, 0 или префикс скан - кода;

AH - скан-код нажатой клавиши, или расширенный ASCII код;

B) ZF=1, если буфер пуст;

ZF=0, если в буфере присутствует символ;

AL=ASCII - код символа, 0 или префикс скан-кода;

AH - скан-код нажатой клавиши или расширенный ASCII код;

C) AL=00h, если операция выполнена успешно;

AL=01h, если буфер клавиатуры переполнен

D) AL - байт состояния клавиатуры 1;

AH - байт состояния клавиатуры 2;

E) AL - 00;

AH - ASCII код;

16. Какой номер внешнего прерывания закреплен за клавиатурой?

A) 0Fh

B) 0Eh

C) 0Bh

D) 09h

E) 08h

17. Что находится в старшем байте расширенного ASCII кода?

A) Код, специально назначенный этой командой клавиши;

B) FF

C) F0

D) F1

E) F7

18. Номер функция команды int 21h заносится в регистр

A) АН

в) ВН

C) CL

D) DX

E) ESI

19. Каким символом должна завершаться строка при использовании функции 9 int 21h

A^

B) Н

C) $

D) %

E);

20. Какое число цветов может воспроизводить режим True Color 32?

A) 216

B) 220

C) 232

D) 224

E)28

21. Размер сегмента в реальном режиме работы микропроцессора I8086

A) 28

B) 232

C) 212

D) 4 Kb

E) 216

22. Размер сегмента в защищенном режиме работы микропроцессора

A) 28

B) 232

C) 212

D) 4 Kb

E) 216

23. Что находится в сегментных регистрах при работе м-ра I8086 в реальном режиме?

A) Адреса сегментов

B) Селектор

C) Дескриптор

D) Базовый адрес сегмента

E) Нет правильного ответа

24. Что находится в сегментном регистре при работе м-ра I8086 в защищенном режиме?

A) Адреса сегмента

B) Селектор

C) Дескриптор

D) Базовый адрес сегмента

E) Нет правильного ответа

25. Физический адрес в реальном режиме =

A) Сегментный адрес + смещение

B) Сегментный адрес + смещение * 16

C) Базовый адрес сегмента + смещение

D) Сегментный адрес * 16 + смещение

E) (базовый адрес сегмента) * 16 + смещение

26. Физический адрес в защищенном режиме при выключенном страничном преобразовании

A) Сегментный адрес + смещение

B) Сегментный адрес + смещение * 16

C) Базовый адрес сегмента + смещение

D) Сегментный адрес * 16 + смещение

E) (базовый адрес сегмента) * 16 + смещение

27. На что указывает запись 0000000000110000 в регистре DS в защищенном режиме?

A) На шестой по счету дескриптор в таблице GDT

B) На шестой по счету дескриптор в таблице LDT

C) На двенадцатый по счету дескриптор в таблице LDT

D) На двенадцатый по счету дескриптор в таблице GDT

E) Нет правильного ответа

28. На что указывает запись 0000000000110100 в регистре DS в защищенном режиме?

A) На шестой по счету дескриптор в таблице GDT

B) На шестой по счету дескриптор в таблице LDT

C) На двенадцатый по счету дескриптор в таблице LDT

D) На двенадцатый по счету дескриптор в таблице GDT

E) Нет правильного ответа

29. Где определяется базовый адрес сегмента?

A) В дескрипторе

B) В селекторе

C) В TR

D) В LDTR

E) В GDT

30. Где находится адрес локальной таблицы дескрипторов?

A) В дескрипторе

B) В селекторе

C) В TR

D) В LDTR

E) В GDT

Код Код Код
вопрос правильно вопрос правильно вопроса правильно
а го ответа а го ответа   го ответа
  A   A   E
  C   B   B
  D   B   A
  E   D   B
  C   A   D
  D   D   C
  D   A   A
  A   A   B
  A   C   A
  B   D   D

 

2.8. Перечень экзаменационных вопросов по пройденному курсу.

1. Системное программное обеспечение, назначение, составляющие 2.Операционные системы как одна из основных составляющих системного программного обеспечения.

3. Файловые системы, назначение, основные виды.

4. Представление данных в компьютерах.

5. Архитектура Э5М, определение, составляющие.

6. Структурная схема ЭВМ

7. Пользовательские регистры

8. Регистры состояния и управления.

9. Стек. Регистры для работы со стеком.

10. Язык Ассемблер. Структура программы на ассемблере.

11. Прохождение программы через ЭВМ: этапы ввода программы,

трансляции, компоновки, отладки.

12. Отладчики.Работа с Tubo Debugger-ом

13. Псевдооператоры, их роль в программе на ассемблере

14. Использование сегментов в микропроцессоре I 8086.

15. Формирование физического адреса в реальном режиме

16. Описание данных

17. Псевдооператоры описания данных

18. Режимы адресации.

19. Основные виды адресации операндов в памяти.

20. Команды микропроцессора. Классификация.

21. Группа команд пересылки данных.

22. Команда mov. Ограничения, применение.

18. Стек. Команды работы со стеком.

19. Группа команд передачи управления (обзор).

20. Прямые и косвенные безусловные переходы.

21. Условные переходы

22. Группа команд организации цикла.

23. Логические команды.

24. Команды сдвига

25. Строковые команды.

26. Дублирования участков программного кода

27. Процедуры. Назначение. Описание. Передача параметров.

28. Прерывания. Классификация прерываний

29. Контроллер прерываний

30. Обработка прерываний в реальном режиме.

31. Обработка особых ситуаций при помощи собственных обработчиков исключений

32. Обработка прерываний в защищенном режиме.

33. Система ввода - вывода.

34. Программное и аппаратное разделение устройств «типа памяти» и устройств «ввода - вывода».

35. Представление символов и управляющих кодов в памяти компьютера.

36. Схема взаимодействия системы с клавиатурой.

37. Системные средства ввода данных с клавиатуры.

38. Ввод символьной информации. Очистка буфера клавиатуры

39. Управление программой с клавиатуры

40. Функций BIOS работа с клавиатурой

41. Вывод на экран. Видеопамять.

42. Формирование изображений.

43. Управление видеодисплеем.

44. Организация видеопамяти в режимах типа Direct Drow.

45. Основные понятия, связанные с файловым вводом-выводом.

46. Работа с длинными именами файлов в DOS 7.0 (Windows 95) и старше.

47. Структура SFT.

48. Структура COM и EXE файлов.

49. Виртуальные адреса. Расчет объема виртуального адресного пространства

50. Формирование линейного адреса в защищенном режиме.

51. Формирование физического адреса в защищенном режиме.

Глоссарий

1. Ассемблер - (англ. assembler, от assemble - собирать, монтировать), вспомогательная

программа в составе операционной системы для автоматического перевода исходной

программы, подлежащей выполнению на ЭВМ, на машинный язык. Один из видов

транслятора.

2. Абсолютный адрес - физический адрес оперативной памяти.

3. Адаптер - интерфейсный блок, через который устройства ввода-вывода подключаются к системной магистрали

4. База - часть дескриптора, определяющая базовый адрес сегмента.

5. Байт - минимально адресуемая величина памяти в машине. Байт содержит 8 разрядов,

именуемых битами.

6. Бит - один разряд байта, минимальная величина информации в машине.

7. Видеобуфер-часть видеопамяти (различают графический и текстовый видеобуфер)

8. Видеопамять -физически расположена вместе с остальными компонентами на плате адаптера

9. Дескриптор-8и байтовый элемент таблицы, в котором хранятся все характеристики, необходимые для обслуживания данного сегмента.

10.Исполнительный адрес - эффективный адрес - смещение относительно начала сегмента

11.Код - исполняемая часть программы (обычно программа состоит из кода, данных и

стека).

12. Код команды - цифровое значение поля команды, в котором указано, какую операцию требуется выполнить процессору.

13. Компилятор - разновидность транслятора, обеспечивающая перевод программ с языка более высокого уровня на язык более низкого уровня

14. Интерпретатор - программный продукт, выполняющий предъявленную программу путем одновременного ее анализа и реализации ее действий.

15. Линейный адрес - адрес, получаемый сложением смещения и базы сегмента.

16. Лимит - часть дескриптора, определяющая размер сегмента.

17. Метка - идентификатор, связанный с адресом команды в программе.

18. Монохромный режим - одноцветный режим

19.Операнд - параметр, передаваемый команде процессора, определяет элементы, над которыми выполняется действие.

20. Параграф - участок памяти, размером 16 байт

21. Порт-устройство, через которое центральный процессор и память взаимодействуют с устройствами ввода -вывода

22. Прерывание - сигнал от внешнего устройства или выполнение команды прерывания,

приводящие к прерыванию выполнения текущей программы и передаче управления

специальной программе - обработчику.

23. Процессор - часть вычислительной машины, отвечающая за выполнение команд и

управляющая всеми узлами машины.

24. Разрешение - определяет число элементов по горизонтали и вертикали(в графическом режиме элемент - пиксель, в текстовом - символ).

25. Регистры - специальные ячейки памяти расположенные физически внутри процессора, доступ к которым осуществляется не по адресам, а по именам.

26. Сегмент - элемент сегментной адресации в памяти или участок

программы для

DOS/WINDOWS

27. Селектор - число, хранящееся в сегментном регистре.

28. Скан код - номер клавиши, посылаемый клавиатурой.

29. Смещение - относительный адрес, отсчитываемый от начала сегмента.

30. Стек - область памяти, в которой хранятся 16 разрядные данные по принципу «first in last out».

31. Интерпретатор - программный продукт, выполняющий предъявленную программу путем одновременного ее анализа и

32. Эффективный адрес - исполнительный адрес- смещение относительно начала сегмента

33. Язык ассемблера - язык программирования, команды которого обычно однозначно

соответствуют командам машинного языка.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.