Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Методы работы со структурой

Читайте также:
  1. I. Общая характеристика работы
  2. II. Организация выполнения курсовой работы
  3. III. Порядок работы менеджера по бронированию
  4. V. ОРГАНИЗАЦИЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
  5. Авторский текст как предмет работы редактора. Основные характеристики текста.
  6. Административные методы природоохранного регулирования. Рынок прав на загрязнение окружающей среды.
  7. Алгоритм логопедической работы в ДОУ (группе) для детей с нарушениями речи

Для обращения к полю структуры используется специальный оператор — символ «.» (точка) следующим образом:

адресное__выражение.имя_поля_структуры

Здесь:

адреснов_выражение — идентификатор переменной некоторого структурного типа или выражение в скобках в соответствии с указанными ниже синтаксическими правилами (рис. 12.1);

имя_поля_структуры — имя поля из шаблона структуры. Это на самом деле тоже адрес, а точнее, смещение поля от начала структуры. Таким образом оператор. вычисляет выражение:

(адресное_выражение) + (имя_поля_структуры)

Пусть требуется извлечь в ах значения поля с возрастом. Так как вряд ли возраст трудоспособного человека будет больше величины 99 лет, то после помещения содержимого этого символьного поля в регистр ах его будет удобно преобразовать в двоичное представление командой aad. Будьте внимательны, так как из-за принципа хранения данных «младший байт по младшему адресу» старшая цифра возраста будет помещена в аl, а младшая – в ah. Для корректировки достаточно использовать команду xchg al,ah;

mov ax,word ptr storl.age;в al возраст storl

xchg ah.al

;a можно и так:

lea bx, storl

mov ax,word ptr [bx].age

xchg ah,al

Определение массива из 10 структур типа worker:

mas_str worker 10 dup (<>)

Дальнейшая работа с массивом структур производится так же, как и с одномерным массивом. Здесь возникает вопросы: как определить размер массива и как организовать индексацию элементов массива?

Аналогично другим идентификаторам, определенным в программе, транслятор назначает имени типа структуры и имени переменной с типом структуры атрибут типа. Значением этого атрибута является размер в байтах, занимаемый полями этой структуры. Извлечь это значение можно с помощью оператора type. После того, как стал известен размер экземпляра структуры, организовать индексацию в массиве структур не представляет особой сложности. К примеру:

worker struc

worker ends

mas_str worker 10 dup (<>)

mov bx,type worker;bx=77

lea di,mas_str

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

mov сх,10

cycl:

mov dl,[di].sex

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

add di,bx;к следующей структуре в массиве mas_srt

loop cycl

Копирование поля из одной структуры в соответствующее поле другой структуры. Копирование поля nam третьего сотрудника в поле nam пятого сотрудника:

worker struc

worker ends

mas_str worker 10 dup (<>)

 

mov bx, offset mas_str

mov si,(type worker)*2;si=77*2

add si,bx

mov di,(type worker)*4;s1=77*4

add di,bx

mov cx, 30

rep movsb

На прилагаемой к книге дискете в каталоге.. \lessnl2\struct\ приведена програм­ма, которая осуществляет работу с базой данных о сотрудниках. На ее примере вы можете глубже познакомиться с тем, как организовать работу со структурами в своей программе. Возможно, для читателя имеет смысл и полном объеме иссле-. довать работу этой программы после знакомства с макрокомандами на следую­щем уроке.

 


Дата добавления: 2015-08-03; просмотров: 71 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Структуры| Объединения

mybiblioteka.su - 2015-2024 год. (0.005 сек.)