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

МЕТОДИЧКА ПО ФУНКЦИОНАЛЬНЫМ БЛОКАМ КОМПЬЮТЕРА

.pdf
Скачиваний:
10
Добавлен:
27.05.2015
Размер:
209.83 Кб
Скачать

Министерство образования и науки РФ

Государственное образовательное учреждение высшего профессионального образования «СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ИНДУСТРИАЛЬНЫЙ УНИВЕРСИТЕТ»

Кафедра систем информатики и управления

ФУНКЦИОНАЛЬНЫЕ БЛОКИ КОМПЬЮТЕРА Часть 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