Купить
 
 
Жанр: Учеба

Ассемблер и программирование для IBM PC

страница №35

-----------
О п е р а ц и я: Используется после проверки знаковых данных для
передачи управления по другому адресу. Если флаги SF и OF одинаковы (оба 0
или оба 1), то команда прибавляет к регистру IP значение операнда
(относительное смещение) и выполняет таким образом переход.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |01111101|--disp--|

JL/JNGE: Переход по "меньше" или "не больше или равно"
--------------------------------------------------------
О п е р а ц и я: Используется после проверки знаковых данных для
передачи управления по другому адресу. Если флаги SF и OF различны, то
команда прибавляет к регистру IP значение операнда (относительное
смещение) и выполняет таким образом переход.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |01111100|--disp--|

JLE/JNG: Переход по "меньше или равно" или "не больше"
--------------------------------------------------------
О п е р а ц и я: Используется после проверки знаковых данных для
передачи управления по другому адресу. Если флаг ZF равен единице (нулевое
состояние) и флаги SF и OF различны, то команда прибавляет к регистру IP
значение операнда (относительное смещение) и выполняет таким образом
переход.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |01111110|--disp--|

JMP: Безусловный переход
--------------------------
О п е р а ц и я: Выполняет переход по указанному адресу при любых
условиях. Команда JMP заносит в регистр IP необходимый адрес перехода.
Существует пять типов команды JMP для передачи управления внутри сегмента
или между сегментами. При межсегментном переходе в регистр CS заносится
также новый сегментный адрес.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д (пять форматов):

Прямой переход внутри сегмента:
|11101001|disp-low|disp-high|
Прямой переход внутри сегмента (короткий):
|11101011|--disp--|
Косвенный переход внутри сегмента:
|11111111|mod100r/m|
Косвенный межсегментный переход:
|11111111|mod101r/m|
Прямой межсегментный переход:
|11101010|offset-low|offset-high|seg-low|seg-high|

JNC: Переход если нет переноса
--------------------------------
О п е р а ц и я: Идентична JAE/JNB.

JNE/JNZ: Переход по "не равно" или по "не нуль"
-------------------------------------------------
О п е р а ц и я: Используется после проверки знаковых данных для
передачи управления по другому адресу. Если флаг ZF равен нулю (ненулевое
состояние), то команда прибавляет к регистру IP значение операнда
(относительное смещение) и выполняет таким образом переход.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |01110101|--disp--|

INO: Переход, если нет переполнения
-------------------------------------
О п е р а ц и я: Используется для передачи управления по
определенному адресу после проверки на отсутствие переполнения. Если флаг
OF равен, нулю (нет переполнения), то команда прибавляет к регистру IP
значение операнда (относительное смещение) и выполняет таким образом
переход. См. также команду JO.


Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |01110001|--disp--|

JNP/JPO: Переход, если нет паритета или паритет нечетный
----------------------------------------------------------
О п е р а ц и я: Приводит к передаче управления по определенному
адресу, если в результате операции обнаружено отсутствие паритета или
паритет нечетный. Нечетный паритет в данном случае означает, что в
результате операции в . младших восьми битах получено нечетное число
битов. Если флаг PF равен нулю (нечетный паритет), то команда прибавляет к
регистру IP значение операнда (относительное смещение) и выполняет таким
образом переход. См. также команду JP/JPE.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |01111011|--disp--|

JHS: Переход, если нет знака
------------------------------
О п е р а ц и я: Приводит к передаче управления по определенному
адресу, если в результате операции получен положительный знак. Если флаг
SF равен нулю (положительное), то команда JNS прибавляет к регистру IP
значение операнда (относительное смещение) и выполняет таким образом
переход. См. также команду JS.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |01111001|--disp--|

JO: Переход по переполнению
-----------------------------
О п е р а ц и я: Приводит к передаче управления по определенному
адресу, если в результате операции получено состояние переполнения. Если
флаг OF равен единице (переполнение), то команда JO прибавляет к регистру
IP значение операнда (относительное смещение) и выполняет таким образом
переход. См. также команду JNO.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |01110000|--disp--|

JP/JPE: Переход, если есть паритет или паритет четный
-------------------------------------------------------
О п е р а ц и я: Приводит к передаче управления по определенному
адресу, если в результате операции обнаружен четный паритет. Четный
паритет в данном случае означает, что в результате операции в младших
восьми битах получено четное число битов. Если флаг PF равен единице
(четный паритет), то команда прибавляет к регистру IP значение операнда
(относительное смещение) и выполняет таким образом переход. См. также
команду JNP/JPO.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |01111010|--disp--|

JS: Переход по знаку
----------------------
О п е р а ц и я: Передает управления по определенному адресу, если в
результате операции получен отрицательный знак. Если флаг SF равен единице
(отрицательно), то команда JS прибавляет к регистру IP значение операнда
(относительное смещение) и выполняет таким образом переход. См. также
команду JNS.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |01111000|--disp--|

LAHF: Загрузка флагов в регистр АН
------------------------------------
О п е р а ц и я: Загружает значение флагового регистра в регистр АН.
Данная команда обеспечивает совместимость с процессором 8080. См. также
команду SAHF. Команда LAHF заносит правый байт флагового регистра в
регистр АН в следующем виде:

SZ * A * P * C (* обозначает неиспользуемые биты)

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 10011111 (без операндов)

LDS: Загрузка регистра сегмента данных
----------------------------------------
О п е р а ц и я: Инициализирует начальный адрес сегмента данных и
адрес смещения к переменной для обеспечения доступа к данной переменной.
Команда LDS загружает в необходимые регистры четыре байта из области
памяти, содержащей относительный адрес и сегментный адрес. Сегментный
адрес помещается в регистр DS, а относительный адрес - в любой из общих
или индексных регистров или в регистровый указатель. Следующая команда
загружает относительный адрес в регистр DI:

LDS DI,адрес_памяти

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |11000101|modregr/m|

LES: Загрузка регистра дополнительного сегмента
-------------------------------------------------
О п е р а ц и я: Инициализирует начальный адрес дополнительного
сегмента и адрес смещения к переменной для .обеспечения доступа к данной
переменной. См. также команду LDS.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |11000100|modregr/m|

LOCK: Блокировка шины доступа к данным
----------------------------------------
О п е р а ц и я: Запрещает другим (сопроцессорам одновременно
изменять элементы данных. Команда LOCK представляет собой однобайтовый
префикс, который можно кодировать непосредственно перед любой командой.
Данная операция посылает сигнал в другой процессор, запрещая использование
данных, пока не будет завершена следующая команда.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 11110000

LODS/LODSB/LODSW: Загрузка однобайтовой или двухбайтовой строки
-----------------------------------------------------------------
О п е р а ц и я: Загружает из памяти один байт в регистр AL или одно
слово в регистр АХ. Несмотря на то, что команда LODS выполняет строковую
операцию, нет смысла использовать ее с префиксом REP. Регистровая пара
DS:SI адресует в памяти байт (для LODSB) или слово (для LODSW), которые
загружаются в регистр AL или АХ соответственно. Если флаг DF равен нулю,
то операция прибавляет 1 (для байта) или 2 (для слова) к регистру SI. Если
флаг DF равен единице, то операция вычитает 1 (для байта) или 2 (для
слова) из регистра SI.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 1010110w (без операндов).

LOOP: Цикл
------------
О п е р а ц и я: Управляет выполнением группы команд определенное
число раз. До начала цикла в регистр CX должно быть -загружено число
выполняемых циклов. Команда LOOP находится в конце цикла, где она
уменьшает значение в регистре СХ. на единицу. Если значение в регистре CX
не равно нулю, то команда передает управление по адресу, указанному в
операнде (прибавляет к регистру IP значение операнда); в противном случае
управление передается на следующую после LOOP команду (происходит выход из
цикла).

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: у11100010у--disp--у

LOOPE/LOOPZ: Цикл, если равно или нуль
-----------------------------------------
О п е р а ц и я: Управляет выполнением группы команд определенное
число раз или пока установлен флаг ZF (в единичное состояние). Команды
LOOPE/LOOPZ аналогичны команде LOOP, за исключением того, что по этим
командам цикл прекращается либо по нулевому значению в регистре CX, либо
по нулевому значению флага ZF (ненулевое состояние). См. также команды
LOOPNE/LOOPNZ.


Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |11100001|--disp--|

LOOPNE/LOOPNZ: Цикл, если не равно или не нуль
------------------------------------------------
О п е р а ц и я: Управляет выполнением группы команд определенное
число раз или пока сброшен флаг ZF (в нулевое состояние)., Команды
LOOPNE/LOOPNZ аналогичны команде LOOP за исключением того, что по этим
командам цикл прекращается либо по нулевому значению в регистре CX, либо
по единичному значению флага ZF (нулевое состояние). См. также команды
LOOPE/LOOPZ.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |11100000|--disp--|

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

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д (семь форматов):

Регистр/память в/из регистр:
|100010dw|modregr/m|
Непосредственное значение в регистр/память:
|1100011w|mod000r/m|--data--|data если w=1|
Непосредственное значение в регистр:
|1011wreg|--data--|data если w=1|
Память в регистр AX (AL):
|1010000w|addr-low|addr-high|
Регистр AX (AL) в память:
|1010001w|addr-low|addr-high|
Регистр/память в сегментный регистр:
|10001110|mod0sgr/m| (sg - сегментный регистр)
Сегментный регистр в регистр/память:
|10001100|mod0sgr/m| (sg - сегментный регистр)

MOVS/MOVSB/MOVSW: Пересылка строки байт или строки слов
---------------------------------------------------------
О п е р а ц и я: Пересылает данные между областями памяти. Команды
MOVS(B/W) обычно используются с префиксом REP. Команда MOVSB пересылает
любое число байтов, а команда MOVSW - любое число слов. Перед выполнением
команды регистровая пара DS:SI должна адресовать источник пересылки
("откуда") а регистровая пара ES:DI - получатель пересылки ("куда"). Если
флаг DF равен нулю, то операция пересылает данные слева направо и
увеличивает регистры SI и DI. Если флаг DF равен единице то операция
пересылает данные справа налево и уменьшает регистры SI и DI.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 1010010w (без операндов).

MUL: Беззнаковое умножение
----------------------------
О п е р а ц и я: Умножает беззнаковое множимое (8 или 16 бит) на
беззнаковый множитель (8 или 16 бит). Левый единичный бит рассматривается
как бит данных, но не как знак минус для отрицательных чисел. Для
8-битового умножения множимое должно находиться в регистре AL, а множитель
возможен в регистре или в памяти, например MUL CL. Произведение получается
в регистре АХ. Для 16-битового умножения множимое должно находиться в
регистре АХ, а множитель возможен в регистре или в памяти, например MUL
ВХ. Произведение получается в регистровой паре DX:AX. См. также команду
IMUL.

Ф л а г и: Команда воздействует на флаги CF и OF (флаги AF, PF, SF и
ZF не определены).

О б ъ е к т н ы й к о д: |1111011w|mod100r/m|

NEG: Изменение знака числа
----------------------------
О п е р а ц и я: Меняет двоичное значение из положительного в
отрицательное и из отрицательного в положительное. Команда NEG вычисляет
двоичное дополнение от указанного операнда: вычитает операнд из нуля и
прибавляет единицу. Операндом может быть байт или слово в регистре или в
памяти. См. также команду NOT. Флаги: Команда воздействует на флаги AF,
CF, OF, PF, SF и ZF.

О б ъ е к т н ы й к о д: |1111011w|mod011r/m|

NOP: Нет операции
-------------------
О п е р а ц и я: Применяется для удаления или вставки машинных кодов
или для задержки выполнения программы. Команда NOP выполняет операцию XCHG
АХ,АХ, которая ничего не меняет.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 10010000 (без операндов)

NOT: Логическое НЕТ
---------------------
О п е р а ц и я: Меняет нулевые биты на единичные и наоборот.
Операндом может быть байт или слово в регистре или в памяти. См. также
команду NEG.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |1111011w|mod010r/m|

OR: Логическое ИЛИ
--------------------
О п е р а ц и я: Выполняет поразрядную дизъюнкцию (ИЛИ) над битами
двух операндов. Операндами являются байты или слова в регистрах или в
памяти, второй операнд может иметь непосредственное значение. Команда OR
обрабатывает операнды побитово. Если любой из проверяемых бит равен
единице, то бит в операнде 1 становится равным единице, в противном случае
бит в операнде 1 не изменяется. См. также команды AND и XOR.

Ф л а г и: Команда воздействует на флаги CF, OF, PF, SF и ZF (флаг AF
неопределен).

О б ъ е к т н ы й к о д (три формата):

Регистр/память с регистром:
|000010dw|modregr/m|
Непосредственное с аккумулятором:
|0000110w|--data--|data если w=1|
Непосредственное с регистром/памятью:
|1000000w|mod001r/m|--data--|data если w=1|

OUT: Вывод байта или слова в порт
-----------------------------------
О п е р а ц и я: Передает в выводной порт байт из регистра AL или
слово из регистра АХ. Порт кодируется как фиксированный числовой операнд
(OUT порт#,АХ) или как переменная в регистре DX (OUT DX.AX). Процессоры
80186, 80286 и 80386 имеют, кроме того, команду OUTS (Output String -
вывод строки). См. также команду IN.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д (два формата):

Переменный порт: |1110111w|
Фиксированный порт:|1110011w|--port--|

POP: Извлечение слова из стека
--------------------------------
О п е р а ц и я: Передает слово (помещенное ранее в стек) в указанный
операнд. Регистр SP указывает на текущее слово в вершине стека. Команда
POP извлекает слово из стека и увеличивает значение в регистре SP на 2.
Существует три типа команды POP в зависимости от операнда: общий регистр,
сегментный регистр, слово в памяти. См. также команду PUSH.


Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д (три формата):

Регистр: |01011reg|
Сегментный регистр: |000sg111| (sg-сегм.рег.)
Регистр/память: |10001111|mod000r/m|

POPA: Извлечение из стека всех общих регистров (80188,80186,80286)
--------------------------------------------------------------------
О п е р а ц и я: Извлекает из стека восемь значений в регистры Dl, SI
BP, SP, BX, DX, CX, AX в указанной последовательности и увеличивает
регистр SP на 16. Регистры обычно записываются в стек ранее
соответствующей командой PUSHA.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 01100001 (без операндов).

POPF: Извлечение флагов из стека
----------------------------------
О п е р а ц и я: Передает биты (помещенные ранее в стек) во флаговый
регистр. См. также команды PUSHF и POP. Регистр SP указывает на текущее
слово в вершине стека. Команда POPF передает биты из этого слова во
флаговый регистр и увеличивает значение в регистре SP на 2. Обычно команда
PUSHF записывает значения флагов в стек, а команда POPF восстанавливает
эти флаги.

Ф л а г и: Команда воздействует на все флаги.

О б ъ е к т н ы й к о д: 10011101 (без операндов).

PUSH: Занесение слова в стек
------------------------------
О п е р а ц и я: Сохраняет значение слова (адрес или элемент данных)
в стеке для последующего использования. Регистр SP указывает на текущее
слово в вершине стека. Команда PUSH уменьшает значение в регистре SP на 2
и передает слово из указанного операнда в новую вершину стека. Существует
три типа команды PUSH в зависимости от операнда: общий регистр, сегментный
регистр или слово в памяти. См. также команды POP и PUSHF.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д (три формата):

Регистр: |01010reg|
Сегментный регистр: |000sg111| (sg-сегм.рег.)
Регистр/память: |11111111|mod110r/m|

PUSHA: Занесение в стек всех общих регистров (80188,80186,80286)
------------------------------------------------------------------
О п е р а ц и я: Записывает в стек восемь значений регистров AX, CX,
DX, BX, SP, BP, SI, DI в указанной последовательности и уменьшает регистр
SP на 16. Обычно команда POPA позже восстановит эти регистры из стека.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 01100000 (без операндов).

PUSHF: Занесение флагов в стек
--------------------------------
О п е р а ц и я: Сохраняет значения флагов из флагового регистра в
стеке для последующего использования. Регистр SP указывает на текущее
слово в вершине стека. Команда PUSHF уменьшает значение в регистре SP на 2
и передает флаги в новую вершину стека. См. также команды POPF и PUSH.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 10011100 (без операндов).

RCL и RCR: Циклический сдвиг влево через перенос и
циклический сдвиг вправо через перенос
----------------------------------------------------
О п е р а ц и я: Выполняет циклический сдвиг битов (ротацию) влево
или вправо через флаг CF. Данные операции могут выполняться в байте или в
слове, в регистре или в памяти. Ротация на один бит кодируется в команде
значением 1; ротация более чем на один бит требует указания регистра CL,
который содержит счетчик. Для команды RCL значение флага CF записывается в
бит 0, а. самый левый бит записывается во флаг CF; все другие биты
сдвигаются влево. Для команды RCR значение флага CF записывается в самый
левый бит, а бит 0 записывается во флаг CF; все другие биты сдвигаются
вправо. См. также команды ROL и ROR.


Ф л а г и: Команда воздействует на флаги CF и OF.

О б ъ е к т н ы й к о д: RCL: |110100cw|mod010r/m|
RCR: |110100cw|mod011r/m|
(если с = 0, то сдвиг на 1;
если с = 1, то сдвиг на CL).

REP/REPE/REPZ/REPNE/REPNZ: Повтор строковой операции
------------------------------------------------------
О п е р а ц и я: Повторяет строковую операцию определенное число раз.
Используется в качестве префикса повторения перед строковыми командами
CMPS, MOVS, SCAS, STOS. Счетчик повторений должен быть загружен в регистр
CX до выполнения строковой команды. Операция уменьшает регистр CX на 1 при
каждом выполнении строковой команды. Для префикса REP операция
повторяется, пока содержимое регистра CX не достигнет нуля. Для префикса
REPE/REPZ операция повторяется, пока регистр CX содержит ненулевое
значение и флаг ZF равен 1 (нулевое состояние). Для префикса REPNE/REPNZ
операция повторяется, пока регистр CX содержит ненулевое значение и флаг
ZF равен 0 (ненулевое состояние).

Ф л а г и: Определяются соответствующей строковой командой.

О б ъ е к т н ы й к о д: REP/REPNE: 11110010
REPE: 11110011

RET: Возврат из процедуры
---------------------------
О п е р а ц и я: Возвращает управление из процедуры, вызванной ранее
командой CALL. Команда CALL может передавать управление внутри одного
сегмента или между сегментами. Команда RET заносит слово из вершины стека
в регистр IP и увеличивает значение SP на 2. Для межсегментного возврата
команда RET, кроме того, заносит слово из новой вершины стека в регистр CS
и еще раз увеличивает значение SP на 2. Любой числовой операнд команды
(например, RET 4) прибавляется к указателю стека SP.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д (четыре формата):

Внутри сегмента: |11000011|
Внутри сегмента с операндом: |11000010|data-low|data-high|
Между сегментами: |11001011|
Между сегментами с операндом: |11001010|data-low|data-high|

ROL и ROR: Циклический сдвиг влево и циклический сдвиг вправо
---------------------------------------------------------------
О п е р а ц и я: Выполняет циклический сдвиг битов (ротацию) влево
или вправо. Данные операции могут выполняться в байте или в слове, в
регистре или в памяти. Ротация на один бит кодируется в команде значением
1; ротация более чем на один бит требует указания регистра CL, который
содержит счётчик. Для команды ROL самый левый бит записывается в бит 0;
все другие биты сдвигаются влево. Для команды ROR бит 0 записывается в
самый левый бит; все другие биты сдвигаются вправо. См. также команды RCL
и RCR.

Ф л а г и: Команда воздействует на флаги CF и OF.

О б ъ е к т н ы й к о д: ROL: |110100cw|mod000r/m|
ROR: |110100cw|mod001r/m|
(если с = 0, то сдвиг на 1;
если с = 1, то сдвиг на CL).

SAHF: Установка флагов из регистра АН
---------------------------------------
О п е р а ц и я: Данная команда обеспечивает совместимость с
процессором 8080 для пересылки значений флагов из регистра АН во флаговый
регистр. См. также команду LAHF. Команда SAHF пересылает определенные биты
из регистра АН во флаговый регистр в следующем виде:

SZ * A * P * C (* обозначает неиспользуемые биты)

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 10011110 (без операндов)

SAL, SAR, SHL и SHR: Сдвиг влево или вправо
---------------------------------------------
О п е р а ц и я: Выполняет сдвиг битов влево или вправо. Данные
операции могут выполняться в байте или в слове, в регистре или в памяти.
Сдвиг на один бит кодируется в команде значением 1; сдвиг более чем на
один бит требует указания регистра CL, который содержит счетчик сдвига.
Команда SAR выполняет арифметический сдвиг, который учитывает знак
сдвигаемого значения. Команды SHL и SHR выполняют логический сдвиг и
рассматривают знаковый бит как обычный бит данных. Команда SAL выполняется
аналогично команде SHL. Команды SAL и SHL сдвигают биты влево определенное
число раз и правый освобождающийся бит заполняют нулевым значением.
Команда SHR сдвигает биты вправо определенное число раз и левый
освобождающийся бит заполняет нулевым значением. Команда SAR сдвигает биты
вправо определенное число раз и левый освобождающийся бит заполняет
значением знакового бита (0 или 1). Во всех случаях значения битов,
выдвигаемых за разрядную сетку, теряются.

Ф л а г и: Команда воздействует на флаги CF, OF, PF, SF и ZF (флаг AF
не определен).

О б ъ е к т н ы й к о д: SAL/SHL: |110100cw|mod100r/m|
SAR: |110100cw|mod111r/m|
SHR: |110100cw|mod101r/m|
(если с = 0, то сдвиг на 1;
если с=1, то сдвиг на CL);

SBB: Вычитание с заемом
-------------------------
О п е р а ц и я: Обычно используется при вычитании многословных
двоичных величин для учета единичного бита переполнения в последующей фазе
операции. Если флаг CF установлен в 1, то команда SBB сначала вычитает 1
из операнда 1. Команда SBB всегда вычитает операнд 2 из операнда 1,
аналогично команде SUB. См. также коман

Список страниц

Закладка в соц.сетях

Купить

☏ Заказ рекламы: +380504468872

© Ассоциация электронных библиотек Украины

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