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

Прерывания

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

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

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

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

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

Пример:

Метка Мнемокод Операнды Комментарии
  MOV AX, 00 ; команда, два операнда
M1: ADD AX, BX ; метка, команда, два операнда
DELAY: MOV CX, 13 ; метка, команда, два операнда

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

Метка Мнемокод Операнды Комментарии
  JMP M1 ; переход к команде с меткой М1
M1: CALL DELAY ; вызов подпрограммы с меткой ; DELAY

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

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

Метка Мнемокод Операнды Комментарии
  INC CX ; увеличить СХ (один операнд)
  ADD АХ, 12Н ; прибавить 12Н к содержимому АХ
      ; (два операнда)

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

Метка Мнемокод Операнды Комментарии
      ; эта строка является комментарием.
  ADD АХ, ВХ ; команда и комментарий в одной строке.

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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: