Бройдо В.Л. Вычислительные системы, сети и телекоммуникации (2002) (1186248), страница 63
Текст из файла (страница 63)
дл операторы снабжаются индексами и между ними указываются необходимые переходы, а сами индексированные операторы описываются чаще всего в табличной форме; гз графическое отображение алгоритмов в виде блох-схем — самый распространенный способ. Графические символы, отображающие выполняемые процедуры, стандартизованы. Наряду с основными символами используются и вспомогательные, поясняющие процедуры и связи между ними; а алгоритмы могут быть записаны и в виде команд какого-либо языка программирования. Если это макрокоманды, то алгоритм читаем и пользователем-программистом, и вычислительной мащиной, имеющей транслятор с соответству- ющего языка, Языки, представляющие алгоритмы в виде последовательности читаемых и рограм- мистом (не двоично-кодированных) команд, называются алгоритмическими язы- ками.
Алгоритмические языки подразделяются на машинно-ориентированные, процедурно-ориентированные и проблемно-ориснтированные. Машинно-ориеятированные языки относятся к языкам програкгмирования низко- го уровня — программирование на них наиболее трудоемко, но позволяет созда- ватьоптимальпые программы, максимально учитывающие функционально-струк- турные особенности конкретного компьютера.
Программы на этих языках, при прочих равных условиях, будут более короткими и быстрыми. Кроме того, знание основ программирования на машинно-ориентированном языке позволяет специа- листу подробнейшим образом разобраться с архитектурой компьютера. Именно последнее в болыпей степени и обусловливает целесообразность ознакомления с машинно-ориентированным языком, каковым и является язык ассемблер, при изу- чении вычислительных систем. Большинство команд машинно-ориентированных языков при трансляции (переводе) на машинный (двоичный) язык генерируют одну машинную команду.
270 Глава 9. П ограммное управление — основа автоматизации Процедурно-ориентированные и проблемно-ориентированные языки относятся кязыкам высокого уровня, использующим макрокоманды. Макрокоманда при трансляции генерирует много машинных команд: для процедурно-ориентированной макрокоманды это соотношение в среднем «один к десяткам машинных команд», а для проблемно-ориентированной команды это «однн к сотням машинных команд». Процедурно-ориентированные языки программирования — самые используемые (Ваз(с, Рааса!, С++, РЕ, АЕСОЕ, СОВОЕ и еще десятки популярных языков). Прп их использовании программист должен описывать всю процедуру решения задачи, тогда как проблемно-ориентированные языки (пх называют также непроцедурными) позволякп лишь формально идентифицировать проблему и указать состав, структуры представления и форматы входной и выходной информапни для задачи.
В настоящее время эти языки разрабатываются слабо, пбо они, по существу, переродились в пакеты прикладных программ. Все языки программирования, и языки машннно-ориентированные, и языки высокого уровня, для их восприятия компьютером требуют наличия программ перевода — трансляторов на машинный язык. 'Трансляторы бывают двух типов: трансляторы-компиляторы и трансллторыинтерпретаторы. Компиляторы при трансляции переводят па машинный язык сразу всю программу и затем хранят ее в памяти машины в двоп шых кодах, Интерпретаторы каждый раз при исполнении программы заново переводя~ в машинные коды каждую макрокоманду и передают ее для непосредственного выполнения компьютеру.
В памяти интерпретируемые программы хранятся в виде исходных макрокоманд и поэтому в любой момент читаемы человеком. Откомпилированные двоично-кодированные программы практически человеком не читаемы. Но их можно вызвать в специальную программу-отладчик(г)ЕВ()Он его разновидности), который переведет этн программы на язык ассемблер, то есть сделает их «человекочитаемыми» (еше один довод в пользу изучения языка ассемблер).
Итак, алгоритм непосредственно воспринимается и исполняется компьютером, если он представлен в двоичном коде на машинном языке. Алгоритм решения задачи, заданный в виде последовательности команд на языке вычислительной машины (в кодах машины), называется машинной программой. Команда машинной программы (иначе, машинная команда) — это элементарная инструкция машине, выполняемая ею автоматически без каких-либо дополнительных указаний и пояснений. Машинная команда состоит из двух частей: операционной и адресной. Операционная часть команды (КОП вЂ” код операции) — это группа разрядов в команде, предназначенная для представления кода операции машины. Адресная часть команды (адреса) — это группа разрядов в команде, в которых записываются коды адреса (адресов) ячеек памяти машины, предназначенных для 271 Состав машинных команд оперативного хранения информации, или иных объектов, задействованных при выполнении команды.
Часто эти адреса называются адресами операндов, то есть чисел, участвующих в операции. По количеству адресов (а1, а2, аЗ, ...), записываемых в команле, команды делятся на безадресные, одно-, двух- и трехадресные. и Типовая структура трехадресной команды; коп а1 аг аз а1 и а2 — адреса ячеек (регистров), тле расположены соответственно первое и второе числа, участвующие в операции, аЗ вЂ” адрес ячейки (регпстра), куда следует поместить число, полученное в результате выполнения операции.
С Типовая структура двухадресной команды: а1 — это обычно адрес ячейки (регистра), где храшзтся первое из чисел, участвующих в операции, и куда после завергнения операции должен быть записан результат операции; а2 — обычно адрес ячейки (регистра), где хранится второе участвующее в операции число. С Типовая структура одноадресной команды: а1 в зависимости от модификации команды может обозначать либо адрес ячейки (регистра), гле хранится одно из чисел, участвующих в операции, либо адрес ячейки (регистра ), куда следует поместить число — результат операции. Безадресная команда солержит только кол операции, а информация для нее должнабыть заранее помещена в определенные регистры мацшны (безадресные команды могут использоваться только совместно с командами другой адресности).
Наибольшее применение в ПК нашли двухадресные команды. Пример лвухадресной команды, записанной на языке символического копирования: Эту команду следует расшифровать так: сложить число, записанное в ячейке 0103 памяти, с числом, записанным в ячейке 5102, а затем результат (то есть сумму) поместить в ячейку 0103.
В кодах машины любая команда содержит только двоичные цифры записанных обьектов. Состав машинных команд Современные компьютеры автоматически выполняют несколько сотен различных команл. Например, стандартный набор современных ПК содержит более 240 ма- шинных команд. гтг Глава 9. П ог аммноеуп авление — основа автоматизации Все машинные команлы можно разделить на группы по видам выполняемых операций: П операции пересылки информации внутри компьютера; О арифметические операции над информацией; гэ логические операции над информацией; гэ операции пад строками (текстовой информацией)„.
гз операции обрашения к внешним устройствам компьютера; гз операции перелачи управления; д обслуживающие и вспомогательные операции. Пояснения требуют операции передачи управления (или, иначе, — ветвления программы), которые служат для изменения естественного порядка выполнения команд. Существуют операции безусловной перелачи управления и операции условной передачи управления. Операции безусловной передачи улравленил всегда обусловливают выполнение после ланной команды не следующей по порядку, а той, адрес которой в янном или неявном виде указан в адресной части команды. Операции условной передачи управления вызывают тоже передачу управления по алрссу, указанному в адресной части команлы, но только в том случае, если выполняется некоторое заранее оговорешюе для этой команды условие.
Это условие в явном или неявном виде указано в коде операции команды. Команд условной передачи управления насчитывается обычно до нескольких десятков — по числу используемых условий. Команд безусловных передач управления обычно только три: гэ команда передачи управления, которая просто передает управление по заданному адресу и больше никаких действий не выполняет; П команда передачи управления (се часто называют командой вызова процедуры или подпрограммы), которая кроме передачи управления процедуре еше и запоминает в специальной стековой памяти адрес следуюшей команды (адрес возврата из процедуры); гз безадресная команда передачи управления (команда возврата из процедуры), возврашаюшая управление по запомненному адресу возврата.
Вторая и третья из названных команд безусловных передач управления работают «на пару» — одна передает управление процедуре, другая возвращает из нее. Важную роль в выполнении этих команд передачи управления (да и при многих других ситуациях, отрабатываемых компьютером) играет специальным образом организованная область оперативной памяти — стековия память. Обрашение к ячейкам этой памяти выполняется по принципу «последний записанный операнд первым считывается» или, иначе, «первым вошел — послелним вышел» (г П.Π— Вгзт шрпй 1азг оптрпг).