Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комплект Информатика / Курс лекций.doc
Скачиваний:
128
Добавлен:
22.05.2015
Размер:
4.8 Mб
Скачать

Контрольные вопросы

1. Что включает понятие «архитектура ЭВМ»?

2. Назовите основные принципы «фон-неймановской архитектуры»

3. Какие существуют другие архитектуры ЭВМ?

4. Укажите достоинства и недостатки известных архитектур.

5. Каким образом можно повысить производительность ЭВМ

Лекция № 8 Машинный язык

Цель лекции

Изучить историю развития и основные понятия машинного языка.

План лекции

1. Машинный язык.

2. Пример машинного языка.

1 Машинный язык

Для того чтобы можно было применять принцип хранимой программы, центральный процессор должен уметь распознавать инструкции, представленные в двоичном коде. Этот набор указаний вместе с системой кодирования называется машинным языком (machine language). Инструкции, написанные на этом языке, называются машинными командами (machine instruction).

Система команд. Список команд, которые должен уметь декодировать и выполнять центральный процессор, очень короткий. На самом деле одна из замечательных сторон вычислительной техники состоит в том, что если машина может выполнять определенные простые, но тщательно подобранные задания, то добавление каких-либо еще возможностей не обязательно улучшит базовые характеристики машины. Другими словами, дополнительные возможности могут сделать машину более удобной в использовании, но они ничего не добавят к основным способностям машины.

Различают два подхода к тому, каким должен быть центральный процессор. При первом подходе считается, что центральный процессор должен выполнять минимальный набор машинных команд. Результатом такого подхода является вычислительная машина с сокращенным набором команд (Reduced Instruction Set Computer — RISC-машина). В защиту RISC-процессора приводится аргумент, что такой процессор является эффективным и быстродействующим. В то же время, есть сторонники центрального процессора, способного выполнять большое количество сложных команд, даже если многие из них избыточны. Результатом этого подхода является вычислительная машина со сложным набором команд (Complex Instruction Set Computer — CISC-машина). В защиту CISC-архитектуры приводят аргумент, что более сложный процессор легче программировать, так как можно обойтись одной командой для выполнения задачи, которая в RISC-процессоре потребовала бы длинной последовательности команд.

И CISC-процессоры, и RISC-процессоры выпускаются серийно. Процессор Pentium, разработанный компанией Intel, является примером CISC-архитектуры; процессор PowerPC, разработанный альянсом Apple Computer, IBM и Motorola, является примером RISC-архитектуры. Для простоты изложения в этой главе мы будем рассматривать RISC-процессор.

Все машинные команды можно разделить на три группы:

♦ команды передачи данных,

♦ арифметико-логические команды,

♦ команды управления.

Команды передачи данных. В эту группу входят команды, которые предписывают перемещение данных из одного места в другое.

Сложение двух чисел, хранящихся в оперативной памяти

Шаг 1. Взять значений из ячейки памяти и поместить его в регистр.

Шаг 2. Взять значение из другой ячейки памяти и поместить его в другой регистр.

Шаг 3. Активировать схему сложения, на входе которой будут данные из регистров, описанных в шагах 1 и 2 и задав еще один регистр в качестве выходного, предназначенного для размещения результата.

Шаг 4. Сохранить результат операции в основной памяти.

Шаг 5. Стоп.

Шаги 1, 2 и 4 алгоритма сложения значений, хранящихся в оперативной памяти относятся к командам передачи данных. Как и в случае оперативной памяти, данные при перемещении из одной ячейки в другую не удаляются из исходной ячейки. Процесс передачи данных больше похож на копирование данных, а не на их перемещение. В этом смысле общепринятые термины «передавать» (transfer) и «перемещать» (move) употребляются неправильно, поскольку термины «копировать» (сору) и «клонировать» (clone) являются более строгими.

Говоря о терминологии, следует упомянуть, что для передачи данных между центральным процессором и оперативной памятью существуют специальные термины. Требование заполнить регистр общего назначения содержимым ячейки памяти обычно называется командой загрузки, и наоборот, требование переместить содержимое регистра в ячейку памяти называется командой сохранения. Шаги 1 и 2 являются командами загрузки, а шаг 4 — командой сохранения.

Важная группа команд, входящая в команды передачи данных, включает в себя инструкции для связи с внешними устройствами центрального процессора (принтерами, клавиатурой, монитором, дисководами и т. д.). Так как с помощью этих команд осуществляются процессы ввода-вывода из него, они называются командами ввода-вывода. Их иногда выделяют в отдельный класс, но мы ранее рассмотрели, как процесс ввода-вывода может быть осуществлен с помощью тех же команд, которые производят передачу данных между центральным процессором и оперативной памятью. Поэтому мы будем рассматривать команды ввода-вывода как часть команд передачи данных.

Арифметико-логические команды. В эту группу входят команды, которые предписывают устройству управления активизировать арифметико-логическое устройство. К этой категории команд относится шаг 3. Как можно понять из его названия, арифметико-логическое устройство выполняет не только простые арифметические операции. К некоторым дополнительным операциям относятся логические операции AND, OR и XOR, которые мы обсуждали ранее и вскоре вновь будем их рассматривать, но уже более подробно. Эти операции часто используются для того, чтобы манипулировать отдельными битами регистра, не затрагивая остальных. Другие операции, доступные в большинстве арифметико-логических устройств, позволяют сдвигать содержимое регистра вправо или влево. Они называются операциями сдвига (SHIFT) или вращения (циклического сдвига) (ROTATE) в зависимости от того, удаляются ли биты, находящиеся на конце регистра, в направлении которого происходит сдвиг, или используются для заполнения пространства на другом его конце.

Команды управления. В эту группу входят команды, которые управляют выполнением программы, а не манипулируют данными. К этой категории команд относится шаг 5, хотя он и является слишком простым примером. Эта группа включает наиболее интересные машинные команды, такие как команды перехода (JUMP) или ветвления (BRANCH), которые предписывают устройству управления выполнять не следующую инструкцию, а какую-нибудь другую. Команды перехода разделяются на команды безусловного и условного перехода. Примером первых может быть инструкция «перейти к шагу 5», примером второй — «если полученное значение равно 0, тогда перейти к шагу 5». Различие заключается в том, что условный переход осуществляется только тогда, когда выполняется условие. Рассмотрим в качестве примера алгоритм деления двух чисел, в котором шаг 3 является условным переходом, исключающим возможность деления на ноль. Деление двух значений, хранящихся в памяти

Шаг 1. Загрузить в регистр значение из памяти.

Шаг 2. Загрузить в другой регистр другое значение из памяти.

Шаг 3. Если второе значение равно нулю, перейти к шагу 6.

Шаг 4. Разделить содержание первого регистра на содержание второго регистра и поместить результат в третий регистр.

Шаг 5. Сохранить содержание третьего регистра в памяти.

Шаг 6. Стоп.