Иллюстрированный самоучитель по Assembler


Структуры - часть 2


data segment


pat 1 meddata <1234567, 'м',1955, 1З/06/981, '15/06/98'>


pat2 meddata <1982234, 'м',1932, '18/06/98', '25/06/98 '>


pat3 meddata <4389012, 'ж',1966, '01/12/97', '15/12/97'>


pattemp meddata <>


data ends

Имена patl, pat2 и т.д. будут служить именами переменных, каждая из которых содержит полный комплект данных об одном пациенте. Угловые скобки ограничивают конкретные данные, поступающие в каждую структурную переменную. Для переменной с именем pattemp транслятор выделит в памяти 23 байт, поместив в нее в точности то, что было указано в описании структуры (нули и два символьные шаблона для даты):

0,0,0, ' / / ',' / / '

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

mov EAX,patl.index ;ЕАХ=1234567


mov SI,offset patl.datein ;31=смещение элемента patl.datein


mov DL,pat3.sex ;DL='ж'

Особенности использования в приложениях DOS 32-разрядных регистров (ЕАХ в первой строке приведенного фрагмента) будут описаны в гл. 4.

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

mov BX,offset pat3 ;ВХ=смещение pat3


mov EAX,[BX].index ;EAX=4389012


mov [BX].sех='м' ;Программная инициализация


Имена элементов структуры являются, в сущности, смещениями к этим элементам от начала структуры. В некоторых случаях их можно использовать в этом качестве и без предваряющей точки:

mov BX, off set pat2 ;ВХ=смещение pat2


add BX,sex ;ВХ=смещение pat2.sex


mov DL, [BX] ;DL='M'


mov SI,birth ;SI=5 (сомнительная команда)

Записи


Записи, как и структуры, представляют собой шаблоны, накладываемые на реальные данные с целью введения удобных мнемонических обозначений отдельных элементов данных. В отличие от структур, дающих имена байтам, словам, двойным словам или целым массивам, в записях определяются строки битов внутри байтов, слов или двойных слов.




Начало  Назад  Вперед



Книжный магазин