Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Turbo Pascal / Stud_2_1 / F / F2 / F2

.doc
Скачиваний:
88
Добавлен:
03.03.2016
Размер:
196.61 Кб
Скачать

10. УЧЕБНАЯ ВЫЧИСЛИТЕЛЬНАЯ МАШИНА F2

10.1 Архитектура ЭВМ F2

Учебная ЭВМ F2 представляет собою одноадресную машину со страничной организацией памяти.

Структурная схема ЭВМ F2 приведена на рис.10. В состав ЭВМ F2 входят следующие основные узлы:

  • оперативное запоминающее устройство емкостью 256 12-разрядных слов;

  • восьмиразрядный регистр адреса RA, определяющий номер ячейки памяти, с которой происходит взаимодействие в данный момент времени;

  • двенадцатиразрядный регистр слова RS для временного хранения читаемой или записываемой информации;

  • восьмиразрядный счетчик адреса команд SAK, предназначенный для хранения адреса следующей команды;

  • двенадцатиразрядный регистр команд RK, хранящий выполняемую команду;

  • двенадцатиразрядный регистр-аккумулятор АС для приема и хранения первого операнда и результата операции;

  • арифметико-логическое устройство АЛУ, выполняющее операцию, заданную кодом операции команды;

  • дешифратор кода операции DC;

  • четырехразрядный регистр признаков завершения операции RP.

Регистр команды состоит из трех полей:

  • поле KOP (биты 1 – 4) содержит код выполняемой операции;

  • поле P (биты 5 – 7) содержит адрес страницы,

  • поле А (биты 8 – 12) содержит адрес ячейки относительно начала страницы.

Память разбита на страницы по 32 ячейки. Исполнительный адрес формируется путем склеивания значений полей Р и А, например, при Р = 000 и А=01111 получаем (), при Р = 001 и А = 00010 получаем ().

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

Система команд ЭВМ F2, приведенная в табл.10, включает в себя:

  • команды работы с аккумулятором: «Загрузка аккумулятора» и «Сохранение аккумулятора»;

  • арифметико-логические команды: «Сложение», «Вычитание», «Умножение», «Деление», «Вычитание модулей», «Конъюнкция», «Дизъюнкция» и «Сложение по модулю 2»;

  • команды сдвига: «Сдвиг влево арифметический» и «Сдвиг вправо арифметический»;

  • команды управления порядком выполнения программы: «Вызов подпрограммы», «Возврат из подпрограммы», «Переход» и «Останов».

В команде «Останов» разряды 5 – 12 не используются.

Таблица 10. Система команд ЭВМ F2

Код

опер.

Наименование

Признаки

Выполнение

команды

<

=

>

нк

0000

Останов

0001

Загрузка аккумулятора

0010

Сохранение аккумулятора

0011

Вызов подпрограммы

0100

Возврат из подпрогр-ы

0101

Переход

См.описание

0110

Сдвиг влево арифм.

+

+

0111

Сдвиг вправо арифм.

+

+

1000

Сложение

+

+

+

+

1001

Вычитание

+

+

+

+

1010

Умножение

+

+

+

+

1011

Деление

+

+

+

+

1100

Вычитание модулей

+

+

1101

Сумма по модулю 2

+

+

1110

Конъюнкция

+

+

1111

Дизъюнкция

+

+

Круглые скобки в графе «Выполнение команды» означают содержимое регистра или ячейки памяти. Например, запись – это адрес ячейки, а () – содержимое ячейки с адресом .

10.2 Выполнение команд в ЭВМ F2

В ЭВМ F2 используются 12-разрядные числа с фиксированной запятой (целые числа со знаком). Отрицательные значения чисел записываются в дополнительном коде.

Выполнение команды начинается с загрузки содержимого команды в регистр RK. Для этого значение SAK передается в регистр RA, после чего содержимое ячейки ОЗУ, адрес которой задан в регистре RA, пересылается в регистр слова RS, а затем передается в RK. В регистре команды RK происходит выделение полей KOP, P и A, после чего дешифратор DC определяет тип операции. Для подготовки выборки следующей команды значение счетчика адреса SAK увеличивается на единицу.

В арифметико-логических командах на первый вход АЛУ поступает содержимое аккумулятора АС. Значение второго операнда выбирается из памяти, при этом в регистре RA устанавливается адрес по значениям полей Р и А регистра RK; содержимое ячейки ОЗУ по адресу, заданному в RA, через регистр RS поступает на второй вход АЛУ. Результат операции записывается в аккумулятор.

Далее по значению результата формируется содержимое регистра признаков RP. При выполнении арифметической операции первый бит RP устанавливается в «1», если ее результат отрицательный; второй бит устанавливается в «1» при нулевом результате этой операции; третий бит - при положительном результате; четвертый бит устанавливается в «1» в случае некорректности выполнения операции (переполнение аккумулятора АС или попытка деления на нуль).

Для логических операций и для команд сдвига производится лишь анализ результата на равенство нулю: RP[1] = 1, если результат операции не равен нулю; RP[2] = 1, если этот результат равен нулю.

Команды сдвига ориентированы только на аккумулятор. Особенностью арифметического сдвига, в отличие от логического, является то, что при сдвиге влево знаковый разряд не затрагивается, при этом освобождаемые в правой части аккумулятора разряды заполняются нулями; при сдвиге вправо разряд знака (0 или 1) распространяется на сдвигаемые разряды. Количество сдвигов определяется значением исполнительного адреса .

Если > 14, то сдвиг разрядов аккумулятора не выполняется; в этом случае по команде сдвига влево разряды 1..15 заполняются нулями, по команде сдвига вправо - значением разряда знака (0 или 1).

В команде «Загрузка аккумулятора» в АС передается содержимое ячейки памяти, адрес которой определен полями Р и А регистра RK.

По команде «Сохранение аккумулятора» содержимое АС через регистр RS записывается в ячейку ОЗУ по адресу, который определен значениями полей Р и А.

При выполнении команды «Вызов подпрограммы» в регистре RA устанавливается нулевое значение, содержимое счетчика SAK через регистр RS пересылается в нулевую ячейку ОЗУ, после чего в SAK загружается адрес из битов 5 – 12 регистра RK.

При выполнении команды «Возврат из подпрограммы» в регистре RA устанавливается нулевое значение и содержимое битов 5 – 12 нулевой ячейки ОЗУ через регистр RS поступает в счетчик адреса команд SAK.

Команда «Переход» структурно отличается от других команд ЭВМ F2. Поля этой команды располагаются в двух смежных ячейках ОЗУ. В первой ячейке используется лишь код операции (0101), поля Р и А в ней нулевые. Во второй команде первые 4 бита – маска команды, поля Р и А здесь, как и ранее, определяют адрес ячейки памяти . Команда «Переход» универсальна, она может задавать как условный, так и безусловный переход. Критерием типа перехода является результат логического умножения маски на содержимое регистра признаков RP. Если результат умножения ненулевой, то производится передача управления по адресу (адрес загружается в счетчик SAK), в противном случае производится переход к следующей команде. Примеры значений маски:

0000 - нет операции (пустая команда);

1000 – условный переход по «меньше» ((АС) < 0 для арифметической операции или (АС) <> 0 для логической операции);

0100 – условный переход по “равно” (результат операции равен нулю);

1010 – условный переход по “не равно” (результат арифметической операции меньше или больше нуля);

.............

1111 – безусловный переход.

Некоторой особенностью обладает рассматриваемая команда при значении маски МА = 1111. В этом случае логическое умножение маски на содержимое регистра признаков RP не производится и, следовательно, безусловный переход по адресу АМ выполняется при любом состоянии указанного регистра.

Значение маски, равное 0001, определяет переход по признаку некорректности. В этом случае, если RP[4]=1, необходимо по адресу перейти на вывод сообщения об аварийном прерывании, указав при этом код операции и адрес команды, вызвавшей прерывание, после чего произвести останов ЭВМ.

Пример.

k+0 0001 P1 < x >

k+1 1000 P1 < 0 >

k+2 0101 000 00000

k+3 1100 P1 k+7

k+4 1000 P1 < 1 >

k+5 0101 000 00000

k+6 1111 P1 k+13

k+7 0101 000 00000

k+8 0100 P1 k+12

k+9 1001 P1 < 1 >

k+10 0101 000 00000

k+11 1111 P1 k+13

k+12 0001 P1 < 0 >

k+13 0010 P1 < y >

k+14 0000 000 00000

k+15 0000 000 00000 0

k+16 0000 000 00001 1

k+17 x

k+18 y

Здесь k, k+1, … - условное обозначение адреса команды, < y > - обозначение адреса ячейки, отведенной для переменной y (в данном случае k+18); Р1 – условное обозначение адреса страницы.

При вычислении рассматриваемого выражения необходимо определить соотношение между значением переменной х и нулем, чтобы рассредоточить вычисления по трем ветвям. Для этого первая команда программы загружает переменную х в аккумулятор, но поскольку при этом не вырабатывается признак результата, то дальше производится сложение значения х с нулем. В ячейках с адресами k+2 и k+3 записана команда условного перехода по признакам “<” и “=”, а после нее к содержимому аккумулятора добавляется “1”, т.е. производится реализация первой ветви. Ячейки k+5 и k+6 – это команда безусловного перехода к команде с адресом k+13, выполняющей запись аккумулятора в ячейку, отведенную для переменной y.

В приведенной выше условной записи машинной программы k+0, k+1, k+2, … - это полные адреса ячеек, в которых размещаются машинные команды. В связи с этим можно считать, что в записи k+i отображен адрес страницы k и смещение i. Если принять , то получим ; для при этом будет иметь место P = 001,

Машинную программу, которая записана выше в условном виде, можно теперь изобразить следующим образом:

00100000 000100110001

00100001 100000101111

00100010 010100000000

00100011 110000100111

00100100 100000110000

00100101 010100000000

00100110 111100101101

00100111 010100000000

00101000 010000101100

00101001 100100110000

00101010 010100000000

00101011 111100101101

00101100 000100101111

00101101 001000110010

00101110 000000000000

00101111 000000000000

00110000 000000000000

00110001 101100011000

Здесь в левой колонке – адрес команды, в правой – машинная команда. Ячейка k+18, предназначенная для размещения переменной y, не показана в машинной программе, поскольку ее содержимое не нужно вводить извне.

В качестве примера реализации циклической программы рассмотрим вычисление выражения

При этом предполагается, что элементы массива Х расположены в смежных ячейках памяти.

Представим заданное выражение в виде

;

Тогда фрагмент программы может иметь следующий вид:

k+0 0001 P2 < 0 >

k+1 0010 P2 < R >

k+2 0001 P2 k1+4

k+3 0010 P1 k+8

k+4 0001 P2 < 5 >

k+6 0010 P2 < сч >

k+7 0001 P2 < R >

k+8 1000 P2 < >

k+9 0010 P2 < R >

k+10 0001 P1 k+8

k+11 1000 P2 < 1 >

k+12 0010 P1 k+8

k+13 0001 P2 < сч >

k+14 1001 P2 < 1 >

k+15 0010 P2 < сч >

k+16 0101 000 00000

k+17 0010 P1 k+7

k+18 0001 P2 < 8 >

k+19 1010 P2 < a >

k+20 1001 P2 < R >

k+21 0010 P2 < y >

k+22 0000 000 00000

k1+0 0000 000 00000 0

k1+1 0000 000 00001 1

k1+2 0000 000 00101 5

k1+3 0000 000 01000 8

k1+4 1000 P2 < x1 >

k1+5 a = 31

k1+6 x1 = 10

k1+7 x2 = -15

k1+8 x3 = 25

k1+9 x4 = 40

k1+10 x5 = 50

k1+11 y

k1+12 счетчик

k1+13 R

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

Накопление суммы производит команда сложения, имеющая адрес k+8. В каждом цикле адрес ее операнда должен увеличиваться на 1. Поскольку ЭВМ F2 не имеет индекс-адресации, то изменение команды k+8 выполняется принудительно (командами с адресами k+10, k+11 и k+12). До начала работы цикла команда k+8 восстанавливается, для чего используется ее прототип в ячейке k1+4.

Для контроля количества выполнений цикла используется счетчик в ячейке k1+10. До начала работы цикла счетчик получает исходное значение 5; в каждом цикле это значение уменьшается на 1. До тех пор, пока значение счетчика больше нуля, команда условной передачи управления выполняет переход на начало цикла – команду с адресом k+7, в противном случае осуществляется переход к следующей команде – команде останова.

Из мнемонических соображений изменяемый адрес в команде k+8 обозначен символом “*”, чтобы четко организовать модификацию и восстановление изменяемой команды.

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

Структура текстового файла для ЭВМ F2 может быть следующей:

ПА пусковой-адрес-программы

НА начальный-адрес-программного-сегмента

машинные-команды

НА начальный-адрес-сегмента-данных

обрабатываемые-данные

Здесь ПА и НА – признаки пускового и начального адресов, причем значения этих адресов должны быть заданы в десятичной системе счисления. При этом нужно учесть, что пусковой адрес не всегда совпадает с начальным адресом программного сегмента. Это имеет место, например, в случае, когда в машинной программе вначале записана подпрограмма, а затем – основная программа. Если размер машинной программы превышает одну страницу (32 ячейки памяти), то ее следует размещать на смежных страницах. При этом значения адресов ПА и НА, относящиеся к программному сегменту, остаются неизменными.

Примем для программного сегмента ПА = НА = (P = 001, A = 00000) =, а для сегмента данных НА = (P = 100, A = 00000) = . Тогда рассматриваемая программа, подготовленная к записи в текстовый файл, будет иметь следующий вид (ПА, НА записаны в 10 с/с, машинные команды и данные – в 2 с/с и параллельно в 16 с/с):

ПА 32 ПА 32

НА 32 НА 32

000110000000 180

001010001101 28D

000110000100 184

001000101000 228

000110000010 182

001010001100 28C

000110001101 18D

100010000110 886

001010001101 28D

000100101000 128

100010000001 881

001000101000 228

000110001100 18C

100110000001 981

001010001100 28C

010100000000 500

001000100111 227

000110000011 183

101010000101 A85

100110001101 98D

001010001011 28B

000000000000 000

НА 128 НА 128

000000000000 000

000000000001 001

000000000101 005

000000001000 008

100010000110 886

000000011111 01F

000000001010 00A

111111110001 FF1

000000011001 019

000000101000 028

000000110010 032

Нетрудно заметить, что в машинных командах условное обозначение адреса операнда заменено смещением относительно базового адреса. Например, во второй машинной команде (k+1) в последних пяти разрядах вместо условного обозначения <R> записано смещение .

Примечание. В состав сегмента данных не включено содержимое ячеек <y>, <счетчик> и <R>, поскольку это содержимое формируется в программе, а не вводится извне.

9

Соседние файлы в папке F2
  • #
    03.03.2016196.61 Кб88F2.doc
  • #
    03.03.201639.94 Кб88Структурная схема ЭВМ F2.vsd