Основы языка ассемблер

Общий формат оператора ассемблера имеет следующий вид:

[Метка:]Код_операции[Операнд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.

3.2 Арифметические операторы

3.2.1                            + Сложение или унарный плюс

expression1 + expression2                          (сложение)

или

+ expression                                               (унарный плюс)

Бинарный "+" суммирует значения двух выражений. Унарный "+" сохраняет знак и значение выражения.

Примечания:

Оператор сложения ('+') может использоваться для прибавле­ния целого числа к операнду, перемещаемому в памяти. Операндом, перемещаемым в памяти, может быть только одно из выражений. Оба выражения могут быть целыми числами.

Унарная операция '+' обладает более высоким приоритетом, чем оператор сложения. Смотри 'Старшинство операций', где опи­сан порядок старшинства операций.

3.2.2                            - Вычитание или унарный минус

expression1 - expression2 (вычитание)

или

- expression (унарный минус).

Бинарный "-" вычитает одно выражение из другого.Унарный "-" изменяет знак выражения.

Примечания:

Операндами оператора вычитания могут быть целые числа или операнды, перемещаемые в памяти. Если оба операнда являются ад­ресами памяти, то они должны располагаться в одном и том же сегменте.

Унарная операция '-' обладает более высоким приоритетом, чем оператор вычитания. Смотри 'Старшинство операций', где опи­сан порядок старшинства операций.

3.2.3  * Умножение

expression1 * expression2.

Перемножает значения двух выражений.

Примечания:

Выражения должны быть целыми числами. Они не могут быть адресами, перемещаемыми в памяти.

3.2.4                                                  / Деление

expression1 / expression2

Делит одно выражение на другое.

Примечания:

Выражения должны быть целыми числами. Они не могут быть адресами, перемещаемыми в памяти.

3.2.5                                     MOD Деление по модулю

выражение1 MOD выражение2

Выдает остаток от деления.

Примечания:

Оба выражения должны быть целыми числами. Они не должны быть настраиваемыми адресами.

Например, 14 MOD 4 = 2, т.к. 14 / 4 дает остаток 2.

3.3                          . Оператор доступа к полю структуры

structvariable.field.

Используется для доступа к полю переменной структурного типа.

Примечания:

Structvariable - это имя переменной, описанной ранее как переменная структурного типа, а field - это имя поля внутри структуры.

Исполнительный адрес, формируемый данным оператором (.), является суммой смещения переменной structvariable и смещения поля field внутри структуры. Этот адрес является относительным внутри той группы или сегмента, где определена переменная structvariable.

Этот оператор эквивалентен использованию оператора сложе­ния (+) с индексными или базовыми операндами.

3.4                                      [] Оператор индексации

expression1[expression2]

Прибавляет значение выражения expression1 к значению выра­жения expression2. Этот оператор такой же, как и '+', за тем исключением, что здесь выражение expression1 не является обяза­тельным.

Примечания:

Если выражение expression1 задано, оно может быть целым значением, перемещаемым операндом или абсолютным символом. Expression2 может быть целым значением или абсолютным символом, а также перемещаемым операндом, в том случае, когда выражение expression1 не задано.

Этот оператор используется как правило для доступа к от­дельным элементам массива. Например, в следующей команде в ре­гистр AL помещается 3-й байт строки символов:

MOV                                  AL, STRING [2]

3.5 Операторы сдвига

3.5.1 SHL Сдвиг влево выражение SHL count

Сдвигает выражение влево на count битов.

Примечания:

Биты, сдвинутые за конец, теряются. При сдвиге вводятся нули. Если count больше или равен 16, результат равен 0.

Если сдвигаемое значение - слово, все 16 бит будут сдвину­ты. Однако, если значение - байт, сдвигаются только 8 бит.

3.5.2 SHR Сдвиг вправо

выражение SHR count

Сдвигает выражение вправо на count битов.

Примечания:

Биты, сдвинутые за конец, теряются. При сдвиге вводятся нули. Если count больше или равен 16, результат равен 0.

Если сдвигаемое значение - слово, все 16 бит будут сдвину­ты. Однако, если значение - байт, сдвигаются только 8 бит.

3.6 Побитовые логические операции

3.6.1 NOT Побитовое отрицание

NOT выражение

Производит над выражением побитовую операцию отрицания (инвертирования). Следующая таблица показывает результат приме­нения операции NOT к одному биту:

Бит Результат

0                                         1

1                                         0

3.6.2 AND Побитное логическое "И"

expression1 AND expression2.

Производит по битам операцию логического умножения над операндами expression1 и expression2. Следующая таблица показы­вает результаты применения операции AND к двум битам:

Бит Бит Результат

0                        0           0

0                        1           0

1                        0           0

1                        1           1

3.6.3 OR Побитовая логическая операция "ИЛИ"

expression1 OR expression2

Производит по битам операцию логического ИЛИ над операнда­ми expression1 и expression2. Следующая таблица показывает ре­зультаты применения операции OR к двум битам:

Бит Бит Результат

0                        0           0

0                        1           1

1                        0           1

1                        1           1

3.6.4                   XOR Побитовое логическое "исключающее ИЛИ"

expression1 XOR expression2

Производит по битам операцию логического исключающего ИЛИ над операндами expression1 и expression2. Следующая таблица по­казывает результаты применения операции XOR к двум битам:

Бит Бит Результат

0                        0           0

0                        1           1

1                        0           1

1

 

Лекция 5.


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



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