Файл: Основные правила составления программ на ассемблере.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.12.2023
Просмотров: 34
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
. Запись программы на Ассемблере требует соблюдения определенных правил. Программа пишется в виде последовательности команд. Каждая команда записывается в одной строке и имеет четыре поля:
МЕТКА ОПЕРАЦИЯ ОПЕРАНД КОММЕНТАРИЙ
Не обязательно использовать все поля, но они должны быть в указанном порядке.
МЕТКА - это символическое имя адреса команды, находящейся в данной строке; обычно метки придаются командам, к которым предусматривается обращение в процессе выполнения программы. Метка начинается с буквы и ее длина неограниченна, но различаются только первые восемь символов. Нельзя внутри метки использовать пробел. Нельзя в качестве меток записывать имена регистров, коды команд и другие зарезервированные сочетания (например, А, М, СМР и т.п., но А2, ММ, СМР9 можно). В одной программе не должно быть двух и более одинаковых меток. Разделителем между меткой и операцией является двоеточие.
ОПЕРАЦИЯ - в этом поле содержатся мнемокоды команд или директивы ассемблера, которые описываются ниже. Разделителем между кодом команды и операндами является пробел.
ОПЕРАНД - это символические имена регистров, адресов, меток или константы. Целочисленные константы могут быть определены в двоичной (префикс b, b’11101101), шестнадцатеричной (префикс h, h’2a3f) или десятеричной (префикс отсутствует) системах счисления. При наличии двух операндов разделителем служит запятая. У некоторых команд операнды отсутствуют (RRC, NOP и др.) и поле операндов остается пустым. Операнд может быть выражением. На начальном этапе обучения программированию на Ассемблере их можно не использовать. С правилами составления выражений можно познакомиться в литературе.
КОММЕНТАРИЙ начинается с точки с запятой. Если строка начинается с точки с запятой, то вся строка считается комментарием, и в ней могут присутствовать любые символы в любой последовательности. Комментарий является вспомогательным средством, используемым для пояснения и документирования программ. Не следует пренебрегать комментариями, так как через короткое время программа становится непонятной даже ее автору.
В приложении 1 приведен пример записи программы на Ассемблере.
2.2. Директивы Ассемблера
Директивы Ассемблера (или псевдокоманды) управляют работой транслятора и не переводятся в машинные коды. Используемый в лаборатории транслятор распознает 15 директив. В табл. 2 приведены правила записи некоторых наиболее употребительных директив. Метки, заключенные в квадратные скобки, необязательны. Все директивы могут иметь метки и комментарии.
Директива .ORGопределяет начальный адрес размещения в памяти следующих далее команд. Директив .ORG в программе может быть несколько. При отсутствии директивы .ORG программа начинается с нулевого адреса.
Директива .END располагается на последней строке и указывает транслятору на завершение программы. В программе может быть только одна Директива .END.
Директива .EQU (эквивалентность) ставит в соответствие константам, адресам, регистрам и т.п. символические имена. В случае изменения , например, адресов достаточно отредактировать только директиву .ORG.
Директива .SET действует также как директива .EQU, однако в отличие от .EQU может употребляться в программе неоднократно, переопределяя значение символического имени. Это позволяет использовать одно и то же символическое имя в разных значениях.
Таблица 2
Директива .DBрезервирует ячейки памяти и помещает в них представленные выражения. В качестве выражения может присутствовать цепочка символов, заключенная в кавычки, например, ‘STOP’. На каждое выражение или символ отводится один байт.
Директива .DWдействует аналогично директиве DB с той лишь разницей, что каждое выражение хранится в двух ячейках памяти и цепочки символов не допускаются.
Директива .RS только резервирует ячейки памяти, в качестве выражения обычно записывается просто число резервируемых ячеек. Часто эта директива обозначается как DS.
2.2. Режим ассемблирования
Вызов транслятора с языка Ассемблера осуществляется командой IASM85<NAME>, где - имя прикладной программы, написанной согласно изложенным выше правилам. Расширение asm можно не указывать. Ассемблирование выполняется сразу и выдается сообщение:
000XXX lines assembled - проассемблировано 000ХХХ строк,
0 Errors detected - ошибок нет.
Такое сообщение указывает на отсутствие синтаксических ошибок в тексте программы, но ни в коей мере не говорит о правильности работы программы. Если ассемблером обнаруживаются ошибки, то выдается сообщение:
(тип ошибки ) in line xx column xx - в строке хх, колонке хх,
(тип ошибки ) in line xx column xx - в строке хх, колонке хх,
000ХХХ lines assembled - проассемблировано 000ХХХ строк,
2 Errors detected- обнаружено 2 ошибки.(2 ошибки взято для примера).
В ходе ассемблирования создаются еще файл листинга с тем же именем и расширением lst иобъектный файлс расширениемobj. Причем оба файла создаются как при отсутствии, так и при наличии ошибок. Места ошибок отмечаются в листинге символом ^. Ошибки в исходном файле исправляются в текстовом редакторе с повторным ассемблированием. Редактирование текста выполняется по правилам текстового редактора. Файл листинга кроме исходного текста содержит дополнительно номера строк, адреса ячеек памяти и содержимое этих ячеек, т.е. машинные коды (см. приложение 1).
Объектный файл в формате INTEL, который в реальных условиях с помощью программатора записывается в ПЗУ, в данном случае используется симулятором.
2.4. Режим симуляции прикладной программы
Программа симуляции (моделирования) вызывается командой AVSIM85 или командой AV.bat. В появляющемся меню следует выбрать режим А, т.е. режим моделирования только одного МП. Раскрывается экран, вид которого показан на рис.2. Нижняя часть экрана содержит меню команд управления режимом симуляции (режим команд). Каждая из команд имеет свое подменю. В остальной части экрана отражается состояние МП, содержимое блоков памяти, ввод/вывод и текст программы на Ассемблере (режим экрана). Переключение режимов производится клавишей Esc.
Для управления симулятором задействованы горячие клавиши F1- F10:
F1-пуск отлаживаемой программы пользователя в непрерывном режиме;
F2 - перемещение указателя точки останова вверх;
F3 - фиксация точки останова (точки останова сбрасываются после их прохода и при повторном выполнении программы их следует при необходимости переустановить);
F4 - перемещение указателя точки останова вниз;
F5 - выбор скорости симуляции (HI, MID, LOW), HI - основной режим быстрой симуляции, MID иLOW - медленное пошаговое выполнение программы при удерживании клавиши F1;
F6 - управление дисплеем (ON- обновление после каждой команды, OFF - по завершению программы);
F9 - пошаговое выполнение программы назад);
F10 - - пошаговое выполнение программы вперед.
Горячие клавиши активны в обоих режимах. Ниже приводится описание наиболее употребительных команд меню и подменю. Дополнительные сведения можно получить по команде HELP .
Рис.2. Экран симулятора
Dump - определение отображаемых участков памяти (Memory Space).
Expression - ввод выражения (числа) в регистр или ячейку памяти, отмеченные курсором в режиме экрана. Вводимые данные отображаются также справа в виде кода КОИ8. Если ввод производится в память, то они одновременно отображаются в левой части экрана как коды МП.
Load - загрузка файла данных (Data), программы (Program), таблицы символов (Symbol-table). При загрузке программы и данных обязательно указывается расширение obj!
IO - подсоединение файла входных данных.
Memory - работа с областью памяти: обнуление, перемещение массива или запись в массив константы.
Patch (Patch code) - вставка мнемокода команды МП в ячейку памяти, адрес которой находится в РС.
Set - установка: Memory map - определение областей ОЗУ (RAM) и ПЗУ (ROM); cYcles - включение счетчика циклов выполняемой программы;
Passpoint - отметка команд, помеченные команды подсчитываются в ходе выполнения программы; в отличие от точек останова, эти пометки не сбрасываются автоматически.
SetUp - установка числа команд, исполняемых в пошаговом режиме назад.
Reset - сброс, Cpu -обнуление счетчика команд и регистра флагов, состояние других регистров не изменяется; cYcles - выключение счетчика циклов.
eXecute - выполнение команд МП, результат отражается на экране
Quit - выход из программы симулятора (следует нажать подряд Q и E).
Вызов команд производится нажатием выделенных клавиш.
Например, загрузка программы: L, P <имя программы с расширением .obj>,Enter. Можно также пользоваться клавишами управления курсором для выделения выбранной команды.
Возвращение из подменю в меню производится нажатием клавиш Ctrl/C
Если в отлаживаемой программе имеются команды ввода/вывода (IN/OUT), то адресам в этих командах следует присвоить значения 0,1,2 или 3. Вводимое значение набирается в «режиме экрана».
Массивы данных, если они предусмотрены в программе, вводятся в зарезервированную область памяти также, как и программа, только с использованием команды DATA. Эти же данные можно ввести непосредственно в память в «режиме экрана» в шестнадцатеричной форме.
После вызова симулятора рекомендуется следующая последовательность действий:
- распределить память (S, M, A<начальный и конечный адреса >; O< начальный и конечный адреса >; в учебных программах можно всю область памяти определять как ОЗУ);
- загрузить программу, не забывая расширение obj (L, P <имя>);
- загрузить массив данных и вводимое число, если это предусмотрено в программе;
- установить начальный адрес программы (E <адрес>; курсор должен указывать на программный счетчик РС); можно воспользоваться командой сброса (R, C);
- выполнять программу в пошаговом режиме, отмечая изменения содержимого регистров и памяти;
- для режима непосредственного выполнения программы использовать точки останова на наиболее характерных командах.
3. УЧЕБНЫЙ МИКРОПРОЦЕССОРНЫЙ КОМПЛЕКТ (УМК)
УМК состоит из следующих составных частей: микроЭВМ, пульта оператора, блока питания.
МИКРОЭВМ
+ 5 В
220 В +12В
- 5 в -5 В
Рис.3. Структурная схема УМК
МикроЭВМ является основной составной частью и управляет работой всего УМК. Все обращения к памяти, операции ввода – вывода, вычисления выполняются микроЭВМ или ею же инициируются.
Пульт оператора предназначен для взаимодействия оператора с микроЭВМ.
Блок питания обеспечивает постоянными стабилизированными напряжениями микроЭВМ, пульт, а также макетную плату..
МикроЭВМ состоит из операционного устройства (ОУ) постоянного запоминающего устройства (ПЗУ), оперативного запоминающего устройства (ОЗУ) и устройства пошагового выполнения программ.
Пульт оператора состоит из клавиатуры, шестиразрядного дисплея, световой индикации и управляющих кнопок сброс "СБ", прерывание "ПР", шаг "ШГ", а также переключателей работа/шаг "РБ/ШГ" и команда/цикл "КМ/ЦК" (см. рис. 1).
Основой микроЭВМ является ОУ, реализованное на базе МП КР580ВМ80, которое производит все операции по обработке информации Исходным состоянием ОУ является чтение информации по нулевому адресу ПЗУ. ОУ принимает это состояние после нажатия управляющей кнопки "СБ" на пульте оператора.
Информация о состоянии ОУ фиксируется в регистре состояния в начале каждого машинного цикла.
В ПЗУ записана программа "Монитор", обеспечивающая ввод информации с клавиатуры пульта оператора и вывод ее на дисплей.
Программа "Монитор" занимает 1 кбайт ПЗУ и использует последние 54 ячейки ОЗУ, еще 1 кбайт зарезервирован зa пользователем. ОЗУ используется для хранения программ пользователя и имеет емкость 1 кбайт.
Устройство пошагового выполнения программ переводит ОУ в состояние "Ожидание" после выполнения очередного шага. Возможны два пошаговых режима работы: покомандный шаг и поцикловый шаг. Вызов пошагового режима работы осуществляется переключателем "РБ/ШГ", выбор величины шага – переключателем "КМ/ЦК". Для последующего шага необходимо нажать кнопку "ШГ", при этом после выполнения очередного шага на световой индикации отображается состояние адресной шины, шины данных и регистра состояния ОУ в двоичном коде.
Выполнение программы может быть остановлено нажатием управляющей кнопки "ПР". При этом состояния всех регистров ОУ сохраняется в ОЗУ, откуда они опять могут быть загружены в ОУ и выполнение программы продолжится, начиная с точки останова.
Внешний вид лицевой панели УМК отображен на pис. 4.
МЕТКА ОПЕРАЦИЯ ОПЕРАНД КОММЕНТАРИЙ
Не обязательно использовать все поля, но они должны быть в указанном порядке.
МЕТКА - это символическое имя адреса команды, находящейся в данной строке; обычно метки придаются командам, к которым предусматривается обращение в процессе выполнения программы. Метка начинается с буквы и ее длина неограниченна, но различаются только первые восемь символов. Нельзя внутри метки использовать пробел. Нельзя в качестве меток записывать имена регистров, коды команд и другие зарезервированные сочетания (например, А, М, СМР и т.п., но А2, ММ, СМР9 можно). В одной программе не должно быть двух и более одинаковых меток. Разделителем между меткой и операцией является двоеточие.
ОПЕРАЦИЯ - в этом поле содержатся мнемокоды команд или директивы ассемблера, которые описываются ниже. Разделителем между кодом команды и операндами является пробел.
ОПЕРАНД - это символические имена регистров, адресов, меток или константы. Целочисленные константы могут быть определены в двоичной (префикс b, b’11101101), шестнадцатеричной (префикс h, h’2a3f) или десятеричной (префикс отсутствует) системах счисления. При наличии двух операндов разделителем служит запятая. У некоторых команд операнды отсутствуют (RRC, NOP и др.) и поле операндов остается пустым. Операнд может быть выражением. На начальном этапе обучения программированию на Ассемблере их можно не использовать. С правилами составления выражений можно познакомиться в литературе.
КОММЕНТАРИЙ начинается с точки с запятой. Если строка начинается с точки с запятой, то вся строка считается комментарием, и в ней могут присутствовать любые символы в любой последовательности. Комментарий является вспомогательным средством, используемым для пояснения и документирования программ. Не следует пренебрегать комментариями, так как через короткое время программа становится непонятной даже ее автору.
В приложении 1 приведен пример записи программы на Ассемблере.
2.2. Директивы Ассемблера
Директивы Ассемблера (или псевдокоманды) управляют работой транслятора и не переводятся в машинные коды. Используемый в лаборатории транслятор распознает 15 директив. В табл. 2 приведены правила записи некоторых наиболее употребительных директив. Метки, заключенные в квадратные скобки, необязательны. Все директивы могут иметь метки и комментарии.
Директива .ORGопределяет начальный адрес размещения в памяти следующих далее команд. Директив .ORG в программе может быть несколько. При отсутствии директивы .ORG программа начинается с нулевого адреса.
Директива .END располагается на последней строке и указывает транслятору на завершение программы. В программе может быть только одна Директива .END.
Директива .EQU (эквивалентность) ставит в соответствие константам, адресам, регистрам и т.п. символические имена. В случае изменения , например, адресов достаточно отредактировать только директиву .ORG.
Директива .SET действует также как директива .EQU, однако в отличие от .EQU может употребляться в программе неоднократно, переопределяя значение символического имени. Это позволяет использовать одно и то же символическое имя в разных значениях.
Таблица 2
| Дирек-тива | Синтаксис | Пример | |||
.ORG | .ORG <выражение> | .ORG h’800; Установить адрес h’800 | ||||
END | .END | | ||||
EQU | .EQU<имя> ,<выражение> | .EQU POR, H’ 20; Уровень порога равен 32 вольтам | ||||
SET | .SET<имя> , <выражение> | .SET A_TAB, H’8D0; Начальный адрес таблицы 8D0 | ||||
DB | .DB , <список выражений> | AT: .DB 23,h’ab,’stop’; В память заносятся 23, 16-ричное число ab и 4символа в КОИ 8. Метка АТ соответствует адресу числа 23. | ||||
DW | .DW , <список выражений> | .DW h’3de7,1999,’a’ | ||||
RS | .RS , <выражение> | matrica:.RS 9 ; Резервирует 9 ячеек памяти для матрицы 3*3 | ||||
| | | | | |
Директива .DBрезервирует ячейки памяти и помещает в них представленные выражения. В качестве выражения может присутствовать цепочка символов, заключенная в кавычки, например, ‘STOP’. На каждое выражение или символ отводится один байт.
Директива .DWдействует аналогично директиве DB с той лишь разницей, что каждое выражение хранится в двух ячейках памяти и цепочки символов не допускаются.
Директива .RS только резервирует ячейки памяти, в качестве выражения обычно записывается просто число резервируемых ячеек. Часто эта директива обозначается как DS.
2.2. Режим ассемблирования
Вызов транслятора с языка Ассемблера осуществляется командой IASM85<NAME>, где
000XXX lines assembled - проассемблировано 000ХХХ строк,
0 Errors detected - ошибок нет.
Такое сообщение указывает на отсутствие синтаксических ошибок в тексте программы, но ни в коей мере не говорит о правильности работы программы. Если ассемблером обнаруживаются ошибки, то выдается сообщение:
(тип ошибки ) in line xx column xx - в строке хх, колонке хх,
(тип ошибки ) in line xx column xx - в строке хх, колонке хх,
000ХХХ lines assembled - проассемблировано 000ХХХ строк,
2 Errors detected- обнаружено 2 ошибки.(2 ошибки взято для примера).
В ходе ассемблирования создаются еще файл листинга с тем же именем и расширением lst иобъектный файлс расширениемobj. Причем оба файла создаются как при отсутствии, так и при наличии ошибок. Места ошибок отмечаются в листинге символом ^. Ошибки в исходном файле исправляются в текстовом редакторе с повторным ассемблированием. Редактирование текста выполняется по правилам текстового редактора. Файл листинга кроме исходного текста содержит дополнительно номера строк, адреса ячеек памяти и содержимое этих ячеек, т.е. машинные коды (см. приложение 1).
Объектный файл в формате INTEL, который в реальных условиях с помощью программатора записывается в ПЗУ, в данном случае используется симулятором.
2.4. Режим симуляции прикладной программы
Программа симуляции (моделирования) вызывается командой AVSIM85 или командой AV.bat. В появляющемся меню следует выбрать режим А, т.е. режим моделирования только одного МП. Раскрывается экран, вид которого показан на рис.2. Нижняя часть экрана содержит меню команд управления режимом симуляции (режим команд). Каждая из команд имеет свое подменю. В остальной части экрана отражается состояние МП, содержимое блоков памяти, ввод/вывод и текст программы на Ассемблере (режим экрана). Переключение режимов производится клавишей Esc.
Для управления симулятором задействованы горячие клавиши F1- F10:
F1-пуск отлаживаемой программы пользователя в непрерывном режиме;
F2 - перемещение указателя точки останова вверх;
F3 - фиксация точки останова (точки останова сбрасываются после их прохода и при повторном выполнении программы их следует при необходимости переустановить);
F4 - перемещение указателя точки останова вниз;
F5 - выбор скорости симуляции (HI, MID, LOW), HI - основной режим быстрой симуляции, MID иLOW - медленное пошаговое выполнение программы при удерживании клавиши F1;
F6 - управление дисплеем (ON- обновление после каждой команды, OFF - по завершению программы);
F9 - пошаговое выполнение программы назад);
F10 - - пошаговое выполнение программы вперед.
Горячие клавиши активны в обоих режимах. Ниже приводится описание наиболее употребительных команд меню и подменю. Дополнительные сведения можно получить по команде HELP .
Рис.2. Экран симулятора
Dump - определение отображаемых участков памяти (Memory Space).
Expression - ввод выражения (числа) в регистр или ячейку памяти, отмеченные курсором в режиме экрана. Вводимые данные отображаются также справа в виде кода КОИ8. Если ввод производится в память, то они одновременно отображаются в левой части экрана как коды МП.
Load - загрузка файла данных (Data), программы (Program), таблицы символов (Symbol-table). При загрузке программы и данных обязательно указывается расширение obj!
IO - подсоединение файла входных данных.
Memory - работа с областью памяти: обнуление, перемещение массива или запись в массив константы.
Patch (Patch code) - вставка мнемокода команды МП в ячейку памяти, адрес которой находится в РС.
Set - установка: Memory map - определение областей ОЗУ (RAM) и ПЗУ (ROM); cYcles - включение счетчика циклов выполняемой программы;
Passpoint - отметка команд, помеченные команды подсчитываются в ходе выполнения программы; в отличие от точек останова, эти пометки не сбрасываются автоматически.
SetUp - установка числа команд, исполняемых в пошаговом режиме назад.
Reset - сброс, Cpu -обнуление счетчика команд и регистра флагов, состояние других регистров не изменяется; cYcles - выключение счетчика циклов.
eXecute - выполнение команд МП, результат отражается на экране
Quit - выход из программы симулятора (следует нажать подряд Q и E).
Вызов команд производится нажатием выделенных клавиш.
Например, загрузка программы: L, P <имя программы с расширением .obj>,Enter. Можно также пользоваться клавишами управления курсором для выделения выбранной команды.
Возвращение из подменю в меню производится нажатием клавиш Ctrl/C
Если в отлаживаемой программе имеются команды ввода/вывода (IN/OUT), то адресам в этих командах следует присвоить значения 0,1,2 или 3. Вводимое значение набирается в «режиме экрана».
Массивы данных, если они предусмотрены в программе, вводятся в зарезервированную область памяти также, как и программа, только с использованием команды DATA. Эти же данные можно ввести непосредственно в память в «режиме экрана» в шестнадцатеричной форме.
После вызова симулятора рекомендуется следующая последовательность действий:
- распределить память (S, M, A<начальный и конечный адреса >; O< начальный и конечный адреса >; в учебных программах можно всю область памяти определять как ОЗУ);
- загрузить программу, не забывая расширение obj (L, P <имя>);
- загрузить массив данных и вводимое число, если это предусмотрено в программе;
- установить начальный адрес программы (E <адрес>; курсор должен указывать на программный счетчик РС); можно воспользоваться командой сброса (R, C);
- выполнять программу в пошаговом режиме, отмечая изменения содержимого регистров и памяти;
- для режима непосредственного выполнения программы использовать точки останова на наиболее характерных командах.
3. УЧЕБНЫЙ МИКРОПРОЦЕССОРНЫЙ КОМПЛЕКТ (УМК)
УМК состоит из следующих составных частей: микроЭВМ, пульта оператора, блока питания.
|
МИКРОЭВМ
|
+ 5 В
220 В +12В
- 5 в -5 В
Рис.3. Структурная схема УМК
МикроЭВМ является основной составной частью и управляет работой всего УМК. Все обращения к памяти, операции ввода – вывода, вычисления выполняются микроЭВМ или ею же инициируются.
Пульт оператора предназначен для взаимодействия оператора с микроЭВМ.
Блок питания обеспечивает постоянными стабилизированными напряжениями микроЭВМ, пульт, а также макетную плату..
МикроЭВМ состоит из операционного устройства (ОУ) постоянного запоминающего устройства (ПЗУ), оперативного запоминающего устройства (ОЗУ) и устройства пошагового выполнения программ.
Пульт оператора состоит из клавиатуры, шестиразрядного дисплея, световой индикации и управляющих кнопок сброс "СБ", прерывание "ПР", шаг "ШГ", а также переключателей работа/шаг "РБ/ШГ" и команда/цикл "КМ/ЦК" (см. рис. 1).
Основой микроЭВМ является ОУ, реализованное на базе МП КР580ВМ80, которое производит все операции по обработке информации Исходным состоянием ОУ является чтение информации по нулевому адресу ПЗУ. ОУ принимает это состояние после нажатия управляющей кнопки "СБ" на пульте оператора.
Информация о состоянии ОУ фиксируется в регистре состояния в начале каждого машинного цикла.
В ПЗУ записана программа "Монитор", обеспечивающая ввод информации с клавиатуры пульта оператора и вывод ее на дисплей.
Программа "Монитор" занимает 1 кбайт ПЗУ и использует последние 54 ячейки ОЗУ, еще 1 кбайт зарезервирован зa пользователем. ОЗУ используется для хранения программ пользователя и имеет емкость 1 кбайт.
Устройство пошагового выполнения программ переводит ОУ в состояние "Ожидание" после выполнения очередного шага. Возможны два пошаговых режима работы: покомандный шаг и поцикловый шаг. Вызов пошагового режима работы осуществляется переключателем "РБ/ШГ", выбор величины шага – переключателем "КМ/ЦК". Для последующего шага необходимо нажать кнопку "ШГ", при этом после выполнения очередного шага на световой индикации отображается состояние адресной шины, шины данных и регистра состояния ОУ в двоичном коде.
Выполнение программы может быть остановлено нажатием управляющей кнопки "ПР". При этом состояния всех регистров ОУ сохраняется в ОЗУ, откуда они опять могут быть загружены в ОУ и выполнение программы продолжится, начиная с точки останова.
Внешний вид лицевой панели УМК отображен на pис. 4.