Автор: Пользователь скрыл имя, 21 Ноября 2011 в 17:38, реферат
В последней статье этого цикла ми вновь вернемся к вопросам программирования микро-ЭВМ. Из описания работы микро-ЭВМ следует, что практически все функции, которые она выполняет, полностью определяются программами, записанными в ее память. При этом могут быть использованы как готовые программы, разработанные кем-то ранее, так и программы, разработанные самостоятельно.
Программное
обеспечение Микро-ЭВМ.
В последней статье этого цикла ми вновь вернемся к вопросам программирования микро-ЭВМ. Из описания работы микро-ЭВМ следует, что практически все функции, которые она выполняет, полностью определяются программами, записанными в ее память. При этом могут быть использованы как готовые программы, разработанные кем-то ранее, так и программы, разработанные самостоятельно.
Набор различных программ, предназначенный для микро-ЭВМ (впрочем. как и для всех других) определенного типа, принято называть программным обеспечением. Программы, разработанные и используемые для специальных целей, например программы, реализующие функции каких-либо устройств, называют целевыми или прикладными программами. Разработка таких программ требует наличия в микро-ЭВМ специальных вспомогательных программ - системного программного обеспечения. Системное программное обеспечение необходимо также и в микро-ЭВМ универсального назначения, т. с. таких, которые предназначены дня выполнения самого разнообразного класса программ (программ для вычислений, обработки и редактирования текстов, игровых программ и т. д,), вводимых в ее память с внешнего накопителя. в нашем случае с магнитной лепты.
Простейшие функции
системного программного обеспечения
присущи управляющей программе
МОНИТОР, предназначенной для
МОНИТОР нашей микро-ЭВМ занимает в ПЗУ объем 2 Кбайт (с адреса F800H по FFFFH). Для работы МОНИТОРА необходимо также небольшое количество ячеек ОЗУ: для стека и хранения промежуточных результатов и данных. Адреса этой области памяти (рабочей области МОНИТОРа) - с F000Н по F7FFH. В табл.1 приведены коды МОНИТОРа, а здесь текст на ассемблере. Исходный текст на ассемблере и в формате Intel Hex, для моей модификации компьютера.
При запуске МОНИТОРа с начального адреса F800H происходит настройка указателя стека, занесение начальных значений в рабочую область ОЗУ и настройка ППА, обслуживающего клавиатуру. После этого МОНИТОР производит "очистку" содержимого ОЗУ страницы и ОЗУ курсора дисплейного модуля, так как там при включении питания устанавливается произвольная информация. Далее на экран выводится следующее сообщение: *МИКРО/80* MONITOR.
Появление на экране угловой скобки говорит оператору о том, что он может набрать на клавиатуре какую-либо директиву (команду) из перечисленных в табл.2.
Все директивы МОНИТОРа задают одной заглавной латинской буквой, но могут содержать дополнительно до трех параметров. Параметры записывают в виде шестнадцатиричных чисел или названия внутреннего регистра микропроцессора. Их набирают непосредственно после директивы и отделяют друг от друга запятыми. Символ "Н" после шестнадцатиричных чисел опускают, можно также опускать и незначащие нули, в левых разрядах чисел. При наборе директив с параметрами нельзя вставлять символ "пробел" ни между директивой и параметрами, ни между отдельными параметрами. Символом окончания ввода директивы или директивы с параметрами является символ "ВК".
Таблица2.
|
* - сообщения монитора в ответ на директиву Р. В директиве Р параметры ADR1, ADR2, D8 соответственно определяет первый адрес останова, второй адрес останова, и числа проходов через второй адрес останова.
R – обозначение одного из внутренних регистров микропроцессора : A,B,C,D,E,F,H,L,S.
ОБОЗНАЧЕНИЯ
D16 - четырехразрядное
шестнадцатиричное число
D8 - двухразрядное шестнадцатиричное
число
ADR1 - четырехразрядный шестнадцатиричный
адрес начала области памяти
ADR2 - четырехразрядный шестнадцатиричный
адрес конца области памяти
ADR1’ - четырехразрядный шестнадцатиричный
адрес начала второй области памяти
ADR - четырехразрядный шестнадцатиричный
адрес ячейки памяти.
Если директива введена верно, т. е. соблюдены все оговоренные выше условия. задано нужное количество параметров, и сами они заданы правильно. то МОНИТОР выполняет ее, если нет - на экране дисплея высвечивается знак "?" и вновь угловая скобка, "приглашающая" оператора повторить набор директивы. При наборе директивы оператор имеет возможность исправить один или несколько неверно набранных символов: для этого нужно сдвинуть курсор назад по строке (клавиша "¬") и повторить набор символов.
Теперь рассмотрим подробно назначение директив МОНИТОРа.
Директивы работы с памятью.
Директива "D" позволяет просмотреть на экране дисплея содержимое области памяти, выдаваемое в виде двухразрядных шестнадцатиричных чисел. представленных в форме таблицы (такой, например, как табл.1). После заполнения последней строки вся предыдущая информация с экрана стирается, и дальнейший ее вывод продолжается вновь с первой строки. Приостановить вывод информации на экран можно в любой момент, нажав произвольную клавишу на клавиатуре дисплея. После того, как клавиша будет отпущена, вывод информации продолжится. Старшие и младшие адреса области памяти задают двумя параметрами ADR1 и ADR2 соответственно,
По директиве "L" на экран дисплея выводится таблица, похожая на ту, что формируется по директиве "D". Отличие состоит в том, что вместо шестнадцатиричных чисел на экран выводятся алфавитно-цифровые символы, коды которых соответствуют содержимому ячеек памяти. Если в ячейке хранится код, не соответствующий ни одному из символов (таблица кодов символов приведена в статье "Радио" № 8, 1983 г.), то в данной позиции таблицы будет отображаться символ (.) - "точка".
Директива "М" позволяет просматривать и при необходимости изменять содержимое одной или нескольких ячеек памяти. После набора директивы и нажатия на клавишу "ВК" на экран дисплея будет выведено двухразрядное , шестнадцатиричное число - содержимое ячейки памяти по адресу ADR, а курсор устанавливается справа от него. Оператор может набрать новое значение, которое после нажатия на клавишу "пробел" будет занесено в ячейку, а на экран дисплея будут выведены адрес следующей ячейки памяти и ее содержимое. Оператор может изменить содержимое и этой ячейки или же оставить его без изменения и перейти к очередной ячейке, еще раз нажав на клавишу "пробел". Если оператору больше не нужны "услуги" этой директивы, он должен нажать на клавишу "ВК", после чего на экране появится сообщение МОНИТОРа о готовности к приему новых директив.
Директива "F" позволяет во все ячейки заданной области памяти записать одинаковые коды, значение которых равно D8.
С помощью директивы "Т" можно переслать (скопировать) содержимое из одной области памяти в другую, начальный адрес которой задают параметром ADR1'.
По директиве сравнения содержимого двух областей памяти "С" происходит последовательное побайтовое сравнение содержимого их ячеек. При обнаружении несоответствия на экран дисплея выводятся адрес ячейки из первой области памяти, содержимое этой ячейки, и содержимое соответствующей ячейки из второй области.
Воспользовавшись директивой поиска байта в пределах заданной области памяти "S" можно провести последовательное сравнение содержимого ячеек памяти и заданного в виде параметра двухразрядного шестнадцатиричного числа (байта). В результате на экран дисплея будут выведены адреса ячеек памяти, в которых будут обнаружены байты, равные заданному.
Для тестирования оперативной памяти предусмотрена специальная директива "Q", параметры которой определяют начальный и конечный адреса проверяемой области памяти. По окончании работы теста содержимое ячеек проверяемой области памяти не изменяется. В случае обнаружения ошибки на экране дисплея высветятся адрес неисправной ячейки, ее содержимое и эталонный байт. который должен был находиться в этой ячейке, если бы она была исправна. Этот тест предназначен только лишь дня быстрой предварительной проверки работоспособности ОЗУ и не позволяет обнаруживать все виды ошибок.
ДИРЕКТИВЫ ВВОДА-ВЫВОДА ИНФОРМАЦИИ.
Директивы этой группы служат для организации записи или считывания информации с магнитофона. Желательно, чтобы магнитофон имел счетчик ленты, по которому оператор мог бы отметить начало записи для последующего ее быстрого поиска.
Директива "O" записи на ленту содержит параметры, указывающие на границы области памяти, откуда будет выводится информация. При этом на, ленту будут последовательно записаны:
00Н
00Н 256 байт 00Н (начальный пропуск),
.....
00Н
Е6Н - байт синхронизации,
ADR1(Mл) - младший байт начального адреса.
ADR1(Cт) - старший байт начального адреса,
АDR2(Мл) - младший байт конечного адреса,
ADR2(Cт) - старший байт конечного адреса
области памяти и далее информационные
байты, число которых зависит от размера
заданной области памяти.
После набора директивы включают магнитофон в режим записи и пускают лентопротяжный механизм. После нажатия на клавишу "ВК" дисплея начнется запись информации на магнитную ленту.
Для того чтобы
используемая нами скорость записи (1500бит/с)
могла быть установлена независимо
от тактовой частоты микропроцессора,
предусмотрена возможность
Константа=40*Fтакт/2
, где Fтакт - в МГц,
40 - десятичное число.
Перед записью в память это значение необходимо перевести в шестнадцатеричную форму.
Директива ввода "I" инициирует ввод данных с магнитной ленты в ОЗУ микро-ЭВМ. Данные на ленте должны быть записаны и указанном выше формате. Директива не содержит параметров, так как значения адресов зоны памяти, в которые будет произведена запись, считываются с лепты. Если вся запись считана верно, то по окончании ввода на экране высвечиваются в шестнадцатиричном виде значения начального и конечного адресов области памяти, в которую были записаны информация, считанная с ленты, и сообщение о готовности монитора. Признаком того, что при считывании были обнаружены ошибки, может служить то обстоятельство, что при окончании записи на ленте (о чем можно судить на слух) на экране дисплея не появилось сообщение о готовности монитора к выполнению следующей директивы. Константа для временной задержки при считывании также вынесена в ОЗУ. Перед началом операции чтения в ячейку F75CH необходимо поместить константу, значение которой рассчитывается так же, как к для записи. Эта константа должна быть в полтора раза больше константы записи.