Модульное программирование на Ассемблере

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

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 29.01.2016
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования

ИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Курсовая работа

ТЕМА

Модульное программирование на Ассемблере

по дисциплине

"Машинно-ориентированные языки"

1.024.00.00 ПЗ

Иркутск 2015

Исходные данные

Заданы два массива X [10] и Y [12], состоящих из целых чисел со знаком в формате слова. Выполнить над массивами действия согласно индивидуальному заданию.

Программа должна иметь модульную структуру. Выделить процедуры: ввода массива с консоли, вывода массива, вывода информации об авторе и условии решенной задачи. Выполнить вывод массивов на экран до обработки и после обработки согласно варианту.

Составить процедуру, которая уменьшает в два раза элементы с четными положительными значениями и заменяет нулевые элементы на - 10. Передача параметров через регистры:

в ВХ - смещение массива;

в СХ - число элементов в массиве.

Содержание

  • Исходные данные
  • Введение
  • 1. Цель курсового проекта
  • 2. Математическая модель
  • 3. Таблица внешних спецификаций
  • 4. Таблица тестов
  • 5. Иерархия процедур. Назначение модулей
  • 6. Описание процедур
  • 7. Блок схемы
  • 8.1 Блок-схема основной программы
  • 8.2 Блок-схема процедуры Full
  • 8.3 Блок-схема процедуры Proc_zam
  • 8.4 Блок-схема процедуры Write_array
  • 8.5 Блок-схема процедуры Input_array
  • 8. Реализация программы на Ассемблере
  • 9. Разработка программы на Ассемблере
  • 10. Трансляция и преобразование кода программы KP
  • 11. Протокол тестирования программы на основе Таблицы тестов
  • Заключение
  • Список использованных источников

Введение

Модульное программирование - это такой способ программирования, при котором вся программа разбивается на группу компонентов, называемых модулями, причем каждый из них имеет свой контролируемый размер, четкое назначение и детально проработанный интерфейс с внешней средой. Единственная альтернатива модульности - монолитная программа, что, конечно, неудобно. Таким образом, наиболее интересный вопрос при изучении модульности - определение критерия разбиения на модули.

Преимуществом указанной технологии является возможность разработки программ большого объема небольшими функционально законченными частями. При этом многие процедуры можно использовать в других местах программы или других программах, не прибегая к переписыванию частей программного кода. Дополнительные возможности предоставляет применение при разработке подпрограмм, написанных на различных языках программирования, как высокого, так и низкого уровней. При этом используются преимущества языка программирования, который дает наиболее эффективную реализацию алгоритма подпрограммы. Так, включение модулей, написанных на языке ассемблера, позволяет ускорить выполнение соответствующих частей программы и/или выполнить действия, программирование которых с использованием языков высокого уровня невозможно или затруднительно. С другой стороны, существует много библиотек подпрограмм на языках высокого уровня, которые с успехом можно использовать в ассемблерных программах.

модульное программирование модуль процедура

1. Цель курсового проекта

Целью выполнения данного курсового проекта является:

· Получение навыков разработки структурной организации ассемблерных программ.

· Реализация модульных программ на основе аппарата процедур.

· Изучение способов организации связи по данным.

· Закрепление навыков программирования на машинно-ориентированном языке.

· Разработка эффективных программ с использованием машинных ресурсов.

2. Математическая модель

Поэлементно работаем с массивами X и Y:

В случае если элемент X [0.10] =0, то заменяем X [0.10] на число - 10.

В случае если элемент Y [0.12] =0, то заменяем Y [0.12] на число - 10

В случае если элемент X [0.10] >0, то делим значение на два X [0.10] = X [0.10] /2

В случае если элемент Y [0.12] >0, то делим значение на два Y [0.12] = Y [0.12] /2

При целочисленном делении числа на два, остаток от деления (регистр DX) равно 0.

3. Таблица внешних спецификаций

Имя

Назначение

Тип

ОДЗ

1

X

Массив X (10)

DW

[-32768…32767]

2

Y

Массив Y (12)

DW

[-32768…32767]

4. Таблица тестов

Вводимые данные

Результат

Комментарии

1

Х [10] = [5 0 5 99 0 40 0 0 7 7]

Y [12] = [13 6 44 4 8 33 20 53 66 17 0 96]

Х [10] = [5 - 10 5 99 - 10 20 - 10 - 10 7 7]

Y [12] = [13 3 22 2 4 33 10 53 33 17 - 10 48]

В Х четыре элемента равных 0 были заменены на - 10

В массиве Y семь положительных четных элементов были разделены на 2, один элемент равный 0 заменен на - 10

2

X [10] = [0 0 0 0 0 0 0 0 0 0]

Y [12] = [-11 - 8 - 2 - 4 - 10 - 22 - 25 - 13 - 14 - 47 - 28 - 49]

X [10] = [-10 - 10 - 10 - 10 - 10 - 10 - 10 - 10 - 10 - 10]

Y [12] = [-11 - 8 - 2 - 4 - 10 - 22 - 25 - 13 - 14 - 47 - 28 - 49]

В массиве Х все элементы равные 0 было заменены на число - 10

В массиве Y элементы не были изменены, т.к. они все меньше 0, либо нечетные и меньше 0

3

X [10] = [10 20 30 40 50 60 70 80 90 100]

Y [12] = [-10 - 20 - 30 - 40 - 50 - 60 - 70 - 80 - 90 - 100 - 110 - 120]

X [10] = [5 10 15 20 25 30 35 40 45 50]

Y [12] = [-10 - 20 - 30 - 40 - 50 - 60 - 70 - 80 - 90 - 100 - 110 - 120]

В массиве Х все четные положительные элементы были разделены на 2

В массиве Y четные элементы не были заменены, т.к. они все меньше 0

4

X [10] = [-3 - 5 - 7 - 9 - 11 - 13 - 15 - 177 - 1999 - 21]

Y [12] = [3 5 11 23 27 25 31 47 19 13 49 21]

X [10] = [-3 - 5 - 7 - 9 - 11 - 13 - 15 - 177 - 1999 - 21]

Y [12] = [3 5 11 23 27 25 31 47 19 13 49 21]

В массиве Х ни один элемент не был изменен, т.к. они все нечетные и меньше 0

В массиве Y ни один элемент не был изменен, т.к. все элементы нечетные

5. Иерархия процедур. Назначение модулей

Название

Тип

Назначение

1

Prog

Главная программа

Основной модуль программы

2

about

Процедура

Процедура вывода информации о задании и студенте

3

Full

Процедура

Процедура обработки массива

4

Write_int

Процедура

Процедура вывода числа на экран

5

Input_array

Процедура

Процедура ввода массива с клавиатуры

6

Write_array

Процедура

Процедура вывода на экран массива

7

Read_int

Процедура

Процедура ввода числа с клавиатуры

8

Proc_zam

Процедура

Процедура уменьшает в два раза элементы с четными положительными значениями и заменяет нулевые элементы на - 10

6. Описание процедур

Процедура Full:

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

Входящие данные:

Cx - размер массива (в нашем случает 10 для Х и 12 для Y)

Si - дублирующий размер массива, для корректных повторных работ с массивами

Bx - прямой адрес массива

Процедура write_int:

Процедура вывода числа

Входные данные:

Ах - число, которое нужно вывести на экран

Процедура read_int:

Процедура ввода числа

Выходные данные:

Ах - число, которое вводится с клавиатуры

Процедура Input_array

Процедура ввода массива.

Входные данные:

Cx - количество элементов массива

Bx - адрес вводимого массива

Процедура Write_array

Вывод элементов массива на экран Входные данные:

Cx - количество элементов массива

Bx - адрес выводимого массива

Процедура Proc_Zam

Процедура сравнения элементов массива с поставленными условиями уменьшает в два раза элементы с четными положительными значениями и заменяет нулевые элементы на - 10. Для работы данной процедуры необходимы регистры АХ и ВХ, поэтому для сохранения их значений, перед действиями над регистрами, их значения помещаются в стек, а после завершения всех операций значения помещаются обратно.

Входные данные:

Di - адрес начального элемента обработки

Сx - количество элементов массива

Bx - Адрес обрабатываемого массива

7. Блок схемы

8.1 Блок-схема основной программы

8.2 Блок-схема процедуры Full

8.3 Блок-схема процедуры Proc_zam

8.4 Блок-схема процедуры Write_array

8.5 Блок-схема процедуры Input_array

8. Реализация программы на Ассемблере

Рисунок 1 - Листинг программы, начало

Рисунок 2 - Листинг программы, продолжение

Рисунок 3 - Листинг программы, окончание

9. Разработка программы на Ассемблере

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

Программа, написанная на Ассемблере, представляет собой исходный текст, для обработки которого будем использовать известный транслятор Turbo Assembler (TASM).

Разработка программы на Ассемблере состоит из следующих этапов:

1) Составление алгоритма в виде блок-схемы или структурного описания,

2) Ввод в ЭВМ текста исходной программы <name>. asm с помощью редактора текстов. Имя name может быть произвольным, а расширение. asm - обязательно,

3) Перевод (трансляция или ассемблирование) исходной программы в машинные коды с помощью транслятора TASM. EXE. На этом этапе получается промежуточный продукт <name>. obj (объектный код). Выявленные при этом синтаксические и орфографические ошибки исправляются повтором пп.2 и 3,4) Преобразование с помощью программы TLINK. EXE объектного кода <name>. obj в исполняемый код <name>. EXE.

5) Выполнение программы и ее отладка, если встретились логические ошибки.

10. Трансляция и преобразование кода программы KP

Исходный код программы пишется в текстовом редакторе, который может выводить в файл чистый текст, без управляющих символов. Файл должен иметь расширение". asm".

Трансляция исходного кода программы состоит в преобразовании предложений исходного языка в коды машинных команд и выполняется с помощью транслятора на языке ассемблера (т.е. с помощью программы ассемблера). В результате трансляции образуется объектный файл с расширением". obj". Объектные файл представляет собой блоки машинного кода и данных, с неопределёнными адресами ссылок на данные и процедуры в других объектных файлах, а также список своих процедур и данных.

Рисунок 4 - Трансляция на TASM

Рисунок 5 - Преобразование в. obj на TASM

Рисунок 6 - Запуск исполняемого файла. exe на TASM

Компоновка объектного файла выполняется с помощью программы компоновщика (редактора связей). Компоновщик собирает код и данные объектного модуля в итоговую программу. Файл с программой компоновщика корпорации Borland имеет имя "TLINK. EXE".

11. Протокол тестирования программы на основе Таблицы тестов

Рисунок 7 - Тест №1. Тестирование элементов массива X

Рисунок 8 - Тест №1. Тестирование элементов массива Y

Рисунок 9 - Тест №2. Тестирование элементов массива X

Рисунок 10 - Тест №2. Тестирование элементов массива Y

Рисунок 11 - Тест №3. Тестирование элементов массива X

Рисунок 12 - Тест №3. Тестирование элементов массива Y

Рисунок 13 - Тест №4. Тестирование элементов массива X

Рисунок 14 - Тест №4. Тестирование элементов массива Y

Заключение

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

Курсовой проект выполнен полностью, программа отлажена и протестирована.

В процессе работы над проектом получены навыки модульного программирования на языке ассемблера, изучено различие между процедурами и макросами, использованы знание типовых алгоритмов из курса "Программирование на Языках Высокого Уровня". Составлена процедура, которая уменьшает в два раза элементы с четными положительными значениями и заменяет нулевые элементы на - 10.

Список использованных источников

1. П. Абель Язык ассемблера для IBMPC и программирования.М. "Высшая школа", 1992, 447с.

2. Гук Михаил Процессоры Intel: от 8086 до Pentium И: Архитектура. Интерфейс. Программирование / М. Гук. - СПб. и др.: Питер, 1998. - 220с.

3. Пирогов В. Ассемблер в примерах. - Спб: БХВ, 2005. - 416 с.

4. Пилыциков В.Н. Программирование на языке ассемблера IBMPC. - М.: "Диалог-МИФИ", 1999. - 288 с.

5. Финогенов К.Г. Основы языка Ассемблера. - М.: Радио и связь, 2000.

6. Юров В. Assembler: Спец. справ. / В. Юров. - СПб. и др.: Питер, 2000. - 489с.: ил.

7. Юров В. Assembler. Практикум. - СПб.: Питер, 2001.

8. Юров В., Хорошенко В. Assembler - Учебный курс. - СПб.: Питер, 2000.

Размещено на Allbest.ru


Подобные документы

  • Создание программы для обработки информации об объектах предметной области "Бытовая техника" в среде визуального программирования C++. Иерархия родственных классов. Описание логической структуры программы. Реализация файлового ввода/вывода данных.

    курсовая работа [711,4 K], добавлен 27.07.2014

  • Разработка и реализация типовых алгоритмов обработки одномерных массивов на языке Delphi. Максимальный и минимальный элемент массива. Значение и расположение элементов массива. Элементы массива, находящиеся перед максимальным или минимальным элементом.

    лабораторная работа [12,8 K], добавлен 02.12.2014

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

    курсовая работа [336,2 K], добавлен 27.06.2015

  • Общая характеристика организации массива в виде двоичного дерева. Особенности линейного и двоичного поиска заданного элемента массива. Методика упорядочения массива методом сортировки деревом. Инструкции и текст программы для нечисленной обработки данных.

    курсовая работа [242,3 K], добавлен 12.11.2010

  • Структура программы в Турбо Паскале и определение переменной в ней. Понятие идентификатора и его основные ограничения. Операторы присваивания в языке программирования. Процедура ввода-вывода информации. Способы описания массива, обработка его элементов.

    контрольная работа [134,5 K], добавлен 28.09.2012

  • Теоретические и практические аспекты решения прикладных задач с применением функций и процедур структурного (модульного) программирования. Особенности разработки схемы алгоритма и программы для вычисления массива z на языке Turbo Pascal 7.0, их описание.

    курсовая работа [241,7 K], добавлен 11.12.2009

  • Составление математической модели для определения местоположения точки относительно многоугольника. Оформление процедуры расчета расстояния, выбора точек из массива, сортировки массива и вывода результатов в программе в форме функций пользователя.

    курсовая работа [16,6 K], добавлен 06.08.2013

  • Характеристика модульного программирования: процедуры и функции, модули и их структура, открытые массивы и строки, нетипизированные параметры. Способы передачи параметров в подпрограммы в Borland Pascal. Объектно-ориентированное программирование.

    контрольная работа [28,9 K], добавлен 28.04.2009

  • Понятие двумерного массива целых чисел. Создание динамического массива из элементов, расположенных в четырех столбах данного массива и имеющих нечетное значение. Сохранение результатов в файл и выведение их на экран. Использование ввода с файла.

    курсовая работа [44,0 K], добавлен 09.11.2014

  • Функции формирования массива времени. Формирование массива входного напряжения, массива выходного напряжения. Функция вывода таблицы, расчета заданной точности, вывода титульного листа. Запись в файл массива времени. Блок–схема и текст программы.

    курсовая работа [155,6 K], добавлен 22.04.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.