Микропроцессоры ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРА Лекция 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.