
- •Учебное пособие для лабораторных работ
- •По курсу:
- •Организация эвм и систем
- •Содержание
- •Инструкция по использованию программного обеспечения.
- •Описание языка mcl.
- •1. Описание языка mcl.
- •2. Алфавит.
- •7. Операции и выражения. Побитовые операции:
- •Операции сдвига:
- •8. Приоритеты и порядок выполнения операций:
- •9. Арифметические преобразования в выражениях.
- •10. Типы языка mcl.
- •11. Переменные языка mcl.
- •12. Операторы языка mcl. Оператор - формат:
- •Оператор - метка:
- •Оператор - безусловный переход: goто
- •Оператор - вызов подпрограммы: gosub
- •Оператор - возврат из подпрограммы: return
- •Оператор - условный оператор: if then
- •Оператор - оператор цикла: for to next
- •Оператор - пауза: pause
- •Оператор - вывод: write writeln
- •Оператор – ввод: read
- •14. Общие замечания.
- •Арифметико-логические устройства эвм и принципы их функционирования.
- •Лабораторная работа № 1. Моделирование функционирования алу при выполнении операции сложения/вычитания. Цель работы:
- •Алгоритм алгебраического сложения/вычитания двоичных чисел с фиксированной запятой при использовании дополнительного кода для представления слагаемых.
- •Моделирование функционирования алу.
- •Проверка на переполнение
- •Результат работы программы:
- •Контрольные вопросы.
- •Содержание отчета.
- •Варианты заданий.
- •Алгоритм умножения двоичных чисел с фиксированной запятой, представленных в дополнительном коде.
- •Моделирование функционирования алу при выполнении операции умножения чисел, представленных в прямом коде.
- •Моделирование функционирования алу при выполнении операции умножения чисел, представленных в дополнительном коде.
- •Контрольные вопросы.
- •Содержание отчета.
- •Варианты заданий.
- •Моделирование функционирования алу при выполнении операции деления методом с восстановлением остатка над числами, представленными в прямом коде.
- •2. Моделирование функционирования алу при выполнении операции деления методом без восстановления остатка над числами, представленными в прямом коде.
- •Контрольные вопросы.
- •Содержание отчета.
- •Варианты заданий.
- •Организация операционной части центрального процессора. Команды эвм.
- •Одноадресные команды.
- •Безадресные команды.
- •Способы адресации.
- •Микропрограмма и структурная схема операционной части цп при выполнении двухадресной команды формата регистр-регистр.
- •Примечания:
- •На рисунке 28 слева на графике расставлены вентили, которые в данной лабораторной работе не используются (они нужны для моделирования блока устройства управления);
- •Задание для выполнения лабораторной работы.
- •Содержание отчета.
- •Поэтапное выполнение программы (см. Файл буу.Mcl):
- •Примечание:
- •Задание для выполнения лабораторной работы.
- •Варианты заданий.
- •Лабораторная работа № 6. Моделирование функционирования селекторного канала.
- •Файл sk.Mcl.
- •Описание подпрограмм для моделирования селекторного канала, хранящихся в файле sk.Mcl. Подпрограмма k_u_k:
- •Подпрограмма w_reg:
- •Подпрограмма out_op:
- •Подпрограмма in_op:
- •Подпрограмма к_ор:
- •Подпрограмма w_op:
- •Подпрограмма z_rdu:
- •Подпрограмма zagr:
- •Задание.
- •Содержание отчета.
- •Пример результатов моделирования работы селекторного канала.
- •Варианты заданий для моделирования селекторного канала. Вариант номер 1
- •Вариант номер 2
- •Вариант номер 3
- •Вариант номер 4
- •Вариант номер 5
- •Вариант номер 6
- •Вариант номер 7
- •Вариант номер 8
- •Вариант номер 9
- •Вариант номер 10
- •Вариант номер 11
- •Вариант номер 12
- •Вариант номер 13
- •Вариант номер 14
- •Вариант номер 15
- •Лабораторная работа № 7. Моделирование функционирования мультиплексного канала.
- •Файл mk.Mcl.
- •Описание подпрограмм для моделирования мультиплексного канала, хранящихся в файле мk.Mcl. Подпрограммы k_u_k, оut_op, in_op и k_op:
- •Подпрограмма w_op:
- •Подпрограмма act:
- •Подпрограмма pas:
- •Подпрограмма w_pk:
- •Подпрограмма zagr2:
- •Задание.
- •Содержание отчета.
- •Пример результатов моделирования работы мультиплексного канала.
- •Варианты заданий для моделирования мультиплексного канала. Вариант номер 1
- •Вариант номер 2
- •Вариант номер 3
- •Вариант номер 4
- •Вариант номер 5
- •Вариант номер 6
- •Вариант номер 7
- •Вариант номер 8
- •Вариант номер 9
- •Вариант номер 10
- •Вариант номер 11
- •Вариант номер 12
- •Лабораторная работа № 8. Моделирование буферной памяти с признаковым обменом и сквозной записью. Сверхбыстродействующая кэш-память и ее моделирование.
- •Моделирование функционирования секторного буфера.
- •Выполнение работы.
- •Типы, используемые подпрограммами.
- •Используемые подпрограммы.
- •Исходные данные.
- •Содержание отчета.
- •Пример выполнения программы с признаковым обменом (файл cachesf.Mcl) для 1-го варианта:
- •Варианты заданий. Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Лабораторная работа № 9. Моделирование буферной памяти с признаковым обменом и сквозной записью. Моделирование функционирования группо-ассоциативного буфера.
- •Выполнение работы.
- •Типы, используемые подпрограммами.
- •Содержание отчета.
- •Пример выполнения программы с признаковым обменом (файл cacheaf.Mcl) для 1-го варианта:
Алгоритм умножения двоичных чисел с фиксированной запятой, представленных в дополнительном коде.
Рассмотрим алгоритм умножения двоичных чисел с фиксированной запятой, начиная с младших разрядов множителя, со сдвигом суммы частичных произведений и использованием дополнительного кода для отрицательных чисел.
Данный алгоритм умножения заключается в следующем:
Сомножители представляются дополнительным кодом. Так как дополнительный код положительного числа совпадает с прямым кодом, то положительные числа будут представлены в прямом коде, а отрицательные – в дополнительном.
Исходное значение суммы частичных произведений принимается равным 0.
Если анализируемая цифра множителя равна 1, то к сумме частичных произведений прибавляется множимое в том коде, в котором оно представлено. Прибавление производится с выравниванием складываемых чисел по старшим разрядам. Если анализируемая цифра множителя равна 0, прибавление не производится.
Сумма частичных произведений сдвигается на один разряд вправо, при этом, если сумма отрицательна, осуществляется модифицированный сдвиг.
Пункты 3 и 4 последовательно выполняются для всех цифровых разрядов множителя, начиная с младшего.
Если множитель – положительное число, полученный результат представляет собой произведение. Если множитель отрицателен, то для получения произведения к результату прибавляется множимое с обратным знаком. При этом прибавление производится с выравниванием складываемых чисел по старшим разрядам. Если результат размещается в двойном слове, то он предварительно сдвигается на один разряд вправо.
Произведение получается в прямом коде, если сомножители имеют одинаковые знаки, и в дополнительном, если сомножители имеют разные знаки.
Моделирование функционирования алу при выполнении операции умножения чисел, представленных в прямом коде.
При выполнении операции умножения будем сдвигать сумму частичных произведений и анализировать разряды множителя, начиная с младшего разряда.
Операнды в АЛУ записываются в прямом коде. Множимое хранится в регистре R1, множитель в регистре R2. Результат операции умножения будет формироваться в регистрах RC и R2, в RC - старшая часть, в R2 - младшая.
Анализ множителя начинается с младшего разряда, т.е. на каждом шаге анализируется нулевой разряд регистра R2 и после анализа содержимое этого регистра сдвигается вправо на один разряд. Если нулевой разряд регистра R2 равен 1, то к сумме частичных произведений прибавляется множимое, а если в нулевом разряде множителя стоит 0, то к сумме частичных произведений прибавляется 0. Структурная схема АЛУ представлена на рис. 10.
Знак произведения формируется в результате анализа знаков сомножителей. Если сомножители имеют одинаковые знаки, то произведение получается положительным, если знаки различны - произведение будет отрицательным. После определения знака результата знаковые разряды сомножителей обнуляются и умножение производится над положительными числами.
При выполнении операции умножения используется не модифицированный сдвиг, т.е. при сдвиге промежуточного произведения старший разряд заполняется нулем.
Число циклов выполнения операции умножения равно n. Это объясняется тем, что до этапа коррекции (после выполнения (n-1) циклов) требуется сдвиг на 1 разряд вправо в связи с тем, что знаковый разряд обнуляется в начале выполнения операции. Этого можно достичь занося в счетчик циклов n, а не (n-1). Представление результата до и после этапа коррекции показано на рис. 11.
Блок-схема алгоритма операции умножения представлена на рис. 12.
Разрядность регистров АЛУ принимается n бит. Число циклов умножения равно разрядности операндов, т.е. n.
Р
ис.
10. Структурная схема АЛУ для выполнения
операции умножения
RС
R3
знак
Результат до этапа
коррекции
RС
R3
знак
Результат после
этапа коррекции
Рис. 11. Представление результата до и после этапа коррекции
Начало
Ввод операндов SCH=n
Формирование
знака результата:
R1[n]R2[n]
R1[n]=0;
R2[n]=0;
RB=0; SCH=n
“0”
“1”
RA:=R1
RA:=0
SM:=RA+RB
RC:=П(1)SM R3:=П(1)R2
R3[n-1]:=SM[0..0]
RB:=RC
R2:=R3
Печать содержимого
всех регистров АЛУ
SCH:=SCH-1
“<>0”
“=0”
Печать результатов
Рис. 12. Блок-схема алгоритма выполнения операции умножения
Для наглядности проиллюстрируем выполнение операции умножения на микропрограммном уровне на примере 1.
Пример 1.
Умножим 117 на 45. Введем операнды:
множимое X = 01110101= 117
множитель Y = 00101101= 45
Формируем знак результата. Т.к. знаковый разряд множимого равен знаковому разряду множителя, следовательно, результат положительный. После ввода множимое записывается в регистр R1, множитель в регистр R2. Число циклов равно 8.
Цикл 1.
Младший разряд множителя - 1.
В регистр RA переписывается содержимое R1.
R1=01110101, RA=01110101, RВ:=0
Содержимое регистров RA и RB суммируется и записывается в регистр SM=01110101
Регистр R2=00101101 сдвигается вправо на один разряд и записывается в R3.
Регистр SM сдвигается вправо на один разряд и записывается в RC, вытесненный разряд записывается на место старшего разряда R3.
R3 переписывается в R2, RС в RВ.
После сдвигов содержимое регистров равно:
SM=01110101
RC=00111010
R2=00101101 (в конце цикла R2=10010110)
R3=10010110
RB=00111010
Содержимое счетчика циклов уменьшаем на единицу SCH:=7
Проверяем счетчик циклов на равенство нулю. SCH ≠0, следовательно, выполняем следующий цикл.
Цикл 2.
Младший разряд множителя - 0.
В RA записываем 0.
Суммируем.
RA=00000000
RB=00111010 (в конце цикла RВ=00011101)
SM=00111010
После сдвигов содержимое регистров равно:
SM=00111010
RC=00011101
R2=10010110 (в конце цикла R2=01001011)
R3=01001011
Содержимое счетчика циклов уменьшаем на единицу SCH:=6
Проверяем счетчик циклов на равенство нулю. SCH ≠0, следовательно, выполняем следующий цикл.
Цикл 3.
Младший разряд множителя - 1.
Суммируем.
RA=01110101
RB=00011101 (в конце цикла RВ=01001001)
SM=10010010
После сдвигов содержимое регистров равно:
SM=10010010
RC=01001001
R2=01001011 (в конце цикла R2=00100101)
R3=00100101
Содержимое счетчика циклов уменьшаем на единицу SCH:=5
Проверяем счетчик циклов на равенство нулю. SCH ≠0, следовательно, выполняем следующий цикл.
Цикл 4.
Младший разряд множителя - 1.
Суммируем.
RA=01110101
RB=01001001 (в конце цикла RВ=01011111)
SM=10111110
После сдвигов содержимое регистров равно:
SM=10111110
RC=01011111
R2=00100101 (в конце цикла R2=00010010)
R3=00010010
Содержимое счетчика циклов уменьшаем на единицу SCH:=4
Проверяем счетчик циклов на равенство нулю. SCH ≠0, следовательно, выполняем следующий цикл.
Цикл 5.
Младший разряд множителя - 0.
В RA записываем 0.
Суммируем.
RA=00000000
RB=01011111 (в конце цикла RВ=00101111)
SM=01011111
После сдвигов содержимое регистров равно:SM=01011111
RC=00101111
R2=00010010 (в конце цикла R2=10001001)
R3=10001001
Содержимое счетчика циклов уменьшаем на единицу SCH:=3
Проверяем счетчик циклов на равенство нулю. SCH ≠0, следовательно, выполняем следующий цикл.
Цикл 6.
Младший разряд множителя - 1.
Суммируем.
RA=01110101
RB=00101111 (в конце цикла RВ=01010010)
SM=10100100
После сдвигов содержимое регистров равно:
SM=10100100
RC=01010010
R2=10001001 (в конце цикла R2=01000100)
R3=01000100
Содержимое счетчика циклов уменьшаем на единицу SCH:=2
Проверяем счетчик циклов на равенство нулю. SCH ≠0, следовательно, выполняем следующий цикл.
Цикл 7.
Младший разряд множителя - 0.
В RA записываем 0.
Суммируем.
RA=00000000
RB=01010010 (в конце цикла RВ=00101001)
SM=01010010
После сдвигов содержимое регистров равно:
SM=01010010
RC=00101001
R2=01000100 (в конце цикла R2=00100010)
R3=00100010
Содержимое счетчика циклов уменьшаем на единицу SCH:=1
Проверяем счетчик циклов на равенство нулю. SCH ≠0, следовательно, выполняем следующий цикл.
Цикл 8.
Младший разряд множителя - 0.
В RA записываем 0.
Суммируем.
RA=00000000
RB=00101001 (в конце цикла RВ=00010100)
SM=00101001
После сдвигов содержимое регистров равно:
SM=00101001
RC=00010100
R2=00100010 (в конце цикла R2=00010001)
R3=10010001
Содержимое счетчика циклов уменьшаем на единицу SCH:=0
Счетчик циклов равен нулю.
В 16-ти разрядный регистр REZ записываем результат: из регистра R2 младшую часть, из RС старшую. Производим печать результата. Для этого обращаемся к подпрограмме печати чисел со знаком. Параметры подпрограммы:
Р - печатаемое число; Р=REZ;
РL - его разрядность; PL=16;
REZ=0001010010010001=5265.