- •Методичесике указания к выполнению лабораторных работ по дисциплине
- •График проведения
- •Лабораторная работа № 1
- •Общие сведения
- •Задание
- •Содержание отчета
- •Что нужно знать для защиты отчета
- •Рекомендуемая литература
- •Лабораторная работа № 2
- •Общие сведения
- •Задание
- •Содержание отчета
- •Задание
- •Содержание отчета
- •Задание
- •Содержание отчета
- •Что нужно знать для защиты отчета
- •Рекомендуемая литература
- •Лабораторная работа № 5
- •Общие сведения
- •Задание
- •Варианты заданий
- •Содержание отчета
- •Задание
- •Варианты заданий
- •Содержание отчета
- •Что нужно знать для защиты отчета
- •Рекомендуемая литература
- •Лабораторная работа № 7
- •Общие сведения
- •Варианты заданий
- •Содержание отчета
- •Что нужно знать для защиты отчета
- •Рекомендуемая литература
Задание
1. Используя .exe файл, полученный в предыдущей работе, выполните анализ заголовка этого файла. Для просмотра заголовка .exe файла необходимо в FAR Manager навести курсор на имя .exe файла и выполнить команду View (Просмотр), которая активизируется нажатием на функциональную клавишу F3. В окне просмотра нажатие на функциональную клавишу F4 активизирует режим просмотра в шестнадцатеричных кодах. Для копирования в текст отчета по лабораторной работе заголовка .exe файла необходимо нажать на клавиатуре клавишу Print Scrn (печать экрана в буфер обмена), а затем в Word документе отчета по лабораторной работе выполнить вставку из буфера (Ctrl+V).
2. Загрузите Ваш .exe файл через td.exe и выполните дамп области PSP. Для этого после загрузки вашей программы в турбоотладчике, перед ее выполнением (!!!), откройте дамп памяти командой View/Dump. Проанализируйте содержимое полей префикса программного сегмента. При просмотре содержимого PSP окно дампа можно увеличить нажатием на клавишу F5. Копирование содержимого PSP в текст отчета по лабораторной работе выполняется так же, как это описано для заголовка .exe файла.
Содержание отчета
Отчет по лабораторной работе должен содержать:
титульный лист;
тему и цель работы;
листинг программы;
заголовок .exe файла;
PSP того же .exe файла;
выводы по работе.
Что нужно знать для защиты отчета
Для защиты отчета по лабораторной работе, необходимо уметь объяснять содержимое полей заголовка .exe файла и PSP, а также знать и понимать основные термины, приведенные в «Общих сведениях» методических указаний.
Рекомендуемая литература
Гук М. Процессоры Intel: от 8086 до Pentium. / М.Гук – СПб.: Питер, 1997.–224с.:ил.
http://www.xserver.ru/computer/os/msdos
Лабораторная работа № 3
Тема: изучение директив декларации простых данных и способов адресации.
Цель: научиться организовывать объявление данных в ассемблер-программах и формировать доступ к этим данным, используя различные виды адресации, а также научиться читать и анализировать область памяти, в которой располагаются данные, обрабатываемые программой.
Общие сведения
Для изучения языка ассемблер нет необходимости в организации ввода и вывода данных при написании программ. Организация ввода данных с клавиатуры и вывода данных на экран монитора представляет собой на языке ассемблера достаточно большие программы. Эти программы уже реализованы в виде библиотечных программ, так называемых обработчиков прерываний, которые вызываются командой int. Роль операнда этой команды выполняет вектор прерывания, то есть номер его в соответствующей таблице (таблице векторов прерываний). В наших программах это выглядит так – int 21h или int 9h и др. Когда мы организуем ввод-вывод в программах на алгоритмических языках (Pascal, C, C++ и т.д.), то процедуры ввода-вывода этих языков так или иначе обращаются к соответствующим прерываниям. Но кроме этого данные процедуры выполняют еще целый ряд действий по организации ввода-вывода. Что это за действия? Когда мы вводим данные с клавиатуры, то программа обработчик прерывания считывает, так называемый скен-код нажатой клавиши и, анализируя при этом состояние регистровых клавиш, переводит в конечном итоге этот скен-код в ASCII код набранного нами символа. Процедура ввода на алгоритмическом языке, скажем процедура read языка Pascal, выполняет кроме этого анализ введенных данных в соответствии с определенным в программе для этих данных типом. Если мы вводим числовые данные, то программа выполняет преобразование из ASCII кода в соответствующее числовое значение. При выводе данных не достаточно обратиться к прерыванию для отображения данных на экране. Необходимо эти данные сначала преобразовать, и если мы выводим числовые значения, то из двоичного числового формата следует перевести их в ASCII формат для вывода на экран. То, что незримо для нас выполняют процедуры ввода-вывода алгоритмических языков, на ассемблере приходится организовывать программно. Эти действия увеличивают длину программы, в то время, когда для анализа работы команд процессора, изучением которых мы и будем заниматься, вся эта «оформительская» часть будет только лишним грузом. Детальный анализ работы команд процессора может выполняться только (!!!) при пошаговом выполнении программ в среде TurboDebugger-а. Причем детальный анализ подразумевает не только анализ данных на регистрах, но и анализ расположения данных в памяти компьютера (просмотр дампа памяти - команда View – Dump). А, следовательно, ввод-вывод данных просто теряет всякий смысл при такой работе. Достаточно декларировать и инициировать исходные данные, а также резервировать место в памяти для промежуточных значений и для выходных данных в сегменте данных программы.
NB! При анализе данных в окне дампа памяти не забывайте учитывать принцип их расположения в памяти - «младший по младшему адресу, старший - по старшему».
Язык ассемблера предоставляет возможность объявлять простые данные длиной в байт, слово, двойное слово, два двойных слова, а также десятибайтовые и 48-битовые данные. Вспомним директивы декларации простых данных.
DB – директива декларации данных длиною в один байт;
DW – директива декларации данных длиною в одно слово или два байта;
DD – директива декларации данных длиною в два слова или в четыре байта;
DQ – директива декларации данных длиною в четыре слова или восемь байтов;
DF или DP – директива декларации данных длиною в 48-битов для определения дальних указателей (используется в защищенном режиме);
DT – директива декларации данных длиною в десять байтов.
В данной лабораторной работе рассматриваются декларации данных длиною в байт, слово и двойное слово, так как четырехсловные и десятибайтовые данные использует математический сопроцессор, а 48-битовые данные используются в защищенном режиме.
Кроме того, в данной лабораторной работе рассматриваются виды адресации:
регистровая;
непосредственная;
прямая;
косвенная адресация:
косвенная индексная;
косвенная индексная со смещением;
косвенная базовая;
косвенная базовая со смещением;
косвенная базово-индексная;
косвенная базово-индексная со смещением.
Значение смещения к данным в сегменте данных при косвенной адресации определяется по значению эффективного адреса. Эффективный адрес (Effective Address далее EA) равен сумме всех значений в команде, которые задают смещение к ячейке памяти. Например, для команды
Mov AL, [BX+5] значение ЕА = ВХ + 5, то есть эффективный адрес равен сумме значения, записанного на регистре ВХ и смещения в пять байтов, а для команды
Mov CX, 4[BX][SI] значение EA = BX + SI + 4.
Полученный ЕА является смещением от начала сегмента данных, по которому и читается искомое значение.