КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Архитектура ЭВМ
Архитектура и принцип работы ЭВМ фон-Неймана. В 1954 он опубликовал в открытой печати принцип работы ЭВМ, в которой и обобщил все разработанные варианты ЭВМ на то время. Идея универсальной ЭВМ возникла из предшествующих разработок. Автомат Мура использовал принцип табличного описания его внутренних состояний и выходные сигналы описывались в виде табличных переходов их внутренних состояний. В дальнейшем был разработан автомат Мили, выходные сигналы которого описывались... но и таблицы выходов. Автомат Мили — более универсальный автомат. Принципы фон-Неймана: 1. Устройство управления работает на основе последовательности команд. 2. Последовательность командназывается программой, которая хранится в памяти ЭВМ. 3. Каждая команда состоит из 2-х частей: оператор и операнд. Оператор указывает действие, которое необходимо выполнить над операндами. В качестве оперндов выступают адреса ячеек памяти. 4. Работа ЭВМ заключается в выполнении последовательности команд. Основное достоинство ЭВМ — универсальность, т.к любую программу можно заменить в памяти ЭВМ и таким образом применить ее для решения другой задачи. Основной недостаток — низкое быстродействие, т.к все команды ЭВМ выполняются по циклам и тактам, т.е с определенными интервалами времени, что принципиально ограничивает ее взаимодействие. Поэтому для повышения быстродействия часто реализуют гибридные ЭВМ, в которых часть задач реализуется на аналоговых устройствах, а часть на цифровых. При этом чаще всего в аналоговом виде решаются сложные ДУ, необходимые для управления сложными быстродействующими объектами.
Архитектура ЭВМ — совокупность принципов организации взаимодействия аппаратных и программных средств, обеспечивающая их функциональые возможности. РИСУНОК Для организации работы ЭВМ в состав УУ вводится специальный регистр — счетчик команд, или PC, который всегда указывает на адрес ячейки … ОЗУ, в которой находится код команды, предназначенный для ее выполнения. Таким образом работа в ЭВМ всегда начинается с установки начального состояния программного счетчика. Сигнал «сброс» поступает от источника питания к включениею питания. Работа ЭВМ начинается со сбора программного счетчика. Программный счетчик — основной регистр ЭВМ. Команда считывается из ЗУ и передается в регистр команд, где код команды сохраняется в процессе ее выполнения. Т.о счетчик команд указывает на адрес следующей команды, поэтому PC увеличивается на 1. Код команды поступает на дешифратор команд и определяет тип определяемой команды в данный момент и запускает УУ на выполнение конкретной команды. 26.09.2012 — Лекция №5 2-я фаза коамнды — исполнительная, во время которой операнды изи ЗУ пересылаются в АЛУ, выполняется указанная операция команды и результат выполнения передается в ЗУ, считывается очередная команды и т.д. Основной недостаток архитектуры фон-Неймана: неравномерная загрузка отдельных блоков ЭВМ. Во время выполнения одной кооманды обращение к ЗУ происходит 4 раза, поэтому все ЭВМ на первых этапах развития совершенствовались путем увеличения быстродействия работы ЗУ. Поэтому для повышения эффективности работы ЭВМ была предложена регистровая архитектура, которая используется до настоящего времени. В этой архитектуре вводится дополнительный регистр-аккумулятор (наполнительный) — двухступенчатый регистр, хранящий один из 2х операндов и результат выполнения операции. Благодаря этому число обращения к памяти снижается до 2х раз. Для реализации этой архитектуры в состав ЭВМ были введены дополнительные команды пересылки данных. Т.о если использовать всего один регистр, то необходимо часто использовать эти команды пересылки, что опять снижает эффективность ЭВМ. Разработчики ЭВМ стали увеличивать число наполнительных регистров общего назначения (от 8 до 64 штук). Т.к оба операнда и результат стали храниться в регистрах, понадобилось всего одно обрашение к ЗУ для чтения команды. При дальнейшем развитии ЭВМ стали использоваться языки программирования высокого уровня (основные понятия — функции и процедуры). При вызове любой функции необходимо сохранить содержимое регистров общего назначения для работы предшествующих функция и загрузить их снова новыми данными, поэтому эффективность работы ЭВМ (регистровой архитектуры) при работе с языками высокого уровня резко падает. Поэтому была предложена новая, более эффективная архитектура ЭВМ — стековая, в которой используется понятие стека. Стек — способ организации упорядоченного хранения данных по принципу «первый вошел, последний вышел». Стек иногда называют магазинным принципом памяти (LIFO). Основное достоинство стека — адрес ячейки памяти формируется автоматически без участия программы в последовательно расположенных ячейках памяти, считывание — наоборот, без формирования адреса, что намного более эффективно. Таким образом, переходя на подпрограмму, программист записывает содержимое регистра на вершину стека с помощью специальных команд. При возвращении с подпрограммы. При возвращении с подпрограммы функции содержимое с вершины стека считывается и восстанавливается в регистрах. Т.о эта архитектура реализована во всех современных ЭВМ, а стек обычно реализуется на ЗУ общего пользования, но для этого вводится специальный дополнительный регистр — указатель вершины стека (стек-поинтер). Он всегда указывает на адрес ячейки памяти, в которую можно записать или с которой можно считать информацию. При каждом обращении к стеку содержимое меняется автоматически, при чем при записи в стек содержимое уменьшается на 2, при чтении — увеличивается на 2. В языках высокого уровня стек используется не только для хранения и восстановления содержимого регистров, но и для передачи параметров функций. Кроме того, в состав аппаратных средств ЭВМ входят шины — совокупность мультиплексоров и демультиплексоров, обеспечивающих электрическое соединение между всеми блоками ЭВМ, для передачи информации определенного типа. Так же используется понятие магистрали — совокупность шин для передачи различного рода информации. Так же используется понятие канала — совокупность шин, предназначенных для временного соединения двух устройств (абонентов).
ASSEMBLER Assembler — машинно-ориентированный язык программирования. Позволяющий использовать все ресурсы ЭВМ с такой же полнотой, как программирование в машинных кодах. 1.10.2012 — Лекция №6 Достоинства Ассемблера: · Символическая адресация (мнемонические имена) – присвоение определенным адресам специальных имен, называемых метками. · Мнемонические обозначения кодов команд. Т.е. слово образуется по первым буквам слов словосочетания – сокращенное обозначение действия команды в символьном виде. · Позволяет реализовать разнообразные способы адресации, что очень удобно при работе с массивами, структурами и т.д. · Позволяет использовать выражения вместо операндов, что существенно уменьшает число ошибок. · Позволяет присваивать имена константам. · Имеется большой набор псевдокоманд (макроассемблеры), предназначенных для управления трансляцией и т.о. более удобному программированию. Ассемблер – язык, очень строгий по синтаксису, поэтому и очень простой. Ассемблер состоит из предложений. Каждое предложение пишется на одной строке. Конец строки всегда обозначается символом Enter (перевод строки и возврат каретки). Каждое предложение состоит из 4х полей, каждое из которых ограничивается определенным разделителем.
Метка – символическое имя, состоящее из букв латинского алфавита и цифр, длиной не более 8 символов. Ограничивается справа двоеточием. Если двоеточие не указано, метка воспринимается в качестве имени константы (введено для удобства программирования). В каждом трансляторе имеется группа зарезервированных имен, которую запрещено использовать в качестве меток: · Мнемонические обозначения команд и псевдокоманд · Специальные символы Метки запрещено дублировать в команде, каждая должна быть уникальна. Если метка длиннее 8 символов, она укорачивается и может совпасть с другим именем. После двоеточия следует горизонтальная табуляция, что улучшает читаемость кода В поле оператора указывается мнемонический код команды с использованием латинских символов. Строчная или заглавная буква – не имеет значения. Кроме команд в этом поле указываются псевдокоманды Ассемблера. Псевдокоманда – команда, не существующая в наборе команд ЭВМ, н имеющаяся в наборе транслятора. Обычно это поле справа ограничивается знаком пробела В поле операнда указывается 1-2 операнда. Если 2 операнда, они м/у собой разделяются запятой (пробел после запятой можно не ставить). В качестве операндов могут выступать имена внутренних регистров ЭВМ, имена веток, констант или конкретные числовые значения в различных системах счисления. Кроме того в этом поле могут указываться выражения в виде последовательности арифметических и логических операций. Операнды отделяются пробелом, либо горизонтальной табуляцией/ Поле комментария от поля операнда отделяется «;». Поле комментария содержит любой текст, который транслятором игнорируется. После комментария перевод строки осуществляется ч/з Enter.
Константы Ассемблера. В качестве констант могут использоваться любые числа в 2(b), 8(q), 16(h), 10-тичной системах счислениях, при этом наиболее распространенные Ассемблеры (разработчик Intel) записывают числа и в конце указывают букву – признак системы счисления. Если после цифры ничего не указано – это признак 10-тичной системы счисления. Если 16-речное число начинается с буквы, перед ней всегда устанавливается цифра 0 (например, 0А2h), указывая, что это число, а не метка. 08.10.2012 — Лекция №7 Информация в ЭВМ может быть представлена в 3х видах: 1. Коды команд 2. Числовые данные (хранятся в ЭВМ в двоичном виде, но для удобства представления выводятся в 16ричном виде) 3. Символьный вид (с помощью двоичного кода закодированы определенные символы). Обычно пока еще используется ASCII стандарт. В UNICODE закодировано 65536 символов, включая 0. Операции, выполняемые в Ассемблере. Имеется возможность выполнять простейшие арифметические операции в поле операндов Ассемблера. Во время трансляции исходного текста программы Ассемблер сам выполнит эти действия, и результат подставит вместо операнда в 16ричном коде. Благодаря этому существенно снижается число возможных ошибок. mov AX, K1+K2/3AH Если необходимо использовать состояние программного счетчика, используют команду JMP jmp $+25 – перейти на 25 байт вперед Псевдокоманды Ассемблера – такие команды, которые реализованы только в языке Ассемблера и не имеют машинных аналогов в ЭВМ. Обычно псевдокоманд бывает до 500 штук, в зависимости от возможности Ассемблера, т.к. псевдокоманды предоставляют определенный сервис (удобства разработчику для работы с языком программирования). Самые необходимые псевдокоманды, без которых необходимо странслировать программу: · st: org 100h – задается начальный адрес трансляции. Каждая программа при трансляции начинается не с 0 адреса, т.к. первые 256 байтов отводятся для заголовка программы и Ассемблер туда вставляет свою служебную информацию. Если псевдокоманда не записана, Ассемблер по умолчанию смотрит эту псевдокоманду (адрес 100h). · End – управляющая команда Ассемблера «конец трансляции». Команда очень удобна для отладки программы. Если эту команду не указать, Ассемблер будет выполнять программу до конца исполняемого файла. · Equ – псевдокоманда присвоения имени константы. Эта псевдокоманда очень удобна для разработки команд на Ассемблере т.к. название константы можно ассоциировать с самой константой, что влечет меньшее количество ошибок. Если константа используется многократно и потребовалось изменить содержимое этой константы, то содержимое этой константы изменится везде автоматически. · Mt – определение байта данных mt: DB?,10,0A5h,0,0FFh Во время трансляций содержимому mt присваивается состояние программного счетчика в данный момент, и, начиная с этого адреса в память записываются указанные через запятую данные. С помощью этой команды вводятся начальные данные (переменные), при чем имя переменной начинается с указанного имени метки. Байт резервируется по этому адресу. … Mt1: DB 100h dop (?) Размер данных может быть размером от 0 до FF. При несоблюдении размера во время трансляции Ассемблер выдаст ошибку. Если необходимо ввести число больше, чем 255, имеется другая псевдокоманда, при этом размер данных может быть от 0 до FFFF. Младший байт записывается по младшему адресу. Mt2: DW 0,0FFFFh,1252 Mt3: DD 0FFFFFFh · Для передачи данных в виде слова в 8-разрядный регистр, необходимо использовать префикс mov AL, BYTE PTR MT2+2
08.10.2012 — Лекция №8 ОТЛАДЧИК ПРОГРАММЫ De — удалить, Bug — жук. Во время трансляции исходные программы Assembler'а сначала проверяют все метки и команды на синтаксические ошибки и формирует относительные значения программного счетчика. Дебагер — утилита, которая входит в состав ОС. Во время трансляции выделяет синтаксические ошибки и выводит их на экран в диалоговом режиме. Чтобы посмотреть, какие синтаксические ошибки имеются в программе, необходимо вывести листинг программы. Во время первого прохода Дебаггер начинает формировать относительные переходы согласно уже имеющимся меткам, и после этого формирует исполняемый код в относительных адресах. Бывают программы с расширением COM. Эти программные модули находятся в одном сегменте памяти ЭВМ и не превышают 64 Кбайта. Если формируется файл.exe, то это более сложная структура и позволяет исполнять кодыбольшего размера, нескольких секмкнтов. Это описывается в заголовке программы, которая нахаодится с 0 по 100 адрес исполняемого модуля. Если имеются синтаксические job,rb? Их необходимо исправить с помощью редактора среды программирования. После исправления необходимо сново скомпилировать код и проверить его на ошибки. Запуск программного модуля возможен после исправления всех ошибок. Кроме синтаксических ошибок в программе могут быть и алгоритмические, выявить которые можно только при пошаговом выполнении программы и постоянном контроле состояния регистров ЭВМ. Чтобы подготовиться к отладке программы, необходимо выполнить сначала контрольный расчет с помощью обычного калькулятора. С помощью дебаггера программа выполняется по шагам и содержимое регистров постоянно сравнивается с таблицей контрольного просчета. При первом же несовпадении дальнейшие резулльтаты смотреть бессмысленно. Ошибки часто возникают из-за непонимания команд работы процессора, особенно с регистром признаков. После отладки отдельного программного модуля на конкретных значениях, можно приступать к отладке всей программы путем вызова функций.
15.10.12 — Лекция №9 Команды Debugger’а запуска и отладки программы: G[cм.1][cм.2]. Два смещения указывают точки останова программы. Эти точки обязательно должны попадать на первый байт команды. Точка останова означает состояние программного счетчика, при котором необходимо приостановить программу. Точки останова определяются по листингу программы. Команда G обычно не используется для отладки программ, а для проверки работоспособности программ под контролем Debugger’а. Т[N шагов]. Команда трассировки позволяет по шагам выполнить определенный фрагмент программы. После выполнения каждой команды происходит программное прерывание, и управление передается Debugger’у. Debugger выводит на экран состояние всех регистров микропроцессора и путем сравнения этих состояний с контрольным просчетом можно выявить алгоритмическую ошибку. Т – самая нужная и полезная программа для отладки. Процедуру ветвлений проверяют по состоянию программного счетчика. P[N шагов] – аналогична команде Т за исключением того, что все вызовы подпрограмм (функций) выполняются автоматически не по шагам, а целиком. Команда полезна при отладке сложных программ с многоуровневыми вызовами, поэтому процедура написания и отладки следующая: 1. Необходимо сложную задачу разбить на простые программные модули. 2. Написать программы отдельных модулей, реализующих определенные конкретные функции. 3. Распределить ресурсы ЭВМ для реализации данной функции. 4. Начинается написание программы с поля комментариев к каждому фрагменту программы. 5. Реализация простейших программных модулей, по очереди отлаживая их. 6. После отладки модулей, их организуют в виде подпрограмм, присваивают имена, точки входа и выхода. 7. После отладки модулей на контрольных просчетах, реализуется основная программа – вызовы программных модулей. При этом результаты выполнения сравниваются с результатами контрольных просчетов. 8. Оформление технической документации на пользование программным модулем (запуск и использование продукта)
А[начальный адрес] – команда ассемблирования введенного фрагмента команды и запись его в машинных кодах с указанием адреса. Недостаток – отсутствие команды редактирования текст, поэтому вместо этой команды используется обычный транслятор с языка Ассемблера. U[начальный адрес][смещение] – команда дизассемблирования указанного фрагмента кода, при чем начальный адрес должен попадать на первый байт команды, иначе все дизассемблирование будет неверным. Команда преобразует машинные коды в мнемонические команды ассемблера, что очень удобно для изучения программного кода при отсутствии исходного текста программы. Таким образом, если при изучении содержимого памяти необходимо узнать, какой вид информации находится в этой области, необходимо действовать следующим образом: 1. Директивой D просмотреть …, где выводятся символьные тексты и проанализировать их на разумную последовательность символов. … значит в этой области находится разумная текстовая информация. 2. Если разумных фраз/словосочетаний нет, то необходимо эту область дизассемблировать с помощью команды U и посмотреть на разумную последовательность команд. Однако, т.к. мы не знаем начала адреса первой команды, необходимо эту процедуру повторить как минимум 5 раз с увеличением адреса. Если разумной последовательности нет, можно предположить, что в области находится не команда, а числовые данные. Самое трудное – определить назначение данных и формат, в котором они хранятся. 3. Для того, чтобы понять назначение этих данных и формат, необходимо найти фрагмент программы, который работает с этим адресом. Если программа написана на языке высокого уровня, все эти три вида информации хорошо структурированы и разбираться в них намного проще, т.к. обычно для хранения данных используются специальные теги, имеющие начало и конец. H число1 число2 – вычисление суммы и разности 2х 16-ричных чисел. Используется для проверки правильности работы отдельных команд и особенно проверки адресов в передачу управления в командах, т.к. большинство команд с относительной адресацией и адрес перехода указывается в виде смещения относительно программного счетчика. Q – выход. Программно-логическая модель ЭВМ ПЛМ – совокупность аппаратных ресурсов ЭВМ, доступных программисту из определенной среды программирования. Наиболее удобный язык программирования для изучения аппаратных ресурсов ЭВМ – язык Ассемблера, т.к. он позволяет реализовать доступ практически ко всем ресурсам ЭВМ, но у него отсутствуют ресурсы ввода-вывода для работы с консолью ЭВМ (клавиатура + экран дисплея). Поэтому на первом этапе работы с Ассемблером пользуются ресурсами Debugger’а для консольного ввода-вывода.
22.10.2012 — Лекция №10 Ассемблер обеспечивает наиболее полный доступ ко всем ресурсам ЭВМ. Рассмотрим IBM-PC совместимы ЭВМ на уровне ассемблера. РИСУНОК ЦП организовано вокруг 2х шин — адреса, данных и управления. Он включает в себя УУ, формирующее управляющий сигнал для всех блоков ЦП и внешних устройств. УУ имеет сигналы ждя управления шиной, если ЦП выполняет роль ведущего в системе. УУ имеет еще сигналы управления памятью, сигналы прерываниями и сигналы управления прямым доступом в память. Очередь команд — аналог кэша команд для организации конвеерной обработки команд, что существенно повышает быстродействие. Арифметическо-логическое устройство (АЛУ) выполняет арифметические и логические операции над двумя операндами. Регистр признаков/флагов — предназначен для временного хранения состояний ЭВМ при выполнении каждой команды. Содержит блок адрессации, в который входят 16-разрядные htubcnhjs сегментов, которые используются в ЭВМ для разделения команд/кода, данных (приемника и источника и стека). Блок регистров общего назначения — регистры используются программистом для временного хранения данных или адресов. AX=AH+AL 16 бит = 8 бит + 8 бит Регистр-аккумулятор — универсальный регистр, который может быть испаользован для хранения данных в любых командах ЭВМ, все остальные регистры только в некоторых, определенных командах. BX кроме того, что он регистр общего назначения, в неоторых командах он выполняет роль базового адреса. СХ=СН+CL в некоторых командах используется в качестве счетчика. DX — используется для хранения данных в качестве адреса для обращения к портам ввода-вывода. SP — указатель величины стека. BP — указатель базы, по умолчанию указатель базы, используемой для обращения к области стека. SI — индексный регистр, регистр для индексной адрессации к операндам. Является источником данных. По умолчанию всегда ассоциируется с сегментом данных, индекс приемника указывает адрес в дополнительном сегменте, куда записывается результат.. Блок адрессации содержит 5 регистров, первый — самый главный из них — IP (индекс программы) — указывает смещение адреса программы в сегменте кода (CS). Сегмент данных DS по умолчанию используется в качестве источника.Д-ный сегмент FS используется для хранения данных; в некоторых командах используется как SS сегмент стека, где всегда хранятся данные стека. F — регистр флагов/признаков — используется для организации ветвлений в программе по состоянию определенного бита регистров признаков
1. Бит CF — флаг переноса — используется для формирования бита переноса при переполнении разрядной ячейки ЭВМ. Если равен 0 после сложения, значит что переполнения не было, если 1 — бите переноса, который необходимо перенести в старшую часть слова. Все биты проверяются командами условного перехода. 2. Бит PF — четности. При формировании этого признака PF подсчитывается чисто единиц в результате выполнения операции и всегда дополняется до нечетного числа. Этот бит контрольной четности проверяется в процессе проверки корректности хранения и передачи данных. 3. Бит AF — дополнительный перенос. Этот бит переноса используется для обработки BCD-кодированных чисел. BDC — двоичное кодирование десятичных чисел.
24.10.2012 — Лекция №11 4. Бит ZF - если после выполнения команды результат равн 0, то признак ZF устанавливается в 1, иначе 0. 5. Бит SF — используется для хранения знака результата. Если результат отрицательный, SF устанавливается в 1, иначе 0. 6. Бит TF — трассировка — бит для установки режима пошагового выполнения программы. Если бит установлен в 1, используется режим пошагового выполнения (используется в debugger'е), если в 0 — режим прерывания (используется в системе) 7. Бит IF — запрет прерывания, если установлен в 1 8. Бит DF (direction) — задает направление сканирования массива в специальных командах обработки массивов. Если установлен в 1 — в область уменьшения адрессов масива, 0 — увеличения. 9. Бит OF — бит переполнения разрядной сетки. Если установлен в 1, значит сетка переполнена, реализуется прерывание и управление передается ОС. 10. Все команды делятся на группы для удобства приминения и изучения. 1. каманды пересылки данных 2. логические команды 3. арифметические команды 4. команды передачи управления 5. команды управления ресурсами микропроцессора 6. цепочечные команды (работа с цепочками данных)
Команды пересылки данных обобщенное обозначение команды пересылки mov reg/mem, reg/mem / d8 / d16 — переместить содержимое правого операнда в левый операнд. Одновременное использование memory запрещено. Пример: Mov AL, BH xchg reg/mem, reg/mem — обмен данными м/у указанными регистрами. Xlat — команда чтения в аккумулятор; AL ← ((BX)+(AL)). Это команда для табличной перекодировки символов. Создается таблица (256 адресов). Начало записывается в BX, AL является смещением этой таблицы. Регистр AL является перекодировщиком из одного кода в другой. Lea reg, адресс_метки — команда загрузки регистра адресом метки. Используется для подготовки регистра к косвенному способу адресации (как бы формирование указателя). Имеется аналог псевдокоманды в Ассемблере,позволяющий сделать ту же самую операцию: mov reg, offset метка — записывает смещение метки в регистр. Lahf — загрузить содержимое младшего байта в регистр признаков. Sahf — загрузить содержимое старшего байта в регистр признаков. Команды введены для совместимости с 8байтными командами более ранних версий микропроцессоров. Push reg/mem и pop reg/mem — сохранить/восстановить содержимое в/из регистр(а). Т.к. стек — упорядоченный способ хранения данных, то необходимо эти команды использовать в паре, что бы не изменять/нарушать структуру стека. В языках высокого уровня для уменьшения ошибок стек программисту недоступен. In AL, port и out AL, port — ввод/вывод данных в/из порт(а) (порты 0-255). Для увеличения числа портов есть вторая модификация команды: in acc, [DX] и out [DX], acc
Способы адресации микропроцессоров: 1. регистровый (неявный, безадресный) mov reg(приемник), reg(источник) Содержимое правого регисстра пересылаются (копируются в левый регистр). Это наиболее быстродействующий способ адресации, поэтому его рекомендуется использовать чаще для повышения эффективности работы ЭВМ. 2. Непосредственный — второй операнд находится непосредственно после команды в области команд. Этот способ адресации применяется для введения констант в вычислительный процесс. При этом константы хранятся внутри программы. mov BL, d8 (0-FF) mov CX, d16 (0-FFFF) 3. Прямой. При этом в качестве операнда команды указывается адрес ячейки памяти, в которой хранятся данные. Достоинства — можно обраатиться к любой ячейке доступной области памяти. В Ассемблере используется аппарат меток, т.к. заранее вычислить прямой адрес ячейки памяти практически невозможно. mov DX, MT1, где MT1 — символическое имя ячейкипамяти. Обычно все данные группируются в одном адресном пространстве в конце программы. Если же формировать ее в начале программы, то необходимо их обойти с помощью команды jump или не запускать программу с начального адреса трансляции. mov DX, WORD PTR MT1 mov AL, BYTE PTR MT1+1 mov DB, 0a5h, 37h 4. Косвенный. При этом в адресной части команды указывается адрес ячейки памяти (в регистре), соодержиимое которого является адресом ячейки памяти. Это косвенная регистровая адресация. mov reg, [reg]. Для выполнения этой команды необходимо предварительно загрузить адрес в регистр косвенной адресации. lea BX, Mt2 mov AX, BX Косвенная адресация используется для работы с массивами данных, в качестве начала массива записывается начальный адрес, позже он изменяется программным способом.
03.12.2012 — Лекция №19 На первый взгляд кажется, что округления не возникает. Операция округления - это процесс установления значения последней сохраняемой цифры после записи ее меньшим чем в исходном представлении числом разрядов. Округление бывает 2х видов: 1. путем усечения - округления путем отбрасывания младших неиспользуемых разрядов, при этом погрешность округления раняется единице первого сохраняемого младшего разряда. 2. путем симметриченого округления - округления с учетом значения последней отбрасываемой цифры после сохраняемого разряда, при этом максимальная погрешность симметричного округления равна половине младшего сохраняемого разряда. В ЭВМ этот алгоритм реализуется следующим образом: отбрасываемый бит сохраняется в бите переноса регистра признаков/флагов и затем выполняется операция сложения этого бита переноса с округляемым числом. При обработке чисел с плавающей точкой приведенная погрешность вычисляется путем деления на минимальное число данного порядка. Т.о. при усечении приведенная погрешность с плавающей точкой будет равна 1.0*2^(-n), где n - младший сохраняемый разряд после округления. Т.о. погрешность округления чисел с плавающей точкой не зависит от величины числа, а зависит только от порядка числа. При сложении целых чисел погрешность при округдении не возниакет, а при сложении чисел с плавающей точкой требуется операция денормализации мантисы, что всегда приводит к необходимости операции округления, а следовательно к возникновению дополнительной погрешности. Погрешность алгоритмов можно оценивать аналитическим способом, т.е. последовательно анализируя погрешность от каждой операции. [пример] при операции сложения и вычитания максимальные погрешности операндов складываются по модулю. Получается максимальная результирующая погрешность. Для операции умножения погрешность вычисляется более сложным алгоритмом {формула}. Погрешность операции деления: {формула}. Погрешность от деления существенно возрастает при малых значениях делителя. Если алгоритмы более сложные, то применяется разложение функции в ряд Тейлора и обычно используют два первых чления разложения (линейные функции). Однако применять разложение в ряд Тейлора надо с осторожностью, т.к. оценка оценки погрешности существенно зависит от формы функции, т.к. используя только первые 2 члена ряда и отбрасывая все остальные часто забывают про это и считают, что оценка погрешности точная 05.12.12 — Лекция №20 Применение разложения в ряд Тейлора - самый универсальный аналитический способ нахождения погрешности для любых дифференцируемых функций. Обычно в алгоритмах имеется несколько переменных, поэтому необходимо найти результирующую максимальную погрешность результата вычисления. от всех переменных и констант, имеющих свои погрешности. В таком случае используется разложение в ряд Тейлора с применением аппарата частных производных. Таким образом, например {пример} f(x,y)=/x=a, y=b/=f(a,b)+d[f(x,y)]/dx * (x-a) + d[f(x,y)]/dy * (y-b). Т.о. получаем погрешность... Благодаря этому можно вычислить погрешность от операции деления {ОПЕРАЦИЯ} Аналитический метод используется для научных исследований для доказательства какой-либо теории. На практике же аналитические методы не применяются, т.к. они очень сложные и трудоемкие и при этом функции могут быть и не дифференцируемые. На практике применяются методы последовательного перебора путем моделирования работы функции на более мощной/точной ЭВМ, т.е. все алгоритмы задаются с двойной точностью по сравнению с реальной ЭВМ, на кторой будет использоваться алгоритм и полученные значения используются как эталонные для вычисления погрешности реального алгоритма. Основной недостаток такого подхода в том, что непонятно, как выбирать шаг дескритизации для переменных. Если число вычислений очень большое для анализа погрешностей очень большое для анализа погрешностей алгоритма и все возможные комбинации переменных невозможно учесть, используют метод Монте-Карло: запускают генератор случайных чисел и все переменные в алгоритме задаются случайным образом со случайной погрешностью и погрешность результата оценивается аналогично предыдущему способу, при чем продолжительность вычислений можно прекратить, если результать погрешности стабилизирует свои параметр. Неточность сложных алгоритмов обычно объясняется конечностью числа итерационных циклов, т.к любая система управления работает в реальном времени, то бесконечно увеличивать число итерационных циклов невозможно, поэтому ограничиваются продолжительностью алгоритма, который гарантирует приемлимую точность вычислений.
Устройства управления ЭВМ. УУ предназначены для синхронизации всех блоков ЭВМ и внешних устройств. Функции: 1. Принимать сигнал «сброс» и приводить все устройства ЭВМ в исходные для работы состояния. Поэтому все устройства, имеющие элементы памяти, требуют начальной инициализации (сброс). 2. Считывать состояние программного счетчикак (обычно 0 после сброса). Код первой команды, находящийся по указанному адресу, считывается в регистр команд. В регистре команд код команды сохраняется в процессе ее выполнения и поступает на дешифратор команд, который определяет тип команды и запускает датчик управляющих сигналов, который подает нужные сигналы для выполнения этой командысоответствующим блоком ЭВМ. К содержимому программного счетчика прибавляется 1 и работа ЭВМ продолжается со считывания следующей команды из сегмента кода и до бесконечности до отключения питания. 3. Реализует работу ЭВМ в пошаговом режиме для отладки программ, в цикличесском режиме для применения готовых подпрограмм, и в автономном режиме, когда постоянно выполняют какую-либо программу.
Существуют 2 принципа управления: 1. Схемное (аппаратное) — жесткая логика 2. микропрограммное — гибкая логика
Схемное управление ЭВМ УУ реализуется в виде набора комбинации схем и регистров для временного хранения информации. Каждая команда реализуется на основе последовательности микрокоманд и микроопераций, которые реализованы в УУ в процессе изготовления ЭВМ и не могут быть изменены пользователем. Схемное управление может быть реализовано 3 способами: 1. Центральное 2. Индивидуальное 3. Смешанное В большинстве современных ЭВМ малой и средней производительности реализован схемный принцип управления как наиболее простой и надежный. В центральной схеме управления (ЦСУ) при этом в составе УУ имеется один центральный датчик управляющих сигналов, который управляет всеми блоками ЭВМ РИСУНОК ЗУком — запоминающее устройство команд РК — регистр команд ДШК — дешифратор команд ЦДУС — центральный датчик управляющих сигналов РИ — распределитель управляющих импульсов
ЦД управляющих сигналов способен реализовать функции для выполнения любой команды ЭВМ, как самой простой, так и самой сложной. Поэтому ЦСУ требует минимальных аппаратных затрат и постоянства коммандного цикла работы в ЭВМ, что очень удобно для синхронизации работы с другими устройствам. Основной недостаток ЦСУ: низкая эффективность работы ЭВМ, т.к командный цикл рассчитан на выполнение самой длинной команды; если встречается более короткая команда, ЭВМ простаивает, ожидая окончание цикла.
10.12.2012 — Лекция №21 Для устранения этого недостатка применяется индивидуальное схемное управление, при этом для каждой команды реализуется собственный датчик управляющих сигналов, поэтому УУ не простаивает ни одного такта и наиболее эффективно использует время процессора. РИСУНОК Основной недостаток индивидуального схемного управления в больших аппаратных затратах, т.е. реализация сложная (аппаратная часть) и командный цикл выполняется асинхронно, что затрудняет процесс синхронизации работы с другими устройствами, т.к. цикл не постоянный и зависит от... в программе. Для сохранения высокой эффективности и уменьшения аппаратных затрат применяют смешанное схемное управление, которое получило дольшее распространение в УУ ЭВМ, при этом все команды ЭВМ разбивают на группы по сложности (времени) их выполнения и таким образом реализуют от 3 до 5 (max) датчиков управляющих сигналов для каждой группы команд, что сохраняет высокую эффективность, т.к. могут быть потери не больше 1 такта. Такие УУ реализуют так называемую CISC-архитектуру процессора (Complecs Instraction Set Computing - сложные инструкции/команды, реализованные в составе ЭВМ). Т.е. в составе ЭВМ есть сложные команды (умножение, деление, сдвиг на большое число разрядов), которые требуют большое число тактов, и есть простейшие команды, ктороые могут выполняться практически за один такт. Для повышения эффективности работы процессора более сложные команды из состава ЭВМ исключаются и оставляют только те команды, которые выполняются за 1 такт, т.е. простейшие. Т.о. реализуется так называемая RISC-архитектура (Reduce Instract Set Computing - ЭВМ с уменьшенным числом инструкций). Аппаратно ЭВМ работает быстрее, т.к. способен реализовать только простейшие алгоритмы, а более сложные операции в нем реализуются в виде подпрограмм (аналог функций в языке C). На этой архитектуре реализовано много AVR-процессоров, которые предназначены в основном для управляющих задач (а не вычислительных). На них реализуются простейшие контроллеры. Т.к. набор команд AVR очень простой, то программировать его на Assembler очень сложно, т.к. требует очень большого числа инструкций даже для простейших алгоритмов. Поэтому профессионалы для программирования AVR-процессоров применяют язык C, который для них является платным.
Микропрограммный принцип управления МПУ реализуется на основе микрокоманд, которые выбираются из запоминующего устройства микропрограмм, а каждая микропрограмма реализует одну команду ЭВМ. Т.о. микрокоманда - это обычное бинарное слово, длиной порядка 40-60 бит. Каждый бит в этой микрокоманде отвечает за формирование одного управляющего сигнала. Если бит = 0, управляющий импульс отсутствует, а если = 1, то на соответствующий блок формируется управляющий импульс. РИСУНОК Принцип работы микропрограммного УУ заключается в следующем: по содержимому счетчика команд из ЗУ команд считывается код команды и записывается в регистр команд. Преобразователь кода (блок микропрограммного управления) из кода команды формирует код начального адреса микропрограммы, который поступает в регистр адреса микрокоманды. По этому адресу из ЗУ микрокоманд/микропрограмм выбиается код микрокоманды и записывается в регистр микрокоманд. Вторая часть микрокоманды является адресной частью следующей микрокоманды и записывается в регистр адреса следующей микрокоманды. В конце выполнения микрокоманды содержимое регистра (следующей микрокоманды) переписывается в регистр адреса микрокоманды. И таким образом, пока не выполнится вся микропрограмма. В конце выполнения микропрограммы счетчик команд увеличивается на единицу, ЭВМ переходит к выполнению следующей команды. Т.о. основное достоинство МПУ - возможность реализовать собственную систему команд ЭВМ путем разработки записи микропрограмм в ЗУ микрокоманд/микропрограмм. Для изменения системы команд ЭВМ достаточно только заменить одну микросхему ППЗУ. По этому принципу реализована MISC-архитектуры (многоцелевые инструкции, включенные в состав ЭВМ),т.е. во время загрузки ОС в ЗУ микропрограмм загружается соответствующая система команд и ЭВМ таким образом ориентируется на определенный тип задач. Этот путь развития современных ЭВМ считается наиболее перспективным, но он имеет определенные недостатки: большие аппаратные заттраты, пока еще низкое структурное быстродействие, т.к. имеются как бы две ЭВМ (внутрянняя и внешняя). В настоящее время наибольшее распространение имеет схемное управление, т.к. оно наиболее простое и быстродействующее. Для упрощения работы МПУ реализуется так называемое УУ с естественным порядком следования микрокоманд, т.е. когда следующая команда хранится по следующему (на 1 больше) адресу, поэтому вместо регистра адреса микрокоманд устанавливают счетчик микрокоманд. После выполнения каждой микрокоманды к счетчику микрокоманды добавляется единица, пока не будет выполнена вся микропрограмма.
Интерфейсы ЭВМ Интерфейс - совокупность аппаратных и программных средств, обеспечивающих обмен информации между ЭВМ и внешними устройствами. Интерфейс может быть реализован в ЭВМ 3 способами: 1. программно-управляемая передача данных 2. реализация прямого доступа в память 3. передача данных в режиме прерывания
17.12.2012 — Лекция №22 1. Программно-управляемая передача данных Это наиболее распространенный режим передачи данных, при этом обмен данными осуществляется по командам ввода-вывода., указанных в программе. IN ALL PORT OUT PORT, ALL PORT обычно имеет номер 0-255? При этом процесс обмена реализуется с помощью специальных интерфейсных БИС, называемых «Порт ввода-вывода». Порты подключаются к системной шине ЭВМ параллельно, т.о позволяют наращивать число портов ввода-вывода. РИСУНОК Т.о порты ввода-вывода подключаются аналогично ячейкам памяти ЗУ и обращение к ним происходит так же, как и к обычным ячейкам памяти — чтение для ввода данных из внешнего устройства, запись для вывода данных, при этом для устройств ввода-вывода обычно выделяется отдельное адресное пространство. Структура порта Ввода-Вывода РИСУНОК По шине адреса передается адрес порта ввода-вывода. Дешифратор адреса определяет, что он относится к данному порту и активизирует буферный регистр вывода данных или мультиплексор ввода данных в зависимости от сигналов, передаваемых по шине управления. Благодаря программированию каждый канал может быть запрограммирован на ввод или вывод, при этом в различных режимах работы: ñ без сигналов стробирования — работа с устройствами, которые всегда готовы к работе и нет необходимости опрашивать их готовность. ñ Со сигналом стробирования — для передачи сигналов обычно выделяется один специальный канал, по которому передается/принимается управляющие сигналы, свидетельствующие о том, что информация присцтствует на шине данных. Параллельные адаптеры (порты ввода-вывода) применяются для передачи данных, которые находятся непосредственно рядом с ЭВМ, требуют требуют большого числа KC между устройствами. Недостатки: большое число KC? Аппаратные затраты, небольшие расстояния, низкая скорость передачи данных Если устройство находится на расстоении 1 метр и более, применяются последовательные порты ввода-вывода, т.к параллельные порты в высокоскоростных процессах имеют существенные недостатки. В отличие от параллельных линий, последовательыне линии передачи данных позволяют существенно повысить скорость передачи данных в общем, при этом задержки KC не влияют на скорость передачи данных, т.к задержки всех импульсов у ЛC одинаковые. Скорость передачи данных можно повышать до очень больших величин. Для реализации последовательных интерфейсов к параллельноby адаптеру добавляется регистр сдвига. Передаваемые данные записываются в регистр сдвига и частота тактовых синхроимпульсов соответствует скорости передачи данных. Т.о параллельный код преобразуется в последовательный. Последовательный код поступает на вход сдвигового регистра и преобразуется в параллельный код. Последовательные команды связи могут быть реализованы по синхронному и асинхронному принципу. Синхронный принцип передачи предполагает дополнительной линии связи для передачи сигнала синхронизации. Такой принцип имеет те же недостатки, что и параллельный, поэтому синхронные последовательные интерфейсы используются только для передачи информации на небольшие расстояния (1-10 метров). Наибольшее растространение получил асинхронный принцип передачи. Для этого каждый передаваемйы байт дополняется в начале стартовым, а в конце стоповым битом. Кроме того обычно для выявления возможных ошибок добавляется бит контроля по четности. «1»
«0» Благодаря стартовому и стоповому биту осуществляется синхронизация процесса передачи, при этом частота приемника и передатчика не должны отличаться друг от друга больше, чем на 5%. После поступления старт-бита приемник определяет длительность старт-бита и благодаря этому определяется скорость передачи данных, потом с этой частотой дискретизации начинает считывать данные из линии данных, сравнивает результат контрольной суммы с принятым контрольным битом. Если контрольная сумма с битом не совпадает, то формируется сигнал «Признак — ошибка данных». Если контрольная сумма не совпала, то проверяется 1 на месте стоп-бита, идет запрос повтора передачи. Иногда для надежности пименяется 2 стоп-бита подряд, если KC имеет высокий уровень помех. Основной недостаток асинхронного принципа передачи с таким способом асинхронизации — сигналы не имеют баланса 0 и 1. Это затрудняет передачу сигнала ч/з частотно- зависимые цепи. Для самосинхронизации используется специальная система кодирования — Манчестер-2 со средним нулевым уровнем. Каждый последующий бит складывается с предыдущим по модулю 2 и результат передается. Такой принцип используется для записи на жестких дисках. Такой же принцип кодирования осуществляется во всех устройствах, включая Ethernet. Для передачи информации на небольшие расстояния используются синхронные интерфейсы типа SPI — разработка фирмы Motorolla. Этот интерфейс применяется для высокоскоростной передачи данных между устройствами, находящимися на одной плате. Принцип работы заключается в том, что на стороне передатчика и приемника находятся сдвиговые регистры, которые разделяются на ведущего и ведомого. Кроме того, имеется дополнительная линия синхронизации, по которой передаются синхроимпульcs? Тактирующие работу сдвиговых регистров. На передающей стороне формируется сигнал MOSI. Одновременно формируется ответный сигнал MISO/ Эти два сдвиговых регистра закольцованы, т.е реализован полный дуплексный режим — одновременные прием и передача. Такой режим называется точка-точка. Для обеспечения связи одного устройства с многими реализуется дополнительная линия выбора устройства, по которой можно передавать данные и выбирать устройства. SPI достигает скорости до 1 Мбит/с. Интерфейс IIC (I^2C — патент Philips) — двухпроводной интерфейс. По этому интерфейсу обычно подключаются различные fladh-порты. Он рассчитане на подключение 2МП устройств на одной плате для уменьшения KC между устройствами. Устройства должны иметь общую землю и общее питание. Этот интерфейс не расчитан на гальваническую изоляцию. Основное достоинство — возможность реализовать сеть МП устройств. РИСУНОК CAN-интерфейс (Bosch). Изначально разработан для автомобилей. Основная особенность — малое потребление мощности (малые токи, дифференциальный сигнал, именуемый высоким H и низким L уровнем)
19.12.2012 — Лекция №23 Реализована так называемая CR-технология (collision resolution - разрешение/допущение коллизии). Все сигналы от источника делятся на доминантные и рецессивные, т.о не возникает конфликтов в линии связи и больших перетоков м/у одновременно работающими передатчиками. Вторая особенность - высокая надежность, т.к. Применяется 4-хпроводный интерфейс. Максимальная длина ЛС - 1-2 км. Кроме того имеется возможность регулировать ток в линии, в зависимости от уровня помех в канале. Надежность обеспечивается резервированием линии связи. Применяется протокол передачи CanOpen - сперва передается адрес приемника, затем команда, предназначенная приемнику, затем принимается ответ, что приемник активен, затем передаются данные. RS-485 - это сетевой интерфейс, предназначенный для объединения в информационную сеть микропроцессорных контроллеров на промышленных предприятиях. Максимальная длина сети - 1 км. Сновная особенность - реализован по принципу CD (collision detection - определение коллизии), т.е. Если одновременно 2 передатчика включаются в линию и начинают передавать противоположные сигналы (один - 0, другой -1), то они начинают подавлять друг друга и каждый, контролируя собственную передачу, понимает, что его данные искажены, поэтому он обязан выключиться. Включение на передачу осуществляется ч/з определенную случайную задержку. Сигналы передаются в дифференциальном виде по линиям A и В. Применяется витая пара. Скорость передачи - до 1 МБит/с. Реальная скорость - 100 КБит/с. У RS-485 должны между ЛС стоять резисторы-терминаторы, предназначенные для согласования волнового сопротивления ЛС с нагрузкой (120 Ом). Технология Ethernet - наиболее перспективная в настоящее время, т.к интерфейс реализован на основе трансформаторной развязки, т.е автоматически реализуется гальваническая изоляция друг от друга, т.о возможно реализовать всемирную сеть. При чем, протоколы передачи данных реализованы по стандарту, а программные приложения применяют единообразную информационную технологию. Благодаря этому реализуется полная платформенная независимость всех устройств, работающий в интернете. Самый растространенный язык программирования в интернете - Java.
Организация режима прямого доступа в память (ПДП - DMA direct memory access). Это наиболее быстродействующий способ передачи данных, при котором данные передаются м/у внешним устройством и памятью без участия ЦП, при этом функцию управления передачи данных принимает на себя специальная БИС - КПДП (контроллер ПДП). В ее состав входят специальные регистры, которые сохраняют информацию о начальном адресе памяти и размере массива для каждого независимого канала, которые записываются туда в момент инициализации внешних устройств ЭВМ. Имеется 3 режима реализации ПДП: 1. После запроса внешнего устройства ЦП прекращает свою работу и освобождает шины ЭВМ и контролер ПДП передает весь массив данных м/у памятью и внешним устройством. Достоинство - высокая скорость передачи; недостаток - во время передачи процессор не выполняет своих функций. Такие задержки могут отрицательно влиять на качество работы системы. 2. Процессоро освобождает шины в те моменты, когда выполняются команды с внутренними регистрами микропроцессора. В этот момент контроллер ПДП успеваtn передавать 1 или несколько байтов. Т.о совмещенная работа контроллера ПДП обеспецивает максимальную эффективность работы ЭВМ, однако имеется недостаток такого режима работы - не всегда гарантировано время передачи массива, которое зависит от количества/назначения команд в программе. 3. Применение специальных мощных команд работы с массивами данны, например цепочечные (для работы с цепочками). Благодаря применению таких команд можно осуществлять быструю передачу данных, аналогично ПДП, но под управлением ЦП.
Передача данных в режиме прерывания. Этот режим используется при работе системы в реальном времени, когда ЭВМ должна реагировать на внешние события путем формирования управляющих воздействия на объекты. Т.е каждое внешнее устройство формирует сигнал "запрос прерывания", который поступает на специальную БИС "контролер прерывания". Контролер прерываний определяет приоритет этого устройства и, если он выше, чем все остальные, то приостанавливает работу текущей программы ЭВМ и передает управление программному модулю, который обрабатывает прерывание внешнего устройства. По окончании управление передается прерванной программе. Т.е прерывание - это выполнение команды call по указанному адресу по тредованию внешнего устройства, а адреса перехода формируются контроллером прерывания. Кроме того имеются простые прерывания и векторные прерывания. Простые прерывания реализуются путем объединения всех запросов прерывания от всех устройств по схеме ИЛИ и подаче его на единсвенный вход запроса прерывания ЦП, при этом БИС контроллера прерывания не нужен, а программа обработки прерывания опрашивает флаги готовности всех устройств в режиме программно-управляемой передачи данны. Очередность опроса флагов определяет приоритет устройств. Достоинство - простота технической реализации; недостаток - медленная реакция ЭВМ на запрос прерывания. Для более быстродействующих систем применяется векторное прерывание, при котором каждому внешнему устройству отводится определенный вектор (адрес начала подпрограммы обработчика прерывания). Обычно эти векторы все сгруппированы в начальной области памяти ЭВМ для удобства распределения адресного пространства. Кроме того имеются одноуровневые и многоуровневые прерывания. Одноуровневые - прерывание, при котором ЦП не приступает к его обработке до тех пор, пока не закончится обработка предыдущего прерывания. Многоуровневое (приоритетное) - каждому устройству выделяется определенный приоритет и обработка прерываний происходит в порядке приоритетов. Т.е устройство с высшим приоритетом может прервать обработку прерывания с более низким приоритетом. Это обеспечивает наибольшую эффективность работы системы, т.к роль внешних устройств в системе различна. Высший приоритет отводится: 1. Аварии питания ЭВМ 2. Прерывание от инжинерного пульта управления (Диспетчер задач, например) 3. Быстродействующие устройства 4. Медленнодействующие устройства
Дата добавления: 2014-01-07; Просмотров: 814; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |