- •Часть 1
- •302030, Г. Орел, ул. Московская, 65
- •Содержание
- •Введение
- •1 Используемое оборудование и программное обеспечение
- •2 Общая подготовка к выполнению лабораторных работ
- •3 Общий ход выполнения и защиты лабораторных работ
- •4 Основные теоретические положения по программированию на языке ассемблера
- •4.1 Организация памяти для хранения программ
- •4.2 Режимы адресации данных микропроцессора Intel 8086
- •4.3 Режимы адресации переходов микропроцессора Intel 8086
- •4.4 Слово состояния микропроцессора Intel 8086
- •4.5 Список сокращений и условных обозначений
- •4.6 Общий формат ассемблерной команды
- •4.7 Определение данных
- •4.8 Регистры процессора Pentium.
- •4.9 Команды языка ассемблера
- •4.9.1 Команды передачи данных
- •4.9.2 Команды двоичных сложений и вычитаний
- •4.9.3 Однооперандные команды двоичной арифметики и команды сравнения
- •4.9.4 Команды умножения и деления двоичных чисел
- •4.9.5 Логические команды
- •4.9.6 Команды сдвигов и циклических сдвигов
- •4.9.7 Команды передачи управления
- •1) Безусловные переходы.
- •1.1) Команда безусловного перехода
- •1.2) Обращение к процедурам
- •2) Условные переходы
- •4.9.8 Команды циклов
- •4.9.9 Стековые команды
- •1) Организация стека
- •2) Использование стека для передачи параметров
- •4.9.10 Работа с устройствами ввода-вывода
- •5 Процесс ассемблирования и выполнения программы
- •5.1 Получение исполняемого модуля
- •5.2 Работа с отладчиком программ turbo debugger
- •6 Программа на языке ассемблера
- •6.1 Структура программы
- •6.2 Примеры программ
- •7 Лабораторная работа № 1. Арифметические операции над байтами и словами. Линейное исполнение программ
- •7.1 Цель работы
- •7.2 Контрольные вопросы
- •7.3 Задание на лабораторную работу
- •8 Лабораторная работа № 2. Логические операции и операции сдвига над данными
- •8.1 Цель работы
- •8.2 Контрольные вопросы
- •8.3 Задание на лабораторную работу
- •9 Лабораторная работа № 3. Команды условного и безусловного переходов. Организация ветвлений и циклов в программе
- •9.1 Цель работы
- •9.2 Контрольные вопросы
- •9.3 Задание на лабораторную работу
- •10 Лабораторная работа № 4. Использование стека и подпрограмм. Организация внутрисегментных и межсегментных переходов
- •10.1 Цель работы
- •10.2 Контрольные вопросы
- •10.3 Задание на лабораторную работу
- •11 Лабораторная работа № 5. Использование стека и подпрограмм. Организация передачи параметров через стек
- •11.1 Цель работы
- •11.2 Контрольные вопросы
- •11.3 Задание на лабораторную работу
- •12 Лабораторная работа № 6. Организация взаимодействия с устройствами компьютера. Использование портов
- •12.1 Цель работы
- •12.2 Контрольные вопросы
- •12.3 Задание на лабораторную работу
- •13 Содержание отчетов по лабораторным работам
- •14 Список рекомендуемой литературы
- •Приложение а (обязательное) Образец титульного листа отчета по лабораторной работе для студентов специальности 220301, обучающихся по основной программе
- •Приложение б (обязательное) Образец титульного листа отчета по лабораторной работе для студентов специальности 220301, обучающихся по ускоренной программе
- •Приложение в (обязательное) Образец титульного листа отчета по лабораторной работе для студентов направления 220300.62
5.2 Работа с отладчиком программ turbo debugger
Отладчик TURBO DEBUGGER позволяет по шагам проследить процесс выполнения программы на уровне регистров процессора и ячеек памяти. Внешний вид окна отладчика представлен на рисунке 5.1.
Нижнее меню в отладчике - меню функциональных клавиш.
Значения некоторых функциональных клавиш:
1) F7 – трассировка программы.
2) F8 – выполнение программы по шагам т.е. по программе перемещается полоса выбора (синяя), и будет выполнена та команда, на которой эта полоса размещена.
Примечание. Трассировка по F7 отличается от пошагового выполнения по F8 тем, то при наличии подпрограмм при трассировке будет по шагам выполняться не только основная программа, но и каждая подпрограмма, которая вызывается из основной программы. А при пошаговом выполнении по F8 по шагам выполняется только основная программа, а каждая подпрограмма выполняется как единый оператор.
Рисунок 5.1 – Окно отладчика
После выполнения команды на экране появляется содержимое регистров, флагов и адрес следующей на очереди команды (соответствующие регистры подсвечиваются белым цветом).
3) F10 - выход в главное, верхнее меню.
Запускаются команды или с помощью мыши или с помощью клавиш перемещения курсора на клавиатуре. Курсором выбирается нужная команда и нажимается клавиша ENTER или нажимается левая кнопка мыши, если выбор выполнялся с помощью мыши. Выбор группы верхнего меню также может выполняться с помощью мыши или с клавиатуры (ALT+ горячая клавиши соответствующей группы).
В верхнем меню по команде FILE можно открыть любой файл, если он не был указан в команде TD при запуске отладчика.
По команде VIEW появляется еще меню, в котором DUMP - команда получения содержимого памяти по соответствующему адресу заданному в регистре DS, т.е. содержимое данных определенных в нашей программе. Данные начинаются с нулевого относительного адреса. Эти данные можно изменять.
REGISTERS - после запуска этой команды появляется окно с регистрами, и данные, находящиеся в этих регистрах, можно изменять. Курсором или мышкой выбрать изменяемый регистр и перевести курсор на изменяемое данное, на клавиатуре в появившемся окне набрать новое данное и нажать ENTER.
Выход из отладчика по нажатию ALT+X.
Выход из любой команды по нажатию клавиши ESC.
Закрыть появившееся окно можно или нажать ALT+F3 или надо перевести мышкой курсор в левый угол окна на зеленый квадрат и нажать левую кнопку мыши.
Верхнее и нижнее меню обрамляют отдельные окна, содержащие следующую информацию.
1) О сегменте кода текущей программы. В этом окне отражается смещение команды относительно начала сегмента кода (регистра CS), код команды, мнемоника команды и операнды в шестнадцатеричной системе счисления.
2) О сегменте данных текущей программы. В этом окне отражается смещение данных относительно начала сегмента (регистра DS), их представление в шестнадцатеричном виде и в виде символа таблицы ASCII.
3) О сегменте стека текущей программы. В этом окне отражается смещение вершины стека (регистра SP) относительно начала сегмента стека (регистра SS) и элементы стека в шестнадцатеричном виде.
4) О регистре флагов процессора. В этом окне перечислены все флаги (кроме TF) и в процессе выполнения команд программы отображается их реакция на выполненную команду.
5) О регистрах микропроцессора. В этом окне перечислены регистры процессора и в процессе выполнения команд программы отображается их содержимое после очередной выполненной команды.
Анализируя информацию из этих окон, можно делать вывод о правильности выполнения текущей программы.
Далее рассмотрим, что представляет собой программа на языке ассемблера.