МЕТОДИЧКА ПО ФУНКЦИОНАЛЬНЫМ БЛОКАМ КОМПЬЮТЕРА
.pdfМинистерство образования и науки РФ
Государственное образовательное учреждение высшего профессионального образования «СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ИНДУСТРИАЛЬНЫЙ УНИВЕРСИТЕТ»
Кафедра систем информатики и управления
ФУНКЦИОНАЛЬНЫЕ БЛОКИ КОМПЬЮТЕРА Часть 1.
Методические указания к лабораторным работам по дисциплине «Архитектура ЭВМ и систем».
Специальность 080801 «Прикладная информатика (в управлении)»
Новокузнецк
2011
УДК 006.015.5
Рецензент Кандидат технических наук,
доцент СибГИУ О.Н. Андрианов
Фетинина Е.П.
Функциональные блоки компьютера. Часть 1.: метод. указ. к лабораторным работам по дисциплине «Архитектура ЭВМ и систем». / Сост.: Е.П. Фетинина; СибГИУ. – Новокузнецк, 2011. – 14 с.
Содержатся сведения, касающиеся представления данных в компьютере и работы процессора. Приводятся описания машинных команд и примеры их применения в алгоритмах обработки информации. Даны примеры выполнения практических заданий.
Предназначено для студентов специальности 080801 «Прикладная информатика (в управлении)».
2
Введение
Компьютер – это устройство, которое может решать задачи, выполняя данные ей команды. Последовательность команд, описывающих решение определенной задачи, называется программой. Электронные схемы каждого компьютера могут распознавать и выполнять ограниченный набор простых команд. Все программы перед выполнением должны быть превращены в последовательность таких команд, которые обычно являются довольно простыми. Эти примитивные команды в совокупности составляют язык, на котором люди могут общаться с компьютером. Такой язык называется машинным. Компьютер работает в двоичной системе счисления, то есть минимальным информационным элементом является бит, принимающий значения «0» или «1». Поэтому существует необходимость в преобразовании команд на языке программирования, понятном человеку, в команды на машинном языке. Этот процесс осуществляется с помощью трансляции или интерпретации.
Целью данных методических материалов является практические рекомендации по изучению функциональных блоков компьютера, представления данных в памяти и операций над ними.
Задача данной работы состоит в том, чтобы дать студентам теоретические основы архитектуры современных компьютеров и применить практически полученные знания.
Первый раздел методических указаний содержит лабораторные работы по изучению функциональных блоков компьютера: проверка внутреннего представления чисел в современном компьютере, проверка хранения чисел в памяти компьютера в виде двоичного кода, проверка представления данных в файлах в двоичном виде, изучение операции умножения. Второй раздел содержит работы по изучению работы процессора: измерение времени исполнения команд процессора, использование логических инструкций процессором, смена регистра букв, шифрование текста.
Перед студентами ставятся следующие задачи:
1.Изучить функциональные блоки компьютера и выполняемые ими операции.
2.Написать, оттранслировать в код и выполнить программы по изучению производимых компьютером операций.
3.Сделать выводы по полученным результатам.
3
Указания к оформлению отчёта по лабораторным работам
1.Отчёт по лабораторным работам оформляется печатным способом в текстовом процессоре Word, шрифт TimeNewRoman 14 пт, межстрочный интервал 1,5, поля страницы: верхнее, нижнее, слева – 2 см, справа – 1 см. Заголовки оформляются шрифтом TimeNewRoman 16 пт полужирный, печатаются с абзацного отступа (1,25 мм) и отделяются от текста интервалом 24 пт. Рисунки и таблицы имеют сквозную нумерацию, названия таблиц печатаются с абзацного отступа по образцу: «Таблица 1 – Название», рисунки и названия рисунков печатаются по центру по образцу: «Рисунок 1 – Название».
2.Структура отчёта:
•титульный лист с указанием названия дисциплины и вида работ, ФИО и группа выполнившего работу и ФИО проверившего, года выполнения;
•номер и название лабораторной работы, цель работы, листинг программы, результаты выполнения программы в виде скрина фрагмента приложения с результатами выполнения, блоксхемы алгоритмов (если требуется в задании к работе), вывод;
•список использованной литературы (оформление по ГОСТу).
4
1. Функциональные блоки компьютера
Лабораторная работа № 1. Представление чисел в компьютере
Цель. Убедиться, что внутреннее представление чисел в современном компьютере по-прежнему двоичное.
Листинг 1. Программа для проверки внутреннего представления чисел в компьютере:
Program BinaryRepresentation1; Var m, m0, i:Integer;
x,h: Real; BEGIN m0:=128;
For m:=m0-1 to m0+1 do begin
h:=1/m;
x:=0;
For i:=1 to m do x:=x+1;
WriteLn (m,' ' ,x-1); end;
ReadLn;
END.
Задание: получить результат выполнения программы. Сделать вывод.
Лабораторная работа № 2. Двоичное представление чисел в памяти
Цель. Проверить утверждение о том, что числа в памяти компьютера хранятся в виде двоичного кода.
Листинг 2. Программа для проверки хранения чисел в виде двоичного кода:
Program BinaryRepresentation2;
Var i, m, b: Byte;
BEGIN
5
b:=65;
m:=$80; {bin = 1000 0000} For i:=1 to 8 do
begin
if (mem[seg(b):ofs(b)] and m) = 0
then Write ('0')
else Write ('1');
m:= m shr 1 end; WriteLn; ReadLn;
END.
Задание: получить результат выполнения программы. Сделать вывод.
Лабораторная работа № 3. Двоичное представление информации на диске
Цель. Убедиться, что данные в файлах представлены в двоичном виде. Проверить утверждение о принципиальной неразличимости двоичных кодов для разных видов информации.
Листинг 3. Программа проверки двоичного представления чисел на диске:
Program BinaryRepresentation3; Var i, m, b: Byte;
f: file of byte; BEGIN
Assign(f, ‘proba.txt’); Reset(f);
Read(f,b);
m:=$80; {bin = 1000 0000} For i:=1 to 8 do
begin
if (b and m) = 0
then Write ('0') else Write ('1');
m:= m shr 1
6
end;
WriteLn;
WriteLn(b);
Close(f);
END.
Задание: получить результат выполнения программы. Сделать вывод.
Лабораторная работа № 4. Можно ли обойтись без умножения?
Цель: Доказать, что умножение для компьютера не является обязательной операцией, поскольку в двоичной системе его можно реализовать в виде программы из более простых операций.
Листинг 4. Программа, реализующая двоичное умножение целых чисел:
Program Multiplication;
Var f, b, c: integer;
BEGIN
Write (’a=’); Readln(a); Write (’b=’);
Readln(b);
S:=0;
While b<>0 do begin
if (b and 1) = 1
then s:=s + a; a:=a shl 1 b:=b shr 1
end; WriteLn(‘a*b=’, s);
END.
Задание: нарисовать блок-схему алгоритма, получить результат выполнения программы. Сделать вывод.
7
2. Работа с процессором
Лабораторная работа № 5. Измерение быстродействия процессора
Цель: Научиться оценивать количество операций, которое ваш компьютер выполняет за 1 сек.
Пусть имеется две незначительно различающихся циклических программы Р1 и Р2, цикл в каждой из которых повторяется n раз. Пусть программы различаются внутри цикла только одной машинной командой. Тогда измерив время работы обеих программ t1 и t2, можно приближённо оценить время выполнения данной машинной команды по формуле:
T = |
(t1 |
−t2 ) |
. |
(1) |
|
n |
|||
|
|
|||
|
|
|
|
Если интересоваться количеством выполненных за 1 сек. операций К, то надо взять обратную величину:
K = |
n |
|
(t1 −t2 ) . |
(2) |
Добавив в знаменатель и в числитель соответствующие множители (величину К удобнее с практической точки зрения измерять в миллионах операций в секунду), после сокращения получим:
K = |
n 10 |
−4 |
, |
|
|
|
|||
(t1 −t2 ) |
||||
|
|
|||
n =10 p 104 , |
||||
K = |
10 p |
|
(3) |
|
|
|
. |
||
(t1 −t2 ) |
||||
|
|
Листинг 5. Программа Р1 измерения времени исполнения команд процессора:
Program instruction_time_P1; USES dos;
Var h, m, s, s100, h2, m2, s2, s1002: word; p, j: integer;
8
n4, n, w1, w2, w3, w4, d: longint; f: text;
BEGIN
n4:=1;
p:=0; REPEAT
n4:=10*n4;
p:=p+1;
Writeln(p, ‘ ’,n4); {n4=10^p}
{N=10000*n4 – полное количество циклов тестирова-
ния}
GetTime(h, m, s, s100); {***** begin test *****}
FOR n:=1 to n4 do
FOR j:=1 to 10000 do Begin
Asm mov ax,1234h Mov bx,4321h
End;
End;
GetTime(h2, m2, s2, s1002); {**** end test ****}
Writeln(‘start:’, h:3, m:3, s:3, s100:3); Writeln(‘stop:’, h2:3, m2:3, s2:3, s1002:3);
w4:=m2; w2:=360000*h2+6000*w4+100*s2+s1002; w3:=m; w1:=360000*h+6000*w3+100*s+s100; d:=w2-
w1;
Writeln(‘d=’, d);
UNTIL (d>1000) or (p=9); {достаточное или максималь-
ное время}
Assign(f, ‘test.txt’); Rewrite(f); {записать в файл} Writeln(f,d);
Writeln(f,n4);
Writeln(f,p);
Close(f);
END.
Задание: получить результат выполнения программы: запись в текстовом файле Test.txt и в виде выполнения программного кода.
9
Листинг 6. Программа Р2 измерения времени исполнения команд процессора:
Program instruction_time_P2_add; USES dos;
Var h, m, s, s100, h2, m2, s2, s1002: word; T1, j: integer;
n4, n, w1, w2, w3, w4, d: longint; f: text;
BEGIN
Assign(f, ‘test.txt’); Reset(f); {читать из файла} Readln(f, t1);
Readln(f, n4); Close(f);
Writeln(‘t1=’, t1, ‘n*10^(-4)=’, n4); {10000*n4 – количество повторений цикла}
GetTime(h, m, s, s100); {***** begin test *****}
FOR n:=1 to n4 do
FOR j:=1 to 10000 do Begin
Asm mov ax,1234h Mov bx,4321h Add ax,bx {#}
End;
End;
GetTime(h2, m2, s2, s1002); {**** end test ****}
Writeln(‘start:’, h:3, m:3, s:3, s100:3); Writeln(‘stop:’, h2:3, m2:3, s2:3, s1002:3);
w4:=m2; w2:=360000*h2+6000*w4+100*s2+s1002; w3:=m; w1:=360000*h+6000*w3+100*s+s100; d:=w2-w1; Writeln(‘d=’, d);
Writeln((n4/(d-t1)):9:3, ‘mln op/sec’);
END.
Задание: получить результат выполнения программы. Сделать вывод.
10