Компьютер как исполнитель алгоритмов.

 

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

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

Программы составляются программистами по алгоритмам для решения определенных задач. Человек не должен объяснять исполнителю свои цели и смысл команд программы. Очевидно, что компьютер и не сможет понять смысла совершаемых им действий. Кроме того, компьютер не обладает способностью к анализу результатов, например, с точки зрения их соответствия постановке задачи. Компьютер не может обойтись без программы и исходных данных, подготовить которые под силу только человеку. С этой точки зрения решение задачи компьютером — это формальное исполнение алгоритма ее решения, закодированного и хранимого вместе с данными в оперативной памяти.

Для человека этот факт важен потому, что он должен понимать ограниченность возможностей компьютера как исполнителя, необходимость самому предусмотреть все тонкости команд, поручаемых компьютеру для исполнения, и что вся ответственность за использование компьютеров обществом лежит только на людях.

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

Коды ассемблера, языки высокого уровня.

Компьютер (ЭВМ) — это универсальное (многофункциональное) электронное программно-управляемое устройство для хранения, обработки и передачи информации.

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

Программа управления компьютером — это последовательность команд языка машинных команд.

Каждая команда является директивой для процессора на выполнение определенного действия. Эти действия выполняет либо сам процессор (арифметические и логические операции), либо внешние устройства (команды ввода, вывода) под управлением процессора.

Согласно принципам Дж. фон Неймана, программа во время ее исполнения и обрабатываемые ею данные находятся в оперативной памяти ЭВМ (принцип хранимой в памяти программы). И то и другое имеет вид двоичных кодов. Процессор исполняет программу, начиная с первой команды и заканчивая на последней (или на специальной команде «стоп»). Во время исполнения очередной команды процессор переписывает ее в свои регистры, исполняет и переходит к следующей команде.

Программисты, работавшие на ЭВМ первого поколения (ламповые машины 50—60 х гг.), писали программы на ЯМК (Языки машинных команд). Это довольно сложная работа. Для облегчения программирования созданы языка программирования высокого уровня.

Примерами таких языков являются Фортран, Паскаль, Бейсик, Си и др. Составлены программ на таких языках много проще, чем на ЯМК. Программирование стало доступно большему числу людей.

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

Коды ассемблера

Языки программирования принято делить на пять поколений.В первое поколение входят языки, созданные в начале 50-х годов, когда первые компьютеры только появились на свет. Это был первый язык ассемблера, созданный по принципу “одна инструкция – одна строка”.

Расцвет второго поколения языков программирования пришёлся на конец 50-х –начало 60-х. Тогда был разработан символический ассемблер, в котором появилось понятие переменной. Он стал первым полноценным языком программирования. Благодаря его возникновению заметно возросли скорость разработки и надёжность программ.

Написание ассемблерных программ знаний организации всей системы компьютера. В основе компьютера лежат понятия бита и байта. Они являются тем средством, благодаря которым компьютерной памяти представлены данные и команды.

Программа в машинном коде состоит из различных сегментов для определения данных, для машинных команд и для сегмента, названного стеком, для хранения адресов. Для выполнения арифметических действий, пересылки данных и адресации компьютер имеет ряд регистров.

ПРИМЕР МАШИННЫХ КОДОВ: НЕПОСРЕДСТВЕННЫЕ ДАННЫЕ

Цель данного примера - проиллюстрировать простую программу на машинном языке, ее представление в памяти и результаты ее выполнения.

Программа показана в шестнадцатиричном формате:

Команда Назначение

B82301 Переслать шест. значение 0123 в AX.

052500 Прибавить шест. значение 0025 к AX.

8BD8 Переслать содержимое AX в BX.

03D8 Прибавить содержимое AX к BX.

8BCB Переслать содержимое BX в CX.

2BC8 Вычесть содержимое AX из AX (очистка AX).

90 Нет операции.

Можно заметить, что машинные команды имеют различную длину: один, два или три байта. Машинные команды находятся в памяти непосредственно друг за другом.Выполнение программы начинается с первой команды и далее последовательно выполняются остальные.