Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЦУ_конспект_12.docx
Скачиваний:
68
Добавлен:
14.11.2019
Размер:
5.57 Mб
Скачать

1.8 Основы программирования. Ассемблер.

В микропроцессорных системах используется программирование на языке ассемблера. Под ассемблером понимается и язык программирования в мнемокодах команд и программа- транслятор, которая переводит мнемокоды в машинные коды. Процесс перевода (трансляции) в машинные коды называется ассемблированием.

Выражение на языке ассемблера имеет вид:

{(метка)} : (мнемокод) {(операнд)} {,} {(операнд)} {; комментарий}

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

Пример:

Метка

Мнемокод

Операнды

Комментарии

MOV

AX, 00

; команда, два операнда

M1:

ADD

AX, BX

; метка, команда, два операнда

DELAY:

MOV

CX, 13

; метка, команда, два операнда

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

Метка

Мнемокод

Операнды

Комментарии

JMP

M1

; переход к команде с меткой М1

M1:

CALL

DELAY

; вызов подпрограммы с меткой

; DELAY

Мнемокод идентифицирует команду ассемблера. Для мнемокодов используют сокращенные или полные английские слова, которые передают значения основной функции команды: ADD – прибавить, SUB (SUBtract) – вычесть, XCHG (eXCHanGe) – поменять.

Операнды отделяются запятыми. Если заданы два операнда, то первый из них является приемником, а второй – источником информации. Команда может содержать различное количество операндов разных типов, например:

Метка

Мнемокод

Операнды

Комментарии

INC

CX

; увеличить СХ (один операнд)

ADD

АХ, 12Н

; прибавить 12Н к содержимому АХ

; (два операнда)

Комментарии игнорируются в процессе трансляции и используются для документирования и понимания содержания программы. Комментарий всегда начинается с символа ";" и может содержать любые символы. Комментарий может занимать всю строку или быть расположенным за командой в одной строке, например:

Метка

Мнемокод

Операнды

Комментарии

; эта строка является комментарием.

ADD

АХ, ВХ

; команда и комментарий в одной строке.

Т.к. комментарии не транслируются в машинные коды, то их количество не влияет на объем и эффективность выполнения программы.

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

Командный модуль содержит машинные коды команд с абсолютными адресами и выполняется микропроцессором. Заканчиваться программа должна или командой end или ret2..

Объектный модуль содержит машинные коды команд с относительными адресами. Объектный модуль выполняется МП после замены относительных адресов на абсолютные с помощью программы-компоновщика, например, LINK.EXE, которая генерирует модуль с расширением ехе (ЕХЕ- файл или ЕХЕ- программу); ЕХЕ- файл, в отличие от командного модуля, может превышать объем одного сегмента (64 К). Однако в этом случае обязательно определять сегменты с помощью директив ассемблера. Заканчивается ЕХЕ- файл стандартной процедурой корректного выхода в MS-DOS.

Программа-компоновщик имеет еще одно назначение – она объединяет объектный модуль с библиотечными модулями, либо несколько отдельных объектных модулей в один ЕХЕ- файл. Библиотечными модулями называются объектные файлы, которые содержат наиболее распространенные подпрограммы. Библиотечные модули размещаются в специальном системном файле – библиотеке (LIBRARY).

При ассемблировании программа-транслятор генерирует листинг и файл листинга программы. Листинг – отображения на дисплее или бумаге текстов начального программного модуля, программного модуля (сом или obj) и сообщений, которые указывают на ошибки программирования, связанные с нарушением правил записи выражений (например, нет операнда или неправильный мнемокод команды).