Команды эвм арифметические логические перехода связь программы с подпрограммой

Команды пересылки данных, осуществляют двусторонний обмен информации между внутренними регистрами МП и основной памятью. Команды этой группы должны задавать направления пересылки, источник операндов и приемник. Часто в регистре источника, или регистра приемника используется аккумулятор. Общим правилом этой команды является, что содержимое источника сохраняется.

Наиболее часто используется внимательное обозначение этих команд. Это MOV (move)(передать) часто используется так же обозначения LD (load)(из памяти в регистр) ST (store)(запоминать)(из регистра в память). Арифметические и логические операции. Команды арифметических операций: «-», «+» (ADD), сложение с переносом (ADDC), вычитание (SUB). Далек не во всех имеющихся команды «х» и «/».

Умножение – MUL, деление – DIV. Логические команды: AND-«И», OR – «ИЛИ», XOR – «исключение или», INC A – «добавление единицы», DEC – «вычитание единицы», DA – «десятичная коррекция», CRL A – «инверсия (инвертирование)», SWAP A – «тетроды меняются местами».

05. Основы устройства компьютера. Регистры и команды процессора. [Универсальный программист]

28.Команды переходов и связи с подпрограммами.

Команды переходов работают с счетчиком команд. Они используются для изменения естественного последовательного порядка следования команд и организации циклических участков команды. Простейшей командой переходов является команда безусловного перехода, которая загружает адрес перехода, которая загружает адрес перехода к указанной команде в счетчик команд.

Имеется множество команд условного перехода. Эти команды поверяют указанное в команде условие и запускают в счетчик команд адрес перехода, если условие истинное. Как правило, в адресной части перехода указывается не полный адрес переходов, а 8-битное смещение относительно текущего счетчика команд.

Смещение это число со знаком, поэтому переход может быть осуществлен в пределах -128…+127. Смещение представляет собой число в дополнительном коде и при выполнении разветвлений добавлялся к содержимому счетчику команд. Другой разновидностью реализации передачи по условию является команда пропуска следующей команды при выполнении условия.

Такая программа используется в некоторых микропроцессорах SKIP, следующая команда пропускания, если проверяемое условие истинно, за счет добавления в счетчик команд величины соответствующей длине следующей команды. Команды связи с подпрограммами.

Очень часто фрагменты программ, состоящие из последовательности команд используется многократно в различных частях основной программы. Например, программа умножения, деления, вычисление тригонометрических функций и т.д.

Вместо того, что бы каждый раз записывать однотипные последовательности команд, эта последовательность оформляется специальным образом в виде подпрограммы и размещается в основной памяти микроЭВМ, вне основной программы. Для вызова подпрограмм используется команда вызова, как правило, с абривиатурой CALL (CALL MUL), где dst адрес подпрограммы. При выполнении этой команды содержимое счетчика команд автоматически заполняется в стеке, а в счетчик команд заносятся dst, таким образом осуществляется переход к началу подпрограммы. В самом конце программы ставится программа возврата, при выполнении которой из стека в счетчик команд заносятся адреса возврата, т.е.следующей будет выполняться команда следующая за командой CALL (RET – без адресной части; RTS). Команда RET является нулем адресной команды.

2 9.Команды сдвига (циклический, арифметический, логический). Команды сдвига: арифметический сдвиг и логический сдвиг. Как правило, одна команда выполняет сдвиг на одни разряд вправо или влево. Сдвиг может быть простым (с потерей сдвиговых разрядов ) или циклическим (старший разряд переносится в младший).

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

Например, при логическом сдвиге вправо в старшем разряде кода операнда устанавливается нуль, а младший разряд записывается в качестве флага переноса в регистр состояния процессора. А при арифметическом сдвиге вправо значение старшего разряда сохраняется прежним (нулем или единицей), младший разряд также записывается в качестве флага переноса.

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

Соответственно, значение бита флага переноса будет переписываться в младший разряд при циклическом сдвиге влево и в старший разряд при циклическом сдвиге вправо. Для примера на рис. 1 показаны действия, выполняемые командами сдвигов вправо.

Команды проверки битов и операндов предназначены для установки или очистки битов регистра состояния процессора в зависимости от значения выбранных битов или всего операнда в целом. Выходного операнда команды не формируют.

Команда проверки операнда (TST) проверяет весь код операнда в целом на равенство нулю и на знак (на значение старшего бита), она требует только одного входного операнда. Команда проверки бита (BIT) проверяет только отдельные биты, для выбора которых в качестве второго операнда используется код маски.

В коде маски проверяемым битам основного операнда должны соответствовать единичные разряды. Наконец, команды установки и очистки битов регистра состояния процессора (то есть флагов) позволяют установить или очистить любой флаг, что бывает очень удобно. Каждому флагу обычно соответствуют две команды, одна из которых устанавливает его в единицу, а другая сбрасывает в нуль. Например, флагу переноса C (от Carry) будут соответствовать команды CLC (очистка) и SEC или STC (установка).

30.Команды ввода/вывода, управления. Команды ввода/вывода обеспечивает обмен информации между МП и регистрами внешних устройств. В некоторых МП имеется отдельное адресное пространство регистра ввода/вывода, отдельное ОЗУ (разделенный ввод/вывод), т.е. адреса регистров не совпадают с адресами ячеек. Есть специальные команды, где в коде команды указывается адрес регистра.

При отработке этих команд вырабатываются стробы обращения к регистрам ввода/вывода. Во многих микроЭВМ под адресное пространство регистров отводится часть адресного пространства основной памяти. В таком случае не требуется специальных команд ввода/вывода, а команды, работающие с памятью работают с ____, такой вид называется совмещенный ввод/вывод.

Читайте также:
Почему нет модного приговора по 1 программе

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

Источник: studfile.net

Основные команды ЭВМ

Система команд у типичной ЭВМ включает в себя от 60 до 250 базовых команд. Все команды в основном служат для выполнения очень простых действий, типа чтения, записи, сложения, сдвига и т.д.

«Интеллектуальность» ЭВМ достигается за счет того, что ЭВМ способна выполнять программы, состоящие из большого числа таких простых команд с огромной скоростью.

Классификация команд ЭВМ

I. По функциональному назначению

— команды передачи данных

— команды обработки данных

— команды передачи управления

II. По количеству адресов

— с первого адреса

— со второго адреса

— с третьего адреса

III. По способу кодирования операции

— с фиксированной длиной кода операции

— с переменной длинной кода операции

— один байт (слово)

Команды передачи данных

Данная группа команд включает в себя подгруппу команд передачи кода внутри МП между регистрами, из регистров МП в память, из памяти в регистры, из одних ячеек памяти в другие и передачи данных между МП и портами ВУ.

Отдельную подгруппу составляют команды работы со стеком. Они позволяют включать данные в стек для временного хранения и извлекать данные из стека при необходимости их использования.

Команды обработки данных

Данную группу команд можно подразделить на арифметические, логические и команды сдвига.

Команды этого типа могут иметь один или два операнда. Операнды могут хранится в регистрах, ЦП, памяти или самой команде. Результат данной группы операций формируется в регистре-приемнике или в специальном регистре-аккумуляторе.

Команды этой группы формируют признаки результатов, устанавливая в регистре флагов процессора перенос из старшего разряда, переполнение, нулевой результат. К арифметическим командам относят также и команды сравнения, т.к. для сравнения двух чисел ЦП выполняет операцию вычитание. По результату вычитания устанавливаются флаги во флаговом регистре МП. Результат вычитания не сохраняется в памяти, но по состоянию флагового регистра можно узнать о результатах сравнения двух величин.

Многие ЦП имеют команды сравнения операнда с 0. В других МП имеются команды проверки или установки состояния отдельных битов в операнде.

Команды передачи управления

Они имеют важное значение, т.к. используются для изменения естественного порядка следования команд и организации циклических участков в программах. Простейшей командой передачи управления является команда безусловного перехода JMP, которая загружает адрес перехода, указанного в команде в программный счетчик.

Команды условного перехода проверяют указанное в команде условие и модифицируют программный счетчик, если условие истинно. Обычно команды условного перехода используются после команд, изменяющих состояние флагового регистра.

Команды для работы с подпрограммами. Стек.

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

Адрес программы, на которую управление передается после окончания работы подпрограммы, называется адресом возврата. Для организации подпрограмм большинство ЭВМ используют аппаратно-поддерживаемую структуру данных, называемую стеком. Стек – это структура данных, организованная по принципу LIFO. В ЭВМ для организации стека выделяется область ОП, а для адресации и доступа к стеку используется регистр-указатель стека.

Указатель стека хранит адрес ячейки памяти, содержащий последнее помещенное в стек значение. При записи числа в стек указатель стека модифицируется так. Чтобы он указывал на следующую свободную ячейку, в которую записываются данные. При извлечение из стека данные считываются из ячейки, на которую указывает указатель стека, затем указатель стека модифицируется так, чтобы указывать на предпоследнее заполненное значение. Обычно стеки растут в сторону уменьшения адресов, т.е. при записи числа указатель стека уменьшается, а при увеличение увеличивается.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Источник: studopedia.ru

Система команд эвм и способы обращения к данным

Информатика, информационные технологии

Важной составной частью архитектуры ЭВМ является система команд. Несмотря на большое число разновидностей ЭВМ, на самом низком («машинном») уровне они имеют много общего. Система команд любой ЭВМ обязательно содержит следующие группы команд обработки информации.

1. Команды передачи данных (перепись), копирующие информациюиз одного места в другое.

2. Арифметические операции, которым фактически обязана своим названием вычислительная техника. Конечно, доля вычислительных действий в современном компьютере заметно уменьшилась, но они по-прежнему играют в программах важную роль. Отметим, что к основным арифметическим действиям обычно относятся сложение и вычитание (последнее в конечном счете чаще всего тем или иным способом также сводится к сложению). Что касается умножения и деления, то они во многих ЭВМ выполняются по специальным программам.

3. Логические операции, позволяющие компьютеру анализировать обрабатываемую информацию. Простейшими примерами могут служить сравнение, а также известные логические операции И, ИЛИ, НЕ (инверсия). Кроме того к ним часто добавляются анализ отдельных битов кода, их сброс и установка.

4. Сдвиги двоичного кода влево и вправо. Для доказательства важности этой группы команд достаточно вспомнить правило умножения столбиком: каждое последующее произведение записывается в такой схеме со сдвигом на одну цифру влево. В некоторых частных случаях умножение и деление вообще может быть заменено сдвигом (вспомните, что дописав или убрав ноль справа, т.е. фактически осуществляя сдвиг десятичного числа, можно увеличить или уменьшить его в 10 раз).

5. Команды ввода и вывода информации для обмена с внешними устройствами. В некоторых ЭВМ внешние устройства являются специальными служебными адресами памяти, поэтому ввод и вывод осуществляется с помощью команд переписи.

6. Команды управления, реализующие нелинейные алгоритмы. Сюда прежде всего следует отнести условный и безусловный переход, а также команды обращения к подпрограмме (переход с возвратом). Некоторые ЭВМ имеют специальные команды для организации циклов, но это не обязательно: цикл может быть сведен к той или иной комбинации условного и безусловного переходов. Часто к этой же группе команд относят немногочисленные операции по управлению процессором -типа «останов» или НОП («нет операции»). Иногда их выделяют в особую группу.

Читайте также:
Программа где находят людей

С ростом сложности устройства процессора увеличивается и число команд, анализирующих состояние управляющих битов и воздействующих на них. Здесь для примера можно назвать биты режима работы процессора и биты управления механизмами прерываний от внешних устройств.

В последнее время все большую роль в наборе команд играют команды для преобразования из одного формата данных в другой (например, из 8-битного в 16-битный и т.п.), которые заметно упрощают обработку данных разного типа, но в принципе могут быть заменены последовательностью из нескольких более простых команд.

Рассматриваясистему команд, нельзя не упомянуть о двух современных взаимно конкурирующих направлениях в ее построении: компьютер с полным набором команд CISC (Complex Instruction Set Computer) и с ограниченным набором — RISC (Reduced Instruction Set Computer). Разделение возникло из-за того, что основную часть времени компьютеру приходится выполнять небольшую часть из своего набора команд, остальные же используются эпизодически (в одной из популярных статей это в шутку сформулировано в виде следующей наглядной аналогии: «20% населения выпивают 80% пива»). Таким образом, если существенно ограничить набор операций до наиболее простых и коротких, зато тщательно оптимизировать их, получится достаточно эффективная и быстродействующая RISC-машина. Правда за скорость придется платить необходимостью программной реализации «отброшенных» команд, но часто эта плата бывает оправданной: например, для научных расчетов или машинной графики быстродействие существенно важнее проблем программирования. Подробнее вопросы, связанные с системой команд современных микропроцессоров, будут рассмотрены ниже в этой главе.

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

Команда ЭВМ обычно состоит из двух частей — операционной и адресной. Операционная часть (иначе она еще называется кодом операции — КОП) указывает, какое действие необходимо выполнить с информацией. Адресная часть описывает, где используемая информация хранится. У нескольких немногочисленных команд управления работой машины адресная часть может отсутствовать, например, в команде останова; операционная часть имеется, всегда.

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

Адресная часть обладает значительно большим разнообразием и ее следует рассмотреть подробнее.

Прежде всего отметим, что команды могут быть одно-, двух- и трехадресные в зависимости от числа участвующих в них операндов.

Первые ЭВМ имели наиболее простую и наглядную трехадресную систему команд. Например: взять числа из адресов памяти А1 и А2, сложить их и сумму поместить в адрес A3. Если для операции требовалось меньшее число адресов, то лишние просто не использовались. Скажем, в операции переписи указывались лишь ячейки источника и приемника информации А1 и A3, а содержимое А2 не имело никакого значения.

Трехадресная команда легко расшифровывалась и была удобна в использовании, но с ростом объемов ОЗУ ее длина становилась непомерно большой. Действительно, длина команды складывается из длины трех адресов и кода операции.

Отсюда следует, например, что для скромного ОЗУ из 1024 ячеек только для записи адресной части одной команды требуется 3*10 = 30 двоичных разрядов, что для технической реализации не очень удобно. Поэтому появились двухадресные машины, длина команды в которых сокращалась за счет исключения адреса записи результата. В таких ЭВМ результат операции оставался в специальном регистре (сумматоре) и был пригоден для использования в последующих вычислениях. В некоторых машинах результат записывался вместо одного из операндов.

Дальнейшее упрощение команды привело к созданию одноадресных машин. Рассмотрим систему команд такой ЭВМ на конкретном простом примере. Пусть надо сложить числа, хранящиеся в ячейках с адресами ОЗУ А1 и А2, а сумму поместить в ячейку с адресом A3. Для решения этой задачи одноадресной машине потребуется выполнить три команды:

• извлечь содержимое ячейки А1 в сумматор;

• сложить сумматор с числом из А2;

• записать результат из сумматора в A3.

Может показаться, что одноадресной машине для решения задачи потребуется втрое больше команд, чем трехадресной. На самом деле это не всегда так. Попробуйте самостоятельно спланировать программу вычисления выражения А5 = (А1 + А2)*АЗ/А4 и вы обнаружите, что потребуется три трехадресных команды и всего пять одноадресных. Таким образом, одноадресная машина в чем-то даже эффективнее, так как она не производит ненужной записи в память промежуточных результатов.

Ради полноты изложения следует сказать о возможности реализации безадресной (нуль-адресной) машины, использующей особый способ организации памяти -стек. Понимание принципов устройства такой машины потребовало бы некоторых достаточно подробных разъяснений. Сейчас безадресные ЭВМ практически не применяются. Поэтому ограничимся лишь упоминанием того факта, что устроенная подобным образом система команд лежала в основе некоторых программируемых микрокалькуляторов (например, типа «БЗ-21» и «БЗ-34» и им подобных).

До сих пор в описании структуры машинной команды мы пользовались интуитивным понятием об адресе информации. Рассмотрим теперь вопрос об адресации элементов ОЗУ более подробно и строго. Наиболее просто была организована память в ЭВМ первых двух поколений. Она состояла из отдельных ячеек, содержимое каждой из которых считывалось или записывалось как единое целое.

Каждая ячейка памяти имела свой номер, который и получил название адреса. Очевидно, что адреса соседних ячеек ОЗУ являются последовательными целыми числами, т.е. отличаются на единицу. В рассматриваемых ЭВМ использовались данные только одного типа (вещественные числа), причем их длина равнялась длине машинной команды и совпадала с разрядностью памяти и всех остальных устройств машины. Для примера укажем, что ячейка типичной ЭВМ второго поколения состояла из 36 двоичных разрядов.

Читайте также:
Как блокировать программу брандмауэром

Очень часто программа предназначалась для обработки по одним и тем же формулам определенного количества содержимого последовательно расположенных ячеек (в языках высокого уровня такого рода структуры получили впоследствии название массивов). В ЭВМ первых двух поколении были предусмотрены особые механизмы циклической обработки массивов информации.

С этой целью в машинных командах помимо обычных адресов можно было использовать модифицируемые, у которых специальный управляющий бит был установлен в единицу. К помеченным таким образом модифицируемым адресам при выполнении команды прибавлялось значение из специальных индексных ячеек. Меняя содержимое индексных ячеек, можно было получать доступ к различным элементам массива. Особо подчеркнем, что формирование результирующего адреса осуществлялось в УУ в момент исполнения команды, поэтому исходная команда в ОЗУ сохранялась без изменений.

Описанный механизм модификации адресов существенно упрощал написание циклических программ, таких как нахождение суммы последовательных ячеек ОЗУ, копирование отдельных участков памяти и т.п.

В ЭВМ третьего поколения идеология построения памяти существенно изменилась: минимальная порция информации для обмена с ОЗУ была установлена равной 8 двоичных разрядов, т.е. один байт. Стало возможным обрабатывать несколько типов данных: символы текста (1 байт), целые числа (2 байта), вещественные числа обычной или двойной точности (4 или 8 байт соответственно).

В связи с этим была введена новая условная единица измерения информации — машинное слово. Оно равнялось 4 байтам и соответствовало длине стандартного вещественного числа. Все объемы информации начали измеряться в единицах, кратных слову: двойное слово, полуслово и т.п.

Естественно, что адрес (номер ячейки ОЗУ) в машинах с байтовой организацией стал относится к отдельному байту; байты памяти имеют возрастающие на единицу номера. Слово состоит из нескольких последовательно расположенных байтов. В качестве адреса слова удобно принимать адрес одного из образующих его байтов (обычно используется младший байт, имеющий наименьший номер). Таким образом, адреса слов меняются уже не через единицу; их приращение зависит от длины машинного слова в байтах и равняется четырем.

Размер машинного слова был, по-видимому, выбран исходя из форматов обрабатываемой информации, а не в связи с разрядностью каких-либо устройств. Для подтверждения этого приведем несколько фактов о типичных ЭВМ третьего поколения из семейства ЕС. Арифметико-логическое устройство модели «ЕС-1022» имело 16 двоичных разрядов, «ЕС-1033» — 32 разряда, а «ЕС-1050» — 64 разряда. В то же время за одно обращение к оперативной памяти в «ЕС-1022» и «ЕС-1033» выбиралось 4 байта, в «ЕС-1050» — 8 байт (а в «ЕС-1045» — 16 байт). Таким образом, разнообразие цифр свидетельствует, что 32 разряда (4 байта) не являлись каким-то технически выделенным объемом информации.

В машинах третьего поколения появились иеще несколько особенностей: разная длина команд в зависимости от способа адресации данных, наличие специальной сверхоперативной регистровой памяти, вычисление эффективного адреса ОЗУ как суммы нескольких регистров и т.п. Все это получило дальнейшее развитие в компьютерах четвертого поколения, для которых разрядность микропроцессора стала одной из важнейших характеристик. Рассмотрение особенностейстроения памяти ЭВМ четвертого поколения отложим до следующего раздела.

1. Что такое архитектура ЭВМ? Сформулируйте определение и расшифруйте его.

2. Проведите аналогию между архитектурой ЭВМ и обыденным понятием архитектуры. Что общего и в чем различие?

3. Что общего и в чем различие между понятиями «внутреннее устройство ЭВМ»

и «архитектура ЭВМ»?

4. Что такое семейство ЭВМ? Приведите примеры.

5. Объясните, в чем состоит принцип программной совместимости. Что такое совместимость снизу вверх (поясните на примере одного из известных вам семейств)?

6. Имеют ли отношение к понятию «архитектура» следующие факты:

а) в компьютере применяются микросхемы динамического (или статического) ОЗУ?

б) компьютер имеет расширенную память?

в) компьютер имеет (не имеет) общую шину, по которой передается информация между его устройствами?

г) в процессоре INTEL 80386 к системе команд добавлено по сравнению с INTEL 80286 несколько новых?

д) объем памяти новой модели ЭВМ увеличен вдвое?

8. Чем обусловлено в ЭВМ широкое применение двоичной системы?

9. Можно ли. посмотрев на содержимое отдельно взятой ячейки памяти, определить, какая информация в ней записана: число, команда, символы?

10. Из каких основных рлов состоит ЭВМ?

11. Что такое счетчик команд и какую роль он играет?

12. Что такое магистраль (шина)?

13. Какие преимущества имеет магистральная структура ЭВМ?

14. Что представляет собой контроллер внешнего устройстваи какую роль он играет в процессе обмена информацией?

15. Какую роль играет в компьютере видеопамять?

16. Оцените необходимый объем видеопамяти для следующихрежимов:

а) текстовый режим (24 строки по 80 символов);

б) графический черно-белый режим при размере экрана 640х200 точек;

в) 16- цветный режим при том же размере экрана.

17. Что такое режим прямого доступа к памяти?

18 Как называется элементарная составляющаямашинной команды? От чего может зависеть скорость выполнения команды?

19. Опишите основные этапы выполнения машинной команды. Особое внимание

обратите на роль счетчика команд.

20. Что такое конвейерная обработка команд и какие преимущества она имеет?

21. Какие основные операции входят в состав системы команд любой ЭВМ?

Кратко охарактеризуйте каждою из названных групп.

22. Объясните, почему возможно создать компьютер с уменьшенным (неполным)

набором команд и что это дает.

23. Из каких частей состоит команда ЭВМ? Кратко охарактеризуйте их назначение.

24. Чем различаются одно-, двух- и трехадресные команды?

25. Что такое адрес ОЗУ?

26. Как можно использовать одну и ту же команду для работы с несколькими

последовательно расположенными ячейками?

27. Укажите отличия в устройстве памяти ЭВМ третьего поколения по сравнению с двумя предыдущими.

Статьи к прочтению:

  • Система команд эвм общего назначения
  • Система работы по автоматизации звуков п и пь.

Лекция 2:Система команд процессора

Похожие статьи:

  • Классификация систем параллельной обработки данных по м.флинну. По назначению. Универсальные предназначаются для решения широкого класса задач (от математических расчетов до обработки мультимедиа), т.е. такие ВС…
  • Система команд эвм общего назначения Методы адресации В машинах с регистрами общего назначения метод (или режим) адресации объектов, с которыми манипулирует команда, может задавать…

Источник: csaa.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru