- •Организация вычислительных систем и сетей
- •Изучение программы PacketTracer . Изучение интерфейса командной строки Cisco ios.
- •2.4.2.Законыалгебры логики
- •Шаг 5. История введенных ранее команд
- •3.1 Цель работы:
- •3.2 Подготовка к работе
- •3.3 Рабочее задание
- •3.4 Выполнение работы:
- •3.5 Контрольные вопросы
2.4.2.Законыалгебры логики
Из определения вышеприведенных функций можноустановить целый ряд простейших свойств:
В алгебре логики установлен целый ряд законов, с помощью которых возможно преобразование логических функций (ЛФ):
• коммутативный (переместительный):
• ассоциативный (сочетательный):
Эти законы полностью идентичны законам обычной алгебры;
• дистрибутивный (распределительный):
• закон поглощения. В дизъюнктивной форме ЛФ конъюнкция меньшего ранга, т.е. с меньшим числом переменных, поглощает все конъюнкции большего ранга, если ее изображение содержится в них. Это же справедливо и для конъюнктивных форм:
• законы склеивания:
где F — логическая функция общего вида, не зависящая от переменной х;
• закон свертки:
• правило де Моргана:
Убедиться в тождественности приведенных зависимостей можно путем аналитических преобразований выражений или путем построения таблицы истинности для ЛФ, находящихся в левой и правой частях. Используя данные зависимости, можно преобразовывать исходные выражения в более простые (минимизировать их). По упрощенным выражениям можно построить техническое устройство, имеющее минимальные аппаратные затраты.
Понятие о минимизации логических функций
Проблема минимизации логических функций решается на основе применения законов склеивания и поглощения с последующим перебором получаемых дизъюнктивных форм и выбором из них оптимальной (минимальной). Существует большое количество методов минимизации ЛФ. Все они отличаются друг от друга спецификой применения операций склеивания и поглощения, а также различными способами сокращения переборов. Среди аналитических методов наиболее известным является метод Квайна — Мак Класки, среди табличных — метод с применением диаграмм Вейча [6]. Графические методы минимизации отличаются большей наглядностью и меньшей трудоемкостью, однако их применение эффективно при малом числе переменных n≤5.
Рассмотрим последовательность действий минимизации ЛФ на примере.
Пример 2.15. Найти минимальную дизъюнктивную форму функции, заданной таблицей истинности (табл. 2.6).
Таблица 2.6 Таблица истинности функции У=f(x1, x2,x3)
Х1
|
Х2
|
Xз
|
Y
|
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
Эта
функция интересна тем, что имеет несколько
минимальных форм. По данным таблицы
запишем аналитическое выражение:
Пунктирными
линиями в этом выражении отмечены пары
конъюнкций, к которым можно применить
операцию склеивания типаFxVFx=F.
Особенно
хорошо это видно при использовании
диаграммы Вейча, в которой «склеиваемые»
конъюнкции находятся по соседству друг
с другом. Диаграмма Вейча просто
по-другому интерпретирует таблицу
истинности (табл. 2.7).
Задание.
Три человека участвуют в тайном голосовании. Составить логическую схему, регистрирующую результаты тайного голосования большинством голосов.
Пусть А – первый человек, голосующий «за», В – второй человек, голосующий «за» и С – третий человек, голосующий «за». Составим таблицу истинности интересующего нас итогового высказывания F (предложение принимается большинством голосов).
Таблица истинности.
A |
B |
C |
F |
Ответ |
0 |
0 |
0 |
0 |
- |
0 |
0 |
1 |
0 |
- |
0 |
1 |
0 |
0 |
- |
0 |
1 |
1 |
1 |
|
1 |
0 |
0 |
0 |
- |
1 |
0 |
1 |
1 |
|
1 |
1 |
0 |
1 |
|
1 |
1 |
1 |
1 |
|
Искомое высказывание имеет вид:
После упрощения функция принимает вид:
Таким образом, логическая схема, реализующая процесс голосования, будет иметь вид:
Пример 1. Аня, Вика и Сергей решили пойти в кино. Классный руководитель, хорошо знавший этих ребят, высказал следующие предположения:
а) Аня пойдет в кино только тогда, когда пойдут Вика и Сергей;
б) Аня и Сергей пойдут в кино вместе или же оба останутся дома;
в) для того чтобы Сергей пошел в кино, необходимо, чтобы пошла Вика.
Когда ребята пошли в кино, оказалось, что классный руководитель немного ошибся: из трех его утверждений истинными оказались только два. Кто из названных ребят пошел в кино? Решить задачу с помощью логических операций.
высказывания, описывающие приведенные в условии задачи факты, имеют вид:
Пример 2 На вопрос, какая погода будет завтра, синоптик ответил:
а) если не будет ветра, то будет пасмурная погода без дождя;
б) если будет дождь, то будет пасмурно и без ветра;
в) если будет пасмурная погода, то будет дождь и не будет ветра
Подумав немного, синоптик уточнил, что три его высказывания можно лаконично записать в виде одного составного высказывания. Сформулируйте его, решив задачу с помощью логических операций.
Пример 3 Миша решил поступить в МИЭТ и послал домой три сообщения:
если я сдам математику, то информатику я сдам только при условии, что не получу двойку за диктант;
не может быть, чтобы я получил двойки за диктант и математику;
достаточное условие провала по информатике — это двойка за диктант.
После сдачи экзаменов оказалось, что из трех Мишиных сообщений только одно было ложным. Как Миша сдал экзамены? Решить задачу с помощью логических операций.
Вывод. Для того чтобы Аня прошла по конкурсу в институт, необходимо, чтобы по
конкурсу прошли Дима и Саша
Пример 6
Задание. Три человека участвуют в тайном голосовании. Составить логическую схему, регистрирующую результаты тайного голосования большинством голосов.
Пример 7 Определить, кто из абитуриентов A, B, C, D играет, а кто не играет в шахматы, если известно следующее:
Если A или B играет, то C не играет;
Если B не играет, то играют C и D:
C – играет в шахматы.
Пример 8 Дано суждение «или верно, что Петр поступил в университет (А), и при этом неверно, что Петр не поступил и Андрей не поступил, или Петр поступил и Семен поступил (С), или даже Петр поступил, и Семен поступил, и Андрей поступил (В)». Кто поступил в университет?
Пример 9. Шесть школьников – Андрей, Борис, Григорий, Дмитрий, Евгений и Семен- участвовали в олимпиаде. Двое из них решили все задачи.
На вопрос, кто решил все задачи, последовали ответы: 1) Андрей и Дмитрий; 2)Борис и Евгений; 3) Евгений и Андрей; 4) Борис и Григорий; 5) Семен и Андрей.
В четырех из этих ответов одна часть неверна, другая верна. В одном обе части неверны. Кто решил все задачи?
Контрольные вопросы:
Что такое ранг элементарной конъюнкции?
Как определяется длина ДНФ?
Дайте определение совершенной дизъюнктивной нормальной форме (СДНФ)?
В чем особенность расчетного метода (метода непосредственных преобразований)
Какая функция называется импликантной?
В чем сущность геометрической интерпретации области определения булевой
функции?
Лабораторная работа 3
Программирование разветвляющегося процесса
Задание 1
Цель работы:
Архитектура ЭВМ и система команд.
Выполнение лабораторной работы
Для решения с помощью ЭВМ некоторой задачи должна быть разработана программа. Программа на языке ЭВМ представляет собой последовательность команд. Код каждой команды определяет выполняемую операцию, тип адресации и адрес. Выполнение программы, записанной в памяти ЭВМ, осуществляется последовательно по командам в порядке возрастания адресов команд или в порядке, определяемом командами передачи управления.
Для того чтобы получить результат выполнения программы, пользователь должен:
ввести программу в память ЭВМ;
определить, если это необходимо, содержимое ячеек ОЗУ и РОН, содержащих исходные данные, а также регистров IR и ВR;
установить в РС стартовый адрес программы;
перевести модель в режим Работа.
Каждое из этих действий выполняется посредством интерфейса модели, описанного в приложении Ввод программы может осуществляться как в машинных кодах непосредственно в память модели, так и в мнемокодах в окно Текст программы с последующим ассемблированием.
Цель настоящей лабораторной работы — знакомство с интерфейсом модели ЭВМ, методами ввода и отладки программы, действиями основных классов команд и способов адресации. Для этого необходимо ввести в память ЭВМ и выполнить в режиме Шаг некоторую последовательность команд (определенную вариантом задания) и зафиксировать все изменения на уровне программно-доступных объектов ЭВМ, происходящие при выполнении этих команд.
Команды в память учебной ЭВМ вводятся в виде шестиразрядных десятичных чисел
В настоящей лабораторной работе будем программировать ЭВМ в машинных кодах.
Пример 1
Дана последовательность мнемокодов, которую необходимо преобразовать в машинные коды, занести в ОЗУ ЭВМ, выполнить в режиме Шаг и зафиксировать изменение состояний программно-доступных объектов ЭВМ (табл. 1).
Таблица 1. Команды и коды
Последовательность |
Значения |
||||
Команды |
RD#20 |
WR30 |
ADD #5 |
WR@30 |
JNZ 002 |
Коды |
21 1 020 |
22 0 030 |
23 1 005 |
222030 |
120002 |
Введем полученные коды последовательно в ячейки ОЗУ, начиная с адреса 000. Выполняя команды в режиме Шаг, будем фиксировать изменения программно-доступных объектов (в данном случае это Асc, РС и ячейки ОЗУ 020 и 030) в табл.2.
Таблица 2. Содержимое регистров
РС |
Асе |
М(30) |
М(20) |
РС |
Асе |
М(30) |
М(20) |
000 |
000000 |
000000 |
000000 |
004 |
|
|
000025 |
001 |
000020 |
|
|
002 |
|
|
|
002 |
|
000020 |
|
003 |
000030 |
|
|
003 |
000025 |
|
|
004 |
|
|
000030 |
Выполнение работы
Ознакомиться с архитектурой ЭВМ
Записать в ОЗУ "программу", состоящую из пяти команд — варианты задания выбрать из табл. 3. Команды разместить в последовательных ячейках памяти.
При необходимости установить начальное значение в устройство ввода IR.
Определить те программно-доступные объекты ЭВМ, которые будут изменяться при выполнении этих команд.
Выполнить в режиме Шаг введенную последовательность команд, фиксируя изменения значений объектов, определенных в таблице (см. форму табл.2).
Если в программе образуется цикл, необходимо просмотреть не более двух повторений каждой команды, входящей в тело цикла.
Задание 2
Цель работы
Программирование разветвляющегося процесса
Выполнение лабораторной работы
Для реализации алгоритмов, пути в которых зависят от исходных данных, используют команды условной передачи управления.
Пример 1
В качестве примера рассмотрим программу вычисления функции
(
х-11)2-125,
при х≥6,
х2 +72*-6400
У , при x<16,
-168
причем х вводится с устройства ввода IR, результат у выводится на OR. Граф-схема алгоритма решения задачи показана на рис. 1.
данной лабораторной работе используются двухсловные команды с непосредственной адресацией, позволяющие оперировать отрицательными числами и числами по модулю, превышающие 999, в качестве непосредственного операнда.
Оценив размер программы примерно в 20—25 команд, отведем для области данных ячейки ОЗУ, начиная с адреса 030. Составленная программа с комментариями представлена в виде табл. 1.
Таблица 1. Пример программы
Адрес |
Команда |
Примечание |
|
|
Мнемокод |
Код |
|
000 |
IN |
01 0 000 |
Ввод х |
001 |
WR 30 |
22 0 030 |
Размещение х в ОЗУ(ОЗО) |
002 |
SUB #16 |
24 1 016 |
Сравнение с границей — (х — 16) |
003 |
JS 010 |
13 0 010 |
Переход по отрицательной разности |
004 |
RD 30 |
21 0 030 |
Вычисления по первой формуле |
005 |
SUB #11 |
24 1 011 |
|
006 |
WR 31 |
22 0 031 |
|
007 |
MUL 31 |
25 0 03 1 |
|
008 |
SUB #125 |
24 1 125 |
|
009 |
JMP 020 |
10 0 020 |
Переход на вывод результата |
010 |
RD 30 |
21 0 030 |
Вычисления по второй формуле |
011 |
MUL 30 |
25 0 030 |
|
012 |
WR 31 |
22 0 031 |
|
013 |
RD 30 |
21 0 030 |
|
014 |
MUL #72 |
25 1 072 |
|
015 |
ADD 31 |
23 0 031 |
|
016 |
ADI 10640000 |
43 0 000 |
|
017 |
|
106400 |
|
018 |
DIVI 100168 |
46 0 000 |
|
019 |
|
100168 |
|
020 |
ОUT |
02 0 000 |
Вывод результата |
021 |
HLT |
09 0 000 |
Стоп |
Задание 1
1. Разработать программу вычисления и вывода значения функции:
y
= |Fi-(x),
при х ≥ а,
Fj-(x), при х < а,
для вводимого из IR значения аргумента х. Функции и допустимые пределы изменения аргумента приведены в табл. 2, варианты заданий — в табл. 3.
Исходя из допустимых пределов изменения аргумента функций (табл. 2) и значения параметра а для своего варианта задания (табл. 3) выделить на числовой оси Ох области, в которых функция у вычисляется по представленной в п. 1 формуле, и недопустимые значения аргумента. На недопустимых значениях аргумента программа должна выдавать на OR максимальное отрицательное число: 199 999.
Ввести текст программы в окно Текст программы, при этом возможен набор и редактирование текста непосредственно в окне Текст программы или загрузка текста из файла, подготовленного в другом редакторе.
Ассемблировать текст программы, при необходимости исправить синтаксические ошибки.
Отладить программу. Для этого:
а) записать в IR значение аргумента х > а (в области допустимых значений);
б) записать в РС стартовый адрес программы;
в) проверить правильность выполнения программы (т. е. правильность результата и адреса останова) в автоматическом режиме. В случае наличия ошибки выполнить пп. 5, г и 5, д; иначе перейти к п. 5, е;
г) записать в РС стартовый адрес программы;
д)наблюдая выполнение программы в режиме Шаг, найти команду, являющуюся причиной ошибки; исправить ее; выполнить
пп. 5, а — 5, в;
е) записать в IR значение аргумента х < а (в области допустимых значений); выполнить пп. 5, б и 5, в;
ж) записать в IR недопустимое значение аргумента х и выполнить пп. 5, б и 5, в.
6. Для выбранного допустимого значения аргумента х наблюдать выполнение отлаженной программы в режиме Шаг и записать в форме табл. 2 содержимое регистров ЭВМ перед выполнением каждой команды.
Таблица 2. Содержимое регистров
РС |
Асс |
М(30) |
М(20) |
РС |
Асе |
М(30) |
М(20) |
000 |
000000 |
000000 |
000000 |
004 |
|
|
000025 |
001 |
000020 |
|
|
002 |
|
|
|
002 |
|
000020 |
|
003 |
000030 |
|
|
003 |
000025 |
|
|
004 |
|
|
000030 |
Таблица 3. Функции
K |
Fk(x) |
k |
Fk(x) |
1 |
x + 17; 2≤х≤12 1-х |
5 |
( x + 2)² ; 50≤x≤75 15 |
2 |
(х + 3)2 ; 1≤x≤50 x |
6. |
2x² +17; 1≤x≤30 х |
3 |
1000 ; 50≤x≤15 х + 10 |
7 |
x² +2x; 50≤x≤50 х |
4 |
(х + 3);³ ; 20≤x≤20
|
8 |
8100 ; 1≤x≤90 х² |
Таблица 4. Варианты задания 1
Номер варианта |
i |
j |
а |
Номер варианта |
i |
j |
а |
1 |
2 |
1 |
12 |
8 |
8 |
6 |
30 |
2 |
4 |
3 |
-20 |
9 |
2 |
6 |
25 |
3 |
8 |
4 |
15 |
10 |
5 |
7 |
50 |
4 |
6 |
1 |
12 |
11 |
2 |
4 |
18 |
5 |
5 |
2 |
50 |
12 |
8 |
1 |
12 |
6 |
7 |
3 |
15 |
13 |
7 |
6 |
25 |
7 |
6 |
2 |
11 |
14 |
1 |
4 |
5 |
Содержание отчета
Отчет о лабораторной работе должен содержать следующие разделы:
Формулировка варианта задания.
Граф-схема алгоритма решения задачи.
Размещение данных в ОЗУ.
Программа в форме табл. 1
Последовательность состояний регистров ЭВМ при выполнении программы в режиме Шаг для одного значения аргумента.
Результаты выполнения программы для нескольких значений аргумента, выбранных самостоятельно.
Контрольные вопросы
Что такое система команд ЭВМ?
Какие способы адресации использованы в модели ЭВМ? В чем отличие между ними?
Как просмотреть и, при необходимости, отредактировать содержимое ячейки памяти?
Какие способы адресации операндов применяются в командах ЭВМ?
Как работает механизм косвенной адресации?
Какая ячейка будет адресована в команде с косвенной адресацией через ячейку 043, если содержимое этой ячейки равно 102 347?
Как работают команды передачи управления?
Что входит в понятие "отладка программы"?
Какие способы отладки программы можно реализовать в модели?
Лабораторная работа 4
Исследование конвейерной обработки
Цель работы
Изучение принципов конвейерной обработки с помощью простейшей имитационной модели.
Основные вопросы теории
Максимальная производительность современных процессоров и ЭВМ опре-
деляется, в первую очередь, уровнем развития соответствующей технологии, ко-
торая ограничивает время распространения сигнала по электронным схемам.
Дальнейшее увеличение производительности возможно за счёт архитектурных
решений. Одним из основных способов построения высокопроизводительных сис-
тем является параллелизм. Параллельная обработка реализуется двумя способами:
- во времени;
- в пространстве.
Первый способ называют конвейерным, а второй - матричным. В обоих слу
чаях необходимо использовать несколько обрабатывающих устройств, количество
которых определяет максимальное число параллельных процессов.
Известно, что типичную арифметическую команду можно разделить на сле-
дующие микрооперации:
1) выборка команд из памяти (по адресу в счётчике команд);
2) декодирование кода операции;
3) выборка операндов из регистров;
4) выполнение операции в АЛУ;
5) запоминание результата в регистре.
Если в системе имеется пять обрабатывающих устройств, каждое из которых
обеспечивает выполнение одной из перечисленных микроопераций, то имеется
возможность реализовать конвейерную обработку. Устройства должны быть спе-
циализированными. Их необходимо расположить в порядке следования микроопе-
раций в типовой команде, что позволит совместить выполнение отдельных микро-
операций разных команд и сократить общее время обработки данных.
Если предположить, что каждая микрооперация занимает один такт машин-
ного времени, то реализация последовательности из нескольких (например, трёх)
команд с совмещением может быть представлена в виде схемы, показанной на ри-
сунке 1.
(1) (2) (3) (4) (5)
(1) (2) (3) (4) (5)
(1) (2) (3) (4) (5)
Рисунок 1- Возможное совмещение микроопераций при выполнении трех
последовательных команд (в скобках указаны номера микроопераций)
Из рисунка видно, что результат первой команды будет получен после пято-
го такта, второй после шестого, а третьей после седьмого. Таким образом, среднее время выполнения последовательности из трех команд будет равно2.33такта.
С увеличением длины последовательности это время уменьшается и в пределе
стремится к одному такту. Такой эффект наблюдается только при одинаковых
длительностях микроопераций. Если эти длительности отличаются, то некоторые
устройства будут простаивать, и среднее время выполнения команды увеличится.
Для согласования работы устройств в таких условиях применяют буферизацию.
Эффективность работы произвольного конвейера определяется величиной
разности между средним временем выполнения команды в нем и предельным
временем. Целью предлагаемой лабораторной работы является исследование
влияния длины последовательности команд и соотношения длительностей отдель-
ных микроопераций на эффективность работы конвейера.
Описание лабораторной установки
Лабораторная работа выполняется на ПЭВМ типа IBM, работающей в среде
Windows XP/7 Программа имитационного моделирования конвейера команд
составлена на языке Delphi 7.0 и позволяет выполнить следующее:
1. Варьировать количество команд в последовательности от 3 до 10 (по
умолчанию их 3).
2. Изменять количество тактов любой микрооперации в диапазоне от 1 до
30. По умолчанию эти значения равны единице.
3. Установить один из двух режимов моделирования: непрерывно или по
тактам. По умолчанию моделирование осуществляется в непрерывном режиме.
В имитационной модели последовательность микроопераций в команде
(занятость соответствующих устройств) для наглядности изображена разными
цветами, как показано на рисунке 2. При этом простой устройства (ожидание при-
хода очередной команды) представлен черным цветом.
Изменение параметров команд и микроопераций сопровождается соответ-
ствующим изменением схемы их выполнения, которая выводится на экран. При
варьировании параметров микрооперации изменяется ширина ее поля на схеме.
Выборка ко- Декодирова- Выборка опе- Выполнение Запись ре-
манд ние КОП рандов операции зультата
(1) (2) (3) (4) (5)
желтый Голубой синий красный светло- зеленый
Рисунок 2- Представление последовательности микроопераций при
моделировании типовой команды
Программа моделирования работает в среде Windows.
Запуск программы осуществляется традиционным способом: двойным
щелчком мышью по соответствующему ярлыку. После запуска на экране появляется основное окно, которое позволяет задать параметры модели и режим моделирования. Все перечисленные значения и режимы устанавливаются с помощью соответствующих кнопок, как это принято в Windows 7 Если запуск модели был осуществлён в тактовом режиме, то каждый раз для продолжения работы необходимо нажимать на кнопку «Следующий такт».
Во время работы программы в обоих режимах на экране цветом представля-
ется выполнение команд, выводится количество выполненных на данный момент тактов, среднее время выполнения команды и суммарный простой устройств в тактах. Работа модели прекращается, если выполнены все команды заданной последовательности. При этом программа автоматически завершает работу и осуществляет подсчёт и вывод всех характеристик:
- среднего времени выполнения одной команды,
- суммарного времени ожидания устройств в системе,
- графиков зависимости среднего времени выполнения команды от количества
команд и от длительностей каждой из пяти микроопераций в команде,
- пяти графиков зависимости среднего времени ожидания каждого обрабаты-
вающего устройства от длительностей любой из пяти микроопераций в команде.
Перечисленные графики выводятся после нажатия кнопки «Графики» в со-
ответствующие окна, которые можно расположить каскадом и просматривать в
любой последовательности, выбрав соответствующую кнопку.
Порядок выполнения лабораторной работы
Выполнение лабораторной работы заключается в следующем:
1) знакомство со всеми разделами руководства;
2) получение у преподавателя задания на исследование конвейера с различ-
ными параметрами потока команд;
а) подготовка к работе:
б) исследование конвейера, заданного преподавателем;
в) оформление отчета.
В лабораторной работе необходимо исследовать следующие режимы рабо-
ты конвейера команде
а) с одинаковым количеством команд и одинаковыми длительностями
микроопераций. Длительности микроопераций изменяются во всех командах от
1 до 5 (30) тактов - по заданию преподавателя. Количество команд в
последовательности также задается преподавателем;
б) с переменным количеством команд и одинаковыми длительностями
микроопераций. Количество команд в последовательности изменяется от 1 до
10(по заданию преподавателя). Длительности микроопераций задаются
преподавателем;
в) с изменением длительности последней микрокоманды. Пределы дли-
тельности микрокоманды задаются преподавателем. Длительности остальных
микрокоманд остаются постоянными;
г) с изменением длительности первой микрокоманды. Пределы длительности
микрокоманды задаются преподавателем. Длительности остальных микрокоманд
остаются постоянными;
д) с изменением длительности одной из средних микрокоманд. Пределы
длительности и тип микрокоманды задаются преподавателем. Длительности
остальных микрокоманд остаются постоянными.
1.5 Содержание отчета о выполненной работе
Отчет должен содержать следующее:
- название и цель работы;
- исходные данные;
- графики зависимостей, полученных на ЭВМ (по указанию преподавателя);
- выводы об эффективных режимах работы конвейера.
Контрольные вопросы
1. Назовите основные методы повышения производительности современ-
ных вычислительных систем.
2. Какое количество обрабатывающих устройств необходимо для организа-
ции работы конвейера?
3. Как влияет количество команд в последовательности на эффективность
работы конвейера?
4. Как влияет изменение длительностей микроопераций в последовательно-
сти команд на эффективность работы конвейера?
5. При каком соотношении длительностей микроопераций работа конвейера
наиболее эффективна?
6. Как влияет на эффективность работы конвейера изменение длительности
первой микрооперации?
Лабораторная работа № 5
Подпрограммы и стек
Цель работы
Изучение стековой памяти
Выполнение лабораторной работы
В программировании часто встречаются ситуации, когда одинаковые действия необходимо выполнять многократно в разных частях программы (например, вычисление функции зшл:). При этом с целью экономии памяти не следует многократно повторять одну и ту же последовательность команд — достаточно один раз написать так называемую подпрограмму (в терминах языков высокого уровня — процедуру) и обеспечить правильный вызов этой подпрограммы и возврат в точку вызова по завершению подпрограммы.
Для вызова подпрограммы необходимо указать ее начальный адрес в памяти и передать (если необходимо) параметры — те исходные данные, с которыми будут выполняться предусмотренные в подпрограмме действия. Адрес подпрограммы указывается в команде вызова CALL, а параметры могут передаваться через определенные ячейки памяти, регистры или стек.
Возврат в точку вызова обеспечивается сохранением адреса текущей команды (содержимого регистра РС) при вызове и использованием в конце подпрограммы команды возврата кет, которая возвращает сохраненное значение адреса возврата в РС.
Для реализации механизма вложенных подпрограмм (возможность вызова подпрограммы из другой подпрограммы и т. д.) адреса возврата целесообразно сохранять в стеке. Стек ("магазин") — особым образом организованная безадресная память, доступ к которой осуществляется через единственную ячейку, называемую верхушкой стека. При записи слово помещается в верхушку стека, предварительно все находящиеся в нем слова смещаются вниз на одну позицию; при чтении извлекается содержимое верхушки стека (оно при этом из стека исчезает), а все оставшиеся слова смещаются вверх на одну позицию. Такой механизм напоминает действие магазина стрелкового оружия (отсюда и второе название). В программировании называют такую дисциплину обслуживания LIFO (Last In First Out, последним пришел — первым вышел) в отличие от дисциплины типа очередь — FIFO (Fist In First Out, первым пришел — первым вышел).
В обычных ОЗУ нет возможности перемещать слова между ячейками, поэтому при организации стека перемещается не массив слов относительно неподвижной верхушки, а верхушка относительно неподвижного массива. Под стек отводится некоторая область ОЗУ, причем адрес верхушки хранится в специальном регистре процессора — указателе стека SР.
В стек можно поместить содержимое регистра общего назначения по команде PUSH или извлечь содержимое верхушки в регистр общего назначения по команде рор. Кроме того, по команде вызова подпрограммы CALL значение программного счетчика РС (адрес следующей команды) помещается в верхушку стека, а по команде RET содержимое верхушки стека извлекается в РС. При каждом обращении в стек указатель SР автоматически модифицируется.
В большинстве ЭВМ стек "растет" в сторону меньших адресов, поэтому перед каждой записью содержимое SР уменьшается на 1, а после каждого извлечения содержимое SР увеличивается на 1. Таким образом, SР всегда указывает на верхушку стека.
Цель настоящей лабораторной работы — изучение организации программ с использованием подпрограмм. Кроме того, в процессе организации циклов мы будем использовать новые возможности системы команд модели ЭВМ, которые позволяют работать с новым классом памяти— сверхоперативной (регистры общего назначения — РОН). В реальных ЭВМ доступ в РОН занимает значительно меньшее время, чем в ОЗУ; кроме того, команды обращения с регистрами короче команд обращения к памяти. Поэтому в РОН размещаются наиболее часто используемые в программе данные, промежуточные результаты, счетчики циклов, косвенные адреса и т. п.
В системе команд учебной ЭВМ для работы с РОН используются специальные команды, мнемоники которых совпадают с мнемониками соответствующих команд для работы с ОЗУ, но в адресной части содержат символы регистров RО—R9.
Кроме обычных способов адресации (прямой и косвенной) в регистровых командах используются два новых — постинкрементная и преддекрементная (. Кроме того, к регистровым относится команда организации цикла JRNZ R,M. По этой команде содержимое указанного в команде регистра уменьшается на 1, и если в результате вычитания содержимого регистра не равно 0, то управление передается на метку м. Эту команду следует ставить в конце тела цикла, метку м — в первой команде тела цикла, а в регистр К помещать число повторений цикла.
Пример 1
Даны три массива чисел. Требуется вычислить среднее арифметическое их максимальных элементов. Каждый массив задается двумя параметрами: адресом первого элемента и длиной.
Очевидно, в программе трижды необходимо выполнить поиск максимального элемента массива, поэтому следует написать соответствующую подпрограмму.
Параметры в подпрограмму будем передавать через регистры: R1 — начальный адрес массива, R2 — длина массива.
Рассмотрим конкретную реализацию этой задачи. Пусть первый массив начинается с адреса 085 и имеет длину 14 элементов, второй— 100 и 4, третий— 110 и 9. Программа будет состоять из основной части и подпрограммы. Основная программа задает параметры подпрограмме, вызывает ее и сохраняет результаты работы подпрограммы в рабочих ячейках. Затем осуществляет вычисление среднего арифметического и выводит результат на устройство вывода. В качестве рабочих ячеек используются регистры общего назначения R6 и R7 — для хранения максимальных элементов массивов. Подпрограмма получает параметры через регистры R1 (начальный адрес массива) и R2 (длина массива). Эти регистры используются подпрограммой в качестве регистра текущего,адреса и счетчика цикла соответственно. Кроме того, RЗ используется для хранения текущего максимума, а R4 — для временного хранения текущего элемента. Подпрограмма возвращает результат через аккумулятор. В табл. 1 приведен текст основной программы и подпрограммы. Обратите внимание, цикл в подпрограмме организован с помощью команды JRNZ, а модификация текущего адреса— средствами постинкрементной адресации.
Таблица 1. Программа примера 1
Команда |
Примечания |
|
Основная программа |
|
|
RD #85 |
Загрузка |
|
WR R1 |
параметров |
|
RD #14 |
первого |
|
WR R2 |
массива |
|
CFLL M |
Вызов подпрограммы |
|
WR R6 |
Сохранение результата |
|
RD #100 |
Загрузка |
|
WR R1 |
параметров |
|
RD #4 |
второго |
|
WR R2 |
массива |
|
CFLL М |
Вызов подпрограммы |
|
WR R7 |
Сохранение результата |
|
RD #110 |
Загрузка |
|
WR R1 |
параметров |
|
RD #9 |
третьего |
|
WR R2 |
массива |
|
CALL М |
Вызов подпрограммы |
|
ADD R7 |
Вычисление |
|
ADD R6 |
среднего |
|
DIV #3 |
арифметического |
|
ОUТ |
Вывод результата |
|
Подпрограмма МАХ |
||
HLT |
Стоп |
|
М: RD @R1 |
Загрузка |
|
WR RЗ |
первого элемента в RЗ |
|
L2: RD @R1+ |
Чтение элемента и модификация адреса |
|
WR R4 |
Сравнение |
|
SUB R3 |
и замена, |
|
JS L1 |
если RЗ < R4 |
|
MOV R3,R4 |
|
|
LI: JRNZ R2, L2 |
Цикл |
|
RD RЗ |
Чтение результата в Асc |
|
RЕТ |
Возврат |
|
Задание 1
Составить и отладить программу учебной ЭВМ для решения следующей задачи. Три массива в памяти заданы начальными адресами и длинами. Вычислить и вывести на устройство вывода среднее арифметическое параметров этих массивов.
Таблица 2. Соответствие между номерами заданий
Номер варианта задания |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
Номер строки в табл. 1 |
5 |
7 |
13 |
11 |
9 |
12 |
1 |
10 |
14 |
3 |
6 |
8 |
2 |
4 |
Содержание отчета
Формулировка варианта задания.
Граф-схема алгоритма основной программы.
Граф-схема алгоритма подпрограммы.
Распределение памяти (размещение в ОЗУ переменных, программы и необходимых констант).
Тексты программы и подпрограммы.
Значения исходных данных и результата выполнения программы.
Контрольные вопросы
Как работает ко манда MOV R3, R7?
Какие действия выполняет процессор при реализации команды CALL?
Как поведет себя программа примера 4, если в ней вместо команд CALL M использовать команды JMP M?
После начальной установки процессора (сигнал Сброс) указатель стека SР устанавливается в 000. По какому адресу будет производиться запись в стек первый раз, если не загружать SР командой WRSP?
Как, используя механизмы постинкрементной и преддекрементной адресации, организовать дополнительный стек в произвольной области памяти, не связанный с SР?
Лабораторная работа № 6.
Программирование внешних устройств
Цель работы: Изучение способов организации взаимодействия процессора и внешних устройств (ВУ) в составе ЭВМ.
Выше отмечалось, что связь процессора и ВУ может осуществляться в синхронном или асинхронном режиме. Синхронный режим используется для ВУ, всегда готовых к обмену. В нашей модели такими ВУ являются дисплей и тоногенератор — процессор может обращаться к этим ВУ, не анализируя их состояние (правда дисплей блокирует прием данных после ввода 128 символов, формируя флаг ошибки).
Асинхронный обмен предполагает анализ процессором состояния ВУ, которое определяет готовность ВУ выдать или принять данные или факт осуществления некоторого события, контролируемого системой. К таким устройствам в нашей модели можно отнести клавиатуру и блок таймеров.
Анализ состояния ВУ может осуществляться процессором двумя способами:
□ в программно-управляемом режиме;
□ в режиме прерывания.
В первом случае предполагается программное обращение процессора к регистру состояния ВУ с последующим анализом значения соответствующе разряда слова состояния. Такое обращение следует предусмотреть в программе с некоторой периодичностью, независимо от фактического наступления контролируемого события (например, нажатие клавиши).
Во втором случае при возникновении контролируемого события ВУ формирует процессору запрос на прерывание программы, по которому процессор i осуществляет связь с ВУ.
Задание 6
Свой вариант задания (табл. 9.12) требуется выполнить двумя способами сначала в режиме программного контроля, далее модифицировать программ таким образом, чтобы события обрабатывались в режиме прерывания программы. Поскольку "фоновая" (основная) задача для этого случая в заданиях отсутствует, роль ее может сыграть "пустой цикл":
М: NOP
NOP
JMP М
Задания повышенной сложности
1. Разработать программу-тест на скорость ввода символов с клавиатуры. По звуковому сигналу включается клавиатура и таймер на Т секунд. Можно начинать ввод символов, причем каждый символ отображается на дисплее, ведется подсчет количества введенных символов (после каждых 50 дается команда на очистку буфера клавиатуры, после 128 — очищается дисплей). Переполнение таймера выключает клавиатуру и включает сигнал завершения ввода (можно тон этого сигнала сопоставить с количеством введенных символов). Параметр Т вводится из IR. Результат S — средняя скорость ввода (символ/с) выдается на OR. Учитывая, что модель учебной ЭВМ оперирует только целыми числами, можно выдавать результат формате 5x60 символов/мин.
2. Разработать программу-тест на степень запоминания текста. Три различных вариантах текста выводятся последовательно на дисплей на Т1{ секунд с промежутками Т2 секунд. Далее эти тексты (то, что запомнилось) вводятся с клавиатуры (в режиме ввода строки) и программно сравниваются исходными текстами. Выдается количество (процент) ошибок.
3. Разработать программу-калькулятор. Осуществлять ввод из буфера клавиатуры последовательности цифр, упаковку (см. задание 1 в табл. 9.12)
Разделители— знаки бинарных арифметических операций и =.Результат переводится в ASCII-коды и выводится на дисплей.
Порядок выполнения работы
1. Запустить программную модель учебной ЭВМ и подключить к ней определённые в задании внешние устройства (меню Внешние устройства ׀Менеджер ВУ).
2. Написать и отладить программу, предусмотренную заданием, с использованием программного анализа флагов готовности ВУ. Продемонстрировать работающую программу преподавателю.
3. Изменить отлаженную в п. 2 программу таким образом, чтобы процссор реагировал на готовность ВУ с помощью подсистемы прерывания. Продемонстрировать работу измененной программы преподавателю.
Содержание отчета
1. Текст программы с программным анализом флагов готовности ВУ.
2. Текст программы с обработчиком прерывания.
Контрольные вопросы
1. При каких условиях устанавливается и сбрасывается флаг готовности клавиатуры Rd?
2. Возможно ли в блоке таймеров организовать работу всех трех таймеров разной тактовой частотой?
3. Как при получении запроса на прерывание от блока таймеров определить номер таймера, достигшего состояния 99 999 (00 000)?
4. Какой текст окажется на экране дисплея, если после нажатия в окне обозревателя дисплея кнопки Очистить и загрузки по адресу CR (11) константы #10 вывести по адресу DR (10) последовательно пять ASCII-кодов русских букв А, Б, В, Г, Д?
5. В какой области памяти модели ЭВМ могут располагаться программы | обработчики прерываний?
6. Какие изменения в работе отлаженной вами второй программы произойдут, если завершить обработчик прерываний командой ret, а не iret?
Лабораторная работа №7
Изучение программы PacketTracer . Изучение интерфейса командной строки Cisco IOS.
Цель
Изучение программы симуляции сетей PacketTracer. Научиться работе с интерфейсом командной строки Cisco IOS. Использовать команды группы show в Cisco IOS.
Необходимая подготовка
Знание понятий «пакет», «сеть», «подсеть», «коммутатор», «концентратор», «маршрутизатор», «персональный компьютер», «сетевой интерфейс», «IP-адрес».
Установленная программа PacketTracer, файлы 1.1.pka, 1.2.pka.
Предварительные знания PacketTracer
Программа для моделирования сетей любой сложности. Позволяет использовать различные устройства: коммутаторы, концентраторы, маршрутизаторы, локальные станции, беспроводные устройства.
Основное окно программы показано на рис. 1.
Р
ис.
1. Главное окно программы PacketTracer
Основная часть окна занята областью, в которой показана моделируемая сеть. Выбор типа объекта осуществляется в данной области окна
Р
ис.
2. Выбор типа элемента
Справа от данной области расположены сами объекты сети.
Доступные типы объектов:
Routers ― маршрутизаторы, доступны маршрутизаторы Cisco различных серий, а также обобщенный (Generic) маршрутизатор, выполняющий общие для всех маршрутизаторов функции.
Switches ― коммутаторы, доступны управляемые коммутаторы второго уровня разных серий.
Hubs ― концентраторы.
WirelessDevices ― беспроводные устройства. Generic ― обобщенная точка доступа, Linksys ― беспроводной маршрутизатор с интегрированными службами Linksys.
Connection ― различные виды соединений между устройствами:
Auto ― автоматическое определение типа соединения (автоматически определяется наилучший способ соединения устройств),
Console ― соединение при помощи консольного кабеля (COM порт на ПК и вход Console на устройствах Cisco),
CopperStraight-Through ― соединение при помощи кабеля типа витая пара прямое,
CopperCross-Over — соединение при помощи кабеля типа витая пара перекрестное,
Fiber — соединение при помощи волоконно-оптической линии связи (ВОЛС),
Phone — соединение при помощи телефонной линии,
Coaxial — соединение при помощи коаксиального кабеля,
Serial DCE и Serial DTE — последовательные каналы связи.
EndDevices — конечные устройства:
PC-PT — персональный компьютер
Server-PT — серверная станция
Printer-PT — сетевой принтер
7960 — IP телефон
WanEmulation — эмуляция глобальной сети, эмуляция сети в общем (Cloud) или модемной связи (DSL Modem, CableModem)
CustomMadeDevices — позволяет производить конфигурацию устройств на физическом уровне (добавлять новые сетевые платы, платы расширения и пр.)
MultiuserConnection — эмуляция соединений (в лабораторных работах использоваться не будет).
Симуляции сетей создаются путем выбора элементов сети (устройства, соединения) и нанесения их на поле для построения сети. Два персональных компьютера, объединенные в сеть при помощи коммутатора выглядят следующим образом:
Р
ис.
3. Симуляция простейшей сети
При создании соединения (например витой парой) при щелчке на устройстве выбирается интерфейс к которому будет осуществлено подключение. В лабораторных работах в основном будут использоваться следующие устройства устройства: персональные компьютеры, серверы, коммутаторы, маршрутизаторы, различные виды соединений. Рассмотрим подробнее возможности приложения касательно данный устройств.
Персональный компьютер (ПК).
При щелчке (или двойном щелчке в зависимости от настроек операционной системы) по пиктограмме компьютера откроется окно свойств с тремя вкладками (Physical, Config, Desktop):
Рис.
4. Конфигурация ПК (вкладка Physical)
На рисунке показана вкладка Physical, показывающая физическое состояние устройства. В поле слева показаны все модули, внизу дается описание этих модулей.
На вкладке Config можно задать основные сетевые настройки (Раздел Global — Settings слева): адрес шлюза, DNS (рис. 5), а также настройки интерфейса (Раздел INTERFACE - FastEthernet): MAC-адрес, IP-адрес, маску подсети, скорость соединения и статус интерфейсов (рис.6).
Рис. 5. Глобальные настройки ПК
Рис. 6. Настройки интерфейсов ПК
Вкладка Descktop эмулирует следующие приложения, которые могут быть запущены на ПК:
IP configuration — конфигурация протокола IP (может задаваться здесь, а не на вкладке Config)
Dial-up — настройки модемной связи
Terminal — открывается окно терминала, используется для доступа к устройствам, подключенным через консольный порт (RS-232)
CommandPrompt — командная строка (поддерживаются основные сетевые команды ОС Windows)
WebBrowser
PC Wireless — настройка беспроводного доступа.
С точки зрения конфигурации сервер обладает теми же свойствами, что и ПК.
Коммутатор
Коммутатор имеет те же вкладки, что и ПК (назначение вкладок также совпадает), однако вместо вкладки Desktop присутствует вкладка CLI, которая предоставляет доступ к консоли коммутатора. Описание вкладки Config в методических указаниях не приводится, т.к. все настройки коммутатора будут осуществляться через CLI интерфейс.
Окно свойств маршрутизатора идентично окну свойств коммутатора.
CLI интерфейс предоставляет ОС Cisco IOS, поэтому описывать общие принципы управления коммутаторами и маршрутизаторами не имеет смысла, поэтому в работе описаны общие принципы работы с ОС Cisco IOS.
К большинству лабораторных работ прилагаются файлы с расширением pka. Эти файлы содержат уже готовые сети, которые необходимо изучить и/или настроить. В данных файлах содержатся также краткие методические указания, которые зачастую повторяются в данном методическом пособии. Указания открываются в отдельном окне (рис. 7.):
Рис. 7. Методические указания файла pka.
Помимо указаний окно содержит степень завершенности работы - Completion (если необходимы какие-либо действия по настройке симулируемой сети). Однако если данный параметр изначально равен 100%, это может обозначать не только окончание работы, но и то, что работа носит наблюдательный или исследовательский характер.
Кнопка ResetActivity позволяет отменить все внесенные изменения и начать работу заново. Перейти к следующему/предыдущему шагу (если их больше одного) можно кнопками </>. Проверить работу можно кнопкой CheckResults (Проверка результатов). В появившемся окне появятся выполненные /невыполненные шаги работы и общие замечания по работе на английском языке. В некоторых случаях проверка результатов заблокирована до выполнения всех необходимых действий, обычно об этом явно сказано в методических указаниях.
Программа PacketTracer имеет два режима симуляции: Realtime и Simulation. Первый производит симуляцию в режиме реального времени, второй позволяет производить симуляцию «по шагам», отслеживая каждый пакет. Переключение производится в нижней части области симуляции:
Рис. 8. Переключение режимов симуляции
Окно в режиме симуляции Simulation представлено на рис. 9.
Рис. 9. Режим Simulation
В режиме Simulation управление осуществляется кнопками PlayControls. Передаваемые пакеты отображаются в основной области окна в виде конвертов различного цвета.
Cisco IOS
С помощью интерфейса командной строки Cisco IOS можно вспомнить введенные команды и получить информацию о применении и функциях команд. В данной лабораторной работе вы изучите некоторые функции и, возможно, поймете, почему некоторые специалисты предпочитают работать с командной строкой Cisco IOS.
Команды группы showCisco IOS
Команды группы show в Cisco IOS широко используются при работе с оборудованием Cisco. В данной лабораторной работе вы научитесь пользоваться командами группы show на маршрутизаторе, расположенном на стороне Интернет-провайдера.
Ход работы
Изучение интерфейса CLI Cisco IOS
Откройте файл 1.1.pka в симуляторе. Следуйте методическим указаниям.
Шаг 1. Подключение клиентского маршрутизатора Cisco 1841
Воспользуйтесь программой эмуляции терминала на клиентском ПК для подключения клиентского маршрутизатора Cisco 1841 (см. рекомендации по использованию программы PacketTracer). Нажмите клавишу ВВОД для начала работы. Приглашение CustomerRouter> указывает, что вы попали в командный режим пользователя EXEC.
Шаг 2. Изучение контекстно-зависимой функции справки
В приглашении маршрутизатора для ввода команды напечатайте ?. На экране отобразится соответствующая краткая справка.
Введите e? для отображения команд, начинающихся с буквы "e".
Введите en?. Обратите внимание, что на экране отобразятся только команды, начинающиеся с комбинации "en".
Введите команду enable в приглашение маршрутизатора. Приглашение CustomerRouter#> указывает, что вы попали в привилегированный командный режим пользователя EXEC.
Шаг 3. Изучение клавишных комбинаций быстрого вызова команд Cisco IOS
При вводе букв, характерных только для определенной команды и нажатии клавиши "Tab" в командной строке автоматически отобразится вся команда.
Введите c в приглашение CustomerRouter# и нажмите клавишу "Tab". Поскольку буква "c" характерна не для одной уникальной команды, ничего не произойдет.
Добавьте onf к "c" и нажмите клавишу "Tab". Поскольку комбинация букв уникальна и характерна только для команды configure командная строка автоматически отображает всю команду полностью.
А теперь введите ? после configure. На экране отобразится список параметров и настроек команды configure. Вывод <cr> в примере указывает, что других параметров, которые можно было бы добавить к команде configure, в данной IOS нет. Данный пример показывает, что в командной строке Cisco IOS можно использовать terminal в сочетании с командой configure: configureterminal.
Шаг 4. Изучение применения метки ошибок
В приглашении маршрутизатора CustomerRouter# напечатайте con, затем нажмите клавишу ВВОД. Вывод % Ambiguouscommand: "con" указывает на то, что команда неполная.
В приглашении маршрутизатора введите configuretrminal, затем нажмите клавишу ВВОД. Намеренно введите команду с ошибкой. Командная строка Cisco IOS не распознает команду и отметит ошибку меткой ^.
