Микропроцессоры ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРА Лекция 12

advertisement
Микропроцессоры
ПРОГРАММИРОВАНИЕ
МИКРОПРОЦЕССОРА
Лекция 12
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
• На своем рабочем уровне микропроцессор
реагирует на список операций, называемый
машинной программой.
• На рис. 6.1, а приведено содержимое памяти,
являющееся программой на машинном языке. Эта
программа начинается с адреса 2000Н с
содержимым КОП 0011 11102 и оканчивается
адресом 2006Н с содержимым 0111 0110г.
• Человеку практически невозможно понять
программу, представленную в такой форме.
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
• Программа на машинном языке на рис. 6.1, а
становится несколько проще для восприятия,
когда она представлена в шестнадцатеричном
коде (Н-коде), как показано на рис. 6.3,б.
• Однако, хотя двоичные данные приведены в
шестнадцатеричном коде, эта часть программы
всегда рассматривается как заданная на
машинном языке и оказывается трудной для
понимания.
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
• В более приемлемой форме записанная на
машинном языке она могла бы выглядеть так:
• 1. Загрузить двоичное число (1011 0100) в
аккумулятор.
• 2. Инвертировать каждый двоичный бит
содержимого аккумулятора.
• 3. Поместить результаты инверсии в ячейку памяти
данных 2100Н.
Процесс АССЕМБЛИРОВАНИЯ
• СМА от Complement Accumulator (англ.)—дополнить
аккумулятор. Имеется в виду дополнение до 1, т. е.
инвертирование или формирование обратного кода
числа, содержащегося в аккумуляторе.
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
• Суть и процедура ассемблирования показаны на рис.
6.2, где, например, вторая команда программы
представлена единственной мнемоникой из трех букв
СМА (инвертировать содержимое аккумулятора)1.
• Сначала три буквы переведены в их эквивалент в коде
ASС II,
• затем три кода ASС II преобразованы в определенный
порядок специальной программой ассемблера, которая
выдает код инверсии содержимого аккумулятора на
машинном языке, т.е. 0010 11112 в данном случае или
2FH.
• Мнемоника преобразована в один единственный байт
машинного языка.
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
Таблица 6.1. Программа на языке ассемблер
Метка
Мнемоника
Операнд
Комментарий
MVI
А, В4Н
Загрузить в аккумулятор данные,
следующие непосредственно: В4Н
СМА
STA
HLT
Инвертировать содержимое
аккумулятора
21ООН
Разместить содержимое аккумулятора
Остановить МП
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
• Программа на языке ассемблер, записанная
человеком, могла бы быть представлена в виде
табл. 6.1.
• Обычным является деление объявлений на
машинном языке на четыре поля: метка;
мнемоника; операнд и комментарий.
• Поле метки используется не всегда и в этой
программе остается пустым.
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
• Поле мнемоники содержит точную
мнемонику, установленную разработчиком,
которая обычно указывает программе
ассемблера операцию для выполнения.
• Поле операнда содержит информацию о
регистрах, данных и адресах,
объединенных соответствующей
операцией.
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
• Используя информацию только полей
мнемоники и операнда, ассемблер может
выдать соответствующий код на машинном
языке.
• Можно также назначить ячейки памяти списку
команд.
• Поле комментариев не учитывается
ассемблером и ограничивается его
перепечаткой. Это поле очень важно, поскольку
позволяет понять события в программе.
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
•
Как только программа составлена (см. табл. 6.1),
она представляется затем в виде табл. 6.2.
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
Таким образом, задача ассемблирования (или
составление программы на ассемблере) состоит из
этапов:
1) перевод мнемоники и операндов на машинный язык;
2) назначение последовательно ячейки памяти каждому
КОП и операнду.
от версии табл. 6.1 к ассемблированной версии табл. 6.2
может быть выполнен либо вручную, либо на машине при
помощи специальной программы ассемблера.
МАШИННЫЙ ЯЗЫК И АССЕМБЛЕР
• Программа, состоящая из символических команд
(фрагмент показан в табл. 6.1), иногда
называется
• исходной программой, а
• переведенная однажды на машинный язык —
уже объектной программой.
Kоманда на языках высокого уровня БЕЙСИКе
или ФОРТРАНе может соответствовать 20 или 30
машинным командам. (командам ассемблера)
регистры ЭМП
• На рис. 6.3 в сокращенном варианте приведены
регистры типового МП, предоставляемые
программисту.
регистры ЭМП
• Вверху справа мы видим
• универсальный 8-разрядный регистраккумулятор А,
• а слева показан 8-разрядный регистр
состояния. В составе этого регистра
индикатор переноса CY находится в
позиции 7, а индикатор нуля Z — в позиции
0. Позиции бит от первого до шестого
регистра состояния в типовом МП не
используются, но в выпускаемых МП
индикаторов больше, чем здесь.
регистры ЭМП
• Во второй строке на рис. 6.3 расположены
регистры Н и L. Это универсальные
регистры адреса/данных. Они могут
использоваться раздельно или в форме
пары регистров (мы говорим тогда о паре
регистров HL). В последнем случае они
используются как указатель адреса.
• Снизу на рис. 6.3 находятся два
специальных 16-разрядных регистра.
• Счетчик команд PC* [От Program Counter
(англ.) — программный счетчик]
указывает МП на следующую для
выполнения команду.
• Указатель стека SP* содержит адрес
вершины стека. Сам стек находится в ОЗУ.
• Состав команд такого типового микропроцессора
разделен на семь категорий:
• арифметические; логические; передачи данных;
ветвления; вызова подпрограмм; возврата из
подпрограмм; прочие.
• Типовой микропроцессор в состоянии выполнить
только 67 различных команд из 239, которые
входят в состав МП Intel 8085.
Download