**Часть 2** **Структура** – составной объект, занимающий несколько соседних ячеек памяти. Компоненты структуры называются полями, они могут быть разного типа (размера). Доступ к полям осуществляется по именам. Описание типа структуры: ```asm <имя типа> STRUC <имя поля> ………….. <имя поля> <имя типа> ENDC ``` Например: структура **DATE** с полями $Y$ – год, $M$ - месяц, $D$ – день ```asm DATE STRUC Y DW 2013 M DB 2 D DB ? DATE ENDS ``` Описание типа структуры может размещаться в любом месте программы, но обязательно до описания переменных этого типа. Имена полей не должны совпадать с именами других объектов программы. Также в ассемблере не допускается вложенность структур. В ассемблере имя поля структуры относится к простейшим константным выражениям и его значением является смещение данного поля относительно начала структуры. При выделении памяти под переменную данного типа ассемблер размещает ее поля в соседних ячейках памяти. После описания типа структуры можно описывать переменные этого типа. Такие переменные называются структурами и описываются так: ```asm имя_переменной имя_типа <начальное значение> ``` В ассемблере одной директивой можно описать сразу несколько структур, т.е. можно описать массив, элементами которого являются структуры. Для этого в директиве указывается несколько операндов и/или конструкция повторения **DUP**. Например: ```asm DTS DATE <2007,12,5>, 10 DUP (<>) ``` Здесь описывается массив из 11 структур типа **DATE**, причем поля первой из них будут иметь следующие начальные значения: 2007, 12 и 5, а остальные 10 структур получат одни и те же начальные значения, взятые по умолчанию: 2013, 2, ?. При этом имя **DTS** получит только первая структура, остальные остаются безымянными и доступ к ним осуществляется по адресным выражениям вида **DTS+4**, **DTS+8** и т.д. Чтобы сослаться на поле структуры используется конструкция: ```asm <имя переменной структуры>.<начальное поле> ``` Например: ```asm DTS.M ``` Такая конструкция обозначает ту ячейку памяти, которую занимает указанное поле данной структуры. Встречая эту конструкцию, ассемблер заменяет ее на адрес данной ячейки. **Задание 3:** Дана структура **Food** с полями: название блюда, основной ингредиент, наличие мяса, калорийность блюда и массив **D** типа структуры, где собрана информация о 10 блюдах. Записать в регистр **DI** количество блюд без мяса. **Требования к расчетно-пояснительной записке для курсовой работы:** Содержание должно соответствовать содержанию курсовой работы из методички по самостоятельной работе студентов (раздел 6). Правила оформления (шрифт, интервал и т. д.) также можно посмотреть в методичке (раздел 10). Защита курсовой работы состоится с 18 по 22 декабря. За 2-3 дня до защиты расчетно-пояснительную записку необходимо сдать на проверку. Техническое задание согласовать до 17 ноября 2023 г.