№
|
Название
|
Тип
|
Назначение
|
1
|
Prog
|
Главная
программа
|
Основной модуль
программы
|
2
|
about
|
Процедура
|
Процедура
вывода информации о задании и студенте
|
3
|
Full
|
Процедура
|
Процедура
обработки массива
|
4
|
Write_int
|
Процедура
|
Процедура
вывода числа на экран
|
5
|
Input_array
|
Процедура
|
Процедура ввода
массива с клавиатуры
|
6
|
Write_array
|
Процедура
|
Процедура
вывода на экран массива
|
7
|
Read_int
|
Процедура
|
Процедура ввода
числа с клавиатуры
|
8
|
Proc_zam
|
Процедура
|
Процедура
уменьшает в два раза элементы с четными положительными значениями и заменяет
нулевые элементы на - 10
|
6. Описание
процедур
Процедура Full:
Процедура предназначена для сокращения основного модуля
программы. Так как дано два массива и действия для них идентичны (Ввод, вывод,
замена значений в массиве), то будет правильным составить для них процедуру
повторяющихся действий.
Входящие данные:- размер массива (в нашем случает 10 для Х и
12 для Y)-
дублирующий размер массива, для корректных повторных работ с массивами- прямой
адрес массива
Процедура write_int:
Процедура вывода числа
Входные данные:
Ах - число, которое нужно вывести на экран
Процедура read_int:
Процедура ввода числа
Выходные данные:
Ах - число, которое вводится с клавиатуры
Процедура Input_array
Процедура ввода массива.
Входные данные:
Cx - количество элементов массива
Bx - адрес вводимого массива
Процедура Write_array
Вывод элементов массива на экран Входные данные:
Cx - количество элементов массива
Процедура Proc_Zam
Процедура сравнения элементов массива с поставленными
условиями уменьшает в два раза элементы с четными положительными значениями и
заменяет нулевые элементы на - 10. Для работы данной процедуры необходимы
регистры АХ и ВХ, поэтому для сохранения их значений, перед действиями над
регистрами, их значения помещаются в стек, а после завершения всех операций
значения помещаются обратно.
Входные данные:- адрес начального элемента обработки
С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).
Разработка программы на Ассемблере состоит из следующих этапов:
) Составление алгоритма в виде блок-схемы или структурного
описания,
) Ввод в ЭВМ текста исходной программы <name>. asm с помощью редактора
текстов. Имя name может быть произвольным, а расширение. asm - обязательно,
) Перевод (трансляция или ассемблирование) исходной
программы в машинные коды с помощью транслятора TASM. EXE. На этом этапе
получается промежуточный продукт <name>. obj (объектный код).
Выявленные при этом синтаксические и орфографические ошибки исправляются
повтором пп.2 и 3,4) Преобразование с помощью программы TLINK. EXE объектного
кода <name>. obj в исполняемый код <name>. EXE.
) Выполнение программы и ее отладка, если встретились
логические ошибки.
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с.
. Пирогов
В. Ассемблер в примерах. - Спб: БХВ, 2005. - 416 с.
. Пилыциков
В.Н. Программирование на языке ассемблера IBMPC. - М.: "Диалог-МИФИ", 1999. - 288 с.
. Финогенов
К.Г. Основы языка Ассемблера. - М.: Радио и связь, 2000.
. Юров
В. Assembler: Спец. справ. / В. Юров. - СПб. и
др.: Питер, 2000. - 489с.: ил.
. Юров
В. Assembler. Практикум. - СПб.: Питер, 2001.
. Юров
В., Хорошенко В. Assembler -
Учебный курс. - СПб.: Питер, 2000.