Автор: Пользователь скрыл имя, 21 Ноября 2011 в 17:38, реферат
В последней статье этого цикла ми вновь вернемся к вопросам программирования микро-ЭВМ. Из описания работы микро-ЭВМ следует, что практически все функции, которые она выполняет, полностью определяются программами, записанными в ее память. При этом могут быть использованы как готовые программы, разработанные кем-то ранее, так и программы, разработанные самостоятельно.
Если при вводе кодов программы были допущены ошибки, то с помощью директивы "М" их необходимо устранить.
Теперь по директиве "J" запустим программу:
>J 100 (ВК).
Набирая на клавиатуре
любые символы, не соответствующие
паролю, убеждаемся, что они отображаются
на экране, причем после каждого
из них выводится также и
Теперь попытаемся выяснить причину ошибочной работы программы. Для этого подготовим к запуску нашу программу в отладочном режиме, задав два адреса останова и число проходов через второй из них. Возможность одновременного задания сразу двух адресов останова позволяет при любых исходных данных приостанавливать выполнение отлаживаемой программы после команд условной передачи управления (т. е. в местах "разветвления" программы). Если бы при этом использовался только один адрес останова, то для гарантированной приостановки работы программы после команд условной передачи управления было бы необходимо заранее знать, будет или нет выполнено условие передачи управления. Другими словами, знать, по какому пути продолжится выполнение программы после "разветвления", что далеко не всегда возможно. В нашем случае мы будем контролировать содержимое внутренних регистров микропроцессора D и HL после выполнения команды JNZ ВВОД. При этом в качестве первого и второго адресов останова установим адреса следующих за ней команд при отсутствии условия передачи управления и при его наличии соответственно.
Число проходов через второй адрес останова установим равным 4 - на единицу больше числа символов в пароле. Адрес запуска программы зададим равным 100Н, т. е. программу запускаем по ее начальному адресу. При прохождении программы через адрес останова будем следить только за содержимым внутренних регистров микропроцессора. Теперь введем следующие директивы и параметры:
Р118,108,4(ВК)
START -100(ВК)
DIR-(BK)
Набираем символы пароля и после ввода каждого из них просматриваем содержимое внутренних регистров микропроцессора. Учтем, что содержимое регистров В и Е может быть произвольным, так как они не использованы в программе.
Замечаем, что содержимое регистровой пары HL при вводе каждого нового символа увеличивается на 1, что полностью соответствует логике работы программы. Однако содержимое регистра D остается неизменным. Анализ программы позволяет выявить ошибку - вместо команды DCR D в программе ошибочно используется команда DCX D, уменьшающая каждый раз на 1 не содержимое регистра D, а содержимое регистровой пары DE, что противоречит нашему алгоритму. Выяснив причину ошибки, нажимаем на кнопку "СБР" микро-ЭВМ и тем самым передаем управление монитору. Теперь исправим содержимое ячейки 0114Н на код команды DCR D, равный 15Н.
Отлаженную таким образом программу запускаем по директиве "J" с начального адреса и убеждаемся в том, что она работает правильно.
Описанная выше программа Монитора является одной из системных программ микро-ЭВМ. Рассмотрим теперь кратко другие компоненты системного программного обеспечения, которое может быть использовано в нашей микро-ЭВМ.
Программа "редактор текстовой информации" позволяет ввести в ОЗУ микро-ЭВМ с клавиатуры дисплея любой текст, например текст программы. просмотреть его на экране дисплея, удалить или вставить в текст любой символ или строку символов. Кроме того, обычно имеется возможность автоматического поиска и замены заданной последовательности символов в тексте. После того. как текст подготовлен и исправлен, он может быть переписан из ОЗУ на магнитную ленту, а в дальнейшем считан с магнитной ленты в ОЗУ микро-ЭВМ для внесения новых исправлений.
Записанный на ленту текст программы на языке ассемблер является входной информацией для работы программы-транслятора (называемой также ассемблером) при подготовке машинных кодов программы. Полученная в результате работы ассемблера программа в машинных колах может быть записана на магнитную ленту и в дальнейшем загружена в ОЗУ для отладки или запуска в работу. Применение ассемблера значительно облегчает разработку программ. Но в то же время разработка программ на ассемблере значительно более трудоемка, чем на языках высокого уровня.
Наиболее распространенным языком программирования высокого уровня для микро-ЭВМ является язык БЭЙСИК. Это объясняется как легкостью изучения и использования самого языка, так и простотой его реализации для микро-ЭВМ. Для того чтобы писать или использовать программы на этом языке В составе микро-ЭВМ, необходимо иметь транслятор или интерпретатор с языка БЭЙСИК. Так же как и при использовании языка ассемблер, транслятор с языка БЭЙСИК формирует в результате своей работы программу в машинных кодах микропроцессора, которая после загрузки в память может быть непосредственно исполнена.
Однако чаще
для языка БЭЙСИК вместо транслятора
используют интерпретатор. В этом случае
в памяти ЭВМ должны одновременно
находиться как текст (не машинные коды,
а именно текст самой выполняемой
программы), так и программа-интерпретатор.
Интерпретатор при работе "просматривает"
строки текста программы, распознает различные
операторы языка и сразу же
их выполняет (интерпретирует). Однако
это значительно замедляет
Интерпретатор БЭЙСИК, а позволяет выполнить все действия, связанные с подготовкой, отладкой, записью на магнитную ленту и запуском в работу программ на языке БЭЙСИК. Для этой цели в состав интерпретатора входит упрошенный редактор текстов и специальные отладочные средства. Объем различных версий интерпретаторов БЭЙСИК а для микропроцессора КР580ИК80А может быть от 2 Кбайт - "минимальный БЭЙСИК" до 20 Кбайт - "расширенный БЭЙСИК", естественно, что и набор функций, ими реализуемый, также будет разным.
Особенностью
интерпретатора БЭЙСИКА для нашей
микро-ЭВМ является возможность
работы с использованием псевдографических
символов, отображаемых дисплейным модулем.
Хотелось бы отметить, что игровые
программы, как правило, пишут на
языке БЭЙСИК.