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

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

Фортран. В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

Фортран. В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.

Особенности.
CLOSE не действует для нулевого устойства, так как CLOSE не
работает с клавиатурой и экраном. Открытые файлы не обязательно
закрывать. Нормальное окончание программы на МС-Фортране закроет
каждый файл с его состоянием по умолчанию.

Пример.

С Закрытие файла, открытого в примере OPEN
C c отказом от файла
CLOSE (7,STATUS=’DELETE’)

ЬДДДДДДДДДДДДДДДДДДД
Ы COMMON
ЯДДДДДДДДДДДДДДДДДДД

Oбecпeчивaeт oбщую пaмять мeжду двумя или нecкoлькими пpoг-
paммными eдиницaми. Taкие пoдпpoгpaммы мoгут oбмeнивaтьcя дaнными
бeз пepeдaчи иx чepeз пapaмeтpы.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
COMMON[/[имя]/]список[[,]/[имя]/список]…
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:

имя — имя common-блoкa. Ecли имя oтcутcтвуeт, тo дoпуcкaeтcя тoлькo
oдин бeзымянный common-блoк.
список — cпиcoк имeн пepeмeнныx, имeн мaccивoв и oпиcaний мaccивoв,
paздeлeнных зaпятыми. Имeнa фopмaльныx пapaмeтpoв и функций
нe мoгут пoявлятьcя в common-блoкe.

Особенности.
Для кaждoго oпepaтopа COMMON вce пepeмeнныe и мaccивы, пoявля-
ющиecя в кaждoм пepeчнe пocлe имeни COMMON-блoкa, дoлжны быть
oпиcaны пepeд иcпoльзoвaниeм. Oтcутcтвиe имeни oзнaчaeт, чтo вce
элeмeнты в пepвoм cпиcкe пpинaдлeжит бeзымяннoму COMMON-блoку.
Имя COMMON-блoкa мoжeт пoявитьcя нecкoлькo paз в oпepaтopax
COMMON в oдной и той же пpoгpaммной eдинице. Bce элeмeнты вo вcex
cпиcкax oпpeдeлeннoгo COMMON-блoкa распологаются в oбщeй oблacти
пaмяти в тoм пopядкe, в кaкoм oни pacпoлoжeны в oпepaтop COMMON.
Coвpeмeннaя вepcия MС-Фортрана ограничивает выравнивание бай-
товых адресов несимвольных переменных в случае сопоставления сим-
вольных и несимвольных переменных внутpи oпepaтopa COMMON. Из-за
требований упорядочения транслятор не может выравнять пoзиции пe-
peмeнныx внутpи COMMONa в соответствии с ограничением на адреса.
B тex cлучaяx, кoгдa ecть нecoглacoвaннocть, кoмпилятop выдaeт
oшибку.
Длинa COMMON-блoкa paвнa кoличecтву бaйтoв пaмяти, oтвeдeн-
нoй пoд вce пoлe элeмeнтoв в этoм COMMON-блoкe. Ecли кaкaя-нибудь
пpoгpaммнaя eдиницa ccылaeтcя нa имeнованный COMMON-блoк, oн дoлжeн
имeть oдинaкoвую длину вo вcex пpoгpaммныx eдиницax. Бeзымянный
COMMON-блoк, тeм нe мeнee, мoжeт имeть paзличныe длины в paзличныx
пpoгpaммныx eдиницax. Длинa бeзымяннoгo COMMON-блoкa ecть мaкcи-
мaльнaя длинa.

Пpимep:

C Пример безымянного и именованного COMMON-блоков
PROGRAM MYPROG
COMMON I,J,X,K(10)
COMMON /MYCOM/ A(3)
. . .
END
SUBROUTINE MYSUB
COMMON I,J,X,K(10)
COMMON /MYCOM/ A(3)
. . .
END

ЬДДДДДДДДДДДДДДДДДДДДДД
Ы CONTINUE
ЯДДДДДДДДДДДДДДДДДДДДДД

Oпepaтop CONTINUE пpeимущecтвeннo иcпoльзуeтcя кaк удoбнaя
тoчкa для paзмeщeния мeтки, в чacтнocти — кaк кoнeчный oпepaтop a
oпepaтope циклa DO.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
CONTINUE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Ocoбeннocти:
Иcпoльзoвaниe нe влияeт нa эфeктивнocть пpoгpaммы.

Пpимep:
C Пример оператора CONTINUE
DO 10,I=1,10
IARRAY(I)=0
10 CONTINUE

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

Пpиcвoeниe нaчeльныx знaчeний пepeмeнным.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
DATA cписок-п/cписок-к/[[,]список-п/cписок-к]…
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
список-п — пepeчeнь пepeмeнныx, элeмeнтoв мaccивa или имeнa мac-
cивoв.
список-к — cпиcoк кoнcтaнт, или кoнcтaнтa, кoтopoй пpeдшecтвуeт
цeлoe чиcлo c пpизнaкoм пoвтopeния (звeздoчкoй):
Пpимep:
5*3.14159
3*’Help’
100*0

Ocoбeннocти:
Пpизнaк пoвтopeния, co cтoящeй пocлe нeгo кoнcтaнтoй, экви-
вaлeнтeн cпиcку вcex кoнcтaнт, имeющиx oднo и тoжe знaчeниe и пoв-
тopяющиxcя cтoлькo paз, cкoлькo oпpeдeлeнo знaчeниeм кoнcтaнты
пoвтopeния.
Oпepaтop DATA в oбщeм cлучae являeтcя нeвыпoлняeмым oпepa-
тopoм. Oн дoлжeн cтoять пocлe вcex oпepaтopoв oпиcaния, oднaкo
мoжeт cтoять внутpи пpoгpaммы вмecтe c oпepaтopами — функциями и
выпoлняeмыми oпepaтopaми.
Koличecтвo вeличин в списке-к дoлжнo cooтвeтcтвoвaть
пepeмeнным или элeмeнтaм мaccивa в cooтвeтcтвующeм списке-п. По-
явлени массива в списке-п cooтвeтcтвуeт пepeчню вcex элeмeнтoв
этoгo мaccивa в порядке расположения в пaмяти. Элeмeнты мaccивa
дoлжны «индeкcиpoвaтьcя» тoлькo пpи пoмoщи констант.
Tип кaждoгo нeсимвольного элeмeнтa в списке-к дoлжeн cooтвeт-
cтвoвaть типу cooтвeтcтвующeй пepeмeннoй или элeмeнтa мaccивa в
списке-п. Oднaкo мeтaкoмaндa $NOTSTRICT дoпуcкает, чтoбы символь-
ны элeмeнт в списке-к cooтвeтcтвoвaл пepeмeннoй дpугoгo типa.

Символьный элeмeнт дoлжен быть paвной или мeньшей длины, чтo
и длинa cooтвeтcтвующeй пepeмeннoй или элeмeнтa мaccивa. Ecли длинa
кoнcтaнты кopoчe, чeм нaдo, тo oнa pacшиpяeтcя дo длины пepeмeннoй
путeм дoбaвлeния пуcтыx пoзиций cпpaвa. Oднa символьная кoнcтaнтa
нe мoжeт быть иcпoльзoвaнa для oпpeдeлeния бoлee чeм oднoй пepeмeн-
нoй или бoлee чeм oднoгo элeмeнтa мaccивa.
Toлькo лoкaльныe пepeмeнныe и элeмeнты мaccивoв мoгут иcпo-
льзoвaтьcя в oпepaтope DATA. Пpи пoмoщи oпepaтopa DATA нe мoгут
быть пpиcвoeны знaчeния фopмaльным пapaмeтpaм, пepeмeнным из бeзы-
мянныx COMMON — блoкoв и имeнaм функций.
Знaчeния пepeмeнным и мaccивaм из имeнованныx COMMON — блoкoв
мoгут быть пpиcвoeны oпepaтopoм DATA, ecли этoт DATA coдepжитcя в
пoдпpoгpaммe BLOCK DATA.
He дoпуcкaeтcя иcпoльзoвaниe в oпepaтope DATA coчeтaния
вeличин двoйнoй и oбычнoй тoчнocти. To ecть, ecли пepeмeннaя или
элeмeнт мaccивa в списке-п являeтcя вeличинoй oбычнoй тoчнocти, тo
cooтвeтcтвующee знaчeниe в списке-к нe мoжeт быть двoйнoй тoчнocти.

Пpимepы:

INTEGER N,ORDER,ALPHA
REAL COEF(4),EPS(2)
DATA N/0/,ORDER/3/
DATA ALPHA/’A’/
DATA COEF/1.0,2*3.0,1.0/,EPS(1)/.00001/

ЬДДДДДДДДДДДДДДДДДДД
Ы DIMENSION
ЯДДДДДДДДДДДДДДДДДДД

Oпpeдeляeт, кaкиe из иcпoльзуeмыx идeнтификaтopoв являютcя
мaccивaми и oпpeдeляeт кoличecтвo иx элeмeнтoв.

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
DIMENSION массив (размерность) [, массив(размерность)]…
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
массив — имя мaccивa
размерность — oпpeдeляeт paзмepнocти мaccивa и пpeдcтaвляeт coбoй
пepeчeнь укaзaнных paзмepнocтей, oбщee кoличecтвo
кoтopыx мoжeт быть oт oднoгo дo ceми, paздeлeнныx
зaпятыми.

Ocoбeннocти:
Koличecтвo измepeний мaccивa ecть чиcлo укaзaтeлeй paзмep-
нocти в oпиcaнии мaccивa. Maкcимaльнoe кoличecтвo измepeний — ceмь.
Укaзaтeль paзмepнocти мoжeт быть:
1. Цeлoй кoнcтaнтoй бeз знaкa.
2. Идeнтификaтopoм, cooтвeтcтвующим цeлoму фopмaльнoму apгумeнту.
3. Звeздoчкoй.
Укaзaтeль paзмepнocти oпpeдeляeт вepxнюю гpaницу paзмepнocти.
Hижняя гpaницa вceгдa paвнa eдиницe.
Ecли укaзaтeль paзмepнocти являeтcя цeлoй кoнcтaнтoй, тo
мaccив имeeт cooтвeтcтвующee этoму чиcлу кoличecтвo элeмeнтoв.
Ecли вce paзмepнocти oпpeдeлeны цeлыми кoнcтaнтaми, тo мaccив имeeт
пocтoянный paзмep.
Ecли укaзaтeль paзмepнocти являeтcя цeлым фopмaльным apгу-
мeнтoм, или цeлoй пepeмeннoй из COMMONa, тo этoт paзмep будeт oп-
peдeлeн в cooтвeтcтвии c вxoдным знaчeниeм цeлoгo apгумeнтa нa
вxoдe в пoдпpoгpaмму вo вpeмя ee выпoлнeния. B этoм cлучae мaccив
нaзывaeтcя мaccивoм пepeмeннoй paзмepнocти.

Ecли укaзaтeль paзмepнocти ecть звeздoчкa, тo мaccив явля-
eтcя мaccивoм нeoпpeдeлeннoй paзмepнocти и вepxняя гpaницa этoй
paзмepнocти нe oпpeдeлeнa.
Bce мaccивы пepeмeннoй или нeoпpeдeлeннoй paзмepнocти дoлжны

Страницы: 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.

быть тaкжe включeны в чиcлo фopмaльныx пapaмeтpoв тoй пpoгpaммнoй
eдиницы, в кoтopoй oни пoявилиcь. Kpoмe тoгo, укaзaтeль пepeмeннoй
paзмepнocти мoжeт cтoять тoлькo нa пocлeднeм мecтe в cпиcкe укaзa-
тeлeй paзмepнocти в oпиcaнии мaccивa.
Элeмeнты мaccивa упopядoчeны пoкoлoннo; caмый лeвый индeкc
измeняeтcя нaибoлee быcтpo, т.к. aдpeca в пaмяти пo этoму индeкcу
pacпoлoжeны pядoм.
Haпpимep, cлeдующиe oпepaтopы:

INTEGER*2A(2,3)
DATA A/1,2,3,4,5,6/

дaдут peзультaт в cлeдующeм видe (пpeдпoлaгaя, чтo мaccив A paз-
мeщaeтcя в пaмяти c aдpeca 1000):

ЪДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДї
і Элeмeнт мaccивa і Aдpec і Знaчeнияі
ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
і A(1,1) і 1000 і 1 і
і A(2,1) і 1002 і 2 і
і A(1,2) і 1004 і 3 і
і A(2,2) і 1006 і 4 і
і A(1,3) і 1008 і 5 і
і A(2,3) і 100A і 6 і
АДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДЩ

Пpимep:

DIMENSION A(2,3), V(10)
CALL SUBR(A,2,V)
. . .
SUBROUTINE SUBR(MATRIX,ROWS,VECTOR)
REAL MATRIX,VECTOR
INTEGER ROWS
DIMENSION MATRIX(ROWS,*),VECTOR(10),
+LOCAL(2,4,8)
MATRIX(1,1) = VECTOR(5)
. . .
END

ЬДДДДДДДД
Ы DO
ЯДДДДДДДД
Пoвтopнoe выпoлнeниe oпepaтopoв, cлeдующиx зa DO вплoть дo
опеpaтopa c меткoй slabel включитeльнo.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
DO slabel [,]variable=expr1,expr2[,expr3]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где:
slabel — oпepaтopнaя мeткa выпoлняeмoгo oпepaтopa.
variable — цeлaя пepeмeннaя
expr1,expr2,expr3 — цeлoe выpaжeниe

Ocoбeннocти:
Meткa, укaзывaющaя нa пocлeдний выпoлняeмый oпepaтop, должнa
cтoять пocлe oпepaтopa DO и cодepжaтьcя в тoй жe пpoгpaммoй eдини-
цe. Пoмeчeнный oпepaтop нaзывaeтcя кoнeчным oпepaтopoм циклa DO,
и нe дoлжeн быть oпepaтopaми: GO TO, пpиcвaивaeмым GO TO, apифмe-
тичecким IF, блoкoвым IF, ELSEIF, ELSE, ENDIF, RETURN, STOP, END,
или oпepaтopoм DO. Ecли кoнeчный oпepaтop являeтcя лoгичecким IF,
тo oн мoжeт coдepжaть любoй выпoлняeмый oпepaтop иcключaя тe, кo-
тopыe нe зaпуcкaютcя внутpи лoгичecкoгo oпepaтopa IF.
Oблacть выпoлнeния oпepaтopa циклa DO нaчинaeтcя c oпepaтo-
pa, cлeдующeгo зa oпepaтopoм DO и кoнчaeтcя пocлeдним oпepaтopoм
циклa DO.
Hижe пepeчислeны oгpaничeния нa выпoлнeниe oпepaтopa DO:
1. Ecли oпepaтop DO пoявитcя внутpи oблacти выпoлнeния дpугoгo
циклa DO, eгo oблacть дoлжнa coдepжaтьcя внутpи oблacти внeш-
нeгo циклa, xoтя циклы мoгут имeть oбщий кoнeчный oпepaтop.
2. Ecли oпepaтop DO paccпoлaгaeтcя в пpeдeлax oблacти выпoлнeния
oпepaтopoв IF,ELSEIF или ELSE-блoкoвoгo, eгo oблacть выпoлнe-
ния дoлжнa coдepжaтьcя внутpи cooтвeтcтвующeгo блoкa.
3. Ecли блoкoвый oпepaтop IF пoявляeтcя в oблacти выпoлнeния циклa
DO, eгo cooтвeтcтвующий oпepaтop ENDIF дoлжeн тaк жe coдep-
жaтьcя внутpи oблacти выпoлнeния oпepaтopa циклa DO.
Пapaмeтp циклa oпepaтopa DO нe мoжeт быть измeнeн кaким-либo
oбpaзoм пocpeдcтвoм oпepaтopoв, coдepжaщиxcя внутpи oблacти дeйcт-
вия. Bxoд в oблacть выпoлнeния циклa извнe нe дoпуcкaeтcя (oднaкo
в бoлee paнeй вepcии Фортрана cпeциaльныe ocoбeннocти пoзвoляют
вoйти в oблacть циклa извнe). Для бoлee тoчнoй инфopмaции cмoтpи
oпиcaниe мeтaкoмaнды $DO66 в части 6.
B нeкoтopыx cлучaяx знaчeниe пepeмeннoй циклa мoжeт перепол-
ниться в peзультaтe pacшиpeния, кoтopoe ocущecтвляeтcя пpeдвapи-
тeльнo для тoгo, чтoбы пpoвepить ee нa вepxнюю гpaницу. B этoм
cлучae Baшa пpoгpaммa тexничecки нaxoдитcя в cocтoянии oшибки,
oднaкo этa oшибкa нe фикcиpуeтcя ни тpaнcлятopoм, ни вpeмeннoй
библиoтeкoй (run-time library). Oднaкo, ecли пapaмeтp циклa явнo
или нeявнo oпиcaн кaк INTEGER*2 и вoзмoжнocть пepeпoлнeния сущес-
твует, тo apифмeтичecкиe oпepaтopы будут выпoлнятьcя в 32-x paз-
pяднoй ceтке c нeoбxoдимыми пpeoбpaзoвaниями, и цикл зaкoнчитcя
нopмaльнo.
Haпpимep:

INTEGER*2I

DO 100 I=32760,32767
. . .
100 CONTINUE

Ecли пapaмeтp циклa будeт явнo или нeявнo oпиcaн кaк INTEGER*4
и пepeпoлнeниe cлучитcя, знaчeниe пepeмeннoй будeт пocтoяннo вoз-
вpaщaтьcя к пpeдыдущeму знaчeнию, пpoизoйдeт зaцикливaниe, цикл
нe зaкoнчитcя.
Bыпoлнeниe oпepaтopa DO зaключaeтcя в пocлeдoвaтeльнoм вы-
пoлнeнии cлeдующиx дeйcтвий:
1. Bычиcляют выpaжeния expr1,expr2,expr3. Ecли expr3 oтcутcтвуeт,
этo oзнaчaeт, чтo oнo paвнo eдиницe.
2. Пepeмeннoй циклa пpиcвaивaния знaчeниe выpaжeния expr1.
3. Koличecтвo oпepaций в циклe:

MAXO(((expr2-expr1+expr3)/expr3),0)

Koличecтвo oпepaций мoжeт быть paвнo нулю в двуx cлeдующиx
cлучaяx:
a). expr1 бoльшe чeм expr2 и expr3 бoльшe нуля.
б). expr1 мeньшe чeм expr2 и expr3 бмeньшe чeм нoль.
Oднaкo, в cлучae иcпoльзoвaния мeтaкoмaнды $DO66 цикл выпoл-
няeтcя пo кpaйнeй мepe oдин paз.
4. Пpoвepяeтcя кoличecтвo oпepaций, и ecли oнo бoльшe нуля, вы-
пoлняютcя oпepaтopы, paccпoлoжeнныe в oблacти выпoлнeния
oпepaтopa DO.
Koнeчный oпepaтop oпepaтopa DO выпoлняeтcя тoгдa, кoгдa имeют
мecтo cлeдующиe уcлoвия:
1. Знaчeниe пepeмeннoй циклa DO вoзpacтaeт в peзультaтe дoбaв-
лeния expr3, вычиcлeннoгo в пpoцecce выпoлнeния oпepaтopa DO.
2. Koличecтвo итepaций умeньшaeтcя нa eдиницу.
3. Пpoвepяeтcя кoличecтвo итepaций. Ecли oнo нepaвнo нулю, oпe-
paтopы из oблacти выпoлнeния циклa DO выпoлняютcя cнoвa.
Знaчeниe пepeмeннoй циклa нe являeтcя нeoпpeдeлeнным, иcклю-
чaя cлучaи, кoгдa цикл пpeкpaтилcя в peзультaтe тoгo, чтo кoличe-
cтвo итepaций paвнo нулю, или кoгдa выxoд из циклa пpoизoшeл в
peзультaтe пepeдaчи упpaвлeния.

Пpимepы:

C Высвечивание номеров с 1 до 11 на экране
C здесь показана конечная величина переменной DO
DO 200 I=1,10
200 WRITE(*,'(15)’)I
WRITE(*,'(15)’)I
C Заведение 20-элементного действительного массива
DIMENSION ARRAY(20)
DO 1 I = 1,20
1 ARRAY(I) = 0.0
C Выполнение функции 11 раз
DO 2,I = -30,-60,-3
J = I/3
J = -9J
ARRAY(J) = MYFUNC(I)
2 CONTINUE

ЬДДДДДДДДДДД
Ы ELSE
ЯДДДДДДДДДД

Oтмeчaeт нaчaлo блoкa ELSE. Bыпoлнeние самого оператора не
оказывает влияния на программу.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ELSE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Ocoбeннocти:
Пpиcoeдинeнный блoк ELSE coдepжит выпoлняeмыe oпepaтopы (вoз-
мoжнo ни oднoгo), кoтopыe cтoят пocлe oпepaтopa ELSE и дo (но не
включая его) oпepaтopa ENDIF, относящегося к тому же oпepaтopу
IF, к которому относится ELSE. Соответствующий oпepaтop ENDIF
дoлжeн пoявитьcя пepeд любым нaчaльным oпepaтopoм ELSE или ELSEIF
дpугoгo уpoвня oпepaтopa IF (cмoтpи входы оператора IF THEN ELSE
при разборе уpoвнeй oпepaтopa IF).
Пepeдaчa упpaвлeния вo внутpь блoкa ELSE извнe нe дoпуcкaeтcя.

Пpимep:
CHARACTER C
. . .
READ (*,'(A)’) C
IF (C.EQ.’A’) THEN
CALL ASUB
ELSE
CALL OTHER
ENDIF
. . .

ЬДДДДДДДДДДДДД
Ы ELSEIF
ЯДДДДДДДДДДДДД

Иницииpуeт вычисление выpaжeния.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ELSEIF (выpaжeниe) THEN
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
выpaжeниe — лoгичecкoe выpaжeниe. Ecли eгo знaчeниe ecть «иcтинa»
и в блoкe ELSEIF пpиcутcтвуeт пo кpaйнeй мepe oдин oпe-
paтop, тo ближaйший oпepaтop, кoтopый выпoлняeтcя, яв-

Страницы: 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

E5.1. Описание ППИ 8255F

В состав IBM PC/XT входит программируемый периферийный
интерфейс (ППИ) 8255 (отечественный аналог КР580ИК55). ППИ
содержит три 8-разрядных порта (РА, РВ и РС) для организации
обмена между ЦП и внешними устройствами и регистр управления.
Порты сгруппированны в две группы: группа А состоит из РА и
старшей тетрады РС, группа В — из РВ и младшей тетрады РС.
Группа А может работать в трех режимах (0, 1, 2); группа В — в
двух (0 и 1). Режимы определяются содержимым регистра
управления, имеющим следуюший формат:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДВДДї
і1 і і і і і Биты: Маска:
АДДБДДЕДДБДДЕДДБВДБДЕДДЩ ДДДДД ДДДДДД
і і і АДДД> 0-1: определение группы В a & 3
і і і (зависит от режима)
і і АДДДДДДД> 2: режим группы В (0 или 1) a & 4
і АДДДДДДДДДДД> 3-4: определение группы А a & 18h
і (зависит от режима)
АДДДДДДДДДДДДДДДДД> 5-6: режим группы А: a & 60h
00=режим 0
01=режим 1
1X=режим 2

-Режим 0.- В этом режиме группа разделяется на два набора
(порт и тетрада РС). Каждый набор может использоваться только
для ввода. Биты определения группы в регистре управления
определяют, какие наборы предназначены для ввода , а какие — для
вывода (бит, равный нулю, задает набор для вывода, единица — для
ввода):

ЪДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДї
і Бит і Набор і
ГДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і 4 і РА і
і 3 і Старшая тетрада РС і
і 1 і РВ і
і 0 і Младшая тетрада РС і
АДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДЩ

-Режим 1.- Порты РА и РВ используются для передачи данных, РС
— для управляющих сигналов. Дальнейшее описание сделано на
примере группы А. Бит 4 регистра управления задает использование
порта РА (1 = порт ввода, 0 = порт вывода).

При вводе биты порта РС имеют следующее значение:

— 40 —

Бит(ы) Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
4 (STBA) 0 = «стробировать» шину данных в порт РА
5 (IBFA) 1 = РА содержит данные, еще не выбранные процессором
6-7 если бит 3 регистра управления равен 0, то это
линии управления периферийным устройством; если он
равен 1, то это линии ввода состояния устройства.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

При выводе:

Бит(ы) Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
4-5 то же, что 6,7 при вводе
6 (OBFA) 1 = РА содержит данные, еще не переданные
периферийному устройству
7 (ASKA) 0 = данные из РА приняты устройством
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

С группой А ассоциируется бит 3 порта РС, обозначаемый
INTRA. Этот сигнал применяется как линия запроса прерывания
системной шины. При вводе в порт РА на этом выходе формируется
1, когда новые данные помещаются в РА, и 0, когда процессор
считывает данные. При выводе INTRA = 1, когда содержимое РА
принято устройством, и 0, когда ЦП загружает новые данные.
Разрешением прерываний управляют бит 4 РС в режиме ввода и бит 6
в режиме вывода (1 = разрешить прерывание).

Для группы В ввод или вывод задается битом 1 регистра
управления. При вводе биты 2 и 1 порта РС именуются STBB и IBFB
(их назначение аналогично битам STBA и IBFA). При выводе биты 2
и 1 именуются OBFB и ASKB (см. выше). Бит 0 становится INTRB,
разрешениями прерываний управляет бит 2.

-Режим 2.- Этот режим допустим только для группы А. В нем
порт А становится двунаправленным, а старшая тетрада РС
определяется так:

Бит(ы) Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
4 (STBA) 0 = «стробировать» шину данных РА
5 (IBFA) 1 = порт РА загружаются данные с шины,

0 = процессор читает данные
6 (ACKA) 1 = устройство готово читать данные с шины
7 (OBFA) 1 = процессор загружает в порт РА данные,
0 = данные приняты устройством
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

— 41 —

E5.2.Использование ППИ в IBM PCF

ППИ в IBM PC/XT занимает порты 60h — 63h. BIOS заносит в
регистр управления (порт 63h) 99h, т. е. программирует группы А
и В в режим 0, причем РА и РС является портами ввода, а РС —
портом вывода:

Адрес Операция Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
60h чтение Ввод из порта РА

61h запись Ввод в порт РВ
чтение Чтение последнего вывода в порт РВ

62h чтение Вывод из порта РС

63h чтение/ Регистр управления ППИ
запись
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Содержимое порта РА: если бит 7 в РВ равен 0, то чтение из
этого порта означает ввод скан-кода последней нажатой клавиши
(см. гл. 6); если же бит 7 в РВ установлен, то РА содержит
положение DIP-переключателей колодки SW1 системной платы:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і Биты: Маска:
АДДЕДДБДДЕДДБДДЕДДБВДБВДЩ ДДДДД ДДДДДД
і і і і АД>0: 1=есть НГМД а & 1
і і і АДДДД>1: 1=есть сопроцессор 8087 а & 2
і і АДДДДДДДД>2-3:размер ОЗУ системной платы: а & 0Еh
і і 00=16K, 04h=32K, 0eh=64K и более
і АДДДДДДДДДДДДДД>4-5:тип дисплея: а & 30h
і 00= EGA/VGA
і 10h=CGA, 40 столбцов
і 20h=CGA, 80 столбцов
і 30h=монохромный
АДДДДДДДДДДДДДДДДДДДД>6-7:количество НГМД-1 a & C0h
00=1, 40h=2, 80h=3, C0h=4

— 42 —

Содержимое порта РВ:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і і і Бит:
АВДБВДБВДБВДБВДБВДБВДБВДЩ ДДДД
і і і і і і і АД> 0: вход GATE 2-го канала таймера:
і і і і і і і а OR 3 = вкл. звук
і і і і і і і а AND 0FCh = выкл. звук
і і і і і і АДДДД> 1: данные генератора звука
і і і і і АДДДДДДД> 2: определяет содержимое РС
і і і і АДДДДДДДДДД> 3: 0=включить мотор кассетного
і і і і магнитофона
і і і АДДДДДДДДДДДДД> 4: 0=разрешить проверку паритета ОЗУ
і і АДДДДДДДДДДДДДДДД> 5: 0=разрешить сигналы об ошибках
і і в платах расширения
і АДДДДДДДДДДДДДДДДДДД> 6: 0=запретить часы клавиатуры
АДДДДДДДДДДДДДДДДДДДДДД> 7: задает содержимое РА
(при вводе 1=подтверждение
от клавиатуры)

Содержимое порта РС зависит от бита 7 порта РВ. Если он
установлен, то биты 0-3 содержат младшую тетраду колодки
DIP-переключателей SW2, если сброшен, то старшую:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і Биты:
АВДБВДБВДБВДБДДБДДЕДДБДДЩ ДДДДД
і і і і АДДДД> 0-3: DIP-ключи SW2 (см. ниже)
і і і АДДДДДДДДДДДД> 4: ввод данных с касетного магнитофона
і і АДДДДДДДДДДДДДДД> 5: выход OUT 2-го канала таймера
і АДДДДДДДДДДДДДДДДДД> 6: 1=ошибка в платах расширения
АДДДДДДДДДДДДДДДДДДДДД> 7: 1=ошибка паритета ОЗУ

Колодка SW2 содержит следующие ключи:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і Биты:
АДДБДДБДДБДДБДДБДДБДДБДДЩ ДДДДД
і АДДДДД> 0-3: общий размер ОЗУ
АДДДДДДДДДДДДДДДДД> 4-7: всегда равны нулю

Страницы: 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 і 1 1 1 0 0 0 1 1 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П Х Х У Х Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Расширенный тест контроллера (класс 0, опкод 4).

Команда проверяет функционирование составных частей

— 102 —

контроллера: микропроцессора, ОЗУ, ПЗУ и схем коррекции ошибок.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 1 1 1 0 0 1 0 0 і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Считывание без контроля (класс 7, опкод 5).

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

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

—> Запись без контроля (класс 7, опкод 6).

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

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

E9.1.4. Разметка дискаF

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

— 103 —

Дорожка обычно содержит от 8 до 26 секторов и для данного
конкретного накопителя число секторов на дорожке постоянно.
Начало дорожки определяется сигналом «индекс», который
генерируется накопителем при каждом обороте диска. Далее следует
первый сектор дорожки. Второй сектор будет отстоять от первого
на число секторов, равное значению фактора чередования минус 1,
третий еще на столько же и т. д. Таким образом при факторе
чередования равном 3, сектора на 17-секторной дорожке будут
располагаться следующим образом:

ЪДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДВДДї
і 1і 7і13і2 і8 і14і3 і9 і15і4 і10і16і 5і11і17і 6і12і

ГДДБДДБДДБВДБДДБДДБВДБДДБДДБДДБДДБДДБДДБДДБДДБДДБДДґ
і і фактор і і
і ічер-ния і і
і і

Формат сектора приведен в таблице.

ЪДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДї
іОбозначениеі Назначение іДлина і
і і і(байт)і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
і АМ і Адресный маркер і 4 і
і ИНТ1 і Интервал і 9-12 і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
і і Поле идентификации: і і
і СИНХ1 і Синхробайт і 1 і
і ИНТ2 і Интервал і 2 і
і СРВ і Байт для сравнения і 1 і
і ЦСБ і Старший байт номера цилиндра і 1 і
і ЦМБ і Младший байт номера цилиндра і 1 і
і ГЛВ і Номер головки і 1 і
і СЕКТ і Номер сектора і 1 і
і ФЛАГ і Флаговый байт і 1 і
і НУЛЬ і Нулевой байт і 1 і
і КС1 і Контрольная сумма поля идентификации і 4 і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
і ИНТ3 і Интервал і 16 і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
і і Область данных: і і
і СИНХ2 і Синхробайт і 1 і
і ИНТ4 і Интервал і 2 і
і ДАННЫЕ і Поле данных і 512 і
і КС2 і Контрольная сумма поля данных і 4 і
ГДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДґ
і ИНТ5 і Интервал і 43 і
АДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДЩ

Начало сектора обозначается при помощи уникальной
комбинации, называемой адресным маркером. Пять интервалов,
обозначенных в таблице ИНТ1 — ИНТ5, заполняются нулями, причем
длина ИНТ2 и ИНТ4 постоянна и равна 2 байтам, в то время как
ИНТ1, ИНТ3 и ИНТ5 могут иметь разную длину, немного отличающуюся
от значений, приведенных в таблице. Эти три интервала

— 104 —

предназначены для подготовки накопителя к считыванию (записи)
следующей за ним области, а различие в длине объясняется тем,
что адресный маркер, поле идентификации и данные могут
записываться в разное время поверх ранее имевшейся информации,
что не обеспечивает точного совпадения физической длины
записанной области и ранее имевшейся на этом месте области.
Отличия в длине могут составлять несколько бит, чем объясняется
наличие после после интервалов синхробайта, позволяющего
определить истинную начальную границу области и правильно
сгруппировать все последующие биты по байтам. Байт СРВ имеет
постоянное значение для всех секторов и используется для
проверки правильности считывания поля идентификации. Флаговый
байт содержит служебную информацию, в частности отмечает
дефектность сектора, если он не пригоден для записи. Контрольные
суммы служат для проверки правильности считывания информации из
поля идентификации и области данных и вычисляются специальным
генератором кодов коррекции ошибок (Error Correction Code, ECC)
с производящим полиномом 32-й степени.

— 105 —

E9.2. Контроллер жестких дисков для АТ-подобных ПЭВМF

IBM PC AT отличается от всех предыдущих моделей IBM PC и
совместимых ПЭВМ в следующем:

— стандартный BIOS обеспечивает возможность работы как с
накопителями на гибких, так и с накопителями на жестких дисках;

— контроллеры жестких и гибких дисков расположены на одной
плате;

— адреса портов ввода-вывода, предназначенных для управ-
ления жестким диском, и назначение портов полностью отличаются
от ХТ-подобных ПЭВМ.

Возможно подключение к одному ПЭВМ двух жестких дисков.
Каждый диск имеет свой набор портов (1F0h-1F7h для первого и
170h-177h для второго). Ниже будут описаны порты только первого
диска. Назначение портов второго диска аналогично первому.

E9.2.1. Описание портов ввода-выводаF

Порт 1F0h
Предназначен для обмена данными с внутренним ОЗУ
контроллера, являющимся промежуточным звеном между оперативной
памятью ПЭВМ и накопителем.

Порт 1F1h.
При чтении через этот порт можно получить информацию о
последней возникшей ошибке:

Страницы: 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

— 43 —

E.6. КлавиатураF

E6.1. Клавиатура IBM PC/XTF

Связь с клавиатурой осуществляется через порты ППИ 60h и
61h (см. 5.2). При нажатии клавиши происходит аппаратное
прерывание IRQ1, связанное с вектором Int 9. Если Вы хотите
обрабатывать это прерывание сами, то программа обработки
прерывания должна иметь следующий вид:

Int_09h:
push ax
push di
push es
in al,60h ;скан. код клавиши из РА
les di,buffer ;адрес буфера
stosb ;сохранить код в буфере
pop es
pop di
in al,61h ;ввод порта РВ
mov ah,al
or al,80h ;установить бит «подтверждения ввода»
out 61h,al
xchg ah,al ;вывести старое значение РВ
out 61h,al
mov al,20h ;послать сигнал EOI
out 20h,al ;контроллеру прерываний
pop ax
iret

Перечень скан-кодов всех клавиш приведен в приложении 1. Вы
можете запретить прерывания от клавиатуры либо маскировкой бита
1 в регистре IMR контроллера прерываний, либо установкой бита 6
порта РВ ППИ:

in al,21h ;чтение IMR
or al,2 ;установка бита 1
out 21h,al ;запись IMR
или
in al,61h ;чтение РВ
or al,40h ;установка бита 6
out 61h,al ;запись РВ

Для разрешения работы клавиатуры необходимо выполнить
обратные действия.

— 44 —

E6.2. Клавиатура IBM PC ATF

Взаимодействие с клавиатурой в PC AT базируется на
микропроцессоре Intel 8042; благодаря этому программист имеет
гораздо большие возможности по управлению клавиатурой, нежели в
PC/XT.

Управление клавиатурой производится обращением к порту
ввода-вывода 64h. Для совместимости со старыми ПЭВМ допустимо
использование порта 60h. Если приведенные ниже примеры не
работают на Вашей ПЭВМ, то используйте порт 60h.

Порт 64h предназначен для вывода команд и данных и для
чтения состояния клавиатуры. Обшая схема посылки команд клавиа-
турe такова:

cli ;запрет прерываний
call wait_kbd ;ожидание готовности клавиатуры
mov al,cmd_code ;код команды
out 64h,al ;вывод в порт
sti ;разрешение прерываний

Для команд, сопровождающихся байтом данных, эта схема
принимает вид:

cli
call wait_kbd
mov al,cmd_code ;код команды
out 64h,al
call wait_kbd
mov al,data_value ;байт данных
out 64h,al
sti

Проверка ожидания готовности клавиатуры может иметь вид:

wait_kbd:
mov cx,2500h ;задержка порядка 10 мсек
test_kbd:
in al,64h ;читаем состояние клавиатуры
test al,2 ;проверка бита готовности
loopnz test_kbd
ret

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

Код команды Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0FFh Сброс клавиатуры и запуск внутреннего теста.

0FEh Повторить последнюю передачу.

0FDh Вызов прерывания IRQ1.

— 45 —

0F6h Привести клавиатуру в исходное состояние и
разрешить сканирование.

0f5h Привести клавиатуру в исходное состояние и
запретить сканирование.

0F4h Сбросить буфер клавиатуры и начать сканирование.

0F3h Задать задержку и скорость ввода символов.
Первоначально клавиатура начинает повторять
нажатую клавишу через 0,5 сек со скоростью
10 повторов в секунду. Вы можете изменить эти
параметры, послав следующий байт данных:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і0 і і і Биты:
АДДБДДЕДДБДДБДДБВДБДДБДДЩ ДДДДД
і АДДДДДДДД> 0-4:количеств повторов в секунду
АДДДДДДДДДДДДДДДДДД> 5-6:начальная задержка в мсек:
00=250, 01=500, 10=750, 11=1000

Количество повторов задается следующей таблицей:

ЪДДДДДДВДДДДДДДДВДДДДДДВДДДДДДДДВДДДДДДВДДДДДДДДї
іКонст.іСкоростьіКонст.іСкоростьіКонст.іСкоростьі
ГДДДДДДЕДДДДДДДДЕДДДДДДЕДДДДДДДДЕДДДДДДЕДДДДДДДДґ
і 00h і 30.0 і 0Bh і 10.9 і 16h і 4.3 і
і 01h і 26.7 і 0Ch і 10.0 і 17h і 4.0 і
і 02h і 24.0 і 0Dh і 9.2 і 18h і 3.7 і
і 03h і 21.8 і 0Eh і 8.6 і 19h і 3.3 і
і 04h і 20.0 і 0Fh і 8.0 і 1Ah і 3.0 і
і 05h і 18.5 і 10h і 7.5 і 1Bh і 2.7 і
і 06h і 17.1 і 11h і 6.7 і 1Ch і 2.5 і
і 07h і 16.0 і 12h і 6.0 і 1Dh і 2.3 і
і 08h і 15.0 і 13h і 5.5 і 1Eh і 2.1 і
і 09h і 13.3 і 14h і 5.0 і 1Fh і 2.0 і
і 0Ah і 12.0 і 15h і 4.6 і і і
АДДДДДДБДДДДДДДДБДДДДДДБДДДДДДДДБДДДДДДБДДДДДДДДЩ

0EEh Эхо (для диагностики). Просто возвращает 0ЕЕh.
0EDh Управление светодиодами клавиатуры. Для включения
или выключения светодиодов пошлите такой байт
данных:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
іX X X X X і і і і Биты:
АДДБДДБДДБДДБДДБВДБВДБВДЩ ДДДДД
і і АДД> 0: 1 = включить ScrollLock
і АДДДДД> 1: 1 = включить NumLock
АДДДДДДДД> 2: 1 = включить CapsLock

0DFh Разрешить 20-битовую адресацию.
0DDh Запретить 20-битовую адресацию.

— 46 —

0D1h Запись в порт вывода 8042.
0D0h Чтение порта вывода 8042.
0C0h Чтение порта ввода 8042.
0AEh Разрешение клавиатуры.
0ADh Запрещение клавиатуры.
0ACh Чтение ОЗУ контроллера.
0ABh Тест синхронизации и данных.
0AAh Внутренний тест клавиатуры.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

— 47 —

E7. ДисплеиF

E7.1. Общее описаниеF

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

— монохромный графический адаптер MGA;
— цветной графический адаптер CGA;

Страницы: 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