Главная »  Микропроцессорное управление 

1 ... 18 19 20 21 22 23 24 ... 27

ПроОо.ичеиие таблицы 5.2.

Символи-

Восьме-

признаки

Адресное II.

Назн;)че1Н1е

ческая запись

ричный код

Содержание комаплы

ASR{B)

.062 DD

Арифметический сдвиг вправо (D)

Одноадрес-

Арифмети-

AS ЦБ)

.063 DD

V V V V

Арифметический сдвиг

ные

влево (£>)

.0067 D

-V--

Расширение знака во все разряды

ШП DD

----

Безусловный переход по (£))

077 RKK

----

Счет циклов в R: Л-1=>Л; УП по RO

m4R DD

----

Обращение к стандартной подпрогра.ммс

Одноадрес-

Управление

0020Л

----

Возврат из стандартной

ные

программой

подпрограммы

MFPS

1067OD

VV 0 -

Чтение слова состояния програ.ммы

MTPS

1064Z>O

Запись слова состояния программы

MARK

0064KK

Восстановление указателя стека

0004E

OOlOE

0014E

0020E

УП>

Безадресные

Безусловные

0024E

УП<

и условные

0030E

УП>

переходы

0034E

УП<

BPL BMl BXI BLOS BVC BVC

вес

BCS BHIS BLO

lOOOE 1004E lOlOE 1014E 1020E 1024 1030 1034 1030 10.34

УП-ь УП-УП> УП<

УП по V УП по V УП по С УП по С УП> УП<

000241

---0

Гашение С

000261

---1

Установка С

000242

- - 0 -

Гашение V

000262

-- 1 -

Установка V

000244

- 0 --

Гапленис Z

000264

- 1--

Установка Z

Безадресные

Операции

000250

0---

Гашение N

над призна-

000270

1---

Установка N

000254

00 --

Гашение N и Z

000257

0 0 0 0

Гашение всех признаков

000277

1111

Установка всех признаков



Окончание табл. 5.2.

Адресное lb

Назначен не

Симво.гн-ческая запись

Восьмеричный код

Признаки nzvc

Содержание команды

NOP NALT WAIT RIT ВРТ

000240 000000 000001 000002 000003

Нет операций

Останов

Ожидание

Возврат из прерывания Прерывание для отладки

Прерывание по вводу- выводу Сброс ВУ

Прерывание для системных программ Командное прерывание Возврат из прерывания

Безадресные

Управление программой

RESET ЕМТ

TRAP RTT

000004

000005 1040Е

1044Е 000006

Примечание: О yciaiiOBKa в нуль: I установка в единицу; (тире) - сохранение предыдущего значения признака; V (галочка) установка признака ио результу оиерацни; УП ус-.-[овне перехода: . в командах niLi словами заменяется на 0. а в байтовых командах на 1.

5.3. АЛГОРИТМИЧЕСКИЙ ЯЗЫК ПАСКАЛЬ

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

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

Языки программирования высокого уровня обычно делят на две большие группы: процедурно- и проблемно-ориентированные.

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

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



Машинно-зависимые языки высокого уровня, например ПЬ/М, ориентированы на имеющиеся в МПС аппаратурные средства. Эти языки в меньшей степени машинно-зависимы, чем язык ассемб-лера,так как операторы и выражения записываются в обычной для языков высокого уровня форме. Их основными характеристиками являются полное использование аппаратуры микроЭВМ, создание ясных, хорошо читаемых программ, а также удобство записи и компоновки программ. И все же ориентация машинно-зависимых языков уровня на конкретные микроЭВМ препятствует их широкому распространению.

К алгоритмическим языкам относятся: Фортран, Бейсик, Фокал, Модула-2, Ада, Паскаль и др. Основные достоинства программирования на этих языках: высокая производительность труда программиста, возможность переноса программ с одной ЭВМ на другую, простота эксплуатации, наличие средств контроля и т. п. Однако при использовании алгоритмических языков возрастает сложность создания эффективных трансляторов, увеличиваются трудозатраты на написание программ, которые требуют доступа к определенным элементам памяти микроЭВМ, регистрам ввода - вывода, прерываний и т. д.

Среди алгоритмических языков высокого уровня многие авторы выделяют языки Модула-2, Ада и Паскаль. Но так как в настоящее время Модула-2 и Ада еще недостаточно распространены, одним из наиболее перспективных языков программирования следует считать язык Паскаль. Он ориентирован на структурное программирование, обладает развитыми средствами контроля, прост в изучении и использовании.

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

Конкретные реализации языка Паскаль содержат возможности, обеспечивающие использование всех аппаратных средств микроэвм. Знание языка Паскаль полезно при изучении и использовании целого ряда современных языков программирования, таких как Ада и Модула-2. Немаловажным фактором с точки зрения распространения языка является то, что трансляторы с языка Паскаль входят в состав ПО многих отечественных микроэвм.

В связи с вышеизложенным дадим краткое описание языка Паскаль.



Основные определения алгоритмического языка Паскаль. Символы языка-основные неделимые знаки, с помощью которых пишутся все тексты на языке. Алфавит языка Паскаль содержит следующие символы:

прописные латинские буквы А, В, С, Z;

прописные русские буквы А, Б, В, Я;

арабские цифры О, 1, 2, 9;

специальные символы, например, := + -();.

Примечание: в некоторых версиях языка Паскаль допускаются строчные латинские и русские буквы.

Кроме того, в языке определяются служебные слова, такие как AND. ARRAY. BEGIN. CASE и др.

Идентификаторы-- имена основных объектов языка: констант, типов, процедур, функций, файлов. Идентификатор-это последовательность букв или цифр, начинающейся с буквы, например C0NST2, ТАБЛИЦА.

Длина идентификаторов ограничена только допустимой длиной вводимой в ЭВМ строки. Однако распознаются идентификаторы по первым восьми знакам, т. е. комбинация первых восьми букв и цифр каждого идентификатора должна быть единственной. В языке Паскаль существует набор стандартных идентификаторов, обозначающих стандартные константы, типы, процедуры, функции и файлы, например TRUE. REAL. WRITE, SIN. INPUT.

Метки. В качестве меток в языке Паскаль используются целые числа без знака. Для записи метки можно использовать не более четырех цифр. Метками обычно снабжаются операторы, которым передается управление при вьшолнении оператора перехода GOTO.

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

PROGRAM ОБРАБОТКА (INPUT. OUTPUT); {ЗАГОЛОВОК}

Строка - последовательность символов, заключенная в одиночные кавычки (апострофы). Например, РЕЗУЛЬТАТЫ ВЫЧИСЛЕНИЙ:

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

Структура программы на языке Паскаль. Программа на языке Паскаль состоит из заголовка, описаний и операторов (рис. 5.2). Заголовок записывается всегда как первая строка программы. В нем содержится имя программы, которое дает сам программист, и файлы (наборы данных), доступные программе. Например,

PROGRAM ОБРАБОТКА (INPUT. OUTPUT);



PROGRliM

ИМЯ (INPUT, OUTPUT) ;

PROGRAM СЧЕТ (INPUT, OUTPUT)

LABEL

Раздел меток ;

CONST PI= 3.14- ;

CONST

- Раздел констант ;

TYPE

- Раздел типов ;

VAR X,R : REAL;

-Раздел переменных ;

BECIN

PROCEDURE,FUf/CTIDN-Раздел процедур и BECIN функций

WRITELN (Введите значение X:);

Раздел операторов

END.

REAV(X) ;

; = SIN ()f. + PI/If); WRITELN(R=, R:6:3) ; END.

Рис. 5.2. Структура программы иа Рис. 5.3. Пример простой программы

языке Паскаль на языке Паскаль

Программа с именем ОБРАБОТКА читает данные из стандартного входного файла INPUT, обрабатывает их и направляет получаемые результаты в стандартный файл OUTPUT.

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

Типы данных в языке Паскаль. Под данными понимаются константы, переменные, выражения или функции. В языке Паскаль все данные классифицируются по типам, каждый из которых представляет определенное множество значений, принимаемых данными. Существуют простые и сложные (структурные) типы данных. Простые типы данных делятся на стандартные и типы данных, определяемые пользователем. К стандартным типам данных относят: целый, действительный, булевый и символьный. В сложных типах данных выделяют четыре разновидности: массивы, файлы, записи и множества.

Рассмотрим подробнее каждый из типов данных.

Тт INTEGER (целый). К этому типу относятся данные, значения которых принадлежат множеству целых чисел в диапазоне [-MAXINT, +MAXINT], где MAXINT является величиной, зависимой от разрядности ЭВМ. Для 16-разрядного микропроцессора МАХШТ=Ъ21Ы. Пример из раздела описания переменных:

VAR I, J, К: INTEGER; (переменные /, У, А:-целого типа}

Тип REAL (действительный). К этому типу относятся данные, значения которых принадлежат множеству действительных чисел, допустимых в данной машине. Пример из раздела описания переменных: 208



VAR В, С: REAL; {переменные В м С относятся к действительным числам}

Тип BOOLEAN (булевый). К этому типу относятся данные, которые принимают только два значения: TRUE или FALSE ( 1 или О ). Пример из раздела описания переменных:

VAR Xl. Х2. F: BOOLEAN; {переменные Х^, Х2, булевого типа}

Тип CHAR (символьный). К этому типу относятся данные, состоящие из символьных переменных или констант, допустимых в данной машине. Символьная константа состоит из последовательности символов, заключенных в апострофы, например

SUMMA, Г, ТАБЛИЦА', + .

Для символьного типа переменных и констант определены функции преобразования, связывающие значение символа с его порядковым номером в упорядоченном наборе символов языка. Например, функция ORD(C) определяет порядковый номер произвольного символа С из заданного набора символов.

Пример из раздела описания:

CONST С =ПАРАМЕТР;

VAR А, В-.CHAR;

{переменные А и .в - символьного типа)

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

Перечислимые типы данных вводятся в программу в раздел описания типов, например

TYPE ПАРАМ ЕТР = (температура, давление, расход, влажность);

После определения типа данных могут быть объявлены его переменные:

VARP: ПАРАМЕТР;

Это означает, что переменная Р может принимать значения: температуры, давления, расхода, влажности.

Упорядоченная последовательность значений, составляющих перечислимый тип данных, нумеруется, начиная с нуля, а над данными перечислимых типов могут выполняться операции сравнения, например:

(расход>влажности) = (3>4)ЕАLSE (ложно),

(расход > давление) = (3> 2)= 77? (истинно).

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



разделе описания типов первым и последним значениями подмножества подряд расположенных величин, в разделе. Например:

TYPE ЦИФРА = 0..9;

СИМВОЛ = A..F; VAR Ц: ЦИФРА;

5: СИМВОЛ;

Массив - упорядоченный набор однотипных элементов с произвольным доступом. Каждый элемент имеет индекс. Индекс в языке Паскаль заключается в квадратные скобки, например А [1J, В [К]. Совокупность элементов, составляюпдая массив, упорядочена по значениям индексов. Массив содержит ограниченное число элементов.

Массив можно объявить в разделе описания переменных следуюпдим образом:

VAR <ИМЯ МАССИВА>: ARRAY {п..т] OF <БАЗОВЫЙ ТИП>;

где п VI т начальное и конечное значения индекса массива соответственно.

Пример из раздела описания переменных типа массив:

VAR X. Y: ARRAY [\..К] OF BOOLEAN;

X, У- переменные, значения которых принадлежат массиву, состоящему из булевых элементов, пронумерованных от 1 до

Файл-упорядоченный набор произвольного числа однотипных элементов с последовательным доступом. Это означает, что в отличие от массивов в файлах место каждого элемента не определено индексом, число элементов не задано и каждый элемент файла становится доступным только после перебора всех предшествующих компонентов. Длины файлов не определены в описаниях, но каждый файл имеет конец, называемый признаком конца файла. Каждому файлу ставится в соответствие функция EOF, которая принимает значение TRUE, если достигнут конец файла, и значение FALSE, если конец не достигнут.

Пример из раздела описания переменных типа файл:

АЛФАВИТ: FILE OF CHAR;

В: FILE OF INTEGER;

Запись-совокупность ограниченного числа логически связанных компонентов, принадлежащих к различным типам. Компоненты записи, называемые полями, различаются по именам полей. Пример из раздела описания записи:

TYPE СТРОКА СЛОВАРЯ = RECORD;

СЛОВО : PACKED ARRA Y [1..16] OF CHAR; ЗНАЧЕНИЕ :P/1C£Z) ARRAY [I..20] OF CHAR; END;

VAR T, S, L: СТРОКА СЛОВАРЯ;

файл символов} файл цельгх чисел}



в данном случае это упакованные массивы разной длины.

Множество-ограниченная совокупность различных элементов простого типа. Пример:

TYPE ЦВЕТ = (ФИОЛ, СИНИЙ, ГОЛУБ, ЗЕЛ, ЖЕЛТ, КРАСН); VAR СПЕКТР: 5£Г OF ЦВЕТ;

Операторы языка Паскаль. Раздел операторов в программе на языке Паскаль начинается служебным словом BEGIN и заканчивается служебным словом END. Каждый из операторов реализует какое-либо действие. Между операторами ставится разделитель

Оператор присваивания выполняет присваивание значения выражения, записанного справа от специального символа: = , переменной, находягцейся слева от этого символа.

Пример:

TYPE ПАРАМЕТР = (ТЕМПЕРАТУРА, ДАВЛЕНИЕ;

РАСХОД); VAR Р: ПАРАМЕТР

К: INTEGER

А:REAL

BEGIN

Р К А

= ТЕМПЕРАТУРА

= 50,5

END.

Усаовный оператор используется для реализации ветвлений в программах и существует в следующих формах:

1) IF L THEN S\ ELSE S2;

где L-логическое выражение; 5*1, 52-операторы; IF (если), THEN (тогда), ELSE (иначе)-служебные слова.

Если выражение L принимает значение TRUE, то выполняется оператор 5*1, а оператор 52 пропускается. Если L=FALSE, то 52 выполняется, а 51 пропускается.

Вторая форма условного оператора является сокращенной:

2) IF L THEN 51;

Если L=TRUE, то выполняется оператор 51, а затем оператор, следующий за 51. Если L = FALSE, то оператор 51 пропускается.

Операторы цикла FOR, WHILE, REPEAT используются для организации циклов (повторений).

Оператор цикла с параметром FOR используется в форме, представленной на рис. 5.4,а. В этом случае при Целых значениях /, т^, приращение параметра цикла равно -f 1 и mi<m2.



FOR L: = m., TO VD BECIN

FOR i:=-m, DDWA/TO DO BEGIN

Циклическая часть программы

Циклическая часть программы

END;

END;

Рис. 5.4. Структура цикла с использованием оператора FOR:

а нрирашенне параметра цикла равно 4- V, а нрирашепие параметра цикла равно - I

Циклическая часть программы заключается в операторные скобки BEGIN, END. Если циклическая часть содержит только один оператор, операторные скобки можно не указывать.

Допускается другая форма записи оператора FOR (рис. 5.4,6). В этом случае при целочисленных значениях i, т^, пц приращение параметра цикла равно - 1 и ту>т2.

Оператор цикла с предусловием WHILE используется в форме, представленной на рис. 5.5. Циклическая часть программы повторяется до тех пор, пока значение логического выражения истинно. Если значение логического выражения всегда ложно, то цикл не выполняется ни разу.

Логическое выражение может содержать следующие логические операции;

AND-логическое умножение (И);

OR-логическое сложение (ИЛИ);

NOT- отрицание; и операции отношения:

> - больше; < = - меньше или равно;

> = -больше или равно; =-равно; <-меньше; < >-не равно.

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

Оператор выбора CASE производит выбор одного из нескольких операторов (рис. 5.7). Селектором в операторе выбора является выражение, значение которого принадлежит целому, булеву шш символьному типу, либо типу, определяемому программистом. Оператор выбора имеет CASE-список с элементами и представляет собой оператор, перед которым записывается одна или несколько констант, отделяемых от него двоеточием. Эти константы должны иметь такой же тип, как селектор. Для вьшолнения будет выбран тот оператор, перед который[ стоит константа, равная значению селектора. Например,

\НИЕ<логическое ВыражениоПО BEGIN

Рис. 5.5. Структура цикла с использованием оператора WILE

Циклическая часть программы

END:



REPEAT

Циклическая часть программь'

CASE i or г. BECIN

UtJTIL<лагическое Выраженае>;

ГРис. 5.6. Структура цикла с использованием оператора REPEAT

Рис. 5.7. Структура программы с использованием оператора выбора CASE

Операторная часть

end; г: becin

Операторная часть

end: 3-.becin

ENB;

Операторная часть

CASE

END;

N OF

1 : WRJTELN {A ); 2: IVRITELN (B); 3: WRITELN (C);

Оператор перехода GOTO служит для обхода участка программы. Оператор записывается в следующем виде:

GOTO т;

где т - метка оператора, на который передается управление. Метка должна быть объявлена в разделе меток. Например, LABEL 3;

3:У:=С+Х;

GOTO 3;

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

READ (1, А2, A3, AN) - обеспечивает чтение данных из стандартного файла с именем INPUT и присвоение прочитанных значений соответствующим переменным А\, А2, A3, AN.

READLN {А\, А2, A3, AN)-выполняется так же, как и процедура READ, за исключением того, что по окончании чтения последней переменной осуществляется переход к началу новой строки стандартного файла INPUT.

WRITE (А 1, А2, A3,AN)-реализует вывод значений переменных 1, А2, A3, AN в стандартный файл OUTPUT в одну строку.

WRITLN {А\, А2, A3, AN) - реализует вывод значений переменных 1, А2, A3, AN в стандартный файл OUTPUT в одну строку и переход к началу следующей строки файла OUTPUT.

9-2509




1 ... 18 19 20 21 22 23 24 ... 27



Как выбрать диван



История мебели



Стили кухонной мебели



Публикации



Инверторы



Приемники