Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по Ассемблеру.docx
Скачиваний:
12
Добавлен:
09.11.2018
Размер:
125.1 Кб
Скачать
    1. Операции

Встроенный ассемблер поддерживает операции, перечисленные в следующей таб­лице (в порядке убывания приоритета).

Операция

Комментарий

&

Перекрытие идентификатора

( )

Подвыражение

[ ]

Ссылка на память

. (точка)

Селектор структуры

HIGH LOW

Доступ к байту в слове

+ -

Унарные операции задания знака

OFFSET SEG TYPE PTR *

/ MOD SHL SHR

+ -

Бинарные операции

NOT AND OR XOR

Операции над битами

Операция &

Осуществляет перекрытие идентификатора: следующий за знаком & идентифика­тор считается определенным в программе, даже если он совпадает с зарезервированным словом. Например:

var

Ch: Byte;

mov ch ,0 {Посылаем 0 в регистр СН}

mov &Ch,0 {Посылаем 0 в переменную Ch}

Операция ()

Круглые скобки используются обычным для Паскаля образом - для изменения пси рядка исчисления выражения (подвыражение, ограниченное скобками, вычисляется в первую очередь). Если перед скобками стоит имя типа, все выражение приобретает указанный тип. Например:

mov ах, ((1+2)*3+4)*5 {АХ = 65} mov bx, 1+2*3+4*5 {ВХ = 21}

Операция [ ]

Определяет ссылку на память. Выражение внутри скобок вычисляется в первую очередь. Обычно оно связывается с регистрами BX, BP, SI, и DI и может использовать операции + и - для указания индексации. Например:

mov ah,100 {АН = 100}

mov ah, [100] {Загружаем в АH содержимое байта по адресу DS:100}

Операция. (точка)

Селектор элемента структуры. Результат - сумма выражений до и после точки с типом второго выражения. Например:

var

R: record

X: Word; Y: Byte

end;

mov ax, R.X

mov R.Y, al

Операции HIGH и LOW

HIGH возвращает старший, a LOW - младший байт выражения типа слова, следующего за символами операции. Выражение должно иметь абсолютное непосредственное значение. Например:

mov al, High $1000 {AL= $10)

Операция OFFSET

Возвращает смещение выражения, следующего за операцией. Результат имеет непосредственное значение. Например:

mov ах, Х {АХ = слово по адресу переменной X)

mov ax, offset X (АХ = смещение адреса X}

Операция SEG

Возвращает сегмент выражения, следующего за операцией. Результат имеет непо­средственное значение.

Операция PTR

Осуществляет приведение типа. Результат - ссылка на память со значением выра­жения после операции и типом выражения до операции. Например:

Function Swap (X: Integer): Integer;

{Меняет местами байты в слове X}

begin

asm

mov ax, X

mov BYTE PTR @Result, ah

mov BYTE PTR @Result+1, al

end;

end;

Операции * и /

* - умножение, / - целочисленное деление. Оба выражения должны иметь непо­средственные абсолютные значения, такое же значение имеет и результат операции. Например:

mov ax,2*2 {АХ = 4}

mov ax,17/3 {АХ = 5}

Операция MOD

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

mov ах,17 mod 3 {АХ= 2}

Операции SHL и SHR

Осуществляют логический сдвиг влево (SHL) или вправо (SHR) выражения, стоящего до операции, на количество разрядов, определяемое выражением после операции. Оба выражения должны иметь непосредственные абсолютные значения, такое значение имеет и результат операции. Например:

mov ah,l shl 7 {Ah =$80 =128)

Бинарная операция +

Осуществляет сложение двух выражений. Выражения могут быть непосредственными значениями или ссылками на память, но только одно из них может быть перемещаемым. Если одно из выражений - ссылка на память, результат также определяет ссылку на память, а если одно из выражений - перемещаемое, результат будет перемещаемым.