**Часть 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 г.