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

Turbo Pascal / Stud_2_1 / K / K1 / K1

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

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

13.1 Архитектура ЭВМ K1

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

  • оперативная память MEMORY емкостью 512 16-разрядных ячеек;

  • девятиразрядный регистр адреса ячейки памяти RA;

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

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

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

  • шестнадцатиразрядный аккумулятор AC для хранения промежуточных результатов выполнения программы;

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

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

  • шестнадцатиразрядный регистр результата RR, предназначенный для временного хранения результата операции, выполняемой АЛУ;

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

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

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

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

В состав команды входят код выполняемой операции KOP (биты 1 – 5) и адрес ячейки памяти A (биты 6 – 16).

Адреса ячеек изменяются от 0 до 511 (от 00000000000 до 01100011111 в двоичной системе счисления). В нулевой ячейке памяти всегда находится нуль, содержимое этой ячейки можно только читать, но в нее ничего нельзя записывать.

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

  • команды загрузки и сохранения аккумулятора;

  • арифметико-логические команды;

  • команды сдвига;

  • команды управления порядком выполнения программы.

К арифметико-логическим командам относятся: сложение, вычитание, умножение, деление, вычитание модулей, сравнение, приращение, отрицание, конъюнкция, дизъюнкция, сумма по модулю 2.

Набор команд сдвига включает в себя сдвиг вправо арифметический и сдвиг влево арифметический.

В состав команд управления порядком выполнения программы входят: безусловный переход, условный переход по знаку «+», по знаку «-», по нулю и по признаку некорректности, команды останова и перехода к подпрограмме.

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

Код

опер.

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

Признаки

Выполнение

команды

<

=

>

нк

00000

Останов

00001

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

00010

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

00011

Сложение

+

+

+

+

00100

Вычитание

+

+

+

+

00101

Умножение

+

+

+

+

00110

Деление

+

+

+

+

00111

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

+

+

+

01000

Сравнение

+

+

+

01001

Отрицание

+

+

01010

Конъюнкция

+

+

01011

Дизъюнкция

+

+

01100

Сложение по модулю 2

+

+

01101

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

+

+

+

01110

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

+

+

+

01111

Безусловный переход

10000

Усл.переход по знаку «+»

10001

Усл.переход по знаку «-»

10010

Усл.переход по нулю

10011

Усл.переход по «нк»

10100

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

См.описание

10101

Приращение

+

+

+

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

13.2 Выполнение команд в ЭВМ K1

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

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

В команде «Загрузка аккумулятора» производится непосредственная передача информации из регистра RS в аккумулятор AC, в команде «Сохранение аккумулятора» - из AC в RS с последующей записью в заданную ячейку памяти. В выполнении этих двух команд АЛУ не участвует.

Команда «Приращение» увеличивает содержимое аккумулятора на значение адресной части А данной команды, при этом содержимое поля А предварительно переписывается в регистр OR. Результат операции записывается в выходной регистр RR и затем пересылается в аккумулятор AC.

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

Если A > 14, то сдвиг разрядов аккумулятора не выполняется; в этом случае по команде сдвига влево разряды 1..15 заполняются нулями, по команде сдвига вправо – значением разряда знака. Результат операции сдвига, как и операции «Приращение», записывается в регистр RR и сохраняется в аккумуляторе.

Во всех арифметико-логических операциях, кроме операции «отрицание», участвуют два операнда, расположенные на аккумуляторе AC и в операционном регистре OR. При этом адрес A, указываемый в регистре команд RK, используется по цепочке A – RA – Memory – RS для пересылки в регистр OR второго операнда. Получаемый результат операции временно запоминается в регистре результатов RR, после чего записывается в аккумулятор AC.

При выполнении операции «отрицание» производится инвертирование разрядов аккумулятора, а получаемый результат, как и в остальных арифметико-логических операциях, через регистр RR снова записывается в аккумулятор.

Команда “Сравнение” в основном аналогична команде “Вычитание”, но ее результат не записывается в аккумулятор, а влияет лишь на формирование регистра признаков RP.

Большинство команд, выполняемых в арифметико-логическом устройстве АЛУ, кроме непосредственного формирования своего результата, изменяют также все или часть битов регистра признаков RP, что используется в дальнейшем в АЛУ при выполнении команд условного перехода. Требуемые изменения регистра RP отражены в табл.13. Признак «нк» (некорректность операции) означает, что в результате выполнения данной операции возникает переполнение регистра результатов RR или же здесь отмечена попытка деления на нуль.

Символ “–” в графе признаков табл.13 определяет ситуацию, которая не может возникнуть в данной операции (например, некорректность при выполнении операции сдвига), или то, что данная операция не изменяет регистр RP (например, команда безусловного перехода).

Сущность изменения регистра RP рассмотрим на конкретном примере. Предположим, что в программе выполнена команда сложения и при этом получен положительный результат. Тогда в состояние «1» должен быть установлен лишь третий бит регистра RP, остальные биты должны быть сброшены на нуль.

Примечание. Если в команде, приведенной в табл.12, все три графы признаков отмечены символом “–”, то это означает лишь то, что при этом сохраняются предыдущие значения признаков (но не выполняется сброс их на нуль).

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

Каждая из команд условного перехода, список которых приведен в табл.13, выполняет передачу управления по адресу A, если установлен в единицу соответствующий бит регистра RP.

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

При обращении к подпрограмме должны быть выполнены два действия: передача управления на начальный участок подпрограммы и возврат в вызывающую программу после отработки подпрограммы. Эта работа в ЭВМ K1 выполняется следующим образом.

При разработке подпрограммы в качестве ее первой команды нужно записать безусловную передачу управления по нулевому адресу, т.е. команду 01111000000000000, а в качестве последней команды – безусловную передачу управления на первую команду подпрограммы. Если обозначить адрес первой команды подпрограммы через k, то команда обращения к подпрограмме выполняет:

  • запись в адресную часть k-ой команды, т.е. первой команды подпрограммы текущего содержимого SAK, чем обеспечивается возврат в вызывающую программу;

  • безусловную передачу управления (k+1)-ой команде.

Все команды ЭВМ K1, кроме команд сдвига и приращения, используют прямую адресацию операндов. В командах сдвига применена непосредственная адресация, поскольку количество сдвигов определяется не содержимым ячейки памяти с адресом A, а непосредственно значением A. Аналогичная ситуация имеет место также в команде приращения.

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

Предположим, что в ЭВМ K1 адрес операнда в команде сложения должен увеличиваться в каждом цикле на единицу. Поскольку адресная часть команды должна изменяться, то до начала работы цикла эту команду нужно восстановить, используя для этого ее исходное значение, записанное после команды останова. До начала цикла нужно также послать нуль в счетчик количества повторений этого цикла.

Ниже приведен пример описанной выше работы при вычислении выражения

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

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

,

k+0 00001 00000000000

k+1 00010 <счетчик>

k+2 00010 < R >

k+3 00001 k+21

k+4 00010 k+6

k+5 00001 < R >

k+6 00011 < >

k+7 00010 < R >

k+8 00001 k+6

k+9 10101 00000000001

k+10 00010 k+5

k+11 00001 <счетчик>

k+12 10101 00000000001

k+13 00010 <счетчик>

k+14 01000 k+22

k+15 10001 k+5

k+16 00001 < 8 >

k+17 00101 < a >

k+18 00100 < R >

k+19 00010 < y >

k+20 00000 00000000000

k+21 00011 < x1 >

k+22 0000000000000101

k+23 0000000000001000

k+24 a = 31

k+25 x1 = 10

k+26 x2 = -15

k+27 x3 = 25

k+28 x4 = 40

k+29 x5 = 50

k+30 y

k+31 счетчик

k+32 R

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

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

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

Для кода операции в машинной команде ЭВМ К1 отведено 5 разрядов, что позволяет иметь в составе системы команд команды. Для адреса в регистре RK отведено 11 разрядов, что позволяет иметь размер оперативной памяти ячеек. В то же время по описанию ЭВМ максимальный код команды равен , максимальный адрес ОЗУ равен . Следовательно, при записи машинных команд должны быть учтены указанные ограничения.

Предположим, что пусковой адрес программы задан равным . Тогда текстовый файл, подготовленный для загрузки машинных команд и обрабатываемых данных в память ЭВМ К1, будет иметь следующий вид (пусковой адрес представлен в 10 с/с, остальная информация – в 2 с/с и параллельно в 16 с/с):

20 20

0000100000000000 0800

0001000000110011 1033

0001000000110100 1034

0000100000101001 0829

0001000000011010 1034

0000100000110100 0834

0001100000101101 182D

0001000000110100 1034

0000100000011010 081A

1010100000000001 C801

0001000000011001 1019

0000100000110011 0833

1010100000000001 C801

0001000000110011 102A

0100000000101010 402A

1000100000011001 8819

0000100000101011 082B

0010100000101100 282C

0010000000110100 2032

0001000000110010 1032

0000000000000000 0000

0001100000101101 182D

0000000000000101 0005

0000000000001000 0008

0000000000011111 001F

0000000000001010 000A

1111111111110001 FFF1

0000000000011001 0019

0000000000101000 0028

0000000000110010 0032

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

Соседние файлы в папке K1
  • #
    03.03.2016591.3 Кб90K1.doc
  • #
    03.03.201655.3 Кб90Схема ЭВМ К1.vsd