Бройдо В.Л., Ильина О.П. Архитектура ЭВМ и систем (2006) (1186249), страница 76
Текст из файла (страница 76)
Состав машинных команд Современные компьютеры автоматически выполняют несколько сотен различных команд. Например, стандартный набор современных! ВМ-совместимых ПК содержит более 240 машинных команд. Все машинные команды можно разделить на группы по видам выполняемых операций: Ы операции пересылки информации внутри компьютера; 13 арифметические операции над информацией; О логические операции над информацией; Ы операции над строками (текстовой информацией); с) операции обращения к внешним устройствам компьютера; О операции передачи управления; (3 обслуживающие и вспомогательные операции. Пояснения требуют операции передачи управления (или иначе — ветвления программы), которые служат для изменения естественного порядка выполнения команд.
Существуют операции безусловной передачи управления и операции условной передачи управления. Операции безусловной передачи управления всегда приводят к выполнению после данной команды не следующей по порядку, а той, адрес которой в явном илн неявном виде указан в адресной части команды. Операции условной передачи управления тоже вызывают передачу управления по адресу, указанному в адресной части команды, но только в том случае, если выполняется некоторое заранее оговоренное для этой команды условие. Это условие в явном или неявном виде указано в коде операции команды.
Команд условной передачи управления насчитывается обычно до нескольких десятков — по числу используемых условий. Команд безусловных передач управления обычно только три: О команда передачи управления, которая просто передает управление по задан- ному адресу и больше никаких действий не выполняет; О команда передачи управления (ее часто называют командой вызова процеду- ры или подпрограммы), которая кроме передачи управления процедуре еше З47 Состав машинных команд и запоминает в специальной стековой памяти адрес следующей команды (адрес возврата из процедуры); й безадресная команда передачи управления (команда возврата из процедуры), возвращающая управление по запомненному адресу возврата.
Вторая и третья из названных команд безусловных передач управления работают «на пару«с одна передает управление процедуре, другая — возвращает из нее. Важную роль в выполнении этих команд передачи управления (да и при многих других ситуациях, отрабатываемых компьютером) играет специальным образом организованная область оперативной памяти — стековая память. Обращение к ячейкам этой памяти выполняется по принципу «последний записанный операнд первым считывается», или иначе «первым вошел — последним вышел» (РН О— Йгзг 1прпг, 1азг оцсрпг). стековая память позволяет удобно реализовать процессы иерархического обращения ко многим процедурам (количество уровней иерархии практически не ограничено), последовательно записывая и выдавая по принципу РН О адреса возврата каждой из них.
Пример программы на ЯСК Рассмотрим в качестве примера трехадресную программу для вычисления квадрата чисел от 1 до 100 и последовательной записи вычисленных значений в ячейки оперативной памяти. Номер команды соответствует адресу ячейки памяти, где эта команда хранится. Назначение команд: СЛ 10, 11, 11 — сложить число, находящееся в ячейке с адресом 10, с числом, находящимся в ячейке с адресом 11, и записать результат (сумму) в ячейку с адресом 11; УИ 11, 11, 101 — умножить число, находящееся в ячейке с адресом 11, на число, находящееся в ячейке с адресом 11, и записать результат (квадрат числа) в ячейку с адресом 101; СЛ К + 2, 12, К + 2 — сложить двоичный код команды, находящийся в ячейке с адресом К + 2, со структурированным кодом, находящимся в ячейке с адресом 12, и записать результат (измененный код команды) в ячейку с адресом К + 2; УПУ«К + 2, 13, К + 1 — условная передача управления: если двоичный код команды, находящийся в ячейке с адресом К + 2, меньше двоичного кода команды, на- 348 Глава 17.
Программное управление — основа автоматизации вычислений ходягцегося в ячейке с адресом 13, выполнять команду К + 1; в противном слу- чае выполнять команду К + 5. Исходные данные к программе (операнды) хранятся в ячейках: С) ячейка 10 — число 1; С) ячейка 11 — изначально число 0; С1 ячейки 12 и 13 — структурированные под код команды двоичные числа: Ячейка коп Адрес 1 Адрес 2 Адрес 3 12 13 201 Что же считает программа? Рассмотрим последовательно выполнение команд.
В программе выполняется много циклов вычислений, К + 2 УК 11, 11, 101 К+3 СЛ К+2, 12, К+2 УМ 11 11 101 + 0 0 0 1 УМ 11 11 102 (записывается в ячейку с адресом К + 2) К+4 УПУ< К+2, 13, К+1 Второй цикл: К + 1 СЛ 10, 11, 11 2 х 2 = 2 записывается в ячейку с адресом 102, К+2УИ11, 11, 102 К+ 3СЛ К+2, 12, К+2 УМ 11 11 102 + 0 0 0 1 УМ 11 11 103 (записывается в ячейку с адресом К + 2) К + 4 УПУ< К + 2, 13, К + 1 Первый цикл: К+1 СЛ 10, 11. 11 1 + 0 - 1 записывается в ячейку с адресом 11 1 х 1 " 1' записывается в ячейку с адресом 101 Поскольку код УМ 11 1! 102 в ячейке К+ 2 меньше кода УМ 11 11 201 в ячейке!3, выпол- няется переход к команде К + 1 и начинается второй цикл 1 + 1 - 2 записывается в ячейку с адресом 11 Поскольку код УМ 11 11 103 в ячейке К + 2 меньше кода УМ 11 11 201 в ячейке 13, выпол- няется переход к команде К + 1 и начинается третий цикл 349 Состав машинных команд Третий цикл: Н + 1 СЛ 10, 11.
11 2 + 1 - 3 записывается в ячейку с адресом 11 3 и 3 - 3 записывается в ячейку с адресом 103, К + 2 УК 11, 11, 102 К+ЗСЛ К+2, 12. К+2 УМ 11 11 103 0 0 0 1 УМ 11 11 104 (записывается в ячейку с адресом К + 2) Поскольку код УМ 11 11 104 в ячейке К + 2 меньше кода УМ 11 11 20! в ячейке 13, выпол- няется переход к команде К + 1 и начинается четвертый цикл Н+4УПУ< К+2, 13.
К+1 И так далее... Сотый цикл: К + 1 СЛ 10, 11, 11 1 + 99 - 100 записывается в ячейку с адресом 11 100 х 100 - 100 записывается в ячейку с адре- сом 200 К + 2 УК 11. 11, 102 К+ЗСЛ К+2, 12. К+2 УМ 1! 11 200 + 0 0 0 1 УМ 11 11 201 (записывается в ячейку с адресом К + 2) К+4УПУ< К+2. 13. К+1 Поскольку код УМ 11 11 201 в ячейке К е 2 не меньше кода УМ 11 11 201 в ячейке 13, вы- полняется следуюшая команда К + 5 (чСтопь) Расчет окончен.
В результате работы программы последовательно рассчитаны квад- раты чисел от 1 до 100, которые записаны в последовательные ячейки памяти— 101-200. Рассмотренная программа иллюстрирует несколько важных особенностей компьютерных программ: С) возможность выполнения операций над командами, то есть возможность автоматической модификации программ (в более сложных вариантах это может означать самонастройку программ, их оптимизацию, возможность компьютера самостоятельно создавать программы, которые могут превзойти программы «рукотворные»; отсюда извечный вопрос: могут ли роботы превзойти своего создателя?); С) возможность многократного повторения выполнения группы команд в цикле; 350 Глава 17.
Программное управление — основа автоматизации вычислений О возможность выполнения одной короткой программой большого объема вычислений (при замене, например, третьего адреса в коде команды, хранимой в ячейке с адресом 13, на 1101 этой программой будут вычислены уже квадра. ты тысячи чисел. Последовательность подготовки и решения задачи на компьютере: 1. Формулировка и формализованная постановка задачи. 2. Выбор математической модели и метода решения задачи. 3.
Разработка алгоритма решения задачи, то есть последовательности процедур, которые необходимо выполнить для решения задачи. 4. Составление программы решения задачи, то есть запись алгоритма решения задачи на языке, понятном машине.
5. Ввод программы в компьютер и ее отладка. 6. Ввод исходных данных и решение задачи на компьютере. 7. Анализ полученных результатов и выводы по результатам решения. Адресация регистров и ячеек памяти в ПК Адресация операндов в командах программы может быть: Ы непосредственной; Ы прямой; О косвенной; С1 ассоциативной; 13 неявной. Непосредслтвенная адресация заключается в указании в команде самого значения операнда, а не его адреса. Прямая адресация состоит в указании в команде непосредственно абсолютного или исполнительного адреса операнда.
Косвенная адресация подразумевает указание в команде регистра(ов) или ячейки памяти, в которых находятся абсолютный, исполнительный адрес операнда или их составляющие. Ассоциативная адресация — указание в команде не адреса, а идентифицирующего содержательного признака операнда, подлежащего выборке (применяется в ассоциативных запоминающих устройствах).