Автор работы: Пользователь скрыл имя, 09 Декабря 2014 в 22:59, лабораторная работа
1 Цель работы
Тестирование арифметико-логического блока процессора на уровне двоичных форм представления данных типовыми программными средствами ЭВМ.
2Арифметический тип данных
Этот тип данных используется для осуществления арифметических операций, обработки сигналов и т.п.
Техническая сложность реализации заключается в отсутствии возможности реализации операции вычитание (нет поддержки операции займа). В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел.
Для всех систем счисления, кроме десятичной, имеется прямой код числа, применяемый для реализации операций над знаковыми числами. При записи числа в прямом коде старший разряд равен 0, если число положительное, и 1, если число отрицательное. Однако прямой код имеет и свои недостатки:
Решение проблемы с вычитанием было найдено в замене вычитания сложением:
(с – y) – дополнение, p – разрядность числа.
Помимо прямого кода числа используется также обратный и дополнительный коды. Обратный код дополняет число до 2p–1 и обозначается как:
Рассмотрим следующее выражение:
[(2p – 1) – y] – обратный код;
– дополнительный код.
Прямой код – это представление числа в двоичной системе счисления, при котором первый (старший) разряд отводится под знак числа. Если число положительное, то в левый разряд записывается 0; если число отрицательное, то в левый разряд записывается 1.
Таким образом, в двоичной системе счисления, используя прямой код, в восьмиразрядной ячейке (байте) можно записать семиразрядное число. Например:
0 00011010 - положительное число
1 00011010 – отрицательное число
Количество
значений, которые можно поместить
в семиразрядной ячейке со
знаком в дополнительном
При этом в вычислительной технике прямой код используется почти исключительно для представления положительных чисел.
Для отрицательных чисел используется так называемый дополнительный код. Это связано с удобством выполнения операций над числами электронными устройствами компьютера.
Прямой код числа «5»: 0 000 0101
Прямой код числа «7»: 0 000 0111
Два исходных числа сравниваются. В разряд знака результата записывается знак большего исходного числа.
Если числа имеют разные знаки, то вместо операции сложения используется операция вычитания из большего по модулю значения меньшего. При этом первый (знаковый) разряд в операции не участвует.
000 0111
000 0101
-------------
000 1100
После выполнения операции учитывается первый разряд. Результат операции 0 000 1100, («12» в десятеричной системе).
В дополнительном коде, также как и прямом, первый разряд отводится для представления знака числа. Прямой код используется для представления положительных чисел, а дополнительный – для представления отрицательных. Поэтому, если в первом разряде находится 1, то мы имеем дело с дополнительным кодом и с отрицательным числом.
Все остальные
разряды числа в
1 1110011 + 1 = 1 1110100
В итоге получается число, которое принято называть дополнительным кодом числа.
Причина, по которой используется дополнительный код числа для представления отрицательных чисел, связана с тем, что так проще выполнять математические операции. Например, имеется два числа, представленных в прямом коде. Одно число положительное, другое – отрицательное и эти числа нужно сложить. Однако просто сложить их нельзя. Сначала компьютер должен определить, что это за числа. Выяснив, что одно число отрицательное, ему следует заменить операцию сложения операцией вычитания. Потом, машина должна определить, какое число больше по модулю, чтобы выяснить знак результата и определиться с тем, что из чего вычитать. В итоге, получается сложный алгоритм. Эффективнее складывать числа, если отрицательные преобразованы в дополнительный код.
Прямой код числа «5»: 0 000 0101
Прямой код числа «-7»: 1 000 0111
Формирование дополнительного кода числа «-7».
Прямой код: 1 000 0111
Инверсия (обратный код): 1 111 1000
Добавление единицы (дополнительный код): 1 111 1001
Операция сложения:
0 000 0101
+ 1 111 1001
--------------
1 111 1110
Проверка результата путем преобразования к прямому коду.
Дополнительный код: 1 111 1110
Вычитание единицы: 1 111 1101
Инверсия: 1 000 0010 («-2» в десятеричной системе).
3 Сложение и вычитание чисел с плавающей запятой
Спецификой представления числа с плавающей запятой является разделение его на две компоненты: ax – порядок числа;fx – мантисса, значащая часть (представляется в дробном виде).
Пример: 55,71 = 5,571*10-1, где 5,571 – мантисса, 10-1 – порядок.
При кодировании отрицательного числа знак «–» кодируется единицей, которая ставится непосредственно перед числом, знак «+» – нулем. При использовании формата с плавающей точкой пользуются понятием нормализованного представления чисел. Нормализованным числом называется число, мантисса которого удовлетворяет следующим неравенствам:
Пример:
0,0056 = 0,56*10-2;
0,001 = 0,1*10-2
Основное достоинство использования арифметики с плавающей запятой заключается в увеличении диапазона представления чисел при одной и той же разрядности сетки, что позволяет снизить влияние погрешностей на конечный результат. Однако такой метод имеет и свой недостаток: замедление выполнения операций сложения, связанное с процессом выравнивания порядков слагаемых чисел.
4 Логический тип данных
Логический тип данных используется в алгоритмах, применяется для логических операций.
Логические функции ИЛИ-НЕ и И-НЕ образуются как отрицание функций ИЛИ и И.
Для синтеза полного сумматора необходимо объединить два полусумматора: при сложении многоразрядных двоичных чисел полусумматор справляется только с самыми младшими разрядами. Во всех остальных случаях приходится складывать не два, а три бита, поскольку добавляется перенос из ближайшего низшего разряда.
Рисунок 2 – RS-триггер на ЛЭ «ИЛИ-НЕ»
Для анализа и синтеза элементов и устройств ЭВМ широкое применение нашла булева алгебра, названная в честь английского математика Джорджа Буля. Теоретико-множественный вид данной алгебры выглядит следующим образом:
K=<B,
где B = {0, 1} – исходное числовое множество с допустимыми операциями , , ¬ (логические сложение, умножение и отрицание).
Булева алгебра построена на следующих аксиомах:
x y=z2 B.
(x
На основании вышеприведенных аксиом выводятся свойства булевой алгебры, например, коммутативность, ассоциативность, идемпотентность и другие.
Логическая функция – это логическое выражение, составленное из Булевых логических переменных. Пример логической функции:
f(x1,x2,x3)= (x1
Кроме способа задания булевых функций в форме логического выражения существует также табличный способ, в виде таблицы истинности.
Таблица 3 – Таблица истинности логической функции f(x1,x2,x3)
x1 |
x2 |
x3 |
x1 |
¬x3 |
(x1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
С помощью таблицы истинности булеву функцию можно записать в двух эквивалентных формах:
совершенная дизъюнктивная нормальная форма (СДНФ) – дизъюнкция элементарных логических произведений всех переменных, взятых с учетом отрицаний, на которых функция принимает значение «1»:
Совершенная конъюнктивная нормальная форма (СКНФ) – конъюнкция элементарных дизъюнкций всех переменных, дающих «0»:
5 Текстовый тип данных
Применяется для хранения любой символьной информации. Большое применение нашел в сети Интернет, где распространение получила одна из его разновидностей – гипертекст. С помощью языков разметки гипертекста (XML, HTML, PHP и пр.) информация предоставляется удаленному пользователю в удобном виде.
Часто текстовые данные понимаются в более узком смысле — как текст на каких-либо языках (формальных или естественных), который может быть прочитан и понят человеком.
Текстовому формату противопоставляются «двоичные данные», информация в которых закодирована произвольным образом, не рассчитанном на восприятие человеком.
Для большей части компьютерного оборудования и программ неважно, являются ли данные текстовыми. Однако многие сетевые протоколы рассчитаны на работу только с текстовыми данными и не могут обрабатывать произвольную последовательность байтов. Также, некоторые программы обрабатывают текстовые и двоичные данные по-разному, а некоторые предназначены для обработки именно текстовых данных. Программы для создания и редактирования текстовых данных называются текстовыми редакторами.
Основная цель применения текстовых данных —независимость от отдельных программ, требующих собственного кодирования или форматирования и несовместимых с другими программами. Текстовые файлы (файлы в текстовом формате) могут быть открыты, прочитаны и отредактированы в любых текстовых редакторах,
Текстовый формат часто используются для представления данных, которые сами не являются чисто текстовыми. В этом случае другие форматы данных «надстраиваются» над простым текстом, для чего их управляющие конструкции выражаются посредством печатных слов и знаков препинания.
В большинстве языков программирования предполагается использование текстового формата для исходного кода программ. Помимо прочего, это позволяет применять к исходным кодам разнообразные утилиты для преобразований, оформления, поиска, статистики, анализа и т. п.
В качестве примера ниже приводится часть исходного кода программы, переведенного в шестнадцатеричный вид.
Рисунок 3 –часть исходного кода программы, в шестнадцатеричном виде
6Методика выполнения работы
При написании программы для тестирования арифметико-логического блока процессора я использовал язык высокого уровня С#.
Интерфейс программы представляет собойвывод данных программы на экран для ведения диалога с пользователем. Здесь добавить блок-схему программы (диалог с пользователем, возможные ветви – в общем виде) Пользователю предлагается ввести два десятичных числа для выполнения операции двоичного сложения, вычитания, умножения. Результат представляется пользователю для его удобства в шестнадцатеричном виде. Операции с логическим типом данных выполняются после ввода пользователем значений двух операндов (“true” или “false”). На экран выводятся результаты трех базовых логических операций («И», «ИЛИ», «НЕ»). Блок операций с текстовым типом данных включает в себя: перевод введенного текста в шестнадцатеричный вид, поиск указанного слова во введенном ранее тексте.