Калабеков Б.А. Микропроцессоры и их применение в системах передачи и обработки сигналов (1988) (1092085), страница 20
Текст из файла (страница 20)
!380 (Вз) 13зе; (Вз) 50,а Блок 4: Вивод в УВ 1; (В )=01 е Блок б: Ввод вз УВв 2; (Вз) =02зе 1 Блок 6: А СЦП (А) Блок 7: УсП ври (Тс) 0 я ячейке 017А; (Ва) О!за; (Вз) 7Ам Блок 10; Н1я-(Н(.)+1 Рнс. 3.!3. Схема анторнтма сбора данних После опроса последнего канала очередное прибавление едннниы к содержнмому регистра В сбросит регистр в нулевое состояние, что будет нспользовано в качестве признака окончання сбора данных. После выдачи номера очередного канала микропроцессор принимает в аккумулятор А сигнал нз УВв 2. Путем сдвига вправо содержимого аккумулятора принятое значение передается в триггер Тс. Если прн этом (Тс) =- О (это означает, что АЦП не закончил преобразование принятого аналогового сигнала), то мнкропроцессор повторяет прием нз УВв 2, н так до тех пор, пока не будет принято значение ОК = 1. После этого производится прием данных нз УВв !. Принятый байт данных запоминается в памяти. Затем прибавлением единицы к содержимому пары регистров Н1.
в ннх формнруется адрес ячейки, в которую будут переданы данные, полученные в результате преобразования сигнала следующего канала. На рнс. 3.13 показана схема алгорнтма функционирования устройства. В табл. 3.12 показано размещение программы в ОП. В табл. 3.!3 приведена программа. 3.4. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕРА ЯЗЫКИ ПРОГРАММИРОВАНИЯ До снх пор, записывая команды, мы пользовались языком кодовых комбинаций, единственно понятным для микропроцессора.
Пользованне этим языком вызывает трудности, связанные, во-первых, с необходнмостью записи громоздких, труднозапомннаемых двоичных кодовых 110 комбинаций (использование для этих кодовых комбинаций представления в восьмеричной либо шестнадцатеричной системах счисления не приводит к существенному облегчению записи программы), во-вторых, сложностью поиска ошибок в составленной программе из-за того, что записанная с помощью кодовых комбинаций программа оказывается трудно читаемой, плохо обозримой, и, в-третьих, трудностью внесения изменений в составленную программу. Рассмотрим, в чем состоят указанные трудности, которые свазаны с внесением исправлений в программу, записанную в кодовых комбинациях.
Пусть исправление некоторого участка программы привело к тому, что после коррекции этот участок занимает меньшее число ячеек в ОП. Таким образом, в последовательности адресов ячеек, занимаемых программой, возникает разрыв (на рис. 3.!4 А„!, А„ь — адреса !и освободившихся ячеек памяти). Такие разрывы недопустимы. Это связано с тем, что счетчик команд микропроцессора после выборки очередной команды формирует адрес следующей команды путем увеличения своего содержимого на единицу. Следовательно, после выполнения последней команды участка программы перед разрывом счетчик в качестве адреса очередной команды укажет адрес ячейки А„+,. Для устранения образовавшихся разрывов можно воспользоваться следующими приемами. Если т ) 3, то в первые три ячейки разрыва следует поместить трехбайтовую команду безусловного перехода к ячейке А„з ~, — первой после разрыва.
Если число ячеек в разрыве меньше трех, в зти ячейки помещается однобайтовая команда Оглсутствие операции, имеющая кодовую комбинацию 00 000 000. Рассмотрим другой случай, когда в результате коррекции некоторого участка программы выясняется, что исправленный участок программы не помещается в той группе ячеек, которая ранее отводилась под этот участок. В этом случае в указанную группу ячеек размещают начальную часть скорректированного участка, заканчивая ее трех- байтовой командой безусловного перехода к некоторой свободной ячейке, например следующей за ячейкой, которую занимает последняя команда программы (рис. 3.(5).
Начиная с этой ячейки, производится размещение команд конечной части скорректированного участка программы. Завершить эту часть участка программы необходимо командой безусловного перехода, как показано на рис. 3. (5. Следует иметь в виду, что подобные приемы приводят к появлению в программе дополнительных команд, за счет чего возрастают расходуемая емкость оперативной памяти и время исполнения программы. При большом числе исправляемых участков программы, по-видимому, целесообразно пересоставить всю программу, не пользуясь описанными выше приемами.
Наряду с указанными недостатками, использование языка кодовых комбинаций при программировании имеет и достоинства. Программируя на этом языке, программист может лучше использовать особенности микропроцессора и каждой его команды, наилучшим образом дл дн+г Наиаллнпл слв скоооенми роданнпгп унпоянй коррен тиру ммо ичпсмон программы комоедп дегуслопного лерелсда 4«не Рнс.
3.14. Освобожденне ячеек памяти в процессе отладки программы последняя номонда лрогрпммм команда дезуслпднпгп лерелодп Рис. 3,15, Введенне навык команд в процессе отладки программы 112 выполнять адресацию. При этом программа оказывается наиболее эффективной, она занимает минимальный объем в памяти и быстрее исполняется. Уменьшение объема занимаемой программой памяти (часто выполняемой в виде ПЗУ) снижает затраты на этот наиболее дорогостоящий узел микропроцессорного устройства, а уменьшение времени исполнения программы позволяет решать более сложные задачи.
Кроме того, записанная на бумаге программа после ее набивки на перфоленту может быть непосредственно введена в память микропроцессорного устройства. Трудности программирования уменьшаются при использовании языка Ассемблера. В этом языке вместо кодовых комбинаций используется мнемоническая форма записи операций, выполняемых в БИС микропроцессора. Такой мнемонической записью (в виде сочетания букв, взятых из соответствующих английских слов) представляют вид выполняемой операции, операнды и адреса. Каждой команде на языке Ассемблера соответствует команда иа языке кодовых комбинаций. Язык Ассемблера упрощает запись команд, обеспечивает лучший обзор программы, облегчает поиск в ней ошибок, обеспечивает простоту внесения исправлений в записанную на этом языке программу (не требуя привлечения специальных приемов, подобных тем, которые описывались выше для исправления написанных на языке кодовых комбинаций программ).
Перед исполнением программа должна быть переведена с язр!ка Ассемблера на язык кодовых комбинаций и в таком виде помещена в память микропроцессорного устройства. Такой перевод осуществляется на ЭВМ с помощью программы трансляции, называемой Ас- семблером.
Языком Ассемблера можно пользоваться для программирования и в тех случаях, когда отсутствует программа для трансляции (отсутствует Ассемблер). Выполнение трансляции в этом случае производится вручную (такая трансляция называется ручным ассемблированием), Язык Ассемблера (так же, как н язык кодовых комбинаций) индивидуален для каждогомикропропессорного комплекта, т. е. каждый микропроцессорный комплект имеет свой язык Ассемблера, отличный от языков Ассемблера других комплектов.
Следующий уровень языка программирования — язык Макроаесемблера. В нем предусматривается возможность присвоения имени некоторой последовательности команд, и в любых местах программы, в которых должна быть использована эта последовательность, указывается лишь имя последовательности. Использование языка Макроассемблера сокращает запись программы (в среднем на 5...20 %) и тем самым улучшает ее обозримость. Язык Макроассемблера (как и язык Ассемблера) индивидуален для МПК, т.
е. программа, составленная на этом языке МПК одной серии, непригодна для использования в микропроцессорах, построенных на комплектах других серий. Следующий уровень языка программирования — язык высоково уровня. Языки высокого уровня близки к обычному математическому языку, описывающему процесс решения задачи, поэтому они легко усваиваются. Кроме того, они обеспечивают ббльшую компактность программы (сложные вычислительные процессы представляются короткими записями), что улучшает обзор программы и выявление в' ней ошибок.
Различают машинно-независимые и машинно-зависимые языки высокого уровня. Первые позволяют вести запись прогрммы независимо от серии микропроцессорного комплекта, используемого для построения микропроцессорного устройства (к таким языкам относятся Бейсик, Фортран и др.).