4498

Объединения в языке ассемблер

Лекция

Информатика, кибернетика и программирование

Объединения в языке ассемблер Представим ситуацию, когда мы используем некоторую область памяти для размещения некоторого объекта программы (переменной, массива или структуры). Вдруг после некоторого этапа работы у нас отпала надобность в использова...

Русский

2012-11-21

24.14 KB

5 чел.

Объединения в языке ассемблер

Представим ситуацию, когда мы используем некоторую область памяти для размещения некоторого объекта программы (переменной, массива или структуры). Вдруг после некоторого этапа работы у нас отпала надобность в использовании этих данных. Обычно память останется занятой до конца работы программы. Конечно, в принципе, ее можно было бы использовать для хранения других переменных, но при этом без принятия специальных мер нельзя изменить тип и имя. Неплохо было бы иметь возможность переопределить эту область памяти для объекта с другим типом и именем. Язык ассемблера предоставляет такую возможность в виде специального типа данных, называемого объединением.

Объединение — тип данных, позволяющий трактовать одну и ту же область памяти как имеющую разные типы и имена.

Описание объединений в программе напоминает описание структур, то есть сначала описывается шаблон, в котором с помощью директив описания данных перечисляются имена и типы полей:

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


 

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

31704. Авторитет вчителя 80.5 KB
  Досвід переконує що вплив вчителя на учня успішна його педагогічна діяльність залежить від авторитету вчителя. Авторитет сам приходить чи за нього треба боротись Якщо треба боротися то кому Авторитет не дається звичайно разом з дипломом про закінчення інституту. Одне з найважливіших значень в оцінці педагога має авторитет викладача як одне із складових ознак професійного педагога. Авторитет викладача це інтегральна характеристика його професійної педагогічної та особистісної значущості в колективі яка виявляється через взаємини з...
31705. СТРУКТУРА ПЕДАГОГІЧНОГО СПІЛКУВАННЯ 42.5 KB
  Моделювання педагогом майбутнього спілкування прогностичний етап. У цей час окреслюються контури майбутньої взаємодії: планування і прогнозування змісту структури засобів спілкування. Зміст спілкування формування мети взаємодії для чого аналіз стану співрозмовника чому він такий і ситуації що сталося.
31706. Учнівський колектив 30 KB
  Ціль колективу обов'язково повинна збігатися з суспільними цілями не суперечити пануючій ідеології конституції і законам держави. Єдиний шкільний колектив складається з колективу педагогів і загального колективу учнів. Учнівський колектив має органи управління: загальні збори учнівський комітет і рада колективу комісії штаби; у первинних колективах також працюють загальні збори та інші органи самоуправління обираються уповноважені особи та ін. Наявність у відносинах між членами колективу певної моральнопсихологічної єдності яка терпима...
31708. Складові психології спілкування 47 KB
  Складові психології спілкуванняСпілкування завжди займало важливе значення в житті людини. Хоч людське спілкування належить до основи соціального буття безпосереднім об’єктом психологічного та соціальнопсихологічного аналізу воно постало лише в ХХ столітті. Спілкування – дуже складний та многогранний процес. Паригіна “Основи соціально – психологічної теоріїâ€ автор відзначив що процес спілкування може виступати як процес взаємодії людей як інформаційний процес як відношення людини до оточуючих як процес впливу один на одного а...
31710. Основні види діяльності 59 KB
  У дошкільному віці провідним різновидом діяльності є гра у шкільному навчання а в зрілому праця. Гра та навчання властиві і людям і тваринам. Але вона відрізняється від навчання та праці.
31711. Колектив як соціокультурне середовище виховання і розвитку 52.5 KB
  Емоціональний рівень ввзаємодії в колективі відображає домінуючі емоціональні стани дітей їх спільні переживання стосунки симпатій чи антипатій між членами колективу гуманістичні та суспільно значимі мотиви. Ініціатива творча позиція особистості зростання самостійності і самоуправління дітей ціннісний зміст їх спільної діяльності є індикаторами виховного потенціалу дитячого колективу. Підходи до розробки колективу та індивідуальності. Погляди на проблеми колективу відобразили сутність суспільних культурноісторичних процесів розвитку...
31712. Двіжущіе сили та умови розвитку особистості 99 KB
  Двіжущіе сили та умови розвитку особистості Розвиток особистості слід розуміти як процес формування особистості як соціальної якості індивіда в результаті його соціалізації та виховання. Володіючи природними анатомофізіологічними передумовами до становлення особистості в процесі соціалізації дитина вступає у взаємодію з навколишнім світом опановуючи досягненнями людства. Створювані в ході цього процесу здібності і функції відтворюють в особистості історично сформувалися людські якості. Оволодіння дійсністю у дитини здійснюється в його...