Инструменты пользователя

Инструменты сайта


examination:asm:question21

Вопрос №21. Описание и использование структур на ЯА. Примеры

Структуры

Часто в приложениях возникает необходимость рассматривать некоторую совокупность данных разного типа как некоторый единый тип. Это очень актуально, например, для программ баз данных, где необходимо связывать совокупность данных разного типа с одним объектом.

структура — это тип данных, состоящий из фиксированного числа элементов разного типа. Для использования структур в программе необходимо выполнить три действия:

1.Задать шаблон структуры. По смыслу это означает определение нового типа данных, который впоследствии можно использовать для определения переменных этого типа.

2.Определить экземпляр структуры. Этот этап подразумевает инициализацию конкретной переменной заранее определенной (с помощью шаблона) структурой.

3.Организовать обращение к элементам структуры.

Описать структуру в программе означает лишь указать ее схему или шаблон; память при этом не выделяется. Этот шаблон можно рассматривать лишь как информацию для транслятора о расположении полей и их значении по умолчанию.

Определить структуру — значит, дать указание транслятору выделить память и присвоить этой области памяти символическое имя.

Описать структуру в программе можно только один раз, а определить — любое количество раз.

Описание шаблона структуры имеет следующий синтаксис:

имя_структуры STRUC

<описание полей>

имя_структуры ENDS

Здесь <описание полей> представляет собой последовательность директив описания данных db, dw, dd, dq и dt. Их операнды определяют размер полей и, при необходимости, начальные значения. Этими значениями будут, возможно, инициализироваться соответствующие поля при определении структуры.

При описании шаблона, память не выделяется, так как это всего лишь информация для транслятора.

Местоположение шаблона в программе может быть поизвольным, но, следуя логике работы однопроходного транслятора, он должен быть расположен до того места, где определяется переменная с типом данной структуры.

Рассмотрим работу с структурами на примере моделирования базы данных о сотрудниках некоторого отдела.

worker struc ;информация о сотруднике

nam db 30 dup (' ') ;фамилия, имя, отчество

sex db 'м' ;пол, по умолчанию 'м' — мужской

position db 30 dup (' ') ;должность

age db 2 dup(‘ ’) ;возраст

standing db 2 dup(‘ ’) ;стаж

salary db 4 dup(‘ ’) ;оклад в рублях

birthdate db 8 dup(‘ ’) ;дата рождения

worker ends

К примеру:

worker struc

worker ends

mas_sotr worker 10 dup (<>) ;определим массив из 10 структур типа worker

mov	bx,type worker	;bx=77
lea	di,mas_sotr

;извлечь и вывести на экран пол всех сотрудников:

mov	cx,10

cycl:

mov	al,[di].sex

… ;вывод на экран содержимого поля sex структуры worker

add	di,bx	;к следующей структуре в массиве mas_sort
loop	cycl
examination/asm/question21.txt · Последние изменения: 2014/01/15 08:12 (внешнее изменение)