Р? Понятие сложного типа данных в ассемблере ^ Средства ассемблера для создания и обработки сложных структур данных ► Массивы ⅝* Структуры Ц» Объединения ⅜» Записи В предыдущих главах при разработке программ мы использовали данные двух типов. Ж Непосредственные данные, представляющие собой числовые или символьные значения и являющиеся частью команды. Непосредственные данные форми- руются программистом в процессе написания программы для конкретной ко- манды ассемблера. * Данные, описываемые с помощью ограниченного набора директив резервиро- вания памяти, позволяют выполнять самые элементарные операции по разме- щению и инициализации числовой и символьной информации. При обработке этих директив ассемблер сохраняет в своей таблице символов информацию о ме- стоположении данных (значения сегментной составляющей адреса и смеще- ния) и типе данных, то есть единицах памяти, выделяемых для размещения дан- ных в соответствии с директивой резервирования и инициализации данных. Эти два типа данных являются элементарными, или базовыми; работа с ними поддерживается на уровне системы команд процессора. Используя данные этих типов, можно формализовать и запрограммировать практически любую задачу. Но насколько это будет удобно — вот вопрос. Обработка информации в общем случае — процесс очень сложный. Это кос- венно подтверждает популярность языков высокого уровня. Одно из несомнен- ных достоинств языков высокого уровня — поддержка развитых структур данных. При их использовании программист освобождается от решения конкретных про- блем, связанных с представлением числовых или символьных данных, и получает возможность оперировать информацией, структура которой в большей степени отражает особенности предметной области решаемой задачи. В то же самое время, чем выше уровень такого абстрагирования от конкретного представления данных в компьютере, тем большая нагрузка должна ложиться на компилятор для созда- ния действительно эффективного кода. Ведь нам уже известно, что в конечном итоге все написанное на языке высокого уровня в компьютере будет представлено на уровне машинных команд, работающих только с базовыми типами данных. Та- ким образом, самая эффективная программа — программа, написанная в машин- ных кодах, но писать сегодня большую программу в машинных кодах — занятие довольно бессмысленное. С целью облегчения разработки программ в язык ассемблера на уровне его ди- ректив была введена поддержка нескольких сложных типов данных. Это позволи- ло несколько сгладить различия между языками высокого уровня и ассемблером. У программиста появилась возможность сочетать достоинства языка ассемблера и языков высокого уровня (в направлении абстрагирования от конкретного пред- ставления данных), что в итоге повышает эффективность конечной программы. TASM поддерживает следующие сложные типы данных: и массивы; структуры; объединения; записи. Разберемся более подробно с тем, как определить данные этих типов в программе и организовать работу с ними.