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-разрядные адреса, то аналогичным способом можете заполнить и использовать описанное выше объединение.


 

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

30998. Создание эффективно работающей компьютерной сети для организации “Х” в которой находится 29 ПЭВМ 555.31 KB
  Выбор топологии сети типа кабеля и видов необходимого коммуникационного оборудования. Структурная схема вычислительной сети и описание принципов работы.Уязвимость сетис. Сетевые концентраторы также могут иметь связь друг с другом объединяя вместе подсети различных участков здания.
30999. Форма, содержание и ответственность кредитного договора 170 KB
  Предмет кредитного договора. Форма содержание и ответственность кредитного договора. Форма кредитного договора. Содержание кредитного договора. Ответственность по кредитному договору. Виды кредитного договора...
31000. Психосоматика, отношения и здоровье 773.5 KB
  Отношения в нашей жизни занимают центральное место. Даже если на этот вопрос ответить положительно это повлечет за собой новый вопрос: А в чем этот смысл Как и всегда в жизни ответ на вопрос зависит от индивидуальной точки зрения. В прежние времена оно служило существенным основанием совместной жизни двух людей. В этой книге мы рассмотрим вопрос о смысле партнерства в широком аспекте и мы рассмотрим этот вопрос не сам по себе а свяжем его с вопросом о смысле жизни.
31001. Лабораторные исследования мочи 4.32 MB
  Исследования физических свойств мочи. У КРС и лошадей пробу мочи обычно получают при естественном акте мочеиспускания. У быков для ускорения получения мочи можно приложить к отверстию препуция ватный тампон смоченный тёплой водой.
31002. История физической культуры и спорта 231 KB
  Введение в предмет История физической культуры.Дисциплина которую нам предстоит изучить История физической культуры и спорта. Роль физической культуры состояла также в удовлетворении потребностей общества в культурнозрелищных мероприятиях.
31003. Ощущения и Восприятие 25.5 KB
  Актуальность выбранной темы заключается в том что ощущая воспринимая наглядно представляя себе любой предмет любое явление человек должен както анализировать обобщать конкретизировать другими словами мыслить о том что отражается в ощущениях и восприятиях. Следовательно без участия психических процессов: восприятия и ощущения человеческая деятельность невозможна. Вопросы рассматриваемые в ходе лекции: Общая характеристика Ощущения и Восприятие Свойства восприятия Виды восприятия Свойства ощущений Виды ощущений Общая...
31004. История возникновения и развития Веб 106.09 KB
  История возникновения и развития Веб 1. Была запущена первая вебслужба электронной почты – HoTMaiL. Появился iPhone который почти полностью отвечает за повышенный интерес к мобильным вебприложениям. Логическая модель Всемирная паутина World Wide Web Веб [20] – распределенная система предоставляющая доступ к связанным между собой документам расположенным на различных компьютерах подключенных к Интернету.
31005. Лабораторная диагностика микоплазмозов 210 KB
  Животных вакцинированных против хламидийного аборта серологически не исследуют в течение одного года после вакцинации. Молекулярногенетический метод Метод предназначен для выявления ДНК хламидий с помощью полимеразной цепной реакции ПЦР в патологическом материале от животных. При получении нарастания титра антител в парных пробах сыворотки крови больных или переболевших животных в РДСК РНСК РНГА ИФА в два и более раз диагноз считают предварительным а окончательным после получения положительного результата любого прямого метода...
31006. ОСНОВЫ ИНФОРМАТИЗАЦИИ ОБЩЕГО СРЕДНЕГО ОБРАЗОВАНИЯ 8.94 MB
  Переход от разрозненного использования средств ИКТ к системной информатизации образования. Средства информатизации образования Информационные и коммуникационные технологии ИКТ с каждым днем все больше проникают в различные сферы образовательной деятельности. В большинстве случаев использование средств информатизации оказывает реальное положительное влияние на интенсификацию труда учителей школ а также на эффективность обучения школьников. В основе средств ИКТ используемых в сфере общего среднего образования находится персональный...