Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ассемблер.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
724.99 Кб
Скачать

32

МУРМАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра автоматики

и вычислительной техники

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

Описание и методические указания к практическим занятиям по курсу

"Микропроцессорные управляющие системы"

Мурманск

2002

Составитель – Алексей Алексеевич Маслов, канд. техн. наук, профессор кафедры автоматики и вычислительной техники Мурманского государственного технического университета.

Методические указания изданы в 1992 г.

Методические указания рассмотрены кафедрой и рекомендованы к переизданию "23" марта 2002, протокол №4.

Введение

Развитие и распространение микропроцессоров и микроЭВМ на их основе стимулируют постоянно возрастающий интерес специалистов технического профиля к их изучению и применению. Общие тенденции автоматизации технических средств судов связаны с построением автоматических систем управления, которые объединяют объекты в единое целое, оптимизируют режим их совместной работы. Указанные задачи в современных условиях решаются на базе микропроцессоров. Исходя из специфики новых судовых технических средств автоматизации возникает необходимость разработки программного обеспечения.

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

Усвоение предлагаемого материала позволит самостоятельно разрабатывать программы тестирования микропроцессорных средств и небольшие управляющие программы.

Указания содержат задания для самостоятельной работы, выполнение которых начинающими программистами позволит идти наиболее быстро и эффективно к овладению практическими приемами программирования.

1. Краткие сведения из теории

На своем рабочем уровне МП реагирует на список операций, называемых машинной программой. На рис. 1.1,а приведено содержимое памяти, являющееся программой на машинном языке. Эта программа начинается с адреса 2000Н с содержимым 00111110В и заканчивается адресом 2006H с содержимым 01110110В Человеку практически невозможно понять программу, представленную в такой форме.

Программа на машинном языке на рис. 1.1,а становится несколько проще для восприятия, когда она представлена в шестнадцатеричном коде (Н-коде), как показано на рис. 1.1,б. Однако, хотя двоичные данные приведены в шестнадцатеричном коде, эта часть программы всегда рассматривается как заданная на машинном языке и оказывается трудной для понимания.

В более приемлемой форме рассматриваемая программа могла бы выглядеть так:

1.загрузить двоичное число (10110100) в аккумулятор;

2.инвертировать каждый двоичный бит содержимого аккумулятора;

3.поместить результаты инверсии в ячейку памяти данных 2100Н.

Возникает вопрос: как перейти от этой формы человеческого языка, иногда длинной и сложной, к машинному языку? Ответ состоит в использовании простого языка программирования – Ассемблер, который использует слова и фразы, преобразуя их в машинный код МП.

Обычно фраза или заданная величина на ассемблере будет соответствовать выражению длиной от одного до трех байтов машинного языка. Суть и процедура ассемблирования показаны на рис. 1.2, где вторая команда программы представлена единственной мнемоникой из трех букв СМА (инвертировать содержимое аккумулятора). Сначала три буквы переведены в их эквиваленты в коде АSCII, затем три кода ASCII преобразованы в определенный порядок специальной программой Ассемблера, которая выдает уже код команды инверсии содержимого аккумулятора на машинном языке, т.е. 00101111В в данном случае или 2FH (в Н-коде). Таким образом, мнемоника преобразована в один единственный байт машинного языка.

Программа на языке Ассемблер, записанная человеком, может быть представлена в виде следующей таблицы (в двоичном или в шестнадцатеричном машинном коде):

Адрес

Н-код

Двоичное

содержимое

Адрес

Н-код

Шестнадцат.

содержимое

Н-код

2000

00111110

- начало программы

2000

- начало программы

2001

10110100

2001

ВЧ

2002

00101111

2002

2F

2003

00110010

2003

32

2004

00000000

2004

00

2005

00100001

2005

21

2006

01110110

- конец программы

2006

76

- конец программы

2007

2007

Обычным является деление строк на четыре поля: метка, мнемоника, операнд и комментарий.

Мнемоника Код Транслятор Ассемблера Машинный

команды ASCII в машинный код код

С

М

А

Рис. 1.2. Трансляция мнемоники Ассемблера в машинный код команды

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

После того как программа на языке Ассемблер составлена (табл. 1.1), производится перевод мнемоник и операндов в машинные коды, и списку команд назначаются соответствующие ячейки памяти.

Таблица 1.1

Метка

Мнемоника

Операнд

Комментарий

MVI

A, ВЧН

Загрузить в аккумулятор данные ВЧН

СМА

Инвертировать содержимое аккумулятора

STA

2100Н

Переслать содержимое аккумулятора в память по адресу 2100Н

HLT

Остановить МП

Переход от версии табл.1.1 к ассемблированной версии табл.1.2 может быть выполнен либо вручную, либо на машине при помощи операционной программы Ассемблера.

Таблица 1.2

Адрес

Н – код

Метка

Мнемоника

Операнд

Машинный код

Комментарий

2000

2001

MVI

А, ВЧН

ВЧ

Загрузить в аккумулятор данные ВЧН

2002

СМА

2F

Инвертировать содержимое аккумулятора

2003

2004

2005

STA

2100Н

32

00

21

Переслать содержимое аккумулятора в память по адресу 2100Н

2006

HLT

76

Остановить МП

Запись программы удобно проводить в более компактной форме. Для этого в таблице указывается только начальный адрес каждой команды, при этом имеется в виду, что в зависимости от данной команды она будет занимать одну, две или три последовательные ячейки памяти. Записанная таким образом программа представлена в виде табл.1.3.

Таблица 1.3

Адрес

Н-код

Метка

Мнемоника

Операнд

Машинный код

Комментарий

2000

MVI

А, ВЧН

3Е ВЧ

2002

СМА

2F

2003

STA

2100H

32 00 21

2006

HLT

76

Программирование на языке Ассемблер является способом "очеловечивания" действий МП. Языки высокого уровня (Бейсик, Паскаль, Фортран и т.д.) при их использовании делают программирование более удобным.

Например, одна команда (оператор) на Бейсике или Паскале может соответствовать 20 или 30 машинным командам. Цель данных методических указаний состоит в получении навыков программирования МП (в противоположность программированию микро-ЭВМ), потому что мы будем использовать его состав команд. Будем выполнять программирование на языке Ассемблер, помогающее пониманию состава команд МП и его действий.

Для программиста МП-система, построенная на базе МП КР580ВМ80А, представлена составом команд, памятью, регистрами общего назначения, счетчиком команд, портами ввода-вывода, флажками (триггерами регистра признаков), указателем стека и стеком. Все эти элементы, за исключением памяти и портов ввода-вывода, составляют часть МП.

В дальнейшем мы будем использовать состав команд МП КР580ВН80А, приведенный в табл.5.1 и 5.2[1].