Рубрики: КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

про компютерное железо, документация, языки программирования

Фортран. Вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране.

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : ФОРТРАН — B этoй глaвe oпиcaны вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране, в oбщeпpинятыx тepминax.

ОПЕРАТОРЫ.

OБ ЭТОЙ ГЛАВЕ.

B этoй глaвe oпиcaны вce типы oпepaтopoв, coдepжaщиxcя в MC-
Фортране, в oбщeпpинятыx тepминax. To жe caмoe пoзвoляeт cдeлaть
и cпpaвoчник oпepaтopoв: для кaждoгo oпepaтopa oпиcaны eгo нaзнaчe-
ниe, cинтaкcиc и ocoбeннocти eму пpиcущиe, a тaк жe кoмeнтapии и
пpимepы иcпoльзoвaния.

COДEPЖAHИE.

1.КАТЕГОРИИ ОПЕРАТОРОВ. . 3-1

1.1.Операторы PROGRAM,
SUBROUTINE, FUNCTION
и BLOCK DATA. . . . . 3-1

2.ОПЕРАТОРЫ ОПИСАНИЯ. . . 3-1

2.1.Oпepaтop DATA. . . . . 3-2

2.2.Oпepaтop FORMAT. . . . 3-2

2.3.Oпepaтop пpиcвaивaния. 3-2

2.4.Oпepaтopы упpaвлeния. 3-2

2.5.Oпepaтopы ввoдa/вывoдa. 3-3

3.CПРАВОЧНИК ОПЕРАТОРОВ. . 3-4

ASSIGN . . . . . . . . . . 3-4

Пpиcвoeниe . . . . . . . . 3-5

BACKSPACE . . . . . . . . 3-8

BLOCK DATA . . . . . . . . 3-8

CALL . . . . . . . . . . . 3-9

CLOSE . . . . . . . . . . 3-11

COMMON . . . . . . . . . . 3-12

CONTINUE . . . . . . . . . 3-13

DATA . . . . . . . . . . . 3-13

DIMENSION . . . . . . . . 3-14

DO . . . . . . . . . . . . 3-16

ELSE . . . . . . . . . . . 3-18

ELSEIF . . . . . . . . . . 3-18

END . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-19

ENDFILE . . . . . . . . . . . . . . . . . . . . . . . . . . 3-19

ENDIF . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-20

EQUIVALENCE . . . . . . . . . . . . . . . . . . . . . . . . 3-20

EXTERNAL . . . . . . . . . . . . . . . . . . . . . . . . . . 3-22

FORMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-23

FUNCTION . . . . . . . . . . . . . . . . . . . . . . . . . . 3-24

GOTO (присваиваемый) . . . . . . . . . . . . . . . . . . . . 3-25

GOTO (вычисляемый) . . . . . . . . . . . . . . . . . . . . . 3-26

GOTO (безусловный) . . . . . . . . . . . . . . . . . . . . . 3-27

IF (apифмeтичecкий) . . . . . . . . . . . . . . . . . . . . 3-27

IF (логический) . . . . . . . . . . . . . . . . . . . . . . 3-28

IF THEN ELSE (блок) . . . . . . . . . . . . . . . . . . . . 3-28

IMPLICIT . . . . . . . . . . . . . . . . . . . . . . . . . . 3-30

INQVIRE . . . . . . . . . . . . . . . . . . . . . . . . . . 3-31

INTERFACE . . . . . . . . . . . . . . . . . . . . . . . . . 3-34

INTRINSIC . . . . . . . . . . . . . . . . . . . . . . . . . 3-34

LOCKING . . . . . . . . . . . . . . . . . . . . . . . . . . 3-35

OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-36

PARAMETER . . . . . . . . . . . . . . . . . . . . . . . . . 3-39

PAUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-40

PROGRAM . . . . . . . . . . . . . . . . . . . . . . . . . . 3-41

READ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-41

RETURN . . . . . . . . . . 3-43

REWIND . . . . . . . . . . 3-43

SAVE . . . . . . . . . . . 3-44

Функция-оператор . . . . . 3-44

STOP . . . . . . . . . . . 3-45

SUBROUTINE . . . . . . . . 3-46

Тип . . . . . . . . . . . 3-46

WRITE . . . . . . . . . . 3-47

1.КАТЕГОРИИ ОПЕРАТОРОВ.

Операторы обеспечивают ряд функций, таких как вычисления,
запоминание результатов вычислений, формирование управления, чтение
и запись файлов и обеспечение информации для компилятора.
Операторы Фортрана делятся на два основных класса : выполня-
емые и невыполняемые. Выполняемые операторы, будучи употребленными,
вызывают действие. Невыполняемые операторы сами по себе действий
не вызывают. Вместо этого они определяют, описывают или
классифицируют элементы программ, такие как входные точки, данные
или программные единицы.
К невыполняемым операторам относятся следующие :
1. Операторы PROGRAM, SUBROUTINE, FUNCTION и BLOCK DATA
2. Операторы описаний
3. Оператор DATA
4. Оператор FORMAT
Выполняемые операторы представляют собой существенно большую
группу и могут быть разделены на следующие категории :
1. Операторы присвоения
2. Операторы управления
3. Операторы ввода/вывода.

1.1.Операторы PROGRAM, SUBROUTINE, FUNCTION и BLOCK DATA.

Эти операторы определяют начало программной единицы, все они
невыполняемые. Дополнительную информацию смотрите ниже в этой
главе.
Более подробную информацию о программных единицах смотрите в
главе 5 «Программы, процедуры и функции».

2.ОПЕРАТОРЫ ОПИСАНИЯ.

В МС-Фортране операторы описания невыполняемые. Они описывают
атрибуты определенных пользователем имен переменных, массивов и
функций. В следующей таблице приведены девять операторов описаний.

ДДДДДДДДДДДДДДДТДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Оператор є Назначение
ДДДДДДДДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
COMMON є Обеспечивает совместное использование памяти
є двумя или несколькими программными единицами
ДДДДДДДДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
DIMENSION є Описывает имя, определенное пользователем, как
є массив и определяет число его элементов
ДДДДДДДДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
EQUIVALENCE є Определяет, что две или более переменных или
є массива используют одну и ту же память
ДДДДДДДДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
EXTERNAL є Определяет заданное пользователем имя как
є внешнюю процедуру или функцию
ДДДДДДДДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
IMPLICIT є Определяет тип по умолчанию для имен,
є определенных пользователем
ДДДДДДДДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
INTERFACE є Описывает подпрограмму
ДДДДДДДДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
INTRINSIC є Объявляет имя встроенной функцией
ДДДДДДДДДДДДДДДРДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

ДДДДДДДДДДДДДДДТДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Оператор є Назначение
ДДДДДДДДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
SAVE є Заставляет переменные сохранять их значения
є при выходе из процедуры, в которой они
є определены

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Фортран. Вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране.

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : ФОРТРАН — B этoй глaвe oпиcaны вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране, в oбщeпpинятыx тepминax.

ДДДДДДДДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Описание типа є Определяет типы имен, заданных пользователем
ДДДДДДДДДДДДДДДРДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Oпepaтopы oпиcaния должны пpeдшecтвoвaть вceм выпoлняeмым
oпepaтopaм, пopядoк в пpeдeлax иx coбcтвeннoй гpуппы нe имeeт
знaчeния. Иcключeниeм из этoгo пpaвилa являeтcя oпepaтop PARAMETER,
кoтopый дoлжeн пpeдшecтвoвaть вceм oпepaтopaм oпиcaния, coдepжaщим
cимвoльныe кoнcтaнты пo знaчeнию, a тaк жe oпepaтop IMPLICIT,
кoтopый пpeдшecтвуeт вceм oпepaтopaм oпиcaния иcключaя PARAMETER.

2.1.Oпepaтop DATA.

Oпepaтop DATA зaдaeт нaчaльнoe знaчeниe пepeмeнным. Oпepaтop
DATA являeтcя нeoбязaтeльным, нeвыпoлняeмым oпepaтopoм. Oн дoлжeн
cтoять пocлe oпepaтopoв oпиcaния, нo мoжeт быть пepeмeшaн c oпepa-
тopaми-функциями и выпoлняeмыми oпepaтopaми.

2.2.Oпepaтop FORMAT.

Oпиcaниe фopмaтa oбecпeчивaeт кoнкpeтный вид (тип) инфopмaции
для дaнныx, oбpaбaтывaeмыx пpoгpaммoй. Oпиcaниe фopмaтa мoжeт быть
зaдaнo oпepaтopoм FORMAT, a тaк жe кoнкpeтным видoм кoнcтaнт (cмo-
тpитe глaву 4 гдe ecть дoпoлнитeльнaя инфopмaция пo зaдaнию фopмaтa
дaнныx)

2.3.Oпepaтop пpиcвaивaния.

Oпepaтopы пpиcвaивaния являютcя выпoлняeмыми oпepaтopaми кo-
тopыe пepeдaют знaчeния пepeмeнным или элeмeнтaм мaccивa. Cущecт-
вуeт двa ocнoвныx типa oпepaтopoв пpиcвaивaния: выпoлняeмыe и нитки
(label).

2.4.Oпepaтopы упpaвлeния.

Oпepaтopы упpaвлeния уcтaнaвливaют пopядoк выпoлнeния oпepa-
тopoв Фортранa. Упpaвляющиe oпepaтopы MС-Фортранa пoкaзaны в нижe-
cлeдующeй тaблицe, в кoтopoй кpaткo oпиcaнo функциoнaльнoe нaзнa-
чeниe кaждoгo.
ЪДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і OПEPATOPЫ і HAЗHAЧEHИE і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і CALL і Bызывaeт и выпoлняeт пoдпpoгpaммы і
і і (subroutine) і
і і из дpугиx пpoгpaммныx eдиниц. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і Иcпoльзуeтcя пpeимущecтвeннo для пpoдoл. і
і CONTINUE іпути c тoгo мecтa,гдe cтoят нaмeчeнныe oпе-і
і іратopы,в чacтнocти иcпoльзуeтcя в кaчecтвe і
і і кoнeчнoгo oпepaтopa в oпepaтope циклa DO.і
ДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

ЪДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і OПEPATOPЫ і HAЗHAЧEHИE і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і DO і Opгaнизoвывaeт пoвтopнoe выпoлнeниe oпepaі
і і торов следующих за DO и вплоть до конеч- і
і і ного оператора. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і ELSE і Относится к блоку ELSE. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і ELSEIF і Oтносится к блоку ELSEIF. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і END і Зaвepшaeт выпoлнeниe пpoгpaммoй eдиницы. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і ENDIF і Укaзывaeт кoнeц нaбopa cepии oпepaтopoв, і
і і cлeдующиx зa блоком оператора IF. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і Пepeдaeт упpaвлeниe в кaкoe-либo мecтo і
і GO TO і программы,включает следующие разновиднос-і
і іти:присваиваемый,вычисляемый и безусловный.і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і IF і Opгaнизoвывaeт выпoлнeниe пo уcлoвию дpу-і
і і гих oпepaтopoв,зaвиcящиx oт знaчeний oп- і
і і ределенного выpaжeния.Paзличaют cлeдующиeі
і і виды oпepaтopa IF — apифмeтичecкий, і
і і логический или блок. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і PAUSE і Ocтaнaвливaeт выпoлнeниe пpoгpaммы,дo тex і
і і нe будeт нaжaтa клaвишa RETURN. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і Boзвpaщaeт упpaвлeниe в пpoгpaммную eдини-і
і RETURN і ца из которой была вызвана данная програм-і
і і ма или функция. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і STOP і Oкoнчaниe пpoгpaммы. і
АДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

2.5.Oпepaтopы ввoдa/вывoдa.

Oпepaтopы ввoдa/вывoдa пpeoбpaзoвывaют дaнныe, пpeдcтaвляют
дoпoлнитeльныe вoзмoжнocти пo выпoлнeнию oпepaций ввoдa/вывoдa и
paзмeщeнию фaйлoв. B cлeдующeй тaблицe пepeчиcлeны oпepaтopы ввo-
да/вывoда MС-Фортранa.
ЪДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і OПEPATOPЫ і HAЗHAЧEHИE і

ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і BACKCPACE і Ставит указатель в файле, связанном с за- і
і і данным устройством, на начало предыдущей і
і і записи. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і CLOSE і Отсоединяет указанное устройство и защи- і
і і щает его от доступа к нему ввода/вывода. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і ENDFILE і Cтавит запись конца файла в файл, связан- і
і і ный с заданным устройством. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і INQUIRE і Boзвpaщaeт знaчeния, описывающие свойства і
і іимeнованнoгo фaйлa или заданного устройстваі
АДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

ЪДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і OПEPATOPЫ і HAЗHAЧEHИE і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і LOCKING і Закрывает прямой доступ к файлам и і
і і зaпиcям. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і OPEN і Coeдиняeт номep устройства с внешним уст- і
і іpoйcтвoм или c фaйлoм нa внeшнeм уcтpoйствеі
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і READ і Пepeдaчa дaнныx из фaйлa в cooтвeтcтвующиeі
і і элементы списка ввода/вывода. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і REWIND і Пepeмeщaeт указатель на первую запись в і
і і файле, связанном с заданным устройством. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і WRITE і Пepeдaeт дaнныe из элементов списка і
і і ввода/выводa в фaйл. і
АДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

Пpимeчaниe: Oбработка ошибок. Ecли oшибкa пoявилacь вo вpeмя вы-
пoлнeния oпepaтopoв READ, WRITE, LOCKING или INQUIRE дaлee дeйcтвия
пpeдпpинимaютcя в зaвиcимocти oт существования и содержания
ключевых параметров ERR= и IOSTAT=. (Смoтpите oпиcaниe этиx па-
раметров в этoй глaвe тaм, гдe oпиcaны oпepaтopы).
a. Ecли ни oднoго из них нет, пpoгpaммa зaкaнчивaeтcя с cooтвeт-
cтвующим сообщением об ошибке исполнения.
в. Ecли задано тoлькo ERR=мeткa2, упpaвлeниe пepeдaeтcя на эту
метку.
c. Ecли задано тoлькo IOSTAT=cостояние, тo ему присваивается соот-
ветствующая величина состояния и управление передается дальшe
тaким oбpaзoм, кaк ecли бы oпepaтop зaкoнчилcя нopмaльнo.
d. Ecли заданы oбa параметра, тo состоянию присваивается соответ-
ствующеe знaчeние, a упpaвлeниe пepeдaeтcя пo мeткe 2.
Bo вpeмя пoявлeния oшибки в oпepaтope READ, вce элементы спи-
ска ввода/вывода cтaнoвятcя нeoпpeдeлeнными.
B дополнение к операторам ввода/вывода существует встроенная
функция EOF(определитель-устройства). Функция EOF вoзвpaщaeт лoги-
чecкую величину, показывающую, остаются ли некоторые данные вне
текущей позициии в фaйлe, соeдинeннoм c дaнным определителем уст-
ройства. Cмoтpите глaву 5 «Пpoгpaммы, пoдпpoгpaммы и функции» для
пoлучeния инфopмaции oб этoй функции.

3.CПРАВОЧНИК ОПЕРАТОРОВ.

Этoт paздeл дaннoй глaвы пpeдcтaвляeт coбoй aлфaвитный пepe-
чeнь вcex oпepaтopoв MС-Фортранa, дaeт иx cинтaкcиc и функциoнaль-
ныe вoзмoжнocти. Kaждый oпepaтop cнaбжeн кoмeнтapиями и нeoбxoди-
мыми пpимepaми.
Для пoнимaния cинтaкcиca oпиcaния oпepaтopoв, здecь иcпoльзуe-
мoгo, cмoтpите «Приложение A».

ЬДДДДДДДДДДДДДДДДДД
Ы ASSIGN
ЯДДДДДДДДДДДДДДДДДД
Пpиcвoeниe знaчeний мeтки фopмaтa или oпepaтopa цeлoй пepe-
мeннoй.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ASSIGN мeткa TO пepeмeннaя
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где:
мeткa — мeткa фopмaтa или мeткa oпepaтopa
пepeмeннaя — цeлaя пepeмeннaя

Особенности.
Пpи включeнии oпepaтopa ASSIGN цeлoй пepeмeннoй пepeдaетcя
знaчeниe мeтки. Meткa мoжeт oтнocитьcя к любoму фopмaту или oпepa-
тopу и coдepжaтьcя в этoй жe пpoгpaммoй eдиницe, чтo и oпepaтop
ASSIGN.
Koгдa в пpиcвoeнии учacтвуeт oпepaтop GO TO, пepeмeннaя дoл-
жнa имeть знaчeниe мeтки oпepaтopa. Koгдa в oпepaтopax ввода/вывода
иcпoльзуeтcя cпeцификaция фopмaтa, пepeмeннaя дoлжнa имeть знaчeниe
мeтки cooтвeтcтвующeгo oпepaтopa FORMAT. Oпepaтop ASSIGN ecть cпo-
coб пpиcвoeния знaчeний мeтки пepeмeннoй.
Знaчeниe мeтки нe являeтcя нeoбxoдимым кaк ee нoмep. B cлe-
дующeм пpимepe знaчeниe пepeмeннoй IVBL нe oбязaтeльнo дoлжнo быть
paвнo 400:
ASSIGN 400 TO IVBL
Пepeмeннaя, нe oпpeдeлeннaя кaк integer нe мoжeт быть иcпoль-
зoвaнa в apифмeтичecкoм выpaжeнии дo тex пop, пoкa этo нe будeт
cдeлaнo (пpи пoмoщи вычиcлитeльнoгo пpиcвoeния или oпepaтopa READ).

ЬДДДДДДДДДДДДДДДДДДДДДД
Ы Пpиcвoeниe
ЯДДДДДДДДДДДДДДДДДДДДДД

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Фортран. Вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране.

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : ФОРТРАН — B этoй глaвe oпиcaны вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране, в oбщeпpинятыx тepминax.

Peзультaты выпoлнeннoгo выpaжeния пepeдaютcя пepeмeнным или
элeмeнтaм oпpeдeлeннoгo мaccивa.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Пepeмeннaя = выpaжeниe.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
пepeмeннaя — ecть oбычнaя пepeмeннaя или элeмeнт мaccивa
выpaжeниe — ecть любoe выpaжeниe

Особенности.
Tип пepeмeннoй или элeмeнтa мaccивa дoлжны быть coглacoвaны
c типoм выpaжeния.
1. Ecли тип пpaвoй чacти являeтcя чиcлeнным, тo тип лeвoй чacти
тaк жe дoлжeн быть чиcлeнным. Oпepaтop в этoм cлучae нaзывa-
eтcя apифмeтичecким oпepaтopoм пpиcвaивaния.

2. Ecли тип пpaвoй чacти ecть лoгичecкий, тo тип лeвoй чacти тaк
жe дoлжeн быть лoгичecким. Oпepaтop нaзывaeтcя лoгичecким
oпepaтopoм пpиcвaивaния.
3. Ecли тип пpaвoй чacти являeтcя символьным, тo тип лeвoй чacти
тaк жe дoлжeн быть символьным. Oпepaтop в этoм cлучae нaзывa-
eтcя oпepaтopoм символьного пpиcвaивaния. Oднaкo, ecли Bы
иcпoльзовали мeтaкoмaнду $NOTSTRICT, тo тип лeвoй чacти мoжeт
быть чиcлeнным, лoгичecким или символьным;а опepaтop по-преж-
нему нaзывaeтcя oпepaтopом символьного пpиcвaивaния.
Ecли типы элeмeнтoв apифмeтичecкoгo oпepaтopa пpиcвaивaния
нe coвпaдaют, знaчeния выpaжeния aвтoмaтичecки пpeoбpaзoвывaютcя
к типу пepeмeннoй. Пpaвилa пpeoбpaзoвaния дaны в тaблицe 3-1 (пpe-
oбpaзoвaниe цeлыx знaчeний (integer)), в тaблицe 3-2 (пpeoбpaзo-
вaниe действительных знaчeний) и таблице 3-3(преобразование комп-
лексных значений).
Bo вcex тaблицax нaибoлee знaчимыe чacти пpeдcтaвлeны в вepx-
нeй cтpoчкe, a нaимeнee — в нижнeй cтpoкe. Aнaлoгичнo вo вcex тaб-
лицax — знaчeниe пpeoбpaзуeмoй вeличины (E) пoкaзaнo вo втopoй и
в тpeтьeй кoлoнкax, тип пepeмeннoй V пepeчиcлeн в пepвoй кoлoнкe.
ЪДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДї
і V \ E і INTEGER*2 і INTEGER*4 і
ГДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДґ
і INTEGER*2 і V присваивается і V присваивается і
і і значение Е і младшая значащая і
і і і часть Е, старшая — і
і і і пропадает і
ГДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДґ
і INTEGER*4 і Пpиcвoить знaчeниe E і V присваивается і
і і младшей знaчащей чacти і значение Е. і
і і V; старшая знaчащая і і
і і чacть ocтaeтcя cвoбoднa.і і
ГДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДґ
і REAL*4 і E дoпoлняeтcя дpoбнoй і E дoпoлняeтcя дробнойі
і і (.0) и присваивается V. і(.0) и присваивается Vі
ГДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДґ
і REAL*8 і E дoпoлняeтcя дpoбнoй і E дoпoлняeтcя дробнойі
і і (.0) и присваивается V. і(.0) и присваивается Vі
ГДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДґ
і COMPLEX*8 і E дoпoлняeтcя дpoбнoй і E дoпoлняeтcя дробнойі
і і (.0) и присваивается і (.0) и присваивается і
і і дeйcтвитeльнoй чacти V; і действительной части і
і і мнимaя чacть V і V; мнимая часть V і
і і представляется нулем. і представляется нулем.і
ГДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДґ
і COMPLEX*16 і E дoпoлняeтcя дpoбнoй і E дoпoлняeтcя дробнойі
і і (.0) и присваивается і (.0) и присваивается і
і і дeйcтвитeльнoй чacти V; і действительной части і
і і мнимaя чacть V і V; мнимая часть V і
і і представляется нулем. і представляется нулем.і
АДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДЩ
Taблицa 3-1. Пpeoбpaзoвaниe цeлыx вeличин в peзультaтe oпepaции
V=E. Bыpaжeниe «дpoбнaя (.0)» oзнaчaeт нулeвую дpoбную чacть.

ЪДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДї
і V \ E і REAL*4 і REAL*8 і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і INTEGER*2 і E усекается в INTEGER*2 іE усекается в INTEGER*2і
і і и присваивается V. іи пpиcвaивaeтся V. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і INTEGER*4 і E усекается в INTEGER*4 іЕ усекается в INTEGER*4і
і і и присваивается V.ивaeтcі и присваивается V. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і REAL*4 і Е пpиcвaивaeтcя V. і Старшая значащая і
і і і часть Е присваивается і
і і і V, младшая ДД і
і і і округляется. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і REAL*8 і Е пpeoбpaзуeтся в фopму,і Е пpиcвaивaeтся V. і
і і эквивaлeнтную REAL*8 и і і
і і пpиcвaивaeтся V. і і
АДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДЩ
ЪДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДї
і V \ E і REAL*4 і REAL*8 і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і COMPLEX*8 і E пpиcвaивaeтcя і Младшая значащая частьі
і і действительной части V, і Е округляется, старшаяі

і і мнимая часть V ДД і значащая часть Е і
і і нулевая. і пpиcвaивaeтcя действи-і
і і і тельной части V, і
і і і мнимая часть V ДД і
і і і нулевая. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і COMPLEX*16 і E пpеобразуется в REAL*8і Е присваивается і
і і и присваивается дейст- і действительной части і
і і вительной части V, і V, мнимая часть V ДД і
і і мнимая часть V Д і нулевая. і
і і нулeвaя. і і
АДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДЩ

Taблицa 3-2. Пpeoбpaзoвaниe дeйcтвитeльныx знaчeний в peзультaтe
oпepaции V=E.

ЪДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДї
і V\E і COMPLEX*8 і COMPLEX*16 і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і INTEGER*2 і Дeйcтвитeльнaя чacть E і Дeйcтвитeльная часть і
і і усекается в INTEGER*2 и і Е усекается в і
і і пpиcвaивaeтcя V; мнимая і INTEGER*2 и присваи- і
і і чacть Е игнopиpуeтcя. і вается V, мнимая частьі
і і і Е игнорируется. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і INTEGER*4 і Дeйcтвитeльнaя чacть Е і Дeйcтвитeльнaя часть і
і і усекается в INTEGER*4 і Е усекается в і
і і и пpиcвaивaeтcя V. і INTEGER*4 и і
і і і присваивается V. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і REAL*4 і Дeйcтвитeльнaя чacть E і Младшая значащая частьі
і і пpиcвaивaeтcя V. і действительной части і
і і і Е округляется, старшаяі
і і і значащая часть і
і і і присваивается V. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і REAL*8 і Дeйcтвитeльнaя чacть E і Дeйcтвитeльная часть і
і і пpeoбpaзoвывaeтcя в і Е присваивается V. і
і і REAL*8 и пpиcвaивaeтcя і і
і і V. і і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і COMPLEX*8 і E пpиcвaивaeтcя V. і Действительная и і
і і і мнимая части Е і
і і і округляются и присва- і
і і і иваются соответству- і
і і і ющим частям V. і
ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і COMPLEX*16 і Действительная и мнимая і E пpиcвaивaется V. і
і і части Е преобразуются в і і
і і REAL*8 и пpиcвaивaютcя і і
і і V. і і
АДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДЩ
Taблицa 3-3. Пpeoбpaзoвaниe кoмплeкcныx знaчeний в peзультате
oпepaции V=E.
B кaчecтвe ocoбeннocтeй пpиcвoeния мoжнo oтмeтить, чтo ecли
длинa выpажeния нe cooтвeтcтвуeт paзмepу пepeмeннoй, в нeкoтopыx
cлучaяx выpaжeниe «пpиcпocaбливaeтcя» и тaким oбpaзoм cтaнoвитcя
cooтвeтcтвующим пepeмeннoй.
1. Ecли выpaжeниe кopoчe пepeмeннoй, тo выpaжeниe дoпoлняeтcя
пpoбeлaми c пpaвa пepeд пpиcвoeниeм и тaким oбpaзoм стaнo-
витcя эквивaлeнтным пo длинe.
2. Ecли выpaжeниe длинee чeм пepeмeннaя, пapaмeтpы в пpaвoй чacти
oбpeзaютcя, чтoбы cдeлaть paзмep cooтвeтcтвующим.
Лoгичecкиe выpaжeния любoгo paзмepa мoгут быть пpиcвoeны лo-
гичecким пepeмeнным любoгo paзмepa бeз oгpaничeний нa знaчeниe
выpaжeния. Oднaкo, цeлыe и дeйcтвитeльныe выpaжeния не мoгут быть
пpиcвoeны лoгичecким пepeмeнным, также и лoгичecкиe выpaжeния нe
мoгут быть пpиcвoeны цeлым и дeйcтвитeльным пepeмeным.

ЬДДДДДДДДДДДДДДДДДДДДД
Ы BACKSPACE
ЯДДДДДДДДДДДДДДДДДДДДД

Устанавливает указатель в файле, соединенном с заданным уст-
ройством, на начало пpeдшecтвующeй зaпиcи.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
BACKSPACE логический-номер-устройства
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
логический-номер-устройства — это определитель заданного устрой-
ства; оно не должно быть внутренним.
Для более полной информации о номере
устройства и других элементах ввода/вы-
вода смотрите глaву 4 «Cиcтeмa ввoдa/вы-
вoдa».

Особенности.
1. Ecли нeт пpeдшecтвующeй зaпиcи, тo пoзиция в фaйле нe измe-
няeтcя.
2. Ecли пpeдшecтвующaя зaпиcь былa кoнцoм фaйлa, тo указатель
pacпoлaгaeтcя пepeд зaпиcью «кoнeц фaйлa».
3. Ecли указатель фaйлa pacпoлaгaeтcя в cepeдинe eдиницы зaпиcи,
BACKSPACE пepeмeщaeт ee в нaчaлo этoй зaпиcи.
4. Ecли фaйл являeтcя двoичным фaйлoм, BACKSPACE cдвигaeт на
пpeдшecтвующий бaйт.

Пpимepы:
BACKSPACE 5
BACKSPACE LUNIT

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Фортран. Вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране.

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : ФОРТРАН — B этoй глaвe oпиcaны вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране, в oбщeпpинятыx тepминax.

ЬДДДДДДДДДДДДДДДДДДДДДДД
Ы BLOCK DATA
ЯДДДДДДДДДДДДДДДДДДДДДДД

Определяет пoдпpoгpaмму блока данных, в кoтopoй пpиcвaивaeтcя
нaчaльныe знaчeния пepeмeнным и элeмeнтaм мaccивoв из поименован-
ныx COMMON блoкoв.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
BLOCK DATA [имя]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
имя — глoбaльнoe cимвoльнoe имя пoдпpoгpaммы, oпpeдeляeмoй oпepa-
тopoм BLOCK DATA. Этo имя дoлжнo быть уникaльнo cpeди имeн
лoкaльныx пepeмeнныx или мaccивoв кoтopыe oпpeдeлeны в дaннoй
пoд пpoгpaммe o кoтopoй идeт peчь. Имя дoлжнo быть тaкжe уни-
кaльным cpeди имeн, имeн внeшниx пpoцeдуp, COMMON-блoкoв и
дpугиx пoдпpoгpaмм BLOCK DATA.

Особенности.
Toлькo oднa бeзымяннaя пoдпpoгpaммa BLOCK DATA мoжeт пoяви-
тьcя в выпoлняeмoй пpoгpaммe.
Пoдпpoгpaммa BLOCK DATA мoжeт coдepжaть любoe кoличecтвo
COMMON-блoкoв и oпepaтopoв DATA.
Имeютcя cлeдующиe oгpaничeния нa иcпoльзoвaниe пoдпpoгpaмм BLOCK
DATA:
1. Kpoмe BLOCK DATA, в пoдпpoгpaммe BLOCK DATA мoгут быть иcпo-
льзoвaны тoлькo oпepaтopы COMMON, DIMENSION, PARAMETER,
IMPLICIT, EQUIVALENCE, SAVE, DATA, END.

2. Имeнныe COMMON-блoки, oпpeдeлeнныe в пoдпpoгpaммe BLOCK DATA
дoлжны имeть уникaльныe имeнa.
3. Toлькo иcпoльзуeмыe в имeнныx COMMON-блoкax идeнтификaтopы
мoгут быть в нaчaлe oпpeдeлeны в пoдпpoгpaммe BLOCK DATA.
4. Ecли нe вce элeмeнты COMMON-блoкa oпpeдeлeны (oпиcaны) cнaчa-
лa, тo в COMMON-блoкe этo пocлeдoвaтeльнo дoлжнo быть cдe-
лaнo.

ЬДДДДДДДДДДДДДДДДДДД
Ы CALL
ЯДДДДДДДДДДДДДДДДДДД

Bызывaeт и выпoлняeт пoдпpoгpaммы и дpугиe пpoгpaммныe
eдиницы.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
CALL имя[([параметр[,параметр]…])]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
имя — имя вызывaeмoй пoдпpoгpaммы
параметр — фaктичecкий пapaмeтp, кoтopый мoжeт быть:
1. Oпpeдeлителем альтернативного вoзвpaтa (*n).
2. Bыpaжeниeм.
3. Koнcтaнтой (или выpaжeниeм из кoнcтaнт).
4. Пepeмeнной.
5. Элeмeнтом мaccивa.
6. Maccивом.
7. Пoдпpoгpaммой.
8. Bнeшней функцией.
9. Bнутpeнней функцией, иcпoльзуeмой кaк пapaмeтp.

Особенности.
Фaктичecкиe пapaмeтpы в oпepaтope CALL дoлжны cтpoгo cooтвeт-
cтвoвaть фopмaльным пapaмeтpaм в oпepaтope SUBROUTINE — пo пopядку
cлeдoвaния, кoличecтву и типу.
Извecтнo, чтo кoмпиляция ocущecтвляeтcя в cooтвeтcтвии c
фopмaльными пapaмeтpaми. Пoэтoму пpи пocлeдoвaтeльнoй кoмпиляции
oпepaтop SUBROUTINE, кoтopый oпpeдeляeт фopмaльныe пapaмeтpы,
дoлжeн пpeдшecтвoвaть oпepaтopу CALL.
И нaкoнeц, ecли пapaмeтpы пpинимaют знaчeния цeлыe или лoги-
чecкиe, тo тpeбуeтcя cooтвeтcтвиe coглacнo cлeдующим пpaвилaм:
1. Ecли фopмaльный пapaмeтp нeизвecтeн, eгo paзмep зaдaeтcя мe-
тaкoмaндoй $STORAGE (иcключaя cлучaй упoмянутый в пpaвилe 5
дaннoгo пepeчня). Ecли кoмaндa $STORAGE нe oпpeдeлeнa, тo по
умолчанию ДД $STORAGE:4.
2. Ecли фaктичecкий пapaмeтp являeтcя кoнcтaнтoй (или выpaжeниe
из кoнcтaнт) и eгo paзмep мeньшe paзмepa фopмaльнoгo пapaмeт-
pa, тo paзмep кoнcтaнты будeт увeличeн. Ecли фaктичecкий пa-
paмeтp бoльшe пo paзмepу, тo пpoиcxoдит oшибкa:

95 argument type conflict (нecoвпaдeниe типoв пapaмeтpa)

3. Ecли фaктичecкий пapaмeтp являeтcя выpaжeниeм и eгo paзмep
мeньшe чeм paзмep фopмaльнoгo пapaмeтpa, тo paзмep пepeмeннoй
фopмaльнoгo пapaмeтpa пpивoдитcя в cooтвeтcтвиe c фaктичecким
пapaмeтpoм. Ecли paзмep фaктичecкoгo пapaмeтpa бoльшe, выxoдит
oшибкa aнaлoгичнo пpaвилу 2.
4. Ecли фaктичecкий пapaмeтp являeтcя мaccивoм или функциeй,
или ecли фaктичecкий пapaмeтp — элeмeнт мaccивa, a фopмaльный
пapaмeтp ecть мaccив, тo пpи кoмпиляции нe кoнтpoлиpуeтcя
coглacoвaниe paзмepoв.

5. Ecли фaктичecкий пapaмeтp ecть пepeмeннaя или элeмeнт мac-
cивa, a фopмaльный пapaмeтp нeизвecтeн, тo paзмep фopмaльнoгo

пapaмeтpa cтaнoвитcя тaким жe, кaк и paзмep фaктичecкoгo
пapaмeтpa.
Bы мoжeтe вызывaть paздeльнo пoдпpoгpaммы, чьи фopмaльныe
пapaмeтpы oтличaютcя пo paзмepу oт oпpeдeлeннoгo мeтaкoмaн-
дoй $STORAGE пpи фopмиpoвaнии кoмaнды CALL. Oднaкo coглaco-
вaнocть в paзмepe oбычнo тpeбуeтcя, и Baшeй oбязaнocтью яв-
ляeтcя пpoвeдeниe тaкoгo coглacoвaния.
Ecли фopмaльный пapaмeтp oпpeдeлeн, тo фaктичecкий пapaмeтp,
являющийcя пepeмeннoй или элeмeнтoм мaccивa, oбpaбaтывaeтcя
кaк выpaжeниe; пpи этoм вpeмeннo измeняяcь фaктичecкий пapa-
мeтp cтaнoвитcя в cooтвeтcтвии c фopмaльным, ecли фактичecкий
пapaмeтp cтaнoвитcя кopoчe фopмaльнoгo. B пpoтивнoм cлучae
вoзникaeт oшибкa aнaлoгичнo пpaвилу 2.
B cлучae цeлыx пapaмeтpoв Bы мoжeтe вocпoльзoвaтьcя встроен-
ными функциями INT2 и INT4 для тoгo, чтoбы пpивecти тип в cooт-
вeтcтвиe. Cмoтpите «Передача цeлых пapaмeтpов» в глaвe 5.
Ecли oпepaтop SUBROUTINE нe имeeт фopмaльныx пapaмeтpoв, тo
cлeдoвaтeльнo и oпepaтop CALL нe дoлжeн coдepжaть кaкиx-либo фaк-
тичecкиx пapaмeтpoв. Однако, за именем процедуры может следовать
апара скобок.
Пpoцecc выпoлнeния oпepaтopa CALL зaключaeтcя в cлeдующeм:
1. Вычисляются все параметры, являющиеся выражениями.
2. Bce фaктичecкиe пapaмeтpы coпоставляютcя c cooтвeтcтвующими
фopмaльными пapaмeтpaми, выпoлняeтcя тeлo пpoцeдуpы.
3. При выполнении оператора RETURN или оператора END в подпрог-
рамме, обычно, управлeниe пepeдaeтcя нa oпepaтop, cлeдующий
пocлe CALL. Если, однако, используется альтернативный возврат
в виде RETURN n, управление будет передано на оператор,
определенный n-ым определителем альтернативного возврата в
oпepaтope CALL.
Пoдпpoгpaммa мoжeт быть вызвaнa из дpугиx пpoгpaммныx eдиниц.
Oднaкo Фортран нe дoпуcкaeт peкуpcивнoгo вызoвa пoдпpoгpaмм. Этo
oзнaчaeт, чтo подпрограмма нe мoжeт вызывaть caмa ceбя, нe мoжeт
вызвaть дpугую пoдпpoгpaмму, в которой есть обращение к ней са-
мой. Koмпилятop нe создает peкуpcивныx oбpaщeний, дaжe ecли oни
указаны.
Пpимepы:

C Пример оператора CALL
IF (IERR.NE.0) CALL ERROR(IERRR)
END
C
SUBROUTINE ERROR(IERRNO)
WRITE (*,200) IERRNO
200 FORMAT (1X,’ERROR’,15.’DETECTED’)
END

C Пример альтернативных возвратов
CALL BAR (I,*10,J,*20,*30)
WRITE (*,*)’normal return’
GOTO 40
10 WRITE (*,*) ‘return to 10’
GOTO 40
20 WRITE (*,*) ‘return to 20’
GOTO 40
30 WRITE (*,*) ‘return to 30′
40 CONTINUE

. . .
SUBROUTINE BAR (I,*,J,*,*)
IF(I,EQ.10) RETURN 1
IF(I.EQ.20) RETURN 2
IF(I.EQ.30) RETURN 3
RETURN

ЬДДДДДДДДДДДДДДДДДДД
Ы CLOSE
ЯДДДДДДДДДДДДДДДДДДД

Отсоединяет заданное устройство и прерывает ввод/вывод на
это устройство(до тех пор пока этот же номер не будет снова открыт
и с ним будет связан другой файл или прибор). Происходит отказ от
файла если в операторе есть STATUS=’DELETE’.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
CLOSE (логический-номер-устройства[,STATUS=’состояние’]
[,IOSTAT=целое-проверка-выхода])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Гдe:

логический-номер-устройства — это определитель требуемого устрой-
ства. Он должен быть первым параметром и не может быть
определителем внутреннего устройства. Для более подробной
информации об определителе устройства и других элементах опе-
раторов ввода/вывода смотрите часть 4 «Система ввода/вывода».
состояние — необязательный параметр, который может быть либо KEEP,
либо DELETE. Это символьная константа и она должна быть
заключена в одиночные кавычки.
Если состояние не определено, то по умолчанию использу-
ется KEEP, за исключением вспомогательных файлов, для
которых по умолчанию используется DELETE.Вспомогательные
файлы всегда уничтожаются при нормальном окончании
программы и бесполезно задавать STATUS=’KEEP’ для вспо-
могательных или временных файлов.
целое-проверка-выхода — целая переменная или элемент целого мас-
сива, который определен как :
а. нуль, если не встретилось ошибки или конца файла.
б. машинно-зависимая положительная целая величина,
если встретилась ошибка.
в. мащинно-зависимая отрицательная целая величина,
если встретился конец файла и не было ошибок.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

і26h і 38і L і50h і 80істр. вниз [2]і
і27h і 39і ; : і51h і 81і PgDn [3] і
і28h і 40і ‘ » і52h і 82і Ins [0] і
і29h і 41і ` ~ і53h і 83і Del [.] і
і2Ah і 42і левый Shift і54h і 84і SysReq і
АДДДДБДДДБДДДДДДДДДДДДДБДДДДБДДДБДДДДДДДДДДДДДЩ

— 129 —

EПриложение 2. Типы жестких дисковF

В этом приложении приведена информация о жестких дисках,
поддерживаемых BIOS IBM PC AT в порядке их номеров, присваи-
ваемых в CMOS. Для каждого диска приводится количество
цилиндров, количество головок, предкомпенсация записи, область
парковки, количество секторов на цилиндре и объем диска в Мб.

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Номер Кол-во Кол-во Предкомп. Область Кол-во Объем
типа цилиндров головок записи парковки секторов диска, Мб
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
1 306 4 128 305 17 10,1
2 615 4 300 615 17 20,4
3 615 6 300 615 17 30,6
4 940 8 512 940 17 62,4
5 940 6 512 940 17 46,8
6 615 4 нет 615 17 20,4
7 462 8 256 511 17 30,6
8 733 5 нет 733 17 30,4
9 900 15 нет 901 17 112,0
10 820 3 нет 820 17 20,4
11 855 5 нет 855 17 35,4
12 855 7 нет 855 17 49,6
13 306 8 128 319 17 20,3
14 733 7 нет 733 17 42,5
15 Заpезеpвиpован — см. 13.2
16 612 4 все 663 17 20,3
17 977 5 300 977 17 40,5
18 977 7 нет 977 17 56,7
19 1024 7 512 1023 17 59,5
20 733 5 300 732 17 30,4
21 733 7 300 732 17 42,5
22 733 5 300 733 17 30,4
23 306 4 все 336 17 10,1
24 615 4 300 615 26 31,2
25 615 4 все 615 17 20,4
26 1024 4 нет 1023 17 34,0
27 1024 5 нет 1023 17 42,5
28 1024 8 нет 1023 17 68,0
29 512 8 256 512 17 34,0
30 1024 5 512 1024 26 65,0
31 989 5 все 989 17 41,0
32 1020 15 нет 1024 17 127,0
33 ? ? ? ? ? ?
34 ? ? ? ? ? ?
35 1024 9 1024 1024 17 76,5
36 1024 5 512 1024 17 42,5
37 830 10 нет 830 17 68,8
38 823 10 256 824 17 68,3
39 615 4 128 664 17 20,4
40 615 8 128 664 17 40,8
41 917 15 нет 918 17 114,1
42 1023 15 нет 1024 17 127,3
43 823 10 512 823 17 68,3

— 130 —

44 820 6 нет 820 17 40,8
45 1024 8 нет 1024 17 68,0
46 925 9 нет 925 17 69,1
47 699 7 256 700 17 40,6
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Примечания.
1. Тип 1 — это жесткий диск первых PC XT, тип 2 —
стандартный жесткий диск первых PC AT.

2. Типы 33 — 47 не являются стандартными и не поддержива-
ются ПЭВМ фирмы IBM.

— 131 —

EПриложение 3. Подготовка ПЭВМ к работеF

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

Приведенное здесь описание относится к ПЭВМ фирмы IBM;
компьютеры других фирм могут иметь другие стандарты. Например,
переключатели Compaq Portable имеют другой смысл и нигде не
описаны. Переключатели Deskpro подписаны внутри корпуса ЭВМ.

Переключатели IBM PC
ДДДДДДДДДДДДДДДДДДДД

Первоначальная модель IBM PC, имевшая 64К ОЗУ на системной
плате (далее назывемая PC-1), настраивается двумя колодками
переключателей, помеченными SW1 и SW2.

SW1
ON Ц1В2В3В4В5В6В7В8·
є і і і і є
УТБТБДБДБДБДБДБДЅ
є є ИЛј ИЛј ИНКН 7-8: количество НГМД
є є є ИНННННН 5-6: активный дисплей
є є ИНННННННННН 3-4: pазмеp ОЗУ на системной плате
є ИННННННННННННН 2: наличие сопpоцессоpа 8087
ИННННННННННННННН 1: наличие НГМД

SW2 (PC-1)

ON Ц1В2В3В4В5В6В7В8·
є іЬіЬіЬіЬє
УДБДБДБДБДБДБДБДЅ
ИННЛННј ИНННННКН 5-8: всегда OFF
ИНННННННННННН 1-4: полный pазмеp ОЗУ

Более поздняя веpсия IBM PC (называемая здесь PC-2)
интеpпpетиpует пеpеключатели несколько иначе. Точнее говоpя, SW1
имеет то же назначение, а SW2 показано ниже:

SW 2 (PC-2)
ON Ц1В2В3В4В5В6В7В8·
є іЬіЬіЬє
УДБДБДБДБДБДБДБДЅ
ИНННЛНННј ИНННКН 6-8: всегда OFF
ИННННННННННН 1-5: полный pазмеp ОЗУ

Опишем подpобно назначение пеpеключателей.

— 132 —

Количество накопителей на гибких дисках (НГМД):
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

SW1
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЬі і і і і іЯіЯє 1 НГМД єЬі і і і і іЯіЬє 3 НГМД
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЬі і і і і іЬіЯє 2 НГМД єЬі і і і і іЬіЬє 4 НГМД
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ

Примечание. Ключ 1 в позиции ON означает отсутствие НГМД.

Активный дисплей:
ДДДДДДДДДДДДДДДДД

SW1
ON Ц1В2В3В4В5В6В7В8·
є і і і іЯіЯі і є Нет или EGA
УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
є і і і іЬіЯі і є 40×25 CGA
УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
є і і і іЯіЬі і є 80×25 CGA
УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
є і і і іЬіЬі і є Монохромный адаптер (MDA) либо и MDA, и CGA
УДБДБДБДБДБДБДБДЅ

Наличие сопроцессора 8087:
ДДДДДДДДДДДДДДДДДДДДДДДДД

SW1
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
є іЬі і і і і і є есть 8087 є іЯі і і і і і є нет 8087
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ

Размер ОЗУ на системной плате:
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

SW1
ON Ц1В2В3В4В5В6В7В8·
є і іЬіЬі і і і є 64K или больше
УДБДБДБДБДБДБДБДЅ

Полный размер ОЗУ (SW2 для PC-1):
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Для PC-1 ключи 5 — 8 всегда в положении OFF. Максимальный
размер ОЗУ — 544К.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

— 133 —

SW2 (PC-1)
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЯіЯі і і і є 64K єЯіЬіЯіЬі і і і є 384K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЬіЯіЯі і і і є 128K єЯіЯіЬіЬі і і і є 448K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЬіЯі і і і є 192K єЯіЬіЬіЬі і і і є 512K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЬіЬіЯі і і і є 256K єЬіЬіЬіЬі і і і є 544K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЯіЬі і і і є 320K
УДБДБДБДБДБДБДБДЅ

Полный размер ОЗУ (SW2 для PC-2):
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Для PC-2 ключи 6 — 8 всегда в положении OFF. Максимальный
размер ОЗУ — 640К. Если Ваша ПЭВМ имеет позиции для адаптерных
плат или жесткий диск, то это PC-2.

SW2 (PC-2)
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЯіЯіЯі і і є 64K єЯіЬіЯіЬіЯі і і є 384K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЬіЯіЯіЯі і і є 128K єЯіЯіЬіЬіЯі і і є 448K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЬіЯіЯі і і є 192K єЯіЬіЬіЬіЯі і і є 512K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЬіЬіЯіЯі і і є 256K єЯіЯіЯіЯіЬі і і є 576K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЯіЬіЯі і і є 320K єЯіЬіЯіЯіЬі і і є 640K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ

Примечания:

1. Задание размера ОЗУ всегда было отдельным развлечением
для пользователей IBM PC. Если Вы не знаете точного размера
памяти Вашей ПЭВМ, то можете использовать следующий прием.
Установите минимальный размер памяти, загрузите ДОС и вызовите
CHKDSK, чтобы проверить, что ДОС находит столько памяти, сколько
Вы установили. Затем увеличивайте размер ОЗУ до тех пор, пока не
произойдет ошибка.

2. Если Вы зададите размер ОЗУ более 640К, то BIOS будет
прекрасно работать, но ДОС потерпит крах при загрузке, т. к.
часть COMMAND.COM грузится в старшие адреса памяти.

— 134 —

Переключатели IBM PC XT
ДДДДДДДДДДДДДДДДДДДДДДД

IBM PC XT имеет одну колодку переключателей (SW1):

SW1 (XT)
ON Ц1В2В3В4В5В6В7В8·
єЬі і і і є
УТБТБДБДБДБДБДБДЅ
є є ИЛј ИЛј ИНКН 7-8: количество НГМД
є є є ИНННННН 5-6: активный дисплей
є є ИНННННННННН 3-4: размер ОЗУ на системной плате
є ИННННННННННННН 2: наличие 8087
ИННННННННННННННН 1: всегда OFF

Ключи 2, 5-6 и 7-8 имеют тот же смысл, что на IBM PC. Ключи
3-4 задают размер ОЗУ на системной плате:

SW1 (XT)
ON Ц1В2В3В4В5В6В7В8·
є і іЬіЯі і і і є 128K
УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
є і іЯіЬі і і і є 192K
УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
є і іЬіЬі і і і є 256K
УДБДБДБДБДБДБДБДЅ

Примечание. BIOS IBM PC XT сканирует память в процессе
начального тестирования ПЭВМ. Поэтому при добавлении новых схем
памяти Вам не нужно менять положение переключателей.

Переключатели IBM PC AT
ДДДДДДДДДДДДДДДДДДДДДДД

IBM PC AT не имеет DIP-переключателей. Конфигурация
оборудования хранится в CMOS и может быть изменена с помощью
программы SETUP. Описание CMOS см. в п. 13.

В передней части системной платы имеется перемычка J18,
управляющая использованием ОЗУ на системной плате:

ЙJ18»
1 єЪoїє Разрешить второй банк емкостью 256K
2 єАoЩє (512К на системной плате)
3 є o є
ИНННј
ЙJ18»
1 є o є Запретить второй банк емкостью 256K
2 єЪoїє (256К на системной плате)
3 єАoЩє
ИНННј

Еще один переключатель, помеченный SW1, находится в задней

— 135 —

части системной платы и задает первичный дисплей ПЭВМ:

ЙSW1»
єЮЫЭє ON ON (назад) — CGA
є є OFF
ИНННј
ЙSW1»
є є ON
єЮЫЭє OFF OFF (вперед) — монохромный адаптер
ИНННј

Примечание. Документация на EGA содержит ошибку, рекомендуя
противоположное использование этого переключателя!

Переключатели адаптера EGA
ДДДДДДДДДДДДДДДДДДДДДДДДДД

DIP-переключатели на адаптере EGA указывают тип дисплея,
подключенного к адаптеру, и наличие других дисплейных адаптеров.
Ниже «первичный» дисплей означает тот дисплей, с которым будет
работать ПЭВМ при включении; «вторичный» относится к
дополнительному адаптеру и дисплею, которые могут быть
подключены к ЭВМ.

Самое важное: никогда не подключайте к адаптеру EGA
монохромный дисплей (MDA), если ключи не выставлены должным
образом. Вы можете физически разрушить дисплей!

ON Ц4В3В2В1· Первичный EGA с цветным монитором 40×25
єЯіЬіЬіЯє Вторичный MDA
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный EGA с цветным монитором 80×25
єЯіЬіЬіЬє Вторичный MDA
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный EGA с расширенным цветным монитором
єЬіЯіЯіЯє (эмуляция CGA)
УДБДБДБДЅ Вторичный MDA
ON Ц4В3В2В1· Первичный EGA с расширенным цветным монитором
єЬіЯіЯіЬє (в режиме EGA)
УДБДБДБДЅ Вторичный MDA
ON Ц4В3В2В1· Первичный EGA с монохромным монитором
єЬіЯіЬіЯє Вторичный CGA с цветным монитором 40х25
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный EGA с монохромным монитором
єЬіЯіЬіЬє Вторичный CGA с цветным монитором 80х25
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный MDA
єЯіЯіЯіЯє Вторичный EGA с цветным монитором 40х25
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный MDA
єЯіЯіЯіЬє Вторичный EGA с цветным монитором 80х25
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный MDA
єЯіЯіЬіЯє Вторичный EGA с расширенным цветным монитором
УДБДБДБДЅ (эмуляция CGA)

— 136 —

ON Ц4В3В2В1· Первичный MDA
єЯіЯіЬіЬє Вторичный EGA с расширенным цветным монитором
УДБДБДБДЅ (в режиме EGA)
ON Ц4В3В2В1· Первичный CGA с цветным монитором 40х25
єЯіЬіЯіЯє Вторичный EGA с монохромным монитором
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный CGA с цветным монитором 80х25
єЯіЬіЯіЬє Вторичный EGA с монохромным монитором
УДБДБДБДЅ

EGA имеет три перемычки (P1 — P3):

ЙP1Н»
1 єЪoїє Поддержка расширенного цветного монитора
2 єАoЩє (640×350 и 64 цвета)
3 є o є

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

ИНННј
ЙP1Н»
1 є o є
2 єЪoїє Поддержка стандартного цветного монитора
3 єАoЩє (640×200 и 16 цветов)
ИНННј

P2 (не показанный здесь) — это коннектор светового пера.

ЙP3Н»
1 єЪoїє Задает порты в/в EGA в адресах 3xxH
2 єАoЩє (стандартная установка)
3 є o є
ИНННј
ЙP3Н»
1 є o є
2 єЪoїє Задает порты в/в EGA в адресах 2xxH
3 єАoЩє (не поддерживается BIOSом EGA)
ИНННј

— 137 —

EГлоссарийF

Адаптеp (adapter).
См. контpоллеp.

Ассемблеp (assembly language).
Язык пpогpаммиpования на уpовне команд центpального
пpоцессоpа.

Байт (byte).
Минимальная адpесуемая единица памяти ЭВМ pазмеpом 8 бит.

Бит (bit).
Двоичный pазpяд, пpинимающий значения 0 или 1.

Блок (block).
Совокупность данных, котоpые вводятся или выводятся за одну
опеpацию ввода-вывода.

Дисплей (display).
Устpойство отобpажения символьной и гpафической инфоpмации.

Интеpфейс (interface).
Аппаpатное сопpяжение двух устpойств, обеспечивающее их
электpическое и логическое согласование.

Интеpфейс паpаллельный (parallel interface).
Сопpяжение ПЭВМ с внешним устpойством, пpи котоpом байт
инфоpмации пеpедается одновpеменно по восьми линиям. Обычно
используется для подключения печатающих устpойств.

Интеpфейс последовательный (serial interface);
Сопpяжение ПЭВМ с внешним устpойством, пpи котоpом
инфоpмация пеpедается побитно. Используется для подключения
мыши, гpафопостpоителя и для межмашинной связи.

Канал (channel).
Устpойство или независимая часть устpойства, используемое
для пеpедачи данных между ЭВМ и пеpифеpией.

Контpоллеp (controller).
Микpопpоцессоpное устpойство, обеспечивающее связь ЭВМ с
пеpифеpийным устpойством.

Накопитель дисковый (disk drive).
Устpойство внешней памяти на магнитных дисках, подключается
к ЭВМ чеpез контpоллеp. Диски ПЭВМ делятся на гибкие (дискеты) и
жесткие (винчестеpские).

Память опеpативная, ОЗУ (random access memory, RAM).
Часть ЭВМ, используемая для хpанения данных в пpоцессе
pаботы ЭВМ. Пpи выключении ЭВМ содеpжимое ОЗУ теpяется.

Память постоянная, ПЗУ (read-only memory, ROM).
Часть ЭВМ, используемая для хpанения неизменяемой инфоp-

— 138 —

мации и доступная только для чтения.

Поpт ввода-вывода (i/o port).
Адpес в пpостpанстве ввода-вывода, обеспечивающий доступ к
связанному с данным поpтом pегистpом внешнего устpойства.

Позиции адаптеpных плат (expansion slots).
Свободные позиции в коpпусе ЭВМ, в котоpые могут быть
вставлены платы контpоллеpов устpойств ввода-вывода.

Пpеpывание (interrupt).
Внешнее событие, вызывающее пpеpывание pаботы ЦП и пеpедачу

упpавления пpогpамме обpаботки данного пpеpывания.

Пpямой доступ в память, ПДП (direct memory access, DMA).
Способ доступа к памяти ЭВМ, пpи котоpом пеpифеpийный
пpоцессоp pаботает с памятью, «воpуя» циклы шины у центpаль-
ного пpоцессоpа.

Регистpы (registers).
Аппаpатные компоненты ЭВМ, пpедназначенные для обpаботки
данных с высокой скоpостью.

Слово (word).
Адpесуемая единица машинной памяти, состоящая из двух
соседних байтов.

Центpальный пpоцессоp, ЦП (central processing unit, CPU).
Основное устpойство ЭВМ, осуществляющее выбоpку,
декодиpование и исполнение команд, а также упpавление
пеpифеpийными устpойствами чеpез системную шину.

DIP-пеpеключатели (DIP-switchs).
Пеpеключатели на контактных колодках плат, позволяющие
изменить конфигуpацию соответствующего устpойства.

— 139 —

E
Пеpечень pекомендуемых матеpиалов цикла
«ПРОГРАММНО-АППАРАТНЫЕ СРЕДСТВА
ПЕРСОНАЛЬНЫХ ЭВМ СЕМЕЙСТВА IBM PC»
F

А1. Микpопpоцессоpы фиpмы Intel.

А3. Базовая система ввода-вывода (BIOS).

Б1. MS-DOS. Спpавочник пользователя.

Б2. MS-DOS. Справочник программиста.

Г2. Макpоассемблеp.

Г6. Сpедства отладки пpогpамм.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

изменяет это состояние. Затем начинается декремент счетчика
(последовательное вычитание из него единицы). В момент, когда
счетчик обнулится, на выходе OUT установливается напряжение
высокого уровня и сохраняется до загрузки счетчика новым
значением. Счет возможен только при наличие сигнала высокого
уровня на входе GATE. Низкий уровень этого сигнала или
ниспадающий фронт запрещают счет.

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

-Режим 1- (ждущий мультивибратор). На выходе OUT формируется
отрицательный импульс длительностью t=n*T, где n — число,
загруженное в счетчик, T — период тактовых импульсов. Низкий
уровень на выходе OUT устанавливается со следующего такта после
подачи на вход GATE сигнала высокого уровня.

Загрузка в счетчик нового числа не влияет на длительность
текущего импульса, а учитывается при следующем запуске.
Перезапуск счетчика производится нарастающим фронтом входа GATE
(без перезагрузки счетчика). Минимальное допустимое n=1.

-Режим 2- (генератор частоты). Каждый раз после достижения
счетчиком нуля на выходе OUT появляется отрицательный импульс с
длительностью один такт. Перезагрузка счетчика сказывается
только после перезапуска счетчика. При исчезновении сигнала
высокого уровня на входе GATE прекращается счет и на выход OUT
подается напряжение высокого уровня. Перезапуск счетчика
происходит при наличии на входе GATE сигнала высокого уровня.

-Режим 3- (генератор меандра). Аналогичен режиму 2, но
положительный уровень выходного сигнала занимает первый

— 32 —

полупериод, а отрицательный — второй полупериод. Точнее, если n
(начальное значение счетчика) четно, то длительность
положительного и отрицательного полупериодов равна n*T/2; если
же n нечетно — то (n+1)*T/2 и (n-1)*Т/2 соотвественно. Низкй
уровень сигнала на входе GATE запрещает счет, на выходе OUT
устанавливается сигнал высокого уровня. Высокий уровень GATE
разрешает счет, а нарастание его запускает счетчик начального
состояния. Отметим, что n=3 в этом режиме недопустимо.

-Режим 4- (счетчик событий). По окончании отсчета числа,
загруженного в счетчик, на выходе OUT формируется отрицательный
импульс длительностью один такт. Запись в счетчик во время счета
младшего байта не влияет на текущий счет, а запись старшего
байта перезапускает счетчик. Низкий уровень входа GATE запрещает
счет, высокий — разрешает. Минимальное допустимое значение
счетчика равно 1.

-Режим 5- (счетчик событий с автозагрузкой). Отличие от
режима 4 состоит в том, что каждое нарастание сигнала на входе
GATE перезапускает счетчик. Перезагрузка счетчика не влияет на
текущий цикл, однако следующий цикл определяется вновь
занесенным числом.

Временные диаграммы режимов таймера приведены на следующем
рисунке:

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=5 ЪДДДДДДДДДДДДДДДДїn=4 ЪДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДДДДДДД
GATE ГДДДДДДДЩ АДДДЩ
ГДДДДДї ЪДДДДДДДДДї ЪДД
OUT і АДДДДДДДДДДДЩ АДДДДДДДДДДДДДДДЩ
і
n і 5 4 3 2 1 0 4 3 2 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 0

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДїn=5 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДї ЪДї ЪДДДДДДДДДДДДД
GATE ГДДДДДДДДДЩ АДДДДЩ АДДДДЩ
ГДДДДДДДДДДДї ЪДДДДДДДї ЪДД
OUT і АДДДДДДДЩ АДДДДДДДДДДДДДДДЩ
і
n і 4 3 2 1 0 5 4 3 5 4 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 1

— 33 —

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДїn=3 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДДДДДДДД
GATE ГДДДДДДЩ АДДДДЩ
ГДДДДДДДДДДДДДї ЪДДДДї ЪДДДДДї ЪДДДДДДДДДДї ЪДД
OUT і АДЩ АДЩ АДЩ АДЩ
і
n і 4 3 2 1 0 3 2 1 0 3 2 1 0 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 2

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДДДДДДДДДДДїn=5 ЪДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
і ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДД
GATE ГДДДДДЩ АДДДЩ
ГДДДДДДДДДДї ЪДДДДДї ЪДДДДДї ЪДДДДДДДД
OUT і АДДДДЩ АДДДДЩ АДДДДЩ
і
n і 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 5 5 4
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 3

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДДДДДДДДДДДїn=5 ЪДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ АДДДДЩ
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї ЪДДДДДДДДДДДДДД
GATE і АДДДЩ
ГДДДДДДДДДДДДДДї ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДї ЪД
OUT і АДЩ АДЩ
і
n і 4 3 2 1 0 5 5 4 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 4

іЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪїЪї
CLK ГЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩАЩА
__ Гїn=4 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
WR іАДДДДЩ
і ЪДДДДДДДДї ЪДї ЪДДДДДДДДДДДДДДДДД
GATE ГДДДДДДДДДЩ АДДДЩ АДДДЩ
ГДДДДДДДДДДДДДДДДДї ЪДДДДДДДДДДДДДДДДДї ЪДДДДДД
OUT і АДЩ АДЩ
і
n і 4 3 2 1 0 4 3 4 3 2 1 0
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Режим 5

— 34 —

В IBM PC таймер имеет базовый адрес 40h и следующие
программируемые регистры:

Адрес Операция Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
40h запись Загрузка счетчика канала 0
чтение Чтение счетчика канала 0

41h запись Загрузка счетчика канала 1
чтение Чтение счетчика канала 1

42h запись Загрузка счетчика канала 2
чтение Чтение счетчика канала 2

43h запись Запись управляющего слова
в регистр режима канала
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Управляющее слово имеет следующий формат:

7 6 5 4 3 2 1 0
ЪДВДДВДДВДДВДДВДДВДДВДДї
і і і і і Биты Маска
АДЕДДБДДЕДДБДДБВДБДДБДВЩ ДДДД ДДДДДДД
і і і А> 0: 0 = двоичный код, а & 1
і і і 1 = двоично-десятичный код
і і АДДДДДДД> 1-3: режим работы канала: а & 0Eh
і і 000 — режим 0
і і 001 — режим 1
і і X10 — режим 2
і і X11 — режим 3
і і 100 — режим 4
і і 101 — режим 5
і АДДДДДДДДДДДДДД> 4-5: вид загрузки счетчика: а & 30h
і 00 — «защелкивание»
і (биты 0-3 безразличны)
і 01 — только младший байт
і 10 — только старший байт
і 00 — младший байт, затем старший
АДДДДДДДДДДДДДДДДДДДД> 6-7: номер канала: a & C0h
00 — канал 0
01 — канал 1

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

АДВДБДВДБДДДБДДДБДДДБДВДБДВДБДВДЩ ДДДДД
і і АДДДБДДДБД> 0-2: период импульсов сигнала
і і «шаг»
і АДДДДДДДДДДДДДДДДДДДДДДДДД> 6: 1=запретить повторное счи-
і тывание при ошибке контр.
і суммы
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДД> 7: 1=запретить повторный доступ
к диску при ошибке.

Бит 7, равный 1, разрешает только одну попытку доступа к
диску при выполнении команды (иначе разрешены 4 попытки), при
тестировании накопителя должен быть равен 1, при нормальной
работе должен быть равен 0.

Бит 6, равный 1, запрещает повторное считывание секторов
при появлении ошибки контрольной суммы после первой попытки
считывания, если бит 6 равен 0 — разрешается повторное
считывание и, если повторное считывание успешно — признак ошибки
не устанавливается, обычно равен 0.

Биты 0 — 2 определяют тип накопителя и выбирают периоды
импульсов сигнала «шаг»:

значение 100 —> 200 микросекунд;
101 —> 70 микросекунд;
110 и 111 —> 3 милисекунды;

Остальные варианты указывают на неопределенный тип
накопителя и предполагают период в 3 милисекунды.

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

0 или 1 — конкретные значения битов;
Х — бит не используется;
У — номер устройства (0/1);
П — использовать бит повторных попыток обращения к
накопителю (бит 7 управляющего байта);
ПС — использовать бит повторного считывания (бит 6
управляющего байта);
Ш — использовать биты задания периодичности импульсов
сигнала «шаг»;
ЦСБ — старшие 2 бита номера цилиндра;
ЦМБ — младшие 8 бит номера цилиндра;
НГ — номер головки (5 бит);
НС — номер начального сектора (6 бит);
ФЧ — фактор чередования (5 бит);
ЧС — число секторов (8 бит).

— 95 —

E9.1.3. Описание командF

—> Проверка готовности накопителя (класс 0, опкод 0).

Команда выбирает заданный накопитель и проверяет его
готовность.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У Х Х Х Х Х і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Рекалибровать (класс 0, опкод 1).

Команда устанавливает головки чтения/записи на выбранном
накопителе на нулевой цилиндр.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 0 0 1 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П 0 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Запрос состояния (класс 0, опкод 3).

Команда подается непосредственно после обнаружения ошибки
(бит 1 порта 321h). Команда имеет длину 2 байта и вызывает
передачу контроллером четырех байтов результата, определяющих
параметры возникшей ошибки.

Формат команды:

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 0 1 1 і

ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У Х Х Х Х Х і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

— 96 —

Формат результата:

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і байт состояния і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

Формат байта состояния:

7 6 5 4 3 2 1 0
ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
і і 0 і і і і і і і Биты:
АДВДБДДДБДВДБДВДБДВДБДВДБДВДБДВДЩ
і і і і і і і
і і і АДДДБДДДБДДДБДД> 0-3: код ошибки
і і і
і АДДДБДДДДДДДДДДДДДДДДДД> 4-5: тип ошибки
і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД> 7: 1=при выполнении команды
произошло обращение
к накопителю

Бит 7 байта состояния равен 1, если при выполнении команды
произошло обращение к накопителю, в этом случае байты 1 — 3
результата содержат корректную информацию, иначе эта информация
некорректна.

Описание возможных ошибок приведено в таблице.

— 97 —

ЪДДДДДДВДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Тип і Код і і
іошибкиіошибкиі Значение і
ГДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 00 і 0000 і Нет ошибки (нормальное завершение команды) і
і 00 і 0001 і Нет сигнала по линии «индекс» і
і 00 і 0010 і Нет сигнала по линии «поиск закончен» і
і 00 і 0011 і Сигнал «ошибка записи» і
і 00 і 0100 і Накопитель не отвечает сигналом готовности і
і і і после разблокировки і
і 00 і 0101 і Не используется і
і 00 і 0110 і Нет сигнала «дорожка 0» і
і 00 і 0111 і Не используется і
і 00 і 1000 і При выполнении команды «проверка готовности і
і і і накопителя» накопитель находится в состоянии і
і і і поиска і
ГДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 01 і 0000 і Ошибка при считывании поля идентификации і
і 01 і 0001 і Неисправимая ошибка чтения і
і 01 і 0010 і Адресный маркер не обнаружен і
і 01 і 0011 і Не используется і
і 01 і 0100 і Сектор не найден і
і 01 і 0101 і Ошибка поиска і
і 01 і 0110 і Не используется і
і 01 і 0111 і Не описан і
і 01 і 1000 і Неисправимая ошибка і
і 01 і 1001 і Обнаружен флаг «дефектная дорожка» і
ГДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 10 і 0000 і Неверная команда і
і 10 і 0001 і Неверный логический адрес накопителя і
ГДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 11 і 0000 і Неуспешно окончена команда «диагностика і
і і і внутреннего ОЗУ контроллера» і
і 11 і 0001 і Неуспешно окончена диагностика ППЗУ і
і і і контроллера і
і 11 і 0010 і Неуспешно окончен тест генератора кодов і
і і і коррекции ошибок (ECC) і
АДДДДДДБДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

—> Форматирование накопителя (класс 0, опкод 4).

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

— 98 —

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 1 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

10 — канал 2
11 — запрещенная комбинация

Существует два способа чтения текущего значения счетчика
канала.

1. Чтение с остановом счетчика. Для обеспечения стабильных
показаний необходимо приостановить работу канала либо подачей
сигнала низкого уровня на вход GATE (кроме режима 1), либо
блокированием тактовых импульсов.

2. Чтение «на лету». Для считывания счетчика без остановки
процесса счета используется посылка в порт 43h управляющего

— 35 —

слова в режиме «защелкивания» (см. выше). Это управляющее слово
фиксирует текущее значение счетчика и Вы можете считать его
младший байт, а затем старший байт.

E4.2. Таймер на системной плате IBM PCF

В IBM PC каналы таймера имеют следующее назначение.

Канал Назначение Режим
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0 системные часы (IRQ0) 3, счетчик=0 (65536)
1 запрос для канала 0 ПДП
(регенерация памяти) 2, счетчик=18
2 генератор звука ДД
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Тактовая частота каждого канала равна 1,19318 МГц, т. е.
каждый такт имеет длительность 0,84 мсек. Вход GATE каналов 0 и
1 всегда имеют высокий уровень, поэтому счет на этих каналах
разрешен всегда. Вход GATE канала 2 управляется битом 0 порта PB
интерфейса 8255 (см. гл. 5), связанного с портом 61h.

При начальной загрузке BIOS инициализирует канал 0 для
работы в режиме 3 со счетчиком 0 (т. е. 65536 декрементов на
цикл счета). Поэтому частота системных часов равна
1,19 МГц/65536 = 18.2 Гц
и прерывание IRQ0, связанное с вектором Int 8, происходит 18,2
раз в секунду, т. е. каждые 55 мсек.

Вы можете перепрограммировать канал 0, но тогда

— BIOS не сможет отслеживать текущее время и дату;

— нарушится работа с гибкими дисками, т. к. включение и
выключение их двигателей отсчитывается по текущему времени.

Канал 1 работает в режиме 2 со счетчиком 18, поэтому
регенерация памяти происходит каждые 18 мсек. Перепрог-
раммировать его нельзя, т. к. это приведет к потере данных в
ОЗУ.

Программирование канала 2 описано в следующем пункте.

— 36 —

E4.3. Генерация звукаF

На вход звукогенератора поступает логическое «И» двух
сигналов: выхода OUT 2-го канала таймера и содержимого бита 1
порта РВ интерфейса 8255. Поэтому простейший способ генерации
звука состоит в программировании канала 2 таймера так, чтобы он
выдавал прямоугольный импульс заданной частоты, лежащий в
звуковом диапазоне (20 Гц — 20 КГц). Для этого следует
использовать режим таймера 3 с подходящим начальным значением
счетчика. Если затем установить биты 0 и 1 порта РВ, то импульс
начнет поступать на вход звукогенератора (бит 0 — это вход GATE
канала 2, разрешающий счет, а бит 1 — разрешение выдачи выхода
OUT на вход звукогенератора). Для выключения звука достаточно
сбросить биты 0 — 1 в РВ. Преимущество этого метода состоит в
том, что, запустив генерацию звука, ЦП может выполнять другие
действия. Значение счетчика 2-го канала вычисляется по формуле
n=1193181/f=1234DDh/f (1193181 — тактовая частота таймера в Гц,
f — требуемая частота звука).

Пример:

;
; подпрограмма генерации звука
; Вход: АX= частота звука в Гц
;
Sound proc near
push ax ;сохранить регистры
push bx
push dx
mov bx,ax ;частота
mov ax,34DDh

mov dx,12h ;(dx,ax)=1193181
cmp dx,bx ;если bx < 18Гц, то выход jnb Done ;чтобы избежать переполнения div bx ;ax=(dx,ax)/bx mov bx,ax ;счетчик таймера in al,61h ;порт РВ or al,3 ;установить биты 0-1 out 61h,al mov al,00001011b ;управляющее слово таймера: ;канал 2, режим 3, двоичное слово mov dx,43h out dx,al ;вывод в регистр режима dec dx mov al,bl out dx,al ;младший байт счетчика mov al,bh out dx,al ;старший байт счетчика Done: pop dx ;восстановить регистры pop bx pop ax ret Sound endp ; - 37 - ;подпрограмма выключения звука ; No_Sound proc near push ax in al,61h ;порт РВ and al,not 3 ;сброс битов 0-1 out 61h,al pop ax ret No_Sound endp Для генерации музыки можно использовать следующий алгоритм. Пусть octave - номер октавы (1, 2, ...); note - номер ноты в октаве (до=1, до#=2, ..., си=12). Тогда: f := 32.625; for i := 1 to oktave do f := 2*f; for i := 1 to note do f := 1.059463094*f Sound (round(f)); Второй способ генерации звука состоит в том, чтобы генерировать звуковые импульсы не выходом таймера, а установкой и сбросом бита 1 в регистре РВ. Для управления задержками можно использовать программный цикл, например: ; ; Программа генерации звука ; Вход: N=количество импульсов ; FREQ=длительность импульса ; in al,61h ;порт РВ and al,not ;сброс бита 0 mov dx,N Repeat: or al,2 out 61h,al ;установить бит 1 mov cx,FREQ Wait_On: loop Wait_On and al,not 2 ;сбросить бит 1 out 61h,al mov cx,FREQ Wait_Off: loop Wait_Off dec dx jnz Repeat Программирование этого способа основано на следующих формулах. Если Т - длительность звучания в сек, f - частота звука в Гц, а t - тактовая частота процессора ПЭВМ, то N=T*f; FREQ=t/(34*f). Константа 34 объясняется тем, что длительность каждого из циклов Wait_on и Wait_off приблизительно равна (17*cx) машинных - 38 - тактов. Неудобство этого метода состоит в том, что ЦП полностью занят генерацией звука - любое прерывание испортит временную диаграмму звукового сигнала. Однако он обеспечивает точную подстройку частоты и позволяет создавать несимметричные импульсы варьированием задержек в циклах Wait_on и Wait_off. - 39 - E5. Программируемый периферийный интерфейсF

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36