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


 

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

23514. Морфемика. Морфонология. Словообразование 254 KB
  Оглавление Объяснительная записка 4 Словоизменительные аффиксы и принципы их вычленения 6 Формообразовательные аффиксы и принципы их вычленения 12 Словообразовательные аффиксы и принципы их вычленения 21 Корень как главная морфема в структуре слова 32 Полный морфемный анализ 35 Разбор по составу 38 Библиографический список 39 Объяснительная записка Морфемика это лингвистическая дисциплина изучающая систему морфем языка типы морфем их строение сочетаемость и морфемную структуру слова. Одним из важнейших результатов изучения курса...
23515. ФОНЕТИКА, ГРАФИКА, ОРФОГРАФИЯ 777.5 KB
  Таким образом своей основной задачей мы считали системное изложение фактов русского языка в соответствии с современными представлениями об устройстве фонетического компонента языка2. Этим обусловлено включение некоторых разделов ранее отсутствовавших в учебниках таких как Перцептивный аспект фонетических описаний Артикуляционная база русского языка Разговорная речь а также существенное расширение сведений из области речепроизводства и речевой акустики при изложении основ перцептивной фонетики мы основывались на тех сведениях...
23516. Лингвотекстологическое исследование Пролога за сентябрьское полугодие по спискам XII – начала XV в. 1.73 MB
  Слова hapax legomena редкие и не учтенные в исторических словарях. Переработка Синаксаря в пространной редакции Пролога. Славянские памяти в Прологе краткой и пространной редакций. Соотношение редакций Пролога204 3.
23517. ЦЕРКОВНОСЛАВЯНСКИЙ ЯЗЫК: КАРТИНА МИРА 74.5 KB
  Устои же эти хранятся передаются и развиваются на высшем духовном уровне народного языка на том уровне где народ осмысляет бесконечность мироздания сущность человеческой природы разумность и сверхразумную премудрость мироустройства. Для русского языка таким высшим духовным уровнем является священный старославянский или если рассматривать его в постепенном историческом развитии церковнославянский язык. В пору создания этого языка славяне были еще единым народом. Чтобы вполне использовать созидательную силу этих понятий нужно всемерно...
23518. Связь курса ИРЛЯ с другими филологическими дисциплинами 539.5 KB
  Причины и предпосылки возникновения РЛЯ Предпосылки Фольклор Письменность Принятие христианства Причины появления ЛЯ Проблема происхождения РЛЯ проблема основы Традиционная точка зрения его происхождения на старославянской языковой основе. Роль старославянского языка в развитии РЛЯ вообще от начала до сер. Стиль древнерусской публицистики Поучение Владимира Мономаха О структуре языка поучения Язык художественных текстов Слово о полку Игореве Славянизмы и их назначение в тексте памятника Выразительные средства Церковнославянский язык...
23519. ПРАСЛАВЯНСКАЯ ПИСЬМЕННОСТЬ 1.77 MB
  Я их расшифровал каждый значок озвучил и у меня получился набор слоговых знаков т. При сопоставлении знаков типа черт и резов с кириллицей и глаголицей болгарской и хорватской обнаружены 23 знака совпадающие по форме. Итак Кирилл заимствовал знаки своего алфавита из более древнего славянского письма О том же свидетельствует и послание папы Иоанна VIII. Большой ареал правда это трипольские земли трипольский уровень И там я впервые встретил знаки которые абсолютно идентичны чертам и резам Расцвет трипольской культуры приходится...
23520. Applying Experimental Archaeology to Ethnomusicology: Recreating an Ancient Maya Friction Drum through Various Lines of Evidence 165 KB
  The caption for Figure 11 reads simply Dance with drums string instrument and conch trumpet Schele Mathews 1998:Figure 11. Instead this object is most likely a friction drum Rene Lysloff personal communication an object also not known to have existed in PreContact America. The idea of the friction drum has been discussed in the archaeological literature before.
23521. The Transformation of Xbalanqué or The Many Faces of God A 1.91 MB
  There are images from Izapa Figure 1 and on EarlyClassic vessels Figure 2 which for example confirm the story of the killing of Vucub Caquix the major bird deity. Figure 3 The headband is probably the most important iconographic tool that we can use in identifying the Hero Twins. Even these strange characters Figure 4 largely ignored are headbanded Hero Twins. These depictions of the Hero Twins do not fit the standard form of the twins yet the figure on K1207 Fig.
23522. History of the Mexicans as Told by Their Paintings 266 KB
  This edition is the only available complete English translation published one year after Joaquín García Icazbalceta first published the Spanish text in the Anales del Museo Nacional de México. Of the Mexican Year. Vchilobi 7 the younger brother and god of the Mexicans was born without flesh naciò sin carne but only bones in which condition he lived six hundred years during which period of time the gods did nothing whatever the father as well as the sons and in their representation there is no account taken of these six hundred...