Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Модульное программирование на АссемблереМодульное программирование на Ассемблере
Пояснительная записка по дисциплине «Машинно-ориентированные языки»
1.025.00.00 ПЗ
Курсовойпроектзащищен с оценкой ___________ ______________
Иркутск 2015
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное ИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра вычислительной техники
ЗАДАНИЕ к курсовому проекту по дисциплине «Машинно-ориентированные языки»
Исходные данные: Вариант 25 Заданы два массива X[10] и Y[12], состоящих из целых чисел со знаком в формате слова. Выполнить над массивами действия согласно индивидуальному заданию. Программа должна иметь модульную структуру. Выделить процедуры: ввода массива с консоли, вывода массива, вывода информации об авторе и условии решенной задачи. Выполнить вывод массивов на экран до обработки и после обработки согласно варианту.
Составить процедуру нахождения наибольшего по абсолютной величине элемента массива. Передача параметров через регистры. BX - смещение массива. в CX -число элементов в массиве. в AX - результат вычислений.
Рекомендуемая литература:
1. Методические указания по выполнению курсового проекта по курсу ПО МПС.эл. док. Сервер VT: \ ПО МПС заочники \ Курсовое проектирование 2. Пирогов В. Ассемблер в примерах. - Спб: БХВ, 2005. - 416 с.
Графическая часть на листах
Дата выдачи задания «19» апреля2014 г. Дата представления проекта руководителю « »июня2015 г.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ. 4 1 Цель курсового проекта. 5 2 Математическая модель. 5 3 Таблица внешних спецификаций. 6 4 Таблица тестов. 6 5 Иерархия процедур. 7 6 Назначение модулей. 7 7 Описание процедур. 8 8 Блок схемы.. 9 8.1 Блок-схема основного модуля. 9 8.2 Блок-схема процедуры Full 10 8.3 Блок-схема процедуры PRINT_ARRAY.. 11 8.5 Блок-схема процедуры INPUT_ARRAY.. 12 9 Разработка программы на Ассемблере. 13 10 Трансляция и преобразование кода программы KP. 13 11 Реализация программы на Ассемблере. 15 12 Протокол тестирования программы на основе Таблицы тестов. 20 ЗАКЛЮЧЕНИЕ. 22 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.. 23
ВВЕДЕНИЕ
Модульное программирование — это такой способ программирования, при котором вся программа разбивается на группу компонентов, называемых модулями, причем каждый из них имеет свой контролируемый размер, четкое назначение и детально проработанный интерфейс с внешней средой. Единственная альтернатива модульности — монолитная программа, что, конечно, неудобно. Таким образом, наиболее интересный вопрос при изучении модульности — определение критерия разбиения на модули. Преимуществом указанной технологии является возможность разработки программ большого объема небольшими функционально законченными частями. При этом многие процедуры можно использовать в других местах программы или других программах, не прибегая к переписыванию частей программного кода. Дополнительные возможности предоставляет применение при разработке подпрограмм, написанных на различных языках программирования, как высокого, так и низкого уровней. При этом используются преимущества языка программирования, который дает наиболее эффективную реализацию алгоритма подпрограммы. Так, включение модулей, написанных на языке ассемблера, позволяет ускорить выполнение соответствующих частей программы и/или выполнить действия, программирование которых с использованием языков высокого уровня невозможно или затруднительно. С другой стороны, существует много библиотек подпрограмм на языках высокого уровня, которые с успехом можно использовать в ассемблерных программах.
Цель курсового проекта
Целью выполнения данного курсового проекта является: · Получение навыков разработки структурной организации ассемблерных программ. · Реализация модульных программ на основе аппарата процедур. · Изучение способов организации связи по данным. · Закрепление навыков программирования на машинно-ориентированном языке. · Разработка эффективных программ с использованием машинных ресурсов.
Математическая модель
Поэлементно работаем с массивами Xи Y: Просматриваем поэлементно массив X. 1)Заносим в аккумулятор (регистр AX) элемент X[0]. 2)Поскольку требуется найти наибольший по абсолютной величине элемент, сравниваем текущий элемент (начинаем с X[1]) с 0: 3)Если элемент больше нуля, то ничего не делаем, если меньше, то меняем его знак на противоположный. 4)Далее сравниваем текущий элемент с содержимым аккумулятора: 5)Если элемент по величине превосходит содержимое аккумулятора, то заносим элемент в аккумулятор (регистр AX). Переходим к следующему элементу. Повторяем пункты 2-5. Просматриваем так весь массив X. В результате в аккумуляторе будет находиться наибольший по абсолютной величине элемент массива Х. Действия для массива Y идентичны.
Таблица внешних спецификаций
Таблица тестов
Иерархия процедур
Рисунок 1 – Иерархия модулей программы
Назначение модулей Таблица 1 –Назначение модулей
Описание процедур
Процедура FULL: Процедура предназначена для вычисления наибольшего по абсолютной величине элемента массива.Для работы данной процедуры необходимы регистры Ах, Bхи Di, поэтому для сохранения их значений, перед действиями над регистрами, их значения помещаются в стек, а после завершения всех операций значения помещаются обратно. Входные данные: Cx – размер массива (в нашем случает 10 для Х и 12 для Y) Bx–смещение массива
Процедура PRINT: Процедура вывода числа. Входные данные: Ах – число, которое нужно вывести на экран
Процедура KEY: Процедура ввода числа. Выходные данные: Ах – число, которое вводится с клавиатуры
Процедура INPUT_ARRAY Процедура ввода массива. Входные данные: Cx –количество элементов массива Bx – адрес вводимого массива
Процедура вывода элементов массива на экран. Cx –количество элементов массива Bx – адрес выводимого массива
Блок схемы 8.1 Блок-схема основного модуля Рисунок 2 – Блок-схема главного модуля
8.2 Блок-схема процедурыFull Рисунок 3 – Блок-схема процедуры FULL 8.3Блок-схема процедуры PRINT_ARRAY
да нет
Рисунок 4 – Блок-схема процедуры PRINT_ARRAY
8.5 Блок-схема процедуры INPUT_ARRAY
да нет
Рисунок 5 – Блок-схема процедуры INPUT_ARRAY
ЗАКЛЮЧЕНИЕ
Ассемблер является символическим аналогом машинного языка. Поэтой причине программа, написанная на ассемблере, должна отражать все особенности архитектуры микропроцессора: организацию памяти, способы адресации операндов, правила использования регистров и т. д. Из-за необходимости учета подобных особенностей ассемблер уникален для каждого типа микропроцессоров. Курсовой проект выполнен полностью, программа отлажена и протестирована. В процессе работы над проектом получены навыки модульного программирования на языке ассемблера, изучено различие между процедурами и макросами, использованы знание типовых алгоритмов из курса «Программирование на Языках Высокого Уровня». Составлена процедура,нахождения наибольшего по абсолютной величине элемента массива, с передачей параметров через регистры.
Модульное программирование на Ассемблере
Пояснительная записка по дисциплине «Машинно-ориентированные языки»
1.025.00.00 ПЗ
Курсовойпроектзащищен с оценкой ___________ ______________
Иркутск 2015
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное ИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра вычислительной техники
ЗАДАНИЕ к курсовому проекту по дисциплине «Машинно-ориентированные языки»
Исходные данные: Вариант 25 Заданы два массива X[10] и Y[12], состоящих из целых чисел со знаком в формате слова. Выполнить над массивами действия согласно индивидуальному заданию. Программа должна иметь модульную структуру. Выделить процедуры: ввода массива с консоли, вывода массива, вывода информации об авторе и условии решенной задачи. Выполнить вывод массивов на экран до обработки и после обработки согласно варианту.
Составить процедуру нахождения наибольшего по абсолютной величине элемента массива. Передача параметров через регистры. BX - смещение массива. в CX -число элементов в массиве. в AX - результат вычислений.
Рекомендуемая литература:
1. Методические указания по выполнению курсового проекта по курсу ПО МПС.эл. док. Сервер VT: \ ПО МПС заочники \ Курсовое проектирование 2. Пирогов В. Ассемблер в примерах. - Спб: БХВ, 2005. - 416 с.
Графическая часть на листах
Дата выдачи задания «19» апреля2014 г. Дата представления проекта руководителю « »июня2015 г.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ. 4 1 Цель курсового проекта. 5 2 Математическая модель. 5 3 Таблица внешних спецификаций. 6 4 Таблица тестов. 6 5 Иерархия процедур. 7 6 Назначение модулей. 7 7 Описание процедур. 8 8 Блок схемы.. 9 8.1 Блок-схема основного модуля. 9 8.2 Блок-схема процедуры Full 10 8.3 Блок-схема процедуры PRINT_ARRAY.. 11 8.5 Блок-схема процедуры INPUT_ARRAY.. 12 9 Разработка программы на Ассемблере. 13 10 Трансляция и преобразование кода программы KP. 13 11 Реализация программы на Ассемблере. 15 12 Протокол тестирования программы на основе Таблицы тестов. 20 ЗАКЛЮЧЕНИЕ. 22 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.. 23
ВВЕДЕНИЕ
Модульное программирование — это такой способ программирования, при котором вся программа разбивается на группу компонентов, называемых модулями, причем каждый из них имеет свой контролируемый размер, четкое назначение и детально проработанный интерфейс с внешней средой. Единственная альтернатива модульности — монолитная программа, что, конечно, неудобно. Таким образом, наиболее интересный вопрос при изучении модульности — определение критерия разбиения на модули. Преимуществом указанной технологии является возможность разработки программ большого объема небольшими функционально законченными частями. При этом многие процедуры можно использовать в других местах программы или других программах, не прибегая к переписыванию частей программного кода. Дополнительные возможности предоставляет применение при разработке подпрограмм, написанных на различных языках программирования, как высокого, так и низкого уровней. При этом используются преимущества языка программирования, который дает наиболее эффективную реализацию алгоритма подпрограммы. Так, включение модулей, написанных на языке ассемблера, позволяет ускорить выполнение соответствующих частей программы и/или выполнить действия, программирование которых с использованием языков высокого уровня невозможно или затруднительно. С другой стороны, существует много библиотек подпрограмм на языках высокого уровня, которые с успехом можно использовать в ассемблерных программах.
Цель курсового проекта
Целью выполнения данного курсового проекта является: · Получение навыков разработки структурной организации ассемблерных программ. · Реализация модульных программ на основе аппарата процедур. · Изучение способов организации связи по данным. · Закрепление навыков программирования на машинно-ориентированном языке. · Разработка эффективных программ с использованием машинных ресурсов.
Математическая модель
Поэлементно работаем с массивами Xи Y: Просматриваем поэлементно массив X. 1)Заносим в аккумулятор (регистр AX) элемент X[0]. 2)Поскольку требуется найти наибольший по абсолютной величине элемент, сравниваем текущий элемент (начинаем с X[1]) с 0: 3)Если элемент больше нуля, то ничего не делаем, если меньше, то меняем его знак на противоположный. 4)Далее сравниваем текущий элемент с содержимым аккумулятора: 5)Если элемент по величине превосходит содержимое аккумулятора, то заносим элемент в аккумулятор (регистр AX). Переходим к следующему элементу. Повторяем пункты 2-5. Просматриваем так весь массив X. В результате в аккумуляторе будет находиться наибольший по абсолютной величине элемент массива Х. Действия для массива Y идентичны.
Таблица внешних спецификаций
Таблица тестов
Иерархия процедур
Рисунок 1 – Иерархия модулей программы
Назначение модулей Таблица 1 –Назначение модулей
Описание процедур
Процедура FULL: Процедура предназначена для вычисления наибольшего по абсолютной величине элемента массива.Для работы данной процедуры необходимы регистры Ах, Bхи Di, поэтому для сохранения их значений, перед действиями над регистрами, их значения помещаются в стек, а после завершения всех операций значения помещаются обратно. Входные данные: Cx – размер массива (в нашем случает 10 для Х и 12 для Y) Bx–смещение массива
Процедура PRINT: Процедура вывода числа. Входные данные: Ах – число, которое нужно вывести на экран
Процедура KEY: Процедура ввода числа. Выходные данные: Ах – число, которое вводится с клавиатуры
Процедура INPUT_ARRAY Процедура ввода массива. Входные данные: Cx –количество элементов массива Bx – адрес вводимого массива
Процедура вывода элементов массива на экран. Cx –количество элементов массива Bx – адрес выводимого массива
Блок схемы 8.1 Блок-схема основного модуля Рисунок 2 – Блок-схема главного модуля
8.2 Блок-схема процедурыFull Рисунок 3 – Блок-схема процедуры FULL 8.3Блок-схема процедуры PRINT_ARRAY
да нет
Рисунок 4 – Блок-схема процедуры PRINT_ARRAY
8.5 Блок-схема процедуры INPUT_ARRAY
да нет
Рисунок 5 – Блок-схема процедуры INPUT_ARRAY
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-06-09 lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |