- •Предисловие
- •Глава 1
- •1.1. Средства микропроцессорной вычислительной техники
- •1.2. Основные характеристики, место и классификация микроЭвм
- •1.3. Индустрия микропроцессорных средств вт
- •Глава 2 элементная база микроэвм. Микропроцессоры
- •2.1. Микропроцессорные бис
- •2.2. Микропроцессор 8086
- •2.3. Развитие семейства мп 8086
- •Глава 3 элементная база микроэвм. Микропроцессорные семейства бис
- •3.1. Сопроцессоры
- •3.2 Интегральные микросхемы памяти
- •3.3. Интерфейсные схемы, контроллеры
- •3.4. Схемы обрамления
- •Глава 4 магистрально-модульная организация микроэвм
- •4.1. Интерфейсы и магистрали микроЭвм
- •4.2. Магистрали типа Multibus
- •4.3. Интерфейсы периферийного оборудования
- •4.4. Конструктивные особенности микроЭвм
- •Глава 5 аппаратура микроэвм
- •5.1. Периферия микроЭвм
- •5.2. Аппаратура персональных микроЭвм
- •5.3. Модульные системы и одноплатные микроЭвм
- •Глава 6
- •6.1. Операционные системы
- •6.2. Средства автоматизации программирования
- •6.3. Пакеты прикладных программ
- •1. Монография я учебные издания
- •2. Периодические издания
- •3. Фирменные издания
- •Глава 1. Введение в микропроцессорную технику .............................. 5
- •Глава 2. Элементная база микроЭвм. Микропроцессоры ...................... 18
- •Глава 3. Элементная база микроЭвм. Микропроцессорные семейства бис ............................................................................................................................ 81
- •Глава 4. Магистрально-модульная организация микроЭвм ……………108
- •Глава 5. Аппаратура микроЭвм ............. ……………………………….148
- •Глава 6. Программное обеспечение микроЭвм ........................................187
6.2. Средства автоматизации программирования
Программное обеспечение автоматизации программирования призвано облегчить пользователю создание программ для решения его собственных задач. Автоматизация программирования поддерживается трансляторами с языков программирования, редакторами текстов программ и отладчиками программ.
Языки программирования. Языки программирования микроЭВМ делятся на два больших класса: машинно-ориентированные и процедурно-ориентированные языки (языки высокого уровня). Машинно-ориентированные языки (ассемблеры, макроассемблеры) тесно связаны с конкретным микропроцессором, его системой команд. Перенос программы, написанной на машинно-ориентированном языке, с одной микроЭВМ на другую, с отличной системой команд, невозможен. Программы, записанные на языке высокого уровня, практически без изменений могут быть перенесены на любую ЭВМ. Использование языков высокого уровня позволяет значительно упростить написание программ, ускорить их отладку. Необходимо, однако, учитывать, что программы на машинно-ориентированных языках, занимают меньший объем памяти и выполняются быстрее, чем эквивалентные программы на языках высокого уровня.
Для применения языков программирования необходимо наличие специальных программ-трансляторов (translator), которые обеспечивают перевод исходной программы на некотором языке в машинную программу (объектный код). Различают трансляторы двух типов. Трансляторы компилирующего типа (компиляторы, compiler), формируют полный текст программы в машинных кодах, после чего она может быть выполнена. Трансляторы интерпретирующего типа (интерпретаторы, interpreter) каждый отдельный оператор входной программы преобразуют в машинный код и сразу его выполняют. С точки зрения пользователя интерпретатор просто выполняет заданную программу.
Ассемблер (Assembler) — это, с одной стороны, машинно-ориентированный язык и, с другой стороны, транслятор для преобразования ассемблерных программ в машинные коды. Программа на языке Ассемблера состоит из последовательности мнемонических инструкций, в которых коды операций, адреса, различные признаки заданы мнемоническими обозначениями. Используются также псевдокоманды, с помощью которых программист определяет необходимые данные, резервирует требуемые поля памяти, дает указания транслирующей программе о размещении отдельных участков программы и/или данных. При трансляции каждой мнемонической инструкции ставится в соответствие одна машинная команда—трансляция «один к одному». В макроассемблерах разрешается использование макроинструкций, которые при трансляции заменяются последовательностью машинных команд. Фактически макроинструкция — это обращение к некоторой подпрограмме, текст которой задается пользователем или выбирается из библиотеки макроопределений. Ассемблеры и макроассемблеры разрабатываются, как правило, фирмами-изготовителями микропроцессоров и продаются ими как отдельный программный продукт. Так, например, фирма Intel поставляет ассемблирующую программу ASM 86 для своих МП 8086/8088, которая может использоваться на всех микроЭВМ, построенных на базе этих МП [1.8, 3.1]. Любая операционная система обязательно имеет в своем составе ассемблирующую программу. Однако считается, что эффективно работать на языке ассемблера может только квалифицированный программист, хорошо знакомый с архитектурой микропроцессора и особенностями его функционирования. Как правило, на языке ассемблера пишутся только системные программы или программы, к которым предъявляются жесткие требования по времени выполнения или объему занимаемой памяти.
Обычный «средний» пользователь для своих задач старается найти готовые программные решения и, только если таковых нет или их стоимость слишком велика, составляет собственные программы на одном из языков высокого уровня. Можно указать не менее 10 языков, нашедших достаточно широкое использование для программирования микроЭВМ (табл. 6.2, по материалам [2.8, 2.10]).
Таблица 6.2. Распространенность языков программирования высокого уровня на микроЭВМ
|
||
№№ п/п
|
Язык программирования
|
% микроЭВМ
|
1 |
Basic |
67,6 |
2 |
С |
44,3 |
3 |
Pascal |
43,6 |
4 |
Fortran |
39 |
5 |
Cobol |
28,3 |
6 |
Forth |
8,3 |
7 |
Ada |
3,3 |
8 |
PL/1 |
3,3 |
9 |
PL/M |
2 |
10 |
Logo |
1 |
11 |
Modula |
1 |
12 |
Pilot |
0,6 |
Примечание. Сумма больше 100 %, так как большая часть микроЭВМ допускает использование нескольких (3—4) языков программирования.
|
Но только четыре языка стали буквально стандартными. Это БЭЙСИК, ПАСКАЛЬ, ФОРТРАН и СИ.
Язык БЭЙСИК (Beginners All-purpose Symbolic Instruction Code, BASIC — многоцелевой язык символических команд для начинающих) разработан в начале 60-х годов как простейший язык для обучения программированию [1.15, 1.22]. Благодаря своей простоте, минимальным требованиям к оперативной памяти получил самое широкое распространение как основ- • ной язык общения с микроЭВМ. Хотя существует стандартный вариант БЭЙСИКа, каждая фирма реализует в своих изделиях собственную версию языка, максимально учитывающую особенности аппаратуры конкретной машины.
В связи с этим создалось положение, при котором БЭЙСИК перестал поддерживать одну из основных функций языка высокого уровня — переносимость программ. Однако в силу своей необычайной простоты, доходчивости и ясности БЭЙСИК остается наиболее широко используемым в мире языком высокого уровня.
Язык ПАСКАЛЬ (Pascal, назван в честь французского математика и механика, создавшего первый действующий механический арифмометр), разработан в 1971—1973 гг. в техническом университете г. Цюриха (Швейцария) для обучения студентов принципам программирования и алгоритмизации задач [1.33]. Язык позволяет записывать хорошо структурированные, выразительные, ясные для понимания программы. Он обладает рядом возможностей, недоступных или излишне усложненных в ранних языках высокого уровня: удобные и универсальные операции обработки символьных данных и структур данных, создание пользователем собственных типов данных с заданными свойствами. Отмечаются также удобные средства ввода-вывода языка.
Язык ФОРТРАН (Formula Translation — переводчик формул) является самым старым и, по-видимому, самым распространенным языком высокого уровня для всех типов ЭВМ [1.14, 1.15]. Первая версия языка (ФОРТРАН I) была создана в 1954 г. сотрудниками фирмы IBM. Наибольшую популярность получила версия ФОРТРАН IV, разработанная в 1962 г. Существуют две стандартные версии языка: ФОРТРАН-66 и ФОРТРАН-77, принятые в качестве национального стандарта в США. Привлекательность ФОРТРАНА заключается в его простоте, высокой эффективности получаемых машинных программ, незначительно отличающихся от запрограммированных вручную. Считается, что ФОРТРАН ориентирован, в первую очередь, на решение научно-технических задач, связанных с обработкой численных данных, хотя последние версии языка позволяют работать и с символьными переменными.
Язык СИ (С) создан в начале 70-х гг. для операционной системы UNIX, причем сама операционная система также была написана на этом языке [1.3]. Язык СИ часто называют «языком системного программирования», так как на нем наиболее удобно записывать системные программы для мини- и микроЭВМ всех классов. Основное отличие языка СИ от обычных языков высокого уровня заключается в его приближенности к аппаратуре. Причем не к конкретной машине, а к аппаратуре некоторой обобщенной ЭВМ. Язык СИ работает с теми же типами данных, что и сама машина — числами, адресами, символами, имеет ограниченный набор операторов управления — проверки, циклы, вызовы подпрограмм. Тесная связь языка и аппаратуры дает возможность строить трансляторы, создающие весьма эффективные в смысле быстродействия и объема занимаемой памяти машинные программы. Это позволяет полностью отказаться от языка Ассемблера при разработке программ.
Редакторы и отладчики. Для создания и модификации текстов программ используются специальные системные программы, получившие название редакторы (editors). С точки зрения принципа редактирования — модификации содержимого некоторого текстового файла, различают строчные и экранные редакторы. Строчный редактор поддерживает модификацию только одной, выбранной или указанной в директиве специальным образом строки. Пользователь может полностью или частично удалить эту строку (директива D — delete), заменить в ней отдельный символ или сочетание символов (директива S — substitute) или добавить новые символы. Экранный редактор позволяет модифицировать совокупность строк текста, одновременно отображаемых на экране. Причем для модификации используются клавиши управления курсором и другие специальные клавиши клавиатуры. В любом варианте редактор обеспечивает создание символьного файла и занесение в него любой последовательности символов в произвольном формате. Ввод текста можно выполнять вручную с системной консоли (директива I — insert) или из некоторого, ранее подготовленного файла (директива А — append), находящегося на внешнем носителе. Имеется возможность распечатать содержимое файла (директива Т — type) на экране дисплея или печатающем устройстве. Отредактированный файл можно записать на внешний накопитель (директива S — save), сохранив исходный файл в виде запасной копии (backup file) или стерев его. Следует отметить, что усовершенствование редакторов программ привело к созданию мощных прикладных программ для редактирования текстов самого общего вида — текстовых обработчиков.
Любая программа, даже написанная высококвалифицированным программистом, первоначально содержит ошибки. Выявить и устранить их помогает специальная программа — отладчик (debugger). Отладчики, как правило, поддерживают разработку программ, написанных на языке Ассемблера. Они позволяют в интерактивном режиме покомандно отслеживать выполнение программы в целом или отдельных ее участков, распечатывать на экране дисплея и модифицировать при необходимости содержимое отдельных регистров или полей памяти. Разрабатываются и более «интеллектуальные» отладочные комплексы программ, ориентированные на языки высокого уровня. Такие суперотладчики отображают на экране дисплея текст выполняемого фрагмента программы, его графическое представление (блок-схему), возможные переходы по блокам, значения указываемых пользователем переменных программ.