Программирование на ассемблере

Неспециализированные сведения

Текст исходной программы складывается из операторов ассемблера, любой из которых занимает отдельную строчок этого текста. Различают два директивы операторов: и типа инструкции. Первые при трансляции преобразуются в команды процессора, каковые выполняются по окончании загрузки в память загрузочного модуля программы, имеющего расширение .COM либо .EXE . Операторы второго типа управляют процессом ассемблирования — преобразования текста исходной программы в коды объектного модуля (расширение .OBJ). Ассемблер интерпретирует и обрабатывает операторы один за другим, генерируя последовательность из байтов и команд процессора данных.

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

В ассемблере имеется три вида вызова подпрограмм.

— CALL NEAR (маленький вызов);

— CALL FAR (долгий вызов);

— INT (прерывание),

но ни один из них не содержит явного механизма передачи параметров. Данный механизм определяется внутренней организацией приводимой к.

Неспециализированный формат оператора ассемблера имеет следующий вид:

[Метка:]Код_операции[Операнд1[,Операнд2]][;Комментарий],

где элементы, указанные в квадратных скобках, смогут отсутствовать.

Пробелы вводятся произвольно, но минимум один пробел должен быть по окончании кода операции.

Метка — это идентификатор, присваиваемый первому байту того оператора, в котором она появляется.

Код_операции — это мнемоническое обозначение соответствующих команд процессора.

Операнды оператора ассемблера описываются выражениями. Выражения конструируются на базе операций над числовыми и текстовыми константами, идентификаторами и метками переменных с применением знаков операций и некоторых зарезервированных слов. Ниже приведены все определенные в ассемблере операции. Порядок старшинства операций от высшей к низшей:

LENGTH, SIZE, WIDTH, MASK, (), [],

.

:

PTR, OFFSET, SEG, TYPE, THIS

HIGH, LOW

+ (unary), — (unary)

*, /, MOD, SHL, SHR

+, —

EQ, NE, LT, LE, GT, GE

NOT

AND

OR, XOR

SHORT, .TYPE

Старшинство операций определяет порядок, по которому будет вычисляться выражение. Более старшие операции будут производиться раньше операций, имеющих меньшее старшинство. Операции, стоящие в одной строке, имеют равный приоритет. Операции равного старшинства вычисляются слева направо. Операции, стоящие в скобках, выполняются первыми.

Пример оператора ассемблера: l0c_1: mov ax,(DAT_1+4) SHR 4, тут использованы следующие операции ассемблера: ( ), + и SHR.

NASM. Первая программа. Урок 1

Похожие статьи:

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector