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


 

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

20907. Бизнес-план ЗАО «Пивзавод «Архар» 256 KB
  ЗАО «Пивзавод «Архар», производство пива по традиционно русским рецептам. В состав используемых помещений входят: цех для основного производства, кухня, пивбар. Также к основным фондам относится земельный участок, занимаемый данным предприятием
20908. Фінансовий облік, конспект лекцій 289.5 KB
  Фінансовий облік - це комплексний синтетичний облік усіх засобів та грошових коштів і всієї економічної діяльності підприємства, фірми, організації, установи. До його складу входять аналітичний облік розрахунків з постачальниками і покупцями, іншими організаціями та особами
20910. Исследование вращающихся трансформаторов 619 KB
  Основные теоретические сведения Вращающиеся поворотные трансформаторы ВТ электрические информационные микромашины переменного тока предназначенные для преобразования угла поворота в напряжение пропорциональное некоторым функциям угла например синусу или косинусу или самому углу поворота ротора. Вращающиеся трансформаторы используются в системах дистанционной передачи ДП угла повышенной точности; в качестве датчиков угла; счетнорешающих элементов аналоговых и аналоговоцифровых вычислительных устройств для решения геометрических...
20911. Исследование однофазных сельсинов 417.5 KB
  Систему синхронной связи передающую электрическим путем на расстояние угловые перемещения называют системой передачи угла или синхронного поворота. В системах электрического вала применяют трехфазные сельсины а в системах передачи угла однофазные сельсины. В зависимости от величины погрешности в индикаторной системе передачи угла сельсины делятся на четыре класса точности см. Параметр точности Класс точности 1 2 3 4 Погрешность следования в дистанционной передаче угла в индикаторном режиме угл.
20912. Исследование феррозондов 179 KB
  Это изменение достигается магнитным воздействием на сердечник с помощью обмоток возбуждения подключенных к источнику переменного тока. Здесь w1в и w2в обмотки возбуждения включенные встречно wвых выходная сигнальная обмотка. Встречное включение обмоток возбуждения расположенных симметрично относительно середины сердечника обеспечивает развязку цепей возбуждения и выхода и позволяет свести к минимуму величину выходного напряжения в отсутствие внешнего поля. При подаче в обмотки возбуждения переменного напряжения uв=uвмsint магнитная...
20913. Исследование статических тяговых характеристик силового электромагнита 265.5 KB
  При протекании тока по обмотке 3 электромагнита создается магнитный поток который проходит по магнитопроводу паразитному и рабочему воздушному зазорам. В последнем создается электромагнитная сила стремящаяся притянуть якорь электромагнита к стопу. Электромагнитное усилие определяется зависимостью 1 где коэффициент зависящий от конструктивных особенностей электромагнита; ток в обмотке; количество витков обмотки; зазор.
20914. Ознакомление с конструкциями и схемами включения электромагнитных реле 327.5 KB
  Основные теоретические сведения Реле это устройство в котором при достижении входной величиной определенного значения скачкообразно изменяется выходная величина. В зависимости от того на какое физическое явление реагирует воспринимающая система реле подразделяют на электромагнитные оптические химические механические пневматические и др. Реле используются для управления режимами работы аппаратуры или отдельных ее блоков систем устройств приборов и элементов а также для усиления преобразования контроля запоминания кодирования и...
20915. Исследование двигателей постоянного тока 578.5 KB
  Оборудование измерительные приборы и инструменты: лабораторная установка источники постоянного тока вольтметр амперметр тахометр магазин сопротивлений. В настоящее время в качестве исполнительных двигателей наиболее часто используются: двухфазные асинхронные двигатели с повышенным сопротивлением ротора; двигатели постоянного тока с независимым возбуждением или постоянными магнитами; 3 синхронные шаговые двигатели. В настоящей работе исследуется двигатель постоянного тока ДПТ.