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


 

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

6923. Характеристики среды распространения влияющих на ЭМС 70 KB
  Характеристики среды распространения влияющих на ЭМС Ослабление определяется: особенностями распространения радиоволн различных частотных диапазонов отражение и рассеяние в тропосфере образование тропосферных волноводов отраж...
6924. Излучающие свойства и связь экранов 44 KB
  Излучающие свойства и связь экранов. Из-за неполного экранирования на внешних поверхностях экранов и элементов фидеров протекают электрические токи. Связь элементов ИП с РП определяется: действие полей на антенны РП появление наведенных...
6925. Блокирование, перекрестные искажения и интермодуляция 64.5 KB
  Блокирование, перекрестные искажения и интермодуляция. Воздействие помехи, значительно превышающей по уровню полезный сигнал, возможно помимо основного и побочного каналов приема. Влияние проявляется в виде: блокирование - изменение уровн...
6926. Индустриальные помехи 44.5 KB
  Индустриальные помехи. - электромагнитные помехи создаваемые различными электронными и электротехническими устройствами используемые в технике и быту. Причины появления: в цепях устройств протекают переменные электрические токи и создание поме...
6927. Методы анализа ЭМС 38 KB
  Методы анализа ЭМС. Анализ ЭМС проводят с целью определения возможности совместной работы радиотехнических, электронных и электротехнических средств. Группы задач: Исследование показателей ЭМС устройств и их элементов. Исследование элект...
6928. Расчет источников вторичного питания 132.5 KB
  Расчет источников вторичного питания Расчет трансформатора. Типовой источник электропитания содержит трансформатор, выпрямитель и сглаживающий фильтр, поэтому расчет состоит из определения параметров трансформатора, выборе диодов выпрямителя и...
6929. Шум и его влияние на организм. Предупреждение вредного действия шума на производстве 71.5 KB
  Шум - беспорядочное сочетание различных по силе и частоте звуков способен оказывать неблагоприятное воздействие на организм. Источником шума является любой процесс, вызывающий местное изменение давления или механические колебания в твердых, жи...
6930. Хаотическое и структурное программирование 107 KB
  Хаотическое и структурное программирование Для начального периода развития программотехники, когда программы были штучным продуктом, характерен стиль программирования, который впоследствии получил название хаотическое программирование....
6931. Материя. Категория и атрибуты бытия 123 KB
  Введение Нас, людей, как мыслящих существ, естественно интересует вопрос: как возник наш человеческий мир, что ему предшествовало, благодаря чему он стал возможным? Что представляет собой реальный предмет, реальный мир? Каково его бытие? Мы, ко...