Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект, часть 4 (05.10.10), чистовик.doc
Скачиваний:
28
Добавлен:
29.04.2019
Размер:
15.45 Mб
Скачать

Пример выполнения программы

Выполнение команды реализуется в МПС через работу ее шин. Для иллюстрации рассмотрим выполнение короткого фрагмента программы пересылки байта 10 H из одной ячейки памяти в другую. Пусть пересылка производится из ячейки 0100 H в ячейку 0101 H. Пусть также фрагмент программы размещается в памяти, начиная с ячейки 2000 H.

Для выполнения фрагмента сначала нужно переслать байт в аккумулятор, а затем из аккумулятора в память. Так как обращение к памяти подразумевает косвенную адресацию, вначале требуется загрузка пары регистров H адресом ячейки, к которой идет обращение. С учетом сказанного, фрагмент программы в мнемокодах (на Ассемблере МП) примет вид, показанный в среднем столбце:

2000 LXI H, 0100 H  21 00 01

2003 MOV A, M  7E

2004 INX H  23

2005 MOV M, A  77

Команда загрузки непосредственных данных в пару регистров LXI rp, b3b2 имеет код 00ПР0001 (см. таблицу 5). Пара регистров H имеет адрес ПР = 10 (таблица 2). Подставив это значение в код команды, получаем код 21. В правом столбце записана команда в кодах. Она имеет вид 21 00 01, так как после кода операции из памяти извлекаются сначала младший (00), а затем старший (01) байты. Команда трехбайтная и занимает ячейки памяти 2000…2002.

Однобайтная команда MOV A, M пересылки из памяти в аккумулятор является вариантом команды MOV rM с кодом 01ППП110. Подставив в этот код адрес регистра A = 111, получаем код 7E.

Команда INX H прибавляет единицу к содержимому регистровой пары и является вариантом, код которого получается из кода 00ПР0011 при подстановке адреса пары регистров 10, что дает код 23.

Последняя команда фрагмента программы (пересылка из аккумулятора в память) MOV M, A, имеющая код 77, пересылает содержимое аккумулятора в ячейку памяти, адрес который находится в регистровой паре H. Эта команда завершает выполнение фрагмента программы.

ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРОВ

Приемы программирования микропроцессоров

Микропроцессоры (МП) можно программировать на языках кодовых комбинаций и Ассемблера. В первом случае команды программы представляются в виде кодовых комбинаций в двоичной системе счисления. Это усложняет поиск ошибок, программы трудно читаемы и плохо обозримы, трудно вносить изменения. Наряду с указанными недостатками язык кодовых комбинаций позволяет составлять программы наиболее эффективно, она занимает минимальный объем памяти и быстрее исполняется.

При использовании языка Ассемблера программирование упрощается. В этом языке вместо кодовых комбинаций применяется мнемоническая форма записи операций, выполняемых в МП. С помощью мнемоники, взятой из сочетания букв соответствующих английских слов, представляют вид выполняемой операции, операнды и адреса. Каждой команде на языке Ассемблера соответствует команда на языке кодовых комбинаций.

Язык Ассемблера упрощает запись команд, облегчает поиск ошибок, обеспечивает лучший обзор программы и простоту внесения исправлений в программу.

Перед исполнением программа должна быть переведена с языка Ассемблера на язык кодовых комбинаций и в таком виде помещена в память микропроцессорной системы (МПС). Этот перевод осуществляется с помощью программы трансляции, называемой ассемблером. Язык Ассемблера можно использовать и при отсутствии программы для трансляции, в этом случае трансляция осуществляется вручную.

Язык Ассемблера индивидуален для каждого микропроцессорного комплекта (МПК).

Следующий уровень языка программирования – язык Макроассемблера. В нем предусматривается возможность присвоения имени некоторой последовательности команд, а в любых местах программы, где должна быть использована эта последовательность, указывается лишь имя последовательности. Применение языка Макроассемблера сокращает запись программы (в среднем на 5…20%) и тем самым улучшает ее обозримость. Каждая серия МПК имеет свой индивидуальный язык Макроассемблера.

Следующий уровень языка программирования – язык высокого уровня. Языки высокого уровня обеспечивают большую компактность программы, что улучшает обзор программы и выявление в ней ошибок.

Различают машинно-независимые и машинно-зависимые языки высокого уровня. Первые позволяют вести запись программы независимо от серии МПК (к таким языкам относятся Бейсик, Паскаль и др.). Вторые пригодны для определенных серий МПК, например, для программирования устройств, построенных с использованием МПК серии КР580, разработан язык высокого уровня PLM-80.

Языки высокого уровня требуют более сложных трансляторов, кроме того, полученная после трансляции программа занимает больший объем памяти (на 10…100%) и медленнее исполняется, чем в том случае, когда эта программа составляется непосредственно в кодовых комбинациях. При этом эффективность программ на машинно-независимых языках программирования обычно ниже, чем в случае использования машинно-зависимых языков.

Для относительно несложных программ (например, объемом до одной тысячи команд) целесообразно использовать языки низкого уровня: язык кодовых комбинаций, язык Ассемблера или язык Макроассемблера.