Последовательность этапов разработки программы на языке ЭВМ упрощенно можно представить следующим образом: разработка алгоритма решения задачи, разработка программы с символическими адресами, распределение памяти для программы и данных, получение программы с действительными адресами, ввод программы в ОП, отладка программы.
Обычно область размещения данных в ОП находится после программы, возможен вариант расположения данных перед программой. В первом случае для определения начального адреса области данных необходимо знать длину программы, во втором – начальный адрес программы может быть определен, если известно количество ячеек ОП, требуемое для размещения данных. Это обстоятельство обусловливает необходимость разработки программы с символическими адресами. Кроме того, в процессе отладки программы может возникнуть необходимость включения в неё дополнительных команд или размещения дополнительных данных. В этом случае изменения удобно вносить в программу с символическими адресами. Однако распределение памяти и получение программы с действительными адресами придется выполнять заново.
|
|
Использование относительной адресации существенно упрощает программирование, так как дает возможность разрабатывать программу с действительными адресами и распределять память для данных, предполагая, что программа и данные размещаются в ОП, начиная с одного и того же адреса. (обычно 00). Необходимость разработки программы с символическими адресами в этом случае отпадает. Понятно, что во время выполнения программы данные и команды программы не могут занимать одну и ту же область памяти. Существуют два пути решения этого вопроса: создание перемещаемой области данных, разработка перемещаемой программы.
Для создания перемещаемой области данных необходимо во всех арифметических и посылочных командах программы вместо прямой адресации использовать относительную. Это обеспечивает возможность смещения области расположения данных путем задания базового адреса. Следует отметить, что такой путь разработки программ для рассматриваемой ЭВМ возможен в случае отсутствия необходимости использования косвенной адресации в арифметических и посылочных командах.
Для получения перемещаемой программы необходимо использовать относительную адресацию в командах передачи управления. Это обеспечивает возможность записывать программу в ОП, начиная с любого адреса. Настройка программы по месту расположения в памяти выполняется заданием базового адреса. Такой подход оставляет возможность использования косвенной адресации в арифметических и посылочных командах.
|
|
Приведенные далее примеры иллюстрируют разработку программы без использования относительной адресации и с её использованием для создания перемещаемой области данных.
Пример 2.5. Разработка программы для вычисления значения функции
Граф-схема алгоритма решения задачи показана на рис 2.1.
Заметим, что допустимый диапазон представления чисел в рассматриваемой ЭВМ ограничивает при вычислении заданной функции возможные значения аргумента снизу и сверху: -99≤х≥104.
I
Рис. 2.1. Граф-схема решения задачи
Таблица 2.2
Программа с символическими адресами
Адрес | Символическая команда | Комментарий | ||
КОП | ТА | А | ||
А | ВВ | - | - | АК:=х |
А+1 | ЗП | П | Х | ОП[Х]: =х |
А+2 | ВЫЧ | Н | АК:=х-5 | |
А+3 | УПЗН | П | А+7 | Перейти по адресу А+7, если х-5<0 (x<5) |
А+4 | ЗП | П | R | ОП [R]:= x-5 |
А+5 | УМН | П | R | АК:=(х-5)2 |
А+6 | БП | П | А+13 | Перейти по адресу А+13 |
А+7 | ЧТ | П | Х | АК:=х |
А+8 | УМН | Н | АК:=10х | |
А+9 | ЗП | П | R | ОП [R]:= 10x |
А+10 | ЧТ | П | Х | АК:=х |
А+11 | УМН | П | Х | АК:=х2 |
А+12 | СЛ | П | R | АК:=х2+1 0х |
А+13 | ВЫВ | - | - | РВЫВ:=у |
А+14 | ОСТ | - | - | ОСТАНОВ |
Х | х | |||
R | х-5, 10x |
Распределение памяти: А= 00
X=15
R=16
Таблица 2.3
Программа с действительными адресами:
Адрес | Символическая команда | Код команды | Комментарий | ||
КОП | ТА | А | |||
ВВ | - | - | АК:=х | ||
ЗП | П | ОП [15]:= x | |||
ВЫЧ | Н | АК:=х-5 | |||
УПЗН | П | Перейти по адресу 07, если х-5 <0 (x<5) | |||
ЗП | П | ОП [16]:=x-5 | |||
УМН | П | АК:= (х-5)2 | |||
БП | П | Перейти по адресу 13 | |||
ЧТ | П | АК:=х | |||
УМН | Н | АК:= 10х | |||
ЗП | П | ОП [16]: = 10х | |||
ЧТ | П | АК:=х | |||
УМН | П | АК:=х2 | |||
СЛ | П | АК:=х2+10х | |||
ВЫВ | - | - | РВЫВ:=у | ||
ОСТ | - | - | ОСТАНОВ | ||
х | |||||
х-5, 10х |
Пример 2.6. Программирование алгоритма вычисления значения функции (см.рис.2.1) с использованием относительной адресации для создания перемещаемой области данных.
Таблица 2.4
Программа с относительными и непосредственными адресами операндов:
Адрес | Символическая команда | Код команды | Комментарий | ||
КОП | ТА | А | |||
ВВ | - | - | АК:=х | ||
ЗП | О | ОП[РБА+00]:=х | |||
ВЫЧ | Н | АК:=х-5 | |||
УПЗН | П | Перейти по адресу 07, если х-5<0 (х<5) | |||
ЗП | О | ОП [РБА+01]:=х-5 | |||
УМН | О | АК:=(х-5)2 | |||
БП | П | Перейти по адресу 13 | |||
ЧТ | О | АК:=х | |||
УМН | Н | АК:=10х | |||
ЗП | О | ОП[РБА+01]:=10х | |||
ЧТ | О | АК:=х | |||
УМН | О | АК:=х2 | |||
СЛ | О | АК:=х2+1Øх | |||
ВЫВ | - | - | РВЫВ:=у | ||
ОСТ | - | - | ОСТАНОВ |
Размещение данных в ОП:
Относительный адрес | Данные |
х | |
х-5, 10х |
Для того, чтобы область данных располагалась в ОП, после программы, базовый адрес должен быть равен 15.
Отладка программы – это процесс нахождения и устранения в ней ошибок. Осуществляя проверку результатов выполнения программы в режиме АВТ, необходимо убедиться в том, что:
1) Остановка происходит по команде ОСТ, предусмотренной в программе;
2) Верны результаты вычислений для различных наборов исходных данных, обеспечивающих выполнение программы в соответствии с возможными путями граф-схемы алгоритма.
Если выполнение программы в режиме АВТ не приводит к получению верных результатов, то, прослеживая выполнение программы в режиме ЦИКЛ, необходимо найти команду, являющуюся причиной ошибки и исправить ёё.
ЗАДАНИЕ
1. Разработать программу вычисления и вывода значения функции:
для вводимого значения аргумента x. Использовать в программе относительную адресацию для создания перемещаемой области данных. Функции и допустимые пределы изменения аргумента приведены в табл. 2.5, варианты заданий – в табл. 2.6.
|
|
2. Записать программу в ОП ЭВМ, для этого:
2.1. Записать в РА адрес первой команды программы.
2.2. Записать в РС команду, которая должна размещаться в ОП по адресу, содержащемуся в РА.
2.3. Внести директиву ЗПИ.
2.4. Повторять выполнение п.п. 2.2, 2.3 до тех пор, пока в ОП не будет записана вся программа.
3. Отладить программу, для этого:
3.1. Записать в РВВ значение аргумента .
3.2. Записать в РБА базовый адрес.
3.3. Установить режим АВТ.
3.4. Записать в СЧАК стартовый адрес программы.
3.5. Проверить правильность выполнения программы в режиме АВТ (правильность результата и адреса останова), в случае наличия ошибки выполнить п.п. 3.6-3.8.
3.6. Установить режим ЦИКЛ.
3.7. Записать в СЧАК стартовый адрес программы.
3.8. Наблюдая выполнение программы в режиме ЦИКЛ, найти команду, являющуюся причиной ошибки; исправит её; выполнить п.п. 3.3-3.5.
3.9. Записать в РВВ значение аргумента х<а; выполнить п.п. 3.3-3.5.
4. Для выбранного значения аргумента х, наблюдая выполнение отлаженной программы в режиме ЦИКЛ, записать в таблицу (см. приложение 2) содержимое регистров ЭВМ перед выполнением каждой команды.
Таблица 2.5
Функции и допустимые пределы изменения аргумента
k | fk(x) | xm1n | xmax | k | fk (x) | xm1n | xmax |
-50 | -15 | -50 | |||||
-20 |
Таблица 2.6
Варианты задания
№ варианта | i | j | a | № варианта | i | j | a |
-20 | |||||||
Содержание отчета
1. Формулировка варианта задания (см. п.1 «Задания», табл. 2.5, 2.6).
2. Граф-схема алгоритма решения задачи.
3. Программа.
4. Размещение данных в ОП, значение базового адреса.
5. Последовательность состояний регистров ЭВМ при выполнении программы в режиме ЦИКЛ (см. приложение 2) для одного значения аргумента.
6. Результаты выполнения программы для пяти значений аргумента, выбранных самостоятельно.
|
|