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


 

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

56205. Проблемы защиты прав правообладателя по договору коммерческой концессии 101.43 KB
  Объектом данного исследования являются общественные отношения, которые возникают между участниками предпринимательской деятельности, осуществляемой с применением франчайзинга.
56206. Інтерактивні методи як інноваційна діяльність сучасного вчителя 58 KB
  І моя задача і задача моєї школи створити комфортні умови навчання при яких учень відчуває свою успішність свою інтелектуальну досконалість що робить продуктивним сам освітній процес. Перш ніж перейти до ґрунтовного розгляду інтерактивних навчальних технологій...
56207. Шкільна газета як виховний орган шкільного самоврядування 29.5 KB
  Якщо розглядати школу як мікродержаву, то цілком природно, що в ній існують свої засоби масової інформації. І шкільна газета є одним із засобів, яка інформує, стимулює, змушує думати, міркувати, організовує і ін...
56208. Властивості степеня з цілим від’ємним показником 140.5 KB
  Мета: ознайомити учнів з властивостями степеня з цілим показником; формувати вміння використовувати властивості степеня з цілим показником до перетворення виразів; розвивати вміння аналізувати...
56209. Степінь з натуральним показником 37.5 KB
  Мета: систематизувати знання властивостей степеня з натуральним показником формувати вміння виконувати дії з одночленами навички усних розрахунків; розвивати память виховувати почуття поваги до предмета.
56210. Взаємне розташування прямих у просторі. Взаємне розташування прямої та площини. Перпендикуляр до площини 251.5 KB
  Взаємне розташування прямої та площини. Перпендикуляр до площини. Матеріальними моделями частини площини є наприклад поверхня столу поверхня віконного скла мармурова плита тощо.4 Позначають площини малими грецькими буквами наприклад площини α β γ.
56211. Стереотипи та їх роль у житті людини і суспільства. Толерантність. Ксенофобія. Расизм. Ґендерні стереотипи 79 KB
  Мета: розвивати готовність і потребу учнів до самопізнання і самореалізації своєї особистості; визначити сутність понять стереотипи толерантність; формувати вміння застосовувати знання з різних навчальних курсів...
56212. Sterne des Sports 72.5 KB
  Guten Tag, liebe Kinder, es freut mich sehr, euch zu sehen. Wie geht es euch? Was gibt es Neues und Interessantes? (Die Schüler beantworten die Fragen des Lehrers) L: Heute setzen wir unsere Arbeit am Thema „Sport“ fort. Wir werden heute über die bekannten Sportler sprechen, Texte lesen und hören.
56213. Стежкою орфографічних вправ до країни знань 90.5 KB
  Найбільш поширені помилки серед учнів на правопис ненаголошених голосних в корені слова. Привчаю школярів користуватися алгоритмом правила перевірки ненаголошених голосних в корені слова: Вимов слово...