Режимы адресации

Типы операторов

Возможные типы операторов ассемблера и синтаксические правила формирования выражений ассемблера.

  • Арифметические операторы
  • Операторы сдвига
  • Операторы сравнения
  • Логические операторы
  • Индексный оператор
  • Оператор переопределения типа
  • Оператор переопределения сегмента
  • Оператор именования типа структуры
  • Оператор получения сегментной составляющей адреса выражения
  • Оператор получения смещения выражения

Арифметические операторы. К ним относятся:

    • унарные “+” и “”;
    • бинарные “+” и “”;
    • умножения “*”;
    • целочисленного деления “/”;
    • получения остатка от деления “mod”.

Эти операторы расположены на уровнях приоритета 6, 7, 8,

tab_size equ 50 ;размер массива в байтахsize_el equ 2 ;размер элементов;вычисляется число элементов массива и заносится в регистр cx mov cx,tab_size / size_el ;оператор “/”Операторы сдвига выполняют сдвиг выражения на указанное количество разрядов, mask_b equ 10111011 mov al,mask_b shr 3 ;al=00010111

Логические операторы выполняют над выражениями побитовые операции. Выражения должны быть абсолютными, то есть такими, численное значение которых может быть вычислено транслятором.

flags equ 10010011 mov al,flags xor 01h ;al=10010010;пересылка в al поля flags с ;инвертированным правым битом

Индексный оператор [ ]транслятор их наличие воспринимает как указание сложить значение выражение_1 за этими скобками с выражение_2, заключенным в скобки

mov ax,mas[si] ;пересылка слова по адресу mas+(si) в регистр ax

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

datapole dw 5....code...

mov ax,seg pole

mov es,ax

mov dx,offset pole ;теперь в паре es:dx полный адрес pole

1. Регистровая прямая - операнд находится в регистре.

· Обозначение - <регистр>,

· < регистр > - АХ, ВХ, СХ, DX, SI, DI, BP, SP, AL, BL, СL, DL, AH, BH, CH, DH.

Пример:

mov АХ,SI ; переслать содержимое регистра SI в регистр АХ.

2. Непосредственная -непосредственный операнд (константа) присутствует в команде.

Обозначение - < константное выражение > .

mov AX, 093Ah ; занести константу 093Ah в регистр АХ.

3. Прямая - исполнительный адрес операнда присутствует в команде.

Обозначение - < переменная >+/-< константное выражение >.

· mov AX, WW ; переслать в АХ слово памяти с именем WW

· mov BX, WW+2 ; переслать в ВХ слово памяти отстоящее от переменной с

· ; именем WW на 2 байта.

4. Регистровая косвенная - регистр содержит адрес операнда.

· Обозначение - [< регистр >],

· < регистр > - ВХ, ВР, SI, DI.

mov [ BX ], CL ; переслать содержимое регистра CL по адресу, находящемуся

; в регистре ВХ.