Самостоятельная работа
· Составление классификационной таблицы программных средств информационных технологий с примерами программных продуктов;
Тема 2.2 Программное управление ПК
Решение задач на компьютере реализуется программным способом, то есть путем выполнения последовательно во времени отдельных операций над информацией, предусмотренных алгоритмом решения задачи.
Алгоритм — это точно определенная последовательность действий, которые необходимо выполнить над исходной информацией, чтобы получить решение задачи.
Языки, представляющие алгоритмы в виде последовательности читаемых программистом (не двоично-кодированных) команд, называются алгоритмическими языками. Алгоритмические языки подразделяются на машинно-ориентированные, процедурно-ориентированные и проблемно-ориентированные. Машинно-ориентированные языки относятся к языкам программирования низкого уровня — программирование на них наиболее трудоемко, но позволяет создавать оптимальные программы, максимально учитывающие функционально-структурные особенности конкретного компьютера. Программы на этих языках, при прочих равных условиях, будут более короткими и быстрыми. Кроме того, знание основ программирования на машинно-ориентированном языке позволяет специалисту подробнейшим образом разобраться с архитектурой компьютера. Именно последнее в большей степени и обусловливает целесообразность ознакомления с машинно-ориентированным языком, каковым и является язык ассемблер, при изучении вычислительных систем. Большинство команд машинно-ориентированных языков при трансляции (переводе) на машинный (двоичный) язык генерируют одну машинную команду.
|
|
Процедурно-ориентированные и проблемно-ориентированные языки относятся к языкам высокого уровня, использующим макрокоманды. Макрокоманда при трансляции генерирует много машинных команд: для процедурно-ориентированной макрокоманды это соотношение в среднем «один к десяткам машинных команд», а для проблемно-ориентированной команды это «один к сотням машинных команд». Процедурно-ориентированные языки программирования — самые используемые (Basic, Pascal, C++, PL, ALGOL, COBOL и еще десятки популярных языков). При их использовании программист должен описывать всю процедуру решения задачи, тогда как проблемно-ориентированные языки (их называют также непроцедурными) позволяют лишь формально идентифицировать проблему и указать состав, структуры представления и форматы входной ивыходной информации для задачи.
Все языки программирования, иязыки машинно-ориентированные, иязыки высокого уровня, для их восприятия компьютером требуют наличия программ перевода — трансляторов на машинный язык.
|
|
Трансляторы бывают двух типов: трансляторы-компиляторы и трансляторы-интерпретаторы.
Компиляторы при трансляции переводят на машинный язык сразу всю программу и затем хранят ее в памяти машины в двоичных кодах.
Интерпретаторы каждый раз при исполнении программы заново переводят в машинные коды каждую макрокоманду и передают ее для непосредственного выполнения компьютеру. В памяти интерпретируемые программы хранятся в виде исходных макрокоманд и поэтому в любой момент читаемы человеком.
Откомпилированные двоично-кодированные программы практически человеком не читаемы. Но их можно вызвать в специальную программу-отладчик (DEBUG и его разновидности), который переведет эти программы на язык ассемблер, то есть сделает их «человекочитаемыми» (еще один довод в пользу изучения языка ассемблер).
Итак, алгоритм непосредственно воспринимается и исполняется компьютером, если он представлен в двоичном коде на машинном языке.
Алгоритм решения задачи, заданный в виде последовательности команд на языке вычислительной машины (в кодах машины), называется машинной программой.
Командамашинной программы (иначе, машинная команда) — это элементарная инструкция машине, выполняемая ею автоматически без каких-либо дополнительных указаний и пояснений.
Машинная команда состоит из двух частей: операционной и адресной.
Операционная частькоманды (КОП — код операции) — это группа разрядов в команде, предназначенная для представления кода операции машины.
Адресная частькоманды (адреса) — это группа разрядов в команде, в которых записываются коды адреса(адресов) ячеек памяти машины, предназначенных для оперативного хранения информации, или иных объектов, задействованных при выполнении команды. Часто эти адреса называются адресами операндов, то есть чисел, участвующих в операции.
По количеству адресов (al, a2, аЗ,...), записываемых в команде, команды делятся на безадресные, одно-, двух- и трехадресные.
1 Типовая структура трехадресной команды:
al и а2 — адреса ячеек (регистров), где расположены соответственно первое и второе числа, участвующие в операции, аЗ — адрес ячейки (регистра), куда следует поместить число, полученное в результате выполнения операции.
2 Типовая структура двухадресной команды:
al — это обычно адрес ячейки (регистра), где хранится первое из чисел, участвующих в операции, и куда после завершения операции должен быть записав результат операции; а2 — обычно адрес ячейки (регистра), где хранится второе участвующее в операции число.
3 Типовая структура одноадресной команды:
a1 в зависимости от модификации команды может обозначать либо адрес ячейки (регистра), где хранится одно из чисел, участвующих в операции, либо адрес ячейки (регистра), куда следует поместить число — результат операции.
4 Безадресная командасодержит только код операции, а информация для нее должна быть заранее помещена в определенные регистры машины (безадресные команды могут использоваться только совместно с командами другой адресности).
Наибольшее применение в ПК нашли двухадресныекоманды.
Пример двухадресной команды, записанной на языке символического кодирования:
Эту команду следует расшифровать так: сложить число, записанное в ячейке 0103 памяти, с числом, записанным в ячейке 5102, а затем результат (то есть сумму) поместить в ячейку 0103.
В кодах машины любая команда содержит только двоичные цифры записанных объектов.