КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Основы микропроцессорной техники 4 страница
Во второй графе коды первого байта команды b1 даются в двоичном восьмиразрядном представлении, если требуется указать в них адреса операндов, или в двухразрядном шестнадцатеричном представлении в иных случаях. Разряды обобщенных адресов регистров – источников данных – выражены буквами ИИИ, регистров – приемников данных – буквами ППП, пар регистров – буквами ПР. Подставляя вместо буквенных символов обобщенные адреса (таблица 2), получим коды конкретных вариантов команды. Пример 1 – Из обобщенной формы команды пересылки MOV r1, r2 (пересылка из регистра r2 в регистр r1) получим код для конкретного варианта MOV D, B (пересылка из регистра B в регистр D): 01 ППП ИИИ = 01 010 000 (2) = 50 H.
Пример 2 – Определим код команды загрузки непосредственных данных в пару регистров D–E MVI D, 0800 H:
b1: 00ПР0001 = 00 01 0001 (2) = 11 H;
b2: 00 H; b3: 08 H.
В данной команде байт b3 пересылается в старший регистр пары (D), а байт b2 – в младший регистр (E). Коды условий, при выполнении которых осуществляется указанная в команде управления операция, обозначены буквами УУУ. Их расшифровка приведена в таблице 6.
Таблица 6 – Коды условий для команд управления
Включая конкретные условия в мнемокоды команд, получаем их варианты. Например, команда условного перехода из обобщенной формы Jусл b3b2 переводится в вариант JNZ b3b2 – переход к команде с адресом b3b2, если признак результата говорит о том, что результат не равен нулю. Признаки формируются в регистре флажков RF по результатам выполненной операции, формат которого представлен на рисунке 13.
Рисунок 13 – Формат регистра флажков RF
Значение признака S = 0 означает «плюс», S = 1 – «минус», Z = 0 – неравенство нулю, Z = 1 – равенство нулю, C или AC = 1 – наличие переноса, C или AC = 0 – отсутствие переноса, P = 0 – нечетность, P = 1 – четность. Разряды 5, 3, 1 содержат константы и для признаков не используются. В коде команды рестарта RST три разряда, отмеченные буквами nnn, формируются системой прерываний или указываются программистом. При выполнении команды текущее содержимое программного счетчика PC загружается в стек, а в PC формируется код с нулевым старшим байтом и младшим байтом вида 000nnn000. Операция сравнения производится вычитанием операндов с установкой признака результата (Z = 1 – равные операнды, S = 0 – содержимое аккумулятора больше второго операнда, S = 1 – меньше). В третьей графе прочерк означает, что выполнение команды не сопровождается выработкой флажков-признаков, знак плюс говорит об установке всех признаков, знак плюс в скобках – об установке всех признаков, кроме признака наличия или отсутствия переноса C, а символ C означает, что вырабатывается только признак наличия или отсутствия переноса. Команды RLC, RRC, RAL и RAR реализуют циклические (кольцевые) сдвиги содержимого аккумулятора на один разряд в ту или иную сторону без включения (RLC и RRC) или с включением (RAL и RAR) в кольцо разряда C регистра флажков (рисунок 14).
Рисунок 14 – Схемы, поясняющие выполнение сдвигов микропроцессором В командах управления число циклов и тактов следует брать из знаменателя, если выполняется условие.
Пример выполнения программы
Выполнение команды реализуется в МПС через работу ее шин. Для иллюстрации рассмотрим выполнение короткого фрагмента программы пересылки байта 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 r, M с кодом 01ППП110. Подставив в этот код адрес регистра A = 111, получаем код 7E. Команда INX H прибавляет единицу к содержимому регистровой пары и является вариантом, код которого получается из кода 00ПР0011 при подстановке адреса пары регистров 10, что дает код 23. Последняя команда фрагмента программы (пересылка из аккумулятора в память) MOV M, A, имеющая код 77, пересылает содержимое аккумулятора в ячейку памяти, адрес который находится в регистровой паре H. Эта команда завершает выполнение фрагмента программы.
ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРОВ
Приемы программирования микропроцессоров
Микропроцессоры (МП) можно программировать на языках кодовых комбинаций и Ассемблера. В первом случае команды программы представляются в виде кодовых комбинаций в двоичной системе счисления. Это усложняет поиск ошибок, программы трудно читаемы и плохо обозримы, трудно вносить изменения. Наряду с указанными недостатками язык кодовых комбинаций позволяет составлять программы наиболее эффективно, она занимает минимальный объем памяти и быстрее исполняется. При использовании языка Ассемблера программирование упрощается. В этом языке вместо кодовых комбинаций применяется мнемоническая форма записи операций, выполняемых в МП. С помощью мнемоники, взятой из сочетания букв соответствующих английских слов, представляют вид выполняемой операции, операнды и адреса. Каждой команде на языке Ассемблера соответствует команда на языке кодовых комбинаций. Язык Ассемблера упрощает запись команд, облегчает поиск ошибок, обеспечивает лучший обзор программы и простоту внесения исправлений в программу. Перед исполнением программа должна быть переведена с языка Ассемблера на язык кодовых комбинаций и в таком виде помещена в память микропроцессорной системы (МПС). Этот перевод осуществляется с помощью программы трансляции, называемой ассемблером. Язык Ассемблера можно использовать и при отсутствии программы для трансляции, в этом случае трансляция осуществляется вручную. Язык Ассемблера индивидуален для каждого микропроцессорного комплекта (МПК). Следующий уровень языка программирования – язык Макроассемблера. В нем предусматривается возможность присвоения имени некоторой последовательности команд, а в любых местах программы, где должна быть использована эта последовательность, указывается лишь имя последовательности. Применение языка Макроассемблера сокращает запись программы (в среднем на 5…20%) и тем самым улучшает ее обозримость. Каждая серия МПК имеет свой индивидуальный язык Макроассемблера. Следующий уровень языка программирования – язык высокого уровня. Языки высокого уровня обеспечивают большую компактность программы, что улучшает обзор программы и выявление в ней ошибок. Различают машинно-независимые и машинно-зависимые языки высокого уровня. Первые позволяют вести запись программы независимо от серии МПК (к таким языкам относятся Бейсик, Паскаль и др.). Вторые пригодны для определенных серий МПК, например, для программирования устройств, построенных с использованием МПК серии КР580, разработан язык высокого уровня PLM-80. Языки высокого уровня требуют более сложных трансляторов, кроме того, полученная после трансляции программа занимает больший объем памяти (на 10…100%) и медленнее исполняется, чем в том случае, когда эта программа составляется непосредственно в кодовых комбинациях. При этом эффективность программ на машинно-независимых языках программирования обычно ниже, чем в случае использования машинно-зависимых языков. Для относительно несложных программ (например, объемом до одной тысячи команд) целесообразно использовать языки низкого уровня: язык кодовых комбинаций, язык Ассемблера или язык Макроассемблера.
Язык Ассемблера
Программа на языке Ассемблера представляется в виде последовательности предложений, каждое из которых занимает отдельную строку и содержит четыре фиксированных поля: поле метки, поле команды, поле операнда и поле комментариев. Поле метки. Если предложение снабжается именем, то оно записывается в поле метки. Имя состоит из последовательности заглавных букв латинского алфавита и цифр. Начинается имя с буквы, содержит не более пяти символов и заканчивается двоеточием (например, M1:). Обычно именами снабжаются предложения, на которые производится условный либо безусловный переход. Поле команды. В этом поле записывается мнемоническое обозначение кода операции, приводимое в системе команд МП. Поле операнда. В этом поле приводятся участвующие в операции числа (непосредственные данные), указания об источниках и приемниках операндов. В предложениях условных и безусловных переходов в поле операнда указывается имя (метка) предложения, на которое осуществляется переход. Числовые данные могут представляться в различных системах счисления. Для указания выбранной для представления числа системы счисления после шестнадцатеричного числа ставится символ H (если шестнадцатеричное число начинается с букв A, …, F, то перед числом ставится цифра 0), после десятичного числа можно ставить символ D (либо не записывать никакого символа), восьмеричное число заканчивается символом Q, двоичное – символом B. Например, пусть требуется загрузить в пару регистров H-L число A195(16). Указанное действие на языке Ассемблера описывается следующим предложением:
В качестве операндов могут быть указаны счетчик команд идентификатором PC и двухбайтовое содержимое регистра-аккумулятора вместе с регистром флажков – идентификатором PSW. В командах ввода (IN) и вывода (OUT) в поле операнда указывается номер (адрес) устройства, с которым МП обменивается данными. При наличии двух операндов они разделяются запятой. Обозначения операндов отделяются от мнемоники одним или двумя пробелами. Поле комментариев. Это поле может содержать любой пояснительный текст, который облегчает чтение программ. Перед комментарием ставится символ ";" (точка с запятой). Приведенная в комментарии запись нужна лишь программисту, при трансляции она игнорируется ассемблером.
Программирование последовательных участков алгоритма
При программировании последовательных участков алгоритма команды условных и безусловных переходов не используются. В этом случае команды программы размещаются в ячейках памяти с последовательно нарастающими адресами. Поле метки может отсутствовать. Пример 1 – Требуется принять число из ячейки памяти (ЯП) по адресу 0B00 H, проинвертировать его и записать результат в ЯП по адресу 0B01 H. Начальный адрес программы 0800 H. Схема алгоритма решения задачи представлена на рисунке 15.
Рисунок 15 – Схема алгоритма инвертирования содержимого ЯП
Для записи программы в память микро ЭВМ (МПС) необходимо перевести мнемокоды команд в машинные коды (ручная трансляция). Команды в программе могут быть одно-, двух- или трехбайтные и должны занимать в памяти соответственно один, два или три адреса. Запись программ удобно проводить в компактной форме. В программе указывается начальный адрес каждой команды и при этом понимается, что в зависимости от длины команды в памяти будут занимать от одной до трех последовательных ячеек. Программа инвертирования содержимого ЯП на языке Ассемблера при использовании прямой адресации представлена в таблице 7.
Таблица 7 – Программа инвертирования содержимого ЯП на языке Ассемблера при использовании прямой адресации
Программа инвертирования содержимого ЯП на языке Ассемблера при использовании косвенной регистровой адресации представлена в таблице 8.
Таблица 8 – Программа инвертирования содержимого ЯП на языке Ассемблера при использовании косвенной регистровой адресации
Две программы решения задачи равноценны по требуемой емкости памяти. Однако программа в таблице 7 обеспечивает более высокое быстродействие, так как выполняется за 37 тактовых периодов сигнала синхронизации (программа в таблице 8 выполняется за 41 тактовый период).
Программирование циклических вычислительных процессов
При программировании участков алгоритмов, содержащих разветвления и циклы, используются команды условных переходов. При выполнении этих команд МП проверяет состояние соответствующего разряда регистра флажков RF. Если при проверке условие не подтверждается, то выполняется следующая по порядку команда программы. Все команды условных переходов трехбайтные. Первый байт содержит код команды, второй и третий байты – адрес команды, которой передается управление. Таким образом, команды условных переходов позволяют строить ветвящиеся алгоритмы и в зависимости от текущего значения результата выполнения программы переходить на различные участки программы. Для счета числа повторений цикла на одном из внутренних регистров МП организуется счетчик. В этот регистр предварительно записывается число повторений цикла и после каждого его повторения из регистра вычитается единица, а затем проверяется, равно ли нулю содержимое регистра. При достижении нулевого значения производится выход из цикла. Пример 2 – Составить циклическую программу сложения массива однобайтных чисел (число слагаемых равно 05 H) с получением двухбайтного результата. Начальный адрес исходных данных 0A00 H. Счетчик циклов организовать на регистре B. Старший байт суммы записать в регистр C, а младший – в аккумулятор AC. Начальный адрес программы 0800 H. Схема алгоритма программы сложения (рисунок 16) состоит в том, что после прибавления каждого элемента массива определяется переполнение аккумулятора AC (значение бита C в регистре флажков RF равно единице), и если это имеет место, то содержимое регистра C
Рисунок 16 – Схема алгоритма циклической программы суммирования однобайтных чисел увеличивается на единицу. Таким образом, за счет суммирования единиц переноса получается старший байт суммы. Циклическая программа суммирования однобайтных чисел на языке Ассемблера представлена в таблице 9.
Таблица 9 – Циклическая программа суммирования однобайтных чисел на языке Ассемблера
Составление программ, содержащих подпрограммы
Учитывая ограниченные возможности памяти при разработке программ, нужно стараться сделать их как можно короче. С этой целью часть программы, которая неоднократно повторяется, или программа, которая часто используется, могут быть оформлены в виде подпрограмм – последовательностей команд, выполнение которых может быть вызвано из любого места программы любое количество раз. Процесс передачи управления к подпрограмме называется ее вызовом. Данные и адреса, требуемые для работы подпрограммы, называются входными параметрами. Результаты работы подпрограммы, передаваемые по окончании ее работы в основную программу, называются выходными параметрами. Для вызова подпрограмм и возврата из них используются команды безусловного и условного вызова подпрограмм и возврата из них. Команда безусловного вызова подпрограммы CALL b3b2 загружает в программный счетчик МП PC содержимое байтов b3b2, т.е. начальный адрес подпрограммы. При этом МП автоматически сохраняет в стеке адрес основной программы, к которому она будет обращаться после выполнения подпрограммы (адрес возврата). Команда RET пересылает в программный счетчик PC адрес возврата, после этого выполнение программы будет осуществляться с этого адреса. Команды условного вызова подпрограмм и возврата из них позволяют вызвать подпрограмму и возвратиться из нее в зависимости от состояния заданных разрядов регистра флажков RF (аналогично командам условных переходов). Таким образом, команды вызова подпрограмм и возврата из них используют стек и указатель стека SP. Поэтому при разработке таких программ необходимо назначить область стека, записывая в указатель стека SP адрес (нижняя граница стека) с помощью команд LXI SP, b3b2 или SPHL. В качестве подпрограммы можно использовать программу, представленную в таблице 9. Входными параметрами подпрограммы суммирования ADDB (таблица 9) являются адрес первого слагаемого, записанный в паре регистров H-L, и число слагаемых, записанное в регистре B. Выходным параметром является сумма, старший байт которой записан в регистре C, а младший – в аккумуляторе AC. Программа суммирования массива однобайтных чисел на языке Ассемблера, содержащая подпрограмму, представлена в таблице 10.
Таблица 10 – Программа суммирования массива однобайтных чисел на языке Ассемблера, содержащая подпрограмму
ИНТЕРФЕЙСНЫЕ БИС/СБИС
Общие сведения об интерфейсных схемах
Схемы интерфейса обеспечивают функциональную и электрическую совместимость при обмене информацией между микропроцессором (МП) и устройствами, участвующими в передаче или приеме информации. К ним относятся: шинные формирователи (ШФ), буферные регистры (БР), параллельные и последовательные адаптеры (интерфейсные блоки ввода-вывода) и др. Как отмечалось выше, выходы МП КР1821ВМ85А имеют низкую нагрузочную способность (, ), поэтому к выходам МП может быть подключено не более одного входа микросхемы ТТЛШ. Так как токи, потребляемые нагрузкой МП, обычно превышают указанные выше допустимые значения, в шины адреса и данных включаются буферы. Для построения таких буферов предусмотрены ШФ. Для обмена информацией между модулями МПС используются параллельные и последовательные порты, хранящие информацию до тех пор, пока она не будет востребована МП или ВУ. Они могут быть реализованы с помощью параллельных или последовательных адаптеров либо представлять собою более простые схемы. Например, в простейшем случае в качестве параллельного порта можно использовать БР, который может выполнять роль буфера и хранить передаваемую информацию. Параллельные и последовательные адаптеры берут на себя управляющие функции при вводе-выводе информации, освобождая МП от этой процедуры.
Шинные формирователи
ШФ, называемые также приемопередатчиками, шинными драйверами и т.д., включаются между источником информации (МП) и системной шиной. В английской терминологии ШФ обозначается как BD (Bus Driver). Они усиливают сигналы по мощности при работе на шину, отключают МП от шины, когда он не участвует в обмене. Двунаправленные ШФ в зависимости от сигнала управления позволяют передавать сигналы в шину от МП или, наоборот, принимать их с шины и передавать МП. Различные ШФ отличаются разрядностью, электрическими параметрами и возможностью передачи сигналов в прямом или инвертированном виде (ШФИ). В МПК серии КР580 имеются ШФ КР580ВА86 и ШФИ КР580ВА87 (аналоги зарубежных микросхем Intel 8286 и 8287 соответственно). Рассмотрим ШФ КР580ВА86 (рисунок 17). ШФ КР580ВА86 (схемотехника ТТЛШ) предназначен для двунаправленной управляемой передачи восьмиразрядных данных. Шина A (линии А7…0) принимает данные от МП или передает их ему (рисунок 17, а), шина B (линии B7…0) связана с системной шиной, на которую ШФ передает информацию или с которой снимает ее. В каждом разряде ШФ включены два повтори-
Рисунок 17 – Шинный формирователь КР580ВА86. Схема логическая (а) и временные диаграммы работы (б)
t1 – задержка распространения сигналов от входов к выходам; t2 – задержка перехода выходов в Z-состояние; t3 – задержка перехода выходов в активное состояние; t4 и t5 – время выдержки и предустановки сигнала T относительно сигнала .
б)
Окончание рисунка 17
теля с Z‑состоянием на выходах. Сигнал ( ) высоким уровнем переводит выходы повторителей (усилителей) в Z-состояние либо разрешает передачу данных при низком уровне. При разрешении работы () направление передачи зависит от уровня сигнала T (Transmit). Если T = 1, то передача от шины A к шине B, а если T = 0, то передача в обратном направлении.
Дата добавления: 2015-03-29; Просмотров: 1059; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |