Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ для ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 13

Автор C. Π‘ΠΎΡ‡ΠΊΠΎΠ²

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² стандартных Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, stdio.h) ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ cdecl. Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄Π°ΠΆΠ΅ Π² Ρ‚Π΅Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с упомянутой Π²Ρ‹ΡˆΠ΅ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ компиляции.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Главная функция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (main) Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ всСгда объявлСна с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ cdecl, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ выполнСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΅ΠΉ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ языка Π‘ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: см. ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3 Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.3.3.4.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ near, far, huge

Π­Ρ‚ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ воздСйствиС Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с адрСсами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ языка Π‘ΠΈ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ компиляции ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ памяти. Π’ΠΈΠ΄Ρ‹ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ памяти ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡ… примСнСния рассмотрСны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 8 "МодСли памяти".

МодСль, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, опрСдСляСт Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Однако ΠΏΡ€ΠΈ использовании ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎ дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² near, far ΠΈ huge.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° near β€” 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ; для опрСдСлСния адрСса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ смСщСниС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ содСрТимого сСгмСнтного рСгистра. Для указатСля Ρ‚ΠΈΠΏΠ° near доступная ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ 64-ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π½ΠΎΠ³ΠΎ сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ….

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° far β€” 32-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ; ΠΎΠ½ содСрТит ΠΊΠ°ΠΊ адрСс сСгмСнта, Ρ‚Π°ΠΊ ΠΈ смСщСниС. ΠŸΡ€ΠΈ использовании ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° far допустимы обращСния ΠΊ памяти Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… 1-ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π½ΠΎΠ³ΠΎ адрСсного пространства процСссора Intel 8086/8088, ΠΎΠ΄Π½Π°ΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля Ρ‚ΠΈΠΏΠ° far цикличСски измСняСтся Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ 64-ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π½ΠΎΠ³ΠΎ сСгмСнта.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° huge β€” 32-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ; ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ содСрТит адрСс сСгмСнта ΠΈ смСщСниС. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля Ρ‚ΠΈΠΏΠ° huge ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… всСго 1-ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π½ΠΎΠ³ΠΎ адрСсного пространства. Π’ БП Π’Π‘ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° huge всСгда хранится Π² Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ слСдствия:

β€”ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ==, !=, <, >, <=, >= Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈ прСдсказуСмо Π½Π°Π΄ указатСлями Ρ‚ΠΈΠΏΠ° huge, Π½ΠΎ Π½Π΅ Π½Π°Π΄ указатСлями Ρ‚ΠΈΠΏΠ° far;

β€”ΠΏΡ€ΠΈ использовании ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° huge трСбуСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя, Ρ‚. ΠΊ. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ любой арифмСтичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ этими указатСлями. ОбъСм ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ возрастаСт.

Π’ БП MSC ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ huge примСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ массивам, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 64 К. Π’ БП Π’Π‘ нСдопустимы массивы большС 64 К, Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ huge примСняСтся ΠΊ функциям ΠΈ указатСлям для спСцификации Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ адрСс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ huge.

Для Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° near ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ инструкции Π±Π»ΠΈΠΆΠ½Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, для Ρ‚ΠΈΠΏΠΎΠ² far ΠΈ huge β€” дальнСго.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 */

int huge database [65000];

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 */

char fΠ°Π³ *x;

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3 */

double near cdecl calc(double, double);

double cdecl near calc(double, double);

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 4 */

char far pascal initlist[INITSIZE];

char far nextchar, far *prevchar, far *currentchar;

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ массив с ΠΈΠΌΠ΅Π½Π΅ΠΌ database, содСрТащий 65000 элСмСнтов Ρ‚ΠΈΠΏΠ° int. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 64 ΠšΠ±Π°ΠΉΡ‚Π°, Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом huge.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово far ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ справа ΠΎΡ‚ Π½Π΅Π³ΠΎ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΡƒ, дСлая Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° far ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° char. Π­Ρ‚ΠΎ объявлСниС ΠΌΠΎΠΆΠ½ΠΎ для ясности Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Ρ‚Π°ΠΊ:

char *(far *Ρ…);

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 3 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π²Π° эквивалСнтных объявлСния. Π’ Π½ΠΈΡ… ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ calc ΠΊΠ°ΠΊ функция с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ near ΠΈ cdecl.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 4 Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСны Π΄Π²Π° объявлСния. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ массив Ρ‚ΠΈΠΏΠ° char с ΠΈΠΌΠ΅Π½Π΅ΠΌ initiist ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ far ΠΈ pascal. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ pascal ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ имя Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° языкС Π‘ΠΈ, Π½ΠΎ ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° языкС Паскаль (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС программирования с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ написания ΠΈΠΌΠ΅Π½ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…). ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ far ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ для доступа ΠΊ элСмСнтам массива Π΄ΠΎΠ»ΠΈΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ 32-Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ адрСса.

Π’Ρ‚ΠΎΡ€ΠΎΠ΅ объявлСниС ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Ρ‚Ρ€ΠΈ указатСля Π½Π° far значСния Ρ‚ΠΈΠΏΠ° char с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ nextchar, prevchar ΠΈ currentchar. Π­Ρ‚ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ, Π² частности, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для хранСния адрСсов элСмСнтов массива initlist. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово far Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ описатСлСм.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ interrupt

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ interrupt ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ процСссора 8086/8088. Для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° interrupt ΠΏΡ€ΠΈ компиляции гСнСрируСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ Π²Ρ…ΠΎΠ΄Π° ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, для сохранСния ΠΈ восстановлСния рСгистров микропроцСссора АΠ₯, Π’Π₯, Π‘Π₯, DX, SI, DI, ES ΠΈ DS. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ рСгистры β€” Π’Π , SP, SS, CS ΠΈ IP ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ всСгда ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ языка Π‘ΠΈ ΠΈΠ»ΠΈ Ρ‡Π°ΡΡ‚ΡŒ самой систСмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСрывания.

Π‘ΠΌ. ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.3.3.1.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ слСдуСт ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ с Ρ‚ΠΈΠΏΠΎΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния void.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ для всСх ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ памяти. Π’ БП MSC, Π² ΠΌΠ°Π»ΠΎΠΉ ΠΈ срСднСй ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² рСгистр DS заносится ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ адрСс сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ… всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π² ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ, большой ΠΈ максимальной ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² рСгистр DS заносится адрСс сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ модуля. Π’ БП Π’Π‘ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² максимальной ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² рСгистр DS заносится адрСс сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ модуля, Π° Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… модСлях—адрСс сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ… всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ interrupt Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ совмСстно с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ near, far, huge.

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π΄Π°Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ описаниС синтаксиса ΠΈ сСмантики объявлСний ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Разновидности ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… пСрСчислСны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

Π’Π°Π±Π»ΠΈΡ†Π° 3.4.

Π’ΠΈΠ΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ПояснСниС ΠŸΡ€ΠΎΡΡ‚Π°Ρ пСрСмСнная Бкалярная пСрСмСнная Ρ†Π΅Π»ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ пСрСчислимого Ρ‚ΠΈΠΏΠ° ΠŸΡ€ΠΎΡΡ‚Π°Ρ пСрСмСнная Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ значСния ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, содСрТащая ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ОбъСдинСниС ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, содСрТащая ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Π½ΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти Массив ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, содСрТащая ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ элСмСнтов ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ (содСрТит Π΅Π΅ адрСс)

ΠžΠ±Ρ‰Π°Ρ синтаксичСская Ρ„ΠΎΡ€ΠΌΠ° объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… описана Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π·Π΄Π΅Π»Π° 3. Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ для простоты излоТСния объявлСния ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π±Π΅Π· спСцификаций класса памяти ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ². Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ класса памяти описаны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.6, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ β€” Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.7.

Π’ объявлСнии простой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, массива ΠΈ указатСля спСцификация Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½Π°. Если это объявлСниС записано Π½Π° внСшнСм ΡƒΡ€ΠΎΠ²Π½Π΅, Ρ‚ΠΎ спСцификация класса памяти Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½Π°. Π’ объявлСнии Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ уровня хотя Π±Ρ‹ ΠΎΠ΄Π½Π° ΠΈΠ· спСцификаций β€” класса памяти ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ° β€” Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

ОбъявлСниС простой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

Бинтаксис:

<спСцификация Ρ‚ΠΈΠΏΠ°> <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€> [,<ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€>…];

ОбъявлСниС простой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ опрСдСляСт имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π΅Π΅ Ρ‚ΠΈΠΏ. Имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ задаСтся <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ>. <БпСцификация Ρ‚ΠΈΠΏΠ°> Π·Π°Π΄Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ, Π»ΠΈΠ±ΠΎ Ρ‚ΠΈΠΏΠΎΠΌ структура, Π»ΠΈΠ±ΠΎ Ρ‚ΠΈΠΏΠΎΠΌ объСдинСниС. Если спСцификация Ρ‚ΠΈΠΏΠ° ΠΎΠΏΡƒΡ‰Π΅Π½Π°, прСдполагаСтся Ρ‚ΠΈΠΏ int.

МоТно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ объявлСнии, задавая список <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²>, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€> Π² спискС ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. ВсС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°ΠΊΠΎΠΌ объявлСнии, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

int Ρ…; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 */

unsigned long reply, flag; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 */

double order; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3 */