ϊι Программа на ассемблере, отражая особенности архитектуры процессора, со- стоит из сегментов — блоков памяти, допускающих независимую адресацию. ж Каждый сегмент может состоять из предложений языка ассемблера четырех типов: команд ассемблера, макрокоманд, директив ассемблера и строк коммен- тариев. * Формальное описание синтаксиса языков программирования, в том числе ас- семблера, удобно выполнять с использованием такихметасинтаксическихязы- ков, как синтаксические диаграммы и нормальные формы Бэкуса-Наура. Син- таксические диаграммы более наглядны, а расширенные формы Бэкуса-Наура более компактны. Предложения ассемблера формируются из лексем, представляющих собой син- таксически неразделимые последовательности допустимых символов языка, имеющие смысл для транслятора. ⅜і Ассемблер допускает большое разнообразие типов операндов, которые могут задаваться неявно или содержаться непосредственно в команде, в регистрах и в памяти. В двухоперандной машинной команде возможны следующие соче- тания операндов: ? регистр — регистр; D регистр — память; D память — регистр; D непосредственный операнд — регистр; П непосредственный операнд — память. Ш Операндами в команде могут быть числа, регистры, ячейки памяти, символь- ные идентификаторы. При необходимости операнд может быть задан выраже- нием. s Ассемблер позволяет организовать гибкую прямую и косвенную адресацию опе- рандов в памяти. ⅞ Исходный текст программы разбивается на сегменты с помощью директив сег- ментации, которые делятся на стандартные и упрощенные. з Упрощенные директивы сегментации позволяют унифицировать интерфейс с языками высокого уровня и облегчают разработку программ, повышая нагляд- ность кода. II Транслятор TASM поддерживает разнообразные типы данных, которые делят- ся на простые (базовые) и сложные. Простые типы служат основой для постро- ения сложныхтипов данных. III Директивы описания простых типов данных позволяют резервировать и при необходимости инициализировать области памяти заданной длины. * Доступ к данным в памяти должен производиться с учетом принципа их разме- щения процессорами IA-32 — «младший байт по младшему адресу». * Каждой переменной, объявленной с помощью директивы описания данных, ассемблер назначает атрибуты, доступ к которым можно получить с помощью соответствующих операторов ассемблера.