Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Копия Мет.рук.ОВСиС.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
3.65 Mб
Скачать

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 Миша решил поступить в МИЭТ и послал домой три сообщения:

  • если я сдам математику, то информатику я сдам только при условии, что не получу двойку за диктант;

  • не может быть, чтобы я получил двойки за диктант и мате­матику;

  • достаточное условие провала по информатике — это двой­ка за диктант.

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

Пример 5 Проверьте правильность следующего умозак­лючения. Для того чтобы Саша прошел по конкурсу в МИЭТ, достаточно, чтобы или Аня, или Вика не прошли по конкурсу в институт. Вика пройдет по конкурсу вместе с Димой. Не может быть, чтобы по конкурсу прошли и Аня, и Саша.

Вывод. Для того чтобы Аня прошла по конкурсу в инсти­тут, необходимо, чтобы по

конкурсу прошли Дима и Саша

Пример 6

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

Пример 7 Определить, кто из абитуриентов A, B, C, D играет, а кто не играет в шахматы, если известно следующее:

  1. Если A или B играет, то C не играет;

  2. Если B не играет, то играют C и D:

  3. C – играет в шахматы.

Пример 8 Дано суждение «или верно, что Петр поступил в университет (А), и при этом неверно, что Петр не поступил и Андрей не поступил, или Петр поступил и Семен поступил (С), или даже Петр поступил, и Семен поступил, и Андрей поступил (В)». Кто поступил в университет?

Пример 9. Шесть школьников – Андрей, Борис, Григорий, Дмитрий, Евгений и Семен- участвовали в олимпиаде. Двое из них решили все задачи.

На вопрос, кто решил все задачи, последовали ответы: 1) Андрей и Дмитрий; 2)Борис и Евгений; 3) Евгений и Андрей; 4) Борис и Григорий; 5) Семен и Андрей.

В четырех из этих ответов одна часть неверна, другая верна. В одном обе части неверны. Кто решил все задачи?

Контрольные вопросы:

  1. Что такое ранг элементарной конъюнкции?

  2. Как определяется длина ДНФ?

  3. Дайте определение совершенной дизъюнктивной нормальной форме (СДНФ)?

  4. В чем особенность расчетного метода (метода непосредственных преобразований)

  5. Какая функция называется импликантной?

  6. В чем сущность геометрической интерпретации области определения булевой

функции?

Лабораторная работа 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

Выполнение работы

  1. Ознакомиться с архитектурой ЭВМ

  2. Записать в ОЗУ "программу", состоящую из пяти команд — варианты задания выбрать из табл. 3. Команды разместить в последовательных ячейках памяти.

  3. При необходимости установить начальное значение в устройство ввода IR.

  4. Определить те программно-доступные объекты ЭВМ, которые будут изменяться при выполнении этих команд.

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

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

Задание 2

Цель работы

Программирование разветвляющегося процесса

Выполнение лабораторной работы

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

Пример 1

В качестве примера рассмотрим программу вычисления функции

( х-11)2-125, при х≥6,

х2 +72*-6400

У , при x<16,

-168

причем х вводится с устройства ввода IR, результат у выводится на OR. Граф-схема алгоритма решения задачи показана на рис. 1.

Рис. 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.

  1. Исходя из допустимых пределов изменения аргумента функций (табл. 2) и значения параметра а для своего варианта задания (табл. 3) выделить на числовой оси Ох области, в которых функция у вычисляется по представленной в п. 1 формуле, и недопустимые значения аргумента. На недопустимых значениях аргумента программа должна выдавать на OR максимальное отрицательное число: 199 999.

  2. Ввести текст программы в окно Текст программы, при этом возможен набор и редактирование текста непосредственно в окне Текст программы или загрузка текста из файла, подготовленного в другом редакторе.

  3. Ассемблировать текст программы, при необходимости исправить синтак­сические ошибки.

  4. Отладить программу. Для этого:

а) записать в 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

+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. Формулировка варианта задания.

  2. Граф-схема алгоритма решения задачи.

  3. Размещение данных в ОЗУ.

  4. Программа в форме табл. 1

  1. Последовательность состояний регистров ЭВМ при выполнении программы в режиме Шаг для одного значения аргумента.

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

Контрольные вопросы

  1. Что такое система команд ЭВМ?

  2. Какие способы адресации использованы в модели ЭВМ? В чем отличие между ними?

  3. Как просмотреть и, при необходимости, отредактировать содержимое ячейки памяти?

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

  5. Как работает механизм косвенной адресации?

  6. Какая ячейка будет адресована в команде с косвенной адресацией через ячейку 043, если содержимое этой ячейки равно 102 347?

  7. Как работают команды передачи управления?

  8. Что входит в понятие "отладка программы"?

  9. Какие способы отладки программы можно реализовать в модели?

Лабораторная работа 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

Содержание отчета

  1. Формулировка варианта задания.

  2. Граф-схема алгоритма основной программы.

  3. Граф-схема алгоритма подпрограммы.

  1. Распределение памяти (размещение в ОЗУ переменных, программы и не­обходимых констант).

  1. Тексты программы и подпрограммы.

  2. Значения исходных данных и результата выполнения программы.

Контрольные вопросы

  1. Как работает ко манда MOV R3, R7?

  2. Какие действия выполняет процессор при реализации команды CALL?

  3. Как поведет себя программа примера 4, если в ней вместо команд CALL M использовать команды JMP M?

  4. После начальной установки процессора (сигнал Сброс) указатель стека SР устанавливается в 000. По какому адресу будет производиться запись в стек первый раз, если не загружать SР командой WRSP?

  5. Как, используя механизмы постинкрементной и преддекрементной адресации, организовать дополнительный стек в произвольной области памяти, не связанный с 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 ― различные виды соединений между устройствами:

  1. Auto ― автоматическое определение типа соединения (автоматически определяется наилучший способ соединения устройств),

  2. Console ― соединение при помощи консольного кабеля (COM порт на ПК и вход Console на устройствах Cisco),

  3. CopperStraight-Through ― соединение при помощи кабеля типа витая пара прямое,

  4. CopperCross-Over — соединение при помощи кабеля типа витая пара перекрестное,

  5. Fiber — соединение при помощи волоконно-оптической линии связи (ВОЛС),

  6. Phone — соединение при помощи телефонной линии,

  7. Coaxial — соединение при помощи коаксиального кабеля,

  8. Serial DCE и Serial DTE — последовательные каналы связи.

EndDevices — конечные устройства:

  1. PC-PT — персональный компьютер

  2. Server-PT — серверная станция

  3. Printer-PT — сетевой принтер

  4. 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 эмулирует следующие приложения, которые могут быть запущены на ПК:

  1. IP configuration — конфигурация протокола IP (может задаваться здесь, а не на вкладке Config)

  2. Dial-up — настройки модемной связи

  3. Terminal — открывается окно терминала, используется для доступа к устройствам, подключенным через консольный порт (RS-232)

  4. CommandPrompt — командная строка (поддерживаются основные сетевые команды ОС Windows)

  5. WebBrowser

  6. 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 не распознает команду и отметит ошибку меткой ^.