- •02H/03h - Чтение/запись секторов.
- •Язык Ассемблер
- •Сегментация памяти
- •Структура программы на языке Ассемблер
- •В более общем случае операнды могут входить как составные части в более сложные образования, называемые выражениями. Типы операторов
- •Режимы адресации
- •Директивы ассемблера
- •Директива задания исходных данных:
- •Директива использования сегментных регистров по умолчанию:
- •Упрощенные директивы определения сегмента
- •Идентификаторы, создаваемые директивой model
- •Модели памяти
- •Инструкции пересылки данных и двоичной арифметики
- •Запись программ на языке ассемблера
- •Пример записи формулы
- •Текст программы:
- •Варианты заданий
- •Циклические и разветвляющиеся программы
- •Команда сравнения
- •Безусловные переходы
- •Условный переход
- •Пример написания программы работы с массивами слов
- •Варианты заданий
- •Применение логических инструкций
- •Логические инструкции
- •Примеры использования логических команд
- •Пример выполнения работы
- •Варианты заданий
- •Обработка символьной информации с помощью функций dos
- •Программные прерывания и системные вызовы
- •Функция оан
- •Функция 0Bh
- •Пример выполнения работы
- •Варианты заданий
В более общем случае операнды могут входить как составные части в более сложные образования, называемые выражениями. Типы операторов
Возможные типы операторов ассемблера и синтаксические правила формирования выражений ассемблера.
Арифметические операторы
Операторы сдвига
Операторы сравнения
Логические операторы
Индексный оператор
Оператор переопределения типа
Оператор переопределения сегмента
Оператор именования типа структуры
Оператор получения сегментной составляющей адреса выражения
Оператор получения смещения выражения
Арифметические операторы. К ним относятся:
унарные “+” и “–”;
бинарные “+” и “–”;
умножения “*”;
целочисленного деления “/”;
получения остатка от деления “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 позволяет получить значение смещения выражения в байтах относительно начала того сегмента, в котором выражение определено
data
pole dw 5
...
.code
...
mov ax,seg pole
mov es,ax
mov dx,offset pole ;теперь в паре es:dx полный адрес pole
Режимы адресации
Регистровая прямая - операнд находится в регистре.
Обозначение - <регистр>,
< регистр > - АХ, ВХ, СХ, DX, SI, DI, BP, SP, AL, BL, СL, DL, AH, BH, CH, DH.
Пример:
mov АХ,SI ; переслать содержимое регистра SI в регистр АХ.
Непосредственная - непосредственный операнд (константа) присутствует в команде.
Обозначение - < константное выражение > .
mov AX, 093Ah ; занести константу 093Ah в регистр АХ.
Прямая - исполнительный адрес операнда присутствует в команде.
Обозначение - < переменная >+/-< константное выражение >.
mov AX, WW ; переслать в АХ слово памяти с именем WW
mov BX, WW+2 ; переслать в ВХ слово памяти отстоящее от переменной с
; именем WW на 2 байта.
Регистровая косвенная - регистр содержит адрес операнда.
Обозначение - [< регистр >],
< регистр > - ВХ, ВР, SI, DI.
mov [ BX ], CL ; переслать содержимое регистра CL по адресу, находящемуся
; в регистре ВХ.
