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

Лабораторная работа №1. Министрерство образования и науки рф

Читайте также:
  1. A) дохода лица, работающего по найму и b) дохода самозанятого лица.
  2. III. Работа над темой
  3. Quot;Бедные и средний класс работают ради денег". "Богатые заставляют деньги работать на себя".
  4. Quot;РАБОТА" ЛЮБВИ
  5. V. Самостоятельная работа студентов.
  6. V.Игра «Мы работаем на фабрике».
  7. VIII. Самостоятельная работа студентов

МИНИСТРЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

КАБАРДИНО-БАЛКАРСКИЙ ГОСУДАРСТВЕННЫЙ

УНИВЕРСИТЕТ им. Х. М. БЕРБЕКОВА

 

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ

ЛАБОРАТОРНЫХ РАБОТ К ДИСЦИПЛИНЕ

«СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ»

 

Для специальностей 230102 – Автоматизированные системы обработки информации и управления и 230105 – Программное обеспечение вычислительной техники и автоматизированные системы

 

 

НАЛЬЧИК 2005

 

Содержание

Введение.............................................................................................................. 3

Лабораторная работа №1. Турбо отладчик (Turbo Debugger) 4

Лабораторная работа №2. Работа с функциями BIOS Доступ к регистрам и флагам через псевдопеременные. 10

Лабораторная работа №3. Работа с функциями BIOS Доступ к регистрам через функции и структуры.. 12

Лабораторная работа №4. Работа с функциями BIOS Запись символа в видеопамять напрямую, используя указатели far или near 16

Лабораторная работа №5. Работа с памятью. Выделение памяти посредством прерывания Int 21h DOS. 18

Лабораторная работа №6. Работа с внешними устройствами, на примере видеоадаптера. 20

Лабораторная работа №7. Управление задачами и памятью в Windows. 23

Лабораторная работа №8. Управление вводом/выводом и файловые системы.. 28

Лабораторная работа №9. Реализация функций API на уровне ОС.. 33

Литература. 40


Введение

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

Именно в таком ключе и строится данное методическое пособие.

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

Методическое пособие включает 9 лабораторных работ, каждая из которых посвящена конкретной теме, с описанием теоретической части, практическими примерами, заданиями и вопросами для самостоятельной работы.

Методические указания ориентированы на выполнение программ в среде Borland C/C++ 3.1, Borland C++ Builder.

 


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

Тема: «Турбо отладчик (Turbo Debugger)»

(2 часа)

Турбо-отладчик – программа, позволяющая вести отладку программ написанных на языках Си и ассемблере.

В особенности турбо-отладчика входят:

1. Исполнение программы по шагам;

2. Поддержка режима виртуального процессора 8086 при работе на компьютерах, оснащенных процессором 80386;

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

4. Возможности пошагового выполнения программ вперед и назад;

5. Возможность резидентной работы, что позволяет довольно просто отлаживать резидентные программы;

6. “Многоязычность” – турбо-отладчик одинаково хорошо работает с программами, написанными на Pascal, C, C++, ассемблере;

7. Возможность отлаживать программы в среде Windows, начиная с версии 2.5 турбо-отладчика.

Чтобы использовать внешний отладчик при выполнении программы из среды Borland C++, программа должна компилироваться со следующими включенными опциями:

1) Основное меню BorlandC++®Options®Compile®Advanced Code Generation®Debug info in OBJs (должна быть включена обязательно);

2) Основное меню Borland C++®Options®Compile®Advanced Code Generation®Line numbers debug info (включается только при выключенной оптимизации безусловных переходов). Безусловный переход – скачок по метке на другое место в программе, не используя условие.

3) Основное меню Borland C++®Debugger->Source Debugging, установленное в состояние Standalone.

Для вызова отладчика из среды Borland C++ выбирается команда: Основное меню Borland C++ (т. е. три горизонтальные полоски)®Turbo Debugger.

Турбо-отладчик при запуске из Borland C++ наследует много полезной информации, а после завершения возвращается в интегрированную среду, т.е. Borland C++.

Запуск турбо-отладчика:

td.exe – запуск отладчика без загрузки отлаживаемого файла.

td file.exe - запуск отладчика и загрузка отлаживаемого файла file.exe.

Управление работой турбо-отладчика выполняется через систему меню:

1. Главное меню (основное Main Menu), занимает верхнюю строку экрана и активизируется нажатием клавиши F10.

2. Подменю (меню команды), связанное с каждой из команд главного меню. С помощью подменю может быть выполнена команда, открыты: свое меню (команды подменю, помеченные стрелкой) и окно диалога (команды подменю, помеченные многоточием).

3. Локальное подменю, открываемое нажатием клавиши Alt-F10, либо нажатием правой кнопки манипулятора ”мышь”.

Программа file.exe загружается в отладчик, и ее точка входа отмечается символом ‘®’.

С помощью горячих клавиш можно настраивать работу отладчика по своему усмотрению.

Например, изменение размера и (или) перемещение активного окна выполняются следующим образом:

1. Выбирается Main Menu®Window®Size/Move или нажимается “горячая клавиша” Ctrl-F5.

2. Клавиши со стрелками будут перемещать активное окно в любое место экрана; для изменения правой или нижней границы окна используются клавиши со стрелками и одновременно удерживается нажатой клавиша shift;

3. Новый размер и (или) положение окна фиксируется нажатием клавиши Enter.

И т.д., точно так, как это делается в среде Borland C++.

Команды меню View: открывают различные специализированные окна отладчика.

1. Команда CPU – при ее выборе на экране открывается окно CPU, образуемое пятью подокнами, называемые панелями.

1.1. В левом верхнем углу “панель машинного кода” содержит дизассемблированные инструкции программы вместе с СИ-строками, эквивалентом которых они являются. Панель машинного кода позволяет наблюдать за процессом исполнения отлаживаемой программы на уровне машинных инструкций.

1.2. Справа вверху к ней примыкает “панель регистров”, показывающая текущее значение регистров процессора.

1.3. Далее справа вверху располагается “8 флагов процессора”. Панели регистров и флагов позволяют изменить значение регистра или флага. Задание нового значения регистра требует активизации панели и высвечивания его символического обозначения. Затем начинается набор нового значения. Отладчик открывает окно истории и отображает ввод. После завершения ввода и нажатия клавиши Enter регистр изменяет свое значение. Изменение флагов выполняется проще. Нужный флаг высвечивается, и нажимается клавиша Enter.

1.4. Слева внизу – “панель данных”, в которой отображается дамп памяти, соответствующий текущему значению регистра DS (это текущий дамп сегмента данных, активизировав эту панель, можно просмотреть и изменить содержимое сегмента данных).

1.5. В правом нижнем углу помещается “панель стека”, где дается дамп текущей его вершины. Активной является та панель, в которой помещен курсор. Переход из одной панели в другую выполняется клавишей TAB (Shift-Tab). Информация в панелях соответствует текущему состоянию процессора и обновляется после каждой выполненной команды.

2. Выбор команды Run®Go to cursor или клавиша F4,вызовет выполнение программы до новой границы.

Пошаговое выполнение программы осуществляется с помощью клавиш F7 или F8.

Клавиша F7(Trace Into) – пошаговая отладка программы с заходом в тело функции и просмотром ее содержимого.

Клавиша F8(step over) – пошаговая отладка программы без захода в функцию, но с получением результата ее выполнения.

Если выбрана команда Run (F9), то выполнение программы продолжается до тех пор, пока не будет достигнут ее конец, либо до первой точки останова.

Исполнение программы может быть прервано нажатием клавиш Ctrl-Break.

Команда Execute to… (горячая клавиша Alt-F9) позволяет задать адрес инструкции, при достижении которой выполнение программы приостанавливается.

Команда Back Trace (клавиша Alt-F4) позволяет вернуться назад по коду отлаживаемой программы, но с некоторыми ограничениями. Например, такими: нельзя вернуть назад связанную с портами инструкцию (команду), выполнить движение назад в коде обработчика прерывания. А само движение назад возможно только потому, что турбо-отладчик хранит последние выполненные инструкции. Посмотреть их можно, активизировав окно Execution history через меню View. При желании отладчик может хранить и записывать выполняемые нажатия клавиш для того, чтобы некоторые из них ”взять обратно” (отменить).

Команда Unit return продолжает исполнение функции без остановки до тех пор, пока не происходит возврат в точку вызова, команда удобна в тех случаях, когда вместо клавиши F8(step over) нажимается F7(Trace Into) и начинается трассировка функции, которую следовало бы выполнить за один шаг отладчика.

В «панели регистров» записаны следующие регистры:

AX, BX, CX, DX, SP, BP, SI, DI, CS, DS, SS, ES, IP

Флаги CF, ZF, SF, OF, PF, AF, IF, DF

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

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

Первая группа регистров называется универсальными регистрами или регистрами общего назначения (РОН). Имеется четыре таких регистра, которые именуются AX, BX, CX и DX. Если для работы требуется применение лишь половины емкости любого из этих регистров, то они могут делиться на половины старшего и младшего порядка, которые обозначаются AH и AL, BH и BL и т.д.

Следующая группа состоит из четырех регистров, и используется для оказания помощи микропроцессору в отыскании пути в памяти компьютера. Регистры из этой группы называются регистрами сегментов. Каждый из них используется для оказания помощи в получении доступа к разделу (или сегменту) памяти объемом 64 Кбайт. Сегмент кода (или регистр CS) указывает, в каком месте памяти располагается программа. Сегмент данных (или регистр DS) определяет местонахождение данных, используемых программой, а дополнительный сегмент (или регистр ES) дополняет сегмент данных. Сегмент стека (или регистр SS) определяет местонахождение стека компьютера.

В то время как регистры сегментов используются для получения доступа к большим разделам (по 64 К) памяти, последняя группа регистров используется для оказания помощи в отыскании пути к определенным байтам в памяти. Они применяются совместно с регистром сегмента для указания на точное место в памяти. Имеется пять таких регистров, каждый из которых используется для конкретной цели. Указатель команды (инструкции) IP, который называют также программным счетчиком, РС, сообщает микропроцессору только о месте, где выполняется программа. Указатель стека, SР, и указатель базы, BP, используются для оказания помощи в отслеживании выполняющейся работы. Индекс источника, SI, и индекс местоназначения (выхода) DI, используются для оказания помощи программам в перемещении больших объемов данных из одного места в другое.

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

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

Отдельные флаги могут проверяться и устанавливаться посредством специальных команд, а вся группа флагов может считываться или устанавливаться посредством пары команд, которые считывают или устанавливают весь регистр флагов. Всего имеется девять стандартных флагов. Шесть из них используются для индикации результатов арифметических и подобных им операций: флаг нуля – ZF – указывает на нулевой результат (или равенство при сравнении), флаг знака – SF – указывает на отрицательный результат, флаг переноса – CF – означает перенос в следующую позицию, флаг дополнительного переноса – AF – указывает на перенос из первых четырех битов (что требуется для моделирования десятичных операций), флаг переполнения – OF – отмечает получение слишком большого результата и, наконец, флаг четности – PF – отмечает четность или нечетность результата.

Три оставшихся флага используются для управления. Флаг направления, DF, управляет направлением повторения операций (например, при побайтовом перемещении данных): справа налево или наоборот. Флаг прерываний, IF, контролирует возможность прерываний: разрешены они или временно запрещены. Флаг захвата, TF, вызывает генерацию компьютером специального прерывания "захвата" после выполнения одной команды. Это делает возможным пошаговое выполнение программы с трассировкой результатов каждой отдельной команды.

Задание на выполнение:

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

Вопросы к отчету по лабораторной работе 1:

1. Особенности турбо-отладчика.

2. Команда CPU и ее подокна.

3. С помощью какой клавиши выполняется трассировка программы.

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

5. Для чего используется команда Unit return

6. Регистры и флаги.


Дата добавления: 2015-07-11; просмотров: 147 | Нарушение авторских прав


Читайте в этой же книге: Лабораторная работа №3 | Лабораторная работа №6 | Лабораторная работа №7 | Задание на выполнение | Лабораторная работа №8 | Лабораторная работа №9 |
<== предыдущая страница | следующая страница ==>
Визначення перекисного числа жиру| Лабораторная работа №2

mybiblioteka.su - 2015-2024 год. (0.01 сек.)