extracted_text:
Ассемблер как машинноориентированный язык программирования.
Понятие о макропрограммировании.
 Понятие и назначение ассемблера.
Понятие и назначение ассемблера.
Когдато ассемблер был языком, без знания которого нельзя было заставить компьютер
сделать чтолибо полезное. Постепенно ситуация менялась. Появлялись более удобные
средства общения с компьютером. Но, в отличие от других языков, ассемблер не умирал,
более того он не мог сделать этого в принципе. Почему? В поисках ответа попытаемся
понять, что такое язык ассемблера вообще.
Если коротко, то язык ассемблера — это символическое представление машинного языка.
Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только
командами (инструкциями) машинного языка. Отсюда понятно, что, несмотря на общее
название, язык ассемблера для каждого типа компьютера свой. Это касается и внешнего
вида программ, написанных на ассемблере, и идей, отражением которых этот язык является.
Понастоящему решить проблемы, связанные с аппаратурой (или даже, более того,
зависящие от аппаратуры как, к примеру, повышение быстродействия программы),
невозможно без знания ассемблера.
Программист или любой другой пользователь может использовать любые высокоуровневые
средства, вплоть до программ построения виртуальных миров и, возможно, даже не
подозревать, что на самом деле компьютер выполняет не команды языка, на котором
написана его программа, а их трансформированное представление в форме скучной и
унылой последовательности команд совсем другого языка — машинного. А теперь
представим, что у такого пользователя возникла нестандартная проблема или просто чтото
не заладилось. К примеру, его программа должна работать с некоторым необычным
устройством или выполнять другие действия, требующие знания принципов работы
аппаратуры компьютера. И вот здесьто и начинается совсем другая история.... Каким бы
умным ни был программист, каким бы хорошим ни был язык, на котором он написал свою
чудную программу, без знания ассемблера ему не обойтись. И не случайно практически все
компиляторы языков высокого уровня содержат средства связи своих модулей с модулями
на ассемблере либо поддерживают выход на ассемблерный уровень программирования.
Конечно, время компьютерных универсалов уже прошло. Как говорится нельзя объять
необъятное. Но есть нечто общее, своего рода фундамент, на котором строится любое скольнибудь серьезное компьютерное образование. Это знания о принципах работы
компьютера, его архитектуре и языке ассемблера как отражении и воплощении этих знаний.
Современные компьютеры можно сравнить с существами, взаимодействующими с внешним
миром на уровне большого, но ограниченного набора безусловных рефлексов.
Этот набор рефлексов образует систему машинных команд. На каком бы высоком уровне вы
не общались с компьютером, в конечном итоге все сводится к скучной и однообразной
последовательности машинных команд.
Каждая машинная команда является своего рода раздражителем для возбуждения того или
иного безусловного рефлекса. Реакция на этот раздражитель всегда однозначная и “зашита”
в блоке микрокоманд в виде микропрограммы. Эта микропрограмма и реализует действия
по реализации машинной команды, но уже на уровне сигналов, подаваемых на те или иные
логические схемы компьютера, тем самым управляя различными подсистемами компьютера.
В этом состоит так называемый принцип микропрограммного управления.
Продолжая аналогию с человеком, отметим: для того, чтобы компьютер правильно питался,
придумано множество операционных систем, компиляторов сотен языков
программирования и т. д. Но все они являются, по сути, лишь блюдом, на котором по
определенным правилам доставляется пища (программы) желудку (компьютеру). Только
(вот досада!) желудок компьютера любит диетическую, однообразную пищу — подавай ему
информацию структурированную, в виде строго организованных последовательностей нулей
и единиц, комбинации которых и составляют машинный язык.
Таким образом, внешне являясь полиглотом, компьютер понимает только один язык — язык
машинных команд. Конечно, для общения и работы с компьютером, необязательно знать
этот язык, но практически любой профессиональный программист рано или поздно
сталкивается с необходимостью его изучения. К счастью, программисту не нужно пытаться
постичь значение различных комбинаций двоичных чисел, так как еще в 50е годы
программисты стали использовать для программирования символический аналог машинного
языка, который назвали языкомассемблера. Этот язык точно отражает все особенности
машинного языка. Именно поэтому, в отличие от языков высокого уровня, язык ассемблера
для каждого типа компьютера свой.
Из всего вышесказанного можно сделать вывод, что, так как язык ассемблера для
компьютера “родной”, то и самая эффективная программа может быть написана только на
нем (при условии, что ее пишет квалифицированный программист). Здесь есть одно
маленькое “но”: это очень трудоемкий, требующий большого внимания и практического
опыта процесс. Поэтому реально на ассемблере пишут в основном программы, которые
должны обеспечить эффективную работу с аппаратной частью. Иногда на ассемблере пишутся критичные по времени выполнения или расходованию памяти участки программы.
Впоследствии они оформляются в виде подпрограмм и совмещаются с кодом на языке
высокого уровня.
Машинно ориентированные языки программирования
к машинному языку  принято делить на две группы: низкого и высокого уровня. К языкам
низкого уровня относятся мнемокоды и макроязыки.
Разработано целый ряд языков, которые по степени близости
Мнемокоды отличаются от машинного языка  тем, что цифровые коды заменены
мнемоническими (буквы и цифры) обозначениями.
Макроязык, кроме того, содержит макрокоманды, которые соответствуют группе
машинных команд.
При этом программист может эффективно реализовать потенциальные возможности ЭВМ.
Возможности машинноориентированного языка определяются свойствами соответствующей
ЭВМ и  структурой команд ее центрального процессора.
Программа, записанная на каком либо языке программирования, называется исходным
модулем, который должен быть преобразован в машинный код.
Процесс преобразования исходного модуля в машинный код называется трансляцией, а сама
программа осуществляющая трансляцию  транслятором.
Ассемблер это транслятор с языка низкого уровня или языка ассемблера
(макроассемблера).
Язык ассемблера   машинноориентированный язык, т.е. если разные МП имеют разную
архитектуру, то они программно не совместимы
Ассемблер отличается от машинного языка тем что:
1. содержит макросредства;
2. команды операций записываются мнемонические;
3. адреса записываются символически, а не численно.
     Программы, записанные на языке Ассемблера, могут непосредственно транслироваться
на машинный язык с помощью программы называемой ассемблером. Ассемблер позволяет разрабатывать наиболее эффективные программы с минимальным
временем счета и наиболее полно использовать технические возможности ПК, но при этом
процесс составления программы является трудоемким и требует определенных знаний
аппаратной части ЭВМ.
Машинноориентированные языки программирования, как это следует из их названия,
разрабатываются под конкретный тип ЭВМ с учетом всей специфики как технических
средств, так и операционной системы. Эти языки в основном предназначены для систем, к
которым предъявляются повышенные требования по эффективности функционирования с
точки зрения временных параметров. Как правило, такие языки используются для систем,
работающих в режиме реального времени и диалоговом режиме. Программы на машинно
ориентированных языках очень эффективно используют ресурсы ЭВМ, однако требуют
значительного времени на их составление и отладку, характеризуются большими объемами,
а для их составления необходимы высококвалифицированные системные программисты.
Отметим также, что, как правило, программы, разработанные на машинноориентированных
системах программирования для конкретного типа ЭВМ, не могут использоваться на ЭВМ
другого типа. Это препятствует их широкому тиражированию. Следовательно, на машинно
ориентированных языках программирования имеет смысл разрабатывать программы,
которые действительно требуют малого времени при их выполнении. [1]
Машинноориентированный язык программирования близок по своей структуре к языку
конкретной ЭВМ или некоторого семейства машин, для которых он предназначен. [2]
Машинноориентированный язык программирования; язык программирования,
предложения которого по своей структуре подобны командам и обрабатываемым данным
конкретною машинного языка. Имеет более высокий уровень, чем машинный язык, но
позволяет использовать возможности последнего. Различают два уровня автокода
мнемокод и макроязык. [3]
К числу машинноориентированных языков программирования относятся автокоды и
некоторые языки, приближающиеся по своим возможностям к универсальным
алгоритмическим языкам, например АЛМО. [4]
Автокоды, являясь машинноориентированными языками программирования, вместе с
машинными языками образуют группу машиннозависимых языков, поскольку в их основе
лежит система счисления определенной ЦВМ. [5]
Автокоды  это машинноориентированные языки программирования: они предназначены
для того, чтобы в наиболее удобной для человека форме писать программы для конкретных
машин. [6] Язык Ассемблера принадлежит к Машинноориентированному языку программирования,
занимая промежуточное положение между языком высокого уровня и машинным языком
или автокодом. [7]
Для повышения производительности труда программистов созданы машинно
ориентированные языки программирования, называемые также языками символического
кодирования. При записи команды на символическом языке используют не двоичные цифры,
а предложения текста. Тогда ту же самую команду можно записать так: LT2, ADR, где L
означает загрузку ( от английского слова load  загрузить); 2  номер регистра; ADR  имя
адреса основной памяти. [8]
Обычно слово ассемблер включает два понятия: собственно машинноориентированный
язык программирования, наиболее полно учитывающий специфику ЭВМ, и транслятор с
этого языка, переводящий программу в машинные коды. В СМ3 и СМ4 к языку уровня
ассемблера применяется название Макроассемблер, или, для краткости, Макро, которое
используется в изложении. [9]
Автокод, или язык символического программирования, относится к машинно
ориентированным языкам программирования, которые по своим возможностям наиболее
близки к языку машины. Это свойство языков позволяет составлять программы, в которых в
должной мере могут быть учтены сильные и слабые стороны применяемой для решения
задачи вычислительной машины. При использовании же проблемноориентированных и
универсальных языков программирования учет особенностей ЦВМ возможен лишь в очень
слабой степени. [10]
Различные способы прокладки
соединений через
макродискрет.
Перечисленные недостатки приводят к значительным сложностям при реализации
алгоритма, необходимости использования машинноориентированных языков
программирования, что в свою очередь затрудняет перестройку программ на основе
волнового алгоритма. [11] Задачи программирования периферийного оборудования и оборудования связи компьютера
с экспериментом требуют, как правило, применения машинноориентированного языка
программирования, позволяющего наиболее полно использовать возможности аппаратуры.
Она содержит краткое описание языка, достаточное для понимания последующих глав. [12]
Машинноориентированные языки позволяют записать программу в командах машины, но в
удобном для чтения виде. Простейшими машинноориентированными языками
программирования являются автокоды. Известно большое число автокодов. Часто
применяются автокоды типа 1: 1, в которых основные элементы автокода ( оператор,
строка) преобразуются в одну команду управляющей машины. [13]
Правила языка называются синтаксисом, а значение символов для пользователя
семантикой. Различаютпроблемноориентированные и машинноориентированные языки
программирования. Проблемноориентированные языки предназначены для постановки
определенных проблем независимо от того, на какой машине программа будет считаться.
Машинноориентированные языки, напротив, учитывают особенности данной машины и
рассчитаны только на нее. [14
Сравнительные данные алгоритмических
языков программирования.
Машинноориентированные алгоритмические языки содержат выразительные средства,
позволяющие в записи алгоритма указать, с помощью каких технических средств должны
выполняться те или иные его части и каким образом при этом должны быть использованы
запоминающие устройства. К числу машинноориентированных языков
программирования относятся автокоды, близкие по своим возможностям к машинным
языкам ( в частности, язык ассемблера, описанный в гл. [1]
Современный подход к программированию состоит в том, что программа сначала пишется
на символическом языке  мнемокоде, а затем транслируется в машинные коды. Мнемокод
является машинноориентированным языком программирования, так как каждое
семейство ЭВМ и каждый микропроцессор имеют свой набор команд. Но мнемокоды являются основой для создания машинонезависимых языков программирования высокого
уровня. [2]
Каждый автокод представляет собой оригинальный машинноориентированный язык
программирования. [3]
Библиотеки стандартных программ, символические машинноориентированные языки
программирования, а затем языки высокого уровня и сервисные средства, предоставляемые
операционными системами, серьезно облегчили труд программистов, освободив их от
многих рутинных работ. Но после того как очевидные и универсальные возможности
автоматизации были реализованы, дальнейшая автоматизация требовала более глубоких
исследований, разрабатываемые средства оказывались дорогостоящими при разработке и
сложными в эксплуатации. Возникла необходимость поиска новых источников повышения
производительности труда. [4]
Программа операционной системы, обслуживающая отдельные периферийные устройства
вычислительной системы. Драйвер должен учитывать все детали конструкции каждого из
устройств и особенности их работы в реальном времени. Поэтому по крайней мере часть
этой программы должна быть написана на машинноориентированном языке
программирования. [5]
В настоящее время практически каждая ЭВМ общего и специального назначения снабжается
собственным автокодом. Практически каждый автокод представляет собой оригинальный
машинноориентированный язык программирования. В целях упрощения обучения
программистов при переходе с одной специализированной ЭВМ на другую, а также
упрощения настройки САПО на новый автокод целесообразно принять общие правила
построения автокодов для специализированных ЭВМ на базе общей структуры программы и
описаний данных, изложенных выше. [6]
ЭВМ для выполнения поставленной задачи должна получить в двоичном коде необходимые
команды, операнды и адреса. Такую программу называют машинной или объектной.
Разработка программ в таком виде, требующая очень больших усилий, не является
наглядной. Поэтому необходимы языки программирования, которые можно сравнить с
языком математических формул, на котором математические зависимости выражаются
однозначнее и полнее, чем вербально. Различают проблемноориентированные и машинно
ориентированные языки программирования. Язык представляется множеством понятий
( элементов языка) с твердо установленными значениями и набором правил, или
грамматикой. [7] Различают две группы машинноориентированных языков. Первую называют мнемокодами, а
вторую  макроязыками. Мнемокод отличается от машинного языка соответствующей ЭВМ
заменой двоичных кодов операций буквенными ( мнемоническими), а цифровых адресов
операндов1  буквенными или буквенноцифровыми. При переводе на язык машины каждая
команда мнемокода транслятора заменяется соответствующей командой машинного языка.
Примером этой группы машинноориентированных языков программирования может
служить язык Мнемокод управляющих ЭВМ типа М6000 и СМ1. Макроязык наряду с
символическими аналогами машинных команд, из которых состоит Мнемокод, допускает
также исползование макрокоманд, не имеющих прямых аналогов в машинном языке. При
трансляции каждая макрокоманда заменяется группой команд машинного языка. Примером
макроязыка может служить язык программирования машин типа СМ3 и СМ4, называемый
Макроассемблером. [8]
Это, вопервых, большая длина и громоздкость символических программ, вытекающая из
необходимости явно записывать каждую машинную команду. Некоторое облегчение
приносят стандартные подпрограммы и макрокоманды, однако большую часть алгоритма
программист все равно должен самостоятельно разбивать на элементарные операции,
соответствующие отдельным машинным командам. Вовторых, символическая программа,
написанная для конкретной машины, не может быть выполнена на машине другой
конструкции. Это и не удивительно, ибо главную часть любого символического языка
составляют машинные команды, а системы команд различных ЭВМ не совпадают друг с
другом. Символические языки жестко привязаны к тем машинам, для которых они были
созданы, и поэтому часто называются машинноориентированными языками
программирования. [9]
Машинноориентированные языки программирования, как это следует из их названия,
разрабатываются под конкретный тип ЭВМ с учетом всей специфики как технических
средств, так и операционной системы. Эти языки в основном предназначены для систем, к
которым предъявляются повышенные требования по эффективности функционирования с
точки зрения временных параметров. Как правило, такие языки используются для систем,
работающих в режиме реального времени и диалоговом режиме. Программы на машинно
ориентированных языках очень эффективно используют ресурсы ЭВМ, однако требуют
значительного времени на их составление и отладку, характеризуются большими объемами,
а для их составления необходимы высококвалифицированные системные программисты.
Отметим также, что, как правило, программы, разработанные на машинноориентированных
системах программирования для конкретного типа ЭВМ, не могут использоваться на ЭВМ
другого типа. Это препятствует их широкому тиражированию. Следовательно, на машинно ориентированных языках программирования имеет смысл разрабатывать программы,
которые действительно требуют малого времени при их выполнении. [10]
ЯЗЫКИ ПРОГРАММИРОВАНИЯ
Язык программирования
[programming language]
Формализованный язык, предназначенный для описания программ и алгоритмов решения
задач на ЭВМ. Языки программирования являются искусственными. В
них синтаксис и семантикастрого определены. Поэтому они не допускают свободного
толкования выражения, что характерно для естественного языка. Языки программирования
разделяются на две основные категорииязыки высокого уровня и языки низкого уровня :
 Язык высокого уровня [highlevel language]  Язык программирования, средства
которого обеспечивают описание задачи в наглядном, легко воспринимаемом виде,
удобном для программиста. Он не зависит от внутренних машинных кодов ЭВМ
любого типа, поэтому программы, написанные на языках высокого уровня, требуют
перевода в машинные кодыпрограммами транслятора либо интерпретатора. К
языкам высокого уровня относят Фортран , ПЛ/1 , Бейсик , Паскаль , Си , Ада и др.
 Язык низкого уровня , [lowlevel language ]  Язык программирования,
предназначенный для определенного типа ЭВМ и отражающий его
внутренний машинный код (см. ниже также “машинный язык “, “ машинно
ориентированный язык “ и “ язык ассемблера “).
Различают также следующие виды языков программирования:
 Алгоритмический язык [algorithmic language ]  Совокупность символов,
соглашений и правил, используемых для однозначного описания алгоритмов и обычно
являющаяся частьязыка программирования ;
 Неалгоритмический язык [nonalgorithmic language]  Язык программирования,
тексты которого не содержат указаний на порядок выполнения операций и служат
лишь исходным материалом для синтеза алгоритма решения задачи;
 Формальный язык [formal language] –
1. Язык программирования, построенный по правилам некоторого логического
исчисления или формальной грамматики [formal grammar ], представляющей собой систему правил построения в заданном алфавите конечных знаковых
последовательностей, множество которых образует формальный язык;
2. См. “алгоритмический язык “;
 Исходный язык [source language]  Язык программирования, на котором написана
программа, в отличие от машинного языка, на котором программы выполняются
компьютером. Исходные языки классифицируются на языки высокого
уровня и языки низкого уровня .
 Машинный ( абсолютный ) язык , язык ЭВМ [computer (machine) language]
 Язык программирования, предназначенный для представления программ в форме,
обеспечивающей возможность их выполнения техническими средствами;
 Машинозависимый ( машинноориентированный ) язык , машинозависимый
язык программирования [computersensitive (computeroriented) language]  Язык
программирования, учитывающий структуру и характеристики ЭВМ определенного
типа или конкретной ЭВМ;
 Машиннонезависимый язык [machineindependent language]  Язык
программирования, структура и средства которого не связаны ни с какой
конкретной ЭВМ и позволяют выполнять составленные на нем программы на любой
ЭВМ, снабженной трансляторами (см. ниже) с этого языка;
 Символический язык , язык символического кодирования [symbolic language]
 Язык программирования, ориентированный на конкретные ЭВМ и основанный на
кодировании машинных операций при помощи определенного набора символов;
 Гибридный ( комбинированный ) язык [hibrid language]  Язык
программирования, использующий также средства другого языка;
 Графический язык [graphic language ]  Язык, предназначенный для написания
программ машинной графики и пользования ими.
 Базовый язык [base language] –
1. Машинный язык , общий для семейства ЭВМ;
2. Язык программирования в СУБД с автономным языком .  Общий язык [common language]  Машинный язык, общий для группы ЭВМ и
используемых ими внешних устройств;
 Эталонный язык [reference language ]  Язык, являющийся основой для всех его
конкретных версий, являющихся вариантами адаптации эталонного языка к
определенным условиям применения и назначения;
 Язык ассемблера , ассемблер [assembler language ]  Универсальный язык
программирования , относящийся к категории языков низкого уровня, структура
которого определяется форматами команд, данными машинного языка и
архитектурой ЭВМ. Используется программистами в тех случаях, когда невозможно
применение языка высокого уровня или требуются эффективные программы в
машинных кодах.
 Декларативный ( непроцедурный ) язык [declararative (nonprocedural) language]
 Язык программирования, который позволяет задавать связи и отношения между
объектами и величинами, но не определяет последовательность выполнения действий
(например, языки Пролог , QBE);
 Императивный ( процедурный ) язык [imperative language]  Язык
программирования, который позволяет в явной форме (при помощи задания
выполняемых операторов) определять действия и порядок (последовательность) их
выполнения;
 Язык функционального программирования , функциональный язык [functional
language]  Декларативный язык программирования, основанный на
понятии функций, которые задают зависимость, но не определяют порядок
вычислений.
 Специализированный язык [special language]  Язык программирования,
ориентированный на решение определенного круга задач;
 Язык описания страниц [PDL  Page Description Language]
 Специализированный язык, предназначенный для печатающих устройств.
Предусматривает возможность использования изображений в формате, независимом
от параметров устройства отображения. Наиболее известным языком такого типа
является PostScript.
 Автономный язык [freestanding language]  Специализированный язык высокого
уровня, в замкнутых СУБД (“ СУБД с автономным языком “);  Язык конструирования интерактивных технологий  В СУБД  язык,
предназначенный для описания технологических процессов обработки данных с
учетом разделения характера операций по их типам, а также обеспечения диалога с
администратором системы;
 Язык манипулирования данными , ЯМД [DML  Data Manipulation Language]
 В СУБД  язык, предназначенный для обращения к базе данных и выполнения
поиска, чтения и модификации ее записей;
 Язык обработки списков [list language]  Специализированный язык,
предназначенный для описания процессов обработки данных, представленных в виде
списков объектов ;
 Язык описания данных [DDL  Data Description Language ]  Язык,
предназначенный для описания “концептуальной схемы” базы данных ;
 Язык описания хранения данных [DSDL  Data Storage Description Language ]
Язык, предназначенный для описания физической структуры ( схемы ) базы
данных ;
 Язык описания страниц [page description language] Система для кодировки
документов, которая позволяет точно описать ее внешний вид после подготовки к
выводу на печать или на дисплей. Примером использования такого языка
служит PDF (Portable Document Format), разработанный Adobe для хранения и
представления изображений страниц.
 Язык представления знаний [KRL  Knowledge Representation Language]
 Декларативный или декларативнопроцедурный язык, предназначенный для
представления знаний в памяти ЭВМ (например, языки Лисп и Пролог );
 Язык публикаций [publication language ]  Язык, используемый для публикации
алгоритмов и программ;
 Язык спецификаций [specification language]  Декларативный язык для
задания спецификаций программ ;
 Проблемноориентированный язык [problemoriented language]  Язык
программирования, предназначенный для решения определенного класса задач
(проблем);  Процедурный ( процедурноориентированный ) язык [procedureorinted language]
 Проблемноориентированный язык, который облегчает выражение процедуры,
как точного алгоритма;
 Язык реального времени [realtime language]  Язык, используемый для
программирования задач, в которых критическим является время реакции ЭВМ на
сигналы, требующие от нее немедленных действий (например, язык Ада );
 Язык управления пакетом [batch control language ]
Набор команд , директив , квалификаторов и правил их использования для
управления пакетной обработкой данных;
 Язык управления заданиями [jobcontrol language ]  Язык, на котором
записывается последовательность команд, управляющих выполнением задания. В
отличие от обычных языков программирования, в которых объектами описания
являются элементы, связанные с решением отдельной задачи, в языках управления
заданиями преобразуемыми объектами являются целые программы и выходные
потоки данных, обработанных этими программами.
 Общесетевой командный язык [CNCL  Common Network  Command language ]
Стандартный в рамках вычислительной сети язык диалогового (интерактивного)
поиска данных, предназначенный для унификации работы пользователей с
неоднородными базами данных, управляемых различными СУБД ;
 Системный язык [system language ]  Язык общения оператора ЭВМ с
вычислительной системой, представляющий собой совокупность команд оператора и
сообщений системы;
 Язык общего назначения , универсальный язык [universal programming language]
 Язык программирования, ориентированный на решение задач практически из
любой области и объединяющий на единой методической основе наиболее
существенные свойства и средства современных машино и
проблемноориентированных языков программирования (например,язык
ассемблера , ПЛ/1 и др.);
 Язык ориентированный на пользователя [useroriented language ]
Слабоформализованный язык программирования, близкий к естественному языку ;
 Язык меню [menu language ]  Язык диалога пользователя с системой, основанный
на использовании меню . Разработки и наименования языков программирования
 Ада [Ada]  Язык программирования высокого уровня, ориентированный на
применение в системах реального времени и предназначенный для автоматизации
задач управления процессами и/или устройствами, например,
в бортовых (корабельных, авиационных и др.) ЭВМ. Разработан по инициативе
министерства обороны США в 1980х гг. Назван в честь английского математика Ады
Августы Байрон ( Лавлейс), жившей в 18151851 гг.
 Алгол [ALGOL  ALGOrithmic Language]  Язык программирования высокого
уровня, ориентированный на описание алгоритмов решения вычислительных задач.
Был создан в 1958 г. специалистами западноевропейских стран для научных
исследований. Версия этого языка Алгол60 была принята Международной
конференцией в Париже (1960 г.) и широко использовалась на ЭВМ 2го поколения.
Версия Алгол68, разработанная группой специалистов Международной федерации
по обработке информации ( ИФИП) в 1968 г., получила статус международного
универсального языка программирования, ориентированного на решение не только
вычислительных, но и информационных задач. Хотя в настоящее
время Алголпрактически не используется, он послужил основой или оказал
существенное влияние на разработку более современных языков,
например, Ада , Паскаль и др.
 Бейсик [BASIC  Beginner’s Allpurpose Symbolic Instruction Code]  Язык
программирования высокого уровня , разработанный в 1963  1964 гг. в
Дартмутском колледже Томасом Куртом и Джоном Кемени . Первоначально
предназначался для обучения программированию. Отличается простотой, легко
усваивается начинающими программистами благодаря наличию упрощенных
конструкций языка Фортран и встроенных математических функций, алгоритмов и
операторов. Существует множество различных версий Бейсика, которые не полностью
совместимы друг с другом. Некоторые реализации Бейсика включают средства
обработки данных и наборов данных. Большинство версий Бейсика
используют интерпретатор, который преобразует его компоненты в машинный код и
позволяет запускать программы без промежуточной трансляции. Некоторые более
совершенные версии Бейсика позволяют использовать для этой цели трансляторы. На
IBM PC широко используются Quick Basic фирмы Microsoft, Turbo
Basic фирмы Borland и Power Basic (усовершенствованная версия Turbo Basic,
распространяемая фирмой Spectra Publishing ). В начале 1999 г. фирма Microsoft выпустила версию языка Visual Basic 6.0 (VB 6.0), предназначенного для создания
многокомпонентных программных приложений для систем уровня предприятий.
Подробнее о нем см. [429].
 Кобол [COBOL  COmmon BuisinessOriented Language]  Язык
программирования высокого уровня, разработанный в конце 1950х гг. ассоциацией
КАДАСИЛ для решения коммерческих и экономических задач. Отличается
развитыми средствами работы с файлами. Поскольку команды программ, написанных
на этом языке, активно используют обычную английскую лексику и синтаксис, Кобол
рассматривается как один из самых простых языков программирования. В настоящее
время используется для решения экономических, информационных и других задач.
 Лисп [LISP  LISt Processing]  Алгоритмический язык, разработанный в 1960
г. Дж. Маккарти и предназначенный для манипулирования перечнями элементов
данных. Используется преимущественно в университетских лабораториях США для
решения задач, связанных с искусственным интеллектом. В Европе для работ по
искусственному интеллекту предпочитают использовать Пролог .
 ЛОГО [LOGO от греч. logos  слово ]  Язык программирования высокого уровня,
разработан в Массачусетском технологическом институте в ориентировочно 1970 г.
для целей обучения математическим понятиям. Используется также в школах и
пользователями ПЭВМ при написании программ для создания чертежей на экране
монитора и управления перьевымграфопостроителем .
 Паскаль [PASCAL  акроним с французского  Program Applique a la Selection et la
Compilation Automatique de la Litterature]  Процедурноориентированный язык
программирования высокого уровня, разработанный в конце 1960х гг. Никлаусом
Виртом, первоначально для обучения программированию в университетах. Назван в
честь французского математика XVII века Блеза Паскаля. В своей начальной
версии Паскаль имел довольно ограниченные возможности, поскольку
предназначался для учебных целей, однако последующие его доработки позволили
сделать его хорошим универсальным языком, широко используемым в том числе для
написания больших и сложных программ. Существует ряд версий языка
(например, ETH Pascal, USD Pascal, Turbo Pascal ) и систем программирования на
этом языке для разных типов ЭВМ. Для IBM PC наиболее популярной является
система Turbo Pascal фирмы Borland (США). Подробнее о языках Пскаль и их
развитии см. [653].  Пролог [PROLOG  PROgramming in LOGic]  Язык программирования высокого
уровня декларативного типа (см. выше декларативное программирование),
предназначенный для разработки систем и программ искусственного интеллекта.
Относится к категории языков пятого поколения. Был разработан в 1971 г. в
университете г. Марсель (Франция), относится к числу широко используемых и
постоянно развиваемых языков. Последняя его версия Prolog 6.0. Подробнее см. [561].
 Си [C ]  Многоцелевой язык программирования высокого уровня,
разработанный Денисом Ритчи в начале 1970х гг. на базе языка BCPL. Используется
на миниЭВМ и ПЭВМ. Является базовым языком операционной системы Unix ,
однако применяется и вне этой системы, для написания быстродействующих и
эффективных программных продуктов, включая и операционные системы. Для IBM
PC имеется ряд популярных версий языка Си, в том числе  Turbo
C (фирмы Borland), Microsoft C и Quick C ( фирмы Microsoft ), а также Zortech
C(фирмы Symantec ). Многие из указанных версий обеспечивают также работу
с Си и Си++ (см. ниже).
 Си++ [C++]  Язык программирования высокого уровня, созданный Бьярном
Страустрапом на базе языка Си. Является его расширенной версией, реализующей
принципы объектноориентированного программирования. Используется для
создания сложных программ. Для IBM PC наиболее популярной является
система Turbo C++ фирмы Borland (США).
 C# (C Sharp) – “ Си Шарп ”: объектноориентированный яык программирования,
о разработке которого в 2000 г. объявила фирма Microsoft . По своему характеру он
напоминает языки C++ и Java и предназначен для разработчиков программ,
использующих языки C и С++ для того, чтобы они могли более эффективно создавать
Интернетприложения. Указывается, что C # будет тесно интегрирован с
языком XML . Подробнее см. – [600], а также на Web сайте фирмы Microsoft
(http://msdn.microsoft.com).
 Фортран [FORTRAN  FORmula TRANslation]  Язык программирования
высокого уровня, разработанный фирмой IBM в 1956 г. для описания алгоритмов
решения вычислительных задач. Относится к категории процедурно
ориентированных языков. Наиболее распространенными версиями этого языка
являются Фортран IV, Фортран 77 и Фортран 90. Используется на всех классах ЭВМ.
Последняя его версия также применяется на ЭВМ с параллельной архитектурой .  AppleScript  Машинозависимый (ориентирован на работу с ПЭВМ типа Макинтош
фиры Apple ) близкий к естественному английскому язык программирования,
предназначенный для автоматизации повторяющихся задач, преимущественно
связанных с процессами компьютерной графики (в том числе  обработки результатов
сканирования, ввода изображений, цветоделения, составления каталогов, передачи
печатных документов в World Wide Web и др.). Планировалась разработка версии
этого языка для PowerPC. Подробнее о нем см. [198].
 Clipper  Язык высокого уровня и система программирования, предназначенные
для разработки программ для ПЭВМ, преимущественно  систем управления
большими объемами данных (см. “СУБД “ ). Владельцем и разработчиком языка и
системы Clipper является фирма Nantucket (США). Начало работ по их созданию
связано с разработкой компилятора дляdBase (см. ниже) и относится к 1984 г. (год
основания фирмы Nantucket Барри Ребеллом и Брайаном Расселом). Первые
программные продукты Clipper  ClipperWinter’84 (май 1985 г.), ClipperWinter’85
(январь 1986 г.), McMax (версия для ПК Macintosh  сентябрь 1986 г.) и
ClipperSummer’87 (декабрь 1987 г.). Летом 1990 г. была выпущена версия
языка Clipper 5.0,получившая широкое распространение в России. Она реализует
концепцию открытой архитектуры и представляет собой язык, компилятор и
систему разработки программ для ПЭВМ, включающую набор команд и
функций, препроцессор , компоновщик, набор утилит (в т.ч. отладчик и встроенную
документацию) [173].
 dBASE
1. Язык программирования высокого уровня, предназначенный для создания пакетов
прикладных программ, связанных с манипулированием большими объемами данных
(Xbase). Первая версия языка dBASE II вышла в свет в начале 1980х гг., в августе
1994 г. была выпущена версия dBASE 5.0 для Windows (подробнее см. [79]);
2. Семейство программ для ПЭВМ, предназначенное для манипулирования большими
объемами данных.
 FoxPro  Объектноориентированный язык, предназначенный для создания пакетов
прикладных программ, в том числе для современных операционных систем,
например  версия этого языка FoxPro for Windows . Об одной из последних версий
этого языка  Visual FoxPro 3.0 фирмы Microsoft см. в [84].  SGML (Standardized General Markup Language) – “ Стандартизованный
обобщенный язык разметки”. Разработка языка была вызвана необходимостью
создания средств описания документов и правил их построения. Для задания
структуры документа используются специальные метки – “теги”, которые отделяют
друг от друга элементы документа и файлыопределения типа документа (Document
Type Definition – DTD ), выполняющие функции “грамматики” и определяющие
структуру и содержание каждого элемента в документе. ПринятISO в качестве
стандарта в 80е годы. Сложность этого языка помешала ему лечь в основу первой
спецификации для Web – HTML , который стал производным от SGML [336].
 html, html (HyperText Markup Language)  “ Язык разметки гипертекста”
разработан в исследовательском центре CERN в 1992 г. Он является производным
от SGML (см. ниже). htmlустанавливает формат гипермедийных документов, в
сети WWW . HTMLдокументы представляют собой ASCII файлы, доступные для
просмотра и редактирования в любом текстовом редакторе. Отличием от обычного
текстового файла является наличие в HTMLдокументах специальных команд  тэгов,
которые указывают правила форматирования документа [114, 141, 329, 336]. Полное
описание html можно получить по сетевому адресу: .

file_name: Ассемблер как машинно.docx

description:
 SGML (Standardized General Markup Language) – “ Стандартизованный
обобщенный язык разметки”. Разработка языка была вызвана необходимостью
создания средств описания документов и правил их построения. Для задания
структуры документа используются специальные метки – “теги”, которые отделяют
друг от друга элементы документа и файлыопределения типа документа (Document
Type Definition – DTD ), выполняющие функции “грамматики” и определяющие
структуру и содержание каждого элемента в документе. ПринятISO в качестве
стандарта в 80е годы. Сложность этого языка помешала ему лечь в основу первой
спецификации для Web – HTML , который стал производным от SGML [336].
 html, html (HyperText Markup Language)  “ Язык разметки гипертекста”
разработан в исследовательском центре CERN в 1992 г. Он является производным
от SGML (см. ниже). htmlустанавливает формат гипермедийных документов, в
сети WWW . HTMLдокументы представляют собой ASCII файлы, доступные для
просмотра и редактирования в любом текстовом редакторе. Отличием от обычного
текстового файла является наличие в HTMLдокументах специальных команд  тэгов,
которые указывают правила форматирования документа [114, 141, 329, 336]. Полное
описание html можно получить по сетевому адресу: <http://www.
access.digex.net/^werbach/barebone.html>.

intro:
Понятие и назначение ассемблера.
Когда-то ассемблер был языком, без знания которого нельзя было заставить компьютер сделать что-либо полезное. Постепенно ситуация менялась. Появлялись более удобные средства общения с компьютером. Но, в отличие от других языков, ассемблер не умирал, более того он не мог сделать этого в принципе. Почему? В поисках ответа попытаемся понять, что такое язык ассемблера вообще.
Если коротко, то язык ассемблера — это символическое представление машинного языка.
Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами (инструкциями) машинного языка. Отсюда понятно, что, несмотря на общее название, язык ассемблера для каждого типа компьютера свой. Это касается и внешнего вида программ, написанных на ассемблере, и идей, отражением которых этот язык является.

title: Ассемблер как машинно-ориентированный язык программирования