4498

Объединения в языке ассемблер

Лекция

Информатика, кибернетика и программирование

Объединения в языке ассемблер Представим ситуацию, когда мы используем некоторую область памяти для размещения некоторого объекта программы (переменной, массива или структуры). Вдруг после некоторого этапа работы у нас отпала надобность в использова...

Русский

2012-11-21

24.14 KB

6 чел.

Объединения в языке ассемблер

Представим ситуацию, когда мы используем некоторую область памяти для размещения некоторого объекта программы (переменной, массива или структуры). Вдруг после некоторого этапа работы у нас отпала надобность в использовании этих данных. Обычно память останется занятой до конца работы программы. Конечно, в принципе, ее можно было бы использовать для хранения других переменных, но при этом без принятия специальных мер нельзя изменить тип и имя. Неплохо было бы иметь возможность переопределить эту область памяти для объекта с другим типом и именем. Язык ассемблера предоставляет такую возможность в виде специального типа данных, называемого объединением.

Объединение — тип данных, позволяющий трактовать одну и ту же область памяти как имеющую разные типы и имена.

Описание объединений в программе напоминает описание структур, то есть сначала описывается шаблон, в котором с помощью директив описания данных перечисляются имена и типы полей:

имя_объединения UNION

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

имя_объединения ENDS

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

Обращение к элементам объединения происходит по их именам, но при этом нужно, конечно, помнить о том, что все поля в объединении накладываются друг на друга.

Одновременная работа с элементами объединения исключена. В качестве элементов объединения можно использовать и структуры.

Листинг 7, который мы сейчас рассмотрим, примечателен тем, что кроме демонстрации использования собственно типа данных “объединение” в нем показывается возможность взаимного вложения структур и объединений.

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

  1.  16-битного смещения;
  2.  32-битного смещения;
  3.  пары из 16-битного смещения и 16-битной сегментной составляющей адреса;
  4.  в виде пары из 32-битного смещения и 16-битного селектора.

Какие из этих указателей можно применять в конкретной ситуации, зависит от режима адресации (use16 или use32) и режима работы микропроцессора.

Так вот, описанный в листинге 7 шаблон объединения позволяет нам облегчить формирование и использование указателей различных типов.

Листинг 7 Пример использования объединения

masm

model small

stack 256

.586P

pnt struc  ;структура pnt, содержащая вложенное объединение

union   ;описание вложенного в структуру объединения

offs_16 dw ?

offs_32 dd ?

ends   ;конец описания объединения

segm dw ?

ends   ;конец описания структуры

.data

point union ;определение объединения, содержащего вложенную структуру

off_16 dw ?

off_32 dd ?

point_16 pnt <>

point_32 pnt <>

point ends

tst db "Строка для тестирования"

adr_data point <> ;определение экземпляра объединения

.code

main:

mov ax,@data

mov ds,ax

mov ax,seg tst

;записать адрес сегмента строки tst в поле структуры adr_data

 mov adr_data.point_16.segm,ax

;когда понадобится, можно извлечь значение из этого поля обратно, к примеру, в регистр bx:

 mov bx,adr_data.point_16.segm

;формируем смещение в поле структуры adr_data

mov ax,offset tst ;смещение строки в ax

 mov adr_data.point_16.offs_16,ax

;аналогично, когда понадобится, можно извлечь значение из этого поля:

 mov bx,adr_data.point_16.offs_16

exit:

mov ax,4c00h

int 21h

end main

Когда вы будете работать в защищенном режиме микропроцессора и использовать 32-разрядные адреса, то аналогичным способом можете заполнить и использовать описанное выше объединение.


 

А также другие работы, которые могут Вас заинтересовать

9657. Финансовые риски организации и их влияние на предпринимательство 181.5 KB
  Финансовые риски организации и их влияние на предпринимательство Основанием для оценки финансового риска по-прежнему является системный анализ сути (содержания, взаимосвязей) финансово-кредитной деятельности. Напомним, что по своему содержанию подо...
9658. Коммерческие и посреднические риски и их роль в предпринимательской деятельности 240 KB
  Коммерческие и посреднические риски и их роль в предпринимательской деятельности При осуществлении коммерческой деятельности риск возникает на различных стадиях продвижения товаров и услуг как собственно внутри страны, где работает предприниматель,...
9659. Направления государственного регулирования 32.5 KB
  Направления государственного регулирования. Коммерческая деятельность, как и любая иная предпринимательская деятельность, в значительной степени регулируется государством. Прежде всего это относится к правовым основам, особенностям создания и функци...
9660. Правовая и нормативная база государственного регулирования коммерческой деятельности 36 KB
  Правовая и нормативная база государственного регулирования коммерческой деятельности. Коммерческое право - совокупность правовых норм, разработанных для обслуживания товарного оборота и регулирующих взаимоотношения между профессиональными предп...
9661. Стимулирование коммерческой деятельности 26.5 KB
  Стимулирование коммерческой деятельности. В наше время предприятия более чем когда-либо вынуждены изыскивать новые и эффективные способы увеличения объема продаж. Для этого они в своей коммерческой деятельности прибегают к стимулированию. В течение ...
9662. Стандартизация деятельность по установлению правил и характеристик 47 KB
  Стандартизация. Стандартизация - это деятельность по установлению правил и характеристик в целях их добровольного многократного использования, направленная на достижение упорядоченности в сферах производства и обращения продукции и повышение ко...
9663. Лицензирование. Государственная регистрация субъектов предпринимательства 49.5 KB
  Лицензирование. Эффективным средством воздействия государственных органов и органов местного самоуправления на предпринимательство является государственная регистрация субъектов предпринимательства и лицензирование отдельных видов деятельности. Отеч...
9664. Сертификация продукции и услуг 52 KB
  Сертификация продукции и услуг. Сертификация - это деятельность специальных органов исполнительной власти, прошедших государственную регистрацию в качестве системы сертификации в порядке, установленном Госстандартом России. Сертификация устанавливае...
9665. Экспертиза и гигиеническая оценка товаров 47 KB
  Экспертиза и гигиеническая оценка товаров. Сертификация услуг представляет собой процедуру подтвержденная соответствия, посредством которой независимая от исполнителя услуг и потребителя (покупателя) организация удостоверяет в письменной форме, что...