Информатика. Курс лекций. Громов Ю.Ю - 35 стр.

UptoLike

Рис. 2.3. Деление чисел, сохраняемых в основной памяти
Вопросы для самопроверки
1. Как Вы думаете, какая последовательность действий должна быть выполнена машиной для перемещения содержи-
мого одной ячейки основной памяти в другую?
2. Какую информацию должен представить центральный процессор в электронные схемы основной памяти для сохра-
нения числа в одной из ее ячеек?
3. Почему термин "перемещение" следует считать неправильным для обозначения операции перемещения данных из од-
ного места в другое?
4. В тексте команда перехода была записана так, что требуемое место передачи управления явно указывалось в ней с
помощью имени (или номера этапа), например "Перейдите к этапу 6". Недостатком данного способа записи является то, что,
если имя (или номер) адресуемой команды позднее будет изменено, потребуется найти и исправить все команды перехода на
эту команду. Предложите другой способ записи команд перехода, не содержащий явного указания имени адресуемой коман-
ды.
5. Как Вы считаете, команда "Если 0 равен 0, то перейдите к этапу 7" является условным или безусловным переходом? По-
ясните Ваш ответ.
2.2. МАШИННЫЙ ЯЗЫК
Концепция хранимой программы. Ранние модели вычислительных устройств не отличались особой гибкостью, так
как программы их работы встраивались непосредственно в блок управления как неотъемлемая часть данной машины. По-
добную систему можно сравнить с музыкальной шкатулкой, которая всегда играет одну и ту же мелодию. Однако нам необ-
ходимо устройство, которое должно обладать гибкостью, не уступающей возможностям плейера компакт-дисков. Один из
подходов к достижению необходимой гибкости в ранних электронных машинах состоял в том, что блок управления маши-
ной конструировался с учетом возможности его перекоммутации. В этом случае в блок управления входила коммутационная
панель, напоминающая коммутаторы старинных телефонных станций. Концы коммутируемых линий выводились на штеке-
ры, которые требовалось вставлять в соответствующие контактные гнезда.
Значительный шаг вперед (приписываемый, возможно, несправедливо Джону фон Нейману (John von Neuman )) состоял
в осознании того, что программа, как и данные, может быть закодирована и сохранена в основной памяти машины. Если раз-
работать блок управления таким образом, чтобы он был способен извлекать программу из памяти, расшифровывать коман-
ды, а затем выполнять их, то программу работы компьютера можно было бы изменять посредством изменения содержимого
ячеек его основной памяти, вместо того чтобы перекоммутировать схемы блока управления. С тех пор эта концепция храни-
мой программы (stored-program concept) считается стандартным подходом к решению данной проблемы, применяемым и в
настоящее время. Прежде эта идея считалась сложной, поскольку многие относили данные и программы к совершенно раз-
ным категориям. Это как раз тот случай, когда за деревьями не удавалось увидеть леса.
Представление машинных команд в виде битовых комбинаций. Для реализации концепции хранимой программы
центральный процессор разрабатывается так, чтобы распознавать определенные битовые комбинации как представления
конкретных команд. Весь набор выполняемых команд вместе с системой их кодирования называют машинным языком (ma-
chine language), поскольку он представляет собой средство передачи алгоритмов машине.
Кодированное представление машинной команды обычно состоит из двух частей: поля кода операции (op-code field –
сокращение от operation code field) и поля операндов (operand field). Битовая комбинация, помещаемая в поле кода операции,
определяет ту элементарную операцию (например, сохранения, сдвига, XOR или перехода), выполнение которой предусмат-
ривается данной командой. Битовые комбинации в поле операндов предоставляют более детальную информацию о той опе-
рации, которая задана в поле кода операции. Например, в случае команды сохранения информация в поле операндов указы-
вает регистр, в котором содержатся предназначенные для сохранения данные, а также ту ячейку основной памяти, в которую
эти данные должны быть записаны.
Пример машинного языка. Теперь давайте посмотрим, как можно закодировать команды в типичной вычислительной
машине. Машина, которая используется в нашем примере, подробно описана в приложении В и схематично показана на рис.
2.4. Она состоит из 16 регистров общего назначения и 256 ячеек основной памяти, каждая из которых имеет длину восемь
битов. Для целей адресации присвоим регистрам номера от 0 до 15, а адреса ячеек основной памяти установим равными от 0
до 255, исключая те случаи, когда мы будем работать с этими числами, представленными в двоичной системе. В последнем
случае битовые комбинации будем представлять в шестнадцатеричной системе счисления, поэтому регистры общего назна-
чения будут иметь номера от 0 до F, а ячейки памятиадреса от 00 до FF.
Весь язык машины, описанной в приложении В, состоит из 12 команд, каждая из которых представлена 16-битовым ко-
дом, записанным четырьмя шестнадцатеричными цифрами (рис. 2.5). Код операции для
Этап 1. Загрузить в регистр число из основной памяти.
Этап 2. Загрузить в другой регистр еще одно число из основной памяти.
Этап 3. Если второе число равно нулю, перейти к этапу 6.
Этап 4. Разделить содержимое первого регистра на содержимое вто-
рого и записать результат в третий регистр.
Этап 5. Запомнить содержимое третьего регистра в основной памяти.
Этап 6. Завершить выполнение операции.