
lect_3.ppt
- Количество слайдов: 14
ЛЕКЦИЯ 3 СИНТАКСИС АССЕМБЛЕРА Предложения ассемблера: • команды или инструкции – символические аналоги машинных команд. В процессе трансляции преобразуются в соответствующие команды системы команд микропроцессора; • макрокоманды – оформляемые определенным образом предложения текста программы, замещаемые в процессе трансляции другими предложениями; • директивы – указания транслятору ассемблера на выполнение некоторых действий. Не порождают машинных команд в объектном коде; • строки комментариев – любые символы. Игнорируются транслятором.
ФОРМАТЫ ПРЕДЛОЖЕНИЙ АССЕМБЛЕРА
КЛАССИФИКАЦИЯ ОПЕРАНДОВ • Постоянные (непосредственные операнды) Num equ 5 imd = num-2 mov al, num add al, imd mov al, 5 • Адресные операнды – задают физическое расположение операнда в памяти путем указания двух составляющих адреса – сегмента и смещения mov mov ax, 0000 h ds, ax ax, ds: 0000 h
• Перемещаемые операнды – любые символические имена, представляющие некоторые адреса памяти. . data name dw 120 …. code … mov ax, name • Счетчик адреса jmp $+3 cld ; длина этой команды 1 байт mov al, 1 • Регистровый операнд – имя регистра • Базовый и индексный операнды • Структурные операнды • записи
ВЫРАЖЕНИЯ АССЕМБЛЕРА Выражения представляют собой комбинации операндов и операторов, рассматриваемые как единое целое. Операторы ассемблера • Арифметические операторы • Операторы сдвига (shl , shr) Bitmask equ 1011 … mov al , bitmask shr 3
• операторы сравнения - возвращают значение «истина» (1) или «ложь» (0) : eq, ne, lt, le, gt, ge tab_size equ 30 … mov al , tab_size ge 50 cmp al , 0 je m 1 • логические операторы – выполняют побитовые операции над абсолютными выражениями (and, or, xor, not) • индексный оператор [ ] – означает указание сложить значение выражения перед скобками с выражением, заключенным в скобки • оператор переопределения типа – ptr wrd dw 0 … mov al , byte ptr wrd +1 • оператор переопределения сегмента - : (двоеточие). При допустимом использовании этого оператора транслятор, формируя машинную команду, добавляет префикс замены сегмента
• операторы получения сегментной составляющей адреса и смещения – seg, offset. ДИРЕКТИВЫ СЕГМЕНТАЦИИ
Атрибуты директивы SEGMENT • Атрибут выравнивания сегмента (тип выравнивания) – (BYTE, WORD, DWORD, PARA, PAGE, MEMPAGE). • Атрибут комбинирования сегментов (тип комбинирования) – (PRIVATE, PUBLIC, COMMON, AT xxx, STACK). • Атрибут класса сегмента (тип класса) – заключенная в кавычки строка, влияющая на порядок следования сегментов при сборке программы из сегментов нескольких модулей (пример: «CODE» , «DATA» ). • Атрибут размера сегмента – (USE 16, USE 32) определяет использование 16 или 32 разрядного смещения для формирования адресов.
Формат директивы ASSUME
УПРОЩЕННЫЕ ДИРЕКТИВЫ СЕГМЕНТАЦИИ
Директива MODEL Значения параметра модификатор : use 16, use 32, dos
Значения параметра модель памяти : Идентификаторы, создаваемые директивой MODEL: @code, @data, @fardata? , @curseg, @stack – физические адреса соответствующих сегментов.
ПРИМЕРЫ ОФОРМЛЕНИЯ ПРОГРАММ Использование стандартных директив сегментации _data segment word public “data” massage db “Сообщение$” _data ends stack segment stack “stack” db 256 dup (“? ”) stack ends _text segment word public “code” start: assume cs: _text, ds: _data, ss: stack mov ax, _data mov ds, ax mov ah, 09 h mov dx, offset massage int 21 h mov ax, 4 c 00 h int 21 h _text ends end start Использование упрощенных директив сегментации masm model small. data massage db “Сообщение$”. stack 100 h. code start: mov ax, @data mov ds, ax mov ah, 09 h mov dx, offset massage int 21 h mov ax, 4 c 00 h int 21 h end start
lect_3.ppt