
- •Курский государственный технический университет Кафедра конструирования и технологии эвс
- •Програмирование на языке ассемблера Методические указания
- •Введение
- •Эмулятор ос cp/m
- •Методические указания Контрольные вопросы
- •Лабораторная работа 2 "Исследование отладчика sid. Программирование в кодах 8080".
- •Лабораторная работа 3 "Линейное сложение и вычитание многобайтовых чисел ".
- •Цель работы
- •Лабораторная работа 5 "Ассемблирование и загрузка программ на языке ассемблера 8080". Цель работы
- •Лабораторная работа 6 "Вывод информации на экран дисплея с использованием системных вызовов ос cp/m".
- •Лабораторная работа 7 "Ввод информации с клавиатуры с использованием системных вызовов ос cp/m".
- •Лабораторная работа 8 "Исследование программ. Дизассемблирование".
- •Приложение 1 Кодировка команд ассемблера 8080 коды команд микропроцессоров i8080/i8085
- •Приложение 3 Ассемблер asm и макроассемблер mac. Справочные данные
- •Приложение 4 Сведения об ос cp/m
- •1.Резидентные команды
- •2. Характеристики dos
- •3. Обращение к dos. Входная и выходная информация.
- •Функции dos для управления консолью.
- •Приложение 5 Кодировки символов кодировка символов
Лабораторная работа 3 "Линейное сложение и вычитание многобайтовых чисел ".
Цель работы:
Подготовка к работе
Повторить тему "Арифметические команды 8080". Обратить внимание на особенности формирование флага переноса.
Вопросы для самоконтроля
Каков порядок выбора байтов для сложения (вычитания)- от младшего к старшему, или наоборот?
Влияет ли результат сложения (вычитания) предудущих байтов на шаге обработки текущих байтов операндов?
Программа работ
Продумать алгоритм сложения 3-х байтовых чисел. Записать текст программы, используя 3-х кратное повторение стандартного сложения двух ячеек памяти.
Загрузить эмулятор
Загрузить отладчик
Ввести программу сложения, используя директиву А отладчика
Ввести подготовленный тестовый пример
Сохранить рабочую область памяти в файл, включая программный код и тестовые данные.
Отметить в программе узловые точки и использовать их адреса как точки останова
Запустить программу на выполнение, останавливаясь в опорных точках и контролируя правильность выполнения
По завершении программы проверить результат сложения.
Выполнить аналогичным образом вычитание 3-хбайтовых чисел.
По достижении точки останова необходимо записывать содержимое регистров и контролируемых ячеек памяти для последующего отображения протокола отладки в отчете.
Отчет должен содержать:
- текст программы с комментариями
- протокол отладки
- несколько тестовых примеров, демонстрирующих характерные особенности многобайтового сложения (вычитания)
Методические указания
Особое внимание следует обратить на размещение данных. Входные данные и результат следует располагать в ячейках памяти. При этом удобно, чтобы результат не сохранялся на месте одного из операндов. Порядок следования байтов должен быть одинаков для операндов и результата. Все используемые ячейки памяти должны быть подробно описаны.
Опорные точки следует выбирать так, чтобы при запуске очередного программного фрагмента не могло произойти неконтролируемое выполнение кода. Это означает, в частности, что любая команда ветвления должна привести к точке останова по каждой из возможных траекторий выполнения.
Опорные точки в пределах линейных участков программы следует выбирать так, чтобы при останове можно было проанализировать правильность выполненного кода, контролируя содержимое регистров и обновляемых ячеек памяти.
Контрольные вопросы
Одинаковы ли команды сложения (вычитания) на первом шаге обработки операндов и на последующих шагах?
Как расположить данные в памяти, чтобы можно было удобно вывести все их на экран одновременно с помощью единственной директивы D отладчика?
Каковы основные требования к комментариям, поясняющим текст программы?
Какой должна быть длина результата при сложении 3-хбайтовых чисел?
Какие характерные особенности многобайтового сложения (вычитания) должны учитывать тестовые примеры?
Лабораторная работа 4 "Циклическое сложение и вычитание многобайтовых чисел ".
Цель работы
Изучение команд ветвления и методов адресации 8080.
Подготовка к работе
Повторить темы "Арифметические команды 8080", "Команды ветвления 8080", "Методы адресации 8080". Обратить внимание на особенности формирования флагов и их восприятие командами ветвления.
Вопросы для самоконтроля
Каков порядок выбора байтов для сложения (вычитания)- от младшего к старшему, или наоборот?
Влияет ли результат сложения (вычитания) предудущих байтов на шаге обработки текущих байтов операндов?
Какие объекты микропроцессорной структуры пригодны для хранения счетчика циклов?
Какие методы адресации могут использоваться при обработке операндов переменной длины?
Программа работ
Получить у преподавателя исходные данные:
- количество байтов в операндах
- вид арифметической операции - сложение или вычитание
Продумать алгоритм сложения N-байтовых чисел. Записать текст программы, используя циклическое повторение сложения двух ячеек памяти.
Загрузить эмулятор
Загрузить отладчик
Ввести программу сложения, используя директиву А отладчика
Ввести подготовленный тестовый пример
Сохранить рабочую область памяти в файл, включая программный код и тестовые данные.
Отметить в программе узловые точки и использовать их адреса как точки останова
Запустить программу на выполнение, останавливаясь в опорных точках и контролируя правильность выполнения
По завершении программы проверить результат сложения.
По достижении точки останова необходимо записывать содержимое регистров и контролируемых ячеек памяти для последующего отображения протокола отладки в отчете.
Отчет должен содержать:
- текст программы с комментариями
- протокол отладки
- несколько тестовых примеров, демонстрирующих характерные особенности многобайтового сложения (вычитания)
Методические указания
Особое внимание следует обратить на выбор объектов для хранения счетчика циклов и указателей на операнды и результат. Входные данные и результат следует располагать в ячейках памяти. При этом возможно (хотя и не желательно), чтобы результат сохранялся на месте одного из операндов. Порядок следования байтов должен быть одинаков для операндов и результата. Все используемые ячейки памяти должны быть подробно описаны.
Опорные точки следует выбирать так, чтобы при запуске очередного программного фрагмента не могло произойти неконтролируемое выполнение кода. Это означает, в частности, что любая команда ветвления должна привести к точке останова по каждой из возможных траекторий выполнения.
Опорные точки в пределах линейных участков программы следует выбирать так, чтобы при останове можно было проанализировать правильность выполненного кода, контролируя содержимое регистров и обновляемых ячеек памяти.
Контрольные вопросы
Одинаковы ли условия сложения (вычитания) на первом шаге обработки операндов и на последующих шагах?
Сколько указателей необходимо использовать при раздельном задании операндов и результата?
Можно ли в качестве счетчика циклов использовать аккумулятор?
Какой должна быть длина результата при сложении 3-хбайтовых чисел?
Какие характерные особенности многобайтового сложения (вычитания) должны учитывать тестовые примеры?
Какие методы адресации подразумевает программа циклического сложения?