Главная

Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






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


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

 

Пояснительная записка
к курсовому проекту

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

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

 

1.025.00.00 ПЗ

Разработал студент группыЭВМз-10-1     Шишкин М. Ю.
подпись   И. О. Фамилия

 

      Зинченко В. А.
подпись   И. О. Фамилия

 

Нормоконтроль     Л.Л. Куликова
подпись   И. О. Фамилия

 

Курсовойпроектзащищен с оценкой ___________ ______________

 

 

Иркутск 2015

 

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

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

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

ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра вычислительной техники

 

ЗАДАНИЕ

к курсовому проекту

по дисциплине «Машинно-ориентированные языки»

 

Студенту гр. Шишкин Максим Юрьевич, гр. ЭВМз-10-1  
Студенту гр.   Зинченко Валерий Александрович, гр. ЭВМз-10-1

 

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

 

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

Вариант 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 идентичны.

 


 

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

 

Имя Назначение Тип ОДЗ
X Массив X(10) DW [-32768…32767]
Y Массив Y(12) DW [-32768…32767]

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

 

Вводимые данные Результат Комментарии
Х[10]= [11 34 56 83 37 52 33 26 10 3] Y[12]=[2 43 63 6 9 12 5 0 1 20 4 19] max Х = 83 max Y = 63 В массиве Х наибольший по абсолютной величине элемент массива = 83 В массиве Y наибольший по абсолютной величине элемент массива = 63
Х[10]= [0 0 0 0 0 0 0 0 0 0] Y[12]=[-4 -7 -38 -104 -1 -15 -100 -3 -55 -2 -3 -70] max Х = 0 max Y = 104 В массиве Х наибольший по абсолютной величине элемент массива = 0 В массиве Y наибольший по абсолютной величине элемент массива = 104
Ввод количества элементов массива X = -5 Введенное значение выходит за допустимый предел! Повторите ввод! Количество символов должно бытьбольше10
X[10]=[пустой ввод] Y[12]=[пустой ввод] X[10]=[0 0 0 0 0] Y[12]=[0 0 0] В массиве Х наибольший по абсолютной величине элемент массива = 0 В массивеY наибольший по абсолютной величине элемент массива = 0

 

Иерархия процедур

 

Рисунок 1 – Иерархия модулей программы

 

Назначение модулей

Таблица 1 –Назначение модулей

Название Тип Назначение
Start Главная программа Основной модуль программы
PRINT_ABOUT Процедура Процедура вывода информации о задании и студенте
FULL Процедура Процедуранахождения максимального по абсолютной величине элемента массива
PRINT Процедура Процедура вывода числа на экран
KEY Процедура Процедура ввода числа с клавиатуры
INPUT_ARRAY Процедура Процедура ввода массива с клавиатуры
PRINT_ARRAY Процедура Процедура вывода на экран массива

 


 

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

 

Процедура FULL:

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

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

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

Bx–смещение массива

 

Процедура PRINT:

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

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

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

 

Процедура KEY:

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

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

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

 

Процедура INPUT_ARRAY

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

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

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

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


Процедура WRITE_ARRAY

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

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

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

 

 

 


Блок схемы

8.1 Блок-схема основного модуля

Рисунок 2 – Блок-схема главного модуля

 

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

Рисунок 3 – Блок-схема процедуры FULL

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

 

Конец
Начало
Cx=Cx, 0, -1
Ввод ax, [bx][di]
PRINT
Di=di+2 Cx:=cx-1

 


да нет

 

 

 

 


Рисунок 4 – Блок-схема процедуры PRINT_ARRAY

 

 

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

Начало
Cx= 0
KEY
Ввод [bx][di], ax
сх=сх-1;Di=di+2  

 


 

да

нет

Введите элемент массива =
Конец
Массив введен

 

 


Рисунок 5 – Блок-схема процедуры INPUT_ARRAY

 

ЗАКЛЮЧЕНИЕ

 

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

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

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

 

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

 

Пояснительная записка
к курсовому проекту

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

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

 

1.025.00.00 ПЗ

Разработал студент группыЭВМз-10-1     Шишкин М. Ю.
подпись   И. О. Фамилия

 

      Зинченко В. А.
подпись   И. О. Фамилия

 

Нормоконтроль     Л.Л. Куликова
подпись   И. О. Фамилия

 

Курсовойпроектзащищен с оценкой ___________ ______________

 

 

Иркутск 2015

 

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

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

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

ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра вычислительной техники

 

ЗАДАНИЕ

к курсовому проекту

по дисциплине «Машинно-ориентированные языки»

 

Студенту гр. Шишкин Максим Юрьевич, гр. ЭВМз-10-1  
Студенту гр.   Зинченко Валерий Александрович, гр. ЭВМз-10-1

 

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

 

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

Вариант 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 идентичны.

 


 

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

 

Имя Назначение Тип ОДЗ
X Массив X(10) DW [-32768…32767]
Y Массив Y(12) DW [-32768…32767]

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

 

Вводимые данные Результат Комментарии
Х[10]= [11 34 56 83 37 52 33 26 10 3] Y[12]=[2 43 63 6 9 12 5 0 1 20 4 19] max Х = 83 max Y = 63 В массиве Х наибольший по абсолютной величине элемент массива = 83 В массиве Y наибольший по абсолютной величине элемент массива = 63
Х[10]= [0 0 0 0 0 0 0 0 0 0] Y[12]=[-4 -7 -38 -104 -1 -15 -100 -3 -55 -2 -3 -70] max Х = 0 max Y = 104 В массиве Х наибольший по абсолютной величине элемент массива = 0 В массиве Y наибольший по абсолютной величине элемент массива = 104
Ввод количества элементов массива X = -5 Введенное значение выходит за допустимый предел! Повторите ввод! Количество символов должно бытьбольше10
X[10]=[пустой ввод] Y[12]=[пустой ввод] X[10]=[0 0 0 0 0] Y[12]=[0 0 0] В массиве Х наибольший по абсолютной величине элемент массива = 0 В массивеY наибольший по абсолютной величине элемент массива = 0

 

Иерархия процедур

 

Рисунок 1 – Иерархия модулей программы

 

Назначение модулей

Таблица 1 –Назначение модулей

Название Тип Назначение
Start Главная программа Основной модуль программы
PRINT_ABOUT Процедура Процедура вывода информации о задании и студенте
FULL Процедура Процедуранахождения максимального по абсолютной величине элемента массива
PRINT Процедура Процедура вывода числа на экран
KEY Процедура Процедура ввода числа с клавиатуры
INPUT_ARRAY Процедура Процедура ввода массива с клавиатуры
PRINT_ARRAY Процедура Процедура вывода на экран массива

 


 

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

 

Процедура FULL:

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

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

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

Bx–смещение массива

 

Процедура PRINT:

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

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

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

 

Процедура KEY:

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

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

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

 

Процедура INPUT_ARRAY

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

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

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

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


Процедура WRITE_ARRAY

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

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

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

 

 

 


Блок схемы

8.1 Блок-схема основного модуля

Рисунок 2 – Блок-схема главного модуля

 

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

Рисунок 3 – Блок-схема процедуры FULL

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

 

Конец
Начало
Cx=Cx, 0, -1
Ввод ax, [bx][di]
PRINT
Di=di+2 Cx:=cx-1

 


да нет

 

 

 

 


Рисунок 4 – Блок-схема процедуры PRINT_ARRAY

 

 

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

Начало
Cx= 0
KEY
Ввод [bx][di], ax
сх=сх-1;Di=di+2  

 


 

да

нет

Введите элемент массива =
Конец
Массив введен

 

 


Рисунок 5 – Блок-схема процедуры INPUT_ARRAY

 



Последнее изменение этой страницы: 2016-06-09

headinsider.info. Все права принадлежат авторам данных материалов.