
- •Министерство образования и науки Российской Федерации
- •Цель лекции
- •План лекции
- •1 Происхождение вычислительных машин
- •2 Изучение алгоритмов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Биты и их хранение
- •2 Оперативная память
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Устройства внешней памяти
- •3 Хранение и поиск файлов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление числовых значений
- •2 Хранение целых чисел
- •3 Хранение дробей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление текста
- •2 Представление изображений
- •Достоинства пиксельной графики
- •Недостатки пиксельной графики
- •Достоинства векторной графики
- •Недостатки векторной графики
- •3 Представление звука
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Сжатие изображений
- •2 Ошибки передачи данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Архитектура эвм
- •2 Связь процессора с другими устройствами
- •3 Другие архитектуры
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Машинный язык
- •2 Пример машинного языка
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Выполнение программы
- •2 Пример выполнения программы
- •3 Программы и данные
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Логические операции
- •2 Операции сдвига
- •3 Арифметические операции
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция операционных систем
- •2 Архитектура операционных систем
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие процесса
- •2 Управление процессами
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Классификация сетей
- •2 Сетевые протоколы*
- •3 Безопасность сетей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие алгоритма
- •2 Представление алгоритма
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Теория решения задач
- •2 Общие методы решения задач
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритм последовательного поиска
- •2 Управление циклами
- •3 Алгоритм сортировки методом вставки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритмы поиска и сортировки
- •2 Управление рекурсией
- •3 Разработка рекурсивных процедур
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эффективность алгоритмов
- •2 Верификация программ
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция и классификация языков программирования
- •2 Концепции традиционного программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Процедурные единицы
- •2 Реализация языка программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Объектно-ориентированное программирование
- •2 Декларативное программирование
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структуры данных
- •Integer Scores (2.9).
- •2 Статические и динамические структуры
- •3 Указатели
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Массивы
- •2 Списки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структура и функции стека
- •2 Реализация стека
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Очереди
- •2 Деревья
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Пользовательские типы данных
- •Int Age;
- •2 Классы
- •Int *StackEntries;
- •3 Стандартная библиотека шаблонов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Роль операционной системы
- •2 Последовательные файлы
- •3 Вопросы программирования
- •0000000010000110
- •001100010011001100110100
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения индексации
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения хеширования
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Общие вопросы
- •2 Система управления базой данных
- •3 Поддержка целостности баз данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Модели баз данных
- •2 Реляционная модель баз данных
- •3 Объектно-ориентированные базы данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Интеллект и машины
- •2 Распознавание образов
- •3 Мышление
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Искусственные нейронные сети
- •2 Генетические алгоритмы
- •Контрольные вопросы
- •Невычислимые функции Цель лекции
- •План лекции
- •1 Основы машины Тьюринга
- •2 Невычислимая функция
- •3 Сложность задач
- •Листинг 1. Процедура MergeLists для объединения двух упорядоченных списков
- •Листинг 2. Алгоритм сортировки слиянием, реализованный в процедуре MergeSort
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Шифрование с открытым ключом
- •2 Модульная арифметика
- •Контрольные вопросы
- •Литература
- •Internet-ресурсы
2 Пример машинного языка
Рассмотрим, как закодированы команды гипотетической машины, представленной на рис. 1.
Рисунок 1 – Архитектура гипотетической машины
Архитектура машины. Гипотетическая машина имеет 16 регистров общего назначения. Длина каждого регистра равна одному байту (восьми битам). Память рассматриваемой машины состоит из 256 ячеек, каждая емкостью восемь битов. Мы маркировали регистры значениями от 0 до 15, а ячейкам памяти присвоили адреса со значениями от 0 до 255. Затем мы представили эти метки и адреса в двоичной системе счисления и сжали получившийся код при помощи шестнадцатеричного представления. Следовательно, в нашей машине регистры маркированы значениями от 0 до F, а адреса ячеек памяти имеют значения от 00 до FF.
Предполагается, что числа с плавающей запятой хранятся в следующем формате:
Рисунок 2 – Формат хранения чисел с плавающей запятой
Машинный язык. Длина каждой машинной команды равна двум байтам. Первые четыре бита содержат код операции, последние 12 битов образуют поле операндов. В приведенной ниже таблице перечислены и кратко описаны команды, показанные в шестнадцатеричном представлении. Буквы R, S и Т используются для указания в поле операндов позиции шестнадцатеричных цифр, являющихся идентификаторами регистров, которые меняются в зависимости от конкретной команды. Буквы X и Y используются для указания в поле операндов позиций тех шестнадцатеричных цифр, которые не являются идентификаторами регистров.
Закодированная машинная команда состоит обычно из двух частей: поля кода операции (op-code field) и поля операнда (operand field). Набор битов, расположенный в поле кода операции, обозначает, какая из элементарных операций, таких как операции сохранения, сдвига, XOR или перехода, запрашивается командой. Набор битов, находящийся в поле операнда, содержит подробные сведения об объектах, участвующих в операции, определенной кодом операции. Например, в случае команды сохранения в поле операнда содержится информация о том, в каком регистре находятся данные, которые нужно сохранить, и какая ячейка памяти должна получить эти данные.
Весь язык нашей машины (приложение В) состоит из 12 основных команд, каждая из которых представлена 16-битовым кодом, записанным четырьмя шестнадцатеричными цифрами (рис. 3).
Рисунок 3 – Структура машинной команды
Код операции каждой команды состоит из первых четырех битов или, что то же самое, из первой шестнадцатеричной цифры. Обратите внимание (см. приложение В) на то, что коды операций представлены шестнадцатеричными цифрами от 1 до С. В частности, как можно увидеть в таблице приложения, команда, начинающаяся с цифры 3, является командой сохранения, команда, начинающаяся с шестнадцатеричной цифры А, является командой циклического сдвига.
Поле операнда каждой команды в нашей машине состоит из трех шестнадцатеричных цифр (12 битов) и в каждом случае (кроме команды останова, которая не нуждается в дальнейшем уточнении) поясняет команду, представленную кодом операции. Например (рис. 4), если первая шестнадцатеричная цифра команды — 3 (код операции сохранения), то следующая за ней цифра обозначает, данные из какого регистр нужно сохранить, а две другие, — какая ячейка памяти должна получить эти данные. Следовательно, команда 35А7 содержит следующие инструкции: «сохранить двоичный код, находящийся в регистре 5, в ячейке памяти с адресом А7».
Рисунок 4 – Декодирование команды 35А7
Рассмотрим другой пример. Код операции 7 говорит о том, что нужно выполнить операцию OR над двумя регистрами (мы позже рассмотрим, что означает операция OR над двумя регистрами, сейчас нас просто интересует, как закодированы команды). В этом случае следующая шестнадцатеричная цифра указывает, куда нужно поместить результат, а остальные две цифры в поле операнда означают, над какими двумя регистрами нужно выполнить операцию OR. Значит, команда 70С5 содержит такие инструкции: «выполнить операцию ИЛИ над содержанием регистра С и регистра 5 и сохранить результат в регистре 0».
Существует тонкое различие между двумя командами загрузки. Код операции 1 относится к команде, которая загружает в регистр содержимое ячейки памяти, а код операции 2 относится к команде, загружающей в регистр некоторое значение. Различие состоит в том, что поле операнда первой команды содержит адрес ячейки памяти, в то время как поле операнда второй команды содержит двоичный код, который нужно загрузить.
Обратите внимание на то, что в машине находятся две команды сложения: одна для сложения чисел в двоичном дополнительном коде, а вторая для сложения чисел в представлении с плавающей точкой. Это различие является следствием того, что сложение чисел в двоичном дополнительном коде и с плавающей точкой требуют различных действий арифметико-логического устройства.
В завершение приведeм закодированную последовательность команд программы сложения двух чисел (см. табл. 1). При этом мы предполагаем, что складываемые значения хранятся в виде двоичного дополнительного кода в ячейках памяти с адресами 6С и 6D, а сумму следует поместить в ячейку с адресом 6Е.
Таблица 1 – Расшифровка последовательности команд
№ шага |
Содержание операции |
Команда |
Шаг 1 |
Взять значение из ячейки памяти и поместить его в регистр |
156C |
Шаг 2 |
Взять другое значение из другой ячейки памяти и поместить его в другой регистр |
166D |
Шаг 3 |
Активировать схему сложения, на входе которой будут данные из регистров, описанных в шагах 1 и 2 и задав еще один регистр в качестве выходного, предназначенного для размещения результата |
5056 |
Шаг 4 |
Сохранить результат операции в основной памяти |
306E |
Шаг 5 |
Стоп |
C000 |