<HTML>
<HEAD><TITLE>Äîêóìåíòàöèÿ íà C--</TITLE></HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td width="1"></td>
    <td width="1"></td>
    <td width="100%">
      <div align="center">
        <center>
          <table border="0" cellpadding="0" cellspacing="0" width="100%">
            <tr><td bgcolor="#000000"><img src="images/-.gif" width="1" height="1"></td></tr>
            <tr><td><img src="images/-.gif" width="1" height="1"></td></tr>
            <tr><td bgcolor="#000000"><img src="images/-.gif" width="1" height="1"></td></tr>
            <tr><td align="middle" bgcolor="#008080">
              <font color="#FFFFFF" face="Times New Roman" size=3>
              <strong><em>Äîêóìåíòàöèÿ íà C--.</em></strong></font>
            </td></tr>
            <tr><td bgcolor="#000000"><img src="images/-.gif" width="1" height="1"></td></tr>
            <tr><td><img src="images/-.gif" width="1" height="1"></td></tr>
            <tr><td bgcolor="#000000"><img src="images/-.gif" width="1" height="1"></td></tr>
            <td width="100%">
<BODY LINK="#0000ff" VLINK="#800080" background="images/sphinx6.jpg" bgproperties="fixed">

<A name=contents>
<p align="center"><font color="#F000F0" face="Times New Roman" size=5><strong>
Ñîäåðæàíèå.
</strong></font></p></a>
                <pre>

<B><FONT FACE="Courier" COLOR="#ff0000">
<A href="#intro" style="TEXT-DECORATION: none">1      Ââåäåíèå.
1.1    Èñòîðèÿ ñîçäàíèÿ è ðàçâèòèÿ.</A>
<A href="#1.2" style="TEXT-DECORATION: none">1.2    ×òî òàêîå C--?</a>
<A href="#1.3" style="TEXT-DECORATION: none">1.3    Êàê óñòàíîâèòü C--.</a>
<A name=contents2>
<A href="#2.1" style="TEXT-DECORATION: none">2.     Óïðàâëåíèå êîìïèëÿöèåé.
2.1    Ïàðàìåòðû êîìàíäíîé ñòðîêè êîìïèëÿòîðà C--.</a>
<A href="#2.1.1" style="TEXT-DECORATION: none">2.1.1  /ON - Îïòèìèçàöèÿ ÷èñëîâûõ âûðàæåíèé.</a>
<A href="#2.1.2" style="TEXT-DECORATION: none">2.1.2  /DE - Âðåìåííîå ðàñøèðåíèå ðàçðÿäíîñòè ïåðåìåííîé.</a>
<A href="#2.1.3" style="TEXT-DECORATION: none">2.1.3  /ARGC - Àëüòåðíàòèâíûé îáðàáîò÷èê êîìàíäíîé ñòðîêè.</a>
<A href="#2.1.4" style="TEXT-DECORATION: none">2.1.4  /OST - ñëèÿíèå îäèíàêîâûõ ñòðîêîâûõ êîíñòàíò.</a>
<A href="#2.1.5" style="TEXT-DECORATION: none">2.1.5  /D - óñòàíîâêà èäåíòèôèêàòîðà â TRUE èç êîìàíäíîé ñòðîêè.</a>
<A href="#2.1.6" style="TEXT-DECORATION: none">2.1.6  /IA - óïðîùåííûé ââîä àññåìáëåðíûõ èíñòðóêöèé.</a>
<A href="#2.1.7" style="TEXT-DECORATION: none">2.1.7  /CRI - ïðîïóñê ïîâòîðíî âêëþ÷àåìîãî ôàéëà.</a>
<A href="#2.1.8" style="TEXT-DECORATION: none">2.1.8  /IND - èìïîðò èìåí ïðîöåäóð èç DLL.</a>
<A href="#2.1.9" style="TEXT-DECORATION: none">2.1.9  /WS - çàäàòü èìÿ stub ôàéëà äëÿ ïðîãðàìì ïîä windows.</a>
<A href="#2.1.10" style="TEXT-DECORATION: none">2.1.10 /WBSS - ðàçìåñòèòü íå èíèöèàëèçèðîâàííûå äàííûå â îòäåëüíîé ñåêöèè.</a>
<A href="#2.1.11" style="TEXT-DECORATION: none">2.1.11 /DBG - ñîçäàíèå îòëàäî÷íîé èíôîðìàöèè.</a>
<A href="#2.1.12" style="TEXT-DECORATION: none">2.1.12 /J0 /J1 /J2.</a>
<A href="#2.1.13" style="TEXT-DECORATION: none">2.1.13 /LST - Ñîçäàíèå àññåìáëåðíîãî ëèñòèíãà.</a>
<A href="#2.1.14" style="TEXT-DECORATION: none">2.1.14 /ENV - Ñîõðàíåíèå àäðåñà ïåðåìåííûõ îêðóæåíèÿ.</a>
<A href="#2.1.15" style="TEXT-DECORATION: none">2.1.15 /CPA - Î÷èñòêà post-îáëàñòè äàííûõ.</a>
<A href="#2.1.16" style="TEXT-DECORATION: none">2.1.16 /W - âûâîä ïðåäóïðåæäåíèé.</a>
<A href="#2.1.17" style="TEXT-DECORATION: none">2.1.17 /NW - Âûáîðî÷íîå îòêëþ÷åíèå òèïîâ ïðåäóïðåæäåíèé.</a>
<A href="#2.1.18" style="TEXT-DECORATION: none">2.1.18 /WSI - êîðîòêàÿ òàáëèöà èìïîðòà.</a>
<A href="#2.2" style="TEXT-DECORATION: none">2.2    Äèðåêòèâû òðàíñëÿòîðà.</a>
<A href="#2.2.1" style="TEXT-DECORATION: none">2.2.1  ?ifdef/?ifndef</a>
<A href="#2.2.2" style="TEXT-DECORATION: none">2.2.2  ?initallvar</a>
<A href="#2.2.3" style="TEXT-DECORATION: none">2.2.3  ?usestartup</a>
<A href="#2.2.4" style="TEXT-DECORATION: none">2.2.4  ?startusevar</a>
<A href="#2.2.5" style="TEXT-DECORATION: none">2.2.5  ?atexit</a>
<A href="#2.2.6" style="TEXT-DECORATION: none">2.2.6  ?startuptomain</a>
<A href="#2.2.7" style="TEXT-DECORATION: none">2.2.7  ?undef</a>
<A href="#2.2.8" style="TEXT-DECORATION: none">2.2.8  ?align è ?aligncode</a>
<A href="#2.2.9" style="TEXT-DECORATION: none">2.2.9  ?pragma</a>
<A name=contents3>
<A href="#3.1" style="TEXT-DECORATION: none">3.     Êîíñòàíòû.
3.1    ×èñëîâûå êîíñòàíòû.</a>
<A href="#3.2" style="TEXT-DECORATION: none">3.2    Ñèìâîëüíûå êîíñòàíòû.</a>
<A href="#3.3" style="TEXT-DECORATION: none">3.3    Ñòðîêîâûå êîíñòàíòû.</a>
<A href="#3.4" style="TEXT-DECORATION: none">3.4    Ïîñòîÿííûå âûðàæåíèÿ.</a>
<A name=contents4>
<A href="#4.1" style="TEXT-DECORATION: none">4.     Âûðàæåíèÿ.
4.1    Òèïû âûðàæåíèé.</a>
<A href="#4.2" style="TEXT-DECORATION: none">4.2    Âûðàæåíèÿ òèïà EAX/AX/AL.</a>
<A href="#4.3" style="TEXT-DECORATION: none">4.3    Âûðàæåíèÿ èñïîëüçóþùèå ïîëó÷àòåëü ïðè âû÷èñëåíèè âûðàæåíèÿ.</a>
<A href="#4.4" style="TEXT-DECORATION: none">4.4    Íå - EAX/AX/AL âûðàæåíèÿ.</a>
<A href="#4.5" style="TEXT-DECORATION: none">4.5    Óñëîâíûå âûðàæåíèÿ.</a>
<A href="#4.5.1" style="TEXT-DECORATION: none">4.5.1  Ïðîñòûå óñëîâíûå âûðàæåíèÿ.</a>
<A href="#4.5.2" style="TEXT-DECORATION: none">4.5.2  Ñëîæíûå óñëîâíûå âûðàæåíèÿ.</a>
<A href="#4.6" style="TEXT-DECORATION: none">4.6    Èçìåíåíèå òèïà âûðàæåíèÿ ïðè ïðèñâàèâàíèè.</a>
<A href="#4.7" style="TEXT-DECORATION: none">4.7    Âû÷èñëåíèå â ðåãèñòðû EAX/AX/AL ñî çíàêîì.</a>
<A name=contents5>
<A href="#5.1" style="TEXT-DECORATION: none">5.     Èäåíòèôèêàòîðû.
5.1    Ôîðìàò èäåíòèôèêàòîðà.</a>
<A href="#5.2" style="TEXT-DECORATION: none">5.2    Çàðåçåðâèðîâàííûå èäåíòèôèêàòîðû.</a>
<A href="#5.3" style="TEXT-DECORATION: none">5.3    Óíèâåðñàëüíûå ðåãèñòðû äëÿ 16 è 32-áèòíîãî ðåæèìà.</a>
<A href="#5.4" style="TEXT-DECORATION: none">5.4    Ïðåäîïðåäåëåííûå èäåíòèôèêàòîðû.</a>
<A name=contents6>
<A href="#6.1" style="TEXT-DECORATION: none">6.     Ïåðåìåííûå.
6.1    Òèïû ïåðåìåííûõ.</a>
<A href="#6.2" style="TEXT-DECORATION: none">6.2    Îáúÿâëåíèå ïåðåìåííûõ.</a>
<A href="#6.3" style="TEXT-DECORATION: none">6.3    Ãëîáàëüíûå ïåðåìåííûå.</a>
<A href="#6.4" style="TEXT-DECORATION: none">6.4    Ëîêàëüíûå ïåðåìåííûå.</a>
<A href="#6.5" style="TEXT-DECORATION: none">6.5    Äèíàìè÷åñêèå ïåðåìåííûå è ñòðóêòóðû.</a>
<A href="#6.6" style="TEXT-DECORATION: none">6.6    Ïðèñâàèâàíèå îäíîãî çíà÷åíèÿ íåñêîëüêèì ïåðåìåííûì.</a>
<A href="#6.7.1" style="TEXT-DECORATION: none">6.7    Ïåðåìåííûå òèïà float.
6.7.1  Ôîðìàò ïåðåìåííûõ òèïà float.</a>
<A href="#6.7.2" style="TEXT-DECORATION: none">6.7.2  Êîíñòàíòû ñ ïëàâàþùåé òî÷êîé.</a>
<A href="#6.7.3" style="TEXT-DECORATION: none">6.7.3  Äèàïàçîí äîïóñòèìûõ çíà÷åíèé.</a>
<A href="#6.7.4" style="TEXT-DECORATION: none">6.7.4  Ìàòåìàòè÷åñêèå îïåðàöèè.</a>
<A href="#6.7.5" style="TEXT-DECORATION: none">6.7.5  Ïðåîáðàçîâàíèÿ òèïîâ.</a>
<A href="#6.7.6" style="TEXT-DECORATION: none">6.7.6  Îïåðàöèè ñðàâíåíèÿ.</a>
<A href="#6.7.7" style="TEXT-DECORATION: none">6.7.7  Ñðàâíåíèå ïåðåìåííûõ òèïà float ñ 32-áèòíûì ðåãèñòðîì.</a>
<A href="#6.8" style="TEXT-DECORATION: none">6.8    Óêàçàòåëè.</a>
<A name=contents7>
<A href="#7.1" style="TEXT-DECORATION: none">7.     Àäðåñàöèÿ.
7.1    Îòíîñèòåëüíàÿ àäðåñàöèÿ.</a>
<A href="#7.2" style="TEXT-DECORATION: none">7.2    Àáñîëþòíàÿ àäðåñàöèÿ.</a>
<A name=contents8>
<A href="#8.1.1" style="TEXT-DECORATION: none">8.     Ðàáîòà ñ áëîêàìè äàííûõ.
8.1    Ñòðóêòóðû.
8.1.1  ×òî òàêîå ñòðóêòóðû.</a>
<A href="#8.1.2" style="TEXT-DECORATION: none">8.1.2  Ñèíòàêñèñ.</a>
<A href="#8.1.3" style="TEXT-DECORATION: none">8.1.3  Èíèöèàëèçàöèÿ ñòðóêòóð ïðè îáúÿâëåíèè.</a>
<A href="#8.1.4" style="TEXT-DECORATION: none">8.1.4  Èíèöèàëèçàöèÿ ñòðóêòóðû ïðè âûïîëíåíèè ïðîãðàììû.</a>
<A href="#8.1.5" style="TEXT-DECORATION: none">8.1.5  Îïåðàöèè ñ ýëåìåíòàìè ñòðóêòóð.</a>
<A href="#8.1.6" style="TEXT-DECORATION: none">8.1.6  Âëîæåííûå ñòðóêòóðû.</a>
<A href="#8.1.7" style="TEXT-DECORATION: none">8.1.7  Îòîáðàæåíèå òåãà ñòðóêòóðû íà áëîê ïàìÿòè.</a>
<A href="#8.1.8" style="TEXT-DECORATION: none">8.1.8  Áèòîâûå ïîëÿ ñòðóêòóð.</a>
<A href="#8.2" style="TEXT-DECORATION: none">8.2    Îáúåäèíåíèÿ.</a>
<A href="#8.3" style="TEXT-DECORATION: none">8.3    Êîìàíäû FROM è EXTRACT.</a>
<A name=contents9>
<A href="#9.1" style="TEXT-DECORATION: none">9.     Îïåðàòîðû.
9.1    Óñëîâíûå èíñòðóêöèè.</a>
<A href="#9.2" style="TEXT-DECORATION: none">9.2    Öèêëû do{} while.</a>
<A href="#9.3" style="TEXT-DECORATION: none">9.3    Öèêëû loop, LOOPNZ, loopnz.</a>
<A href="#9.4" style="TEXT-DECORATION: none">9.4    Öèêë while, WHILE.</a>
<A href="#9.5" style="TEXT-DECORATION: none">9.5    Öèêë for, FOR.</a>
<A href="#9.6" style="TEXT-DECORATION: none">9.6    Îïåðàòîð ïåðåêëþ÷àòåëü switch.</a>
<A href="#9.7" style="TEXT-DECORATION: none">9.7    Îïåðàòîð ïåðåõîäà goto, GOTO.</a>
<A href="#9.8" style="TEXT-DECORATION: none">9.8    Îïåðàòîð ðàçðûâà break, BREAK.</a>
<A href="#9.9" style="TEXT-DECORATION: none">9.9    Îïåðàòîð ïðîäîëæåíèÿ continue, CONTINUE.</a>
<A href="#9.10" style="TEXT-DECORATION: none">9.10   Ëîãè÷åñêîå îáúåäèíåíèå óñëîâèé.</a>
<A href="#9.11" style="TEXT-DECORATION: none">9.11   Ïåðåõîä ÷åðåç öèêëû.</a>
<A href="#9.12" style="TEXT-DECORATION: none">9.12   Èíâåðòèðîâàíèå ôëàãà ïðîâåðêè óñëîâèé.</a>
<A href="#9.13" style="TEXT-DECORATION: none">9.13   Âû÷èñëåíèå âûðàæåíèÿ, à çàòåì ïðîâåðêà óñëîâèÿ.</a>
<A href="#9.14" style="TEXT-DECORATION: none">9.14   Ïðîâåðêà áèòîâ ïðè îïåðàöèè ñðàâíåíèÿ.</a>
<A href="#9.15" style="TEXT-DECORATION: none">9.15   Îïåðàòîð ïåðåñòàíîâêè.</a>
<A href="#9.16" style="TEXT-DECORATION: none">9.16   Îïåðàòîð îòðèöàíèÿ.</a>
<A href="#9.17" style="TEXT-DECORATION: none">9.17   Îïåðàòîð èíâåðñèè.</a>
<A href="#9.18" style="TEXT-DECORATION: none">9.18   Ñïåöèàëüíûå óñëîâíûå âûðàæåíèÿ.</a>
<A href="#9.19" style="TEXT-DECORATION: none">9.19   Ñèìâîë $ - âñòàâëÿåò òåêóùèé àäðåñ ïðîãðàììû.</a>
<A href="#9.20" style="TEXT-DECORATION: none">9.20   Êëþ÷åâîå ñëîâî static è îïåðàòîð ::.</a>
<A href="#9.21" style="TEXT-DECORATION: none">9.21   Îïåðàòîð sizeof.</a>
<A href="#9.22" style="TEXT-DECORATION: none">9.22   Ìåòêè ïåðåõîäà.</a>
<A name=contents10>
<A href="#10.1" style="TEXT-DECORATION: none">10.    Àññåìáëåð.
10.1   Ïîääåðæêà êîìàíä àññåìáëåðà.</a>
<A href="#10.2" style="TEXT-DECORATION: none">10.2   Êëþ÷åâîå ñëîâî asm.</a>
<A href="#10.3" style="TEXT-DECORATION: none">10.3   Ïðåôèêñ dup - ïîâòîðåíèå èíñòðóêöèé DB/DW/DD.</a>
<A href="#10.4" style="TEXT-DECORATION: none">10.4   Èíñòðóêöèè ïðîöåññîðà Pentium III.</a>
<A name=contents11>
<A href="#11.1" style="TEXT-DECORATION: none">11.    Ïðîöåäóðû.
11.1   Òèïû ïðîöåäóð, ôóíêöèé è ìàêðîêîìàíä.</a>
<A href="#11.2" style="TEXT-DECORATION: none">11.2   Ñòåêîâûå ïðîöåäóðû.</a>
<A href="#11.3" style="TEXT-DECORATION: none">11.3   Ðåãèñòðîâûå ïðîöåäóðû.</a>
<A href="#11.4" style="TEXT-DECORATION: none">11.4   Äèíàìè÷åñêèå ïðîöåäóðû.</a>
<A href="#11.4.1" style="TEXT-DECORATION: none">11.4.1 Óñòàíîâêà äèíàìè÷åñêîé ïðîöåäóðû â îïðåäåëåííîå ìåñòî ïðîãðàììû.</a>
<A href="#11.5" style="TEXT-DECORATION: none">11.5   inline-ïðîöåäóðû.</a>
<A href="#11.5.1" style="TEXT-DECORATION: none">11.5.1 Äðóãîå ïðèìåíåíèå inline.</a>
<A href="#11.6" style="TEXT-DECORATION: none">11.6   Ïðîöåäóðû îáðàáîòêè ïðåðûâàíèé.</a>
<A href="#11.7" style="TEXT-DECORATION: none">11.7   Çàìåíà return íà goto.</a>
<A href="#11.8" style="TEXT-DECORATION: none">11.8   Âîçâðàùàåìûå çíà÷åíèÿ.</a>
<A href="#11.9" style="TEXT-DECORATION: none">11.9   Îáúÿâëåíèå ïàðàìåòðîâ â ðåãèñòðîâûõ ïðîöåäóðàõ.</a>
<A href="#11.10" style="TEXT-DECORATION: none">11.10  Îáúÿâëåíèå ïàðàìåòðîâ â ñòåêîâûõ ïðîöåäóðàõ.</a>
<A href="#11.11" style="TEXT-DECORATION: none">11.11  Èñïîëüçîâàíèå ìàêðîêîìàíä.</a>
<A href="#11.12" style="TEXT-DECORATION: none">11.12  Ïåðåäà÷à ïàðàìåòðîâ â ñòåêîâûå ïðîöåäóðû ÷åðåç ðåãèñòðû.</a>
<A href="#11.13" style="TEXT-DECORATION: none">11.13  Âûçîâ ïðîöåäóð ñ àäðåñîì â ðåãèñòðå.</a>
<A href="#11.14" style="TEXT-DECORATION: none">11.14  Âñòîåííûå â êîìïèëÿòîð ïðîöåäóðû.</a>
<A href="#11.14.1" style="TEXT-DECORATION: none">11.14.1 Ïðîöåäóðû ABORT, ATEXIT è EXIT.</a>
<A href="#11.14.2" style="TEXT-DECORATION: none">11.14.2 Ïðîöåäóðû inp/inportb, inport, inportd, outp/outportb, outport è
        outportd.</a>
<A href="#11.14.3" style="TEXT-DECORATION: none">11.14.3 Ïðîöåäóðû äëÿ ðàáîòû ñ âåùåñòâåííûìè ÷èñëàìè.</a>
<A href="#11.15.1" style="TEXT-DECORATION: none">11.15  Êëàññû.
11.15.1 Îáúÿâëåíèå ïðîöåäóð â ñòðóêòóðàõ.</a>
<A href="#11.15.2" style="TEXT-DECORATION: none">11.15.2 Íàñëåäîâàíèå.</a>
<A href="#11.15.3" style="TEXT-DECORATION: none">11.15.3 Íàñëåäîâàíèå ïðîöåäóð.</a>
<A name=contents12>
<A href="#12.1" style="TEXT-DECORATION: none">12.    Òèïû âûõîäíûõ ôàéëîâ.
12.1   Âûõîäíûå ôàéëû òèïà COM.</a>
<A href="#12.2" style="TEXT-DECORATION: none">12.2   Âûõîäíûå ôàéëû òèïà EXE.</a>
<A href="#12.3" style="TEXT-DECORATION: none">12.3   Âûõîäíîé ôàéë *.EXE ñ ìîäåëüþ ïàìÿòè tiny.</a>
<A href="#12.4" style="TEXT-DECORATION: none">12.4   Îáúåêòíûé âûõîäíîé ôàéë OBJ.</a>
<A href="#12.5.1" style="TEXT-DECORATION: none">12.5   COM ôàéë symbiosis.
12.5.1 ÑÈÌÁÈÎÇ - ÷òî ýòî òàêîå?</a>
<A href="#12.5.2" style="TEXT-DECORATION: none">12.5.2 Êàê ýòî äåëàòü.</a>
<A href="#12.5.3" style="TEXT-DECORATION: none">12.5.3 Èñïîëüçîâàíèå.</a>
<A href="#12.5.4" style="TEXT-DECORATION: none">12.5.4 Çëîóïîòðåáëåíèÿ.</a>
<A href="#12.6" style="TEXT-DECORATION: none">12.6   SYS - äðàéâåðû óñòðîéñòâ.</a>
<A href="#12.7" style="TEXT-DECORATION: none">12.7   Êîìïèëÿöèÿ êîäà ðàñøèðèòåëåé ROM-BIOS.</a>
<A href="#12.8.1" style="TEXT-DECORATION: none">12.8   32-áèòíûå ôàéëû.
12.8.1 32-áèòíûé êîä ïîä DOS.</a>
<A href="#12.8.2" style="TEXT-DECORATION: none">12.8.2 32-áèòíûé êîä ïîä Windows.</a>
<A href="#12.8.3" style="TEXT-DECORATION: none">12.8.3 Âûçîâ API ïðîöåäóð ïî îðäèíàëàì.</a>
<A href="#12.8.4" style="TEXT-DECORATION: none">12.8.4 Ñîçäàíèå DLL ïîä Windows.</a>
<A href="#12.8.5" style="TEXT-DECORATION: none">12.8.5 Èíèöèàëèçàöèÿ DLL ïðè çàãðóçêå.</a>
<A href="#12.8.6" style="TEXT-DECORATION: none">12.8.6 Êîìïèëÿöèÿ ðåñóðñîâ.</a>
<A href="#12.9" style="TEXT-DECORATION: none">12.9   Âûõîäíûå ôàéëû äëÿ MeOS.</a>
<A name=contents13>
<A href="#13.1" style="TEXT-DECORATION: none">13.    Ïðèëîæåíèÿ.
13.1   Ïîèñê âêëþ÷àåìûõ ôàéëîâ.</a>
<A href="#13.2" style="TEXT-DECORATION: none">13.2   Ðåãèñòðû, êîòîðûå äîëæíû áûòü ñîõðàíåíû.</a>
<A href="#13.3" style="TEXT-DECORATION: none">13.3   C--.ini ôàéë.</a>
<A href="#13.4" style="TEXT-DECORATION: none">13.4   startup.h-- ôàéë.</a>
<A href="#13.5" style="TEXT-DECORATION: none">13.5   mainlib.ldp ôàéë.</a>
<A href="#13.6" style="TEXT-DECORATION: none">13.6   C-- ñèìâîëû.</a>
</FONT></B>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=intro>1. Âñòóïëåíèå.

  1.1 Èñòîðèÿ ñîçäàíèÿ è ðàçâèòèÿ.
</A></B></FONT><FONT FACE="Courier">

      Àâòîðîì ÿçûêà SPHINX C-- ÿâëÿåòñÿ Peter Cellik (CANADA). Ïîñëåäíÿÿ
  àâòîðñêàÿ âåðñèÿ SPHINX C-- v0.203 îò 28.Oct.96. Ê ñîæàëåíèþ àâòîð
  îòêàçàëñÿ îò äàëüíåéøåãî ðàçâèòèÿ ÿçûêà. Ñ 1998 ãîäà, óæå ïî÷òè óìåðøèé
  ïðîåêò, ïîäõâàòèë Ìèõàèë Øåêåð (Ðîññèÿ). Èçíà÷àëüíî êîìïèëÿòîð áûë freeware
  (è äàæå greenware, êàê åãî íàçûâàë Peter Cellik). Òàêèì ñòàòóñ êîìïèëÿòîðà
  îñòàëñÿ è ïîíûíå.

      Ïåðâîíà÷àëüíî êîìïèëÿòîð ìîã ñîçäàâàòü òîëüêî *.com ôàéëû è áûë
  ðàññ÷èòàí íà ñîçäàíèå íåáîëüøèõ demo-ïðîãðàìì è ðåçèäåíòîâ (TSR). Â
  äàëüíåéøåì âîçìîæíîñòè êîìïèëÿòîðà ðàñøèðÿëèñü, òàê êàê ýòîãî òðåáîâàëî
  íàøå áóðíîå âðåìÿ.

      Ïðè ðàçâèòèè êîìïèëÿòîðà, áûëî ñòðåìëåíèå ïðèäåðæèâàòüñÿ ñëåäóþùèõ
  ïðèíöèïîâ:

      1. Ìàêñèìàëüíî âîçìîæíàÿ ñîâìåñòèìîñòü ñèíòàêñèñà ñ ïîñëåäíåé âåðñèåé
  êîìïèëÿòîðà íàïèñàííîãî Peter Cellik. Ýòî äàâàëî âîçìîæíîñòü ñ ìèíèìàëüíûìè
  çàòðàòàìè (à ÷àùå âñåãî áåç âñÿêèõ çàòðàò) àäàïòèðîâàòü ïðîãðàììû,
  íàïèñàííûå äëÿ 0.203 âåðñèè êîìïèëÿòîðà, ê ïîñëåäíåé íà ýòîò ìîìåíò âåðñèè
  êîìïèëÿòîðà.

      2. Ñáëèçèòü ñèíòàêñèñ êîìïèëÿòîðà ñî ñòàíäàðòíûì ÿçûêîì C. Ýòî ìîãëî
  çíà÷èòåëüíî îáëåã÷èòü ïåðåíîñ ïðîãðàìì íàïèñàííûõ íà C.

      3. Òàêæå ïðèëàãàëèñü óñèëèÿ, äëÿ òîãî, ÷òîáû ÷åëîâåê çíàþùèé òîëüêî
  àññåìáëåð ìîã áû ñ ìèíèìàëüíûìè çàòðàòàìè îñâîèòü C--.

      Âîò ýòè, çà÷àñòóþ ïðîòèâîðå÷àùèå äðóã äðóãó ïðèíöèïû, âëèÿëè íà âûáîð
  ðåàëèçàöèè âîçìîæíîñòåé êîìïèëÿòîðà. Íàñêîëüêî ýòî óäàëîñü - ñóäèòü Âàì.

      Åñëè ó Âàñ åñòü ïðåäëîæåíèÿ è èäåè ïî óëó÷øåíèþ êîìïèëÿòîðà - ïèøèòå.
  Ìîé e-mail <a href="mailto:sheker@mail.ru">sheker@mail.ru</a> . ß ñ óäîâîëüñòâèåì âûñëóøàþ Âàøè ïðåäëîæåíèÿ, íî
  íå ãàðàíòèðóþ, ÷òî âñå îíè áóäóò ðåàëèçîâàíû. Åñëè ðåàëèçîâûâàòü âñå
  ïîñòóïàþùèå ïðåäëîæåíèÿ, òî êîìïèëÿòîð ïðåâðàòèòñÿ â ñâàëêó. Íî åñëè Âàøå
  ïðåäëîæåíèå áóäåò öåííûì (íà ìîé âçãëÿä, òàê ÷òî Âàì ïðèäåòñÿ ñâîå
  ïðåäëîæåíèå õîðîøî àðãóìåíòèðîâàòü) è åãî áóäåò âîçìîæíûì ðåàëèçîâàòü, îíî
  áåç ñîìíåíèÿ íàéäåò ìåñòî â êîìïèëÿòîðå.
<A href="#contents" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=1.2>
  1.2 ×òî òàêîå C--?
</A></B></FONT><FONT FACE="Courier">

      C-- áûë ðàçðàáîòàí, äëÿ òîãî ÷òîáû ñòðîèòü ìàëåíüêèå è áûñòðûå
  ïðîãðàììû. Ýòî íàèáîëåå ïîäõîäèò äëÿ ñîçäàíèÿ ðåçèäåíòíûõ ïðîãðàìì (TSR),
  ïðîãðàìì, òðåáóþùèõ îáðàáîòêó ïðåðûâàíèé èëè ïðîãðàìì ó êîòîðûõ îãðàíè÷åíû
  ðåñóðñû.

      C-- çàíèìàåò ïðîìåæóòî÷íîå ïîëîæåíèå ìåæäó ñè è àññåìáëåðîì.  ñâÿçè ñ
  ýòèì ïðîìåæóòî÷íûì ïîëîæåíèåì, Âàì, äëÿ òîãî ÷òîáû ïèñàòü ïðîãðàììû íà C--,
  íåîáõîäèìî çíàòü è àññåìáëåð è ñè. Åñëè Âàì íàäîåëî âîçèòüñÿ ñ îãðîìíûìè
  àññåìáëåðíûìè ëèñòèíãàìè, à èçëèøíÿÿ ñòðîãîñòü ÿçûêà C Âàñ óãíåòàåò, òî ýòîò
  ÿçûê äëÿ ÂÀÑ.

      Ñåé÷àñ êîìïèëÿòîð C-- ìîæåò ñîçäàâàòü 32-áèòíûå ïðîãðàììû ïîä Windows
  (EXE-ôàéëû ôîðìàòà PE) è 32-áèòíûå ïðîãðàììû ïîä DOS (LE-ôîðìàò). Èìååò
  âñòðîåííûé êîìïèëÿòîð ðåñóðñîâ è äèçàññåìáëåð äëÿ ãåíåðàöèè ëèñòèíãà
  îòêîìïèëèðîâàííîãî ôàéëà. Ïîääåðæèâàåò àññåìáëåðíûå èíñòðóêöèè ïðîöåññîðà
  Pentium III è àññåìáëåðíûå èíñòðóêöèè FPU. Êîìïèëÿòîð ìîæåò ãåíåðèðîâàòü
  îòëàäî÷íóþ èíôîðìàöèþ ñîâìåñòèìóþ ñ îòëàä÷èêàìè ôèðìû Borland. Êîìïèëÿòîð
  ìîæåò ñîçäàâàòü îáúåêòíûå ôàéëû (obj), íî òîëüêî äëÿ DOS ïðîãðàìì.

      C-- ðàçðàáîòàí òîëüêî äëÿ èñïîëüçîâàíèÿ íà êîìïüþòåðàõ ñ ïðîöåññîðàìè
  ñîâìåñòèìûìè ñ ñåìåéñòâîì 80x86. Êîìïèëÿòîð ìîæåò ðàáîòàòü òîëüêî ñ
  îïåðàöèîííûìè ñèñòåìàìè DOS è ñåìåéñòâîì Windows.
<A href="#contents" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=1.3>
  1.3 Êàê óñòàíîâèòü C--.
</A></B></FONT><FONT FACE="Courier">

      Êîìïèëÿòîðó C-- äëÿ ðàáîòû íóæíû ñîâñåì íåçíà÷èòåëüíûå ðåñóðñû:
  ïðîöåññîð 386 èëè ëó÷øå, ÷óòü áîëåå 1 Ìá äèñêîâîãî ïðîñòðàíñòâà è 4Ìá
  îïåðàòèâíîé ïàìÿòè. Êîìïèëÿòîð ìîæåò áûòü óñòàíîâëåí íà êîìïüþòåðû ñ
  îïåðàöèîííîé ñèñòåìîé Windows 95 èëè ëó÷øå. Êîìïèëÿòîð òàêæå ìîæåò ðàáîòàòü
  â ñðåäå ÷èñòîãî DOS.  îñíîâíîì ïàêåòå êîìïèëÿòîðà íàõîäèòñÿ 32-áèòíàÿ DOS
  âåðñèÿ êîìïèëÿòîðà. Íà ñàéòå <a href="http://sheker.chat.ru">http://sheker.chat.ru</a> èëè
  <a href="http://c--sphinx.narod.ru">http://c--sphinx.narod.ru</a> ìîæíî íàéòè è êîíñîëüíóþ âåðñèþ êîìïèëÿòîðà.
  Êîíñîëüíàÿ âåðñèÿ êîìïèëÿòîðà ìîæåò ðàáîòàòü òîëüêî â ñðåäå Windows, íî
  îíà, â îòëè÷èå îò DOS âåðñèè, ìîæåò ðàáîòàòü ñ äëèííûìè èìåíàìè èñõîäíûõ
  ôàéëîâ.

      Óñòàíîâèòü êîìïèëÿòîð C-- íà Âàø êîìïüþòåð î÷åíü ïðîñòî. Ïðåäïîëîæèì,
  ÷òî Âû ðåøèëè óñòàíîâèòü C-- íà äèñê C. Ñîçäàéòå íà äèñêå C äèðåêòîðèþ
  (ïàïêó) ñ èìåíåì <b>C--</b> èëè ñ äðóãèì, óäîáíûì è ïîíÿòíûì äëÿ Âàñ èìåíåì
  (íàïðèìåð, ÄÎÑîâñêîé êîìàíäîé: <b>MD C--</b> èëè äðóãèì äîñòóïíûì Âàì ñïîñîáîì).
  Çàòåì ñ ñàéòà <a href="http://sheker.chat.ru">http://sheker.chat.ru</a> èëè <a href="http://c--sphinx.narod.ru">http://c--sphinx.narod.ru</a> ñêà÷àéòå
  ôàéëû full_c--.zip è ful_c--2.zip è ðàçàðõèâèðóéòå èõ â ýòîé äèðåêòîðèè.
  Çàòåì â ôàéëå autoexec.bat ìîæíî ïðîïèñàòü ïóòü ê äèðåêòîðèè ñ
  êîìïèëÿòîðîì. È âñå. Êîìïèëÿòîð ãîòîâ ê ðàáîòå. Åñëè Âû äîáàâëÿëè ïóòü ê
  êîìïèëÿòîðó â ôàéë autoexec.bat, òî Âàì ïðèäåòñÿ ïåðåãðóçèòü îïåðàöèîííóþ
  ñèñòåìó.

      Ïåðåìåííàÿ îêðóæåíèÿ äëÿ êîìïèëÿòîðà C-- çàäàåòñÿ ëèáî èç êîìàíäíîé
  ñòðîêè ëèáî èç êîìàíäíîãî ôàéëà (ëó÷øå âñåãî åå ïðîïèñàòü â autoexec.bat).
  Ýòà ïåðåìåííàÿ äîëæíà óêàçûâàòü êîìïèëÿòîðó, ãäå íàõîäÿòñÿ åãî áèáëèîòå÷íûå
  ôàéëû. Ïðèìåð:

    <b>set C--=c:\c--\lib</b>

  Áîëüøîé íåîáõîäèìîñòè â ïåðåìåííîé îêðóæåíèÿ äëÿ ñåãîäíÿøíåé âåðñèè
  êîìïèëÿòîðà íåò. Ñóùåñòâóåò íåñêîëüêî äðóãèõ ñïîñîáîâ, óêàçàòü êîìïèëÿòîðó
  ìåñòî ðàñïîëîæåíèÿ áèáëèîòåê. Ïîýòîìó îïðåäåëÿòü èëè íå îïðåäåëÿòü
  ïåðåìåííóþ îêðóæåíèÿ äåëî âàøåãî âêóñà è ïðèâû÷åê.
<A href="#contents" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1>
2. Óïðàâëåíèå êîìïèëÿöèåé.

  2.1 Ïàðàìåòðû êîìàíäíîé ñòðîêè êîìïèëÿòîðà C--.
</A></B></FONT><FONT FACE="Courier">

      Ôîðìàò êîìàíäíîé ñòðîêè âûçîâà êîìïèëÿòîðà C--:

  C-- [Ïàðàìåòðû] [ÈÌß INI ÔÀÉËÀ] [ÈÌß ÈÑÕÎÄÍÎÃÎ ÔÀÉËÀ]

      Èìÿ èñõîäíîãî ôàéëà ìîæíî çàäàâàòü áåç ðàñøèðåíèÿ. Êîìïèëÿòîð èùåò
  ôàéë ñ ðàñøèðåíèåì <b>c--, cmm, c</b>.

      Ïàðàìåòðû âûäåëÿþòñÿ ïðåäøåñòâóþùèì ñèìâîëîì <b>/</b> èëè <b>-</b>.
  Èíâåðòèðîâàòü ôóíêöèþ îïöèè ìîæíî çàâåðøàþùèì ñèìâîëîì <b>-</b>.

  Ñïèñîê ïîääåðæèâàåìûõ ïàðàìåòðîâ:

  <b>/0</b>          èñïîëüçîâàòü òîëüêî êîìàíäû 8086/8088 ïðîöåññîðà (óñòàíîâëåíî
              ïî óìîë÷àíèþ ïðè êîìïèëÿöèè 16-áèòíûõ ïðîãðàìì).
  <b>/1</b>          èñïîëüçîâàòü êîìàíäû 80186 ïðîöåññîðà.
  <b>/2</b>          èñïîëüçîâàòü êîìàíäû è îïòèìèçàöèþ äëÿ 80286 ïðîöåññîðà.
  <b>/3</b>          èñïîëüçîâàòü êîìàíäû è îïòèìèçàöèþ äëÿ 80386 ïðîöåññîðà.
              (óñòàíîâëåíî ïî óìîë÷àíèþ äëÿ 32-áèòíûõ ïðîãðàìì).
  <b>/4</b>          èñïîëüçîâàòü êîìàíäû è îïòèìèçàöèþ äëÿ 80486 ïðîöåññîðà.
  <b>/5</b>          èñïîëüçîâàòü êîìàíäû è îïòèìèçàöèþ äëÿ Pentium ïðîöåññîðà.
  <b>/6</b>          èñïîëüçîâàòü êîìàíäû è îïòèìèçàöèþ äëÿ Pentium MMX ïðîöåññîðà.
  <b>/7</b>          èñïîëüçîâàòü êîìàíäû è îïòèìèçàöèþ äëÿ Pentium Pro ïðîöåññîðà.
  <b>/8</b>          èñïîëüçîâàòü êîìàíäû è îïòèìèçàöèþ äëÿ Pentium II ïðîöåññîðà.
  <b>/9</b>          èñïîëüçîâàòü êîìàíäû è îïòèìèçàöèþ äëÿ Pentium III ïðîöåññîðà
              (ïîêà íå ðåàëèçîâàíî èç-çà îòñóòñòâèè èíôîðìàöèè).
  <b>/A</b>          âûðàâíèâàíèå äàííûõ íà ÷åòíûé àäðåñ
              ïî óìîë÷àíèþ ðàçðåøåíî, ïîääåðæèâàåò èíâåðñèþ
  <b>/AC</b>         âûðàâíèâàíèå àäðåñà íà÷àëà öèêëîâ
              ïî óìîë÷àíèþ îòêëþ÷åíî, ïîääåðæèâàåò èíâåðñèþ
              èìååò ñìûñë òîëüêî íà ïðîöåññîðàõ Pentium+
  <b>/AL</b>=##      óñòàíîâèòü çíà÷åíèå áàéòà çàïîëíåíèÿ ïðè âûðàâíèâàíèè äàííûõ
              ïî óìîë÷àíèþ 0.
  <b>/AP</b>         âûðàâíèâàíèå àäðåñà íà÷àëà ïðîöåäóð.
              ïî óìîë÷àíèþ îòêëþ÷åíî, ïîääåðæèâàåò èíâåðñèþ
              èìååò ñìûñë òîëüêî íà ïðîöåññîðàõ Pentium è ëó÷øå
  <b>/ARGC</b>       âñòàâèòü áëîê ðàçáîðà êîìàíäíîé ñòðîêè
              ïî óìîë÷àíèþ îòêëþ÷åíî, ïîääåðæèâàåò èíâåðñèþ
  <b>/AS</b>         âûðàâíèâàíèå â ñòðóêòóðàõ.
              ïî óìîë÷àíèþ îòêëþ÷åíî, ïîääåðæèâàåò èíâåðñèþ
  <b>/AT</b>         âñòàâèòü áëîê ïîääåðæêè <b>ATEXIT</b> ïðîöåäóðû
              ïî óìîë÷àíèþ îòêëþ÷åíî, ïîääåðæèâàåò èíâåðñèþ
  <b>/C</b>          âñòàâèòü áëîê èãíîðèðîâàíèÿ <b>CTRL-C</b>
              ïî óìîë÷àíèþ îòêëþ÷åí, ïîääåðæèâàåò èíâåðñèþ
              èìååò ñìûñë òîëüêî ïîä DOS ïðîãðàììû
  <b>/CRI</b>        ïðîâåðÿòü âêëþ÷àåìûå ôàéëû íà ïîâòîðíóþ çàãðóçêó
              ïî óìîë÷àíèþ âêëþ÷åíî, ïîääåðæèâàåò èíâåðñèþ
  <b>/CPA</b>        î÷èñòêà post-îáëàñòè äàííûõ
  <b>/D32</b>        ñîçäàòü EXE ôàéë (32 áèòíûé êîä ïîä DOS)
              ïî óìîë÷àíèþ COM
  <b>/D</b>=idname   îïðåäåëèòü èäåíòèôèêàòîð äëÿ óñëîâíîé êîìïèëÿöèè
              ïî óìîë÷àíèþ íåò
  <b>/DBG</b>        ãåíåðèðîâàòü îòëàäî÷íóþ èíôîðìàöèþ
              ïî óìîë÷àíèþ íåò
  <b>/DE</b>         âðåìåííîå ðàñøèðåíèå ðàçðÿäíîñòè ïîñëå óìíîæåíèÿ
              ïî óìîë÷àíèþ îòêëþ÷åíî, ïîääåðæèâàåò èíâåðñèþ
  <b>/DLL</b>        ñîçäàòü DLL äëÿ Windows32
              ïî óìîë÷àíèþ COM
  <b>/ENV</b>        ñîõðàíåíèå àäðåñà ïåðåìåííûõ îêðóæåíèÿ
  <b>/EXE</b>        ñîçäàòü EXE ôàéë äëÿ DOS (ìîäåëü SMALL)
              ïî óìîë÷àíèþ COM
  <b>/HELP /H /?</b> ñïðàâêà, ýòà èíôîðìàöèÿ
  <b>/IA</b>         èìåíà àññåìáëåðíûõ èíñòðóêöèé ÿâëÿþòñÿ èäåíòèôèêàòîðàìè
              ïî óìîë÷àíèþ îòêëþ÷åíî, ïîääåðæèâàåò èíâåðñèþ
  <b>/IND</b>=name   èìïîðò èìåí èç ôàéëà <b>name</b>.
  <b>/IP</b>=path    çàäàòü ïóòü ïîèñêà âêëþ÷àåìûõ ôàéëîâ
              ïî óìîë÷àíèþ íåò
  <b>/IV</b>         èíèöèàëèçèðîâàòü âñå ïåðåìåííûå
              ïî óìîë÷àíèþ îòêëþ÷åíî, ïîääåðæèâàåò èíâåðñèþ
  <b>/J0</b>         íå äåëàòü íà÷àëüíûé jump íà main()
              ïî óìîë÷àíèþ îòêëþ÷åíî, ïîääåðæèâàåò èíâåðñèþ
              Â COM-ôàéëàõ íå ñîçäàåò jmp íà main. Â îñòàëüíûõ íå ñîçäàåòñÿ
              áëîê íà÷àëüíîé èíèöèàëèçàöèè ïðîãðàììû, à óïðàâëåíèå
              ïåðåäàåòñÿ ñðàçó íà main.
  <b>/J1</b>         äåëàòü êîðîòêèé jump íà main()
              ïî óìîë÷àíèþ íåò
              èìååò ñìûñë òîëüêî â COM-ôàéëàõ
  <b>/J2</b>         äåëàòü jump íà main()
              ïî óìîë÷àíèþ äà, ïîääåðæèâàåò èíâåðñèþ
              èìååò ñìûñë òîëüêî â COM-ôàéëàõ
  <b>/LAI</b>        ñïèñîê ïîääåðæèâàåìûõ àññåìáëåðíûõ èíñòðóêöèé
  <b>/LRS</b>        çàãðóæàòü ÷èñëîâûå êîíñòàíòû ÷åðåç ñòåê.
              ïî óìîë÷àíèþ äà, ïîääåðæèâàåò èíâåðñèþ
  <b>/LST</b>        ñîçäàòü àññåìáëåðíûé ëèñòèíã
  <b>/ME</b>         ïîêàçàòü ìîé àäðåñ è èìÿ
  <b>/MEOS</b>       ñîçäàòü èñïîëíÿåìûé ôàéë äëÿ MeOS
              ïî óìîë÷àíèþ COM
  <b>/MER</b>=##     óñòàíîâèòü ìàêñèìàëüíîå ÷èñëî îøèáîê
              ïî óìîë÷àíèþ 16
  <b>/MIF</b>=file   îïðåäåëèòü èìÿ ãëàâíîãî êîìïèëèðóåìîãî ôàéëà
  <b>/NS</b>         çàïðåòèòü ïîäêëþ÷àòü stub ôàéëîâ
              ïî óìîë÷àíèþ íåò, ïîääåðæèâàåò èíâåðñèþ
  <b>/NW</b>=##      âûáîðî÷íîå îòêëþ÷åíèå ïðåäóïðåæäåíèé
  <b>/OBJ</b>        ñîçäàòü OBJ ôàéë
              òîëüêî 16 áèòíûé êîä.
              ïî óìîë÷àíèþ COM
  <b>/OC</b>         îïòèìèçèðîâàòü ïî ðàçìåðó êîäà
              ïî óìîë÷àíèþ íåò, ïîääåðæèâàåò èíâåðñèþ
  <b>/ON</b>         îïòèìèçàöèÿ ÷èñåë
              ïî óìîë÷àíèþ íåò, ïîääåðæèâàåò èíâåðñèþ
  <b>/OS</b>         îïòèìèçàöèÿ ïî ñêîðîñòè âûïîëíåíèÿ
              ïî óìîë÷àíèþ äà, ïîääåðæèâàåò èíâåðñèþ
  <b>/OST</b>        îïòèìèçàöèÿ ñòðîêîâûõ èäåíòèôèêàòîðîâ
              ïî óìîë÷àíèþ îòêëþ÷åíî, ïîääåðæèâàåò èíâåðñèþ
  <b>/P</b>          âñòàâèòü áëîê ðàçáîðêè êîìàíäíîé ñòðîêè
              ïî óìîë÷àíèþ íåò, ïîääåðæèâàåò èíâåðñèþ
  <b>/R</b>          âñòàâèòü áëîê óìåíüøàþùèé ðàçìåð äîñòóïíîé ïàìÿòè.
              ïî óìîë÷àíèþ äà, ïîääåðæèâàåò èíâåðñèþ
              èìååò ñìûñë òîëüêî â DOS-ôàéëàõ
  <b>/S</b>=#####    óñòàíîâèòü ðàçìåð ñòåêà
              ïî óìîë÷àíèþ 2048
  <b>/SA</b>=####    íà÷àëüíîå ñìåùåíèå àäðåñà çàïóñêà ïðîãðàììû
              èìååò ñìûñë òîëüêî â COM-ôàéëàõ, ïî óìîë÷àíèþ 0x100
  <b>/SOBJ</b>       ñîçäàòü âåäîìûé OBJ ôàéë
              ïî óìîë÷àíèþ COM
  <b>/STM</b>        ïåðåíåñòè áëîê startup êîäà â ïðîöåäóðó main
              ïî óìîë÷àíèþ íåò, ïîääåðæèâàåò èíâåðñèþ
              èìååò ñìûñë òîëüêî â COM-ôàéëàõ
  <b>/SUV</b>=####   íà÷àëüíûé àäðåñ íå èíèöèàëèçèðîâàííûõ ïåðåìåííûõ, ïðè
              èñïîëüçîâàíèè èìè startup êîäà.
              èìååò ñìûñë òîëüêî â COM-ôàéëàõ, ïî óìîë÷àíèþ ðàâåí /SA
  <b>/SYM</b>        íàäñòðîéêà äëÿ COM ôàéëà
              ïî óìîë÷àíèþ COM
  <b>/SYS</b>        ñîçäàòü äðàéâåð óñòðîéñòâ (SYS)
              ïî óìîë÷àíèþ COM
  <b>/TEXE</b>       ñîçäàòü EXE ôàéë äëÿ DOS (ìîäåëü TINY)
              ïî óìîë÷àíèþ COM
  <b>/UL</b>         èñïîëüçîâàòü lea ïðè îïòèìèçàöèè ñëîæåíèÿ ðåãèñòðîâ.
              ïî óìîë÷àíèþ äà, ïîääåðæèâàåò èíâåðñèþ
  <b>/UST</b>        èñïîëüçîâàòü startup êîä äëÿ ïåðåìåííûõ.
              èìååò ñìûñë òîëüêî â COM-ôàéëàõ
              ïî óìîë÷àíèþ íåò, ïîääåðæèâàåò èíâåðñèþ
  <b>/W</b>          ðàçðåøèòü ïðåäóïðåæäåíèÿ
              ïî óìîë÷àíèþ íåò, ïîääåðæèâàåò èíâåðñèþ
  <b>/W32</b>        ñîçäàòü EXE ôàéë äëÿ Windows32 GUI
              ïî óìîë÷àíèþ COM
  <b>/W32C</b>       ñîçäàòü EXE ôàéë äëÿ Windows32 console
              ïî óìîë÷àíèþ COM
  <b>/WBSS</b>       ïîìåùàòü íå èíèöèàëèçèðîâàííûå äàííûå â îòäåëüíóþ ñåêöèþ.
              ïî óìîë÷àíèþ äëÿ /w32 ðàçðåøåíî, äëÿ îñòàëüíûõ çàïðåùåíî.
              ïîääåðæèâàåò èíâåðñèþ
  <b>/WF</b>=file    ïåðåíàïðàâèòü âûâîä ïðåäóïðåæäåíèé â ôàéë.
              ïî óìîë÷àíèþ íåò
  <b>/WFA</b>        èñïîëüçîâàòü áûñòðûå âûçîâû API ïðîöåäóð
              ïî óìîë÷àíèþ äà, ïîääåðæèâàåò èíâåðñèþ
              òîëüêî ïîä windows
  <b>/WFU</b>        ñîçäàâàòü òàáëèöó ïåðåìåùåíèé (äëÿ Windows32)
              ïî óìîë÷àíèþ íåò, ïîääåðæèâàåò èíâåðñèþ
              òîëüêî ïîä windows
              äëÿ DLL óñòàíàâëèâàåòñÿ â äà
  <b>/WIB</b>=#####  óñòàíîâèòü àäðåñ image base
              ïî óìîë÷àíèþ 0x400000
  <b>/WMB</b>        ñîçäàâàòü Windows-ôàéë ñ åäèíûì áëîêîì
              ïî óìîë÷àíèþ äà, ïîääåðæèâàåò èíâåðñèþ
              òîëüêî ïîä windows
              äëÿ DLL óñòàíàâëèâàåòñÿ â íåò
  <b>/WORDS</b>      âûäàòü ñïèñîê çàðåçåðâèðîâàííûõ èäåíòèôèêàòîðîâ
  <b>/WS</b>=name    óêàçûâàåò èìÿ ôàéëà èñïîëüçóåìîãî â êà÷åñòâå <b>stub</b> ïîä windows.
  <b>/X</b>          çàïðåòèòü âñòàâëÿòü â êîä <b>SPHINXC--</b> ñèãíàòóðó
              ïî óìîë÷àíèþ ðàçðåøåíî, ïîääåðæèâàåò èíâåðñèþ
              îòêëþ÷àåòñÿ åñëè åñòü <b>J0</b>

      Ïðèìå÷àíèå: âûðàæåíèå <i>ïîääåðæèâàåò èíâåðñèþ</i> îçíà÷àåò, ÷òî äëÿ äàííîé
  îïöèè ìîæíî èñïîëüçîâàòü è ïðîòèâîïîëîæíîå çíà÷åíèå ñ ïîìîùüþ ñèìâîëà <b>-</b>
  ïîñëå îïöèè. Ïðèìåð:

  <b>/WFA-</b>

       Ïàðàìåòðû êîìàíäíîé ñòðîêè ìîæíî ïèñàòü êàê áîëüøèìè, òàê è
  ìàëåíüêèìè áóêâàìè.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.1>
    2.1.1 /ON - Îïòèìèçàöèÿ ÷èñëîâûõ âûðàæåíèé.
</A></B></FONT><FONT FACE="Courier">

        Ïðè âêëþ÷åíèè â êîìàíäíóþ ñòðîêó îïöèè <b>/ON</b> èëè â ôàéë C--.INI ñòðî÷êè
    <b>ON</b>, êîìïèëÿòîð áóäåò àíàëèçèðîâàòü îïåðàöèè íàä ÷èñëàìè è ãäå ýòî
    ìîæíî, ñîêðàùàòü ÷èñëî îïåðàöèé. Íàïðèìåð:

     Ñòðîêà äî îïòèìèçàöèè  | Ïîñëå îïòèìèçàöèè
    -----------------------------------------------
      AX = var + 7 - 3;     | AX = var + 4;
      AX = var * 2 * 5;     | AX = var * 10;
      AX = var * 2 / 4;     | AX = var / 2;
      AX = var * 10 / 2;    | AX = var * 5;
      AX = var / 2 / 3;     | AX = var / 6;
      AX = var / 4 * 8;     | AX = var * 2;
      AX = var / 16 * 16;   | AX = var;

        Âîçìîæíûå îòðèöàòåëüíûå ïîñëåäñòâèÿ:
        Ïðèìåíåíèå ýòîé îïòèìèçàöèè ìîæåò èìåòü è íåãàòèâíûå ïîñëåäñòâèÿ.
    Íàïðèìåð, åñëè Âàì íóæíî âûðîâíÿòü çíà÷åíèå ïåðåìåííîé íà ãðàíèöó
    ïàðàãðàôà, Âû íàïèøèòå ñòðîêó:

    var = var / 16 * 16;

    íî ïîñëå îïòèìèçàöèè áóäåò

    var = var;

    ò.å. âûðàâíèâàíèå íå áóäåò  ïðîèçâåäåíî. Ýòîãî ìîæíî èçáåæàòü, åñëè
    ðàçáèòü ýòî âûðàæåíèå íà äâà:

    var = var / 16;
    var = var * 16;

    òîãäà îïòèìèçàöèÿ íå áóäåò ïðîèçâåäåíà. Íî äëÿ ïîëó÷åíèÿ áîëåå
    êîìïàêòíîãî êîäà ëó÷øå áóäåò çàïèñàòü òàê:

    AX = var;
    AX = AX / 16;
    AX = AX * 16;
    var = AX;
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.2>
    2.1.2 /DE - Âðåìåííîå ðàñøèðåíèå ðàçðÿäíîñòè ïåðåìåííîé.
</A></B></FONT><FONT FACE="Courier">

        Êàê èçâåñòíî, ïîñëå óìíîæåíèÿ ìîæåò ïðîèçîéòè ïåðåïîëíåíèå, ò.å
    ðàçðÿäíîñòü ðåçóëüòàòà ìîæåò ïðåâûñèòü ðàçðÿäíîñòü èñõîäíûõ îïåðàíäîâ è
    ïðîèçîéäåò èñêàæåíèå ðåçóëüòàòà. ×àñòè÷íî ðåøèòü ýòó ïðîáëåìó Âàì ïîìîæåò
    îïöèÿ êîìàíäíîé ñòðîêè <b>/DE</b> èëè ñòðîêà <b>DE</b> â ôàéëå C--.INI. Ïîñëå êîìàíäû
    óìíîæåíèÿ êîìïèëÿòîð áóäåò ïðîñìàòðèâàòü îñòàòîê ñòðîêè è åñëè îáíàðóæèò,
    ÷òî ðàñøèðåíèå ðàçðÿäíîñòè ìîæåò áûòü âîñòðåáîâàíî (âîñòðåáîâàòü
    ðàñøèðåííóþ ðàçðÿäíîñòü ìîãóò îïåðàöèè äåëåíèÿ è âû÷èñëåíèÿ îñòàòêà), òî
    áóäóò ïðèíÿòû ìåðû ïî åå ñîõðàíåíèþ. Íàïðèìåð:

      a = b*c+d/e; //çäåñü áóäåò âêëþ÷åíà ïîääåðæêà ðàñøèðåíèÿ ðàçðÿäíîñòè
      a = b*c+d*e; //çäåñü ïîääåðæêè ðàñøèðåíèÿ ðàçðÿäíîñòè íå áóäåò.

        Îäíàêî ïðèìåíåíèå ýòîé îïöèè ìîæåò èìåòü è íåãàòèâíûå ïîñëåäñòâèÿ.
    Ïîêàæó ýòî íà ïðèìåðå:

    ïóñòü èìååòñÿ âûðàæåíèå

      a = b * c / d;

    åñëè çíà÷åíèÿ ïåðåìåííûõ b = 0xC000, c = 0x1000, d=0x10, ïîñëå çàïóñêà
    òàêàÿ ïðîãðàììà çàâèñíåò ñ ñîîáùåíèåì î òîì, ÷òî ïðîèçîøëî ïåðåïîëíåíèå
    ïðè äåëåíèè.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.3>
    2.1.3 /ARGC - Àëüòåðíàòèâíûé îáðàáîò÷èê êîìàíäíîé ñòðîêè.
</A></B></FONT><FONT FACE="Courier">

        Îòëè÷èå ýòîãî îáðàáîò÷èêà êîìàíäíîé ñòðîêè îò <b>parsecommandline</b>
    çàêëþ÷àåòñÿ â òîì, ÷òî ïðè âûçîâå <b>PARAMSTR(0)</b>; Âû ïîëó÷èòå àäðåñ ñòðîêè â
    êîòîðîé óêàçàí ïóòü è èìÿ çàïóùåííîé ïðîãðàììû. Ñëåäóþùèå âûçîâû ýòîé
    ïðîöåäóðû ñ óâåëè÷èâàþùèìñÿ ïàðàìåòðîì áóäóò âîçâðàùàòü àäðåñà ñëîâ
    êîìàíäíîé ñòðîêè. À âûçîâ ïðîöåäóðû <b>PARAMCOUNT</b> âåðíåò Âàì ÷èñëî ñëîâ â
    êîìàíäíîé ñòðîêå ïëþñ îäèí.

        Àëüòåðíàòèâíûé îáðàáîò÷èê êîìàíäíîé ñòðîêè âêëþ÷àåòñÿ äèðåêòèâîé
    <b>?argc TRUE</b> èëè èç êîìàíäíîé ñòðîêè êîìïèëÿòîðà êëþ÷îì <b>/argc</b> èëè
    ñòðî÷êîé <b>argc</b> â ôàéëå C--.INI.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.4>
    2.1.4 /OST - ñëèÿíèå îäèíàêîâûõ ñòðîêîâûõ êîíñòàíò.
</A></B></FONT><FONT FACE="Courier">

        Åñëè ýòîò ðåæèì îïòèìèçàöèè áóäåò àêòèâèçèðîâàí, òî êîìïèëÿòîð áóäåò
    çàïîìèíàòü âñå ñòðîêîâûå êîíñòàíòû è ïðè îáíàðóæåíèè îäèíàêîâûõ â êîä
    ôàéëà íå áóäåò âñòàâëåíà ïîâòîðíàÿ ñòðîêîâàÿ êîíñòàíòà, à áóäåò ñäåëàíà
    ññûëêà íà ïåðâóþ, îáíàðóæåííóþ ðàíåå ñòðîêîâóþ êîíñòàíòó. Â îïòèìèçàöèè
    ó÷àñòâóþò òîëüêî íåèìåíîâàííûå ñòðîêîâûå êîíñòàíòû. Ò.å. åñëè ìàññèâ èëè
    ñòðóêòóðà áóäåò èíèöèàëèçèðîâàíû ñòðîêîé, òî òàêàÿ ñòðîêà íå áóäåò
    ó÷àñòâîâàòü â ïðîöåññå èíèöèàëèçàöèè, òàê ýòà ñòðîêà ìîæåò áûòü èçìåíåíà
    â ïðîöåññå ðàáîòû ïðîãðàììû. Ïðèìåð:

      char var="test";  //ýòà ñòðîêà íå áóäåò ó÷àñòâîâàòü â ïðîöåññå
                        //îïòèìèçàöèè.

      void proc(){
        WRITESTR("test");	// ýòà ñòðîêà áóäåò ó÷àñòâîâàòü â îïòèìèçàöèè.
        AX="test";          // ïåðåìåííîé AX áóäåò ïðèñâîåí àäðåñ ñòðîêè,
                            // êîòîðàÿ áûëà âñòàâëåíà â êîä ïðîãðàììû â
                            // ïðåäûäóùåé ñòðîêå.
      }

        Îáî âñåõ ñëó÷àÿõ îáíàðóæåíèÿ ïîâòîðíîé ñòðîêè êîìïèëÿòîð áóäåò
    âûäàâàòü ïðåäóïðåæäåíèÿ.

        Âêëþ÷àåòñÿ ýòîò ðåæèì îïòèìèçàöèè ëèáî ñ êîìàíäíîé ñòðîêè <b>/ost</b>, ëèáî
    äèðåêòèâîé <b>#pragma option ost</b>, ëèáî ñòðîêîé â ôàéëå c--.ini - <b>ost</b>.
    Îòêëþ÷èòü, âêëþ÷åííûé ðàíåå, ýòîò ðåæèì ìîæíî äèðåêòèâîé <b>#pragma option ost-</b>.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.5>
    2.1.5 /D - óñòàíîâêà èäåíòèôèêàòîðà â TRUE èç êîìàíäíîé ñòðîêè.
</A></B></FONT><FONT FACE="Courier">

        Åñëè Âû íàïèñàëè ïðîãðàììó, êîòîðàÿ ìîæåò êîìïèëèðîâàòüñÿ ïî ðàçíîìó,
    â çàâèñèìîñòè îò ñîñòîÿíèÿ íåêîòîðûõ èäåíòèôèêàòîðîâ (èñïîëüçóåòñÿ ðåæèì
    óñëîâíîé êîìïèëÿöèè), òî Âàì î÷åíü ìîæåò ïðèãîäèòñÿ ýòà îïöèÿ.
    Óñòàíàâëèâàÿ ñ êîìàíäíîé ñòðîêè ðàçëè÷íûå èäåíòèôèêàòîðû, Âû ìîæåòå
    ïîëó÷àòü ðàçëè÷íûå âàðèàíòû ïðîãðàììû, íå ðåäàêòèðóÿ èñõîäíûé òåêñò
    ïðîãðàììû.

        Èäåíòèôèêàòîð ââîäèòñÿ ñ êîìàíäíîé ñòðîêè êëþ÷îì <b>/d=idname</b>.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.6>
    2.1.6 /IA - óïðîùåííûé ââîä àññåìáëåðíûõ èíñòðóêöèé.
</A></B></FONT><FONT FACE="Courier">

        Ñòàëî âîçìîæíûì èñïîëüçîâàòü àññåìáëåðíûå èíñòðóêöèè áåç ïðåôèêñà <b>$</b>
    è âíå áëîêà <b>asm</b>. Ýòîò ðåæèì âêëþ÷àåòñÿ: ñ êîìàíäíîé ñòðîêè îïöèåé <b>/ia</b>;
    â ôàéëå êîíôèãóðàöèè ñòðîêîé <b>ia</b> èëè äèðåêòèâîé <b>#pragma option ia</b>.

        Êîãäà ýòîò ðåæèì âêëþ÷åí, âñå èìåíà àññåìáëåðíûõ èíñòðóêöèé ñòàíîâÿòñÿ
    çàðåçåðâèðîâàííûìè ñëîâàìè, ò.å. Âû íå ñìîæåòå ýòè èìåíà èñïîëüçîâàòü â
    êà÷åñòâå èìåí ïåðåìåííûõ èëè ïðîöåäóð. Àññåìáëåðíûå èíñòðóêöèè êîìïèëÿòîð
    ðàñïîçíàåò íåçàâèñèìî îò òîãî, íàïèñàíû îíè ìàëåíüêèìè èëè áîëüøèìè
    áóêâàìè.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.7>
    2.1.7 /CRI - ïðîïóñê ïîâòîðíî âêëþ÷àåìîãî ôàéëà.
</A></B></FONT><FONT FACE="Courier">

        ×àùå âñåãî, ïîâòîðíî âêëþ÷àòü ôàéë â êîìïèëèðóåìûé ïðîåêò, íåò
    íåîáõîäèìîñòè, íî ýòî èíîãäà ïðîèñõîäèò èç-çà òîãî, ÷òî íåêîòîðûå
    âêëþ÷àåìûå ôàéëû ñàìè âêëþ÷àþò äðóãèå ôàéëû. ×òîáû ýòîãî íå ïðîèñõîäèëî
    ïðèõîäèòñÿ äåëàòü ïðîâåðêó íà ïîâòîðíóþ çàãðóçêó ôàéëà. Òåïåðü ýòó
    ôóíêöèþ áåðåò íà ñåáÿ êîìïèëÿòîð è ó Âàñ îòïàäàåò íåîáõîäèìîñòü äåëàòü
    ýòó ïðîâåðêó.

        Íî èíîãäà (î÷åíü ðåäêî) âîçíèêàåò ïîòðåáíîñòü ñäåëàòü ïîâòîðíîå
    âêëþ÷åíèå ôàéëà. Äëÿ ýòîãî â êîìïèëÿòîðå åñòü îïöèÿ êîìàíäíîé ñòðîêè
    <b>/cri-</b>, êîòîðàÿ çàïðåùàåò êîìïèëÿòîðó äåëàòü ïðîâåðêó íà ïîâòîðíîå
    âêëþ÷åíèå. Ñîîòâåòñòâåííî, äëÿ c--.ini ôàéëà, ýòî ìîæíî ñäåëàòü ñòðîêîé
    <b>cri-</b> èëè äèðåêòèâîé â êîìïèëèðóåìîì ôàéëå - <b>#pragma option cri-</b>.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.8>
    2.1.8 /IND - èìïîðò èìåí ïðîöåäóð èç DLL.
</A></B></FONT><FONT FACE="Courier">

        Åñëè Âû õîòèòå â ñâîåé ïðîãðàììå èñïîëüçîâàòü DLL, äëÿ êîòîðîé íåò
    çàãîëîâî÷íîãî ôàéëà ñ îïèñàíèåì ïðîöåäóð, òî êîìïèëÿòîð ìîæåò
    èìïîðòèðîâàòü èìåíà èç ýòîé DLL. Äëÿ ýòîãî Âàì íàäî óêàçàòü èìÿ ýòîé
    áèáëèîòåêè ëèáî ÷åðåç îïöèþ êîìàíäíîé ñòðîêè <b>/ind=name.dll</b>, ëèáî â
    ôàéëå INI ñòðîêîé 'ind=name.dll', ëèáî ÷åðåç äèðåêòèâó '#pragma option
    ind=name.dll'.

        Ê íåäîñòàòêîì òàêîãî ñïîñîáà ïîëó÷åíèÿ èìåí ìîæíî îòíåñòè òî, ÷òî ïðè
    êîìïèëÿöèè ïðîãðàììû áèáëèîòåêà, èç êîòîðîé èìïîðòèðóþòñÿ èìåíà,
    îáÿçàòåëüíî äîëæíà ïðèñóòñòâîâàòü â êîìïüþòåðå. Òàêæå, åñëè èìåíà â
    áèáëèîòåêå íàïèñàíû áåç ñóôôèêñà '@number', êîìïèëÿòîð íå áóäåò
    êîíòðîëèðîâàòü ÷èñëî ïàðàìåòðîâ ïåðåäàâàåìûõ ïðîöåäóðå. È, ê ñîæàëåíèþ,
    êîìïèëÿòîð óìååò èìïîðòèðîâàòü èìåíà èç áèáëèîòåê èìåþùèõ òîëüêî ôîðìàò
    PE-ôàéëà.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.9>
    2.1.9 /WS - çàäàòü èìÿ stub ôàéëà äëÿ ïðîãðàìì ïîä windows.
</A></B></FONT><FONT FACE="Courier">

        Êàê èçâåñòíî, â ïðîãðàììàõ ïîä windows åñòü DOS çàãëóøêà, íàçûâàåìàÿ
    stub, êîòîðîé ïåðåäàåòñÿ óïðàâëåíèå ïðè çàïóñêå òàêîé ïðîãðàììû â ÷èñòîì
    DOS-å. Îáû÷íî òàêàÿ çàãëóøêà âûâîäèò íà ýêðàí ñîîáùåíèå î òîì, ÷òî ýòó
    ïðîãðàììó íàäî çàïóñêàòü â ñðåäå windows.

        Âû ìîæåòå âìåñòî ñòàíäàðòíîãî stub èñïîëüçîâàòü ñâîé. Äëÿ ýòîãî Âàì
    íåîáõîäèìî óêàçàòü èìÿ 16-áèòíîãî EXE-ôàéëà ëèáî ÷åðåç îïöèþ êîìàíäíîé
    ñòðîêè <b>/ws=filename</b>, ëèáî ñòðîêîé â INI-ôàéëå <b>ws=filename</b>, ëèáî
    äèðåêòèâîé <b>#pragma option ws=filename</b>.

        Òàêèì îáðàçîì, ó Âàñ ïîÿâèëàñü âîçìîæíîñòü ñîçäàâàòü ïðîãðàììû,
    ðàáîòàþùèå è ïîä DOS è ïîä windows.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.10>
    2.1.10 /WBSS - ðàçìåñòèòü íå èíèöèàëèçèðîâàííûå äàííûå â îòäåëüíîé ñåêöèè.
</A></B></FONT><FONT FACE="Courier">

        Ñåêöèÿ <b>.bss</b> ñîçäàåòñÿ àâòîìàòè÷åñêè ïðè êîìïèëÿöèè ïðîãðàìì ñ êëþ÷îì
    <b>/w32</b>. Åñëè Âû õîòèòå èìåòü ýòó ñåêöèþ è ïðè êîìïèëÿöèè ïðîãðàìì ñ
    êëþ÷àìè <b>/w32c</b> èëè <b>/dll</b> Âàì íåîáõîäèìî äîáàâèòü ëèáî â êîìàíäíîé
    ñòðîêå îïöèþ <b>/wbss</b>, ëèáî ñòðîêó <b>wbss</b> â INI-ôàéëå, ëèáî äèðåêòèâó
    <b>#pragma option wbss</b>.

        Èñïîëüçîâàíèå ñåêöèè <b>.bss</b> ïðàêòè÷åñêè íå âëèÿåò íà ðàçìåð ïîëó÷àåìîãî
    ôàéëà. Òåîðåòè÷åñêè, äëÿ ïðîöåññîðîâ, ó êîòîðûõ åñòü îòäåëüíûé êýø äëÿ
    äàííûõ, èñïîëüçîâàíèå ñåêöèè <b>.bss</b>, äîëæíî ïîâûøàòü ñêîðîñòü ðàáîòû
    ïðîãðàììû.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.11>
    2.1.11 /DBG - ñîçäàíèå îòëàäî÷íîé èíôîðìàöèè.
</A></B></FONT><FONT FACE="Courier">

        Åñëè ïðè êîìïèëÿöèè ïðîãðàììû â êîìàíäíóþ ñòðîêó äîáàâèòü êëþ÷ <b>/dbg</b>,
    èëè â ôàéë êîíôèãóðàöèè c--.ini äîáàâèòü ñòðîêó <b>dbg</b>, òî êîìïèëÿòîð ïîñëå
    îêîí÷àíèÿ êîìïèëÿöèè ñîçäàñò ôàéë ñ îòëàäî÷íîé èíôîðìàöèåé. Ýòîò ôàéë
    èìååò èìÿ ãëàâíîãî ìîäóëÿ è èìååò ðàñøèðåíèå *.tds.

        Îòëàäî÷íàÿ èíôîðìàöèÿ ñîçäàâàåìàÿ êîìïèëÿòîðîì C-- ñîâìåñòèìà ñ
    îòëàäî÷íîé èíôîðìàöèåé ñîçäàâàåìîé êîìïèëÿòîðàìè ôèðìû Borland. Íî, ïîêà,
    ýòà èíôîðìàöèÿ ðåàëèçîâàíà åùå íå â ïîëíîì îáúåìå. Ñîçäàâàåìîé ñåé÷àñ
    îòëàäî÷íîé èíôîðìàöèè äîñòàòî÷íî äëÿ ïðîâåäåíèÿ ïðîñòåéøåé îòëàäêè
    ïðîãðàììû.

        Äëÿ 16-áèòíûõ ïðîãðàìì ïîä DOS äëÿ îòëàäêè íàäî èñïîëüçîâàòü Turbo
    Debugger èç ïàêåòà Borland C v4.5 èëè ëó÷øå (ôàéë td.exe).

        Äëÿ ïðîãðàìì ïîä Windows íàäî èñïîëüçîâàòü 32-áèòíûé îòëàä÷èê èç ýòîãî
    æå ïàêåòà (ôàéë td32.exe).

        Äëÿ 32-áèòíûõ ïðîãðàìì, èñïîëüçóþùèõ ðàñøèðèòåëü DOS ïðèìåíÿòü äëÿ
    îòëàäêè Turbo Debugger íåâîçìîæíî. Íî, ìîæåò áûòü ÿ íå çíàþ, êàê ýòî
    äåëàòü. Åñëè Âû çíàåòå, êàê ñîçäàâàòü 32-áèòíûå ïðîãðàììû ñ
    DOS-ðàñøèðèòåëåì êîìïèëÿòîðàìè ôèðìû Borland ñ âêëþ÷åíèåì â íèõ îòëàäî÷íîé
    èíôîðìàöèè, òî ðàññêàæèòå ìíå. À ÿ ïîïðîáóþ ïðèìåíèòü ýòî äëÿ C--.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.12>
    2.1.12 /J0 /J1 /J2
</A></B></FONT><FONT FACE="Courier">

        Ñèíîíèìîì êëþ÷åé <b>/J0 /J1 /J2</b> ÿâëÿåòñÿ äèðåêòèâà <b>#jumptomain</b> ñ
    ïàðàìåòðàìè <b>NONE, SHORT è NEAR</b> ñîîòâåòñòâåííî.

        Äèðåêòèâà <b>#jumptomain</b> âûïîëíÿåò íåìíîãî ðàçëè÷íûå ôóíêöèè â
    çàâèñèìîñòè îò òèïà âûõîäíîãî ôàéëà.

        Êîìïèëÿöèÿ ôàéëà òèïà <b>*.com</b> è <b>*.exe</b> ìîäåëü ïàìÿòè <b>tiny</b>:

      <b>#jumptomain NONE (-j0)</b> - â ýòîì ñëó÷àå ïî îêîí÷àíèè êîäà íà÷àëüíîé
    èíèöèàëèçàöèè ïðîãðàììû íå ãåíåðèðóåòñÿ jmp íà ïðîöåäóðó main. Ýòó
    äèðåêòèâó ñëåäóåò èñïîëüçîâàòü â ñëó÷àå, åñëè äî ïðîöåäóðû main íåò äðóãèõ
    íå äèíàìè÷åñêèõ ïðîöåäóð è èíèöèàëèçèðîâàííûõ ïåðåìåííûõ.

      <b>#jumptomain SHORT (-j1)</b> - â ýòîì ñëó÷àå ïî îêîí÷àíèè êîäà íà÷àëüíîé
    èíèöèàëèçàöèè ãåíåðèðóåòñÿ êîðîòêèé jmp íà ïðîöåäóðó main. Ýòó äèðåêòèâó
    ñëåäóåò èñïîëüçîâàòü, åñëè äî ïðîöåäóðû main íàõîäèòñÿ íå áîëåå 128 áàéò
    êîäà è äàííûõ.

      <b>#jumptomain NEAR (-j2)</b> - ýòî ñîñòîÿíèå óñòàíàâëèâàåòñÿ ïî óìîë÷àíèþ. Ïðè
    ýòîì ãåíåðèðóåòñÿ áëèçêèé jmp íà ïðîöåäóðó main.

        Êîìïèëÿöèÿ ôàéëîâ <b>*.exe</b> (êëþ÷è <b>-exe -d32 -w32 -w32c</b>):

      <b>#jumptomain NONE (-j0)</b> - â ýòîì ñëó÷àå êîä íà÷àëüíîé èíèöèàëèçàöèè
    ïðîãðàììû íå ãåíåðèðóåòñÿ è óïðàâëåíèå ïðè çàïóñêå ïåðåäàåòñÿ ñðàçó íà
    ïðîöåäóðó main.

      Âî âñåõ îñòàëüíûõ ñëó÷àÿõ ãåíåðèðóåòñÿ êîä íà÷àëüíîé èíèöèàëèçàöèè è
    óïðàâëåíèå íà ïðîöåäóðó main ïåðåäàåòñÿ èíñòðóêöèåé call.

        Êîìïèëÿöèÿ ôàéëîâ <b>*.dll</b>:

      <b>#jumptomain NONE (-j0)</b> - â ýòîì ñëó÷àå êîä íà÷àëüíîé èíèöèàëèçàöèè
    ïðîãðàììû íå ãåíåðèðóåòñÿ è óïðàâëåíèå ïðè çàïóñêå ïåðåäàåòñÿ ñðàçó íà
    ïðîöåäóðó <b>main</b>.

      Âî âñåõ îñòàëüíûõ ñëó÷àÿõ ãåíåðèðóåòñÿ êîä çàãëóøêè è óïðàâëåíèå íà
    ïðîöåäóðó <b>main</b> íå ïåðåäàåòñÿ. Ôàêòè÷åñêè ïðîöåäóðà <b>main</b> â ýòîì ñëó÷àå íå
    íóæíà.

      Ïðîöåäóðà <b>main</b> ïðè ñîçäàíèè ôàéëîâ <b>DLL</b> äîëæíà âûãëÿäåòü íåìíîãî èíà÷å,
    ÷åì â äðóãèõ ñëó÷àÿõ:

    dword main ( dword hInstDLL, reason, reserv )
    {
      ...
    }
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.13>
    2.1.13 /LST - Ñîçäàíèå àññåìáëåðíîãî ëèñòèíãà.
</A></B></FONT><FONT FACE="Courier">

        Ñ ïîìîùüþ äîïîëíèòåëüíîé îïöèè êîìàíäíîé ñòðîêè <b>-lst</b> Âû ìîæåòå
    ïîëó÷èòü âìåñòå ñ èñïîëíèòåëüíûì ôàéëîì è åãî àññåìáëåðíûé ëèñòèíã.
    Ëèñòèíã áóäåò ïîìåùåí â ôàéë îäíîèìåííûé ñ èñïîëíèòåëüíûì ôàéëîì è
    èìåþùèì ðàñøèðåíèå *.lst.

        Àññåìáëåðíûé ëèñòèíã ñîçäàåòñÿ íåçàâèñèìîé îò êîìïèëÿòîðà ÷àñòüþ êîäà
    ñ èñïîëüçîâàíèåì èíôîðìàöèè íàêàïëèâàåìîé ïðè êîìïèëÿöèè ïðîãðàììû.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.14>
    2.1.14 /ENV - Ñîõðàíåíèå àäðåñà ïåðåìåííûõ îêðóæåíèÿ.
</A></B></FONT><FONT FACE="Courier">

        Åñëè ïðè êîìïèëÿöèè ïðîãðàììû Âû â êîìàíäíóþ ñòðîêó äîáàâèòå îïöèþ
    <b>-ENV</b> èëè â ôàéë c--.ini ñòðîêà <b>ENV</b>, òî êîìïèëÿòîð äîáàâèò â âàøó
    ïðîãðàììó ïåðåìåííóþ <b>environ</b>, â êîòîðîé ïðè çàãðóçêå áóäåò ñîõðàíÿòñÿ
    àäðåñ ïåðåìåííûõ îêðóæåíèÿ çàïóñêàåìîé ïðîãðàììû. Äëÿ ïðîãðàìì ïîä
    Windows ýòî áóäåò ïîëíûé àäðåñ, à äëÿ îñòàëüíûõ â ýòîé ïåðåìåííîé áóäåò
    ñîõðàíÿòüñÿ òîëüêî àäðåñ ñåãìåíòà.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.15>
    2.1.15 /CPA - Î÷èñòêà post-îáëàñòè äàííûõ.
</A></B></FONT><FONT FACE="Courier">

        Ïåðåìåííûå, êîòîðûì â òåëå ïðîãðàììû íå áûëî ïðèñâîåíî íèêàêîå
    çíà÷åíèå, íå âêëþ÷àþòñÿ â òåëî ñêîìïèëèðîâàííîé ïðîãðàììû. Äëÿ íèõ
    ðåçåðâèðóåòñÿ ïàìÿòü çà ïðåäåëàìè ïðîãðàììû. Íî ýòà ïàìÿòü ìîæåò áûòü
    çàïîëíåíà ïðîèçâîëüíîé èíôîðìàöèåé.

        Åñëè Âàì íåîáõîäèìî, ÷òîáû íåèíèöèàëèçèðîâàííûå ïåðåìåííûå ïðè
    çàãðóçêå ïðîãðàììû âñåãäà ñîäåðæàëè îäíî è òîæå çíà÷åíèå (íîëü) -
    âêëþ÷èòå â êîìàíäíóþ ñòðîêó îïöèþ <b>-CPA</b>.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.16>
    2.1.16 /W - âûâîä ïðåäóïðåæäåíèé.
</A></B></FONT><FONT FACE="Courier">

        Ïî óìîë÷àíèþ êîìïèëÿòîð íå âûâîäèò ïðåäóïðåæäåíèÿ è ìíîãèå äàæå íå
    ïîäîçðåâàþò î ñóùåñòâîâàíèè òàêîé ïîëåçíîé îïöèè. Â C-- ïðåäóïðåæäåíèÿ
    ôàêòè÷åñêè ÿâëÿþòñÿ ïîäñêàçêàìè äëÿ ñîçäàíèÿ îïòèìàëüíûõ ïðîãðàìì è
    çà÷àñòóþ îáëåã÷àþò îòëàäêó ïðîãðàìì.  ïðåäóïðåæäåíèÿõ êîìïèëÿòîð ìîæåò
    ñîîáùèòü Âàì î òîì, â êàêîì ìåñòå ìîæíî èñïîëüçîâàòü êîðîòêèå ôîðìû
    îïåðàòîðîâ IF, WHILE, FOR... Î òîì, êàêèå ïðîöåäóðû, ïåðåìåííûå è
    ñòðóêòóðû îïðåäåëåííûå â âàøåé ïðîãðàììå íå áûëè èñïîëüçîâàíû. Î òîì
    êàêèå ðåãèñòðû êîìïèëÿòîð èñïîëüçîâàë áåç âàøåãî âåäîìà è ìíîãî äðóãîé
    ïîëåçíîé èíôîðìàöèè.

        Ïî óìîë÷àíèþ ïðåäóïðåæäåíèÿ âûâîäÿòñÿ íà ýêðàí. Íî èõ áûâàåò òàê
    ìíîãî, ÷òî îíè ìîãóò íå ïîìåñòèòüñÿ íà ýêðàíå. Ïîýòîìó â êîìïèëÿòîðå åñòü
    îïöèÿ, ïî êîòîðîé âñå ïðåäóïðåæäåíèÿ âûâîäÿòñÿ â ôàéë. Èìÿ ýòîãî ôàéëà
    çàäàåòñÿ â òîé æå îïöèè. Ïîìåñòèâ â ñâîé c--.ini ôàéë ïàðó âîò ýòèõ ñòðîê:

    w
    wf=warning

        Âû áóäåòå ïîëó÷àòü â ôàéëå <b>warning</b> ïðåäóïðåæäåíèÿ.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.17>
    2.1.17 /NW - Âûáîðî÷íîå îòêëþ÷åíèå òèïîâ ïðåäóïðåæäåíèé.
</A></B></FONT><FONT FACE="Courier">

        Ñåé÷àñ êîìïèëÿòîð ìîæåò âûäàâàòü 12 òèïîâ ïðåäóïðåæäåíèé è, èíîãäà èõ
    áûâàåò òàê ìíîãî, ÷òî ñòàíîâèòñÿ òðóäíî â íèõ îðèåíòèðîâàòüñÿ. Òåïåðü
    ìîæíî âûáîðî÷íî çàïðåùàòü âûäà÷ó ïðåäóïðåæäåíèé. Äëÿ ýòîãî â êîìàíäíîé
    ñòðîêå (èëè â ôàéëå C--.INI) ìîæíî óñòàíîâèòü îïöèþ <b>/nw=number</b>, ãäå
    number - ÷èñëî îò 1 äî 12. Ýòèì öèôðàì ñîîòâåòñòâóþò ñëåäóþùèå òèïû
    ïðåäóïðåæäåíèé:

      1 - Optimize numerical expressions
      2 - Compiler used register ..."
      3 - Short operator '...' may be used
      4 - String '...' repeated
      5 - Expansion variable
      6 - Signed value returned
      7 - '...' defined above, therefore skipped.
      8 - Variable/structure/procedure '...' possible not used
      9 - Non-initialized variable may have been used
     10 - Return flag was destroyed
     11 - Code may not be executable
     12 - Don't use local/parametric values in inline procedures
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.1.18>
    2.1.18 /WSI - êîðîòêàÿ òàáëèöà èìïîðòà.
</A></B></FONT><FONT FACE="Courier">

        Òàáëèöà èìïîðòà îáû÷íî ñîñòîèò â ñâîþ î÷åðåäü èç ÷åòûðåõ òàáëèö. Äâå
    òàáëèöû <b>LookUp Table</b> è <b>Import Address Table</b> àáñîëþòíî îäèíàêîâû.

        Îïöèåé êîìàíäíîé ñòðîêè <b>/WSI</b> Âû ìîæåòå çàñòàâèòü êîìïèëÿòîð
    ãåíåðèðîâàòü òîëüêî îäíó èç ýòèõ äâóõ îäèíàêîâûõ òàáëèö (ãåíåðèðóåòñÿ
    òîëüêî <b>Import Address Table</b>). Òåì ñàìûì ó Âàñ ïîëó÷èòñÿ áîëåå êîìïàêòíàÿ
    òàáëèöà èìïîðòà, ÷òî ïðèâåäåò, â íåêîòîðûõ ñëó÷àÿõ, ê ñîçäàíèþ áîëåå
    êîìïàêòíîãî âûõîäíîãî ôàéëà.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.2>
  2.2 Äèðåêòèâû òðàíñëÿòîðà.
</A></B></FONT><FONT FACE="Courier">

      C-- íå ñîäåðæèò ïðåïðîöåññîð. Òåì íå ìåíåå, åñòü íåñêîëüêî ôóíêöèé
  î÷åíü ïîõîæèõ íà ôóíêöèè C ïðåïðîöåññîðà.

      Îíè äàþòñÿ êàê äèðåêòèâû òðàíñëÿòîðà. Âñå äèðåêòèâû òðàíñëÿòîðà
  íà÷èíàþòñÿ ñ âîïðîñèòåëüíîãî çíàêà <b>?</b> ëèáî ñ ñèìâîëà <b>#</b>. Âîò ñïèñîê èìåþùèõñÿ
  äèðåêòèâ è èõ íàçíà÷åíèå:

  <b>? align</b> [val]                  Âûðîâíÿòü äàííûå ïðîãðàììû íà ÷åòíûé ïî
                                 óìîë÷àíèþ èëè íà àäðåñ êðàòíûé âåëè÷èíå val.

  <b>? aligncode</b> [val]              Âûðîâíÿòü êîä ïðîãðàììû íà ÷åòíûé ïî
                                 óìîë÷àíèþ èëè íà àäðåñ êðàòíûé âåëè÷èíå <b>val</b>.
			         Çàïîëíåíèå ïðîèçâîäèòñÿ êîäîì 0x90.

  <b>? aligner</b> (aligner value)      îïðåäåëèòü çíà÷åíèå áàéòà âñòàâêè.

  <b>? alignword</b> (TRUE or FALSE)    ðàçðåøàåò èëè çàïðåùàåò âûðàâíèâàíèå íà
                                 ÷åòíûé àäðåñ ïåðåìåííûõ òèïà word è int,
                                 çíà÷åíèå ïî óìîë÷àíèþ TRUE.

  <b>? argc</b> (TRUE or FALSE)         Âêëþ÷èòü èëè îòêëþ÷èòü àëüòåðíàòèâíûé
                                 îáðàáîò÷èê êîìàíäíîé ñòðîêè.

  <b>? atexit</b>                       Âñòàâëÿåò â startup êîä ïîääåðæêè ïðîöåäóðû
                                 ATEXIT().

  <b>? code32</b> (TRUE/FALSE)          ðàçðåøàåò/çàïðåùàåò ãåíåðàöèþ 32-áèòíîãî
                                 êîäà.

  <b>? codesize</b>                     îïòèìèçàöèÿ ðàçìåðà êîäà (â óùåðá ñêîðîñòè).

  <b>? compilerversion</b> min-vers     óêàçûâàåò, êîìïèëÿòîð êàêîé âåðñèè íåîáõîäèì
                                 äëÿ êîìïèëÿöèè äàííîé ïðîãðàììû.

  <b>? ctrl_c</b> (TRUE or FALSE )      ðàçðåøàåò èëè çàïðåùàåò èãíîðèðîâàíèå
                                 íàæàòèÿ CTRL-C.

  <b>? dataseg</b> (value)              óêàçûâàåò êîìïèëÿòîðó ñåãìåíòíûé àäðåñ ÎÇÓ
                                 äëÿ ïåðåìåííûõ ïðè êîìïèëÿöèè ROM-BIOS.

  <b>? define</b> (identifier) (token)  îïðåäåëÿåò èäåíòèôèêàòîð.

  <b>? DOSrequired</b> (íîìåð)          óñòàíàâëèâàåò ìèíèìàëüíóþ òðåáóåìóþ âåðñèþ
                                 DOS:  ñòàðøèé áàéò - íîìåð âåðñèè,
                                 ìëàäøèé áàéò - íîìåð ìîäèôèêàöèè:
                                  0x0101 äëÿ âåðñèè 1.1 DOS
                                  0x0315 äëÿ âåðñèè 3.21 DOS
                                  0x0303 äëÿ âåðñèè 3.3 DOS
                                  0x0600 äëÿ âåðñèè 6.0 DOS
                                  0x0602 äëÿ âåðñèè 6.2 DOS è ò.ä.

  <b>? dosstring</b> (TRUE/FALSE)       óêàçûâàåò êîìïèëÿòîðó, ÷òî â êà÷åñòâå
                                 òåðìèíàòîðà ñòðîêè íàäî èñïîëüçîâàòü ñèìâîë <b>$</b>

  <b>? else</b>                         ãåíåðèðóåò àëüòåðíàòèâíûé êîä åñëè <b>?ifdef</b> èëè
                                 <b>?ifndef</b> ïðèíèìàþò çíà÷åíèå FALSE (ïðèìåð
                                 èñïîëüçîâàíèÿ ñìîòðèòå â ôàéëå FPU.H--)

  <b>? endif</b>                        óêàçûâàåò íà êîíåö äåéñòâèÿ äèðåêòèâ <b>ifdef</b> è
                                 <b>ifndef</b>

  <b>? fastcallapi</b> (FALSE/TRUE)     çàïðåòèòü/ðàçðåøèòü ãåíåðàöèþ áûñòðîãî âûçîâà
                                 API-ïðîöåäóð (ïî óìîë÷àíèþ ðàçðåøåíî).
                                 Äèðåêòèâà ðàáîòàåò ïðè êîìïèëÿöèè ïðîãðàìì
                                 ïîä Windows.

  <b>? fixuptable</b> (TRUE/FALSE)      ðàçðåøèòü/çàïðåòèòü ñîçäàíèå FixUp òàáëèöû
                                 (ïî óìîë÷àíèþ çàïðåùåíî). Äèðåêòèâà ðàáîòàåò
                                 ïðè êîìïèëÿöèè ïðîãðàìì ïîä Windows.

  <b>? ifdef</b> (identifier)           åñëè èäåíòèôèêàòîð îïðåäåëåí, òî âîçâðàùàåò
                                 TRUE èíà÷å FALSE

  <b>? imagebase</b> value              çàäàåò àäðåñ Image Base. Ïî óìîë÷àíèþ ýòîò
                                 àäðåñ  ðàâåí 0x400000. Äèðåêòèâà ðàáîòàåò ïðè
                                 êîìïèëÿöèè ïðîãðàìì ïîä Windows.

  <b>? ifndef</b> (identifier)          åñëè èäåíòèôèêàòîð îïðåäåëåí, òî âîçâðàùàåò
                                 FALSE èíà÷å TRUE

  <b>? include</b> ("filename")         âêëþ÷àåò äðóãîé ôàéë.

  <b>? includepath</b> ("path")         óêàçàíèå êîìïèëÿòîðó, â êàêîé äèðåêòîðèè íàäî
                                 èñêàòü âêëþ÷àåìûå ôàéëû

  <b>? initallvar</b>                   èíèöèàëèçèðóåò 0 âñå íåèíèöèàëèçèðîâàííûå
                                 ïåðåìåííûå.

  <b>? jumptomain</b> (NONE, SHORT, NEAR or FALSE)
                                 óñòàíàâëèâàåò òèï ïåðåõîäà ê main(),
                                 çíà÷åíèå ïî óìîë÷àíèþ - NEAR.

  <b>? maxerrors</b> (number)           ìàêñèìàëüíîå êîëè÷åñòâî íàéäåííûõ îøèáîê,
                                 ïðåâûñèâ êîòîðîå òðàíñëÿòîð ïðåêðàùàåò
                                 ðàáîòó, çíà÷åíèå ïî óìîë÷àíèþ - 16.

  <b>? movedatarom</b>  (TRUE/FALSE)    óêàçûâàåò êîìïèëÿòîðó î íåîáõîäèìîñòè
                                 ïåðåíîñà äàííûõ èç ÏÇÓ â ÎÇÓ.

  <b>? parsecommandline</b> (TRUE or FALSE)
                                 âêëþ÷àåò â ïðîãðàììó áëîê êîäà äëÿ
                                 ñèíòàêñè÷åñêîãî àíàëèçà êîìàíäíîé ñòðîêè
                                 çíà÷åíèå ïî óìîë÷àíèþ FALSE.

  <b>? pragma</b>                       ìîæåò îáúÿâëÿòü íåñêîëüêî äðóãèõ äèðåêòèâ

  <b>? print</b> (number or string)     âûâîäèò íà ýêðàí ñòðîêó èëè ÷èñëî.

  <b>? printhex</b> (number)            âûâîäèò íà ýêðàí ÷èñëî â øåñòíàäöàòåðè÷íîì
                                 êîäå.

  <b>? randombyte</b>                   âñòàâëÿåò â êîä ïðîãðàììû áàéò ñëó÷àéíîãî
                                 çíà÷åíèÿ.

  <b>? resize</b> (TRUE or FALSE)       âêëþ÷àåò ôóíêöèþ èçìåíåíèÿ ïîñëå çàïóñêà
                                 ðàçìåðà âûäåëåííîãî ïðîãðàììå áëîêà ïàìÿòè
                                 íà ìèíèìàëüíî òðåáóåìûé îáúåì,
                                 çíà÷åíèå ïî óìîë÷àíèþ TRUE.

  <b>? resizemessage</b> (string)       ñîîáùåíèå, âûâîäèìîå íà ýêðàí ïåðåä
                                 àâàðèéíûì ïðåðûâàíèåì âûïîëíåíèÿ ïðîãðàììû,
                                 åñëè èçìåíåíèå ðàçìåðà âûäåëåííîãî ïðîãðàììå
                                 áëîêà ïàìÿòè íå âûïîëíåíî.

  <b>? setdinproc</b>                   ïî ýòîé äèðåêòèâå êîìïèëÿòîð íåìåäëåííî
                                 âñòàâëÿåò â êîä êîìïèëèðóåìîé ïðîãðàììû âñå
                                 âûçûâàâøèåñÿ ðàíåå äèíàìè÷åñêèå ïðîöåäóðû.

  <b>? sizerom</b>  (value)             óêàçûâàåò êîìïèëÿòîðó ðàçìåð ÏÇÓ.

  <b>? speed</b>                        îïòèìèçàöèÿ áûñòðîäåéñòâèÿ (çíà÷åíèå
                                 ïî óìîë÷àíèþ) â óùåðá ðàçìåðó êîäà.

  <b>? stack</b> (number)               îïðåäåëÿåò ðàçìåð ñòåêà ïðîãðàììû â áàéòàõ.

  <b>? startaddress</b> (number)        óñòàíàâëèâàåò ñòàðòîâûé àäðåñ íà÷àëà êîäà,
                                 çíà÷åíèå ïî óìîë÷àíèþ 0x100.

  <b>? startuptomain</b>                â com-ôàéëàõ ðàçìåùàåò <b>startup-</b>êîä â
                                 ïðîöåäóðå <b>main()</b>.

  <b>? startusevar</b> (number)         óêàçûâàåò àäðåñ, ñ êîòîðîãî ðàçðåøåíî
                                 èñïîëüçîâàòü ÿ÷åéêè ïàìÿòè ïîä
                                 íåèíèöèàëèçèðîâàííûå ïåðåìåííûå.

  <b>? sysattribute</b> (çíà÷åíèå)      ýòà äèðåêòèâà ïåðåäàåò êîìïèëÿòîðó àòðèáóò
                                 ñîçäàâàåìîãî äðàéâåðà. Ïî óìîë÷àíèþ
                                 óñòàíàâëèâàåòñÿ çíà÷åíèå 0x2000.
                                 Äåéñòâóåò òîëüêî ñ êëþ÷îì <b>/SYS</b>.

  <b>? sysname</b> <òåêñòîâàÿ ñòðîêà>   ýòà äèðåêòèâà ïåðåäàåò êîìïèëÿòîðó èìÿ
                                 áóäóùåãî äðàéâåðà. Ïî óìîë÷àíèþ
                                 ïðèñâàèâàåòñÿ èìÿ <b>NO_NAME</b>. Äëèíà èìåíè íå
                                 áîëåå 8 ñèìâîëîâ.  Äåéñòâóåò òîëüêî ñ êëþ÷îì
                                 <b>/SYS</b>.

  <b>? syscommand</b> <command_0>,<command_1>, ...<command_n>; - ýòà äèðåêòèâà
                                 ÿâëÿåòñÿ îáÿçàòåëüíîé ïðè ñîçäàíèè
                                 äðàéâåðîâ. Ïî ýòîé äèðåêòèâå êîìïèëÿòîðó
                                 ïåðåäàåòñÿ ñïèñîê èìåí ïðîöåäóð îáðàáîòêè
                                 êîìàíä äðàéâåðà. Äåéñòâóåò òîëüêî ñ êëþ÷îì
                                 <b>/SYS</b>.

  <b>? warning</b> (TRUE or FALSE)      ýòà äèðåêòèâà ðàçðåøàåò èëè çàïðåùàåò âûäà÷ó
                                 ïðåäóïðåæäåíèé. Äèðåêòèâà äåéñòâóåò òîëüêî â
                                 ïðåäåëàõ òåêóùåãî ôàéëà è íå âëèÿåò íà
                                 âêëþ÷àåìûå ôàéëû.

  <b>? winmonoblock</b> FALSE           çàïðåùàåò ðàçìåùåíèå òàáëèö ôàéëà ôîðìàòà PE
                                 â îäíó ñåêöèþ.

  <b>? undef</b>                        óíè÷òîæàåò êîíñòàíòû îáúÿâëåííûå äèðåêòèâîé
                                 <b>? define</b>

  <b>? use8086</b>                      îãðàíè÷èâàåòñÿ ïðè ãåíåðàöèè îáúåêòíîãî êîäà
                                 êîìàíäàìè 8088/8086 (çíà÷åíèå ïî óìîë÷àíèþ).

  <b>? use8088</b>                      îãðàíè÷èâàåòñÿ ïðè ãåíåðàöèè îáúåêòíîãî êîäà
                                 êîìàíäàìè 8088/8086 (çíà÷åíèå ïî óìîë÷àíèþ).

  <b>? use80186</b>                     äîïóñêàåò ïðè ãåíåðàöèè îáúåêòíîãî êîäà
                                 êîìàíäû è îïòèìèçàöèþ äëÿ ïðîöåññîðà 80186.

  <b>? use80286</b>                     äîïóñêàåò ïðè ãåíåðàöèè îáúåêòíîãî êîäà
                                 êîìàíäû è îïòèìèçàöèþ äëÿ ïðîöåññîðà 80286.

  <b>? use80386</b>                     äîïóñêàåò ïðè ãåíåðàöèè îáúåêòíîãî êîäà
                                 êîìàíäû è îïòèìèçàöèþ äëÿ ïðîöåññîðà 80386.

  <b>? use80486</b>                     äîïóñêàåò ïðè ãåíåðàöèè îáúåêòíîãî êîäà
                                 êîìàíäû è îïòèìèçàöèþ äëÿ ïðîöåññîðà 80486.

  <b>? usePentium</b>                   äîïóñêàåò ïðè ãåíåðàöèè îáúåêòíîãî êîäà
                                 êîìàíäû è îïòèìèçàöèþ äëÿ ïðîöåññîðà Pentium.

  <b>? useMMX</b>                       äîïóñêàåò ïðè ãåíåðàöèè îáúåêòíîãî êîäà
                                 êîìàíäû è îïòèìèçàöèþ äëÿ ïðîöåññîðà Pentium
                                 MMX.

  <b>? usestartup</b>                   ðàçðåøàåò êîìïèëÿòîðó èñïîëüçîâàòü ÿ÷åéêè
                                 ïàìÿòè, çàíèìàåìûå êîäîì íà÷àëüíîé
                                 èíèöèàëèçàöèè ïðîãðàììû.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.2.1>
    2.2.1 ?ifdef/?ifndef
</A></B></FONT><FONT FACE="Courier">

         Ðàíåå äèðåêòèâà <b>?ifdef</b> ñðàáàòûâàëà íà íàëè÷èå êîíñòàíòû íåçàâèñèìî
    îò çíà÷åíèÿ åå âåëè÷èíû, à äèðåêòèâà <b>?ifndef</b> ñðàáàòûâàëà íà îòñóòñòâèå
    êîíñòàíòû â êîìïèëèðóåìîì ôàéëå. Òåïåðü <b>?indef</b> ñðàáàòûâàåò ëèøü íà
    êîíñòàíòó îòëè÷íóþ îò FALSE, à <b>?ifndef</b> ñðàáàòûâàåò êàê íà îòñóòñòâèå
    êîíñòàíòû â êîìïèëèðóåìîì ôàéëå, òàê è íà êîíñòàíòó èìåþùóþ çíà÷åíèå
    FALSE.

        Äëÿ äèðåêòèâ <b>?ifdef/?ifndef</b> çàðåçåðâèðîâàíû êîíñòàíòû <i>codesize</i> è
    <i>speed</i>, êîòîðûå ïðèíèìàþò çíà÷åíèå TRUE èëè FALSE â çàâèñèìîñòè îò ðåæèìà
    îïòèìèçàöèè. Ýòî áóäåò ïîëåçíûì äëÿ ñîçäàíèÿ áîëåå ãèáêèõ áèáëèîòåê.

        Åñòü âîçìîæíîñòü ïðîâåðêè òèïà CPU äëÿ êîòîðîãî âåäåòñÿ êîìïèëÿöèÿ.
    Äîïóñòèìûå âàðèàíòû ñèíòàêñèñà:

    ?ifdef cpu > 1	 //åñëè ïðîãðàììà êîìïèëèðóåòñÿ äëÿ CPU âûøå 80186
    ?ifndef cpu >= 2 // -------//------------- íå áîëüøå èëè ðàâíî 80286
    ?ifdef cpu == 3  // -------//------------- ðàâíî 80386
    ?ifdef cpu != 0  // -------//------------- íå ðàâåí 8086
    ?ifdef cpu < 3   // -------//------------- õóæå 80386
    ?ifdef cpu <= 2  // -------//------------- õóæå èëè ðàâåí 80286

        Ýòà äèðåêòèâà ïîçâîëèò Âàì ïèñàòü îäíó ïðîöåäóðó äëÿ ðàçëè÷íûõ òèïîâ
    CPU.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.2.2>
    2.2.2 ?initallvar
</A></B></FONT><FONT FACE="Courier">

        Äèðåêòèâîé <b>?initallvar TRUE</b> âêëþ÷àåòñÿ ðåæèì ïðè êîòîðîì âñåì
    íåèíèöèàëèçèðîâàííûì ïåðåìåííûì áóäåò ïðèñâîåíî íóëåâîå çíà÷åíèå è îíè
    áóäóò ðàñïîëàãàòüñÿ â òîì ìåñòå, ãäå áûëè îáúÿâëåíû. Ò.å. ïðàêòè÷åñêè
    èñ÷åçíóò íåèíèöèàëèçèðîâàííûå ïåðåìåííûå. Ýòî ìîæåò áûòü ïîëåçíûì ïðè
    íàïèñàíèè äðàéâåðîâ è ðåçèäåíòíûõ ïðîãðàìì.

        Ïàðàìåòð FALSE ýòîé äèðåêòèâû îòêëþ÷àåò ýòîò ðåæèì.
        Ïî óìîë÷àíèþ ýòà äèðåêòèâà óñòàíîâëåíà â FALSE.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.2.3>
    2.2.3 ?usestartup
</A></B></FONT><FONT FACE="Courier">

        Äèðåêòèâà <b>?usestartup</b> ðàçðåøàåò êîìïèëÿòîðó èñïîëüçîâàòü ÿ÷åéêè êîäà
    íà÷àëüíîé èíèöèàëèçàöèè ïðîãðàììû (startup) äëÿ ïîñëåäóþùåãî ðàçìåùåíèÿ â
    íèõ íåèíèöèàëèçèðîâàííûõ ïåðåìåííûõ. Ýòî ìîæåò áûòü ïîëåçíûì äëÿ ïîëó÷åíèÿ
    áîëåå êîìïàêòíîãî êîäà, êàê îáû÷íûõ ïðîãðàìì, òàê è â îñîáåííîñòè
    ðåçèäåíòíûõ.

        Ýòó äèðåêòèâó ïðèìåíÿþò òîëüêî äëÿ ãåíåðàöèè *.COM ôàéëîâ.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.2.4>
    2.2.4 ?startusevar
</A></B></FONT><FONT FACE="Courier">

        Äèðåêòèâîé <b>?startusevar</b> ìîæíî óêàçàòü íà÷àëüíûé àäðåñ ñ êîòîðîãî
    êîìïèëÿòîð áóäåò ðàñïðåäåëÿòü ïàìÿòü äëÿ íåèíèöèàëèçèðîâàííûõ ïåðåìåííûõ.
    Íàïðèìåð, ïîëó÷èâ äèðåêòèâó <b>?startusevar 0x53</b> êîìïèëÿòîð áóäåò
    ðàñïîëàãàòü íåèíèöèàëèçèðîâàííûå ïåðåìåííûå, íà÷èíàÿ ñ àäðåñà 0x53. Ýòî
    ìîæåò áûòü ïîëåçíûì äëÿ ïîëó÷åíèÿ áîëåå êîìïàêòíîãî êîäà êàê äëÿ
    ðåçèäåíòíûõ, òàê è äëÿ îáû÷íûõ ïðîãðàìì.

        Ýòó äèðåêòèâó ïðèìåíÿþò òîëüêî äëÿ ãåíåðàöèè *.COM ôàéëîâ.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.2.5>
    2.2.5 ?atexit
</A></B></FONT><FONT FACE="Courier">

        Äèðåêòèâà <b>?atexit</b> äîáàâëÿåò â startup ïðîãðàììû êîä ïîääåðæêè
    ïðîöåäóðû <b>ATEXIT</b>, ðåçåðâèðóåò ìåñòî äëÿ õðàíåíèÿ 16 àäðåñîâ ïðîöåäóð è
    èçìåíÿåò êîä ïðîöåäóð <b>ABORT</b> è <b>EXIT</b>.

        Ïðîöåäóðà <b>ATEXIT</b> ðåãèñòðèðóåò ïðîöåäóðó, àäðåñ êîòîðîé ïåðåäàåòñÿ åé â
    êà÷åñòâå ïàðàìåòðà, êàê ïðîöåäóðó çàâåðøåíèÿ ïðîãðàììû. Ýòà ïðîöåäóðà
    áóäåò âûçâàíà â ìîìåíò çàâåðøåíèÿ ïðîãðàììû ïðîöåäóðàìè <b>ABORT</b> èëè <b>EXIT</b>
    èëè èíñòðóêöèåé <b>RET</b> èç <b>main</b>.

        Âñåãî ìîæíî çàðåãèñòðèðîâàòü äî 16 ïðîöåäóð. Ïðîöåäóðû âûçûâàþòñÿ â
    ïîðÿäêå îáðàòíîì ïîðÿäêó èõ ðåãèñòðàöèè.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.2.6>
    2.2.6 ?startuptomain
</A></B></FONT><FONT FACE="Courier">

        Ïî ýòîé äèðåêòèâå êîìïèëÿòîð â íà÷àëå ôàéëà äåëàåò <b>jmp</b> íà íà÷àëî
    ïðîöåäóðû main(). Ïåðåä íà÷àëîì êîìïèëÿöèè ýòîé ïðîöåäóðû êîìïèëÿòîð
    íà÷íåò êîìïèëÿöèþ startup êîäà è ëèøü çàòåì áóäåò ïðîäîëæåíà êîìïèëÿöèÿ
    ïðîöåäóðû main(). Òåì ñàìûì <b>startup êîä</b> îêàæåòñÿ íå â íà÷àëå ôàéëà, êàê
    ýòî ïðîèñõîäèò îáû÷íî, à â òåëå ïðîöåäóðû main(). Ýòî áóäåò ïîëåçíûì ïðè
    êîìïèëÿöèè ðåçèäåíòíûõ ïðîãðàìì (TSR).

        Äèðåêòèâà ?startuptomain ðàáîòàåò òîëüêî ïðè êîìïèëÿöèè com-ôàéëîâ.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.2.7>
    2.2.7 ?undef
</A></B></FONT><FONT FACE="Courier">

        Ýòà äèðåêòèâà óíè÷òîæàåò êîíñòàíòû îáúÿâëåííûå äèðåêòèâîé <b>?define</b>. Åå
    ìîæíî ïðèìåíÿòü äëÿ èçìåíåíèÿ â ïðîöåññå êîìïèëÿöèè çíà÷åíèÿ êàêîé-íèáóäü
    êîíñòàíòû.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.2.8>
    2.2.8 ?align è ?aligncode
</A></B></FONT><FONT FACE="Courier">

        Â C-- ñóùåñòâóåò äèðåêòèâà <b>?align</b>, êîòîðàÿ äåëàåò îäíîêðàòíîå
    âûðàâíèâàíèå äàííûõ íà ÷åòíûé àäðåñ. Íî åñëè ê ýòîé äèðåêòèâå äîáàâèòü
    ÷èñëî, òî âûðàâíèâàíèå áóäåò ïðîèçâåäåíî íà àäðåñ êðàòíûé ýòîìó ÷èñëó.
    Íàïðèìåð äèðåêòèâà <b>?align 4</b> äîïîëíèò ñåãìåíò äàííûõ äî àäðåñà êðàòíîãî
    4. Ïðè âûðàâíèâàíèè áóäóò âñòàâëÿòüñÿ áàéòû, çíà÷åíèÿ êîòîðûõ îïðåäåëÿþòñÿ
    äèðåêòèâîé <b>?aligner</b>, ïî óìîë÷àíèþ ýòî çíà÷åíèå ðàâíî íóëþ. Äèðåêòèâà
    <b>?align</b> ïðîèçâîäèò âûðàâíèâàíèå òîëüêî â ñåãìåíòå äàííûõ. Â òåõ ìîäåëÿõ
    ïàìÿòè, â êîòîðûõ ñåãìåíò äàííûõ è êîäà ñîâïàäàþò ýòó äèðåêòèâó ìîæíî
    ïðèìåíÿòü è äëÿ âûðàâíèâàíèÿ íà÷àëà ïðîöåäóð.

        Äèðåêòèâà <b>?aligncode [value]</b> äåëàåò âûðàâíèâàíèå â ñåãìåíòå êîäà íà
    àäðåñ êðàòíûé çíà÷åíèþ <b>value</b>, ïî óìîë÷àíèþ íà ÷åòíûé àäðåñ. Çíà÷åíèå áàéòà
    çàïîëíåíèÿ â ýòîé äèðåêòèâå ÿâëÿåòñÿ ÷èñëî 0x90 - êîä èíñòðóêöèè NOP.
    Çíà÷åíèå áàéòà çàïîëíåíèÿ äëÿ ýòîé äèðåêòèâû èçìåíèòü íåëüçÿ. Ò.î. ýòó
    äèðåêòèâó ìîæíî ïðèìåíÿòü è âíóòðè èñïîëíÿåìîãî êîäà. Íàïðèìåð, åñëè Âû
    õîòèòå ïîëó÷èòü áûñòðûé êîä íà 486 ïðîöåññîðå, òî ðåêîìåíäóåòñÿ äåëàòü
    âûðàâíèâàíèå íà÷àëà ïðîöåäóð è öèêëîâ íà àäðåñ êðàòíûé 16.
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=2.2.9>
    2.2.9 ?pragma
</A></B></FONT><FONT FACE="Courier">

        Äèðåêòèâà <b>#pragma</b> ýòî ìíîãîôóíêöèîíàëüíàëüíàÿ äèðåêòèâà, êîòîðàÿ â
    ñâîþ î÷åðåäü èìååò ñâîè äèðåêòèâû:

      <b>option</b>
        Äèðåêòèâà <b>option</b> ïîçâîëÿåò âêëþ÷èòü â Âàø êîä îïöèè êîìàíäíîé ñòðîêè
    êîìïèëÿòîðà. Íåêîòîðûå îïöèè íå ìîãóò áûòü èñïîëüçîâàíû â ýòîé äèðåêòèâå;
    äðóãèå äîëæíû ïîìåùàòüñÿ â ñàìîì íà÷àëå èñõîäíîãî òåêñòà. Ïðèìåð:

      #pragma option w32c

        Ýòà äèðåêòèâà îáúÿâëÿåò êîìïèëÿòîðó, ÷òî íàäî ñîçäàòü êîíñîëüíûé
    32-áèòíûé ôàéë ïîä windows.

      <b>startup</b>
       Äèðåêòèâîé <b>startup</b> ìîæíî óêàçàòü ôóíêöèþ, êîòîðàÿ áóäåò âûïîëíåíà ïåðåä
    çàïóñêîì ïðîöåäóðû <b>main</b>. Ýòà äèðåêòèâà èìååò òàêîé ôîðìàò:

      #pragma startup procname

        Êîëè÷åñòâî ðàç, êîòîðîå ìîæíî ïðèìåíÿòü ýòó äèðåêòèâó â îäíîé
    ïðîãðàììå íå îãðàíè÷åíî, íî ðåàëüíî ìîæíî èñïîëüçîâàòü ëèøü íåñêîëüêî
    òûñÿ÷ ðàç.

      <b>line</b>
        Äèðåêòèâà <b>line</b> âûâîäèò íà ýêðàí íîìåð òåêóùåé ñòðîêè è èìÿ ôàéëà.
    Äîïîëíèòåëüíî ìîæåò âûâîäèòüñÿ ñîäåðæèìîå ñòðîêè íàõîäÿùååñÿ ïîñëå ñëîâà
    <b>line</b>. Ïðèìåð:

      #pragma line information

        Âñòðåòèâ ýòó äèðåêòèâó, êîìïèëÿòîð âûâåäåò íà ýêðàí íîìåð ñòðîêè è èìÿ
    ôàéëà. Òàêæå áóäåò âûâåäåíî ñîîáùåíèå ñïðàâà îò ñëîâà <b>line</b>, åñëè îíî
    åñòü.

      <b>resource</b>
        Ýòà äèðåêòèâà ìîæåò ïðèíèìàòü çíà÷åíèÿ <b>start</b> è <b>end</b>. Ýòè äâà
    çíà÷åíèÿ âûäåëÿþò íà÷àëî è êîíåö áëîêà ðåñóðñîâ, åñëè âû èñïîëüçóåòå åãî
    íåïîñðåäñòâåííî â èñõîäíîì êîäå ôàéëà, à íå â îòäåëüíîì ôàéëå. Ïðèìåð:

    #pragma resource start

    MyMenu MENU DISCARDABLE
    BEGIN    POPUP "Files",HELP
        BEGIN
            MENUITEM "Open",                        ID_OPEN
            MENUITEM "Save",                        ID_SAVE
            MENUITEM SEPARATOR
            MENUITEM "Exit",                        ID_EXIT
        END
        MENUITEM "Other",                           65535
    END

    #pragma resource end
<A href="#contents2" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=3.1>
3. Êîíñòàíòû.

  3.1 ×èñëîâûå êîíñòàíòû.
</A></B></FONT><FONT FACE="Courier">

      Ïðåäñòàâëåíèå ÷èñëîâûõ êîíñòàíò â âèäå äåñÿòè÷íûõ ÷èñåë (÷èñåë ñ
  îñíîâàíèåì 10) è øåñòíàäöàòåðè÷íûõ ÷èñåë (îñíîâàíèå ñ÷èñëåíèÿ 16) ïîëíîñòüþ
  àíàëîãè÷íî ÿçûêó <b>C</b>.

      Ïðè äâîè÷íîì ïðåäñòàâëåíèè ÷èñåë (îñíîâàíèå 2) ÷èñëî äîëæíî íà÷èíàòüñÿ
  ñ ñèìâîëîâ <b>0b</b>, çà êîòîðûìè áåç ïðîáåëà èäåò ïîñëåäîâàòåëüíîñòü íóëåé è
  åäèíèö.

      Ïðè âîñüìåðè÷íîì ïðåäñòàâëåíèè ÷èñåë (îñíîâàíèå 8) ÷èñëî äîëæíî
  íà÷èíàòüñÿ ñ ñèìâîëîâ <b>0o</b>, çà êîòîðûìè áåç ïðîáåëà èäåò ïîñëåäîâàòåëüíîñòü
  öèôð.

      Âåùåñòâåííîå ÷èñëî îòëè÷àåòñÿ îò öåëîãî ïî íàëè÷èþ â íåì òî÷êè.
  Íà÷èíàòüñÿ âåùåñòâåííîå ÷èñëî äîëæíî ëèáî öèôðîé îò 0 äî 9, ëèáî çíàêîì
  ìèíóñ. Íåîáÿçàòåëüíîé ÷àñòüþ âåùåñòâåííîãî ÷èñëà ÿâëÿåòñÿ ïîêàçàòåëü
  ñòåïåíè. Ïîêàçàòåëü ñòåïåíè îòäåëÿåòñÿ îò ÷èñëà ñèìâîëîì <b>e</b> èëè <b>E</b>.
  Ïðîáåëû íåäîïóñòèìû.

  Ïðèìåðû:
    0b11111111 // äâîè÷íîå ïðåäñòàâëåíèå ÷èñëà 255
    0x00F // øåñòíàäöàòåðè÷íîå ïðåäñòàâëåíèå ÷èñëà 15
    0o10 // âîñüìåðè÷íîå ïðåäñòàâëåíèå ÷èñëà 8
    1.234567E-20 // âåùåñòâåííîå ÷èñëî

      C-- âìåñòå ñ òðàäèöèîííûì <b>C-</b>ñòèëåì øåñòíàäöàòåðè÷íûõ ÷èñåë ïîíèìàåò è
  ÷èñëà çàïèñàííûå â ñòèëå àññåìáëåðà. Äëÿ òåõ, êòî âäðóã íå çíàåò, ñîîáùàþ,
  ÷òî øåñòíàäöàòåðè÷íûå ÷èñëà â àññåìáëåðå èìåþò íà êîíöå ñèìâîë <b>h</b> èëè <b>H</b>.
  Åñëè ïåðâûé ñèìâîë øåñòíàäöàòåðè÷íîãî ÷èñëà áîëüøå <b>9</b>, òî ïåðåä íèì
  îáÿçàòåëüíî äîëæåí áûòü çàïèñàí ñèìâîë <b>0</b>. Ïðèìåðû:

    1234h
    0A000H

      Ê ÷èñëîâûì êîíñòàíòàì ìîæíî ïèñàòü ñóôôèêñû <b>L, U è F</b>. Ôàêòè÷åñêè
  ýòè ñóôôèêñû â C-- íå èãðàþò íèêàêîé ðîëè, êîìïèëÿòîð èõ ïðîñòî
  ïðîãëàòûâàåò. Ïðèìåð:

  #define DEF  1L
  #define DEF2 2Lu
  #define DEF3 3.0F

      Ýòè ñóôôèêñû íå çàâèñÿò îò ðåãèñòðà, ò.å. èõ ìîæíî ïèñàòü êàê
  ìàëåíüêèìè, òàê è áîëüøèìè áóêâàìè.
<A href="#contents3" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=3.2>
  3.2 Ñèìâîëüíûå êîíñòàíòû.
</A></B></FONT><FONT FACE="Courier">

      Îäèíî÷íûå ñèìâîëüíûå êîíñòàíòû, êàê è â <b>C</b>, äîëæíû çàêëþ÷àòüñÿ â
  îäèíî÷íûå êàâû÷êè <b>'</b>.

      Òàêæå êàê è â <b>C</b>, äëÿ îáîçíà÷åíèÿ ñïåöèàëüíûõ ñèìâîëîâ ñëóæèò îáðàòíàÿ
  íàêëîííàÿ ÷åðòà âïðàâî <b>\</b> ñ ïîñëåäóþùèì çà íåé êëþ÷åâûì ñèìâîëîì (èëè
  íåñêîëüêèìè ñèìâîëàìè). Ïîääåðæèâàþòñÿ ñëåäóþùèå ñïåöèàëüíûå ñèìâîëû:

    \a  /* çâóêîâîé ñèãíàë */
    \b  /* çàáîé */
    \f  /* ïåðåâîä  ñòðàíèöû */
    \l  /* ïåðåâîä ñòðîêè */
    \n  /* âîçâðàò êàðåòêè*/
    \r  /* âîçâðàò êàðåòêè*/
    \t  /* òàáóëÿöèÿ */
    \x??  /* ñèìâîë ASCII, ñîîòâåòñòâóþùèé áàéòîâîìó ïðåäñòàâëåíèþ,
               ñîñòîÿùåìó èç äâóõ øåñòíàäöàòåðè÷íûõ öèôð, ðàñïîëîæåííûõ
               íà ìåñòå çíàêîâ âîïðîñà */
     \???  /* ñèìâîë ASCII, ñîîòâåòñòâóþùèé áàéòîâîìó ïðåäñòàâëåíèþ,
               ñîñòîÿùåìó èç òðåõ äåñÿòè÷íûõ öèôð, ðàñïîëîæåííûõ
               íà ìåñòå çíàêîâ âîïðîñà */

      Ëþáîé äðóãîé ñèìâîë ïîñëå îáðàòíîé íàêëîííîé ÷åðòû âïðàâî áóäåò ïðèíÿò
  êàê ïðîñòîé ñèìâîë.

      Ñèìâîë "Îäèíî÷íàÿ êàâû÷êà" <b>'</b> ìîæåò áûòü ââåäåí ïðè ïîìîùè êîíñòðóêöèè
  <b>\'</b>

      Ñèìâîë NULL ìîæåò áûòü ââåäåí êàê ''

      Â C-- ïîääåðæèâàþòñÿ è ìíîãîáóêâåííûå ñèìâîëüíûå êîíñòàíòû. Ïðèìåðû
  ìíîãîáóêâåííûõ ñèìâîëüíûõ êîíñòàíò:

         'ab'
         'the'
         'this is large'

      Íèêàêîãî îãðàíè÷åíèÿ íà ÷èñëî ñèìâîëîâ â ñèìâîëüíîé êîíñòàíòå íå
  íàêëàäûâàåòñÿ, íî ðàçëè÷àþòñÿ òîëüêî ïîñëåäíèå 4 ñèìâîëà. Ýòî - ìàêñèìóì,
  êîòîðûé ìîæåò áûòü ñîõðàíåí â 32-ðàçðÿäíîé ïåðåìåííîé. Íàïðèìåð, êîíñòàíòû
  <b>this is large</b> è <b>arge</b> - îäèíàêîâû.

      C-- îáðàáàòûâàåò âñå ñèìâîëüíûå êîíñòàíòû êàê ÷èñëîâûå çíà÷åíèÿ ASCII
  ñèìâîëîâ. Äëÿ ìíîãîáóêâåííûõ ñèìâîëüíûõ êîíñòàíò ïåðâûé ñèìâîë
  ñîîòâåòñòâóåò ñòàðøèì ðàçðÿäàì, òàêèì îáðàçîì, çíà÷åíèå äëÿ <b>ab</b> áóäåò
  çàêîäèðîâàíî êàê <b>a*256+b</b>.
<A href="#contents3" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=3.3>
  3.3 Ñòðîêîâûå êîíñòàíòû.
</A></B></FONT><FONT FACE="Courier">

      Ñòðîêîâûå êîíñòàíòû, êàê è â C, çàêëþ÷àþòñÿ â äâîéíûå êàâû÷êè (").
  Ñïåöèàëüíûå ñèìâîëû âíóòðè ñòðîê îáîçíà÷àþòñÿ òàê æå, êàê è â ñèìâîëüíûõ
  êîíñòàíòàõ. Âñå ñïåöèàëüíûå ñèìâîëû èìåþò òî æå çíà÷åíèå, ÷òî è â
  ñèìâîëüíûõ êîíñòàíòàõ çà èñêëþ÷åíèåì <b>\n</b>, êîòîðûé èìååò çíà÷åíèå <b>íîâàÿ
  ñòðîêà</b> è çàìåíÿåò ñîáîé ïàðó ñèìâîëîâ <b>âîçâðàò êàðåòêè</b> è <b>ïåðåâîä
  ñòðîêè</b>.

      Â íàñòîÿùåå âðåìÿ íàèáîëüøàÿ äëèíà ñòðîêîâîé êîíñòàíòû - 2048 ñèìâîëîâ,
  âêëþ÷àÿ ñèìâîë-îãðàíè÷èòåëü 0, òàêèì îáðàçîì, ìàêñèìóì 2047 çíà÷àùèõ
  ñèìâîëîâ.
<A href="#contents3" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=3.4>
  3.4 Ïîñòîÿííûå âûðàæåíèÿ.
</A></B></FONT><FONT FACE="Courier">

      Ïîñòîÿííîå âûðàæåíèå - îäèíî÷íàÿ ÷èñëîâàÿ êîíñòàíòà èëè íåñêîëüêî
  ÷èñëîâûõ êîíñòàíò, ñâÿçàííûõ ìåæäó ñîáîé îïåðàòîðàìè. ×èñëîâîå çíà÷åíèå
  âûðàæåíèÿ âû÷èñëÿåòñÿ îäèí ðàç âî âðåìÿ êîìïèëÿöèè è äàëåå èñïîëüçóåòñÿ
  òîëüêî åãî ïîñòîÿííîå çíà÷åíèå.

      Ïîäîáíî âñåì âûðàæåíèÿì â C--, ïîñòîÿííûå âûðàæåíèÿ âñåãäà âû÷èñëÿþòñÿ
  ñëåâà íàïðàâî, íåâçèðàÿ íà ïðàâèëà àðèôìåòèêè! Ýòî ñîâåðøåííî îòëè÷íî îò
  äðóãèõ ÿçûêîâ, è ïðè íàïèñàíèè âûðàæåíèé íàäî áûòü îñòîðîæíûì è ïîìíèòü,
  ÷òî 2+3*2=10 à íå 8.

      Íåêîòîðûå ïðèìåðû ïîñòîÿííûõ âûðàæåíèé:
  45 & 1 + 3 // ðàâíÿåòñÿ 4
  14 - 1 / 2 // ðàâíÿåòñÿ 6 (ïîìíèòå öåëî÷èñëåííûå çíà÷åíèÿ)
  1 * 2 * 3 / 2 + 4 // ðàâíÿåòñÿ 7
      Ïðèìåðû ñ ïðèìåíåíèåì âåùåñòâåííûõ ÷èñåë:
  3.23*1.53+2.0E2 // ðàâíÿåòñÿ 204.9419
<A href="#contents3" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=4.1>
4. Âûðàæåíèÿ.

  4.1 Òèïû âûðàæåíèé.
</A></B></FONT><FONT FACE="Courier">

      Èìåþòñÿ òðè òèïà âûðàæåíèé â C--, íå ñ÷èòàÿ ïîñòîÿííûõ âûðàæåíèé. Ýòî
  âûðàæåíèÿ òèïà <b>EAX/AX/AL</b>, âûðàæåíèÿ òèïà <b>íåEAX/AX/AL</b> è óñëîâíûå âûðàæåíèÿ.
  Âñå C-- âûðàæåíèÿ âû÷èñëÿþòñÿ ñëåâà íàïðàâî, íåçàâèñèìî îò ñòàðøèíñòâà
  âõîäÿùèõ â âûðàæåíèå ìàòåìàòè÷åñêèõ îïåðàöèé.
<A href="#contents4" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=4.2>
  4.2 Âûðàæåíèÿ òèïà EAX/AX/AL.
</A></B></FONT><FONT FACE="Courier">

      Ýòîò òèï âûðàæåíèé ïðèìåíÿåòñÿ â ñëó÷àå, êîãäà åãî ðåçóëüòàò ìîæåò áûòü
  ñîõðàíåí â ïåðåìåííîé â ïàìÿòè èëè â ðåãèñòðå <b>EAX</b> èëè <b>AX</b> èëè <b>AL</b>.

      Åñëè ðåçóëüòàò ìîæåò áûòü ñîõðàíåí â ïåðåìåííûõ òèïà <b>byte</b> èëè <b>char</b>,
  èñïîëüçóåòñÿ íîòàöèÿ <b>AL</b>.

      Åñëè ðåçóëüòàò ìîæåò áûòü ñîõðàíåí â ïåðåìåííûõ òèïà <b>word</b> èëè <b>int</b>,
  èñïîëüçóåòñÿ íîòàöèÿ <b>AX</b>.

      Åñëè ðåçóëüòàò ìîæåò áûòü ñîõðàíåí â ïåðåìåííûõ òèïà <b>dword, long</b> èëè
  <b>float</b>, èñïîëüçóåòñÿ íîòàöèÿ <b>EAX</b>.
<A href="#contents4" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=4.3>
  4.3 Âûðàæåíèÿ èñïîëüçóþùèå ïîëó÷àòåëü ïðè âû÷èñëåíèè âûðàæåíèÿ.
</A></B></FONT><FONT FACE="Courier">

      Åñëè â ïðàâîé ÷àñòè âûðàæåíèÿ èñïîëüçóåòñÿ ïåðåìåííàÿ ÿâëÿþùàÿñÿ
  îäíîâðåìåííî è ïðèåìíèêîì, òî òàêèå âûðàæåíèÿ äàþò ðàçëè÷íûå ðåçóëüòàòû â
  çàâèñèìîñòè îò òîãî ÿâëÿåòñÿ ïðèåìíèê ðåãèñòðîì èëè ïåðåìåííîé ïàìÿòè. Ýòî
  ñâÿçàíî ñ òåì, ÷òî ïðè âû÷èñëåíèè âûðàæåíèÿ â ïåðåìåííóþ ïàìÿòè, âû÷èñëåíèå
  ïðîèçâîäèòñÿ ñíà÷àëà â ðåãèñòð <b>EAX/AX/AL</b>, è ëèøü ïîñëå îêîí÷àíèÿ âû÷èñëåíèÿ
  ðåçóëüòàò áóäåò çàïèñàí â ïðèåìíèê. Åñëè æå ïðèåìíèêîì ÿâëÿåòñÿ ðåãèñòð, òî
  åãî çíà÷åíèå áóäåò ìåíÿòüñÿ ïîñëå êàæäîé îïåðàöèè âû÷èñëåíèÿ. Ïðèìåð:

  int var;
    var = BX = 2;
    var = 3 + var; // ðåçóëüòàòîì áóäåò 5
    BX = 3 + BX;   // ðåçóëüòàòîì áóäåò 6
<A href="#contents4" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=4.4>
  4.4 Íå - EAX/AX/AL âûðàæåíèÿ.
</A></B></FONT><FONT FACE="Courier">

      Ýòîò òèï âûðàæåíèé ïðèìåíÿåòñÿ â ñëó÷àå, êîãäà åãî ðåçóëüòàò äîëæåí
  áûòü ñîõðàíåí â ëþáîì äðóãîì ðåãèñòðå, îòëè÷íîì îò àêêóìóëÿòîðà <b>EAX, AX</b>
  èëè <b>AL</b>.  ïðîöåññå âû÷èñëåíèÿ âûðàæåíèÿ ýòîãî òèïà ìåíÿåòñÿ òîëüêî
  ñîäåðæèìîå óêàçàííîãî ðåãèñòðà-ïîëó÷àòåëÿ, âñå äðóãèå ðåãèñòðû áóäóò
  ñîõðàíåíû. Åñëè ðåãèñòðîì-ïîëó÷àòåëåì ñëóæèò áàéòîâûé ðåãèñòð, à ïðè
  âû÷èñëåíèè èñïîëüçóþòñÿ âåëè÷èíû ðàçìåðîì â ñëîâî, îäíîâðåìåííî ñ çàïèñüþ â
  ìëàäøèé áàéò ìîæåò áûòü ðàçðóøåíî ñîäåðæèìîå ñòàðøåãî áàéòà
  ðåãèñòðà-ïîëó÷àòåëÿ.

      Ýòî îáñòîÿòåëüñòâî íàêëàäûâàåò íåêîòîðûå îãðàíè÷åíèÿ íà îïåðàöèè è
  îïåðàíäû, äîïóñòèìûå â âûðàæåíèÿõ òèïà <b>íå EAX/AX/AL</b>. Âíóòðè âûðàæåíèé
  áàéòîâîãî òèïà íå äîïóñêàåòñÿ:

      - äåëàòü âûçîâû ÌÀÊÐÎÊÎÌÀÍÄ,
      - äåëàòü âûçîâû ÐÅÃÈÑÒÐÎÂÛÕ ïðîöåäóð
      - äåëàòü âûçîâû ÑÒÅÊÎÂÛÕ ïðîöåäóð

      Ðàíåå â <b>íå-EAX/AX/AL</b> âûðàæåíèÿõ áûëî ìîæíî èñïîëüçîâàòü ëèøü
  îïåðàöèè: ñëîæåíèÿ, âû÷èòàíèÿ, XOR, OR, AND. Òåïåðü äëÿ 16 è 32 áèòíûõ
  ðåãèñòðîâ ïî÷òè âñå îãðàíè÷åíèÿ ñíÿòû. Íî åñòü åùå îãðàíè÷åíèÿ íà ðåãèñòðû.
  Íàïðèìåð, åñëè â âûðàæåíèè èñïîëüçóåòñÿ ñäâèã íà çíà÷åíèå ïåðåìåííîé, à
  ïðèåìíèêîì ÿâëÿþòñÿ ðåãèñòðû <b>CX/ECX,</b> òî òàêîå âûðàæåíèå êîìïèëÿòîð íå áóäåò
  êîìïèëèðîâàòü:

     CX = var * SI * 3 * var >> 3;  //âûçîâåò ñîîáùåíèå îá îøèáêå

      Ïðèìå÷àíèå:  äëÿ 8 áèòíûõ <b>íå-AL</b> âûðàæåíèé óìíîæàòü ìîæíî òîëüêî íà
  ÷èñëà: 0, 1, 2, 4, 8, 16, 32, 64 è 128. Âñå ýòè îãðàíè÷åíèÿ ñâÿçàíû ñî
  ñòðåìëåíèåì íå ðàçðóøàòü äðóãèå ðåãèñòðû ïðè èñïîëüçîâàíèè <b>íå-EAX/AX/AL</b>
  âûðàæåíèé.
<A href="#contents4" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=4.5>
  4.5 Óñëîâíûå âûðàæåíèÿ.
</A></B></FONT><FONT FACE="Courier">

      Óñëîâíûå âûðàæåíèÿ - âûðàæåíèÿ, ðåçóëüòàòîì âû÷èñëåíèÿ êîòîðûõ ÿâëÿåòñÿ
  ëîãè÷åñêîå çíà÷åíèå äà èëè íåò, èñïîëüçóåìîå â îïåðàòîðå <b>if</b> è öèêëàõ <b>do {}</b>
  <b>while, while, for</b>.

      Èìåþòñÿ äâà òèïà óñëîâíûõ âûðàæåíèé, ïðîñòûå è ñëîæíûå.

      Âîçìîæíî ëîãè÷åñêîå îáúåäèíåíèå óñëîâèé.
<A href="#contents4" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=4.5.1>
    4.5.1 Ïðîñòûå óñëîâíûå âûðàæåíèÿ.
</A></B></FONT><FONT FACE="Courier">

        Ïðîñòûå óñëîâíûå âûðàæåíèÿ - îäèíî÷íàÿ ëåêñåìà èëè âûðàæåíèå, êîòîðîå
    ïðèìåò çíà÷åíèå äà, åñëè ðàñ÷åòíîå çíà÷åíèå îòëè÷íî îò íóëÿ, èëè çíà÷åíèå
    íåò, åñëè ðàñ÷åòíîå çíà÷åíèå ðàâíî íóëþ.
<A href="#contents4" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=4.5.2>
    4.5.2 Ñëîæíûå óñëîâíûå âûðàæåíèÿ.
</A></B></FONT><FONT FACE="Courier">

    Ñëîæíûå óñëîâíûå âûðàæåíèÿ èìåþò ñëåäóþùóþ ôîðìó:

         (ëåâàÿ_÷àñòü îïåðàòîð_îòíîøåíèÿ ïðàâàÿ_÷àñòü)

    Ãäå:
       ëåâàÿ_÷àñòü - ëþáîå âûðàæåíèå òèïà <b>AL/AX/EAX</b> èëè ïîñòîÿííîå âûðàæåíèå.
                     Òèï âûðàæåíèÿ îïðåäåëÿåòñÿ ïî òèïó ïåðâîé ëåêñåìû
                     (ðåãèñòðà èëè ïåðåìåííîé); çíà÷åíèå òèïà ïî óìîë÷àíèþ -
                     word äëÿ 16-áèòíûõ ïðîãðàìì è dword äëÿ 32-áèòíûõ. Åñëè
                     æåëàòåëåí äðóãîé òèï, ïåðåä âûðàæåíèåì ñòàâèòñÿ
                     ñîîòâåòñòâóþùåå êëþ÷åâîå ñëîâî, îïðåäåëÿþùåå åãî òèï:
                     <b>byte, char, int, long, dword</b> èëè <b>float</b>

       îïåðàòîð_îòíîøåíèÿ - ëþáîé èç îïåðàòîðîâ îòíîøåíèÿ:
                     <b>==, !=, <>, <, >, <=, èëè >=</b>.

       ïðàâàÿ_÷àñòü - ëþáîé îäèíî÷íûé ðåãèñòð, îäèíî÷íàÿ ïåðåìåííàÿ èëè
                     ïîñòîÿííîå âûðàæåíèå.

    Ïðèìåðû ïðàâèëüíûõ ñëîæíûõ óñëîâíûõ âûðàæåíèé:

         (X + y > z)
         (int CX*DX < = 12*3)
         (byte first*second+hold == cnumber)

    Ïðèìåðû íåäîïóñòèìûõ ñëîæíûõ óñëîâíûõ âûðàæåíèé:

         (x+y >= x-y) // ïðàâàÿ ÷àñòü íå ÿâëÿåòñÿ îäèíî÷íîé ëåêñåìîé èëè
                         ïîñòîÿííûì âûðàæåíèåì.
         (Z = y) // âìåñòî == îøèáî÷íî ïîñòàâëåí =
<A href="#contents4" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=4.6>
  4.6 Èçìåíåíèå òèïà âûðàæåíèÿ ïðè ïðèñâàèâàíèè.
</A></B></FONT><FONT FACE="Courier">

      Åñëè ïîñëå çíàêà ðàâåíñòâà íàïèñàòü òèï îòëè÷íûé îò òèïà âû÷èñëÿåìîé
  ïåðåìåííîé, òî âñå ïåðåìåííûå ó÷àñòâóþùèå â ïðîöåññå âû÷èñëåíèÿ, áóäóò
  ïðåîáðàçîâûâàòüñÿ ê ýòîìó íîâîìó òèïó, è ëèøü êîíå÷íûé ðåçóëüòàò áóäåò
  ïðåîáðàçîâàí ê òèïó âû÷èñëÿåìîé ïåðåìåííîé. Ïðèìåð:

  int i, a;
  long b;
  char c;

    i = a * b + c ;

      Çíà÷åíèÿ ïåðåìåííûõ a, b, è c â ýòîì ïðèìåðå ïåðåä âû÷èñëåíèåì áóäóò
  ïðåîáðàçîâàíû ê òèïó <b>int</b> (òèïó ïåðåìåííîé i). Íî åñëè çàïèñàòü ýòî
  âûðàæåíèå âîò òàê:

    i = long a * b + c ;

      òî  ïåðåìåííûå  a,  b,  è  c  â  ýòîì  ïðèìåðå  ïåðåä  âû÷èñëåíèåì áóäóò
  ïðåîáðàçîâàíû ê òèïó  <b>long</b>, à êîíå÷íûé  ðåçóëüòàò áóäåò ïðåîáðàçîâàí  ê òèïó
  ïåðåìåííîé i - <b>int</b>.
<A href="#contents4" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=4.7>
  4.7 Âû÷èñëåíèå â ðåãèñòðû EAX/AX/AL ñî çíàêîì.
</A></B></FONT><FONT FACE="Courier">

      Ïî óìîë÷àíèþ âñå âû÷èñëåíèÿ â ðåãèñòðû ïðîèçâîäÿòñÿ êàê ñ áåç çíàêîâûìè
  âåëè÷èíàìè.

  Íàïðèìåð:

    int a,b,c;
    AX = a * b / c ;

  Ïðè ýòîì êîìïèëÿòîð ãåíåðèðîâàë áåç çíàêîâûå èíñòðóêöèè <b>div</b> è <b>mul</b>, òàê êàê
  ðåãèñòðû ñ÷èòàþòñÿ áåç çíàêîâûìè ïåðåìåííûìè. Åñëè íàïèñàòü âîò òàê:

    AX = int a * b / c ;

  òî êîìïèëÿòîð ñãåíåðèðóåò èíñòðóêöèè <b>idiv</b> è <b>imul</b>.

       Îáðàùàþ âàøå âíèìàíèå, ÷òî äëÿ ðåãèñòðà <b>AL</b> ìîæíî èñïîëüçîâàòü òîëüêî
  ìîäèôèêàòîð <b>char</b>, äëÿ <b>AX</b> ñîîòâåòñòâåííî òîëüêî <b>int</b>, à äëÿ <b>EAX - long</b>. Äëÿ
  îñòàëüíûõ ðåãèñòðîâ ïîäîáíîå äåëàòü íåëüçÿ.
<A href="#contents4" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=5.1>
5. Èäåíòèôèêàòîðû.

  5.1 Ôîðìàò èäåíòèôèêàòîðà.
</A></B></FONT><FONT FACE="Courier">

      Èäåíòèôèêàòîðû â C-- äîëæíû íà÷èíàòüñÿ èëè ñ ñèìâîëà ïîä÷åðêèâàíèÿ <b>_</b>
  èëè çàãëàâíûõ èëè ñòðî÷íûõ áóêâ. Ñëåäóþùèå ñèìâîëû ìîãóò áûòü ëþáîé
  êîìáèíàöèåé ñèìâîëîâ ïîä÷åðêèâàíèÿ, çàãëàâíûõ èëè ñòðî÷íûõ áóêâ èëè ÷èñåë
  (îò 0 äî 9). Îáùàÿ äëèíà èäåíòèôèêàòîðà íå ìîæåò ïðåâûøàòü 64 ñèìâîëà.
  Ñèìâîëû ñ êîäîì áîëüøå 0x7A (êîä ñèìâîëà <b>z</b>) íåäîïóñòèìû.

  Ïðèìåðû äîïóñòèìûõ èäåíòèôèêàòîðîâ:

  _DOG
  Loony12
  HowdYBoys_AND_Girls
  WOW___
  X

  Ïðèìåðû íåäîïóñòèìûõ èäåíòèôèêàòîðîâ:

  12bogus                                 /* íå ìîæåò íà÷èíàòüñÿ ñ ÷èñëà */
  WowisthisalongidentifieryupitsureisnotOyoulengthismorethat64chars
   /*äëèíà èäåíòèôèêàòîðà ïðåâûøàåò 64 */
  Y_es sir                                /* ïðîáåëû íåäîïóñòèìû */
  The-end                                 /* äåôèñû íåäîïóñòèìû */
<A href="#contents5" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=5.2>
  5.2 Çàðåçåðâèðîâàííûå èäåíòèôèêàòîðû.
</A></B></FONT><FONT FACE="Courier">

      Ñïèñîê çàðåçåðâèðîâàííûõ â C-- èäåíòèôèêàòîðîâ, êîòîðûå íå ìîãóò
  èñïîëüçîâàòüñÿ êàê îáùèå èäåíòèôèêàòîðû, ïîñêîëüêó îíè óæå áûëè îïðåäåëåíû
  èëè çàðåçåðâèðîâàíû äëÿ äðóãèõ öåëåé:

  <b>BREAK  CASE    CONTINUE  ELSE    EXTRACT  FALSE  FOR
  FROM   GOTO    IF        LOOPNZ  RETURN   SWITCH TRUE
  WHILE

  CARRYFLAG    MINUSFLAG  NOTCARRYFLAG  NOTOVERFLOW
  NOTZEROFLAG  OVERFLOW   PLUSFLAG      ZEROFLAG

  __CODEPTR__ __COMPILER__ __DATAPTR__ __DATESTR__ __DATE__    __DAY__
  __HOUR__    __LINE__     __MINUTE__  __MONTH__   __POSTPTR__ __SECOND__
  __TIME__    __VER1__     __VER2__    __WEEKDAY__ __YEAR__

  _export  asm     break   byte      case     cdecl   char       continue
  default  do      dword   else      enum     extern  far        fastcall
  float    for     goto    if        inline   int     interrupt  long
  loop     loopnz  pascal  return    short    signed  sizeof     static
  stdcall  struct  switch  union     unsigned void    while      word

  ESCHAR  ESBYTE  ESINT  ESWORD  ESLONG  ESDWORD  ESFLOAT
  CSCHAR  CSBYTE  CSINT  CSWORD  CSLONG  CSDWORD  CSFLOAT
  SSCHAR  SSBYTE  SSINT  SSWORD  SSLONG  SSDWORD  SSFLOAT
  DSCHAR  DSBYTE  DSINT  DSWORD  DSLONG  DSDWORD  DSFLOAT
  FSCHAR  FSBYTE  FSINT  FSWORD  FSLONG  FSDWORD  FSFLOAT
  GSCHAR  GSBYTE  GSINT  GSWORD  GSLONG  GSDWORD  GSFLOAT

  AX   CX   DX   BX   SP   BP   SI   DI
  EAX  ECX  EDX  EBX  ESP  EBP  ESI  EDI
  AL   CL   DL   BL   AH   CH   DH   BH
  ES   CS   SS   DS   FS   GS

  ST(0)  ST(1)  ST(2)  ST(3)  ST(4)  ST(5)  ST(6)  ST(7)  ST
  st(0)  st(1)  st(2)  st(3)  st(4)  st(5)  st(6)  st(7)  st
</b>
      Ýòîò ñïèñîê ìîæåò áûòü ïîëó÷åí èç C-- òðàíñëÿòîðà â ëþáîå âðåìÿ,
  çàïóñêîì åãî ñ îïöèåé <b>/WORDS</b> èç êîìàíäíîé ñòðîêè.

      Åñëè Âû ïîëüçóåòåñü ïðè êîìïèëÿöèè îïöèåé êîìàíäíîé ñòðîêè <b>/ia</b>, êîòîðàÿ
  ïîçâîëÿåò èñïîëüçîâàòü àññåìáëåðíûå èíñòðóêöèè íå çàêëþ÷àÿ èõ â áëîêè <b>asm</b> è
  áåç ïðåôèêñà <b>$</b>, òî âñå èìåíà àññåìáëåðíûõ èíñòðóêöèé ñòàíîâÿòñÿ
  çàðåçåðâèðîâàííûìè ñëîâàìè. Ïðè÷åì èìåíà àññåìáëåðíûõ èíñòðóêöèé êîìïèëÿòîð
  ðàçëè÷àåò íåçàâèñèìî îò òîãî, íàïèñàíû îíè ìàëåíüêèìè èëè áîëüøèìè áóêâàìè.

     Ñïèñîê èìåí ïîääåðæèâàåìûõ êîìïèëÿòîðîì àññåìáëåðíûõ èíñòðóêöèè ìîæíî
  ïîëó÷èòü çàïóñòèâ êîìïèëÿòîð ñ îïöèåé <b>/LAI</b>.

     Êðîìå ýòîãî â àññåìáëåðíûõ èíñòðóêöèÿõ ñòàíîâÿòñÿ çàðåçåðâèðîâàííûìè
  ñëåäóþùèå èäåíòèôèêàòîðû:

  <b>ax   cx   dx   bx   sp   bp   si   di
  eax  ecx  edx  ebx  esp  ebp  esi  edi
  al   cl   dl   bl   ah   ch   dh   bh
  es   cs   ss   ds   fs   gs

  DR0   DR1   DR2   DR3   DR4   DR5   DR6   DR7
  CR0   CR1   CR2   CR3   CR4   CR5   CR6   CR7
  TR0   TR1   TR2   TR3   TR4   TR5   TR6   TR7
  MM0   MM1   MM2   MM3   MM4   MM5   MM6   MM7
  XMM0  XMM1  XMM2  XMM3  XMM4  XMM5  XMM6  XMM7

  dr0   dr1   dr2   dr3   dr4   dr5   dr6   dr7
  cr0   cr1   cr2   cr3   cr4   cr5   cr6   cr7
  tr0   tr1   tr2   tr3   tr4   tr5   tr6   tr7
  mm0   mm1   mm2   mm3   mm4   mm5   mm6   mm7
  xmm0  xmm1  xmm2  xmm3  xmm4  xmm5  xmm6  xmm7
</b><A href="#contents5" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=5.3>
  5.3 Óíèâåðñàëüíûå ðåãèñòðû äëÿ 16 è 32-áèòíîãî ðåæèìà.
</A></B></FONT><FONT FACE="Courier">

      Ïðè ñîçäàíèè áèáëèîòå÷íûõ ïðîöåäóð î÷åíü ÷àñòî ïðèõîäèòñÿ ïèñàòü
  âàðèàíòû ïðîöåäóðû äëÿ ðàáîòû â 16-áèòíîì è 32-áèòíîì ðåæèìàõ, êîòîðûå
  îòëè÷àþòñÿ äðóã îò äðóãà ëèøü èñïîëüçîâàíèåì â íèõ ëèáî 16-áèòíûõ ëèáî
  32-áèòíûõ ðåãèñòðîâ ñîîòâåòñòâåííî. Íî ìîæíî ïèñàòü ëèøü îäíó ïðîöåäóðó,
  èñïîëüçóÿ â íåé íîâûé ñèíòàêñèñ ðåãèñòðîâ. Åñëè êîìïèëÿòîð âñòðåòèò âîò
  òàêîé ñèíòàêñèñ:

    (E)AX=0;

      òî êîìïèëÿòîð áóäåò èñïîëüçîâàòü ïðè êîìïèëÿöèè 16-áèòíîãî êîäà ðåãèñòð
  <b>AX</b>, à ïðè êîìïèëÿöèè 32-áèòíîãî êîäà ðåãèñòð <b>EAX</b>.

      Èñïîëüçîâàíèå àâòîìàòè÷åñêèõ ðåãèñòðîâ ïîçâîëèò óïðîñòèòü áèáëèîòå÷íûå
  ôàéëû è ñäåëàòü èõ áîëåå ïîíÿòíûìè.
<A href="#contents5" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=5.4>
  5.4 Ïðåäîïðåäåëåííûå èäåíòèôèêàòîðû.
</A></B></FONT><FONT FACE="Courier">

      Èäåíòèôèêàòîðû, îïðåäåëÿåìûå êîìïèëÿòîðîì â çàâèñèìîñòè îò ðåæèìà
  êîìïèëÿöèè:

  <b>__TLS__</b>     èäåò êîìïèëÿöèÿ ïîä windows (w32, w32c, dll).
  <b>__DLL__</b>     èäåò êîìïèëÿöèÿ dll.
  <b>__CONSOLE__</b> èäåò êîìïèëÿöèÿ êîíñîëüíîãî ïðèëîæåíèÿ windows
  <b>__WIN32__</b>   èäåò êîìïèëÿöèÿ GUI-øíîãî ïðèëîæåíèÿ
  <b>__FLAT__</b>    êîìïèëèðóåòñÿ 32-áèòíûé êîä.
  <b>__MSDOS__</b>   êîìïèëèðóåòñÿ 16-áèòíûé êîä.
  <b>__TINY__</b>    èñïîëüçóåòñÿ ìîäåëü ïàìÿòè tiny â 16-áèòíîì ðåæèìå
  <b>__SMALL__</b>   èñïîëüçóåòñÿ ìîäåëü ïàìÿòè small â 16-áèòíîì ðåæèìå
  <b>__DOS32__</b>   êîìïèëèðóåòñÿ 32-áèòíûé êîä ïîä DOS (d32)
  <b>__COM__</b>     êîìïèëèðóåòñÿ com-ôàéë
  <b>__SYS__</b>     êîìïèëèðóåòñÿ sys-ôàéë
  <b>__ROM__</b>     êîìïèëèðóåòñÿ rom-ôàéë
  <b>__OBJ__</b>     êîìïèëèðóåòñÿ obj-ôàéë
  <b>__TEXE__</b>    êîìïèëèðóåòñÿ exe-ôàéë ìîäåëè tiny
  <b>__EXE__</b>     êîìïèëèðóåòñÿ exe-ôàéë ìîäåëè small
  <b>__MEOS__</b>    êîìïèëèðóåòñÿ èñïîëíÿåìûé ôàéë äëÿ MenuetOS
  <b>codesize</b>    êîìïèëÿöèÿ âåäåòñÿ ñ îïòèìèçàöèåé íà ðàçìåð êîäà
  <b>speed</b>       êîìïèëÿöèÿ âåäåòñÿ ñ îïòèìèçàöèåé íà áûñòðîäåéñòâèå êîäà
  <b>cpu</b>         îïðåäåëÿåò òèï ïðîöåññîðà äëÿ êîòîðîãî âåäåòñÿ êîìïèëÿöèÿ:
  	    0 - 8086
  	    1 - 80186
  	    2 - 80286
  	    3 - 80386
  	    4 - 80486
  	    5 - Pentium
  	    6 - Pentium MMX
  	    7 - Pentium II

      Ýòè èäåíòèôèêàòîðû ìîãóò áûòü ïðîâåðåíû äèðåêòèâàìè <b>#ifdef</b> èëè <b>#ifndef</b>.
  Èäåíòèôèêàòîð <b>cpu</b> ìîæåò áûòü èñïîëüçîâàí ëèøü ñ îïåðàòîðàìè ïðîâåðêè
  óñëîâèé:

  #ifdef cpu > 3  //åñëè òèï ïðîöåññîðà áîëüøå 80386
<A href="#contents5" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.1>
6. Ïåðåìåííûå.

  6.1 Òèïû ïåðåìåííûõ.
</A></B></FONT><FONT FACE="Courier">

      Â C-- èìååòñÿ ñåìü òèïîâ ïåðåìåííûõ (èìåíîâàííûõ îáëàñòåé ïàìÿòè), ýòî:
  <b>byte, word, dword, char, int, long, float.</b>

      Ñëåäóþùàÿ òàáëèöà  ïîêàçûâàåò ðàçìåð  è äèàïàçîí  ïðåäñòàâëÿåìûõ âåëè÷èí
  êàæäîãî èç òèïîâ ïåðåìåííîé:

   NAME   | SIZE  |        VALUE RANGE          |        VALUE RANGE
   òèï    |ðàçìåð |   äèàïàçîí ïðåäñòàâëåíèÿ    |   äèàïàçîí ïðåäñòàâëåíèÿ
          |â áàéò.|    â äåñÿòè÷íîé ñèñòåìå     | â øåñòíàäöàòåðè÷íîé ñèñòåìå
  ---------------------------------------------------------------------------
  byte    |   1   |           0 to 255          |        0x00 to 0xFF
  word    |   2   |           0 to 65535        |      0x0000 to 0xFFFF
  dword   |   4   |           0 to 4294967295   |  0x00000000 to 0xFFFFFFFF
  char    |   1   |        -128 to 127          |        0x80 to 0x7F
  int     |   2   |      -32768 to 32767        |      0x8000 to 0x7FFF
  long    |   4   | -2147483648 to 2147483647   |  0x80000000 to 0x7FFFFFFF
  float   |   4   |    -3,37E38 to +3,37E38     |  0xFF7FFFFF to 0x7FFFFFFF

      Ïðèìå÷àíèå:  äëÿ ðàáîòû ñ òèïàìè <b>float, dword è long</b> èñïîëüçóþòñÿ
  32-ðàçðÿäíûå öåëî÷èñëåííûå êîìàíäû, ñëåäîâàòåëüíî, äëÿ èõ âûïîëíåíèÿ íóæíî
  èìåòü ïðîöåññîð íå õóæå 80386, ÷òî ñåé÷àñ íå ÿâëÿåòñÿ áîëüøîé ïðîáëåìîé.

      Äëÿ ñîâìåñòèìîñòè ñî ñòàíäàðòîì, ïðèíÿòîì â ÿçûêå <b>C</b>, ââåäåíû
  íîâûå çàðåçåðâèðîâàííûå ñëîâà: <b>short</b>, <b>signed</b>, <b>unsigned</b>. Äëÿ òèïà <b>int</b>
  â 32-áèòíîì ðåæèìå èçìåíåíà ðàçðÿäíîñòü. Âîò òàáëèöà âñåõ âàðèàíòîâ íîâûõ
  òèïîâ äàííûõ:

  ---------------------------------------------------------
  |   ïîëíûé òèï     |äîïóñòèìûå ñîêðàùåíèÿ|ñòàðûå àíàëîãè|
  ---------------------------------------------------------
  |signed char       |char                 |  char        |
  |signed int        |signed, int          |  int/long    |
  |signed short int  |short, signed short  |  int         |
  |signed long int   |long, signed long    |  long        |
  |unsigned char     |---                  |  byte        |
  |unsigned int      |unsigned             |  word/dword  |
  |unsigned short int|unsigned short       |  word        |
  |unsigned long int |unsigned long        |  dword       |
  ---------------------------------------------------------

      Ñòàðûå òèïû <b>byte, word è dword</b> ïîääåðæèâàþòñÿ ïî ïðåæíåìó è èìåþò
  ôóíêöèîíàëüíî ïðåæíåå çíà÷åíèå. Èçìåíåíèÿ êîñíóëèñü ëèøü òèïà <b>int</b>. Îí â
  16-áèòíîì ðåæèìå, òàêæå êàê è òèï <b>unsigned int</b>, èìååò 16-áèòíûé ðàçìåð, à
  â 32-áèòíîì ðåæèìå ýòè îáà òèïà èìåþò ðàçìåð â 32-áèòà. Íà ïåðâûé âçãëÿä
  òàêèå ñâîéñòâà òèïà <b>int</b> âíîñÿò íåêîòîðóþ ïóòàíèöó, íî ýòî äàåò áîëüøîé
  âûèãðûø ïðè èñïîëüçîâàíèè ýòîãî òèïà â áèáëèîòå÷íûõ ôàéëàõ, êîòîðûå ìîãóò
  áûòü èñïîëüçîâàíû ïðè êîìïèëÿöèè 16-áèòíûõ è 32-áèòíûõ ïðîãðàìì.
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.2>
  6.2 Îáúÿâëåíèå ïåðåìåííûõ.
</A></B></FONT><FONT FACE="Courier">

      Ñèíòàêñèñ äëÿ îáúÿâëåíèÿ ïåðåìåííûõ ñëåäóþùèé:

  variable-type identifier;

  ãäå <b>variable-type - char, byte, int, word, long, dword</b> èëè <b>float</b>.

      Îäíîâðåìåííî ìîãóò áûòü îáúÿâëåíû íåñêîëüêî èäåíòèôèêàòîðîâ îäíîãî òèïà:

  variable-type identifier1, identifier2, ... , identifierN;

      Îäíîìåðíûå ìàññèâû ìîãóò áûòü îáúÿâëåíû ñëåäóþùèì îáðàçîì:

  variable-type identifier[elements];

  ãäå <b>elements</b> -  ïîñòîÿííîå âûðàæåíèå äëÿ  êîëè÷åñòâà ïåðåìåííûõ ýòîãî  òèïà,
  îáúåäèíåííûõ â ìàññèâ.

      Èíèöèàëèçèðîâàííûå ìàññèâû ìîæíî îáúÿâëÿòü áåç óêàçàíèÿ ÷èñëà
  ýëåìåíòîâ. Ïðè ýòîì áóäåò ñîçäàí ìàññèâ ïî ôàêòè÷åñêîìó ÷èñëó ýëåìåíòîâ.

  variable-type identifier[] = { const1, const2 };

      Ïåðåìåííûå ïðè îáúÿâëåíèè ìîãóò áûòü ïðîèíèöèàëèçèðîâàíû ñëåäóþùèì
  îáðàçîì:

  variable-type identifier = value;

      Íåêîòîðûå ïðèìåðû ãëîáàëüíûõ îáúÿâëåíèé:
  byte i,j;    /* îáúÿâëÿåò äâå ïåðåìåííûå òèïà byte ñ èìåíàìè i è j */
  word see[10] /* îáúÿâëÿåò ìàññèâ ñ èìåíåì see, ñîñòîÿùèé èç 10
                  ýëåìåíòîâ òèïà word */
  int h,x[27]  /* îáúÿâëÿåò, ïåðåìåííóþ òèïà int ñ èìåíåì h,
                  è ìàññèâ ñ èìåíåì x, ñîñòîÿùèé èç 27 ýëåìåíòîâ òèïà int */
  long size=0; /* îáúÿâëåíà ïåðåìåííàÿ òèïà long ñ èìåíåì size è åé ïðèñâîåíî
                  çíà÷åíèå 0. */
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.3>
  6.3 Ãëîáàëüíûå ïåðåìåííûå.
</A></B></FONT><FONT FACE="Courier">

      Ãëîáàëüíûå ïåðåìåííûå - ýòî ïåðåìåííûå, îáëàñòü äåéñòâèÿ êîòîðûõ
  ðàñïðîñòðàíÿåòñÿ íà âñþ ïðîãðàììó. Â C-- èñïîëüçîâàòü ãëîáàëüíûå ïåðåìåííûå
  ìîæíî â ïðîöåäóðàõ, ðàñïîëîæåííûõ íèæå ìåñòà åå îáúÿâëåíèÿ. Ò.å. åñëè Âû
  ïèøèòå ïðîöåäóðó, â êîòîðîé èñïîëüçóåòå ïåðåìåííóþ var, à ñàìó ïåðåìåííóþ
  îáúÿâëÿåòå íèæå òåêñòà ïðîöåäóðû, òî êîìïèëÿòîð âûäàñò îøèáêó. Ýòî ñâÿçàíî
  ñ òåì, ÷òî êîìïèëÿòîð ìîæåò çíàòü òèï ïåðåìåííîé òîëüêî ïîñëå èõ
  îáúÿâëåíèÿ.  Íî äëÿ òàêèõ ïåðåìåííûõ ìîæíî èñïîëüçîâàòü âçÿòèå èõ àäðåñà,
  òàê êàê àäðåñ ïåðåìåííîé íå çàâèñèò îò åãî òèïà. Ïðèìåð:

  void Proc(){
    gvar = 0; /* êîìïèëÿòîð âûäàñò ñîîáùåíèå îá îøèáêå, ò.ê. îí åùå íå çíàåò
                 òèïà ïåðåìåííîé gvar */
    AX = #gvar; /* íåñìîòðÿ íà òî, ÷òî êîìïèëÿòîð íå çíàåò è àäðåñà ýòîé
                   ïåðåìåííîé òàêîå âûðàæåíèå áóäåò îòêîìïèëèðîâàíî */
  }
  int gvar;

      Íî âñå æå ñèòóàöèÿ íå áåçíàäåæíà è íàì óäàñòñÿ äîáèòüñÿ òîãî, ÷åãî ìû
  çàäóìàëè. Â ýòîì íàì ïîìîæåò àëüòåðíàòèâíûé ñèíòàêñèñ îáðàùåíèÿ ê
  ïåðåìåííûì:

  void Proc(){
    DSINT[#gvar] = 0; /* êîìïèëÿòîð óñïåøíî îòêîìïèëèðóåò ýòî âûðàæåíèå ò.ê.
                         åìó òåïåðü èçâåñòåí òèï ïåðåìåííîé gvar */
  }
  int gvar;

      Ïàìÿòü ïîä ãëîáàëüíûå ïåðåìåííûå âûäåëÿåòñÿ â ñåãìåíòå äàííûõ. Åñëè
  ïåðåìåííàÿ ïðè îáúÿâëåíèè èíèöèàëèçèðóåòñÿ (ò.å. åé ïðèñâîåíî êàêîå-òî
  çíà÷åíèå), òî ïåðåìåííàÿ áóäåò âêëþ÷åíà â êîä êîìïèëèðóåìîãî ôàéëà. Åñëè
  ïåðåìåííàÿ íå èíèöèàëèçèðóåòñÿ, òî ìåñòî äëÿ ïåðåìåííîé áóäåò
  çàðåçåðâèðîâàíî ñðàçó æå çà ïîñëåäíèì áàéòîì ñêîìïèëèðîâàííîé ïðîãðàììû.
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.4>
  6.4 Ëîêàëüíûå ïåðåìåííûå.
</A></B></FONT><FONT FACE="Courier">

      Ëîêàëüíûå ïåðåìåííûå - ýòî ïåðåìåííûå îáëàñòü äåéñòâèÿ êîòîðûõ
  ðàñïðîñòðàíÿåòñÿ ëèøü â ïðåäåëàõ îäíîé ïðîöåäóðû. Îáúÿâëÿòü ëîêàëüíûå
  ïåðåìåííûå, â îòëè÷èè îò ñîâðåìåííûõ âåðñèé <b>C</b>, ìîæíî ìåæäó èìåíåì ïðîöåäóðû
  è ïåðâîé îòêðûâàþùåéñÿ ôèãóðíîé ñêîáêîé. Ïðèìåð:

  void PROC ()
  int i;  //îáúÿâëåíà ëîêàëüíàÿ ïåðåìåííàÿ òèïà int ñ èìåíåì i
  {
      for ( i=0; i<10; i++ ) WRITE(1);
  }

      Ïàìÿòü ïîä ëîêàëüíûå ïåðåìåííûå îòâîäèòñÿ â ñåãìåíòå ñòåêà.

      Ê ëîêàëüíûì ïåðåìåííûì ìîæíî îòíåñòè è ïàðàìåòðû ñòåêîâûõ ïðîöåäóð. Ïîä
  íèõ òàêæå îòâîäèòñÿ ïàìÿòü â ñòåêå.

      Ìîæíî èíèöèàëèçèðîâàòü ëîêàëüíûå ïåðåìåííûå ïðè èõ îáúÿâëåíèè. Íî åñòü
  íåêîòîðûå îãðàíè÷åíèÿ. Íåëüçÿ èíèöèàëèçèðîâàòü ìàññèâû è ìíîãîìåðíûå
  ñòðóêòóðû. Èíèöèàëèçèðîâàòü ìîæíî îäíèì çíà÷åíèåì, ò.å íåëüçÿ ïðè
  èíèöèàëèçàöèè ëîêàëüíûõ ïåðåìåííûõ ïîëüçîâàòüñÿ ïåðå÷èñëåíèåì çàêëþ÷åííûì â
  ôèãóðíûå ñêîáêè è îïåðàòîðàìè <b>FROM</b> è <b>EXTRACT</b>.

      Èìåíà ëîêàëüíûõ ïåðåìåííûõ ìîãóò ñîâïàäàòü ñ èìåíàìè ãëîáàëüíûõ
  ïåðåìåííûõ èëè ïðîöåäóð, íî òîãäà Âû íå ñìîæåòå îáðàòèòüñÿ ê ãëîáàëüíîé
  ïåðåìåííîé èëè âûçâàòü îäíîèìåííóþ ïðîöåäóðó.

      Ëîêàëüíûå ïåðåìåííûå ìîæíî îáúÿâëÿòü è â íà÷àëå áëîêà ïðîöåäóðû. Íî
  òîëüêî äî íà÷àëà òåëà ïðîöåäóðû. Ïðèìåð:

  void proc(){
  int locproc;  // îáúÿâëåíèå ëîêàëüíîé ïðîöåäóðû
    locproc=0;  // à òåïåðü ïîøëî òåëî ïðîöåäóðû
  int locproc;  // à íà ýòî îáúÿâëåíèå ïåðåìåííîé êîìïèëÿòîð âûäàñò ñîîáùåíèå
                // îá îøèáêå, ò.ê. óæå íà÷àëîñü òåëî ïðîöåäóðû
  }
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.5>
  6.5 Äèíàìè÷åñêèå ïåðåìåííûå è ñòðóêòóðû.
</A></B></FONT><FONT FACE="Courier">

      Íàðÿäó ñ óæå èçâåñòíûìè Âàì äèíàìè÷åñêèìè ïðîöåäóðàìè â C-- åñòü
  âîçìîæíîñòü èñïîëüçîâàòü äèíàìè÷åñêè è ïåðåìåííûå è ñòðóêòóðû. Äèíàìè÷åñêèå
  ïåðåìåííûå è ñòðóêòóðû îáîçíà÷àþòñÿ òàêæå êàê è äèíàìè÷åñêèå ïðîöåäóðû -
  ñèìâîëîì äâîåòî÷èÿ ïåðåä íà÷àëîì èõ îáúÿâëåíèÿ. È òàêæå êàê è äèíàìè÷åñêàÿ
  ïðîöåäóðà, äèíàìè÷åñêàÿ ïåðåìåííàÿ èëè ñòðóêòóðà áóäåò âñòàâëåíà â êîä,
  ëèøü â òîì ñëó÷àå, åñëè îíà áóäåò èñïîëüçîâàíà â ïðîãðàììå.

      Äèíàìè÷åñêèå ïåðåìåííûå è ñòðóêòóðû íàéäóò ïðèìåíåíèå â áèáëèîòåêàõ.
  Èñïîëüçîâàòü èõ íåïîñðåäñòâåííî â ïðîãðàììàõ íåò ñìûñëà.

      Ó äèíàìè÷åñêèõ ïåðåìåííûõ, ñòðóêòóð òàêæå êàê è ó ïðîöåäóð, åñòü îäèí
  íåäîñòàòîê - Âû íå ñìîæåòå çíàòü, â êàêîì ìåñòå îòêîìïèëèðîâàííîãî êîäà îíè
  áóäóò ðàñïîëîæåíû, è â êàêîì ïîðÿäêå. Íî íåîáõîäèìîñòü ýòî çíàòü áûâàåò
  î÷åíü ðåäêî.

      Äèíàìè÷åñêèå èíèöèàëèçèðîâàííûå ïåðåìåííûå è ñòðóêòóðû â ôàéëå áóäóò
  ðàñïîëîæåíû â åãî ñàìîì êîíöå, ïîñëå äèíàìè÷åñêèõ ïðîöåäóð. Ýòó èõ
  îñîáåííîñòü ìîæíî èñïîëüçîâàòü, åñëè Âàì áóäåò íåîáõîäèìî, ÷òîáû äàííûå íå
  áûëè ðàçáðîñàíû ñðåäè êîäà, à áûëè ñãðóïïèðîâàíû â îäíîì ìåñòå.
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.6>
  6.6 Ïðèñâàèâàíèå îäíîãî çíà÷åíèÿ íåñêîëüêèì ïåðåìåííûì.
</A></B></FONT><FONT FACE="Courier">

      Åñëè Âàì íåîáõîäèìî ïðèñâîèòü íåñêîëüêèì ïåðåìåííûì îäèíàêîâûå çíà÷åíèÿ:

    var1=0;
    var2=0;
    var3=0;

      òî òåïåðü ýòî ìîæíî çàïèñàòü áîëåå êîðîòêî:

    var1=var2=var3=0;

      Ïðè èñïîëüçîâàíèè òàêîé çàïèñè ãåíåðèðóåòñÿ áîëåå êîìïàêòíûé è áîëåå
  áûñòðûé êîä.
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.7.1>
  6.7 Ïåðåìåííûå òèïà float.

    6.7.1 Ôîðìàò ïåðåìåííûõ òèïà float.
</A></B></FONT><FONT FACE="Courier">

        Äëÿ ïðåäñòàâëåíèÿ çíà÷åíèé ñ ïëàâàþùåé òî÷êîé â ÿçûê C-- ââåäåí òèï
    float. Ýòîìó òèïó ñîîòâåòñòâóåò äåéñòâèòåëüíîå ÷èñëî îäèíàðíîé òî÷íîñòè
    FPU.

        Ôîðìàò ïðåäñòàâëåíèÿ äàííûõ ñ ïëàâàþùåé òî÷êîé âêëþ÷àåò òðè ïîëÿ:
    çíàêà, ìàíòèññû è ïîðÿäêà. Çíàê îïðåäåëÿåòñÿ ñòàðøèì çíà÷àùèì ðàçðÿäîì.
    Ïîëå ìàíòèññû ñîäåðæèò çíà÷àùèå áèòû ÷èñëà, à ïîëå ïîðÿäêà ñîäåðæèò
    ñòåïåíü 2 è îïðåäåëÿåò ìàñøòàáèðóþùèé ìíîæèòåëü äëÿ ìàíòèññû.

    31 30.....23 22........0
    |  |      |  |         |
    |  |      |  -------------- - ïîëå ìàíòèññû
    |  ------------------------ - ïîëå ïîðÿäêà
    --------------------------- - áèò çíàêà
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.7.2>
    6.7.2 Êîíñòàíòû ñ ïëàâàþùåé òî÷êîé.
</A></B></FONT><FONT FACE="Courier">

        Êîìïèëÿòîð îòëè÷àåò âåùåñòâåííîå ÷èñëî îò öåëîãî ïî íàëè÷èþ â íåì
    òî÷êè. Íà÷èíàòüñÿ âåùåñòâåííîå ÷èñëî äîëæíî ëèáî öèôðîé îò <b>0</b> äî <b>9</b>, ëèáî
    çíàêîì ìèíóñ. Íåîáÿçàòåëüíîé ÷àñòüþ âåùåñòâåííîãî ÷èñëà ÿâëÿåòñÿ
    ïîêàçàòåëü ñòåïåíè. Ïîêàçàòåëü ñòåïåíè îòäåëÿåòñÿ îò ÷èñëà ñèìâîëîì <b>e</b> èëè
    <b>E</b>. Ïðîáåëû íåäîïóñòèìû. Âîò ïðèìåðû äîïóñòèìîãî ñèíòàêñèñà:

     0.98
     -15.75
     3.14e2
     1.234567E-20
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.7.3>
    6.7.3 Äèàïàçîí äîïóñòèìûõ çíà÷åíèé.
</A></B></FONT><FONT FACE="Courier">

        Âåùåñòâåííîå ÷èñëî òèïà float ìîæåò íàõîäèòüñÿ â äèàïàçîíå îò 3.37E38
    äî -3.37E38. Ìèíèìàëüíî áëèçêîå ê íóëþ çíà÷åíèå ðàâíÿåòñÿ 1.17E-38 è
    -1.17E-38. Çàïèñûâàòü âåùåñòâåííîå ÷èñëî îäèíàðíîé òî÷íîñòè áîëåå ÷åì 8
    öèôðàìè íå èìååò ñìûñëà. Ïîêàçàòåëü ñòåïåíè ìîæåò ïðèíèìàòü çíà÷åíèÿ îò
    +38 äî -38.
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.7.4>
    6.7.4 Ìàòåìàòè÷åñêèå îïåðàöèè.
</A></B></FONT><FONT FACE="Courier">

        Êîìïèëÿòîð ïîääåðæèâàåò 4 îñíîâíûõ äåéñòâèÿ íàä ïåðåìåííûìè òèïà
    float: ñëîæåíèå, âû÷èòàíèå, óìíîæåíèå è äåëåíèå. Ïîääåðæèâàåòñÿ òàêæå
    èíêðåìåíò (var++ - óâåëè÷åíèå íà 1), äåêðåìåíò (var-- - óìåíüøåíèå íà 1),
    ñìåíà çíàêà (-var) è îáìåí çíà÷åíèÿìè (var1 >< var2). Îñòàëüíûå
    ìàòåìàòè÷åñêèå îïåðàöèè áóäóò ðåàëèçîâàíû ëèáî óæå ðåàëèçîâàíû âî âíåøíèõ
    áèáëèîòåêàõ. Ïðè âû÷èñëåíèè çíà÷åíèÿ ïåðåìåííîé <b>float</b> ìîæíî èñïîëüçîâàòü
    è ïåðåìåííûå äðóãèõ òèïîâ, îíè áóäóò àâòîìàòè÷åñêè ïðåîáðàçîâàíû â òèï
    <b>float</b>.

        <font color="Red"><b>ÂÍÈÌÀÍÈÅ! Ñîñòàâíûå ìàòåìàòè÷åñêèå  îïåðàöèè âûïîëíÿþòñÿ â òîì
    ïîðÿäêå, â êîòîðîì îíè çàïèñàíû, íåâçèðàÿ íà ïðàâèëà àðèôìåòèêè</b></font>.
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.7.5>
    6.7.5 Ïðåîáðàçîâàíèÿ òèïîâ.
</A></B></FONT><FONT FACE="Courier">

        Ïðè ìàòåìàòè÷åñêèõ îïåðàöèÿõ êîíå÷íûì èòîãîì êîòîðûõ ÿâëÿåòñÿ
    ïåðåìåííàÿ òèïà <b>float</b>, âñå îïåðàíäû äðóãèõ òèïîâ ïåðåä âû÷èñëåíèåì áóäóò
    ïðåîáðàçîâàíû â òèï <b>float</b>. Ïðè ïðèñâàèâàíèè ïåðåìåííîé òèïà <b>float</b> çíà÷åíèÿ
    ïåðåìåííîé äðóãîãî òèïà îíî òàêæå áóäåò ïðåîáðàçîâàíî â òèï <b>float</b>.

        Åñëè ïðè öåëî÷èñëåííûõ âû÷èñëåíèÿõ îäíèì èç îïåðàíäîâ áóäåò ïåðåìåííàÿ
    òèïà <b>float</b>, òî èç íåãî áóäåò âûäåëåíà öåëàÿ ÷àñòü, êîòîðàÿ è ïðèìåò
    ó÷àñòèå â âû÷èñëåíèÿõ. Ïðè ïðèñâàèâàíèè öåëî÷èñëåííîé ïåðåìåííîé çíà÷åíèÿ
    ïåðåìåííîé òèïà <b>float</b>, èç íåå òàêæå áóäåò âûäåëåíà öåëàÿ ÷àñòü, êîòîðàÿ è
    áóäåò ïðèñâîåíà öåëî÷èñëåííîé ïåðåìåííîé.
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.7.6>
    6.7.6 Îïåðàöèè ñðàâíåíèÿ.
</A></B></FONT><FONT FACE="Courier">

        Åñëè ïðè îïåðàöèè ñðàâíåíèÿ ëåâûì îïåðàíäîì ÿâëÿåòñÿ ïåðåìåííàÿ èëè
    âûðàæåíèå òèïà <b>float</b>, à ïðàâûì ÿâëÿåòñÿ öåëî÷èñëåííîå çíà÷åíèå, òî
    öåëî÷èñëåííîå çíà÷åíèå áóäåò ïðåîáðàçîâàíî â âåùåñòâåííûé òèï. Åñëè æå
    ëåâûì îïåðàíäîì ÿâëÿåòñÿ öåëî÷èñëåííîå âûðàæåíèå èëè ïåðåìåííàÿ, à ïðàâûì
    îïåðàíäîì çíà÷åíèå òèïà <b>float</b>, òî èç ïðàâîãî îïåðàíäà áóäåò âûäåëåíà öåëàÿ
    ÷àñòü, êîòîðàÿ è ïðèìåò ó÷àñòèå â ñðàâíåíèè.
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.7.7>
    6.7.7 Ñðàâíåíèå ïåðåìåííûõ òèïà float ñ 32-áèòíûì ðåãèñòðîì.
</A></B></FONT><FONT FACE="Courier">

        Â ðåãèñòðàõ ìîãóò ñîäåðæàòüñÿ çíàêîâûå, áåç çíàêîâûå è âåùåñòâåííûå
    äàííûå. Ïî óìîë÷àíèþ ñ÷èòàåòñÿ, ÷òî â ðåãèñòðå íàõîäèòñÿ áåç çíàêîâîå öåëîå
    ÷èñëî. Ïðè ñðàâíåíèè ïåðåìåííûõ òèïà <b>float</b> ñ 32-áèòíûì ðåãèñòðîì ìîæíî
    óêàçûâàòü òèï äàííûõ ñîäåðæàùèõñÿ â ðåãèñòðå.  Äëÿ ýòîé öåëè ìîæíî
    èñïîëüçîâàòü ìîäèôèêàòîðû: <b>signed, unsigned, float</b>. Ïðèìåðû:

    float f=1.0;

    void PROC()
    {
      IF( f < signed ECX)	//â ðåãèñòðå ECX íàõîäèòñÿ çíàêîâîå ÷èñëî
      IF( unsigned EBX > f) //â ðåãèñòðå EBX íàõîäèòñÿ áåç çíàêîâîå ÷èñëî
      IF( f == float EAX )  //â EAX íàõîäèòñÿ ÷èñëî ôîðìàòà float
    }

        <font color="Red"><b>ÂÍÈÌÀÍÈÅ!  Ïðè îïåðàöèè ñðàâíåíèÿ ñ ó÷àñòèåì ïåðåìåíîé òèïà float,
    ñîäåðæèìîå ðåãèñòðà AX áóäåò ðàçðóøåíî.</b></font>
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=6.8>
  6.8 Óêàçàòåëè.
</A></B></FONT><FONT FACE="Courier">

       C-- ñåé÷àñ óêàçàòåëè ðåàëèçîâàíû íå â ïîëíîì îáúåìå. Ïîýòîìó ìíîãèå
  âåùè, êîòîðûå âîçìîæíû â îáû÷íûõ ÿçûêàõ <b>C</b>, çäåñü áóäóò íåäîñòóïíû.

      Ïðèìåð ïðèìåíåíèÿ óêàçàòåëåé â C--:

  char *string[4]={"string1", "string2", "string3", 0}; //ìàññèâ óêàçàòåëåé
  char *str="string4";

  main()
  int i;
  char *tstr;
  {
	FOR(i=0; string[i]!=0; i++){
		WRITESTR(string[i]);
		WRITELN();
	}
	FOR(tstr=str;byte *tstr!=0; tstr++){
		WRITE(byte *tstr);
	}
  }

      Óêàçàòåëè ìîæíî èñïîëüçîâàòü ïðè ïåðåäà÷å ïàðàìåòðîâ ïðîöåäóðàì, à â
  ñàìèõ ïðîöåäóðàõ â êà÷åñòâå êàê ëîêàëüíûõ, òàê è ïàðàìåòðè÷åñêèõ
  ïåðåìåííûõ. Óêàçàòåëè ìîæíî òàêæå èñïîëüçîâàòü â ñòðóêòóðàõ. Ìîæíî
  èñïîëüçîâàòü óêàçàòåëè íà óêàçàòåëè. Ââåäåíà ïîääåðæêà óêàçàòåëåé íà
  ïðîöåäóðû:

  void (*proc)();  //îáúÿâëåíèå óêàçàòåëÿ íà ïðîöåäóðó

      Ïî óìîë÷àíèþ óêàçàòåëè íà ïðîöåäóðó ÿâëÿþòñÿ óêàçàòåëÿìè íà ïðîöåäóðó â
  ñòèëå <b>pascal</b>, íåçàâèñèìî îò ðåãèñòðà, â êîòîðîì íàïèñàíî èìÿ ïðîöåäóðû è
  ðåæèìà êîìïèëÿöèè. Åñëè Âàì íåîáõîäèìî, ÷òîáû áûë èñïîëüçîâàí äðóãîé òèï
  âûçîâà, òî åãî íåîáõîäèìî óêàçàòü ïðè îáúÿâëåíèè óêàçàòåëÿ íà ïðîöåäóðó.

      Ïðè èíèöèàëèçàöèè óêàçàòåëåé êîìïèëÿòîð íå êîíòðîëèðóåò òî, ÷åì
  èíèöèàëèçèðóåòñÿ óêàçàòåëü. Ò.å. Âû ìîæåòå óêàçàòåëþ íà <b>char</b> ïðèñâîèòü
  óêàçàòåëü íà <b>int</b> èëè óêàçàòåëþ íà ïðîöåäóðó ïðèñâîèòü àäðåñ ïåðåìåííîé.
  Ýòî ìîæåò âûçâàòü îøèáêó â ðàáîòå ïðîãðàììû.
<A href="#contents6" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=7.1>
7. Àäðåñàöèÿ.

  7.1 Îòíîñèòåëüíàÿ àäðåñàöèÿ.
</A></B></FONT><FONT FACE="Courier">

      Èçíà÷àëüíî èíäåêñíûé äîñòóï ê ýëåìåíòàì â ìàññèâàõ ëþáîãî òèïà â
  êîìïèëÿòîðå îñóùåñòâëÿëñÿ ïîáàéòíî, íåçàâèñèìî îò îáúÿâëåííîãî òèïà äàííûõ.
  Èíäåêñû îãðàíè÷åíû ôîðìàòîì ïîëÿ <b>RM</b> ïðîöåññîðà 8086, òàêèì îáðàçîì,
  äîñòóïíû òîëüêî ñëåäóþùèå ôîðìàòû èíäåêñîâ (ãäå èíäåêñ - çíà÷åíèå
  16-ðàçðÿäíîé êîíñòàíòû èëè ïîñòîÿííîãî âûðàæåíèÿ):

        variable[index]
        variable[index+BX+SI]
        variable[index+BX+DI]
        variable[index+BP+SI]
        variable[index+BP+DI]
        variable[index+SI]
        variable[index+DI]
        variable[index+BP]
        variable[index+BX]

      Íà÷èíàÿ ñ âåðñèè 0.210, ïîÿâèëàñü âîçìîæíîñòü èñïîëüçîâàòü â êà÷åñòâå
  èíäåêñà ïåðåìåííûõ òèïà <b>char byte int word long dword</b>. Ïðè ýòîì
  äîñòóï ê ýëåìåíòàì ìàññèâà îñóùåñòâëÿåòñÿ â çàâèñèìîñòè îò îáúÿâëåííîãî òèïà
  ìàññèâà.

      Òàêæå íà÷èíàÿ ñ âåðñèè 0.210 ïîÿâèëàñü âîçìîæíîñòü èñïîëüçîâàòü â
  êà÷åñòâå èíäåêñíûõ è áàçîâûõ ðåãèñòðîâ ïðè îòíîñèòåëüíîé àäðåñàöèè ëþáûå
  32-áèòíûå ðåãèñòðû.

      Åñëè Âû äëÿ àäðåñàöèè ê ýëåìåíòàì ìàññèâà áóäåòå èñïîëüçîâàòü ðåãèñòðû è
  ÷èñëîâûå êîíñòàíòû, èç êîòîðûõ ìîæíî ïîëó÷èòü ïîëå <b>RM</b> äëÿ èíñòðóêöèé 8086
  ïðîöåññîðà èëè êîìáèíàöèþ ïîëåé <b>RM BASE è SIB</b> äëÿ 80386 ïðîöåññîðà, òî
  êîìïèëÿòîð áóäåò èñïîëüçîâàòü ýòè ðåãèñòðû äëÿ ãåíåðàöèè èíñòðóêöèè ñ ýòèìè
  ïîëÿìè.  ðåçóëüòàòå Âû ïîëó÷èòå îòíîñèòåëüíóþ ïîáàéòíóþ àäðåñàöèþ ê
  ýëåìåíòàì ìàññèâà.

      Åñëè æå èç ýòèõ ðåãèñòðîâ íåâîçìîæíî ïîëó÷èòü ïîëÿ <b>RM, BASE, SIB</b>,
  èëè äëÿ àäðåñàöèè áóäåò èñïîëüçîâàíà ïåðåìåííàÿ, òî êîìïèëÿòîð ñíà÷àëà
  âû÷èñëèò ýòî âûðàæåíèå â ðåãèñòð <b>(E)SI</b> èëè äðóãîé, ïîäõîäÿùèé ðåãèñòð, à
  çàòåì óìíîæèò ñîäåðæèìîå ýòîãî ðåãèñòðà íà ðàçðÿäíîñòü Âàøåãî ìàññèâà. Òàêèì
  îáðàçîì, â ýòîì ñëó÷àå âû áóäåòå èìåòü ïîýëåìåíòíóþ àäðåñàöèþ â ìàññèâå.
  Ïðèìåð:

    AX = var [ 5 ];
    AX = var [ BX + 5 ];
    AX = var [ BX + CX ];
    AX = var [ i ];

      Êîìïèëÿòîð ñãåíåðèðóåò ñëåäóþùèé êîä:
  test.c-- 7: AX=var[5];
  0100 A12501                   mov     ax,[125h]

  test.c-- 8: AX=var[BX+5];
  0103 8B872501                 mov     ax,[bx+125h]

  test.c-- 9: AX=var[BX+CX];
  0107 89DE                     mov     si,bx
  0109 01CE                     add     si,cx
  010B 01F6                     add     si,si
  010D 8B842001                 mov     ax,[si+120h]

  test.c-- 10: AX=var[i];
  0111 8B362201                 mov     si,[122h]
  0115 01F6                     add     si,si
  0117 8B842001                 mov     ax,[si+120h]

      Êàê Âû âèäèòå, ïåðâûå äâà âûðàæåíèÿ áûëè ïðåîáðàçîâàíû â îäíó
  àññåìáëåðíóþ èíñòðóêöèþ, è ïîëó÷èëàñü ïîáàéòíàÿ àäðåñàöèÿ.  äâóõ ñëåäóþùèõ
  âûðàæåíèÿõ ïîëó÷èòü îäíó àññåìáëåðíóþ èíñòðóêöèþ íå óäàëîñü è êîìïèëÿòîð
  ïðèìåíèë äëÿ ýòèõ âûðàæåíèé ïîýëåìåíòíóþ àäðåñàöèþ.

      Òàêîé äâîéñòâåííûé ïîäõîä ðåàëèçîâàí ñ öåëüþ ñîõðàíåíèÿ ñîâìåñòèìîñòè
  íîâûõ âîçìîæíîñòåé ñ ïðåäûäóùèìè.

      Íåñìîòðÿ íà êàæóùóþñÿ äëÿ íåèñêóøåííîãî ïîëüçîâàòåëÿ ïóòàíèöó, ýòîò
  ìåõàíèçì ëåãêî ïîíÿòü è çàïîìíèòü ïî ñëåäóþùåìó ïðîñòîìó ïðàâèëó: åñëè Âû
  èñïîëüçóåòå â êà÷åñòâå èíäåêñà òîëüêî öèôðîâîå çíà÷åíèå èëè ðåãèñòð <b>BX, SI,
  DI, BP</b> èëè ëþáîé 32-áèòíûé ðåãèñòð, òî êîìïèëÿòîð ñãåíåðèðóåò êîä ñ
  ïîáàéòíîé àäðåñàöèåé. Åñëè æå â êà÷åñòâå èíäåêñà áóäåò èñïîëüçîâàíà
  ïåðåìåííàÿ, òî êîìïèëÿòîð ñãåíåðèðóåò êîä ñ ïîýëåìåíòíîé àäðåñàöèåé. Åñëè
  æå Âû õîðîøî çíàêîìû ñ àññåìáëåðîì, òî Âàì íå ñîñòàâèò áîëüøîãî òðóäà
  ïîíÿòü â êàêèõ ñëó÷àÿõ Âû ïîëó÷èòå ïîáàéòíóþ, à â êàêèõ ïîýëåìåíòíóþ
  àäðåñàöèþ.

      Èíîãäà òðåáóåòñÿ èìåòü ïîáàéòíûé äîñòóï ê ýëåìåíòàì ìàññèâà èñïîëüçóÿ â
  êà÷åñòâå èíäåêñà ïåðåìåííóþ. Íàïðèìåð

    AX=var[i];

      Äëÿ ýòîãî âûðàæåíèÿ áóäåò ñãåíåðèðîâàíà ïîýëåìåíòíàÿ àäðåñàöèÿ, à íàì
  íóæíà ïîáàéòîâàÿ. Äëÿ ýòîãî ìîæíî íàïèñàòü òàê:

    SI=i;
    AX=var[SI];

      Íî ìîæíî ýòî çàïèñàòü êîðî÷å:

    AX=DSWORD[#var+i];

       îáîèõ ýòèõ ñëó÷àÿõ Âû ïîëó÷èòå ïîáàéòíóþ àäðåñàöèþ ê ýëåìåíòàì ìàññèâà
  <b>var</b>. Â ïåðâîì âàðèàíòå Âû ñìîæåòå êîíòðîëèðîâàòü êàêîé ðåãèñòð áóäåò
  èñïîëüçîâàí â êà÷åñòâå èíäåêñà, à âî âòîðîì âàðèàíòå êîìïèëÿòîð áóäåò ñàì
  âûáèðàòü ðåãèñòð äëÿ èñïîëüçîâàíèÿ â êà÷åñòâå èíäåêñà.

      Âàæíî âñåãäà ïîìíèòü î äâîéñòâåííîì ïîäõîäå êîìïèëÿòîðà ê âû÷èñëåíèþ
  àäðåñà â ìàññèâå. Åùå ðàç êðàòêî:  åñëè Âû â ìàññèâå àäðåñóåòåñü èñïîëüçóÿ
  ÷èñëîâóþ êîíñòàíòó èëè ðåãèñòðû <b>BX,DI,SI,BP</b> êîìïèëÿòîð èñïîëüçóåò ýòè
  çíà÷åíèÿ áåç èçìåíåíèÿ.  Âî âñåõ äðóãèõ ñëó÷àÿõ áóäåò êîððåêöèÿ çíà÷åíèÿ â
  çàâèñèìîñòè îò òèïà ìàññèâà.
<A href="#contents7" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=7.2>
  7.2 Àáñîëþòíàÿ àäðåñàöèÿ.
</A></B></FONT><FONT FACE="Courier">

      Àáñîëþòíàÿ àäðåñàöèÿ òàêæå âîçìîæíà.  Äåéñòâóþò òå æå ñàìûå îãðàíè÷åíèÿ
  íà èíäåêñû, ÷òî è ïðè îòíîñèòåëüíîé àäðåñàöèè.

      Âû÷èñëåííûé èíäåêñ áóäåò àáñîëþòåí â ñåãìåíòå, ðåãèñòð êîòîðîãî óêàçàí.
  Ìîæíî óêàçûâàòü ëþáîé èç ðåãèñòðîâ <b>DS, CS, SS è ES</b>. Íà ïðîöåññîðàõ 80386 è
  áîëåå íîâûõ ìîæíî óêàçûâàòü òàêæå ðåãèñòðû <b>FS è GS</b>.

      Ñèíòàêñèñ - òî÷íî òàêîé æå, êàê è â îòíîñèòåëüíîé àäðåñàöèè, çà
  èñêëþ÷åíèåì òîãî, ÷òî óêàçûâàåòñÿ íå ïåðåìåííàÿ, à ñåãìåíò è òèï äàííûõ.
  Ìîãóò ïðèìåíÿòüñÿ ñëåäóþùèå óêàçàòåëè:

             // àäðåñàöèÿ â ñåãìåíòå äàííûõ
         DSBYTE  [ñìåùåíèå] // àäðåñóåò áàéò â ñåãìåíòå DS
         DSWORD  [ñìåùåíèå] // àäðåñóåò ñëîâî â ñåãìåíòå DS
         DSCHAR  [ñìåùåíèå] // àäðåñóåò char â ñåãìåíòå DS
         DSINT   [ñìåùåíèå] // àäðåñóåò int â ñåãìåíòå DS
         DSDWORD [ñìåùåíèå] // àäðåñóåò dword â ñåãìåíòå DS
         DSLONG  [ñìåùåíèå] // àäðåñóåò long â ñåãìåíòå DS
         DSFLOAT [ñìåùåíèå] // àäðåñóåò float â ñåãìåíòå DS

             // àäðåñàöèÿ â ñåãìåíòå êîäà
         CSBYTE  [ñìåùåíèå] // àäðåñóåò áàéò â ñåãìåíòå CS
         CSWORD  [ñìåùåíèå] // àäðåñóåò ñëîâî â ñåãìåíòå CS
         CSCHAR  [ñìåùåíèå] // àäðåñóåò char â ñåãìåíòå CS
         CSINT   [ñìåùåíèå] // àäðåñóåò int â ñåãìåíòå CS
         CSDWORD [ñìåùåíèå] // àäðåñóåò dword â ñåãìåíòå CS
         CSLONG  [ñìåùåíèå] // àäðåñóåò long â ñåãìåíòå CS
         CSFLOAT [ñìåùåíèå] // àäðåñóåò float â ñåãìåíòå CS

             // àäðåñàöèÿ â ñåãìåíòå ñòåêà
         SSBYTE  [ñìåùåíèå] // àäðåñóåò áàéò â ñåãìåíòå SS
         SSWORD  [ñìåùåíèå] // àäðåñóåò ñëîâî â ñåãìåíòå SS
         SSCHAR  [ñìåùåíèå] // àäðåñóåò char â ñåãìåíòå SS
         SSINT   [ñìåùåíèå] // àäðåñóåò int â ñåãìåíòå SS
         SSDWORD [ñìåùåíèå] // àäðåñóåò dword â ñåãìåíòå SS
         SSLONG  [ñìåùåíèå] // àäðåñóåò long â ñåãìåíòå SS
         SSFLOAT [ñìåùåíèå] // àäðåñóåò float â ñåãìåíòå SS

             // àäðåñàöèÿ â äîïîëíèòåëüíîì ñåãìåíòå äàííûõ
         ESBYTE  [ñìåùåíèå] // àäðåñóåò áàéò â ñåãìåíòå ES
         ESWORD  [ñìåùåíèå] // àäðåñóåò ñëîâî â ñåãìåíòå ES
         ESCHAR  [ñìåùåíèå] // àäðåñóåò char â ñåãìåíòå ES
         ESINT   [ñìåùåíèå] // àäðåñóåò int â ñåãìåíòå ES
         ESDWORD [ñìåùåíèå] // àäðåñóåò dword â ñåãìåíòå ES
         ESLONG  [ñìåùåíèå] // àäðåñóåò long â ñåãìåíòå ES
         ESFLOAT [ñìåùåíèå] // àäðåñóåò float â ñåãìåíòå ES

             // àäðåñàöèÿ â äîïîëíèòåëüíîì ñåãìåíòå 2 (80386) +
         FSBYTE  [ñìåùåíèå] // àäðåñóåò áàéò â ñåãìåíòå FS
         FSWORD  [ñìåùåíèå] // àäðåñóåò ñëîâî â ñåãìåíòå FS
         FSCHAR  [ñìåùåíèå] // àäðåñóåò char â ñåãìåíòå FS
         FSINT   [ñìåùåíèå] // àäðåñóåò int â ñåãìåíòå FS
         FSDWORD [ñìåùåíèå] // àäðåñóåò dword â ñåãìåíòå FS
         FSLONG  [ñìåùåíèå] // àäðåñóåò long â ñåãìåíòå FS
         FSFLOAT [ñìåùåíèå] // àäðåñóåò float â ñåãìåíòå FS

             // àäðåñàöèÿ â äîïîëíèòåëüíîì ñåãìåíòå 3 (80386) +
         GSBYTE  [ñìåùåíèå] // àäðåñóþò áàéò â ñåãìåíòå GS
         GSWORD  [ñìåùåíèå] // àäðåñóþò ñëîâî â ñåãìåíòå GS
         GSCHAR  [ñìåùåíèå] // àäðåñóþò char â ñåãìåíòå GS
         GSINT   [ñìåùåíèå] // àäðåñóþò int â ñåãìåíòå GS
         GSDWORD [ñìåùåíèå] // àäðåñóþò dword â ñåãìåíòå GS
         GSLONG  [ñìåùåíèå] // àäðåñóþò long â ñåãìåíòå GS
         GSFLOAT [ñìåùåíèå] // àäðåñóåò float â ñåãìåíòå GS

  Ïðèìåðû:
     Çàãðóçèòü â AL áàéò èç ÿ÷åéêè ñ øåñòíàäöàòåðè÷íûì àäðåñîì 0000:0417
                 ES = 0x0000;
                 AL = ESBYTE [0x417];

     Ïåðåìåñòèòü ñëîâî èç ÿ÷åéêè ñ øåñòíàäöàòåðè÷íûì àäðåñîì 2233:4455
     â ÿ÷åéêó ñ øåñòíàäöàòåðè÷íûì àäðåñîì A000:0002
                 $PUSH DS
                 DS = 0x2233;
                 ES = 0xA000;
                 ESWORD [0x0002] = DSWORD [0x4455];
                 $POP DS

     Ñîõðàíèòü âû÷èñëåííîå çíà÷åíèå âûðàæåíèÿ X + 2, èìåþùåå
     òèï int â ÿ÷åéêå ñ øåñòíàäöàòåðè÷íûì àäðåñîì FFFF:1234
                 ES = 0xFFFF;
                 ESINT [0x1234] = X + 2;

     Ñîõðàíèòü BX â ñåãìåíòå ñòåêà ïî ñìåùåíèþ 42:
                 SSWORD [42] = BX;
<A href="#contents7" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=8.1.1>
8. Ðàáîòà ñ áëîêàìè äàííûõ.

  8.1 Ñòðóêòóðû.

    8.1.1 ×òî òàêîå ñòðóêòóðû.
</A></B></FONT><FONT FACE="Courier">

        Ñòðóêòóðà ïîçâîëÿåò îáúåäèíèòü â îäíîì îáúåêòå ñîâîêóïíîñòü çíà÷åíèé,
    êîòîðûå ìîãóò èìåòü ðàçëè÷íûå òèïû.
<A href="#contents8" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=8.1.2>
    8.1.2 Ñèíòàêñèñ.
</A></B></FONT><FONT FACE="Courier">

    struct [<òåã>] { <ñïèñîê-îáúÿâëåíèé-ýëåìåíòîâ> }
      <îïèñàòåëü>[,<îïèñàòåëü>...];
    struct <òåã> <îïèñàòåëü> [,<îïèñàòåëü>];

        Îáúÿâëåíèå ñòðóêòóðû íà÷èíàåòñÿ ñ êëþ÷åâîãî ñëîâà struct è èìååò äâå
    ôîðìû çàïèñè.

        Â ïåðâîé ôîðìå òèïû è èìåíà ýëåìåíòîâ ñòðóêòóðû ñïåöèôèöèðóþòñÿ â
    ñïèñêå-îáúÿâëåíèé-ýëåìåíòîâ. Íåîáÿçàòåëüíûé â äàííîì ñëó÷àå <b>òåã</b> - ýòî
    èäåíòèôèêàòîð, êîòîðûé èìåíóåò ñòðóêòóðíûé òèï, îïðåäåëåííûé äàííûì
    ñïèñêîì îáúÿâëåíèé ýëåìåíòîâ. <b>îïèñàòåëü</b> ñïåöèôèöèðóåò ëèáî ïåðåìåííóþ
    ñòðóêòóðíîãî òèïà, ëèáî ìàññèâ ñòðóêòóð äàííîãî òèïà.

        Âòîðàÿ ñèíòàêñè÷åñêàÿ ôîðìà îáúÿâëåíèÿ èñïîëüçóåò òåã ñòðóêòóðû äëÿ
    ññûëêè íà ñòðóêòóðíûé òèï, îïðåäåëåííûé ãäå-òî â äðóãîì ìåñòå ïðîãðàììû.

        Ñïèñîê îáúÿâëåíèé ýëåìåíòîâ ïðåäñòàâëÿåò ñîáîé ïîñëåäîâàòåëüíîñòü èç
    îäíîé èëè áîëåå îáúÿâëåíèé ïåðåìåííûõ. Êàæäàÿ ïåðåìåííàÿ, îáúÿâëåííàÿ â
    ýòîì ñïèñêå, íàçûâàåòñÿ ýëåìåíòîì ñòðóêòóðû.

        Ýëåìåíòû ñòðóêòóðû çàïîìèíàþòñÿ â ïàìÿòè ïîñëåäîâàòåëüíî â òîì
    ïîðÿäêå, â êîòîðîì îíè îáúÿâëÿþòñÿ. Âûðàâíèâàíèå ýëåìåíòîâ âíóòðè
    ñòðóêòóðû ïî óìîë÷àíèþ íå ïðîèçâîäèòñÿ. Íî ñóùåñòâóåò îïöèÿ, âêëþ÷åíèå
    êîòîðîé â êîìàíäíóþ ñòðîêó ïîçâîëÿåò èìåòü âûðàâíèâàíèå è âíóòðè
    ñòðóêòóðû. Ñàìà ñòðóêòóðà âûðàâíèâàåòñÿ íà ÷åòíûé àäðåñ åñëè âêëþ÷åíî
    âûðàâíèâàíèå.

      Ïðèìåðû îáúÿâëåíèé ñòðóêòóð:

    struct test
    {
      int a;
      char b[8];
      long c;
    } rr, ff[4];

        Â ýòîì ïðèìåðå îáúÿâëåíû ñòðóêòóðà ñ èìåíåì <b>rr</b> è ìàññèâ èç 4 ñòðóêòóð
    ñ èìåíåì <b>ff</b>. Âñåìó íàáîðó ïåðåìåííûõ ïðèñâîåíî íàçâàíèå <b>(òåã) test</b>. Ýòîò
    òåã ìîæíî èñïîëüçîâàòü äëÿ îáúÿâëåíèÿ äðóãèõ ñòðóêòóð. Íàïðèìåð:

   struct test dd;

        Çäåñü îáúÿâëåíà ñòðóêòóðà ñ èìåíåì <b>dd</b>, èìåþùàÿ íàáîð ýëåìåíòîâ
    îïèñàííûõ â òåãå <b>test</b>.

        Ïðè îáúÿâëåíèè ñòðóêòóð ñ ðàíåå îáúÿâëåííûì òåãîì êëþ÷åâîå ñëîâî
   <b>struct</b> ìîæíî íå ïèñàòü. Ò.å ìîæíî íàïèñàòü âîò òàê:

      test dd;
<A href="#contents8" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=8.1.3>
    8.1.3 Èíèöèàëèçàöèÿ ñòðóêòóð ïðè îáúÿâëåíèè.
</A></B></FONT><FONT FACE="Courier">

        Ïîñëå îáúÿâëåíèÿ ñòðóêòóðû åå ýëåìåíòû ìîãóò ïðèíèìàòü ïðîèçâîëüíûå
    çíà÷åíèÿ. ×òî áû ýòîãî íå áûëî íàäî ñòðóêòóðû ïðîèíèöèàëèçèðîâàòü.
    Èíèöèàëèçèðîâàòü ñòðóêòóðû ïðè èõ îáúÿâëåíèè ìîæíî òîëüêî ãëîáàëüíûå. C--
    ïîääåðæèâàåò íåñêîëüêî ñïîñîáîâ èíèöèàëèçàöèè ñòðóêòóð ïðè èõ îáúÿâëåíèè:

      1. Îäíèì çíà÷åíèåì:

       struct test dd=2;

     ýòîì ïðèìåðå âñåì ýëåìåíòàì ñòðóêòóðû dd ïðèñâàèâàåòñÿ çíà÷åíèå 2.

      2. Ìàññèâîì çíà÷åíèé:

       struct test dd={1,2,,6};

     ýòîì ïðèìåðå ïåðâîìó ýëåìåíòó ñòðóêòóðû dd ïðèñâàèâàåòñÿ çíà÷åíèå 1,
    âòîðîìó - 2, ÷åòâåðòîìó - 6. Ïðîïóùåííûì è íå äîèíèöèàëèçèðîâàííûì
    çíà÷åíèÿì áóäåò ïðèñâîåíî 0 çíà÷åíèå.

      3. Êîìàíäîé FROM:

       struct test dd=FROM "file.dat";

    Â ýòîì ïðèìåðå íà ìåñòî ãäå ðàñïîëîæåíà ñòðóêòóðà dd ïðè êîìïèëÿöèè áóäåò
    çàãðóæåíî ñîäåðæèìîå ôàéëà <file.dat>. Åñëè ðàçìåð ôàéëà áîëüøå ÷åì ðàçìåð
    ñòðóêòóðû, òî ëèøíèå áàéòû áóäóò çàãðóæåíû â êîä ïðîãðàììû, íî îíè íå
    áóäóò âîñòðåáîâàíû. Åñëè ðàçìåð ôàéëà ìåíüøå ÷åì ðàçìåð ñòðóêòóðû, òî
    íåäîñòàþùèå áàéòû ñòðóêòóðû áóäóò çàïîëíåíû íóëÿìè.

      4. Êîìàíäîé EXTRACT:

       struct test dd=EXTRACT "file.dat", 24, 10;

    Â ýòîì ïðèìåðå íà ìåñòî ãäå ðàñïîëîæåíà ñòðóêòóðà dd ïðè êîìïèëÿöèè áóäåò
    çàãðóæåí ôðàãìåíò èç ôàéëà <b>file.dat</b> äëèíîé 10 áàéò ñî ñìåùåíèÿ 24.
    Íåäîñòàþùèå áàéòû áóäóò çàïîëíåíû íóëÿìè.
<A href="#contents8" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=8.1.4>
    8.1.4 Èíèöèàëèçàöèÿ ñòðóêòóðû ïðè âûïîëíåíèè ïðîãðàììû.
</A></B></FONT><FONT FACE="Courier">

        Ïðè âûïîëíåíèè ïðîãðàììû, êðîìå ïðèñâîåíèÿ êàæäîìó ýëåìåíòó ñòðóêòóðû
    çíà÷åíèÿ, ìîæíî ïðîèíèöèàëèçèðîâàòü âñþ ñòðóêòóðó ïðèñâîåíèåì åé ÷èñëà èëè
    ïåðåìåííîé. Ïðèìåðû:

    void proc()
    struct test aa[5],rr;
    int i;
    {
      aa[0]=0x12345678;
      aa[i]=int 0x12345678;
      aa=long 0x12345678;
      rr=i;

    Â ïåðâîì ïðèìåðå ïàìÿòü, çàíèìàåìàÿ ïåðâîé ñòðóêòóðîé ìàññèâà èç 5
    ñòðóêòóð, áóäåò çàïîëíåíà áàéòîì 0x78 (ïî óìîë÷àíèþ).

    Âî âòîðîì ïðèìåðå ïàìÿòü, çàíèìàåìàÿ (i+1)-âîé ñòðóêòóðîé ìàññèâà èç 5
    ñòðóêòóð, áóäåò çàïîëíåíà ñëîâîì 0x5678.

    Â òðåòüåì ïðèìåðå ïàìÿòü, çàíèìàåìàÿ âñåì ìàññèâîì èç 5 ñòðóêòóð, áóäåò
    çàïîëíåíà äëèííûì ñëîâîì 0x12345678.

     ÷åòâåðòîì ïðèìåðå ïàìÿòü, çàíèìàåìàÿ ñòðóêòóðîé rr, áóäåò çàïîëíåíà
    ñîäåðæèìûì ïåðåìåííîé i.

        Ìîæíî òàêæå êîïèðîâàòü ñîäåðæèìîå îäíîé ñòðóêòóðû â äðóãóþ. Íàïðèìåð:

      rr=aa[2];

    Áóäåò ñêîïèðîâàíî ñîäåðæèìîå òðåòüåé ñòðóêòóðû ìàññèâà ñòðóêòóð aa â
    ñòðóêòóðó rr.
<A href="#contents8" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=8.1.5>
    8.1.5 Îïåðàöèè ñ ýëåìåíòàìè ñòðóêòóð.
</A></B></FONT><FONT FACE="Courier">

        Ñ ýëåìåíòàìè ñòðóêòóð ìîæíî âûïîëíÿòü âñå òå îïåðàöèè, êîòîðûå
    äîñòóïíû äëÿ ïåðåìåííûõ ñîîòâåòñòâóþùåãî òèïà. Íàïðèìåð:  Îáúÿâëåíà
    ñòðóêòóðà:

    struct test
    {
      int a;
      char b[8];
      long c;
    } rr[3];
    Ïðèìåð äîïóñòèìîãî ñèíòàêñèñà:
        rr.a = rr.b[i] * rr[1].c + i ;

    Ïðèìå÷àíèå:
        Ïðè îïåðàöèÿõ ñ ýëåìåíòàìè ìàññèâà ñòðóêòóð è ñ èíäåêñèðîâàííûìè
    ýëåìåíòàìè, â êîòîðûõ â êà÷åñòâå èíäåêñà èëè íîìåðà ñòðóêòóðû èñïîëüçóåòñÿ
    ïåðåìåííàÿ, êîìïèëÿòîð ìîæåò èñïîëüçîâàòü ðåãèñòðû SI è DI, à â íåêîòîðûõ
    ñèòóàöèÿõ (íàïðèìåð:  rr[i].b[j] >< rr[i+1].b[j+2] ) áóäåò çàäåéñòâîâàí è
    ðåãèñòð DX.

        Äëÿ îòäåëüíûõ ýëåìåíòîâ ñòðóêòóðû, ìîæíî ïîëó÷àòü èõ àäðåñ, ðàçìåð
    è ñìåùåíèå â òåãå ñòðóêòóðû. Âîò ïðèìåð:

    struct AA       //îáúÿâëåíèå òåãà ñòðóêòóðû
    {
      word a[3];    // ïåðâûé ýëåìåíò ñòðóêòóðû
      char b;       // âòîðîé ýëåìåíò ñòðóêòóðû
      long c;       // òðåòèé ýëåìåíò ñòðóêòóðû
    };

    struct BB	//òåã âòîðîé ñòðóêòóðû
    {
      word aa;	// ïåðâûé ýëåìåíò
      AA bb;	// âòîðîé ýëåìåíò - âëîæåííàÿ ñòðóêòóðà
    }ss;		// îáúÿâëÿåì ñòðóêòóðó ñ òåãîì <b>BB</b>

    void proc()
    {
      AX=#ss.bb.b; // ïîëó÷èòü àäðåñ ýëåìåíòà <b>b</b> ñòðóêòóðû <b>bb</b> â ñòðóêòóðå <b>ss</b>
      AX=#BB.bb.b; // ïîëó÷èòü ñìåùåíèå ýòîãî æå ýëåìåíòà â òåãå <b>BB</b>
      AX=sizeof(ss.bb);	// ïîëó÷èòü ðàçìåð ýëåìåíòà <b>bb</b> â ñòðóêòóðå <b>ss</b>
      AX=sizeof(BB.bb);	// ïîëó÷èòü ðàçìåð ýëåìåíòà <b>bb</b> â òåãå <b>BB</b>
    }
<A href="#contents8" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=8.1.6>
    8.1.6 Âëîæåííûå ñòðóêòóðû.
</A></B></FONT><FONT FACE="Courier">

        Ïðè îáúÿâëåíèè òåãîâ ñòðóêòóð ìîæíî èñïîëüçîâàòü òåãè äðóãèõ,
    îáúÿâëåííûõ ðàíåå ñòðóêòóð. Ïðèìåð âëîæåííûõ ñòðóêòóð:

    struct RGB
    {
      byte Red;
      byte Green;
      byte Blue;
      byte Reserved;
    };

    struct BMPINFO
    {
      struct BMPHEADER header; //îïèñàíèå ýòîé ñòðóêòóðû ïðîïóùåíî
      struct RGB color[256];
    }info;

        Ïðåäïîëîæèì Âàì íóæíî ïîëó÷èòü ñîäåðæèìîå ïåðåìåííîé <b>Red</b> äåñÿòîãî
    ýëåìåíòà <b>color</b>. Ýòî ìîæíî áóäåò çàïèñàòü òàê:

      AL=info.color[10].Red;

        Íî ñóùåñòâóåò îäíî îãðàíè÷åíèå èñïîëüçîâàíèÿ âëîæåííûõ ñòðóêòóð â C--.
    Ýòî íåâîçìîæíîñòü èñïîëüçîâàíèÿ ïåðåìåííîé â êà÷åñòâå èíäåêñà áîëåå îäíîãî
    ðàçà ïðè îáðàùåíèè ê ìíîãîýêçåìïëÿðíûì ñòðóêòóðàì. Ïîÿñíèì ýòî íà ïðèìåðå:

    struct ABC
    {
      int a;
      int b;
      int c;
    };

    struct
    {
      struct ABC first[4];  //4 ýêçåìïëÿðà ñòðóêòóðû ABC
      int d;
    }second[4];

    int i,j;

    void proc()
    {
      AX=second[i].first[j].a; //òàêàÿ çàïèñü âûçîâåò ñîîáùåíèå îá îøèáêà, òàê
                               //êàê ïåðåìåííàÿ èñïîëüçîâàëàñü â äâóõ ìåñòàõ
      AX=second[2].first[j].a; //à ýòîò ñèíòàêñèñ äîïóñòèì.
      AX=second[i].first[3].a;
    }
<A href="#contents8" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=8.1.7>
    8.1.7 Îòîáðàæåíèå òåãà ñòðóêòóðû íà áëîê ïàìÿòè.
</A></B></FONT><FONT FACE="Courier">

        Îòîáðàæåíèå òåãà ñòðóêòóðû íà áëîê ïàìÿòè ÿâëÿåòñÿ àëüòåðíàòèâîé
    óêàçàòåëÿì íà ñòðóêòóðû.

        Àëüòåðíàòèâíûé ñïîñîá èñïîëüçîâàíèÿ óêàçàòåëåé íà ñòðóêòóðû ïîçâîëèò
    Âàì ñàìèì âûáðàòü ðåãèñòð, â êîòîðîì áóäåò õðàíèòñÿ àäðåñ ñòðóêòóðû è
    ñàìèì ñëåäèòü çà åãî ñîõðàííîñòüþ è ïî ìåðå íåîáõîäèìîñòè âîññòàíàâëèâàòü
    åãî ñîäåðæèìîå.

        Îáúÿñíèòü, êàê èñïîëüçîâàòü îòîáðàæåíèå òåãà ñòðóêòóðû íà ïàìÿòü,
    íàâåðíîå, áóäåò ïðîùå íà ïðèìåðå:

    struct AA       //îáúÿâëåíèå òåãà ñòðóêòóðû
    {
      word a[3];    // ïåðâûé ýëåìåíò ñòðóêòóðû
      char b;       // âòîðîé ýëåìåíò ñòðóêòóðû
      long c;       // òðåòèé ýëåìåíò ñòðóêòóðû
    };

    byte buf[256];  //áëîê ïàìÿòè, íà êîòîðûé áóäåò îòîáðàæåí òåã ñòðóêòóðû

    void proc1()
    {
     ...
     proc2 ( #buf );  // âûçîâ ïðîöåäóðû ñ ïåðåäà÷åé åé â êà÷åñòâå ïàðàìåòðà
                      // àäðåñà áëîêà ïàìÿòè
     ...
    }

    long proc2 (unsigned int pointer_to_mem)
    {
    int i;
      BX=pointer_to_mem;  // â BX çàãðóçèì àäðåñ áëîêà ïàìÿòè
      FOR(i=0; i<3; i++){ // â ìàññèâ ýëåìåíòà <b>a</b> çàïèñàòü -1
        BX.AA.a[i]=-1;
      }
      BX.AA.b=0;
      ES:BX.AA.c=EAX;
      return BX.AA.c;  // âåðíóòü ñîäåðæèìîå ýëåìåíòà <b>c</b>
    }

        Â 16-áèòíîì ðåæèìå äëÿ õðàíåíèÿ àäðåñà ñòðóêòóðû ìîæíî èñïîëüçîâàòü
    ðåãèñòðû: <b>BX,DI,SI,BP</b>. Íî ëó÷øå äëÿ ýòîãî èñïîëüçîâàòü ðåãèñòð <b>BX</b>.
    Ðåãèñòðû <b>DI è SI</b> ìîæåò èñïîëüçîâàòü êîìïèëÿòîð ïðè âû÷èñëåíèè àäðåñà
    ìíîãîýëåìåíòíûõ îáúåêòîâ. Ðåãèñòð <b>BP</b> êîìïèëÿòîð èñïîëüçóåò äëÿ ðàáîòû ñ
    ëîêàëüíûìè è ïàðàìåòðè÷åñêèìè ïåðåìåííûìè.  32-áèòíîì ðåæèìå ìîæíî
    èñïîëüçîâàòü ëþáîé êðîìå <b>ESP è EBP</b> ðåãèñòð, à ðåãèñòðû <b>EDI è ESI</b> íàäî
    èñïîëüçîâàòü îñòîðîæíî.
<A href="#contents8" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=8.1.8>
    8.1.8 Áèòîâûå ïîëÿ ñòðóêòóð.
</A></B></FONT><FONT FACE="Courier">

        Áèòîâûå ïîëÿ ñòðóêòóð èñïîëüçóþòñÿ äëÿ ýêîíîìèè ïàìÿòè, ïîñêîëüêó
    ïîçâîëÿþò ïëîòíî óïàêîâàòü çíà÷åíèÿ, è äëÿ îðãàíèçàöèè óäîáíîãî äîñòóïà ê
    ðåãèñòðàì âíåøíèõ óñòðîéñòâ, â êîòîðûõ ðàçëè÷íûå áèòû ìîãóò èìåòü
    ñàìîñòîÿòåëüíîå ôóíêöèîíàëüíîå íàçíà÷åíèå.

        Îáúÿâëåíèå áèòîâîãî ïîëÿ èìååò ñëåäóþùèé ñèíòàêñèñ:

    <òèï> [<èäåíòèôèêàòîð>]:<êîíñòàíòà>;

    èëè íà ïðèìåðå:

    int var:5;  //îáúÿâëåíèå áèòîâîãî ïîëÿ ðàçìåðîì 5 áèò ñ èìåíåì <b>var</b>

        Áèòîâîå ïîëå ñîñòîèò èç íåêîòîðîãî ÷èñëà áèòîâ, êîòîðîå çàäàåòñÿ
    ÷èñëîâûì âûðàæåíèåì <b>êîíñòàíòà</b>. Åãî çíà÷åíèå äîëæíî áûòü öåëûì
    ïîëîæèòåëüíûì ÷èñëîì è åãî çíà÷åíèå íå äîëæíî ïðåâûøàòü ÷èñëà ðàçðÿäîâ,
    ñîîòâåòñòâóþùèå <b>òèïó</b> îïðåäåëÿåìîãî áèòîâîãî ïîëÿ. Â C-- áèòîâûå ïîëÿ
    ìîãóò ñîäåðæàòü òîëüêî áåç çíàêîâûå çíà÷åíèÿ. Íåëüçÿ èñïîëüçîâàòü ìàññèâû
    áèòîâûõ ïîëåé, óêàçàòåëè íà áèòîâûå ïîëÿ.

       <b> èäåíòèôèêàòîð</b> èìåíóåò áèòîâîå ïîëå. Åãî íàëè÷èå íåîáÿçàòåëüíî.
    Íåèìåíîâàííîå áèòîâîå ïîëå îçíà÷àåò ïðîïóñê ñîîòâåòñòâóþùåãî ÷èñëà áèòîâ
    ïåðåä ðàçìåùåíèåì ñëåäóþùåãî ýëåìåíòà ñòðóêòóðû. Íåèìåíîâàííîå áèòîâîå
    ïîëå, äëÿ êîòîðîãî óêàçàí íóëåâîé ðàçìåð, èìååò ñïåöèàëüíîå íàçíà÷åíèå:
    îíî ãàðàíòèðóåò, ÷òî ïàìÿòü äëÿ ñëåäóþùåãî áèòîâîãî ïîëÿ áóäåò íà÷èíàòüñÿ
    íà ãðàíèöå òîãî òèïà, êîòîðûé çàäàí äëÿ íåèìåíîâàííîãî áèòîâîãî ïîëÿ.
    Ò.å.  áóäåò ïðîèçâåäåíî âûðàâíèâàíèå áèòîâîãî ïîëÿ íà 8/16/32 áèòà.

        Â C-- âñå áèòîâûå ïîëÿ óïàêîâûâàþòñÿ îäíî çà äðóãèì íåçàâèñèìî îò
    ãðàíèö òèïà èäåíòèôèêàòîðîâ. Åñëè ïîñëåäóþùåå ïîëå íå ÿâëÿåòñÿ áèòîâûì
    ïîëåì, òî îñòàâøèåñÿ äî ãðàíèöû áàéòà áèòû íå áóäóò èñïîëüçîâàíû.
    Ìàêñèìàëüíûé ðàçìåð áèòîâîãî ïîëÿ ðàâåí 32 áèòà äëÿ òèïà <b>dword/long</b>, 16
    áèò äëÿ òèïà <b>word/int</b> è 8 áèò äëÿ òèïà <b>byte/char</b>. Áèòîâûå ïîëÿ ìîæíî
    îáúåäèíÿòü, ò.å. èñïîëüçîâàòü èõ â îïåðàòîðå<b> union. sizeof</b>
    ïðèìåíåííûé ê áèòîâîìó ïîëþ âåðíåò ðàçìåð ýòîãî ïîëÿ â áèòàõ. Ïðè
    èñïîëüçîâàíèè áèòîâîãî ïîëÿ, åãî ñîäåðæèìîå áóäåò ðàñøèðÿòñÿ â ðåãèñòð
    êàê áåç çíàêîâîå öåëîå ÷èñëî.
<A href="#contents8" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=8.2>
  8.2 Îáúåäèíåíèÿ.
</A></B></FONT><FONT FACE="Courier">

      Îáúåäèíåíèÿ ïîçâîëÿþò â ðàçíûå ìîìåíòû âðåìåíè õðàíèòü â îäíîì îáúåêòå
  çíà÷åíèÿ ðàçëè÷íîãî òèïà.

      Ïàìÿòü, êîòîðàÿ âûäåëÿåòñÿ ïîä îáúåäèíåíèå, îïðåäåëÿåòñÿ ðàçìåðîì
  íàèáîëåå äëèííîãî èç ýëåìåíòîâ îáúåäèíåíèÿ. Âñå ýëåìåíòû îáúåäèíåíèÿ
  ðàçìåùàþòñÿ â îäíîé è òîé æå îáëàñòè ïàìÿòè ñ îäíîãî è òîãî æå àäðåñà.
  Çíà÷åíèå òåêóùåãî ýëåìåíòà îáúåäèíåíèÿ òåðÿåòñÿ, êîãäà äðóãîìó ýëåìåíòó
  îáúåäèíåíèÿ ïðèñâàèâàåòñÿ çíà÷åíèå.

      Â C-- ðåàëèçîâàíû òàê íàçûâàåìûå àíîíèìíûå îáúåäèíåíèÿ. Ò.å.
  îáúåäèíåíèÿì íå ïðèñâàèâàåòñÿ èìÿ, à îáðàùåíèå ê ýëåìåíòàì îáúåäèíåíèÿ
  ïðîèñõîäèò êàê ê îáû÷íîé ïåðåìåííîé. Ïðèìåð:

  union
  {
    dword regEAX;
    word  regAX;
    byte  regAL;
  };  // îáúÿâèëè, ÷òî 3 ïåðåìåííûå ðàñïîëîæåíû ïî îäíîìó è òîìó æå
      // ôèçè÷åñêîìó àäðåñó

  void test()
  {
  	regEAX = 0x2C;
  	BL = regAL;	//â ðåãèñòðå BL îêàæåòñÿ çíà÷åíèå 0x2C
  }

      Îáúåäèíÿòü ìîæíî ïåðåìåííûå ðàçëè÷íûõ òèïîâ, ìàññèâû, ñòðîêîâûå
  ïåðåìåííûå è ñòðóêòóðû. Îáúåäèíåíèÿ ìîãóò áûòü ãëîáàëüíûìè è ëîêàëüíûìè, à
  òàêæå ðàñïîëàãàòüñÿ âíóòðè ñòðóêòóð (ïîêà â îáúåäèíåíèÿõ âíóòðè ñòðóêòóð
  íåëüçÿ èñïîëüçîâàòü ñòðóêòóðû). Ãëîáàëüíûå îáúåäèíåíèÿ ìîãóò áûòü
  èíèöèàëèçèðîâàííûìè è íåèíèöèàëèçèðîâàííûìè. ×òîáû ïîëó÷èòü
  èíèöèàëèçèðîâàííîå îáúåäèíåíèå äîñòàòî÷íî ïðîèíèöèàëèçèðîâàòü ëèøü ïåðâûé
  ýëåìåíò îáúåäèíåíèÿ. Åñëè æå ïåðâûé ýëåìåíò îáúåäèíåíèÿ íå èíèöèàëèçèðîâàí,
  à ñëåäóþùèå ýëåìåíòû èíèöèàëèçèðîâàíû, òî ýòî âûçîâåò ñîîáùåíèå êîìïèëÿòîðà
  îá îøèáêå.
<A href="#contents8" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=8.3>
  8.3 Êîìàíäû 'FROM' è 'EXTRACT'.
</A></B></FONT><FONT FACE="Courier">

       C-- åñòü î÷åíü îðèãèíàëüíûå êîìàíäû, êîòîðûõ íåò â äðóãèõ ÿçûêàõ. Ýòî
  <b>FROM è EXTRACT</b>.

      Êîìàíäà <b>FROM</b> èìååò ñèíòàêñèñ:

  <òèï_ïåðåìåííîé> <èìÿ_ïåðåìåííîé> = FROM <èìÿ_ôàéëà>;

      Âñòðåòèâ ýòó êîìàíäó ïðè êîìïèëÿöèè, êîìïèëÿòîð çàãðóçèò â âûõîäíîé
  ôàéë ñîäåðæèìîå ôàéëà <b>èìÿ_ôàéëà</b>, à <b>èìÿ_ïåðåìåííîé</b> áóäåò èäåíòèôèêàòîðîì
  íà÷àëà çàãðóæåííîãî êîäà. Âîò ïðèìåð èñïîëüçîâàíèÿ ýòîé êîìàíäû èç ôàéëà
  tinydraw.c--:

  byte palette[PALSIZE] = FROM "TINYDRAW.PAL";  // buffer for palette

     Êîìàíäà <b>EXTRACT</b> èìååò ñèíòàêñèñ:

  <òèï_ïåðåìåííîé> <èìÿ_ïåðåìåííîé> = EXTRACT <èìÿ_ôàéëà>, <íà÷àëî>, <äëèíà>;

      Âñòðåòèâ ýòó êîìàíäó ïðè êîìïèëÿöèè, êîìïèëÿòîð çàãðóçèò â âûõîäíîé
  ôàéë èç ôàéëà <b>èìÿ_ôàéëà</b> ÷èñëî áàéò ðàâíîå <b>äëèíà</b> ñî ñìåùåíèÿ <b>íà÷àëî</b>, à
  <b>èìÿ_ïåðåìåííîé</b> áóäåò èäåíòèôèêàòîðîì íà÷àëà çàãðóæåííîãî êîäà. Âîò ïðèìåð
  èñïîëüçîâàíèÿ ýòîé êîìàíäû:

  byte LIT128 = EXTRACT "8X16.FNT", 16*128, 16;
  byte LIT130 = EXTRACT "8X16.FNT", 16*130, 16;
<A href="#contents8" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.1>
9. Îïåðàòîðû.

  9.1 Óñëîâíûå èíñòðóêöèè.
</A></B></FONT><FONT FACE="Courier">

      Óñëîâíûå èíñòðóêöèè, ïðè ïîìîùè êîòîðûõ îñóùåñòâëÿåòñÿ âåòâëåíèå, òàêèå
  æå êàê â C.

      C-- èìååò äâå èíñòðóêöèè âåòâëåíèÿ. <b>if è IF</b>.

      <b>if</b> äåëàåò áëèçêèé óñëîâíûé ïåðåõîä, à <b>IF</b> äåëàåò êîðîòêèé
  (8-ðàçðÿäíûé) óñëîâíûé ïåðåõîä. <b>IF</b> âûïîëíÿåòñÿ áûñòðåå è ìîæåò ýêîíîìèòü
  äî 3 áàéò â ðàçìåðå êîäà, íî ìîæåò îñóùåñòâëÿòü ïåðåõîäû òîëüêî â ïðåäåëàõ
  127 áàéòîâ êîäà.

      Óñëîâíûå èíñòðóêöèè, êàê è â <b>C</b>, ìîãóò ñîïðîâîæäàòüñÿ, êàê îäèíî÷íîé
  êîìàíäîé, òàê è áëîêîì èç íåñêîëüêèõ êîìàíä, çàêëþ÷åííûõ â ôèãóðíûå ñêîáêè
  { è }. Óñëîâíûå èíñòðóêöèè èìåþò òå æå îãðàíè÷åíèÿ, ÷òî è óñëîâíûå
  âûðàæåíèÿ.

      Åñëè çà èíñòðóêöèåé <b>IF</b> ñëåäóåò áîëüøå ÷åì 127 áàéòîâ êîäà, òðàíñëÿòîð
  âûäàñò ñëåäóþùåå ñîîáùåíèå îá îøèáêå:

          IF jump distance too far, use if.

  Ýòî ìîæíî ïðîñòî èñïðàâèòü, çàìåíèâ â ýòîì ìåñòå èíñòðóêöèþ <b>IF</b> íà <b>if</b>.

      Êîìàíäû <b>else è ELSE</b> èñïîëüçóþòñÿ òî÷íî òàê æå, êàê â ÿçûêå <b>C</b>.
  Îòëè÷èå èõ â òîì, ÷òî <b>ELSE</b> èìååò îãðàíè÷åíèå àäðåñà ïåðåõîäà 127 áàéò,
  òàêîå æå êàê <b>IF. else</b> ãåíåðèðóåò êîä íà 1 áàéò äëèííåå, ÷åì <b>ELSE</b>.

      Êîìàíäû <b>IF è else</b>, à òàêæå <b>if è ELSE</b> ìîãóò ñâîáîäíî ñìåøèâàòüñÿ
  êàê â ñëåäóþùåì ïðèìåðå:

          if( x == 2 )
              WRITESTR("Two");
          ELSE{ WRITESTR("not two.");
                printmorestuff();
              }

      Åñëè çà èíñòðóêöèåé <b>ELSE</b> ñëåäóåò áîëüøå ÷åì 127 áàéòîâ êîäà,
  òðàíñëÿòîð âûäàñò ñëåäóþùåå ñîîáùåíèå îá îøèáêå:

          ELSE jump distance too far, use else.

      Ýòî ìîæíî ïðîñòî èñïðàâèòü, çàìåíèâ â ýòîì ìåñòå èíñòðóêöèþ <b>ELSE</b> íà
  <b>else</b>.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.2>
  9.2 Öèêëû do{} while.
</A></B></FONT><FONT FACE="Courier">

      Â òàêîì öèêëå áëîê êîäà, ñîñòàâëÿþùèé òåëî öèêëà, áóäåò ïîâòîðÿòüñÿ,
  ïîêà óñëîâíîå âûðàæåíèå èìååò çíà÷åíèå <b>èñòèííî</b>.

      Èñòèííîñòü óñëîâíîãî âûðàæåíèÿ ïðîâåðÿåòñÿ ïîñëå âûïîëíåíèÿ òåëà  öèêëà,
  ïîýòîìó áëîê êîäà áóäåò âûïîëíåí, ïî êðàéíåé ìåðå, îäèí ðàç.

   Ïðèìåð <b>do {} while</b> öèêëà, â êîòîðîì òåëî áóäåò èñïîëíåíî ïÿòü ðàç:

           count = 0;
           do {
              count++;
              WRITEWORD(count);
              WRITELN();
              } while (count < 5);

  Óñëîâíîå âûðàæåíèå â <b>do {} while</b> èíñòðóêöèè äîëæíî ñîîòâåòñòâîâàòü òåì æå
  ïðàâèëàì, ÷òî è â èíñòðóêöèÿõ <b>IF è if</b>.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.3>
  9.3 Öèêëû loop, LOOPNZ, loopnz.
</A></B></FONT><FONT FACE="Courier">

      Öèêëû <b>loop</b> ïîâòîðÿþò áëîê êîäà, ïîêà îïðåäåëåííàÿ ïåðåìåííàÿ èëè
  ðåãèñòð, âûïîëíÿþùèå ðîëü ñ÷åò÷èêà öèêëà, ñîäåðæàò çíà÷åíèå, îòëè÷íîå îò
  íóëÿ. Â êîíöå âûïîëíåíèÿ áëîêà êîäà, ñîñòàâëÿþùåãî òåëî öèêëà, óêàçàííàÿ
  ïåðåìåííàÿ èëè ðåãèñòð - óìåíüøàåòñÿ íà 1, à çàòåì ïðîâåðÿåòñÿ íà ðàâåíñòâî
  íóëþ. Åñëè ïåðåìåííàÿ (èëè ðåãèñòð) íå ðàâíà íóëþ, òåëî öèêëà áóäåò
  âûïîëíåíî ñíîâà, è ïðîöåññ ïîâòîðèòñÿ.

      Ïðèìåð èñïîëüçîâàíèÿ öèêëà <b>loop</b> â êîòîðîì â êà÷åñòâå ñ÷åò÷èêà öèêëà
  èñïîëüçîâàíà ïåðåìåííàÿ:

          count = 5;
          loop( count )
              {WRITEWORD(count);
              WRITELN();
              }

      Íàèáîëüøèé ýôôåêò äàåò èñïîëüçîâàíèå ðåãèñòðà CX äëÿ öèêëîâ ñ íåáîëüøèì
  òåëîì, ïîñêîëüêó â ýòîì ñëó÷àå êîìïèëÿòîðîì ãåíåðèðóåòñÿ öèêë ñ ïðèìåíåíèåì
  ìàøèííîé êîìàíäû <b>LOOP</b>.

      Åñëè ïåðåä ñòàðòîì ñ÷åò÷èê öèêëîâ ñîäåðæèò íóëåâîå çíà÷åíèå, êîìàíäû
  òåëà öèêëà áóäóò âûïîëíåíû ìàêñèìàëüíîå ÷èñëî ðàç äëÿ äèàïàçîíà ïåðåìåííîé
  (256 ðàç äëÿ 8-áèòíîãî ñ÷åò÷èêà (ïåðåìåííîé òèïà <b>byte</b> èëè <b>char</b>), 65536 äëÿ
  16-áèòíîãî ñ÷åò÷èêà (ïåðåìåííîé òèïà <b>word</b> èëè <b>int</b>), è 4294967296 äëÿ
  32-áèòíîãî ñ÷åò÷èêà (ïåðåìåííîé òèïà <b>dword</b> èëè <b>long</b>).

   Â ñëåäóþùåì ïðèìåðå öèêë áóäåò âûïîëíåí 256 ðàç:

           BH = 0;
           loop (BH)
              {
              }

      Åñëè â êîìàíäå íå óêàçàíî íèêàêîãî ñ÷åò÷èêà öèêëà, öèêë áóäåò
  ïðîäîëæàòüñÿ áåñêîíå÷íî.

      Ñëåäóþùèé ïðèìåð áóäåò íåïðåðûâíî âûâîäèòü ñèìâîë çâåçäî÷êè (*) íà
  ýêðàí:

          loop()
              WRITE('*');

      Ïðîãðàììèñò, åñëè õî÷åò, ìîæåò èñïîëüçîâàòü èëè èçìåíÿòü çíà÷åíèå
  ïåðåìåííîé ñ÷åò÷èêà öèêëà âíóòðè öèêëà.

      Íàïðèìåð, ñëåäóþùèé öèêë âûïîëíèòñÿ òîëüêî 3 ðàçà:

           CX = 1000;
           loop( CX )
              {
              IF( CX > 3 )
                  CX = 3;
              }

      Öèêë ìîæíî òàêæå ïðåðâàòü îïåðàòîðîì ðàçðûâà <b>BREAK</b> èëè <b>break</b>. Âîò
  òîò æå ïðèìåð ñ èñïîëüçîâàíèåì <b>BREAK</b>:

           CX = 1000;
           loop( CX )
              {
              IF( CX > 3 )
                  BREAK;
              }

      Öèêëû <b>LOOPNZ/loopnz</b> îòëè÷àþòñÿ îò öèêëà <b>loop</b>, òåì, ÷òî ïåðåä âõîäîì
  â öèêë ïðîâåðÿåòñÿ ðàâåíñòâî íóëþ àðãóìåíòà öèêëà. Åñëè àðãóìåíò ðàâåí
  íóëþ, òî òåëî öèêëà íè ðàçó íå âûïîëíèòñÿ (â öèêëå <b>loop</b> â ýòîì ñëó÷àå
  òåëî öèêëà âûïîëíèòñÿ ìàêñèìàëüíîå ÷èñëî ðàç). Öèêë <b>LOOPNZ</b> ïîëó÷àåòñÿ
  ìàêñèìàëüíî ýôôåêòèâíûì ïðè îïòèìèçàöèè íà ðàçìåð êîäà, åñëè â êà÷åñòâå
  ïàðàìåòðà-ñ÷åò÷èêà èñïîëüçóåòñÿ ðåãèñòð <b>CX/ECX</b>. Ïðè ýòîì êîìïèëÿòîð
  èñïîëüçóåò àññåìáëåðíûå èíñòðóêöèè <b>JCXZ/JECXZ è LOOP</b>.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.4>
  9.4 Öèêë while, WHILE.
</A></B></FONT><FONT FACE="Courier">

       Ñèíòàêñèñ:
    while(<âûðàæåíèå>)
         <îïåðàòîð>

      Öèêë âûïîëíÿåòñÿ äî òåõ ïîð, ïîêà çíà÷åíèå <b>âûðàæåíèÿ</b> íå ñòàíåò
  ëîæíûì. Âíà÷àëå âû÷èñëÿåòñÿ <b>âûðàæåíèå</b>. Åñëè <b>âûðàæåíèå</b> èçíà÷àëüíî ëîæíî,
  òî òåëî îïåðàòîðà <b>while</b> âîîáùå íå âûïîëíÿåòñÿ è óïðàâëåíèå ñðàçó
  ïåðåäàåòñÿ íà ñëåäóþùèé îïåðàòîð ïðîãðàììû.

      Öèêë <b>WHILE</b> àíàëîãè÷åí öèêëó <b>while</b>, íî ïðè ýòîì ãåíåðèðóåòñÿ êîä íà
  3 áàéòà êîðî÷å. Ðàçìåð ñãåíåðèðîâàííîãî êîäà â öèêëå <b>WHILE</b> äîëæåí áûòü
  ìåíüøå 127 áàéò.

    Ïðèìåðû:
  	while ( i < 20 ){
  		WRITEWORD(i);
  		i++;
  	}

  	WHILE (i < 20 ) @WRITEWORD(i);	//öèêë ëèáî áóäåò áåñêîíå÷íûì ëèáî íå
                                          //âûïîëíèòñÿ íè ðàçó
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.5>
  9.5 Öèêë for, FOR.
</A></B></FONT><FONT FACE="Courier">

       Ñèíòàêñèñ:
    for ([<íà÷àëüíîå âûðàæåíèå>]; [<óñëîâèå>]; [<ïðèðàùåíèå>])
      <îïåðàòîð>

      Öèêë <b>for</b> âûïîëíÿåòñÿ äî òåõ ïîð, ïîêà çíà÷åíèå <b>óñëîâèÿ</b> íå ñòàíåò
  ëîæíûì. Åñëè <b>óñëîâèå</b> èçíà÷àëüíî ëîæíî, òî òåëî îïåðàòîðà <b>for</b> âîîáùå íå
  âûïîëíÿåòñÿ è óïðàâëåíèå ñðàçó ïåðåäàåòñÿ íà ñëåäóþùèé îïåðàòîð ïðîãðàììû.
  <b>Íà÷àëüíîå âûðàæåíèå</b> è <b>ïðèðàùåíèå</b> îáû÷íî èñïîëüçóþòñÿ äëÿ èíèöèàëèçàöèè
  è ìîäèôèêàöèè ïàðàìåòðîâ öèêëà.

      Ïåðâûì øàãîì ïðè âûïîëíåíèè <b>for</b> ÿâëÿåòñÿ âû÷èñëåíèå <b>íà÷àëüíîãî
  âûðàæåíèÿ</b>, åñëè îíî èìååòñÿ. Çàòåì âû÷èñëÿåòñÿ <b>óñëîâèå</b> è ïðîèçâîäèòñÿ
  åãî îöåíêà ñëåäóþùèì îáðàçîì:

      1) Åñëè <b>óñëîâèå</b> èñòèííî, òî âûïîëíÿåòñÿ òåëî îïåðàòîðà. Çàòåì
  âû÷èñëÿåòñÿ <b>ïðèðàùåíèå</b> (åñëè îíî åñòü), è ïðîöåññ ïîâòîðÿåòñÿ.

      2) Åñëè <b>óñëîâèå</b> îïóùåíî, òî åãî çíà÷åíèå ïðèíèìàåòñÿ çà èñòèíó. Â
  ýòîì ñëó÷àå öèêë for ïðåäñòàâëÿåò áåñêîíå÷íûé öèêë, êîòîðûé ìîæåò
  çàâåðøèòüñÿ òîëüêî ïðè âûïîëíåíèè â åãî òåëå îïåðàòîðîâ <b>break, goto,
  return</b>.

      3) Åñëè <b>óñëîâèå</b> ëîæíî, òî âûïîëíåíèå öèêëà <b>for</b> çàêàí÷èâàåòñÿ è
  óïðàâëåíèå ïåðåäàåòñÿ ñëåäóþùåìó îïåðàòîðó.

      Öèêë <b>FOR</b> àíàëîãè÷åí öèêëó <b>for</b>, íî ïðè ýòîì ãåíåðèðóåòñÿ êîä íà 3
  áàéòà êîðî÷å. Ðàçìåð ñãåíåðèðîâàííîãî êîäà â öèêëå <b>FOR</b> äîëæåí áûòü ìåíüøå
  127 áàéò.

    Ïðèìåðû:
  	for(i=0;i<5;i++){
  		WRITESTR("ÑÒÐÎÊÀ ");
  		WRITEWORD(i);
  		WRITELN();
  	}

      ×èñëî <b>íà÷àëüíûõ âûðàæåíèé</b> è ÷èñëî <b>ïðèðàùåíèé</b> íå îãðàíè÷åíî. Êàæäûé
  îïåðàòîð â <b>íà÷àëüíûõ âûðàæåíèÿõ</b> è <b>ïðèðàùåíèÿõ</b> äîëæåí ðàçäåëÿòüñÿ
  çàïÿòîé. Ïðèìåð:

        for ( a=1, b=2 ; a<5 ; a++, b+=a ) {...

      Òàêæå åñòü âîçìîæíîñòü ëîãè÷åñêîãî îáúåäèíåíèÿ <b>óñëîâèé</b>. Îáúåäèíÿòü
  ìîæíî äî 32 óñëîâèé. Êàæäîå îáúåäèíÿåìîå óñëîâèå äîëæíî áûòü çàêëþ÷åíî â
  ñêîáêè. Ïðèìåð:

        for ( a=0 ; (a>=0) && (a<10) ; a++ ){...
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.6>
  9.6 Îïåðàòîð ïåðåêëþ÷àòåëü switch.
</A></B></FONT><FONT FACE="Courier">

      Ñèíòàêñèñ:
    switch(<âûðàæåíèå>){
      case <êîíñòàíòà>:
        <îïåðàòîð>
  	...
      case <êîíñòàíòà>:
        <îïåðàòîð>
  	...
      ...
      default:
        <îïåðàòîð>
    }
      Îïåðàòîð ïåðåêëþ÷àòåëü <b>switch</b> ïðåäíàçíà÷åí äëÿ âûáîðà îäíîãî èç
  íåñêîëüêèõ àëüòåðíàòèâíûõ ïóòåé âûïîëíåíèÿ ïðîãðàììû. Âûïîëíåíèå íà÷èíàåòñÿ
  ñ âû÷èñëåíèÿ çíà÷åíèÿ <b>âûðàæåíèÿ</b>. Ïîñëå ýòîãî óïðàâëåíèå ïåðåäàåòñÿ îäíîìó
  èç <b>îïåðàòîðîâ</b> òåëà ïåðåêëþ÷àòåëÿ.  òåëå ïåðåêëþ÷àòåëÿ ñîäåðæàòñÿ
  êîíñòðóêöèè: <b>case êîíñòàíòà:</b>, êîòîðûå ñèíòàêñè÷åñêè ïðåäñòàâëÿþò ñîáîé
  ìåòêè îïåðàòîðîâ. Îïåðàòîð, ïîëó÷àþùèé óïðàâëåíèå, - ýòî òîò îïåðàòîð,
  çíà÷åíèå êîíñòàíòû êîòîðîãî ñîâïàäàþò ñî çíà÷åíèåì <b>âûðàæåíèÿ</b>
  ïåðåêëþ÷àòåëÿ. Çíà÷åíèå <b>êîíñòàíòû</b> äîëæíî áûòü óíèêàëüíûì.

      Âûïîëíåíèå òåëà îïåðàòîðà-ïåðåêëþ÷àòåëÿ <b>switch</b> íà÷èíàåòñÿ ñ âûáðàííîãî
  òàêèì îáðàçîì îïåðàòîðà, è ïðîäîëæàåòñÿ äî êîíöà òåëà èëè äî òåõ ïîð, ïîêà
  êàêîé-ëèáî îïåðàòîð íå ïåðåäàñò óïðàâëåíèå çà ïðåäåëû òåëà.

    Îïåðàòîð, ñëåäóþùèé çà êëþ÷åâûì ñëîâîì <b>default</b>, âûïîëíÿåòñÿ, åñëè íè
  îäíà èç êîíñòàíò íå ðàâíà çíà÷åíèþ <b>âûðàæåíèÿ</b>. Åñëè <b>default</b> îïóùåíî, òî
  íè îäèí îïåðàòîð â òåëå ïåðåêëþ÷àòåëÿ íå âûïîëíÿåòñÿ, è óïðàâëåíèå
  ïåðåäàåòñÿ íà îïåðàòîð, ñëåäóþùèé çà <b>switch</b>.

      Äëÿ âûõîäà èç òåëà ïåðåêëþ÷àòåëÿ îáû÷íî èñïîëüçóåòñÿ îïåðàòîð ðàçðûâà
  <b>break (BREAK)</b>.

    Ïðèìåð:
    switch (i){
      case 'A':
        WRITE(i);
        i++;
        BREAK;
      case 32:
        WRITE('_');
        i++;
        BREAK;
      default:
        WRITE('i');
    }

      Îïåðàòîð <b>switch</b> ñåé÷àñ â êîìïèëÿòîðå ìîæåò ðåàëèçîâûâàòüñÿ òðåì
  ñïîñîáàìè: äâóõòàáëè÷íûì, òàáëè÷íûì è ìåòîäîì ïîñëåäîâàòåëüíûõ ïðîâåðîê.

      Òàáëè÷íûé ìåòîä ÿâëÿåòñÿ ñàìûì áûñòðûì, à ïðè áîëüøîì ÷èñëå îïåðàòîðîâ
  <b>case</b> è ïðè íåçíà÷èòåëüíîé ðàçíèöå ìåæäó ìàêñèìàëüíûì è ìèíèìàëüíûì
  çíà÷åíèÿìè <b>case</b> îí åùå ìîæåò áûòü è áîëåå êîìïàêòíûì. Íî ó íåãî åñòü è
  íåäîñòàòêè: â 16-áèòíîì ðåæèìå êîìïèëÿòîð âñåãäà èñïîëüçóåò ðåãèñòð BX, à â
  32-áèòíîì ðåæèìå, åñëè îïåðàíäîì <b>switch</b> ÿâëÿåòñÿ ðåãèñòð, òî åãî çíà÷åíèå
  áóäåò ðàçðóøåíî.

       ìåòîäå ïîñëåäîâàòåëüíûõ ïðîâåðîê áëîê ñðàâíåíèé íàõîäèòñÿ â íà÷àëå
  òåëà îïåðàòîðà <b>switch</b>, ýòî ïîçâîëÿåò èçáàâèòüñÿ îò 1-2 ëèøíèõ <b>jmp</b>. Íî
  êîìïèëÿòîð íå ìîæåò îïðåäåëèòü, êàêîé òèï ïåðåõîäà èñïîëüçîâàòü ïðè
  ïðîâåðêå çíà÷åíèé <b>case</b>. Ýòî áóäåò Âàøåé çàáîòîé. Åñëè ðàçìåð êîäà îò
  íà÷àëà òåëà îïåðàòîðà <b>switch</b> äî ìåñòà ðàñïîëîæåíèÿ îïåðàòîðà <b>case</b>
  ìåíüøå 128 áàéò, ìîæíî èñïîëüçîâàòü êîðîòêèé ïåðåõîä.  ýòîì ñëó÷àå Âû
  ìîæåòå óêàçàòü îïåðàòîð <b>CASE</b>, ÷òî ïðèâåäåò ê ãåíåðàöèè áîëåå êîìïàêòíîãî
  êîäà. Êîìïèëÿòîð â ïðåäóïðåæäåíèÿõ áóäåò Âàì ïîäñêàçûâàòü î âîçìîæíîñòè
  èñïîëüçîâàíèÿ îïåðàòîðîâ <b>CASE</b>. Èñïîëüçîâàíèå îïåðàòîðà <b>CASE</b> â ñëó÷àÿõ,
  êîãäà ðàçìåð áëîêà êîäà áîëåå 128 áàéò ïðèâåäåò ê âûäà÷å êîìïèëÿòîðîì
  ñîîáùåíèÿ îá îøèáêå.

     Ïðè äâóõòàáëè÷íîì ìåòîäå ñîçäàþòñÿ äâå òàáëèöû - òàáëèöà àäðåñîâ âõîäà â
  òåëî îïåðàòîðà <b>switch/SWITCH</b> è òàáëèöà çíà÷åíèé <b>case</b>. Ãåíåðèðóåòñÿ
  ïðîöåäóðà ñðàâíåíèÿ âõîäíîãî çíà÷åíèÿ ñî çíà÷åíèÿìè âî âòîðîé òàáëèöå. Åñëè
  åñòü ñîâïàäåíèå, òî äåëàåòñÿ ïåðåõîä ïî àäðåñó èç âòîðîé òàáëèöû. Ýòîò
  ìåòîä ÿâëÿåòñÿ ñàìûì ìåäëåííûì, íî ïðè áîëüøîì ÷èñëå çíà÷åíèé <b>case</b> (áîëåå
  15) îí ñòàíîâèòñÿ ñàìûì êîìïàêòíûì.

      Ïðè îïòèìèçàöèè êîäà íà ðàçìåð, êîìïèëÿòîð ïðåäâàðèòåëüíî âû÷èñëÿåò
  ðàçìåð êîäà, êîòîðûé ìîæåò áûòü ïîëó÷åí âñåìè ìåòîäàìè è ðåàëèçóåò ñàìûé
  êîìïàêòíûé. Ïðè îïòèìèçàöèè íà ñêîðîñòü ïðåèìóùåñòâî îòäàåòñÿ òàáëè÷íîìó
  ìåòîäó, åñëè ðàçìåð òàáëèöû ïîëó÷àåòñÿ íå ñëèøêîì áîëüøèì.

      Äëÿ îïåðàòîðà <b>switch</b> ââåäåíà òàêæå è êîðîòêàÿ åãî ôîðìà - <b>SWITCH</b>.
  Åå ìîæíî ïðèìåíÿòü â ñëó÷àå, åñëè ðàçìåð áëîêà êîäà ìåæäó íà÷àëîì òåëà
  îïåðàòîðà è îïåðàòîðîì <b>default</b> (åñëè îí îòñóòñòâóåò, òî êîíöîì òåëà
  îïåðàòîðà <b>switch</b>) ìåíüøå 128 áàéò. Î âîçìîæíîñòè èñïîëüçîâàíèÿ êîðîòêîé
  ôîðìû êîìïèëÿòîð áóäåò ñîîáùàòü â ïðåäóïðåæäåíèÿõ.

      Äëÿ îïåðàòîðà <b>case/CASE</b>, êîòîðûé ìîæåò èñïîëüçîâàòüñÿ òîëüêî â òåëå
  áëîêà îïåðàòîðà <b>switch/SWITCH</b>, ìîæíî óêàçûâàòü äèàïàçîí çíà÷åíèé. Ñíà÷àëà
  íàäî óêàçûâàòü ìåíüøåå çíà÷åíèå, çàòåì ïîñëå ìíîãîòî÷èÿ áîëüøåå. Ïðèìåð:

  switch(AX){
    case 1...5:
      WRITESTR("Range AX from 1 to 5");
      BREAK;
  };

      Ðàíüøå Âàì áû ïðèøëîñü ïèñàòü áîëåå ãðîìîçäêóþ êîíñòðóêöèþ:

  switch(AX){
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
      WRITESTR("Range AX from 1 to 5");
      BREAK;
  };

      Êðîìå òîãî, ÷òî íîâûé ôîðìàò çàïèñè áîëåå êîìïàêòåí è áîëåå ÷èòàáåëåí,
  íî åùå ïðè ýòîì êîìïèëÿòîð ñîçäàåò áîëåå êîìïàêòíûé è áûñòðûé êîä.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.7>
  9.7 Îïåðàòîð ïåðåõîäà goto, GOTO.
</A></B></FONT><FONT FACE="Courier">

       Ñèíòàêñèñ:
       goto <ìåòêà>;
  	.
  	.
  	.
  <ìåòêà>:

      Îïåðàòîð ïåðåõîäà <b>goto</b> ïåðåäàåò óïðàâëåíèå íà <b>îïåðàòîð</b> ïîìå÷åííûé
  <b>ìåòêîé</b>. Àíàëîãîì â àññåìáëåðå îïåðàòîðó goto ÿâëÿåòñÿ êîìàíäà <b>jmp near</b>.
  Àíàëîãîì â àññåìáëåðå îïåðàòîðó <b>GOTO</b> ÿâëÿåòñÿ êîìàíäà <b>jmp short</b>.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.8>
  9.8 Îïåðàòîð ðàçðûâà break, BREAK.
</A></B></FONT><FONT FACE="Courier">

      Îïåðàòîð ðàçðûâà <b>break</b> ïðåðûâàåò âûïîëíåíèå îïåðàòîðîâ <b>do-while,
  for, switch, while, loop, loopnz, LOOPNZ</b>. Îí ìîæåò ñîäåðæàòüñÿ
  òîëüêî â òåëå ýòèõ îïåðàòîðîâ. Óïðàâëåíèå ïåðåäàåòñÿ îïåðàòîðó, ñëåäóþùåìó
  çà ïðåðâàííûì öèêëîì.

      Îïåðàòîð <b>BREAK</b> àíàëîãè÷åí <b>break</b>, íî ïðè ýòîì ãåíåðèðóåòñÿ êîä íà 1
  áàéò êîðî÷å. Ðàçìåð ñãåíåðèðîâàííîãî êîäà îò ìåñòà ãäå ïðèìåíÿåòñÿ <b>BREAK</b>
  äî êîíöà öèêëà äîëæåí áûòü ìåíüøå 127 áàéò.

    Ïðèìåðû:
  	FOR (i=0; ; i++){
  		FOR(j=0; j < WIDTH; j++){
  			IF(i==5)BREAK;
  		}
  		IF(i==10)BREAK;
  	}
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.9>
  9.9 Îïåðàòîð ïðîäîëæåíèÿ continue, CONTINUE.
</A></B></FONT><FONT FACE="Courier">

      Îïåðàòîð ïðîäîëæåíèÿ <b>continue</b> ïåðåäàåò óïðàâëåíèå íà ñëåäóþùóþ
  èòåðàöèþ â öèêëàõ <b>do-while, for, while, loop, loopnz</b>. Â öèêëàõ
  <b>do-while, while, loop</b> ñëåäóþùàÿ èòåðàöèÿ íà÷èíàåòñÿ ñ âû÷èñëåíèÿ
  óñëîâíîãî âûðàæåíèÿ. Äëÿ öèêëà <b>for</b> ñëåäóþùàÿ èòåðàöèÿ íà÷èíàåòñÿ ñ
  âû÷èñëåíèÿ âûðàæåíèÿ ïðèðàùåíèÿ, à çàòåì ïðîèñõîäèò âû÷èñëåíèå óñëîâíîãî
  âûðàæåíèÿ.

    Îïåðàòîð <b>CONTINUE</b> àíàëîãè÷åí <b>continue</b>, íî ïðè ýòîì ãåíåðèðóåòñÿ êîä íà
  1 áàéò êîðî÷å. Ðàçìåð ñãåíåðèðîâàííîãî êîäà îò ìåñòà ãäå ïðèìåíÿåòñÿ
  <b>CONTINUE</b> äî íà÷àëà èòåðàöèè äîëæåí áûòü ìåíüøå 127 áàéò.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.10>
  9.10 Ëîãè÷åñêîå îáúåäèíåíèå óñëîâèé.
</A></B></FONT><FONT FACE="Courier">

      Ñóùåñòâóåò âîçìîæíîñòü ëîãè÷åñêîãî îáúåäèíåíèÿ ñðàâíåíèé â óñëîâèÿõ
  <b>IF è if</b>, öèêëàõ <b>do{}while, while{}, WHILE{}, for{} è FOR{}</b>.
  Êàæäîå ñðàâíåíèå ïðè èõ ëîãè÷åñêîì îáúåäèíåíèè äîëæíî áûòü çàêëþ÷åíî â
  ñêîáêè.  Îáúåäèíÿòü ìîæíî íå áîëåå 32 ñðàâíåíèé.

       îòëè÷èå îò <b>C</b> â C-- àíàëèç ëîãè÷åñêèõ îáúåäèíåíèé ïðîèñõîäèò ñëåâà
  íàïðàâî è âñå ëèøíèå ñêîáêè áóäóò âîñïðèíÿòû êîìïèëÿòîðîì êàê îøèáî÷íûå.
  Ýòî íåñêîëüêî ñíèæàåò ãèáêîñòü è âîçìîæíîñòè ïðèìåíåíèÿ ýòèõ îáúåäèíåíèé,
  íî òàêîâà òðàäèöèÿ è ôèëîñîôèÿ, çàëîæåííàÿ â C--.

      Ïðèìåð:

  	   if ( (a>3) && (b>4) || (c<8) ){

  Ò.å. åñëè ïðîèçâåñòè ðàñøèôðîâêó ýòîãî óñëîâèÿ, òî ïîëó÷èòñÿ ñëåäóþùåå:
  óñëîâèå âûïîëíèòñÿ åñëè a>3 è b>4 èëè a>3 è c<8.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.11>
  9.11 Ïåðåõîä ÷åðåç öèêëû.
</A></B></FONT><FONT FACE="Courier">

     Äëÿ îïåðàòîðîâ <b>BREAK, break, CONTINUE, continue</b> ââåäåíà
  ïîääåðæêà ÷èñëîâîãî ïàðàìåòðà, îïðåäåëÿþùåãî, ñêîëüêî öèêëîâ íàäî
  ïðîïóñòèòü, ïðåæäå ÷åì áóäåò âûïîëíåí ýòîò îïåðàòîð. Íàïðèìåð, ìû èìååì òðè
  âëîæåííûõ öèêëà:

  do{
     loop(CX){
        for(BX=0;BX<10;BX++){
  	 break;	  //ñòàíäàðòíûé îïåðàòîð
  	 break 0; //break ñ ïàðàìåòðîì - ïðîïóñòèòü 0 öèêëîâ
  	 break 1; //break ñ ïàðàìåòðîì - ïðîïóñòèòü 1 öèêë
  	 break 2; //break ñ ïàðàìåòðîì - ïðîïóñòèòü 2 öèêëà
        }
  LABL0:
     }
  LABL1:
  }while (DX!=0);
  LABL2:

       òðåòüåì öèêëå íàõîäèòñÿ ãðóïïà ðàçëè÷íûõ âàðèàíòîâ îïåðàòîðà <b>break</b>.
  Ïåðâûì ñòîèò ñòàíäàðòíûé îïåðàòîð <b>break</b>, ïðè âûïîëíåíèè êîòîðîãî
  óïðàâëåíèå áóäåò ïåðåäàâàòüñÿ çà ïðåäåëû òðåòüåãî öèêëà - íà ìåòêó <b>LABL0</b>.
  Âòîðûì èäåò îïåðàòîð <b>break 0</b>, ïðè âûïîëíåíèè êîòîðîãî áóäåò ïðîïóùåíî 0
  öèêëîâ è óïðàâëåíèå áóäåò ïåðåäàíî îïÿòü æå íà ìåòêó <b>LABL0</b>. Òàêèì
  îáðàçîì, çàïèñü <b>break è break 0</b> ÿâëÿþòñÿ ñèíîíèìàìè. Òðåòüèì èäåò
  îïåðàòîð <b>break 1</b>, ïðè âûïîëíåíèè êîòîðîãî áóäåò ïðîïóùåí îäèí öèêë è
  óïðàâëåíèå áóäåò ïåðåäàíî çà ïðåäåëû âòîðîãî öèêëà íà ìåòêó <b>LABL1</b>. Íó è
  íàêîíåö, ïîñëåäíèì èäåò îïåðàòîð <b>break 2</b>, ïðè âûïîëíåíèè êîòîðîãî
  êîìïèëÿòîð ïðîïóñòèò äâà öèêëà è ïåðåäàñò óïðàâëåíèå çà ïðåäåëû òðåòüåãî,
  íà ìåòêó <b>LABL2</b>. Ìåòêè â ýòîì ïðèìåðå ïðîñòàâëåíû äëÿ óäîáñòâà îáúÿñíåíèÿ.
  Íó è ÿ íàäåþñü, Âàì ïîíÿòíî, ÷òî çíà÷åíèå ïàðàìåòðà íå ìîæåò ïðåâûøàòü
  ÷èñëà öèêëîâ íàõîäÿùèõñÿ ïåðåä òåêóùèì. Òàê äëÿ îäèíî÷íîãî öèêëà ýòîò
  ïàðàìåòð ìîæåò ïðèíèìàòü ìàêñèìàëüíîå è åäèíñòâåííîå çíà÷åíèå - 0.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.12>
  9.12 Èíâåðòèðîâàíèå ôëàãà ïðîâåðêè óñëîâèé.
</A></B></FONT><FONT FACE="Courier">

      Èíâåðòèðîâàíèå ôëàãà ïðîâåðêè óñëîâèé â îïåðàöèÿõ ñðàâíåíèÿ <b>if/IF
  for/FOR while/WHILE</b> ïðîèñõîäèò ñ ïîìîùüþ ñèìâîëà <b>! - not</b>.

     Âûðàæåíè

    IF ( NOTCARRYFLAG )...   è  IF ( ! CARRYFLAG )...
    IF ( proc() == 0 )...    è IF ( ! proc() ) ...

  ÿâëÿþòñÿ ñèíîíèìàìè.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.13>
  9.13 Âû÷èñëåíèå âûðàæåíèÿ, à çàòåì ïðîâåðêà óñëîâèÿ.
</A></B></FONT><FONT FACE="Courier">

      Â îïåðàöèÿõ ñðàâíåíèÿ â ëåâîì îïåðàíäå òåïåðü äîïóñòèìî èñïîëüçîâàòü
  âû÷èñëåíèÿ âûðàæåíèÿ ñ ïðèñâàèâàíèåì è îïåðàöèè èíêðåìåíòà, äåêðåìåíòà.
  Íàïðèìåð:

    IF (i=a+2 != 0 )...
    IF ( i++ )...
    IF ( a-- )...
    IF ( i+=4 == 0 )...

      Âî âñåõ ýòèõ ïðèìåðàõ ñíà÷àëà ïðîèçîéäåò âû÷èñëåíèå âûðàæåíèÿ â ëåâîé
  ÷àñòè îïåðàöèè ñðàâíåíèÿ, à ïîòîì áóäåò ïðîèçâåäåíî ñðàâíåíèå ðåçóëüòàòà ñ
  ïðàâîé ÷àñòüþ âûðàæåíèÿ ñðàâíåíèÿ.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.14>
  9.14 Ïðîâåðêà áèòîâ ïðè îïåðàöèè ñðàâíåíèÿ.
</A></B></FONT><FONT FACE="Courier">

      Åñëè â ëåâîé ÷àñòè âûðàæåíèÿ ñðàâíåíèÿ íàïèñàíî: BX & 5, òî ïðè
  âû÷èñëåíèè âûðàæåíèÿ ñîäåðæèìîå ðåãèñòðà BX áóäåò èçìåíåíî èíñòðóêöèåé
  <b>and</b>. Íî èíîãäà âîçíèêàåò íåîáõîäèìîñòü â ïðîâåðêå áèòîâ áåç èçìåíåíèÿ
  ñîäåðæèìîãî ðåãèñòðà BX. Äëÿ ýòèõ öåëåé íàäî èñïîëüçîâàòü èíñòðóêöèþ
  <b>test</b>. Êàê æå óêàçàòü êîìïèëÿòîðó, â êàêèõ ñèòóàöèÿõ èñïîëüçîâàòü
  èíñòðóêöèþ <b>and</b>, à â êàêèõ <b>test</b>? Â ñòàíäàðòíûõ ÿçûêàõ <b>C</b> äëÿ ýòîãî
  èñïîëüçóåòñÿ ìåõàíèçì ïðèîðèòåòîâ - åñëè âûðàæåíèå çàêëþ÷åíî â ñêîáêè, òî
  ïðîèçâîäèòñÿ åãî âû÷èñëåíèå, åñëè íåò, òî ïðîèçâîäèòñÿ ïðîâåðêà. Íî C-- íå
  ïîääåðæèâàåò ïðèîðèòåòîâ. Äëÿ ðàçðåøåíèÿ ýòîé ïðîáëåìû â C-- ðåøåíî
  èñïîëüçîâàòü íåïîñðåäñòâåííî ñàìó èíñòðóêöèþ <b>test</b>. Âîò äîïóñòèìûå
  âàðèàíòû ñèíòàêñèñà:

  IF ( $test AX,5 )
  IF ( ! $test AX,5)
  IF ( asm test AX,5)
  IF ( ! asm { test AX,5 } )
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.15>
  9.15 Îïåðàòîð ïåðåñòàíîâêè.
</A></B></FONT><FONT FACE="Courier">

       C-- åñòü îïåðàòîð, êîòîðûé íå âñòðå÷àåòñÿ â äðóãèõ ÿçûêàõ, ýòî
  îïåðàòîð ïåðåñòàíîâêè. Îïåðàòîð ïåðåñòàíîâêè ìåíÿåò ìåñòàìè ñîäåðæèìîå äâóõ
  ïåðåìåííûõ. Ñèìâîëüíîå îáîçíà÷åíèå ýòîãî îïåðàòîðà ><. Ïåðåìåííûå ñ îáåèõ
  ñòîðîí îïåðàòîðà ïåðåñòàíîâêè äîëæíû èìåòü îäèíàêîâûé ðàçìåð, 8 áèò è 8
  áèò, 16 áèò è 16 áèò, èëè 32 áèòà è 32 áèòà.

    Âîò íåêîòîðûå ïðèìåðû:

      AX >< BX; // ñîõðàíÿåò çíà÷åíèå BX â AX è çíà÷åíèå AX â BX
      CH >< BL; // ìåíÿåò ìåñòàìè ñîäåðæèìîå ðåãèñòðîâ CH è BL
      dog >< cat; /* ìåíÿåò ìåñòàìè çíà÷åíèÿ ïåðåìåííîé dog è ïåðåìåííîé cat*/
      counter >< CX; // ìåíÿåò ìåñòàìè çíà÷åíèÿ ïåðåìåííîé counter
                     // è ñîäåðæèìîå ðåãèñòðà CX

      Åñëè ïåðåñòàíîâêà îñóùåñòâëÿåòñÿ ìåæäó äâóìÿ 8-ðàçðÿäíûìè ïåðåìåííûìè â
  ïàìÿòè, áóäåò ðàçðóøåíî ñîäåðæèìîå ðåãèñòðà AL. Åñëè ïåðåñòàíîâêà - ìåæäó
  äâóìÿ 16-ðàçðÿäíûìè ïåðåìåííûìè â ïàìÿòè, áóäåò ðàçðóøåíî ñîäåðæèìîå
  ðåãèñòðà AX. Åñëè ïåðåñòàíîâêà - ìåæäó äâóìÿ 32-ðàçðÿäíûìè ïåðåìåííûìè â
  ïàìÿòè, áóäåò ðàçðóøåíî ñîäåðæèìîå EAX.  ëþáîì äðóãîì ñëó÷àå, íàïðèìåð,
  ìåæäó ïåðåìåííîé â ïàìÿòè è ðåãèñòðîì, çíà÷åíèÿ âñåõ ðåãèñòðîâ áóäóò
  ñîõðàíåíû.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.16>
  9.16 Îïåðàòîð îòðèöàíèÿ.
</A></B></FONT><FONT FACE="Courier">

      C-- ïîääåðæèâàåò áûñòðûé ñèíòàêñèñ ñìåíû çíàêà ïåðåìåííîé - îïåðàòîð
  îòðèöàíèÿ. Ïîñòàâèâ <b>-</b> (çíàê ìèíóñ) ïåðåä èäåíòèôèêàòîðîì ïåðåìåííîé ïàìÿòè
  èëè ðåãèñòðà è <b>;</b> (òî÷êó ñ çàïÿòîé) ïîñëå èäåíòèôèêàòîðà, âû ñìåíèòå çíàê
  ïåðåìåííîé ïàìÿòè èëè ðåãèñòðà.

  Âîò íåêîòîðûå ïðèìåðû:

           -AX; // ðåçóëüòàò òîò æå, ÷òî è ïðè 'AX = -AX;' ,íî áûñòðåå.
           -tree; // òî æå ñàìîå, ÷òî 'tree = -tree;' ,íî áûñòðåå.
           -BH; // ìåíÿåò çíàê BH.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.17>
  9.17 Îïåðàòîð èíâåðñèè.
</A></B></FONT><FONT FACE="Courier">

      C-- ïîääåðæèâàåò áûñòðûé ñèíòàêñèñ âûïîëíåíèÿ ëîãè÷åñêîé èíâåðñèè
  çíà÷åíèÿ ïåðåìåííîé - îïåðàòîð èíâåðñèè. Ïîñòàâèâ <b>!</b> (âîñêëèöàòåëüíûé çíàê)
  ïåðåä èäåíòèôèêàòîðîì ïåðåìåííîé ïàìÿòè èëè ðåãèñòðîì è <b>;</b> (òî÷êó ñ
  çàïÿòîé) ïîñëå èäåíòèôèêàòîðà, âû âûïîëíèòå ëîãè÷åñêóþ (âûïîëíèòñÿ
  àññåìáëåðíàÿ êîìàíäà NOT) èíâåðñèþ òåêóùåãî çíà÷åíèÿ ïåðåìåííîé. Âîò
  íåêîòîðûå ïðèìåðû:

          !AX; // òî æå ñàìîå, ÷òî ' AX ^ = 0xFFFF; ' íî áûñòðåå.
          !node; // çàìåíÿåò çíà÷åíèå 'node' åãî ëîãè÷åñêîé èíâåðñèåé.
          !CL; // òî æå ñàìîå, ÷òî ' CL ^ = 0xFF ' íî áûñòðåå.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.18>
  9.18 Ñïåöèàëüíûå óñëîâíûå âûðàæåíèÿ.
</A></B></FONT><FONT FACE="Courier">

      C-- ïîääåðæèâàåò âîñåìü ñïåöèàëüíûõ óñëîâíûõ âûðàæåíèé:

           CARRYFLAG
           NOTCARRYFLAG
           OVERFLOW
           NOTOVERFLOW
           ZEROFLAG
           NOTZEROFLAG
           MINUSFLAG
           PLUSFLAG

      Îíè ìîãóò èñïîëüçîâàòüñÿ âìåñòî ëþáûõ íîðìàëüíûõ óñëîâíûõ âûðàæåíèé.
  Åñëè Âû æåëàåòå, íàïðèìåð, âûïîëíèòü áëîê êîäà òîëüêî åñëè óñòàíîâëåí ôëàã
  ïåðåíîñà, Âàì ñëåäóåò èñïîëüçîâàòü ñëåäóþùóþ ïîñëåäîâàòåëüíîñòü êîìàíä:

           IF( CARRYFLAG )
           {
           // çäåñü âû ÷åãî-òî äåëàåòå
           }

      Åñëè Âû æåëàåòå íåïðåðûâíî âûïîëíÿòü áëîê êîäà äî òåõ ïîð, ïîêà íå
  óñòàíîâèòñÿ ôëàã ïåðåïîëíåíèÿ, Âàì ñëåäóåò èñïîëüçîâàòü íå÷òî ïîäîáíîå
  ñëåäóþùåìó êóñêó êîäà:

          do {
              // çäåñü âû îïÿòü ÷åãî-òî äåëàåòå
              } while( NOTOVERFLOW );
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.19>
  9.19 Ñèìâîë $ - âñòàâëÿåò òåêóùèé àäðåñ ïðîãðàììû.
</A></B></FONT><FONT FACE="Courier">

      Ñèìâîë <b>$</b>, êðîìå òîãî, ÷òî ÿâëÿåòñÿ ïðèçíàêîì ïîñëåäóþùåé àññåìáëåðíîé
  èíñòðóêöèè, â ÿçûêå C--, êàê è â ÿçûêå Assembler ìîæåò óêàçûâàòü òåêóùèé
  àäðåñ (ñìåùåíèå) êîìïèëèðóåìîé ïðîãðàììû. Íî â C-- îí èìåë îãðàíè÷åííûå
  âîçìîæíîñòè. Îí ìîã áûòü èñïîëüçîâàí ëèøü êàê àðãóìåíò â îïåðàòîðàõ
  <b>GOTO/goto</b> è àññåìáëåðíûõ èíñòðóêöèÿõ <b>DW/DD/JMP</b>.

      Ýòîò ñèìâîë ìîæåò íàõîäèòüñÿ â ëþáîì ìåñòå âû÷èñëÿåìîãî ÷èñëîâîãî
  âûðàæåíèÿ è ìîæåò áûòü ïðèìåíåí â ëþáîì ìåñòå ñîâìåñòíî ñ äðóãèìè ÷èñëîâûìè
  âûðàæåíèÿìè.

  Ïðèìåðû ïðèìåíåíèÿ:

  DW #main-$	//çàïèñàòü ðàññòîÿíèå îò ïðîöåäóðû main äî òåêóùåãî ìåñòà
  GOTO $+2;	//ïåðåéòè ïî àäðåñó íà 2 áîëüøå, ÷åì òåêóùèé àäðåñ
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.20>
  9.20 Êëþ÷åâîå ñëîâî static è îïåðàòîð ::.
</A></B></FONT><FONT FACE="Courier">

      Åñëè ïåðåä îáúÿâëåíèåì ãëîáàëüíîé ïåðåìåííîé, ñòðóêòóðû èëè ïðîöåäóðû
  óêàçàòü ñëîâî <b>static</b>, òî ýòè ïåðåìåííàÿ, ñòðóêòóðà èëè ïðîöåäóðà áóäóò
  äîñòóïíû òîëüêî â òîì ôàéëå, â êîòîðîì îíè áûëè îáúÿâëåíû. Ò.å. åñëè Âû
  âêëþ÷èòå ýòîò ôàéë â äðóãîé äèðåêòèâîé <b>include</b>, òî ïåðåìåííûå îáúÿâëåííûå
  âî âêëþ÷àåìîì ôàéëå ñî ñëîâîì <b>static</b> íå áóäóò äîñòóïíû â îñíîâíîì ôàéëå,
  è Âû ìîæåòå â îñíîâíîì ôàéëå îáúÿâèòü äðóãèå ïåðåìåííûå ñ òàêèìè æå
  èìåíàìè.

      Åñëè Âû ïðèìåíèòå ñëîâî <b>static</b> ïðè îáúÿâëåíèè ëîêàëüíîé ïåðåìåííîé â
  ïðîöåäóðå, òî ïàìÿòü äëÿ ýòîé ïåðåìåííîé áóäåò âûäåëåíà íå â ñòåêå, à â
  îáëàñòè äàííûõ ïðîöåäóðû. Íî ýòà ïåðåìåííàÿ áóäåò äîñòóïíà òîëüêî âíóòðè
  ïðîöåäóðû, â êîòîðîé îíà áûëà îáúÿâëåíà. Ïðèìåíåíèå <b>static</b> ê ëîêàëüíûì
  ïåðåìåííûì äàåò âîçìîæíîñòü ñîõðàíÿòü çíà÷åíèå ïåðåìåííîé äëÿ ñëåäóþùåãî
  âõîäà â ïðîöåäóðó.

      Ñëîâî <b>static</b> ìîæíî ïðèìåíÿòü ê ëþáîìó ãëîáàëüíîìó îáúåêòó
  (ïåðåìåííîé, ñòðóêòóðå, ïðîöåäóðå). Äëÿ ëîêàëüíîãî èñïîëüçîâàíèÿ ýòî ñëîâî
  ìîæíî ïðèìåíÿòü òîëüêî ê ïåðåìåííûì.

      Åñëè â Âàøåé ïðîãðàììå åñòü ãëîáàëüíàÿ è ëîêàëüíàÿ ïåðåìåííàÿ ñ
  îäèíàêîâûìè èìåíàìè, òî â ïðîöåäóðå, â êîòîðîé îáúÿâëåíà ýòà ëîêàëüíàÿ
  ïåðåìåííàÿ, Âû íå èìåëè äîñòóïà ê îäíîèìåííîé ãëîáàëüíîé ïåðåìåííîé.
  Ïðèìåíèâ ïåðåä èìåíåì ïåðåìåííîé îïåðàòîð <b>::</b>, Âû ïîëó÷èòå äîñòóï ê
  ãëîáàëüíîé ïåðåìåííîé.  Ïðèìåð:

  int var;  //îáúÿâëÿåì ãëîáàëüíóþ ïåðåìåííóþ

  void proc()
  int var;  //îáúÿâëÿåì ëîêàëüíóþ ïåðåìåííóþ ñ èìåíåì óæå ñóùåñòâóþùåé
            //ãëîáàëüíîé ïåðåìåííîé
  {
    (E)AX=var;	//èìååì äîñòóï òîëüêî ê ëîêàëüíîé ïåðåìåííîé
    (E)AX=::var;  //à òàê ìîæíî ïîëó÷èòü äîñòóï ê ãëîáàëüíîé ïåðåìåííîé
  }
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.21>
  9.21 Îïåðàòîð sizeof.
</A></B></FONT><FONT FACE="Courier">

      Îïåðàöèÿ <b>sizeof</b> îïðåäåëÿåò ðàçìåð ïàìÿòè, êîòîðûé ñîîòâåòñòâóåò îáúåêòó
  èëè òèïó. Îïåðàöèÿ sizeof èìååò ñëåäóþùèé âèä:

   sizeof (<èìÿ òèïà>)

      Ðåçóëüòàòîì îïåðàöèè <b>sizeof</b> ÿâëÿåòñÿ ðàçìåð ïàìÿòè â áàéòàõ,
  ñîîòâåòñòâóþùèé çàäàííîìó îáúåêòó èëè òèïó.

      Â C-- îïåðàòîð <b>sizeof</b> ìîæíî ïðèìåíÿòü ê ïåðåìåííûì, ðåãèñòðàì, òèïàì
  ïåðåìåííûõ, ñòðóêòóðàì, ïðîöåäóðàì, òåêñòîâûì ñòðîêàì è ôàéëàì.

      Åñëè îïåðàöèÿ <b>sizeof</b> ïðèìåíÿåòñÿ ê òèïó ñòðóêòóðû, òî ðåçóëüòàòîì
  ÿâëÿåòñÿ ðàçìåð òåãà äàííîé ñòðóêòóðû.

      Åñëè îïåðàöèÿ <b>sizeof</b> ïðèìåíÿåòñÿ ê òåêñòîâîé ñòðîêå, òî ðåçóëüòàòîì
  îïåðàöèè ÿâëÿåòñÿ ðàçìåð ñòðîêè ïëþñ çàâåðøàþùèé íóëü. Íàïðèìåð:

   sizeof ("Test")

  ðåçóëüòàòîì ýòîé îïåðàöèè áóäåò ÷èñëî 5. Åñëè Âû íàïèøèòå òàêóþ
  êîíñòðóêöèþ:

  char a="Test";

   sizeof(a)

  òî ðåçóëüòàòîì áóäåò 5 - ðàçìåð ïàìÿòè, îòâåäåííûé äëÿ ïåðåìåííîé a.

      Ïðè èñïîëüçîâàíèè îïåðàòîðà <b>sizeof</b> ñ èìåíåì ñòðóêòóðû âñòàâëÿåò
  ôàêòè÷åñêèé ðàçìåð ïàìÿòè, çàíèìàåìûé ñòðóêòóðîé. Ýòî îñîáåííî âàæíî, åñëè
  Âû îáúÿâèëè ìàññèâ ñòðóêòóð.

      Îïåðàòîð <b>sizeof</b> ìîæíî ïðèìåíÿòü è ê èìåíè îïðåäåëåííîé ðàíåå
  ïðîöåäóðû. Ðåçóëüòàòîì áóäåò ðàçìåð ýòîé ïðîöåäóðû. Íî äëÿ äèíàìè÷åñêèõ
  ïðîöåäóð âñåãäà áóäåò íîëü.

      Îïåðàöèþ <b>sizeof</b> ìîæíî ïðèìåíÿòü è ê ôàéëàì. Ýòî áûâàåò î÷åíü ïîëåçíûì
  ïðè èñïîëüçîâàíèè îïåðàòîðà <b>FROM</b>, íî ìîæåò ïðèìåíÿòüñÿ è â äðóãèõ ñëó÷àÿõ.
  Ïðèìåð ïðèìåíåíèÿ îïåðàòîðà <b>sizeof</b> ê ôàéëàì:

   sizeof ( file "filename.dat" )

  Ðåçóëüòàòîì ýòîé îïåðàöèè áóäåò ðàçìåð ôàéëà "filename.dat".
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=9.22>
  9.22 Ìåòêè ïåðåõîäà.
</A></B></FONT><FONT FACE="Courier">

      Ìåòêè ïåðåõîäà ïðèìåíÿþòñÿ äëÿ óêàçàíèÿ íà÷àëüíûõ òî÷åê ó÷àñòêîâ êîäà,
  èñïîëüçóåìûõ êîìàíäàìè ïåðåõîäà âñòðîåííîãî àññåìáëåðà è îïåðàòîðàìè
  <b>goto/GOTO</b>.

      Èìåþòñÿ äâà òèïà ìåòîê ïåðåõîäà: ãëîáàëüíûå è ëîêàëüíûå. Ãëîáàëüíûå
  ìåòêè, êàê ñëåäóåò èç íàçâàíèÿ, ýòî ìåòêè, êîòîðûå âèäèìû èç ëþáîãî ìåñòà â
  ïðîãðàììå. Ëîêàëüíûå ìåòêè âèäíû òîëüêî â ïðåäåëàõ ñâîåãî ïðîöåäóðíîãî
  áëîêà, è íå îïðåäåëåíû çà åãî ïðåäåëàìè.

      Ìåòêè îïðåäåëÿþòñÿ èäåíòèôèêàòîðîì, îêàí÷èâàþùèìèñÿ äâîåòî÷èåì. Åñëè
  èäåíòèôèêàòîð ñîäåðæèò õîòÿ áû îäèí ñèìâîë ñòðî÷íûõ áóêâ (áóêâ íèæíåãî
  ðåãèñòðà, ìàëåíüêèõ áóêâ), ýòî ãëîáàëüíàÿ ìåòêà ïåðåõîäà, â ïðîòèâíîì
  ñëó÷àå, ýòî ëîêàëüíàÿ ìåòêà ïåðåõîäà.

      Ãëîáàëüíûå ìåòêè ïåðåõîäà íå äîëæíû èñïîëüçîâàòüñÿ âíóòðè äèíàìè÷åñêèõ
  ïðîöåäóð; òàì ìîæíî èñïîëüçîâàòü òîëüêî ëîêàëüíûå ìåòêè. Ýòî âàæíî ïîìíèòü,
  ïîñêîëüêó, èç-çà ïðèìåíåíèÿ òàêîãî ñðåäñòâà êàê ìàêðîêîìàíäû, äèíàìè÷åñêàÿ
  ïðîöåäóðà ìîæåò ïðèñóòñòâîâàòü â íåñêîëüêèõ ìåñòàõ êîäà, ÷òî áóäåò
  îçíà÷àòü, ÷òî ìåòêå ñîîòâåòñòâóåò áîëüøå ÷åì îäèí àäðåñ.

      Ìåòêè âíå ïðîöåäóð ôàêòè÷åñêè ðàñïîëàãàþòñÿ â îáëàñòè äàííûõ ïðîãðàììû.
  Åñëè äàííûå è êîä íàõîäÿòñÿ â îäíîì ñåãìåíòå (à èìåííî òàê îðãàíèçîâàííà
  ïðîãðàììà, íàïèñàííàÿ íà C--), òî ìåòêè âíå ïðîöåäóð ñòàíîâÿòñÿ ïðîñòûì è
  ýôôåêòèâíûì ìåòîäîì äëÿ ïîëó÷åíèÿ ðàññòîÿíèé ìåæäó ÷àñòÿìè ïðîãðàììû. Â
  êà÷åñòâå èìåí äëÿ ìåòîê âíå ïðîöåäóð ìîãóò áûòü èñïîëüçîâàíû óíèêàëüíûå
  èäåíòèôèêàòîðû, â êîòîðûõ ìîæíî èñïîëüçîâàòü áîëüøèå, ìàëåíüêèå è ñìåñü
  áîëüøèõ è ìàëåíüêèõ áóêâ.
<A href="#contents9" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=10.1>
10. Àññåìáëåð.

  10.1 Ïîääåðæêà êîìàíä àññåìáëåðà.
</A></B></FONT><FONT FACE="Courier">

      Âñòðîåííûé â C-- àññåìáëåð ïîääåðæèâàåò âñå èíñòðóêöèè 8088/8086,
  80286, 80386, 80486, Pentium, Pentium II è Pentium III ïðîöåññîðîâ.

      Âñå èíñòðóêöèè âñòðîåííîãî àññåìáëåðà äîëæíû íà÷èíàòüñÿ ñ ñèìâîëà
  äîëëàðà <b>$</b>. Ïîääåðæèâàåòñÿ òàêæå êëþ÷åâîå ñëîâî <b>asm</b>, êîòîðîå ÿâëÿÿñü
  ñèíîíèìîì ê ñèìâîëó äîëëàðà, åùå è ïîääåðæèâàåò îáúåäèíåíèå àññåìáëåðíûõ
  èíñòðóêöèé â áëîêè.
<A href="#contents10" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=10.2>
  10.2 Êëþ÷åâîå ñëîâî asm.
</A></B></FONT><FONT FACE="Courier">

      Êëþ÷åâîå ñëîâî <b>asm</b> ÿâëÿåòñÿ ñèíîíèìîì ê <b>$</b> - ïðåôèêñ àññåìáëåðíîé
  êîìàíäû. Ïîñëå ñëîâà asm ìîæíî ïèñàòü áëîê àññåìáëåðíûõ êîìàíä.  Ïðèìåð:

  	asm {
  		.
  		.
  		push AX
  labl:
  		push BX
  		mov AX,0x1234
  		jmp short labl
  		.
  		.
  		.
  	}

    Ìåòêè âíóòðè áëîêà àññåìáëåðíûõ êîìàíä äîïóñòèìû.
<A href="#contents10" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=10.3>
  10.3 Ïðåôèêñ dup - ïîâòîðåíèå èíñòðóêöèé DB/DW/DD.
</A></B></FONT><FONT FACE="Courier">

      Äëÿ àññåìáëåðíûõ èíñòðóêöèè <b>DB, DW, DD</b> ââåäåíà âîçìîæíîñòü èñïîëüçîâàòü
  ïðåôèêñ ïîâòîðåíèé <b>dup</b>. Ïðèìåíåíèå ýòîãî ïðåôèêñà èìååò ñëåäóþùèé
  ñèíòàêñèñ:

    $DW NUMREP dup VALTOREP

  NUMREP - ÷èñëî ïîâòîðîâ èíñòðóêöèè DW.
  VALTOREP - âåëè÷èíà, êîòîðàÿ áóäåò ïîâòîðåíà NUMREP ðàç.

       îòëè÷èå îò àíàëîãà ýòîãî ïðåôèêñà èç àññåìáëåðà ïîâòîðÿåìóþ âåëè÷èíó
  çàêëþ÷àòü â ñêîáêè íåëüçÿ.
<A href="#contents10" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=10.4>
  10.4 Èíñòðóêöèè ïðîöåññîðà Pentium III.
</A></B></FONT><FONT FACE="Courier">

      Â êîìïèëÿòîð äîáàâëåíà ïîääåðæêà 19 íîâûõ èíñòðóêöèé MMX ðàñøèðåíèÿ

  MASKMOVQ   mmx,mmx
  MOVNTQ     m64,mmx
  PAVGB      mmx,mmx/m64
  PAVGW      mmx,mmx/m64
  PEXTRW     r32,mmx,i8
  PINSRW     mmx,r32/m16,i8
  PMAXUB     mmx,mmx/m64
  PMAXSW     mmx,mmx/m64
  PMINUB     mmx,mmx/m64
  PMINSW     mmx,mmx/m64
  PMOVMSKB   r32,mmx
  PMULHUW    mmx,mmx/m64
  PREFETCHT0 mem
  PREFETCHT1 mem
  PREFETCHT2 mem
  PREFETCHNTA mem
  SFENCE
  PSADBW     mmx,mmx/m64
  PSHUFW     mmx,mmx/m64,i8

      è 46 èíñòðóêöèé SSE ðàñøèðåíèÿ.

  ADDPS      xmm,m128/xmm
  ADDSS      xmm,xmm/m32
  ANDNPS     xmm,xmm/m128
  ANDPS      xmm,xmm/m128
  COMISS     xmm,xmm/m32
  DIVPS      xmm,m128/xmm
  DIVSS      xmm,xmm/m32
  MAXPS      xmm,m128/xmm
  MAXSS      xmm,xmm/m32
  MINPS      xmm,m128/xmm
  MINSS      xmm,xmm/m32
  MULPS      xmm,m128/xmm
  MULSS      xmm,xmm/m32
  ORPS       xmm,xmm/m128
  RCPPS      xmm,xmm/m128
  RCPSS      xmm,xmm/m32
  RSQRTPS    xmm,xmm/m128
  RSQRTSS    xmm,xmm/m32
  SQRTPS     xmm,m128/xmm
  SQRTSS     xmm,xmm/m32
  SUBPS      xmm,m128/xmm
  SUBSS      xmm,xmm/m32
  UCOMISS    xmm,xmm/m32
  UNPCKHPS   xmm,xmm/m128
  UNPCKLPS   xmm,xmm/m128
  XORPS      xmm,xmm/m128
  CMPPS      xmm,xmm/m128,i8
  CMPSS      xmm,xmm/m32,i8
  SHUFPS     xmm,xmm/m128,i8
  CVTPI2PS   xmm,m64/mmx
  CVTSI2SS   xmm,m32/r32
  CVTPS2PI   mmx,m128/xmm
  CVTTPS2PI  mmx,xmm/m128
  CVTSS2SI   r32,xmm/m128
  CVTTSS2SI  r32,xmm/m128
  LDMXCSR    m32
  STMXCSR    m32
  MOVHLPS    xmm,xmm
  MOVLHPS    xmm,xmm
  MOVMSKPS   r32,xmm
  MOVNTPS    m128,xmm
  MOVAPS     m128/xmm,xmm/m128
  MOVSS      xmm/m32,xmm/m32
  MOVUPS     xmm/m128,m128/xmm
  MOVHPS     xmm/m64,m64/xmm
  MOVLPS     xmm/m64,m64/xmm

      Ìíîãèå èç ýòèõ èíñòðóêöèé ìîãóò èñïîëüçîâàòü â êà÷åñòâå îïåðàíäà
  64-áèòíûå è 128-áèòíûå ÿ÷åéêè ïàìÿòè. Êîìïèëÿòîð C-- ñåé÷àñ ìîæåò ðàáîòàòü
  òîëüêî ñ 32-áèòíûìè ïåðåìåííûìè. Ïîýòîìó äëÿ èíñòðóêöèé èñïîëüçóþùèõ â
  êà÷åñòâå îïåðàíäà ÿ÷åéêè ïàìÿòè ðàçìåðîì áîëüøå 32-áèò ìîæíî èñïîëüçîâàòü
  ïåðåìåííûå ëþáûõ òèïîâ. Êîìïèëÿòîð íå áóäåò âûäàâàòü íà ýòî ñîîáùåíèé îá
  îøèáêå, áóäåò èñïîëüçîâàí àäðåñ ýòîé ïåðåìåííîé, à ñàìà èíñòðóêöèÿ áóäåò
  èñïîëüçîâàòü íóæíîå åé ÷èñëî áèòîâ ïàìÿòè, íà÷èíàÿ ñ àäðåñà óêàçàííîé
  ïåðåìåííîé. Íàïðèìåð:

      Äëÿ èíñòðóêöèè <b>movaps</b> îäèí èç îïåðàíäîâ ìîæåò áûòü 128-áèòíîé
  ÿ÷åéêîé ïàìÿòè. Äëÿ ýòîé èíñòðóêöèè äîïóñòèìû ñëåäóþùèé ñèíòàêñèñ:

  byte  var8_128[16];
  word  var16_128[8];
  dword var32_128[4];

  void proc()
  {
  asm{
    movaps var8_128,xmm0 //â ìàññèâ èç 16 áàéò áóäåò çàïèñàíî ñîäåðæèìîå XMM0
    movaps xmm1,var16_128	//â XMM1 áóäåò çàïèñàíî ñîäåðæèìîå 8 ñëîâ
    movaps var32_128,xmm1 //â ìàññèâ èç 4 äâîéíûõ ñëîâ áóäåò çàïèñàíî XMM1
  }
  }
<A href="#contents10" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.1>
11. Ïðîöåäóðû.

  11.1 Òèïû ïðîöåäóð, ôóíêöèé è ìàêðîêîìàíä.
</A></B></FONT><FONT FACE="Courier">

      Ñåé÷àñ C-- ïîääåðæèâàåò 4 òèïà âûçîâà ïðîöåäóð: <b>cdecl, pascal, stdcall
  è fastcall</b>. Âîò êðàòêèå õàðàêòåðèñòèêè ýòèõ òèïîâ âûçîâîâ ïðîöåäóð:

  <b><font color="Red">cdecl</font></b>  Ýòîò òèï âûçîâà ïðîöåäóð ÿâëÿåòñÿ ïî óìîë÷àíèþ äëÿ ÿçûêà <b>Ñ</b>. Îí
  õàðàêòåðèçóåòñÿ òåì, ÷òî ïàðàìåòðû ïðîöåäóðû ïåðåäàþòñÿ â ïîðÿäêå îáðàòíîì
  èõ çàïèñè. Î÷èñòêà ñòåêà îò ïàðàìåòðîâ ïðîèçâîäèòñÿ ïîñëå çàâåðøåíèÿ ðàáîòû
  ïðîöåäóðû. Ýòîò ñïîñîá âûçîâà ïðîöåäóð î÷åíü óäîáåí äëÿ ïðîöåäóð ñ
  ïåðåìåííûì ÷èñëîì ïàðàìåòðîâ.

  <b><font color="Red">pascal</font></b>  Ýòîò òèï âûçîâà ïðåäïîëàãàåò, ÷òî ïàðàìåòðû ïåðåäàþòñÿ â òîì
  ïîðÿäêå, â êîòîðîì îíè çàïèñàíû â ïðîãðàììå. Îñâîáîæäåíèå ñòåêà îò
  ïàðàìåòðîâ ïðîèçâîäèò ñàìà âûçûâàåìàÿ ïðîöåäóðà. Ýòîò òèï âûçîâà ÿâëÿåòñÿ
  áîëåå êîìïàêòíûì, ÷åì <b>cdecl</b>.

  <b><font color="Red">stdcall</font></b>  Ýòîò òèï âûçîâà ÿâëÿåòñÿ ãèáðèäîì ïåðâûõ äâóõ. Ïàðàìåòðû
  ïåðåäàþòñÿ ïðîöåäóðå â ïîðÿäêå îáðàòíîì, òîìó â êîòîðîì îíè çàïèñàíû â
  ïðîãðàììå. Îñâîáîæäåíèå ñòåêà îò ïàðàìåòðîâ ïðîèçâîäèòñÿ â ñàìîé âûçûâàåìîé
  ïðîöåäóðå.

  <b><font color="Red">fastcall</font></b>  Ýòîò òèï âûçîâà ïðîöåäóð ïðåäïîëàãàåò ÷òî ïåðåäà÷à ïàðàìåòðîâ
  ïðîöåäóðå ïðîèçâîäèòñÿ ÷åðåç ðåãèñòðû, òåì ñàìûì îòïàäàåò íåîáõîäèìîñòü
  îñâîáîæäåíèÿ ñòåêà îò ïàðàìåòðîâ. Äëÿ ýòîãî òèïà âûçîâà ïðîöåäóðû
  ñóùåñòâóþò îãðàíè÷åíèÿ ïî ÷èñëó ïåðåäàâàåìûõ ïàðàìåòðîâ. Äëÿ C ýòî òðè
  ïàðàìåòðà, à äëÿ C-- øåñòü.  C-- ïàðàìåòðû ïåðåäàþòñÿ ïî óìîë÷àíèþ â
  ñëåäóþùåì ïîðÿäêå: <b>1-é - AX/EAX, 2-é - BX/EBX, 3 - CX/ECX, 4 - DX/EDX, 5 -
  DI/EDI, 6 - SI/ESI</b>. Ïàðàìåòðû òèïîâ char èëè byte ìîãóò ïåðåäàâàòüñÿ â
  êîëè÷åñòâå íå áîëåå 4 èëè òîëüêî â ïåðâûõ 4 ðåãèñòðàõ: <b>1 - AL, 2 - BL, 3 -
  CL, 4 - DL</b>. Ýòîò ïîðÿäîê ðåãèñòðîâ ìîæåò áûòü èçìåíåí, åñëè ÿâíî óêàçàòü
  åãî ëèáî ïðè îáúÿâëåíèè ïðîöåäóðû, ëèáî ïðè åå îïðåäåëåíèè. Ïðîöåäóðû òèïà
  fastcall èíîãäà åùå íàçûâàþò ðåãèñòðîâûìè.

       C-- ïî óìîë÷àíèþ, åñëè èìÿ ïðîöåäóðû íàïèñàíî áîëüøèìè áóêâàìè, òî
  ñ÷èòàåòñÿ, ÷òî ýòà ïðîöåäóðà èìååò òèï âûçîâà <b>fastcall</b>. Åñëè æå â èìåíè
  ïðîöåäóðû åñòü õîòÿ áû îäíà ìàëåíüêàÿ áóêâà, òî ïî óìîë÷àíèþ ñ÷èòàåòñÿ, ÷òî
  ýòà ïðîöåäóðà èìååò òèï âûçîâà <b>pascal</b>, çà èñêëþ÷åíèåì ïðîãðàìì
  êîìïèëèðóåìûõ ñ êëþ÷îì <b>/w32 /w32c</b> èëè <b>/DLL</b>.  íèõ ïî óìîë÷àíèþ ïðèìåíÿåòñÿ
  òèï âûçîâà ïðîöåäóð <b>stdcall</b>. Åñëè æå Âû õîòèòå èçìåíèòü òèï âûçîâà ïðîöåäóð
  èç ïî óìîë÷àíèþ íà ëþáîé äðóãîé, òî ýòó ïðîöåäóðó íàäî îáÿçàòåëüíî îáúÿâèòü
  ñ óêàçàíèåì òèïà æåëàåìîãî âûçîâà.

      Îáúÿâëåíèå ïðîöåäóð ââåäåíî äëÿ òîãî, ÷òîáû ñîîáùàòü êîìïèëÿòîðó î
  òèïå âîçâðàòà èç ïðîöåäóð, ñïîñîáå ïåðåäà÷è ïàðàìåòðîâ ïðîöåäóðå è èõ ÷èñëå.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.2>
  11.2 Ñòåêîâûå ïðîöåäóðû.
</A></B></FONT><FONT FACE="Courier">

      Ñòåêîâûå ïðîöåäóðû ïî óìîë÷àíèþ îáúÿâëÿþòñÿ ïðè ïîìîùè èäåíòèôèêàòîðà,
  êîòîðûé ñîäåðæèò, ïî êðàéíåé ìåðå, îäèí ñèìâîë ñòðî÷íûõ áóêâ (áóêâ íèæíåãî
  ðåãèñòðà, ìàëåíüêèõ áóêâ). Òàêèì îáðàçîì, ñòåêîâûå ïðîöåäóðû ëåãêî îòëè÷èìû
  îò ðåãèñòðîâûõ ïðîöåäóð, ïîñêîëüêó äëÿ èìåí ðåãèñòðîâûõ ïðîöåäóð ñèìâîëû
  ñòðî÷íûõ áóêâ çàïðåùåíû.

      Ïàðàìåòðû äëÿ ñòåêîâûõ ïðîöåäóð, åñëè îíè åñòü, ìîãóò èìåòü ëþáîé òèï
  <b>byte, char, word, int, dword, long</b> èëè <b>float</b>.

      Ïàðàìåòðû ïåðåäàþòñÿ â ñîîòâåòñòâèè ñ ïðàâèëàìè, ïðèíÿòûìè äëÿ äàííîãî
  òèïà ïðîöåäóð. Åñëè ïðîöåäóðà íå èìååò îáúÿâëåíèÿ, òî êîìïèëÿòîð íå ñëåäèò
  çà ÷èñëîì è òèïîì ïåðåäàâàåìûõ ïàðàìåòðîâ.  ýòîì ñëó÷àå ó Âàñ ïîÿâëÿåòñÿ
  ñâîáîäà â èõ èñïîëüçîâàíèè, íî Âû äîëæíû îñîçíàâàòü è ïîñëåäñòâè
  íåïðàâèëüíîãî èõ èñïîëüçîâàíèÿ.

      Â ñïèñêå ïàðàìåòðîâ äëÿ êàæäîãî ïàðàìåòðà óêàçûâàåòñÿ åãî òèï.
  Ïàðàìåòðû îäíîãî òèïà, èäóùèå ïîäðÿä, ðàçäåëÿþòñÿ çàïÿòûìè. Ôîðìàëüíûå
  ïàðàìåòðû ðàçíîãî òèïà â îáúÿâëåíèè ôóíêöèè ðàçäåëÿþòñÿ ñèìâîëîì <b>;</b>.

      Â ñëåäóþùåì ïðèìåðå ñòåêîâàÿ ïðîöåäóðà âîçâðàùàåò ñóììó âñåõ ñâîèõ
  ïàðàìåòðîâ (èìåþùèõ ðàçëè÷íûå òèïû) êàê âåëè÷èíó òèïà word:

  	word add_them_all (int a,b,c; byte d,e; word x,y)
  	{
  	return( a+b+c+d+e+x+y );
  	}

      Ðàíåå C-- äåëàë âûçîâû ñòåêîâûõ ïðîöåäóð ëèøü â ñòèëå <b>pascal</b>.
  Ïðåèìóùåñòâîì ýòîãî ñïîñîáà âûçîâà ïðîöåäóð ÿâëÿåòñÿ êîìïàêòíîñòü è áîëåå
  ïðîñòîé ìåõàíèçì ãåíåðàöèè êîäà. Ê íåäîñòàòêàì, à ñîîòâåòñòâåííî è
  ïðåèìóùåñòâàì Ñ-ñòèëÿ, ìîæíî îòíåñòè æåñòêóþ ïðèâÿçàííîñòü ïàñêàëåâñêèõ
  ïðîöåäóð ê ÷èñëó è òèïó ïåðåäàâàåìûõ ïàðàìåòðîâ (ïîïðîáóéòå ïðè âûçîâå
  ïðîöåäóðû â ñòèëå <b>pascal</b> îïóñòèòü îäèí ïàðàìåòð è ïîëó÷èòå 100% çàâèñàíèå).
  Íàïîìíþ íåêîòîðûå òåõíè÷åñêèå äåòàëè îáîèõ òèïîâ âûçîâîâ ïðîöåäóð.

  Êàäð ñòåêà C-- äëÿ áëèçêèõ ïðîöåäóð ñòåêà â ñòèëå pascal:
       ÀÄÐÅÑ
        ...
      BP + FFFE ïðåäïîñëåäíèé áàéòà ëîêàëüíûõ ïåðåìåííûõ
      BP + FFFF ïîñëåäíèé áàéò ëîêàëüíûõ ïåðåìåííûõ
      BP + 0000 Ñîõðàíåííûé BP
      BP + 0002 RET àäðåñ
      BP + 0004 ïîñëåäíåå ñëîâî ïåðåäàâàåìûõ ïðîöåäóðå ïàðàìåòðîâ (åñëè îíè
                åñòü)
      BP + 0006 ïðåäïîñëåäíåå ñëîâî ïåðåäàâàåìûõ ïðîöåäóðå ïàðàìåòðîâ
       ...
      BP + nnnn ïåðâîå ñëîâî ïåðåäàâàåìûõ ïðîöåäóðå ïàðàìåòðîâ

      Îñâîáîæäåíèå ñòåêà îò ïåðåäàííûõ ïðîöåäóðå ïàðàìåòðîâ ïðîèñõîäèò ïðÿìî
  â ñàìîé ïðîöåäóðå êîìàíäîé <b>RET nnnn</b> - ãäå nnnn ÿâëÿåòñÿ ðàçìåðîì ïåðåäàííûõ
  â ñòåê ïàðàìåòðîâ.

  Êàäð ñòåêà C-- äëÿ áëèçêèõ ïðîöåäóð ñòåêà â ñòèëå ñè:
       ÀÄÐÅÑ
        ...
      BP + FFFE ïðåäïîñëåäíèé áàéòà ëîêàëüíûõ ïåðåìåííûõ
      BP + FFFF ïîñëåäíèé áàéò ëîêàëüíûõ ïåðåìåííûõ
      BP + 0000 Ñîõðàíåííûé BP
      BP + 0002 RET àäðåñ
      BP + 0004 ïåðâîå ñëîâî ïåðåäàâàåìûõ ïðîöåäóðå ïàðàìåòðîâ (åñëè îíè
                åñòü)
      BP + 0006 âòîðîå ñëîâî ïåðåäàâàåìûõ ïðîöåäóðå ïàðàìåòðîâ
       ...
      BP + nnnn ïîñëåäíåå ñëîâî ïåðåäàâàåìûõ ïðîöåäóðå ïàðàìåòðîâ

      Ïðîöåäóðû â ñòèëå <b>Ñ</b> çàêàí÷èâàþòñÿ êîìàíäîé <b>RET</b>. Îñâîáîæäåíèå ñòåêà îò
  ïàðàìåòðîâ ïðîèñõîäèò â òîì ìåñòå îòêóäà áûëà âûçâàíà ïðîöåäóðà. Îáû÷íî ýòî
  äåëàåòñÿ êîìàíäîé <b>ADD SP,nnnn</b>. Ò.å. êîìïèëÿòîð ìîæåò òî÷íî çíàòü ñêîëüêî è
  êàêèõ ïàðàìåòðîâ Âû ïåðåäàåòå â äàííîì ñëó÷àå ïðîöåäóðå è ñîîòâåòñòâåííî
  îñâîáîæäàåò ñòåê ïîñëå çàâåðøåíèÿ ïðîöåäóðû. Ýòî î÷åíü óäîáíî äëÿ ïðîöåäóð,
  êîòîðûå ìîãóò îáðàáàòûâàòü ïåðåìåííîå ÷èñëî ïàðàìåòðîâ (íàïðèìåð, ïðîöåäóðû
  òèïà printf).

      Îáúÿâëåíèå ïðîöåäóðû èìååò ñëåäóþùèé âèä:

    rettype modif procname();

      Ïåðâûì èäåò íåîáÿçàòåëüíûé òèï âîçâðàòà èç ïðîöåäóð. Ïî óìîë÷àíèþ îí
  äëÿ 16-áèòíûõ ïðîãðàìì ðàâåí word, à äëÿ 32-áèòíûõ dword. Çàòåì äîëæåí èäòè
  òàêæå íåîáÿçàòåëüíûé ìîäèôèêàòîð. Ïî óìîë÷àíèþ âñå ñòåêîâûå ïðîöåäóðû â C--
  (çà èñêëþ÷åíèåì ðåæèìà êîìïèëÿöèè ïðîãðàìì ïîä Windows, ãäå ïî óìîë÷àíèþ
  äåéñòâóåò ñòèëü âûçîâà ïðîöåäóð <b>stdcall</b>) èìåþò ñòèëü <b>pascal</b>. Äàëåå èäåò èì
  ïðîöåäóðû ñî ñêîáêàìè, êîòîðûå ÿâëÿþòñÿ ïðèçíàêîì òîãî ÷òî Âû îáúÿâëÿåòå
  ïðîöåäóðó, à íå ïåðåìåííóþ. Çàâåðøàåò îáúÿâëåíèå ñèìâîë òî÷êà ñ çàïÿòîé.

      Ïðè îáúÿâëåíèè ïðîöåäóð â C-- ïðîïèñûâàòü ïàðàìåòðû ïðîöåäóðû
  íåîáÿçàòåëüíî (òîãäà êîìïèëÿòîð íå áóäåò êîíòðîëèðîâàòü ÷èñëî è òèï
  ïåðåäàâàåìûõ ïàðàìåòðîâ), íî åñëè Âû èõ âñòàâèòå, òî âêëþ÷èòñÿ ìåõàíèçì
  êîíòðîëÿ çà ÷èñëîì è òèïîì ïàðàìåòðîâ.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.3>
  11.3 Ðåãèñòðîâûå ïðîöåäóðû.
</A></B></FONT><FONT FACE="Courier">

      Ðåãèñòðîâûå ïðîöåäóðû îïðåäåëÿþòñÿ, ïî óìîë÷àíèþ, ïðè ïîìîùè
  èäåíòèôèêàòîðà, êîòîðûé íå ñîäåðæèò ñèìâîëîâ ñòðî÷íûõ áóêâ. Èëè æå ÿâíûì
  óêàçàíèåì ÷òî ýòî ðåãèñòðîâàÿ ïðîöåäóðà ñ ïîìîùüþ êëþ÷åâîãî ñëîâà <b>fastcall</b>.

      Êàê óæå áûëî ñêàçàíî, ïàðàìåòðû (åñëè îíè åñòü) äëÿ ðåãèñòðîâîé
  ïðîöåäóðû ïåðåäàþòñÿ ÷åðåç ðåãèñòðû. Ðåãèñòðîâûå ïðîöåäóðû ìîãóò èìåòü íå
  áîëåå 6 ïàðàìåòðîâ. Åñëè ïàðàìåòðû èìåþò òèï int èëè word, ðåãèñòðû ïî
  óìîë÷àíèþ èñïîëüçóþòñÿ â ñëåäóþùåì ïîðÿäêå: <b>AX, BX, CX, DX, DI, è SI</b>.
  Ïåðâûå ÷åòûðå ïàðàìåòðà ìîãóò òàêæå èìåòü òèï <b>char</b> èëè <b>byte</b>, â ýòîì ñëó÷àå
  çàäåéñòâóþòñÿ ðåãèñòðû <b>AL, BL, CL è DL</b> ñîîòâåòñòâåííî. Ëþáîé èç øåñòè
  ïàðàìåòðîâ ìîæåò èìåòü òèï <b>long, dword</b> èëè <b>float</b>, òîãäà äëÿ íåãî
  èñïîëüçóåòñÿ ðåãèñòð <b>EAX, EBX, ECX, EDX, EDI</b>, èëè <b>ESI</b>.

      Â ñëåäóþùåì ïðèìåðå ðåãèñòðîâàÿ ïðîöåäóðà ñ èìåíåì TOGETHER âîçâðàùàåò
  çíà÷åíèå òèïà word êàê ðåçóëüòàò óìíîæåíèÿ ïåðâîãî ïàðàìåòðà, èìåþùåãî òèï
  word, íà âòîðîé ïàðàìåòð òîãî æå òèïà:

           word TOGETHER() /* AX = ïåðâûé ïàðàìåòð, BX = âòîðîé ïàðàìåòð */
           {
           return (AX * BX);
           }

      Â ñëåäóþùåì ïðèìåðå ðåãèñòðîâàÿ ïðîöåäóðà ñ èìåíåì SHOW_NUM, êîòîðàÿ íå
  âîçâðàùàåò íèêàêîãî çíà÷åíèÿ, çàòî âûâîäèò íà ýêðàí ïåðâûé ïàðàìåòð
  (èìåþùèé òèï int), çàòåì ðàçäåëèòåëüíûé çíàê â âèäå äâîåòî÷èÿ <b>:</b>, à çàòåì
  âòîðîé ïàðàìåòð (èìåþùèé òèï byte) :

           void SHOW_NUM () /* AX = ïåðâîå ÷èñëî, BL = âòîðîå ÷èñëî */
           {
           $ PUSH BX
           WRITEINT (int AX);
           WRITE (':');
           $ POP BX
           WRITEWORD (BL);
           }

      Íî åñëè â ïðîöåäóðå ñäåëàòü îáúÿâëåíèå ïîðÿäêà è òèïîâ èñïîëüçóåìûõ
  ðåãèñòðîâ, òî âîçìîæíî ïðîèçâîëüíîå èñïîëüçîâàíèå ðåãèñòðîâ. Áîëåå ïîäðîáíî
  îá ýòîì ìîæíî ïî÷èòàòü â ðàçäåëå îá îáúÿâëåíèÿõ ïàðàìåòðîâ â ðåãèñòðîâûõ
  ïðîöåäóðàõ.

      Äëÿ òîãî, ÷òîáû èñïîëüçîâàòü ðåãèñòðîâóþ ïðîöåäóðó êàê ìàêðîêîìàíäó,
  îíà äîëæíà áûòü îáúÿâëåíà êàê äèíàìè÷åñêàÿ ïðîöåäóðà. Äèíàìè÷åñêèå
  ïðîöåäóðû îïèñàíû â ñëåäóþùåì ïîäðàçäåëå.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.4>
  11.4 Äèíàìè÷åñêèå ïðîöåäóðû.
</A></B></FONT><FONT FACE="Courier">

      Äèíàìè÷åñêèå ïðîöåäóðû - ïðîöåäóðû, êîòîðûå îïðåäåëåíû, íî âñòàâëÿþòñÿ
  â êîä ïðîãðàììû, òîëüêî åñëè åñòü âûçîâ. Äèíàìè÷åñêèå ïðîöåäóðû ìîãóò
  èñïîëüçîâàòüñÿ êàê ìàêðîêîìàíäû.

      Îïðåäåëåíèå äèíàìè÷åñêîé ïðîöåäóðû íà÷èíàåòñÿ ñ ñèìâîëà äâîåòî÷èÿ ':'.

  Ïðèìåð äèíàìè÷åñêîé ïðîöåäóðû ñòåêà:

          : void setvideomode (byte mode)
          {
          AL = mode;
          AH = 0;
          $ INT 0x10
          }

  Ïðèìåð äèíàìè÷åñêîé ðåãèñòðîâîé ïðîöåäóðû:

          : int ABS () /* AX = ÷èñëî, àáñîëþòíîå çíà÷åíèå êîòîðîãî èùåòñÿ*/
          {
          IF (int AX < 0)
               -AX;
          }
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.4.1>
    11.4.1 Óñòàíîâêà äèíàìè÷åñêîé ïðîöåäóðû â îïðåäåëåííîå ìåñòî ïðîãðàììû.
</A></B></FONT><FONT FACE="Courier">

        Äèíàìè÷åñêèå ïðîöåäóðû, åñëè îíè íå èñïîëüçóþòñÿ êàê ìàêðîñû è åñëè
    îíè áûëè âîñòðåáîâàíû â ïðîãðàììå, âñòàâëÿþòñÿ â êîä ïðîãðàììû â ñàìîì
    êîíöå êîìïèëÿöèè.  êàêîì òî÷íî ìåñòå Âàøåé ïðîãðàììû îíè îêàæóòñÿ óçíàòü
    íåâîçìîæíî. Åñëè æå Âàì íåîáõîäèìî, ÷òîáû êàêàÿ-òî äèíàìè÷åñêàÿ ïðîöåäóðà
    íàõîäèëàñü â êîíêðåòíîì ìåñòå ïðîãðàììû, òî ýòî ìîæíî ñäåëàòü òàêèì
    îáðàçîì:

    :void proc ( int par1, par2)
    {
       ...
    }

        Ìû èìååì äèíàìè÷åñêóþ ïðîöåäóðó, êîä êîòîðîé áûë áû ðàñïîëîæåí ðàíåå
    êîäà îáû÷íîé ïðîöåäóðû íàøåé ïðîãðàììû. Äëÿ ýòîãî ïåðåä îïðåäåëåíèåì ýòîé
    ïðîöåäóðû íàäî íàïèñàòü òàêóþ ñòðîêó:

    @ void proc ();

	 èòîãå äèíàìè÷åñêàÿ ïðîöåäóðà áóäåò âñòàâëåíà â êîä ïðîãðàììû íå â
    êîíöå åå, êàê îáû÷íî, à â ìåñòå, ãäå áóäåò ðàñïîëîæåíà ýòà ñòðîêà. Åñëè
    äèíàìè÷åñêàÿ ïðîöåäóðà èìååò ïàðàìåòðû, òî ïðîïèñûâàòü ýòè ïàðàìåòðû
    íåîáÿçàòåëüíî.

	Â êîìïèëÿòîðå åñòü åùå áîëåå ìîùíîå ñðåäñòâî, ïîçâîëÿþùåå âñå
    äèíàìè÷åñêèå îáúåêòû ( ïðîöåäóðû, ïåðåìåííûå, ñòðóêòóðû ) ðàñïîëîæèòü â
    óêàçàííîì ìåñòå, à íå â êîíöå ïðîãðàììû, êàê îáû÷íî. Ýòî äèðåêòèâà
    <b>#setdinproc</b>. Âñòðåòèâ ýòó äèðåêòèâó, êîìïèëÿòîð íåìåäëåííî ðàñïîëîæèò âñå
    èçâåñòíûå åìó íà ýòîò ìîìåíò äèíàìè÷åñêèå îáúåêòû â ìåñòå îáúÿâëåíèÿ ýòîé
    äèðåêòèâû. Ïîñëåäóþùèå äèíàìè÷åñêèå îáúåêòû áóäóò ðàñïîëàãàòüñÿ êàê
    îáû÷íî, â êîíöå ïðîãðàììû, åñëè êîíå÷íî, íå áóäåò ïîâòîðíî ïðèìåíåíà
    äèðåêòèâà <b>#setdinproc</b>.

	Ýòî ìîæåò áûòü ïðèìåíåíî è áûòü ïîëåçíûì ïðè ñîçäàíèè ðåçèäåíòíûõ
    ïðîãðàìì (TSR) è äðàéâåðîâ óñòðîéñòâ.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.5>
  11.5 inline-ïðîöåäóðû.
</A></B></FONT><FONT FACE="Courier">

      inline-ïðîöåäóðàìè ìîãóò áûòü äèíàìè÷åñêèå ïðîöåäóðû, êîòîðûå ìîæíî
  èñïîëüçîâàòü êàê ìàêðîñû. Íî â îòëè÷èå îò ìàêðîñîâ, inline-ïðîöåäóðû, ïðè
  âêëþ÷åííîé îïòèìèçàöèè íà ñêîðîñòü, àâòîìàòè÷åñêè âñòàâëÿþòñÿ â êîä, à ïðè
  îïòèìèçàöèè êîäà íà ðàçìåð, äåëàåòñÿ âûçîâ èõ, êàê äèíàìè÷åñêèõ ïðîöåäóð.

      Íî èíîãäà áûâàåò íóæíî ïðè âêëþ÷åííîé îïòèìèçàöèè íà ðàçìåð êîäà, ÷òîáû
  ïðîöåäóðû âñòàâëÿëèñü â êîä, à íå äåëàëñÿ èõ âûçîâ. Äëÿ ýòèõ öåëåé ââåäåíà
  äèðåêòèâà <b>#inline TRUE</b>. Ýòîé æå äèðåêòèâîé ( <b>#inline FALSE</b> ), ìîæíî ïðè
  îïòèìèçàöèè íà ñêîðîñòü äåëàòü âûçîâû ïðîöåäóð, âìåñòî èõ âñòàâêè.

      Âàæíî ïîìíèòü, ÷òî ñòàòóñ äèðåêòèâû <b>#inline</b> àâòîìàòè÷åñêè ìåíÿåòñÿ ïðè
  ñìåíå ðåæèìà îïòèìèçàöèè. Ïðè óñòàíîâêå îïòèìèçàöèè íà ñêîðîñòü ñòàòóñ
  äèðåêòèâû <b>#inline</b> óñòàíàâëèâàåòñÿ â <b>TRUE</b>, à ïðè ñìåíå ðåæèìà îïòèìèçàöèè ïî
  ðàçìåðó êîäà, óñòàíàâëèâàåòñÿ â <b>FALSE</b>. Ïîýòîìó ïðèìåíÿéòå äèðåêòèâó <b>#inline</b>
  ëèøü ïîñëå ñìåíû ðåæèìà îïòèìèçàöèè.

      Äèðåêòèâû ìåíÿþùèå ðåæèì îïòèìèçàöèè <b>#codesize, #speed</b> è äèðåêòèâà
  <b>#inline</b>, îáúÿâëåííûå âíóòðè ïðîöåäóðû ðàñïðîñòðàíÿþòñÿ òîëüêî íà îñòàâøóþñÿ
  ÷àñòü ïðîöåäóðû, ò.å. îíè ñòàíîâÿòñÿ ëîêàëüíûìè. Äëÿ òîãî ÷òîáû èçìåíåíèÿ
  áûëè ãëîáàëüíûìè ýòè äèðåêòèâû íàäî îáúÿâëÿòü âíå òåëà ïðîöåäóðû.

      Äëÿ òîãî ÷òîáû îïðåäåëèòü inline-ïðîöåäóðó, íàäî â ïåðâîé ñòðîêå ñ
  èìåíåì ïðîöåäóðû âìåñòî ñèìâîëà äèíàìè÷åñêîé ïðîöåäóðû <b>(:)</b> íàïèñàòü
  êëþ÷åâîå ñëîâî <b>inline</b>. Ïðèìåð îïðåäåëåíèÿ inline-ïðîöåäóðû:

  inline int fastcall abs(AX)
  {
      IF ( int AX < 0 ) -AX ;
  }
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.5.1>
    11.5.1 Äðóãîå ïðèìåíåíèå inline.
</A></B></FONT><FONT FACE="Courier">

	Êëþ÷åâîå ñëîâî <b>inline</b> èìååò â ïðîöåäóðàõ è äðóãîå ïðèìåíåíèå. Åñëè
    ýòî ñëîâî ðàñïîëîæåíî ïåðåä íà÷àëîì áëîêà ïðîöåäóðû, òî äëÿ òàêîé
    ïðîöåäóðû íå ñîçäàåòñÿ êàäð ñòåêà è íå ãåíåðèðóåòñÿ çàâåðøàþùèé ïðîöåäóðó
    <b>ret</b>. Ïðèìåð:

    void PROC ()
    inline
    {
      ...
    }

	Òàêèå ïðîöåäóðû íå äîëæíû ñîäåðæàòü ëîêàëüíûõ ïåðåìåííûõ. Åñëè
    ïðîöåäóðà ÿâëÿåòñÿ ðåãèñòðîâîé (òèï <b>fastcall</b>), òî ñ ïåðåäà÷åé åé
    ïàðàìåòðîâ íåò ïðîáëåì. Åñëè æå ïðîöåäóðà ÿâëÿåòñÿ ñòåêîâîé, òî ïåðåäàòü
    â òàêóþ ïðîöåäóðó ïàðàìåòðû Âû ìîæåòå, íî âîñïîëüçîâàòüñÿ ýòèìè
    ïàðàìåòðàìè èñïîëüçóÿ èõ èìåíà, Âû óæå íå ñìîæåòå. Ýòî ïðîèñõîäèò ïîòîìó,
    ÷òî â ýòèõ ïðîöåäóðàõ êàäð ñòåêà íå ôîðìèðóåòñÿ. Ïðèìåð:

    void proc (int par1, par2)
    inline
    {
      AX=par1; /* êîìïèëÿòîð îáðàòèòñÿ ñ ïàðàìåòðó 'par1' ÷åðåç ðåãèñòð BP.
		  Íî òàê êàê êàäð ñòåêà íå áûë ñîçäàí, ïðè âûïîëíåíèè ýòîãî
                  êîäà ïðîãðàììà áóäåò ðàáîòàòü íå ïðàâèëüíî. */
       ...
    }

	Âñòðåòèâ òàêîå îïðåäåëåíèå ïðîöåäóðû, êîìïèëÿòîð âûäàñò ïðåäóïðåæäåíèå
    î òîì, ÷òî â òàêèõ ïðîöåäóðàõ èñïîëüçîâàòü ëîêàëüíûå è ïàðàìåòðè÷åñêèå
    ïåðåìåííûå íåëüçÿ.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.6>
  11.6 Ïðîöåäóðû îáðàáîòêè ïðåðûâàíèé.
</A></B></FONT><FONT FACE="Courier">

      Ïðîöåäóðû îáðàáîòêè ïðåðûâàíèé îïðåäåëÿþòñÿ ñëåäóþùèì ñïîñîáîì:

          interrupt procedure_name ()
          {
          // put code here (çäåñü äîëæåí áûòü êîä îáðàáîòêè)
          }

      Ïðîöåäóðû îáðàáîòêè ïðåðûâàíèé íå ñîõðàíÿþò íèêàêèõ ðåãèñòðîâ
  àâòîìàòè÷åñêè, è íèêàêèå ðåãèñòðû ñàìè ïî ñåáå íå çàãðóæàþòñÿ ïåðåä
  ïåðåäà÷åé óïðàâëåíèÿ îáðàáîò÷èêó ïðåðûâàíèÿ, ñëåäîâàòåëüíî, íà Âàøåé
  ñîâåñòè ñîõðàíåíèå çíà÷åíèé ðåãèñòðîâ â ñòåêå è ïîñëåäóþùèé èõ âîçâðàò, à
  òàêæå çàãðóçêà ðåãèñòðà DS íóæíûì çíà÷åíèåì.

      Âîò ïðèìåð îáðàáîò÷èêà ïðåðûâàíèÿ, êîòîðûé ñîõðàíÿåò çíà÷åíèÿ âñåõ
  ðåãèñòðîâ è çàãðóæàåò ðåãèñòð DS:

       interrupt safe_handle ()
       {
       $ PUSH DS
       $ PUSH ES
       $ PUSHA   // äëÿ âûïîëíåíèÿ ýòîé êîìàíäû íóæåí ïðîöåññîð íå õóæå 80286
       DS = CS;  // çäåñü DS çàãðóæàåòñÿ äëÿ ðàáîòû ñ ìîäåëüþ ïàìÿòè òèïà tiny


       /* do your thing here (çäåñü âû äåëàåòå ñâîþ îáðàáîòêó)*/

       $ POPA   // äëÿ âûïîëíåíèÿ ýòîé êîìàíäû íóæåí ïðîöåññîð íå õóæå 80286
       $ POP ES
       $ POP DS
       }

      Ïðè çàâåðøåíèè ïðîöåäóðû ïðåðûâàíèÿ áóäåò àâòîìàòè÷åñêè ñãåíåðèðîâàíà
  èíñòðóêöèÿ âûõîäà èç îáðàáîò÷èêà ïðåðûâàíèÿ - IRET.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.7>
  11.7 Çàìåíà return íà goto.
</A></B></FONT><FONT FACE="Courier">

      Â íåêîòîðûõ ñèòóàöèÿõ, ïðè êîìïèëÿöèè ïðîãðàììû, îïåðàòîð <b>return</b>
  áóäåò çàìåíÿòüñÿ íà <b>goto</b>. Ýòî ïðîèñõîäèò ïðè ðàçðåøåííîé îïòèìèçàöèè ïî
  ðàçìåðó êîäà äëÿ îïåðàòîðîâ <b>return</b>, êîòîðûå ðàñïîëîæåíû âíóòðè ïðîöåäóðû
  è, åñòåñòâåííî, åñëè ðàçìåð êîäà äëÿ âûïîëíåíèÿ <b>return</b> áîëüøå, ÷åì ðàçìåð
  êîäà äëÿ ðåàëèçàöèè <b>goto</b>. Äëÿ äèíàìè÷åñêèõ ïðîöåäóð, êîòîðûå èñïîëüçóþòñÿ
  êàê ìàêðîñû, òàêàÿ çàìåíà áóäåò ïðîèçâîäèòñÿ âñåãäà. Îïåðàòîð <b>goto</b> áóäåò
  âûïîëíåí íà êîíåö ïðîöåäóðû, òàì, ãäå áóäåò ðàñïîëàãàòüñÿ åäèíñòâåííûé
  âûõîä èç ïðîöåäóðû.  äèíàìè÷åñêèõ ïðîöåäóðàõ, èñïîëüçóåìûõ â êà÷åñòâå
  ìàêðîñîâ, <b>return</b> â êîíöå ïðîöåäóðû áóäåò ïðîïóùåí êîìïèëÿòîðîì.

      Òàêèì îáðàçîì, ñíÿòî ïîñëåäíåå îãðàíè÷åíèå íà èñïîëüçîâàíèå
  äèíàìè÷åñêèõ ïðîöåäóð â êà÷åñòâå ìàêðîñîâ. Ëþáàÿ äèíàìè÷åñêàÿ ïðîöåäóðà
  ìîæåò áûòü èñïîëüçîâàíà êàê ìàêðîñ.

      Äëÿ îïåðàòîðà <b>goto</b> ñóùåñòâóåò åãî áîëåå êîðîòêèé àíàëîã - <b>GOTO</b>.
  Äëÿ ïîëó÷åíèÿ áîëåå êîìïàêòíîãî êîäà äëÿ îïåðàòîðà <b>return</b> ââåäåí òàêæå
  áîëåå êîðîòêèé îïåðàòîð <b>RETURN</b>. Åãî ìîæíî èñïîëüçîâàòü, åñëè îò ìåñòà
  åãî ïðèìåíåíèÿ äî êîíöà ïðîöåäóðû íàõîäèòñÿ íå áîëåå 128 áàéò. Åñëè Âû
  áóäåòå èñïîëüçîâàòü <b>RETURN</b> íà áîëüøåì ðàññòîÿíèè äî êîíöà ïðîöåäóðû, òî
  êîìïèëÿòîð âûäàñò ñîîáùåíèå îá îøèáêå. Ïðè èñïîëüçîâàíèè <b>return</b> íà
  ðàññòîÿíèè ìåíüøå 128 áàéò äî êîíöà êîäà, êîìïèëÿòîð âûäàñò âàì
  ïðåäóïðåæäåíèå î âîçìîæíîì èñïîëüçîâàíèè <b>RETURN</b>.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.8>
  11.8 Âîçâðàùàåìûå çíà÷åíèÿ.
</A></B></FONT><FONT FACE="Courier">

      Âîçâðàùàåìûå èç ôóíêöèé çíà÷åíèÿ ðàñïîëàãàþòñÿ â ðåãèñòðàõ.  òàáëèöå
  ïîêàçàíî, êàêîé ðåãèñòð èñïîëüçóåòñÿ äëÿ êàæäîãî èç âîçâðàùàåìûõ òèïîâ:

      --------------------------------------------
      | âîçâðàùàåìûé òèï |  èñïîëüçóåìûé ðåãèñòð |
      --------------------------------------------
      |        byte      |        AL             |
      |        word      |        AX             |
      |        dword     |        EAX            |
      |        char      |        AL             |
      |        int       |        AX             |
      |        long      |        EAX            |
      |        float     |        EAX            |
      --------------------------------------------

      Ñàìûé ïðîñòîé ñïîñîá âåðíóòü çíà÷åíèå èç ôóíêöèè ñîñòîèò â òîì, ÷òîáû
  èñïîëüçîâàòü êîìàíäó return(), íî âìåñòî ýòîãî ìîæíî íàïðÿìóþ çàãðóçèòü
  âîçâðàùàåìîå çíà÷åíèå â ñîîòâåòñòâóþùèé ðåãèñòð. Íàïðèìåð, ñëåäóþùèå äâå
  ôóíêöèè âîçâðàùàþò îäíî è òî æå çíà÷åíèå:

           byte proc_one ()
           {
           return (42);
           }

           byte proc_two ()
           {
           AL = 42;
           }

      Ìíîãèå DOS ôóíêöèè 0x21 ïðåðûâàíèÿ â êà÷åñòâå èíäèêàòîðà óñïåøíîãî
  âûïîëíåíèÿ èñïîëüçóþò óñòàíîâêó èëè ñáðîñ carry ôëàãà. Èñïîëüçîâàòü ôëàãè
  ïðîöåññîðà ïðè âîçâðàòå èç ïðîöåäóð ìîæíî è â äðóãèõ ñëó÷àÿõ, êîãäà íàäî
  èìåòü ñòàòóñ óñïåøíîãî èëè íå óñïåøíîãî âûïîëíåíèÿ ïðîöåäóðû. Ýòî ïîçâîëèò
  áîëåå ïîëíî èñïîëüçîâàòü âîçìîæíîñòè ïðîöåññîðà è ñîîòâåòñòâåííî óìåíüøèò
  ðàçìåð êîäà è ïîâûñèò áûñòðîäåéñòâèå ïðîãðàììû.

      Íàðÿäó ñ ôëàãàìè, ïðè âîçâðàòå èç ïðîöåäóð, ïî ïðåæíåìó îñòàåòñÿ
  âîçâðàò ðàçëè÷íûõ òèïîâ è ÷åðåç ðåãèñòð <b>AL/AX/EAX</b>. Åñëè äëÿ ïðîöåäóðû
  îáúÿâëåíî, ÷òî îíà èìååò òèï âîçâðàòà <b>int è CARRYFLAG</b>, òî ïðè èñïîëüçîâàíèè
  òàêîé ïðîöåäóðû â îïåðàöèÿõ ñðàâíåíèÿ <b>IF, WHILE...</b> áóäåò äåëàòüñÿ ïðîâåðêà
  carry ôëàãà, à íå ñðàâíåíèå ðåãèñòðà AX. Ïðèìåð èñïîëüçîâàíèÿ âîçâðàòà
  ôëàãîâ èç ïðîöåäóð:

  int CARRYFLAG FOPEN();	// îáúÿâëåíèå ïðîöåäóðû

  void proc()
  {
    IF ( FOPEN(name,0) ) Error ( "Not open file" );
  }

      Âàðèàíòû äîïóñòèìîãî ñèíòàêñèñà äëÿ èñïîëüçîâàíèÿ âîçâðàòà ôëàãà:

  IF ( ! FOPEN() )...
  IF ( @ FOPEN() )...
  IF ( ! @ FOPEN() )...
  IF ( handl = FOPEN() )...
  IF ( handl = @ FOPEN() )...
  IF ( ! handl = FOPEN() )...
  IF ( ! handl = @ FOPEN() )...

      À âîò âàðèàíòû, â êîòîðûõ, íåñìîòðÿ íà òî, ÷òî äëÿ ïðîöåäóðû îáúÿâëåí
  âîçâðàò ôëàãà, áóäåò ïðîèçâîäèòüñÿ ñðàâíåíèå ðåãèñòðà AX:

  IF ( FOPEN() == 5 )...	// ïðîèçâîäèòñÿ ñðàâíåíèå
  IF ( FOPEN() + 2 )...   // ðåçóëüòàò ïðîöåäóðû ïîäâåðãàåòñÿ äàëüíåéøåìó
                          // âû÷èñëåíèþ, â ðåçóëüòàòå êîòîðîãî ôëàãè áóäóò
  			// èçìåíåíû.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.9>
  11.9 Îáúÿâëåíèå ïàðàìåòðîâ â ðåãèñòðîâûõ ïðîöåäóðàõ.
</A></B></FONT><FONT FACE="Courier">

      Ðàíåå êàæäîìó ïàðàìåòðó ðåãèñòðîâîé ïðîöåäóðû ñîîòâåòñòâîâàë ñòðîãî
  îïðåäåëåííûé ðåãèñòð. Íàïðèìåð, äëÿ ïåðåìåííûõ òèïà int èëè word ïåðâûé
  ïàðàìåòð ïåðåäàâàëñÿ ÷åðåç ðåãèñòð AX, 2-é - BX, 3-é - CX, 4-é - DX, 5-é -
  DI, 6-é - SI. Ïîýòîìó, åñëè Âàì áûëî íåîáõîäèìî ïåðåäàòü òîëüêî îäèí
  ïàðàìåòð ÷åðåç ðåãèñòð SI, òî ïðèõîäèëîñü ïåðåä íèì ïèñàòü ïÿòü çàïÿòûõ.
  Âîò êàê, íàïðèìåð, âûãëÿäèò âûçîâ ïðîöåäóðû STRCPY:

  void main ()
  {
    STRCPY ( , , , , #dest, #sourc ) ;
  }

      Òåïåðü ðåãèñòðû ìîãóò ðàñïîëàãàòüñÿ ïðè ïåðåäà÷å ïàðàìåòðîâ
  ïðîèçâîëüíûì îáðàçîì. Íàäî òîëüêî îáúÿâèòü êîìïèëÿòîðó î òîì, êàêîé ðåãèñòð
  çàêðåïëåí çà êàêèì ïàðàìåòðîì äàííîé ïðîöåäóðû. Ïîñëå òàêîãî îáúÿâëåíèÿ
  êîìïèëÿòîð áóäåò ñàì ñëåäèòü çà òåì, ÷åðåç êàêîé ðåãèñòð ïåðåäàâàòü
  ïàðàìåòð ïðîöåäóðå, åãî ðàçìåðíîñòüþ è ÷èñëîì ïåðåäàâàåìûõ ïàðàìåòðîâ. Âîò
  êàê áóäåò âûãëÿäåòü îáúÿâëåíèå è èñïîëüçîâàíèå ïðîöåäóðû STRCPY:

  void STRCPY ( DI, SI ) ;	//ýòî îáúÿâëåíèå ïðîöåäóðû

  void main ()
  {
    STRCPY ( #dest, #sourc ) ;	//à ýòî âûçîâ ïðîöåäóðû
  }

      Ìîæíî íå äåëàòü îáúÿâëåíèÿ ïðîöåäóðû, à óêàçàòü ðàñïîëîæåíèå ðåãèñòðîâ
  â çàãîëîâêå ïðîöåäóðû. Íî òîãäà òàêàÿ ïðîöåäóðà äîëæíà âûçûâàòüñÿ òîëüêî
  ïîñëå åå îïðåäåëåíèÿ. Âîò ïðèìåð ïðîöåäóðû âûâîäÿùåé íà ýêðàí íåñêîëüêî
  îäèíàêîâûõ ñèìâîëîâ:

  void PUTNCHAR(AL,CX,BL,BH)
  /* 1 ïàðàìåòð â AL - êîä ñèìâîëà, êîòîðûé áóäåò âûâåäåí
     2 ïàðàìåòð â CX - ÷èñëî âûâîäèìûõ ñèìâîëîâ
     3 ïàðàìåòð â BL - öâåòîâîé àòðèáóò
     4 ïàðàìåòð â BH - íîìåð âèäåîñòðàíèöû
  */
  {
    AH=9;
    $INT 0x10
  }

      Ïðè îáúÿâëåíèè ðåãèñòðîâîé ïðîöåäóðû ìîæíî òàêæå óêàçûâàòü êàêîé òèï
  ïåðåìåííîé îæèäàåò ïðîöåäóðà (çíàêîâûé/áåç çíàêîâûé èëè âåùåñòâåííûé). Ïî
  óìîë÷àíèþ ñ÷èòàåòñÿ áåç çíàêîâûé òèï. Îäíàêî çíàêîâûé òèï óêàçûâàòü åñòü
  ñìûñë òîëüêî åñëè ïàðàìåòð ïåðåäàåòñÿ ÷åðåç ðåãèñòð <b>AL/AX/EAX</b>. ×åðåç äðóãèå
  ðåãèñòðû ïåðåìåííàÿ âñåãäà ïåðåäàåòñÿ êàê áåç çíàêîâàÿ. Ïðèìåð îáúÿâëåíèÿ
  ðåãèñòðîâîé ïðîöåäóðû ñ óêàçàíèåì òèïîâ:

  int fastcall Exampl( word CX, int AX, DX, float ESI ) ;
   |    |        |        |         |   |   |
   |    |        |        |         |   |   |---- 4-é ïàðàì. èìååò òèï float è
   |    |        |        |         |   |         ïåðåä. ÷åðåç ðåãèñòð ESI.
   |    |        |        |         |   |-------- 3-é ïàðàì. èìååò ïî óìîë÷.
   |    |        |        |         |             òèï word è ïåðåä. ÷åðåç DX.
   |    |        |        |         |------------ 2-é ïàðàì. èìååò òèï int è
   |    |        |        |                       ïåðåäàåòñÿ ÷åðåç ðåãèñòð AX.
   |    |        |        |---------------------- 1-é ïàðàì. èìååò òèï word è
   |    |        |                                ïåðåäàåòñÿ ÷åðåç ðåãèñòð CX.
   |    |        |------------------------------- Èìÿ îáúÿâëÿåìîé ïðîöåäóðû.
   |    |---------------------------------------- Ìîäèôèêàòîð, óêàçûâàþùèé, ÷òî
   |                                              ýòà ïðîö. ÿâë. ðåãèñòðîâîé.
   |--------------------------------------------- Ïðîöåäóðà âîçâðàùàåò ïåðåìåí.
  						                          òèïà int.

      Åñëè Âû ñäåëàëè îáúÿâëåíèå ðåãèñòðîâ ïðîöåäóðû, òî êîìïèëÿòîð áóäåò
  ñòðîãî ñëåäèòü çà êîëè÷åñòâîì óêàçàííûõ ïàðàìåòðîâ ïðè âûçîâå ýòîé
  ïðîöåäóðû è âûäàâàòü ñîîáùåíèÿ îá îøèáêå, åñëè èõ áóäåò ìåíüøå èëè áîëüøå.
  Ñ îäíîé ñòîðîíû ýòî õîðîøî - åñòü êîíòðîëü çà òåì, ÷òî Âû íè÷åãî íå çàáûëè
  èëè íå äîáàâèëè ëèøíåãî ïðè âûçîâå ïðîöåäóðû. Ñ äðóãîé ñòîðîíû èíîãäà
  áûâàþò íåîáÿçàòåëüíûå ïàðàìåòðû, à èõ òåïåðü ïðèäåòñÿ ïðîïèñûâàòü. Íî åñëè
  Âû ïðè âûçîâå ïðîöåäóðû íå óêàæåòå íè îäíîãî ïàðàìåòðà, òî êîìïèëÿòîð íå
  áóäåò Âàì âûäàâàòü ñîîáùåíèå îá îøèáêå.  Ýòî äàåò Âàì âîçìîæíîñòü
  ïðîèíèöèàëèçèðîâàòü ðåãèñòðû, ÷åðåç êîòîðûå Âû ïåðåäàåòå ïàðàìåòðû, âíå
  âûçîâà ïðîöåäóðû.  Íî åñëè Âû óêàæåòå, õîòü îäèí ïàðàìåòð, òî Âàì ïðèäåòñÿ
  óêàçûâàòü è îñòàëüíûå, èíà÷å êîìïèëÿòîð áóäåò ñ÷èòàòü, ÷òî Âû èõ ñëó÷àéíî
  ïðîïóñòèëè è âûäàñò ñîîáùåíèå îá îøèáêå.

      Åñëè Âû íå îáúÿâèëè ðåãèñòðû íè ïðè îáúÿâëåíèè ðåãèñòðîâîé ïðîöåäóðû,
  íè â çàãîëîâêå ñàìîé ïðîöåäóðû, òî êîìïèëÿòîð áóäåò ñ÷èòàòü, ÷òî ïàðàìåòðû
  â ýòó ïðîöåäóðó ïåðåäàþòñÿ ñòàðûì ñïîñîáîì. Òàêèì îáðàçîì, äîñòèãàåòñÿ
  ïîëíàÿ ñîâìåñòèìîñòü ñ ïðåäûäóùèìè âåðñèÿìè êîìïèëÿòîðà.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.10>
  11.10 Îáúÿâëåíèå ïàðàìåòðîâ â ñòåêîâûõ ïðîöåäóðàõ.
</A></B></FONT><FONT FACE="Courier">

      Êàê èçâåñòíî, ðàíåå â C-- êîíòðîëü çà ÷èñëîì è òèïîì ïåðåäàâàåìûõ
  ïðîöåäóðå ïàðàìåòðîâ âîçëàãàëñÿ íà ïðîãðàììèñòà. Ïîýòîìó âîçíèêëà íåïðîñòàÿ
  çàäà÷à, ñîâìåñòèòü îäíîâðåìåííî îòñóòñòâèå êîíòðîëÿ çà ïàðàìåòðàìè (äëÿ
  ñîâìåñòèìîñòè ñ ïðåäûäóùèìè âåðñèÿìè) è åå íàëè÷èå.  ðåçóëüòàòå
  êîìïðîìèññîâ ïîÿâèëñÿ âàðèàíò íåìíîãî îòëè÷àþùèéñÿ îò òðàäèöèîííî ïðèíÿòîãî
  â ÿçûêàõ C.

      Ãëàâíîå îòëè÷èå - ýòî òî, ÷òî ïàðàìåòðû, îïðåäåëÿåìûå ïðè îïðåäåëåíèè
  ïðîöåäóðû, íå áóäóò âîñïðèíèìàòüñÿ êîìïèëÿòîðîì äëÿ êîíòðîëÿ çà íèìè. Âî
  âñåõ ÿçûêàõ C äîïóñêàåòñÿ ñîâìåùåíèå ïðîòîòèïà ïðîöåäóðû è åå îáúÿâëåíèÿ.
   C-- äëÿ òîãî, ÷òîáû âêëþ÷èëñÿ êîíòðîëü çà ïàðàìåòðàìè ñòåêîâîé ïðîöåäóðû,
  íàäî ýòó ïðîöåäóðó îáÿçàòåëüíî îáúÿâèòü. Íî íå âñÿêîå îáúÿâëåíèå ïðîöåäóðû
  áóäåò ñèãíàëîì êîìïèëÿòîðó î âêëþ÷åíèè êîíòðîëÿ çà ïàðàìåòðàìè ýòîé
  ïðîöåäóðû. Åñëè ïðè îáúÿâëåíèè â êðóãëûõ ñêîáêàõ íè÷åãî íå áóäåò, òî
  êîìïèëÿòîð íå áóäåò îòñëåæèâàòü ïàðàìåòðû, ïåðåäàâàåìûå ýòîé ïðîöåäóðå. Â
  C++ òàêîå îáúÿâëåíèå îçíà÷àåò, ÷òî ïðîöåäóðå íå ïåðåäàþòñÿ íèêàêèå
  ïàðàìåòðû. Â C-- äëÿ ýòîãî íàäî ïðè îáúÿâëåíèè ïðîöåäóðû â êðóãëûõ ñêîáêàõ
  îáÿçàòåëüíî íàïèñàòü void. Íàïðèìåð:

  int proc ( void ) ;

      Âñòðåòèâ òàêîå îáúÿâëåíèå ïðîöåäóðû, êîìïèëÿòîð áóäåò ñëåäèòü çà òåì,
  ÷òîáû ýòîé ïðîöåäóðå íå áûëè ïåðåäàíû ïàðàìåòðû.

      Ïðè îáúÿâëåíèè ïðîöåäóðû èìåíà ïàðàìåòðîâ ìîæíî îïóñêàòü. Êàê èçâåñòíî,
  â C-- ïàðàìåòðû ïðîöåäóðû îäíîãî òèïà çàïèñûâàþòñÿ ÷åðåç çàïÿòóþ. Äëÿ ñìåíû
  òèïà èñïîëüçóþò òî÷êó ñ çàïÿòîé. Ïðè îáúÿâëåíèè ñìåíó òèïà ìîæíî
  ïðîèçâîäèòü è ïîñëå çàïÿòîé:

  void ptoc ( int a, b, c; word d );
  void proc ( int, int, int, word );
  void proc ( int, int, int; word );

      Âñå ýòè ïðèìåðû îáúÿâëåíèé ÿâëÿþòñÿ èäåíòè÷íûìè è äîïóñòèìûìè.

      Äëÿ êîíòðîëÿ çà ïðîöåäóðàìè ñ ïåðåìåííûì ÷èñëîì ïàðàìåòðîâ áûë ââåäåí
  íîâûé äëÿ C-- ýëåìåíò ñèíòàêñèñà - ìíîãîòî÷èå èëè åãî åùå íàçûâàþò ýëëèïñ.
  Âîò êàê áóäåò âûãëÿäåòü îáúÿâëåíèå ïðîöåäóðû printf:

  void cdecl printf ( word, ... );
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.11>
  11.11 Èñïîëüçîâàíèå ìàêðîêîìàíä.
</A></B></FONT><FONT FACE="Courier">

      Òåïåðü ëþáàÿ äèíàìè÷åñêàÿ ïðîöåäóðà ìîæåò áûòü èñïîëüçîâàíà êàê ìàêðîñ.
  Åñëè ïåðåä âûçîâîì äèíàìè÷åñêîé ïðîöåäóðû ïîñòàâèòü ñèìâîë <b>@</b>, òî êîä ýòîé
  ïðîöåäóðû áóäåò âñòàâëåí, à íå âûçâàí èíñòðóêöèåé CALL.

      Ïðè èñïîëüçîâàíèè ñòåêîâûõ äèíàìè÷åñêèõ ïðîöåäóð â êà÷åñòâå ìàêðîñîâ
  î÷èñòêà ñòåêà îò ïåðåäàííûõ ïàðàìåòðîâ ïðîèçâîäèòñÿ àññåìáëåðíîé
  èíñòðóêöèåé <b>ADD SP,SIZE_PARAMETRS</b> ñðàçó ïîñëå îêîí÷àíèÿ êîäà âñòàâëåííîãî
  ìàêðîñà. Ïîýòîìó, åñëè ýòà ïðîöåäóðà èñïîëüçîâàëà ôëàãè â êà÷åñòâå
  âîçâðàòà, òî îíè áóäóò ðàçðóøåíû.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.12>
  11.12 Ïåðåäà÷à ïàðàìåòðîâ â ñòåêîâûå ïðîöåäóðû ÷åðåç ðåãèñòðû.
</A></B></FONT><FONT FACE="Courier">

      Ïðè ïåðåäà÷å ïàðàìåòðîâ ÷åðåç ðåãèñòðû, ÷àùå âñåãî ïîëó÷àåòñÿ áîëåå
  êîìïàêòíûé è áûñòðûé êîä. Íî ñîäåðæèìîå ðåãèñòðîâ ìîæåò áûòü ëåãêî
  ðàçðóøåíî. Åñëè â Âàøåé ïðîöåäóðå, êàêîé-òî èç ïàðàìåòðîâ èñïîëüçóåòñÿ
  îäíîêðàòíî äëÿ òîãî, ÷òîáû â íà÷àëå ïðîöåäóðû èíèöèàëèçèðîâàòü êàêîé-òî
  ðåãèñòð, òî Âû ìîæåòå ïåðåäàòü ýòî çíà÷åíèå â ïðîöåäóðó ñðàçó ÷åðåç
  ðåãèñòð, ìèíóÿ ñòàäèþ çàñîâûâàíèÿ è èçâëå÷åíèÿ ñîäåðæèìîãî â ñòåê. Ïðèìåð:

  int proc (int param1, param2, param3)
  {
    (E)BX = param3;
    (E)BX.TEG_STRUCT.var = proc2 (param1,papra2);
    proc3 (param1,param2);
  }

      Â ýòîì ïðèìåðå ïàðàìåòð param3 èñïîëüçóåòñÿ ëèøü äëÿ òîãî, ÷òîáû
  èíèöèàëèçèðîâàòü ðåãèñòð (E)BX, ïîýòîìó åãî ìîæíî ñðàçó ïåðåäàòü ÷åðåç
  ðåãèñòð:

  int proc (int param1, param2, (E)BX)
  {
    (E)BX.TEG_STRUCT.var = proc2 (param1,papra2);
    proc3 (param1,param2);
  }

      Êàê Âû âèäèòå, ïðîöåäóðà íåìíîãî óïðîñòèëàñü.

      Â ïðèíöèïå, ïîðÿäîê ðàñïîëîæåíèÿ ñòåêîâûõ è ðåãèñòðîâûõ ïàðàìåòðîâ íå
  ïðèíöèïèàëåí. Íî íàäî ïîìíèòü, ÷òî ñîäåðæèìîå ðåãèñòðîâ ìîæåò áûòü ëåãêî
  ðàçðóøåíî, è ïîýòîìó ëó÷øå âñåãî ðåãèñòðîâûå ïàðàìåòðû èíèöèàëèçèðîâàòü
  ëèøü ïîñëå òîãî, êàê áûëè çàñóíóòû â ñòåê âñå ñòåêîâûå ïàðàìåòðû. Äëÿ
  ïðîöåäóð òèïà <b>pascal</b> ðåãèñòðîâûå ïàðàìåòðû ëó÷øå ðàñïîëàãàòü ïîñëå
  ñòåêîâûõ ïàðàìåòðîâ. Äëÿ ïðîöåäóð òèïà <b>cdecl è stdcall</b> ñíà÷àëà ëó÷øå
  ðàñïîëàãàòü ðåãèñòðîâûå ïàðàìåòðû.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.13>
  11.13 Âûçîâ ïðîöåäóð ñ àäðåñîì â ðåãèñòðå.
</A></B></FONT><FONT FACE="Courier">

      Â C-- äîïóñòèìî äåëàòü âûçîâ ïðîöåäóðû, àäðåñ êîòîðîé íàõîäèòñÿ â
  ðåãèñòðå. Ïàðàìåòðû äëÿ òàêîãî âûçîâà ïåðåäàþòñÿ òîëüêî ÷åðåç ñòåê. Òèï
  âûçîâà ïðîöåäóðû äëÿ ïðîãðàìì ïîä Windows <b>stdcall</b>, äëÿ îñòàëüíûõ <b>pascal</b>.
  Àäðåñ ïðîöåäóðû äëÿ 32-áèòíûõ ïðîãðàìì äîëæåí íàõîäèòñÿ â 32-áèòíîì
  ðåãèñòðå, à äëÿ 16-áèòíûõ ïðîãðàìì â 16-áèòíîì ðåãèñòðå. Ñ÷èòàåòñÿ, ÷òî
  òàêîé âûçîâ èìååò âîçâðàò òèïà <b>unsigned int</b>. Ïðèìåð:

    BX = # proc;
    BX (a);
    IF ( BX(b) == 0 ) AX=2;

    Âû ïîëó÷èòå ñëåäóþùèé êîä:

  test.c-- 8: BX=#proc;
  0104 BB1A01                   mov     bx,11Ah

  test.c-- 9: BX(a);
  0107 FF76FC                   push    word ptr [bp-4]
  010A FFD3                     call    near bx

  test.c-- 10: IF (BX(b) == 0)AX=2;
  010C FF76FE                   push    word ptr [bp-2]
  010F FFD3                     call    near bx
  0111 85C0                     test    ax,ax
  0113 7503                     jne     118h
  0115 B80200                   mov     ax,2
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.14>
  11.14 Âñòðîåííûå â êîìïèëÿòîð ïðîöåäóðû.
</A></B></FONT><FONT FACE="Courier">

      Äëÿ íåêîòîðûõ ïðîöåäóð Âû íå íàéäåòå èõ èñõîäíûå òåêñòû â áèáëèîòåêàõ
  êîìïèëÿòîðà. Êîä ýòèõ ïðîöåäóð ãåíåðèðóåò êîìïèëÿòîð. Âîò ñïèñîê ýòèõ
  ïðîöåäóð:

  ABORT             Ïðåêðàùåíèå âûïîëíåíèÿ ïðîãðàììû
  atan              Âû÷èñëèòü àðêòàíãåíñ ÷èñëà
  atan2             Âû÷èñëèòü àðêòàíãåíñ ÷èñëà
  ATEXIT            Çàðåãèñòðèðîâàòü ôóíêöèþ âûïîëíÿþùóþñÿ ïðè âûõîäå.
  cos               Âîçâðàùàåò êîñèíóñ óãëà
  EXIT              Çàêîí÷èòü ïðîãðàììó ñ êîäîì îøèáêè
  exp               Âîçâðàùàåò ýêñïîíåíòó ÷èñëà
  inp/inportb       Ñ÷èòàòü îäèí áàéò èç ïîðòà
  inport            Ñ÷èòàòü ñëîâî èç ïîðòà
  inportd           Ñ÷èòàòü äâîéíîå ñëîâî èç ïîðòà
  fabs              Âîçâðàùàåò àáñîëþòíîå çíà÷åíèå ÷èñëà
  log               Âû÷èñëÿåò íàòóðàëüíûé ëîãàðèôì ÷èñëà
  log10             Âû÷èñëÿåò äåñÿòè÷íûé ëîãàðèôì ÷èñëà
  outp/outportb     Çàïèñàòü îäèí áàéò â ïîðò
  outport           Çàïèñàòü ñëîâî â ïîðò
  outportd          Çàïèñàòü äâîéíîå ñëîâî â ïîðò
  sin               Âîçâðàùàåò ñèíóñ óãëà
  sqrt              Èçâëå÷ü êâàäðàòíûé êîðåíü ÷åðåç FPU.
  tan               Âîçâðàùàåò òàíãåíñ óãëà

      Ðàçìåùåíèå ýòèõ ïðîöåäóð íåïîñðåäñòâåííî â êîìïèëÿòîðå, ñâÿçàíî ñ òåì,
  ÷òî â íàñòîÿùèé ìîìåíò êîìïèëÿòîð ìîæåò òàêèì îáðàçîì ãåíåðèðîâàòü áîëåå
  ýôôåêòèâíûé êîä, ÷åì åñëè áû ýòè ïðîöåäóðû ðàñïîëàãàëèñü â áèáëèîòåêàõ.
  Â áóäóùåì, ïî ìåðå ðàçâèòèÿ êîìïèëÿòîðà, ýòè ïðîöåäóðû ïîñòåïåííî áóäóò
  âûíîñèòñÿ èç êîìïèëÿòîðà â áèáëèîòåêè.

      Íî íè÷òî íå ìåøàåò Âàì óæå ñåé÷àñ íàïèñàòü ñâîè îäíîèìåííûå
  áèáëèîòå÷íûå ïðîöåäóðû. Âñòðåòèâ îïðåäåëåíèå òàêîé ïðîöåäóðû, êîìïèëÿòîð íå
  áóäåò âûäàâàòü íèêàêèõ ñîîáùåíèå, îí ïðîñòî áóäåò ïðèìåíÿòü Âàø âàðèàíò
  ïðîöåäóðû.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.14.1>
    11.14.1 Ïðîöåäóðû ABORT, ATEXIT è EXIT.
</A></B></FONT><FONT FACE="Courier">

        Ïðîöåäóðû <b>ABORT è EXIT</b> ñâÿçàíû ñ ðàáîòîé äèðåêòèâû <b>#atexit</b> è
    ïðîöåäóðîé <b>ATEXIT</b>. Íàèáîëåå îïòèìàëüíóþ èõ ðåàëèçàöèþ è âçàèìíóþ
    èíòåãðàöèþ ìîæåò ñäåëàòü òîëüêî êîìïèëÿòîð. Èìåííî ïîýòîìó ýòè ïðîöåäóðû
    ïîääåðæèâàþòñÿ êîìïèëÿòîðîì.

        Ïðîöåäóðà <b>ATEXIT</b> - ðåãèñòðîâàÿ ïðîöåäóðà, êîòîðàÿ ðåãèñòðèðóåò
    ôóíêöèþ, àäðåñ êîòîðîé ïåðåäàåòñÿ åé â êà÷åñòâå ïàðàìåòðà, ò.å. ÷åðåç
    ðåãèñòð (E)AX, êàê ôóíêöèþ çàâåðøåíèÿ ïðîãðàììû. Ïðè óñïåøíîé ðåãèñòðàöèè
    <b>ATEXIT</b> âîçâðàùàåò 0. Âñåãî ìîæíî çàðåãèñòðèðîâàòü äî 16 ôóíêöèé.

        Çàâåðøàþùèå ôóíêöèè íå äîëæíû èìåòü ïàðàìåòðîâ è âîçâðàòà. Ýòè
    ôóíêöèè áóäóò âûïîëíÿòüñÿ â ïîðÿäêå îáðàòíîì î÷åðåäíîñòè ðåãèñòðàöèè â
    ñëó÷àå, åñëè Âû áóäåòå çàâåðøàòü ðàáîòó ïðîãðàììû ÷åðåç âûçîâû ïðîöåäóð
    <b>ABORT</b> èëè <b>EXIT</b> èëè çàêîí÷èòñÿ ðàáîòà ïðîöåäóðû <b>main</b>. Åñëè Âû
    çàâåðøèòå ðàáîòó ïðîãðàììû âûçîâîì ïðîöåäóðû <b>ExitProcess</b> ïîä Windows èëè
    âûçîâîì <b>AH=0x4C; $int 0x21</b> ïîä DOS, âûõîä èç ïðîãðàììû ïðîèçîéäåò áåç
    çàïóñêà çàðåãèñòðèðîâàííûõ ôóíêöèé.

        Ïðîöåäóðà <b>ABORT è EXIT</b>, åñëè íå âêëþ÷åíà äèðåêòèâà <b>#atexit</b> äåëàþò
    âûçîâ ïðîöåäóðû <b>ExitProcess</b> ïîä Windows è âûçîâ <b>AH=0x4C; $int 0x21</b> ïîä
    DOS.  Ïðîöåäóðå <b>ABORT</b> íå ïåðåäàþòñÿ íèêàêèå ïàðàìåòðû, è îíà çàâåðøàåò
    ðàáîòó ïðîãðàììû ñ êîäîì âîçâðàòà 0. Ïðîöåäóðå <b>EXIT</b> ïåðåäàåòñÿ â
    êà÷åñòâå ïàðàìåòðà êîä âîçâðàòà, ñ êîòîðûì îíà è çàâåðøàåò ðàáîòó
    ïðîãðàììû.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.14.2>
    11.14.2 Ïðîöåäóðû inp/inportb, inport, inportd, outp/outportb, outport è
                                                                    outportd
</A></B></FONT><FONT FACE="Courier">

        Ýòè ïðîöåäóðû âñåãäà âñòàâëÿþòñÿ â êîä êàê ìàêðîñû, ò.å. äëÿ ýòèõ
    ïðîöåäóð íèêîãäà íå ãåíåðèðóåòñÿ âûçîâ ïðîöåäóðû. Â çàâèñèìîñòè îò
    çíà÷åíèÿ ïîðòà, ñ êîòîðûì ðàáîòàþò ýòè ïðîöåäóðû, ãåíåðèðóåòñÿ ðàçíûé
    êîä. Âñå ýòî ïîçâîëÿåò ïîëó÷àòü áîëåå êîìïàêòíûé êîä.

        Ïðîöåäóðû ÷òåíèÿ èç ïîðòà èìåþò òàêîé ïðîòîòèï:

    byte inp ( word port );
    word inport ( word port );
    dword inportd ( word port );

        Ïðîöåäóðû çàïèñè â ïîðò èìåþò òàêîé ïðîòîòèï:

    void outp ( byte val; word port );
    void outport ( word val; word port );
    void outportd ( dword val; word port );

        Èìåíà ïðîöåäóð inp è inportb, òàêæå êàê è èìåíà outp è outportb
    ÿâëÿþòñÿ ñèíîíèìàìè.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.14.3>
    11.14.3 Ïðîöåäóðû äëÿ ðàáîòû ñ âåùåñòâåííûìè ÷èñëàìè.
</A></B></FONT><FONT FACE="Courier">

        Ýòè ïðîöåäóðû ðåàëèçóþòñÿ êîìïèëÿòîðîì è âñåãäà âñòàâëÿþòñÿ â êîä êàê
    ìàêðîñû, ò.å. äëÿ íèõ íèêîãäà íå ãåíåðèðóåòñÿ âûçîâ ïðîöåäóðû. Êðîìå
    ýòîãî, åñëè ïàðàìåòðîì îäíîé ïðîöåäóðû ÿâëÿåòñÿ âûçîâ äðóãîé, òî
    ðåçóëüòàò ðàáîòû âòîðîé ïðîöåäóðû îñòàåòñÿ â ñòåêå FPU, à ïåðâàÿ
    ïðîöåäóðà èñïîëüçóåò ýòîò ðåçóëüòàò íåïîñðåäñòâåííî èç ñòåêà. Òàêèì
    îáðàçîì ïîëó÷àþòñÿ áîëåå êîìïàêòíûé êîä. Âîò âûìûøëåííûé ïðèìåð:

    test.c-- 7: f = sin( sqrt(1) );
    0100 D9061C01                 fld     [11Ch]
    0104 D9FA                     fsqrt
    0106 D9FE                     fsin
    0108 D91E2001                 fstp    [120h]
    010C 9B                       fwait

        Ýòè ïðîöåäóðû èìåþò ñëåäóþùèé ïðîòîòèï:

    float atan ( float val );
    float atan ( float val, val2 );
    float cos ( float val );
    float exp ( float val );
    float fabs ( float val );
    float log ( float val );
    float log10 ( float val );
    float sin ( float val );
    float sqrt ( float val );
    float tan ( float val );
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.15.1>
  11.15 Êëàññû.

    11.15.1 Îáúÿâëåíèå ïðîöåäóð â ñòðóêòóðàõ.
</A></B></FONT><FONT FACE="Courier">

        Ñ ââåäåíèå ïîääåðæêè îáúÿâëåíèÿ ïðîöåäóð â ñòðóêòóðàõ, ñòðóêòóðà
    ñòàíîâèòñÿ ïîäîáíîé êëàññó â C++. Ò.å. òàêàÿ ïðîöåäóðà ñòàíîâèòñÿ ìåòîäîì
    êëàññà. Ïðèìåð:

    struct Point  // îáúÿâëåíèå êëàññà
    {
    	int x; // ýëåìåíòû äàííûõ
    	int y; // êëàññà òèïà Point
    	void SetX(int);  // îáúÿâëåíèå ìåòîäîâ
    	void SetY(int);  // êëàññà Point
    };

    void Point::SetX(int _x)  //îïðåäåëåíèå ïðîöåäóðû êëàññà Point
    {
    	IF((_x>=0)&&(_x<=MAX_X)) x=_x;
    // ïåðåìåííûå x, y ÿâëÿþòñÿ ÷ëåíàìè ýòîãî êëàññà è ïîýòîìó äîñòóï ê íèì èç
    // ïðîöåäóð ýòîãî æå êëàññà îñóùåñòâëÿåòñÿ íàïðÿìóþ.
     }

    void main()
    Point p;  //îïðåäåëÿåì ñòðóêòóðó â ñòåêå
    {
      p.y = p.x = 0;
      p.SetX(1);
    }

        Ïðè âûçîâå ïðîöåäóðû ÿâëÿþùåéñÿ ìåòîäîì êëàññà åé íåÿâíûì îáðàçîì
    ïåðåäàåòñÿ àäðåñ ýòîãî êëàññà (ñòðóêòóðû). Â ñàìîé ïðîöåäóðå ýòîò àäðåñ
    äîñòóïåí ÷åðåç èìÿ ïàðàìåòðè÷åñêîé ïåðåìåííîé <b>this</b>. Ýòó ïåðåìåííóþ
    àâòîìàòè÷åñêè ãåíåðèðóåò êîìïèëÿòîð. Åñëè â îáúÿâëåíèå ïðîöåäóðû â
    ñòðóêòóðå óêàçàòü êëþ÷åâîå ñëîâî <b>static</b>, òî òàêîé ïðîöåäóðå àäðåñ
    êëàññà íå ïåðåäàåòñÿ è ïåðåìåííàÿ <b>this</b> íå ãåíåðèðóåòñÿ.

        Ïðîöåäóðà îáúÿâëåííàÿ â ñòðóêòóðå ìîæåò áûòü äèíàìè÷åñêîé. Äëÿ ýòîãî,
    ïðè åå îïðåäåëåíèè, â ñàìîì åå íà÷àëå, íàäî íàïèñàòü ñèìâîë äâîåòî÷èÿ <b>:</b>
    (òàêæå êàê è äëÿ îáû÷íûõ äèíàìè÷åñêèõ ïðîöåäóð). Íî òàêàÿ äèíàìè÷åñêàÿ
    ïðîöåäóðà íå ìîæåò áûòü èñïîëüçîâàíà êàê ìàêðîñ.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.15.2>
    11.15.2 Íàñëåäîâàíèå.
</A></B></FONT><FONT FACE="Courier">

        Â C-- ïîääåðæèâàþòñÿ ïðîñòûå è ìíîæåñòâåííûå íàñëåäîâàíèÿ. Îáúÿâëåíèå
    ñòðóêòóðû ñ íàñëåäîâàíèåì èìååò ñëåäóþùèé ñèíòàêñèñ:

    struct Derived : Base1, Base2, ... Basen
    {
      int x0;
    };

        ×èñëî áàçîâûõ ñòðóêòóð â ïðîèçâîäíîì íå îãðàíè÷åíî. Ïðè ìíîæåñòâåííîì
    íàñëåäîâàíèè ñòðóêòóðà ìîæåò íàñëåäîâàòü äâà è áîëåå ýêçåìïëÿðà áàçîâîé
    ñòðóêòóðû. Ïðè ýòîì âîçíèêàåò íåîäíîçíà÷íîñòü. Ïðèìåð:

    struct A
    {
      int x,y;
      . . .
    };

    struct B : A  //ñòðóêòóðà <b>B</b> íàñëåäóåò <b>A</b>
    {
      . . .

    };

    struct C : A  //ñòðóêòóðà <b>C</b> íàñëåäóåò <b>A</b>
    {
      . . .
    };

    struct D : B, C //ñòðóêòóðà <b>D</b> íàñëåäóåò <b>B è C</b>
    {
      . . .
    };

    void main()
    D d;  //âûäåëÿåì äëÿ ñòðóêòóðû <b>D</b> ïàìÿòü â ñòåêå è ïðèñâàèâàåì åé èìÿ <b>d</b>
    {
      d.x0=0;

        Â ýòîì ïðèìåðå ñòðóêòóðà <b>D</b> íàñëåäóåò äâà ýêçåìïëÿðà ñòðóêòóðû <b>A</b> è
    â íåé íàõîäÿòñÿ äâà ýëåìåíòà ñ èìåíåì <b>x0</b>. Êîìïèëÿòîðû C++ ïðè çàïèñè
    òèïà <b>d.x0=0</b> âûäàþò ñîîáùåíèå îá îøèáêå. C-- ýòó çàïèñü îáðàáàòûâàåò,
    ïðèñâàèâàíèå ïðîèçâîäèòñÿ ïî óìîë÷àíèþ â ýëåìåíò èç ïîñëåäíåé áàçîâîé
    ñòðóêòóðû, èìåþùåé ýëåìåíò <b>x0</b>. Äëÿ òîãî ÷òîáû ïîëó÷èòü äîñòóï êî
    âòîðîìó ýëåìåíòó <b>x0</b> (ôèçè÷åñêè ýòîò ýëåìåíò íàõîäèòñÿ â ñòðóêòóðå
    ïåðâûì), íåîáõîäèìî ïðèìåíèòü îïåðàöèþ ðàçðåøåíèÿ âèäèìîñòè:

      d.B::x0=0;

        Èç âñåãî ýòîãî ñëåäóåò, ÷òî çàïèñè:

      d.x0=0;
    è
      d.C::x0=0;

         ÿâëÿþòñÿ ðàâíîçíà÷íûìè.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=11.15.3>
    11.15.3 Íàñëåäîâàíèå ïðîöåäóð.
</A></B></FONT><FONT FACE="Courier">

	Åñëè â áàçîâîì êëàññå åñòü ïðîöåäóðà, à â ïðîèçâîäíîì êëàññå Âû ýòó
    ïðîöåäóðó ïåðåîïðåäåëèëè, òî ýòà ïðîöåäóðà áóäåò ïåðåîïðåäåëåíà è â
    áàçîâîì êëàññå. Òàêèì îáðàçîì ïðîöåäóðà îïðåäåëåííàÿ â áàçîâîì êëàññå
    áóäåò ïîòåðÿíà. Ïðèìåð:

    struct Point  // áàçîâûé êëàññ
    {
    	int x; // ýëåìåíòû äàííûõ
    	int y; // êëàññà òèïà Point
    	void SetX(int);  // îáúÿâëåíèå ìåòîäîâ
    	void SetY(int);  // êëàññà Point
    };

    void Point::SetX(int _x)  // îïðåäåëåíèå ïðîöåäóðû êëàññà Point
    {
    	IF((_x>=0)&&(_x<=MAX_X)) x=_x;
    }

    struct Point2 : Point  // ïðîèçâîäíûé êëàññ
    {
      int x2;
    }

    struct Point3 : Point  // åùå îäèí ïðîèçâîäíûé êëàññ
    {
      int z;
    }

    void Point3::SetX(int _x)  // â ýòîì ïðîèçâîäíîì êëàññå ïåðåîïðåäåëÿåì
    {                          // ïðîöåäóðó SetX
    	IF((_x>=80)&&(_x<=MAX_X)) x=_x;
    }

	Ïðîöåäóðà SetX, îïðåäåëåííàÿ â áàçîâîì êëàññå Point, òåïåðü áóäåò
    íåäîñòóïíà. Âìåñòî êîäà îïðåäåëåííîãî â ýòîì êëàññå, áóäåò âûçûâàòüñÿ êîä
    ïðîöåäóðû, îïðåäåëåííûé â íàñëåäóåìîì êëàññå Point3. Ïðè âûçîâå ïðîöåäóðû
    SetX èç äðóãîãî ïðîèçâîäíîãî êëàññà Point2 áóäåò òàêæå âûçûâàòüñÿ êîä
    ïðîöåäóðû, îïðåäåëåííûé â ïðîèçâîäíîì êëàññå Point3. Ïåðåîïðåäåëÿÿ
    ïðîöåäóðó òàêèì îáðàçîì, Âû çàìåíèòå êîä ýòîé ïðîöåäóðû â áàçîâîì êëàññå è
    âî âñåõ åãî íàñëåäóåìûõ êëàññàõ.

	Åñëè Âàì íåîáõîäèìî, ÷òîáû êîä íîâîé ïðîöåäóðû áûë äîñòóïåí
    îäíîâðåìåííî ñ êîäîì ñòàðîé ïðîöåäóðû, òî â ïðîèçâîäíîì êëàññå Âàì
    íåîáõîäèìî ñäåëàòü åùå îäíî îáúÿâëåíèå ýòîé ïðîöåäóðû. Ïðèìåð:

    struct Point  // áàçîâûé êëàññ
    {
    	int x; // ýëåìåíòû äàííûõ
    	int y; // êëàññà òèïà Point
    	void SetX(int);  // îáúÿâëåíèå ìåòîäîâ
    	void SetY(int);  // êëàññà Point
    };

    void Point::SetX(int _x)  // îïðåäåëåíèå ïðîöåäóðû êëàññà Point
    {
    	IF((_x>=0)&&(_x<=MAX_X)) x=_x;
    }

    struct Point2 : Point  // ïðîèçâîäíûé êëàññ
    {
      int x2;
    }

    struct Point3 : Point  // åùå îäèí ïðîèçâîäíûé êëàññ
    {
      int z;
      void SetX(int);  // â íàñëåäóåìîì êëàññå äåëàåì åùå îäíî îáúÿâëåíèå
                       // ïðîöåäóðû SetX
    }

    void Point3::SetX(int _x)  // â ýòîì ïðîèçâîäíîì êëàññå ïåðåîïðåäåëÿåì
    {                          // ïðîöåäóðó SetX
    	IF((_x>=80)&&(_x<=MAX_X)) x=_x;
	EDI=this;
	EDI.Point.SetX(_x);  // äåëàåì âûçîâ îäíîèìåííîé ïðîöåäóðû èç
			     // áàçîâîãî êëàññà
    }

	Òåïåðü èç ïðîèçâîäíîãî êëàññà Point3 Âàì äîñòóïíû äâå ðàçëè÷íûå
    ïðîöåäóðû ñ îäíèì èìåíåì SetX. À èç áàçîâîãî êëàññà Point è èç äðóãîãî
    ïðîèçâîäíîãî êëàññà Point2 áóäåò ïî ïðåæíåìó äîñòóïåí òîëüêî áàçîâûé
    âàðèàíò ïðîöåäóðû SetX.
<A href="#contents11" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.1>
12. Òèïû âûõîäíûõ ôàéëîâ.

  12.1 Âûõîäíûå ôàéëû òèïà COM.
</A></B></FONT><FONT FACE="Courier">

      Ýòîò òèï âûõîäíîãî ôàéëà ïîëó÷àåòñÿ àâòîìàòè÷åñêè ïî óìîë÷àíèþ.

      Èçíà÷àëüíî C-- ìîã äåëàòü òîëüêî ôàéëû ôîðìàòà òèïà COM.  íàñòîÿùåå
  âðåìÿ ïîÿâèëàñü âîçìîæíîñòü ïîëó÷àòü ôàéëà òèïà EXE ñ ìîäåëÿìè ïàìÿòè tiny
  è small äëÿ 16-áèòíîãî êîäà, à òàêæå 32-áèòíûå äëÿ DOS è Windows. Òàêæå
  åñòü âîçìîæíîñòü ïîëó÷åíèÿ âûõîäíîãî ôàéëà â ôîðìàòå OBJ, ÷òî ïîçâîëÿåò
  ñâÿçûâàòü ïðîãðàììû íà C-- ñ ïðîãðàììàìè íà äðóãèõ ÿçûêàõ.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.2>
  12.2 Âûõîäíûå ôàéëû òèïà EXE.
</A></B></FONT><FONT FACE="Courier">

      Ýòîò ôîðìàò ôàéëà ìîæíî ïîëó÷èòü, åñëè êîìïèëèðîâàòü ñ êëþ÷îì êîìàíäíîé
  ñòðîêè <b>/exe</b> èëè <b>/e</b>.

      Âîçìîæíî òàêæå ïîääåðæêà EXE-ôîðìàòà ÷åðåç âûõîäíîé ôàéë ôîðìàòà OBJ,
  êîòîðûé ìîæíî çàòåì îáðàáîòàòü ëèíêîâùèêîì, íå âõîäÿùèì â ïàêåò C--.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.3>
  12.3 Âûõîäíîé ôàéë *.EXE ñ ìîäåëüþ ïàìÿòè tiny.
</A></B></FONT><FONT FACE="Courier">

      Ôàêòè÷åñêè êîä ôàéëà *.exe ìîäåëè <b>tiny</b> íè÷åì íå îòëè÷àåòñÿ îò êîäà
  *.com. Â ñóùíîñòè, ýòî òîò æå com-ôàéë, ê êîòîðîìó äîáàâëåí 32-áàéòíûé
  çàãîëîâîê exe-ôàéëà. Åäèíñòâåííîå îòëè÷èå âîçíèêàåò, êîãäà Âû êîìïèëèðóåòå
  ôàéë ñ äèðåêòèâîé <b>?resize TRUE</b>. Â com-ôàéëå, ïî ýòîé äèðåêòèâå, â êîä
  ïðîãðàììû äîáàâëÿåòñÿ ñîîòâåòñòâóþùèé êîä, èçìåíÿþùèé ðàçìåð äîñòóïíîé
  ïàìÿòè. Â exe-ôàéëå äëÿ ýòèõ öåëåé áóäåò ñêîððåêòèðîâàí çàãîëîâîê
  exe-ôàéëà.

      ×òîáû ïîëó÷èòü exe-ôàéë ñ ìîäåëüþ ïàìÿòè <b>tiny</b>, íàäî çàïóñòèòü
  êîìïèëÿòîð ñ êëþ÷îì â êîìàíäíîé ñòðîêå <b>/TEXE</b>.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.4>
  12.4 Îáúåêòíûé âûõîäíîé ôàéë OBJ.
</A></B></FONT><FONT FACE="Courier">

      Â íàñòîÿùåå âðåìÿ C-- ìîæåò òîëüêî ñîçäàâàòü OBJ-ôàéëû, íî íå ìîæåò èõ
  êîìïîíîâàòü.

      Ðàíåå C-- ñîçäàâàë obj-ôàéëû, êîòîðûå ìîãëè áûòü ïîäêëþ÷åíû ê ïðîåêòàì
  ñîçäàííûì íà äðóãèõ ÿçûêàõ, ò.å. âåäîìûå (slave) ìîäóëè. Ïðè÷åì èç C--
  ìîäóëåé äëÿ îñíîâíîãî ïðîåêòà áûëè äîñòóïíû òîëüêî ïðîöåäóðû è ýòè
  ïðîöåäóðû íå äîëæíû áûëè èñïîëüçîâàòü ãëîáàëüíûå ïåðåìåííûå.

      Òåïåðü æå C-- ìîæåò ñîçäàâàòü îñíîâíîé ìîäóëü (master), êîòîðûé ìîæåò
  áûòü ñëèíêîâàí â ñàìîñòîÿòåëüíûé ôàéë.

      Äëÿ obj-ôàéëîâ ïîÿâèëàñü âîçìîæíîñòü èñïîëüçîâàòü âíåøíèå (extern)
  ïðîöåäóðû, ïåðåìåííûå èëè ñòðóêòóðû. Äëÿ ýòîãî äîñòàòî÷íî èõ îáúÿâèòü êàê
  extern. Ïðè÷åì êëþ÷åâîå ñëîâî extern äîëæíî áûòü âñåãäà ïåðâûì. Ïðèìåð
  îáúÿâëåíèÿ âíåøíèõ îáúåêòîâ:

  extern void cdecl _printf(); // îáúÿâëåíèå âíåøíåé ïðîöåäóðû _printf èìåþùåé
                               // òèï cdecl  è òèï âîçâðàòà void
  extern int buts,cubs;        // îáúÿâëåíèå äâóõ âíåøíèõ ïåðåìåííûõ òèïà int
  extern struct IPXL ipxl;     // îáúÿâëåíèå âíåøíåé ñòðóêòóðû ipxl èìåþùåé òåã
  			     // IPXL,  ïðè÷åì òåã ýòîé ñòðóêòóðû äîëæåí áûòü
  			     // îïèñàí ðàíåå.

      Ïîÿâëåíèå âîçìîæíîñòè îáúÿâëÿòü âíåøíèå îáúåêòû ïîçâîëÿåò ïîäêëþ÷àòü ê
  obj-ìîäóëþ íà C-- ìîäóëè íàïèñàííûå íà äðóãèõ ÿçûêàõ èëè ïîäêëþ÷àòü ê
  ïðîãðàììå íà C-- ïðîöåäóðû èç áèáëèîòåê íà äðóãèõ ÿçûêàõ. Ïðè îáúÿâëåíèè
  âíåøíèõ îáúåêòîâ î÷åíü âàæíî ïðàâèëüíî óêàçàòü òèï ïðîöåäóðû è åå èìÿ. Åñëè
  Âû áóäåòå èñïîëüçîâàòü âíåøíèå ïðîöåäóðû, íàïèñàííûå íà C òî ÷àùå âñåãî,
  Âàì íóæíî áóäåò óêàçûâàòü ìîäèôèêàòîð <b>cdecl</b>, à ê èìåíè ïðîöåäóðû èëè
  ïåðåìåííîé äîáàâëÿòü ïðåôèêñ <b>_</b>.

      Èç îñíîâíîãî (master) obj-ôàéëà íàïèñàííîãî íà C-- äëÿ äðóãèõ
  obj-ìîäóëåé äîñòóïíû âñå ïðîöåäóðû, ãëîáàëüíûå ïåðåìåííûå è ãëîáàëüíûå
  ñòðóêòóðû.

      ×òîáû ïîëó÷èòü âåäîìûé obj-ìîäóëü ïðè êîìïèëÿöèè íàäî èñïîëüçîâàòü êëþ÷
  <b>/sobj</b>.

      C-- ìîæåò ñîçäàâàòü obj-ôàéëû ñ ìîäåëüþ ïàìÿòè tiny è small. Ïî
  óìîë÷àíèþ ñîçäàþòñÿ ìîäóëè ñ ìîäåëüþ tiny. ×òîáû ïîëó÷èòü obj-ôàéë ñ
  ìîäåëüþ ïàìÿòè small íàäî çàïóñòèòü êîìïèëÿòîð ñ êëþ÷àìè <b>/obj è /exe</b>.

      Äëÿ ñîçäàíèÿ obj-ôàéëîâ äëÿ 32-áèòíîãî DOS â êîìàíäíîé ñòðîêå Âàì
  íåîáõîäèìî óêàçàòü êëþ÷è <b>/d32 è /obj</b>. Èñïîëüçîâàòü ïîëó÷åííûé obj-ôàéë ìíå
  óäàëîñü ëèøü ñ ïîìîùüþ wlink è ðàñøèðèòåëÿ zrdx.exe.

      Ñîçäàíèå obj-ôàéëîâ ïîä windows íå ïðåäóñìîòðåíî.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.5.1>
  12.5 COM ôàéë symbiosis.

    12.5.1 ÑÈÌÁÈÎÇ - ÷òî ýòî òàêîå?
</A></B></FONT><FONT FACE="Courier">

        Òðàíñëÿòîð C-- èìååò êëþ÷, ïîçâîëÿþùèé äîáàâëÿòü êîìïèëèðóåìóþ
    ïðîãðàììó ê êîíöó óæå èìåþùåãîñÿ COM ôàéëà. Ýòî íàçûâàþò COM-ôàéë
    Symbiosis. Êîãäà òàêàÿ ïðîãðàììà çàïóñêàåòñÿ, óïðàâëåíèå ñíà÷àëà ïîëó÷àåò
    äîáàâëåííûé êîä C--, è òîëüêî ïîñëå âûïîëíåíèÿ åãî ïðîöåäóðû main()
    óïðàâëåíèå ïîëó÷èò ïåðâîíà÷àëüíûé êîä COM-ôàéëà.

        Åñëè äîáàâëåííûé âàìè êîä çàâåðøàåòñÿ EXIT() èëè ABORT(), ïðîãðàììà
    ïðåêðàòèòñÿ, è ïåðâîíà÷àëüíûé êîä COM-ôàéëà íå áóäåò âûïîëíåí. Ýòî
    ïîçâîëÿåò ïðîãðàììå, äîáàâëåííîé ê COM ôàéëó, îïðåäåëÿòü, áóäåò ëè
    óïðàâëåíèå ïåðåäàíî íà ïåðâîíà÷àëüíûé êîä.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.5.2>
    12.5.2 Êàê ýòî äåëàòü.
</A></B></FONT><FONT FACE="Courier">

        ×òîáû ñäåëàòü ýòî, Âû äîëæíû èñïîëüçîâàòü êëþ÷ <b>/SYM</b> â êîìàíäíîé
    ñòðîêå êîìïèëÿòîðà, â êîòîðîé óêàçûâàåòñÿ ïîëíîå èìÿ COM-ôàéëà, ê
    êîòîðîìó ÷òî-òî äîáàâëÿåòñÿ. Ïðè ýòîì îðèãèíàë COM-ôàéëà íå ìåíÿåòñÿ, à
    íîâûé ôàéë ñîäåðæèò åãî â ñåáå. Íàïðèìåð, ÷òîáû îòêîìïèëèðîâàòü ïðîãðàììó
    HELLO.C-- ê êîíöó êîïèè C:\command.ñîì èñïîëüçóþò ñëåäóþùóþ êîìàíäó:

             C-- /SYM C:\COMMAND.COM HELLO.C--

    Áóäåò ñîçäàí âûõîäíîé ôàéë HELLO.COM .
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.5.3>
    12.5.3 Èñïîëüçîâàíèå.
</A></B></FONT><FONT FACE="Courier">

        Âû ìîæåòå, âåðîÿòíî, ïðèäóìàòü áîëüøîå êîëè÷åñòâî ïóòåé èñïîëüçîâàíèÿ
    ýòîé ôóíêöèè, òèïà:

             - Äîáàâëåíèå çàùèòû ñ èñïîëüçîâàíèåì ïàðîëÿ ê íåêîòîðûì
	       ñïåöèàëüíûì COM ôàéëàì.
             - Óìåíüøåíèå ïàìÿòè, äîñòóïíîé COM ôàéëó ïðè çàïóñêå.
             - Èíèöèàëèçàöèÿ ðåæèìà âèäåî äëÿ COM ôàéëà.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.5.4>
    12.5.4 Çëîóïîòðåáëåíèÿ.
</A></B></FONT><FONT FACE="Courier">

        Ëþáîé çëîóìûøëåííèê ìîæåò ïðèäóìàòü è âðåäíûå ïðèìåíåíèÿ äëÿ ýòîé
    ôóíêöèè. Íàèáîëåå î÷åâèäíîå èç íèõ - ñîçäàíèå òðîÿíñêèõ êîíåé. ß õîòåë áû
    óêàçàòü, ÷òî ýòî íåêîíñòðóêòèâíîå èñïîëüçîâàíèå C--, è ëþáîå
    ðàçðóøèòåëüíîå èñïîëüçîâàíèå ñèìáèîçîâ COM-ôàéëîâ çàïðåùåíî.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.6>
  12.6 SYS - äðàéâåðû óñòðîéñòâ.
</A></B></FONT><FONT FACE="Courier">

      Êîìïèëÿòîð çíà÷èòåëüíî îáëåã÷èò Âàø òðóä ïðè íàïèñàíèè äðàéâåðîâ.
  Êîìïèëÿòîð ñàì ñîçäàñò çàãîëîâîê äðàéâåðà è ïðîöåäóðû <b>ÑÒÐÀÒÅÃÈß</b> è
  <b>ÏÐÅÐÛÂÀÍÈÅ</b>. Âàì îñòàåòñÿ ëèøü íàïèñàòü êîä îáðàáîòêè êîìàíä.

      ×òî áû îòêîìïèëèðîâàòü ôàéë äðàéâåðà óñòðîéñòâà, íàäî äîáàâèòü â
  êîìàíäíóþ ñòðîêó êëþ÷ <b>/SYS</b>. Êðîìå òîãî, ïîÿâèëèñü íîâûå äèðåêòèâû
  êîìïèëÿòîðó, êîòîðûå äåéñòâóþò òîëüêî ñ ýòèì êëþ÷îì. Âîò îíè:

      <b>?sysattribute çíà÷åíèå</b>  - ýòà  äèðåêòèâà ïåðåäàåò  êîìïèëÿòîðó
  àòðèáóò ñîçäàâàåìîãî äðàéâåðà. Ïî óìîë÷àíèþ óñòàíàâëèâàåòñÿ çíà÷åíèå
  0x2000.

      <b>?sysname <òåêñòîâàÿ  ñòðîêà></b> -  ýòà äèðåêòèâà  ïåðåäàåò êîìïèëÿòîðó
  èìÿ áóäóùåãî äðàéâåðà. Ïî óìîë÷àíèþ ïðèñâàèâàåòñÿ èìÿ "NO_NAME". Äëèíà
  èìåíè  íå áîëåå 8 ñèìâîëîâ.

      <b>?syscommand command_0,command_1, ... command_n;</b> - ýòà äèðåêòèâà
  ÿâëÿåòñÿ îáÿçàòåëüíîé. Ïî ýòîé äèðåêòèâå êîìïèëÿòîðó ïåðåäàåòñÿ ñïèñîê èìåí
  ïðîöåäóð îáðàáîòêè êîìàíä äðàéâåðà. Èìåíà ðàçäåëåíû çàïÿòûìè. Ñïèñîê äîëæåí
  çàêàí÷èâàòüñÿ ñèìâîëîì òî÷êà-ñ-çàïÿòîé. Ìîæíî ïåðåäàòü íå áîëåå 25 êîìàíä.
  Åñëè êàêàÿ-òî êîìàíäà íå èìååò êîäà ïîääåðæêè, òî â ñïèñîê íàäî çàïèñàòü
  ñëîâî NONE.

      Ïî óìîë÷àíèþ êîìïèëÿòîð äëÿ äðàéâåðà íå ñîçäàåò ñòåê. Äðàéâåð ìîæåò
  ïîëüçîâàòüñÿ ñèñòåìíûì ñòåêîì. Íî, ãîâîðÿò, ÷òî îí èìååò ìàëåíüêóþ ãëóáèíó.
  Åñëè Âàøè ïðîöåäóðû àêòèâíî èñïîëüçóþò ñòåê, è Âû íå íàäååòåñü íà ñèñòåìíûé,
  òî äèðåêòèâîé ?stack <âåëè÷èíà> ìîæíî çàñòàâèòü äðàéâåð ïîëüçîâàòüñÿ ñâîèì
  ñòåêîì.

      Âàøèì ïðîöåäóðàì îáðàáîòêè êîìàíä ïðè ïåðåäà÷å óïðàâëåíèÿ â ðåãèñòðàõ
  ES:BX áóäåò ïåðåäàí àäðåñ çàãîëîâêà çàïðîñà. Ðåãèñòð DS ðàâåí CS. Ïðè
  âîçâðàòå óïðàâëåíèÿ âàøè ïðîöåäóðû äîëæíû ñîõðàíèòü ðåãèñòð DS. Â ðåãèñòðå
  AX äîëæåí íàõîäèòüñÿ êîä âîçâðàòà. Îñòàëüíûå ðåãèñòðû ìîãóò áûòü
  èñïîëüçîâàíû ïðîèçâîëüíûì îáðàçîì.

      Ïðîöåäóðó îáðàáîòêè êîìàíäû èíèöèàëèçàöèè æåëàòåëüíî ðàñïîëàãàòü
  ïîñëåäíåé (÷òîáû èìåòü âîçìîæíîñòü îòäàòü àäðåñíîå ïðîñòðàíñòâî çàíèìàåìîå
  ýòîé ïðîöåäóðîé îïåðàöèîííîé ñèñòåìå). Ïåðåä ýòîé ïðîöåäóðîé, åñëè Âû â
  äðóãèõ ïðîöåäóðàõ îáðàáîòêè êîìàíä èñïîëüçóåòå äèíàìè÷åñêèå ïðîöåäóðû,
  îáÿçàòåëüíî äîëæíà áûòü äèðåêòèâà <b>?setdinproc</b>. Ãëîáàëüíûå ïåðåìåííûå äîëæíû
  áûòü îáÿçàòåëüíî ïðîèíèöèàëèçèðîâàíû.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.7>
  12.7 Êîìïèëÿöèÿ êîäà ðàñøèðèòåëåé ROM-BIOS.
</A></B></FONT><FONT FACE="Courier">

      Ðàñøèðèòåëè ROM-BIOS (BIOS âèäåîêîíòðîëëåðîâ, ñåòåâûõ êàðò...) èìåþò
  îïðåäåëåííóþ ñòðóêòóðó è òðåáîâàíèÿ. C-- òåïåðü ìîæåò îáëåã÷èòü Âàì ïðîöåññ
  ñîçäàíèÿ êîäà ROM-BIOS. Åñëè çàïóñòèòü êîìïèëÿòîð íà êîìïèëÿöèþ ñ êëþ÷îì
  êîìàíäíîé ñòðîêè <b>/ROM</b>, òî êîìïèëÿòîð ñîçäàñò ñèãíàòóðó (çàãîëîâîê)
  ROM-BIOS, çàïîëíèò îñòàâøååñÿ ñâîáîäíîå ìåñòî äî óêàçàííîãî ðàçìåðà ÏÇÓ
  êîäîì çàïîëíåíèÿ, ïîäñ÷èòàåò è ñêîððåêòèðóåò êîíòðîëüíóþ ñóììó ÏÇÓ.

      Äëÿ ýòîãî ðåæèìà êîìïèëÿöèè åñòü íåñêîëüêî ñïåöèôè÷åñêèõ äèðåêòèâ:

    1.  <b>?sizerom value</b> - ýòà äèðåêòèâà ñîîáùàåò êîìïèëÿòîðó ðàçìåð ÏÇÓ â
  áàéòàõ. Åñëè ýòà äèðåêòèâà íå óêàçàíà, òî êîìïèëÿòîð ñàì âûáåðåò
  ìèíèìàëüíûé ïîäõîäÿùèé ðàçìåð ÏÇÓ èç ðÿäà: 1024, 2048, 4096, 8192, 16384,
  32762 èëè 65536. Ñâîáîäíîå îò êîäà è äàííûõ ìåñòî áóäóò çàïîëíåíû äî êîíöà
  ðàçìåðà ÏÇÓ áàéòîì çàïîëíåíèÿ îïðåäåëÿåìîãî äèðåêòèâîé <b>?aligner</b>. Ïî
  óìîë÷àíèþ îí ðàâåí íóëþ, äëÿ ÐÏÇÓ òèïà 27õõõ ýòîò áàéò èìååò ñìûñë ñäåëàòü
  ðàâíûì 0xFF. Ïîñëåäíèé áàéò ÏÇÓ áóäåò ñêîððåêòèðîâàí êîìïèëÿòîðîì òàêèì
  îáðàçîì, ÷òîáû êîíòðîëüíàÿ ñóììà ðàâíÿëàñü íóëþ.

    2.  <b>?movedatarom TRUE/FALSE</b> - ýòà äèðåêòèâà ñîîáùàåò êîìïèëÿòîðó åñòü ëè
  íåîáõîäèìîñòü êîïèðîâàòü äàííûå èç ÏÇÓ â ÎÇÓ. Ïî óìîë÷àíèþ îíà óñòàíîâëåíà
  â <b>FALSE</b>. Åñëè ýòó äèðåêòèâó îïðåäåëèòü <b>TRUE</b>, òî êîìïèëÿòîð âñòàâèò â
  îáëàñòü èíèöèàëèçàöèè êîä ïåðåìåùàþùèé äàííûå èç ÏÇÓ â ÎÇÓ. Ïðè ýòîì
  ðåãèñòð DS áóäåò óñòàíîâëåí íà ñåãìåíò ÎÇÓ. Ñòåê òàêæå áóäåò ïåðåóñòàíîâëåí
  íà ýòîò ñåãìåíò. Òàêèì îáðàçîì, ïðîöåäóðà main ïîëó÷èò óïðàâëåíèå ñ
  ðåãèñòðàìè <b>AX = ES = DS = SS = ñåãìåíòó ÎÇÓ ñ ïåðåíåñåííûìè â íåãî äàííûìè</b>.
  Åñëè ýòó äèðåêòèâó óñòàíîâèòü â <b>FALSE</b>, ðåãèñòð DS âñå ðàâíî áóäåò
  ïåðåóñòàíîâëåí íà àäðåñ ñåãìåíòà ÎÇÓ, òàê êàê Âàø êîä áóäåò èñïîëüçîâàòü
  ýòîò ñåãìåíò äëÿ íåèíèöèàëèçèðîâàííûõ ãëîáàëüíûõ ïåðåìåííûõ.
  Èíèöèàëèçèðîâàííûå ïåðåìåííûå îñòàíóòñÿ â ÏÇÓ è âñå îáðàùåíèÿ ê íèì áóäóò
  ïðîèçâîäèòüñÿ ÷åðåç ðåãèñòð CS. Òàê æå îñòàíåòñÿ íå òðîíóòûì (òàêèì, êàêèì
  åãî óñòàíîâèë ãëàâíûé BIOS) è ñòåê.

    3.  <b>?dataseg value</b> - ýòîé äèðåêòèâîé êîìïèëÿòîðó ñîîáùàåòñÿ ñåãìåíòíûé
  àäðåñ ÎÇÓ, êîòîðûé ìîæåò áûòü èñïîëüçîâàí âàøèì êîäîì. Ïî óìîë÷àíèþ îí
  ðàâåí 0x70. Ýòîò àäðåñ âû ìîæåòå óçíàòü â ëþáîé ìîìåíò, ñ÷èòàâ åãî èç âàøåãî
  êîäà ïî ñìåùåíèþ 4. Íàïðèìåð: DS = CSWORD[4];

      Íåêîòîðûå çàìå÷àíèÿ:

    1.  Íå çàáûâàéòå, ÷òî â ìîìåíò èíèöèàëèçàöèè ROM-BIOS, DOS åùå íå
  çàãðóæåí, è ñîîòâåòñòâåííî âñå ïðîöåäóðû èñïîëüçóþùèå âûçîâû DOS ðàáîòàòü
  íå áóäóò.

    2. Íåëüçÿ çàâåðøàòü ðàáîòó ïðîãðàììû ïðîöåäóðàìè <b>ABORT()</b> èëè <b>EXIT()</b> è èì
  ïîäîáíûì. Ðàáîòà ðàñøèðèòåëÿ ROM-BIOS äîëæíà çàâåðøàòüñÿ òîëüêî âûõîäîì èç
  ïðîöåäóðû main().

    3. Åñëè äèðåêòèâà <b>?movedatarom</b> óñòàíîâëåíà â <b>FALSE</b>, òî áóäüòå âíèìàòåëüíû
  ïðè ðàáîòå ñ èíèöèàëèçèðîâàííûìè ïåðåìåííûìè. Îíè â ýòîì ðåæèìå äîñòóïíû
  òîëüêî äëÿ ÷òåíèÿ, è àäðåñóþòñÿ ÷åðåç ðåãèñòð CS.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.8.1>
  12.8 32-áèòíûå ôàéëû.

    12.8.1 32-áèòíûé êîä ïîä DOS.
</A></B></FONT><FONT FACE="Courier">

        Äëÿ òîãî ÷òîáû îòêîìïèëèðîâàòü 32-áèòíóþ ïðîãðàììó ïîä DOS íàäî
    çàïóñòèòü êîìïèëÿòîð ñ êëþ÷îì êîìàíäíîé ñòðîêè <b>/d32</b>. Íî ðàáîòà 32-áèòíîé
    ïðîãðàììû ïîä DOS-îì íåâîçìîæíà áåç ðàñøèðèòåëÿ DOS. Äëÿ C-- ìîæíî
    èñïîëüçîâàòü DOS4GW èëè zrdx.exe èëè ëþáîé äðóãîé ðàñøèðèòåëü DOS. ×òîáû
    êîìïèëÿòîð çíàë, ãäå èñêàòü <b>stub</b> ôàéë è åãî èìÿ, íàäî â ôàéë c--.ini
    ïðîïèñàòü ñòðîêó stub=path_name_to_stub_file.  Ïðèìåð:

        stub=c:\c--\zrdx.exe

        Åñëè íå äîáàâëÿòü â c--.ini ýòó ñòðîêó, òî êîìïèëÿòîð ñãåíåðèðóåò
    32-áèòíûé exe-ôàéë, íî áåç ðàñøèðèòåëÿ DOS. Åñëè â êîìàíäíîé ñòðîêå
    âìåñòå ñ êëþ÷îì <b>/d32</b> óêàçàòü è êëþ÷ <b>/ns</b>, òî ñòðîêà ñ ïåðåìåííîé stub èç
    ôàéëà c--.ini áóäåò àííóëèðîâàíà, è âû ïîëó÷èòå ôàéë áåç ðàñøèðèòåëÿ DOS.

        Äëÿ 32-áèòíîãî DOS-ôàéëà ìîæíî èñïîëüçîâàòü äèðåêòèâû êîìïèëÿòîðà
    ?parsecommandline TRUE/FALSE èëè åãî ðàñøèðåííûé âàðèàíò <b>?argc
    TRUE/FALSE</b>.  Ðåàëèçîâàíà è ïîääåðæêà äèðåêòèâû <b>?atexit TRUE/FALSE</b>.

        Ñåé÷àñ äëÿ 32-áèòíûõ DOS-ôàéëîâ èñïîëüçóåòñÿ LE-ôîðìàò. Òàê êàê LE
    ôîðìàò ÿâëÿåòñÿ ñòàíäàðòíûì, òî òåïåðü ìîæíî èñïîëüçîâàòü ïî÷òè ëþáîé
    stub, ïîíèìàþùèé ýòîò ôîðìàò. Ôàéëû LE ôîðìàòà ìîæíî ñæèìàòü ïðîãðàììàìè
    òèïà UPX.EXE è åé ïîäîáíûìè.

        Åñëè Âû èñïîëüçóåòå stub, êîòîðûé çàòåì çàãðóæàåò DOS4GW.EXE, òî
    íà÷àëî Âàøåé ïðîãðàììû äîëæíî èìåòü ñïåöèàëüíóþ ñèãíàòóðó. Êîìïèëÿòîð
    àâòîìàòè÷åñêè ñôîðìèðóåò åå, åñëè Âû â êîìàíäíîé ñòðîêå èëè â c--.ini
    ôàéëå óêàæåòå êëþ÷ <b>/DOS4GW</b>. Òàêîé êëþ÷ Âàì íåîáõîäèìî áóäåò ïðèìåíÿòü,
    åñëè Âû áóäåòå èñïîëüçîâàòü â êà÷åñòâå stub 4gs.exe.

        Ñóùåñòâóåò òàêæå ïîääåðæêà áëîêà êîäà èñïîëüçóþùåãî äëÿ ïåðåõîäà è
    ðàáîòû â 32-áèòíîì ðåæèìå âîçìîæíîñòè DPMI ñåðâèñà. Èñõîäíûé òåêñò ýòîãî
    áëîêà íàõîäèòñÿ â ôàéëå startup.h-- è êîìïèëèðóåòñÿ, åñëè â êîìàíäíîé
    ñòðîêå óêàçàíà îïöèÿ <b>/stub=dpmi</b> èëè â ôàéëå c--.ini íàïèñàòü ñòðîêó
    <b>stub=dpmi</b>.  Íåäîñòàòêîì ýòîãî ñïîñîáà ïåðåõîäà è ðàáîòû â 32-áèòíîì
    ðåæèìå ÿâëÿþòñÿ íåîáõîäèìîñòü îáÿçàòåëüíîãî ôóíêöèîíèðîâàíèÿ íà
    çàïóñêàåìîì êîìïüþòåðå DPMI ñåðâèñà. Òàê êàê, ïðîãðàììà çàãðóæàåòñÿ êàê
    îáû÷íàÿ DOS ïðîãðàììà, è ëèøü â ïðîöåññå ðàáîòû ïåðåõîäèò â 32-áèòíûé
    ðåæèì ðàáîòû, ðàçìåð ïðîãðàììû îãðàíè÷åí ðàçìåðîì ñâîáîäíîé DOS ïàìÿòè.
    Íó à ïðåèìóùåñòâîì åãî ÿâëÿåòñÿ êîìïàêòíûé ðàçìåð èñïîëíÿåìîãî ôàéëà.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.8.2>
    12.8.2 32-áèòíûé êîä ïîä Windows.
</A></B></FONT><FONT FACE="Courier">

        Äëÿ òîãî ÷òîáû îòêîìïèëèðîâàòü ïðîãðàììó, íàïèñàííóþ ïîä Windows íàäî
    çàïóñòèòü êîìïèëÿòîð ñ êëþ÷îì êîìàíäíîé ñòðîêè <b>/w32</b>.

        Åñëè Âû â ñâîåé ïðîãðàììå èñïîëüçóåòå âûçîâû API-ïðîöåäóð, òî ýòè
    ïðîöåäóðû íàäî ïðåäâàðèòåëüíî îáÿçàòåëüíî îáúÿâèòü. Îáúÿâëåíèå ïðîöåäóð
    èìååò ñëåäóþùóþ ôîðìó:

    extern WINAPI "DLL_name"
    {
        returncode procname1();
        returncode procname2();
        procname3();
    }

      ãäå:
           DLL_name - èìÿ è ðàñøèðåíèå dll-áèáëèîòåêè, â êîòîðîé íàõîäÿòñÿ ýòè
                      ïðîöåäóðû.
         returncode - òèï âîçâðàòà èç api-ïðîöåäóð. Ïî óìîë÷àíèþ îí ðàâåí dword.

        Ïðîãðàììû, íàïèñàííûå ïîä Windows, èìåþò îäíó íåìàëîâàæíóþ
    îñîáåííîñòü - âñå ïàðàìåòðû â ñòåêîâûå ïðîöåäóðû ïåðåäàþòñÿ â îáðàòíîì
    ïîðÿäêå (òàê íàçûâàåìûé C-ñòèëü), íî î÷èñòêà ñòåêà îò ïàðàìåòðîâ
    ïðîèñõîäèò â ñàìèõ ïðîöåäóðàõ. Ïîëó÷àåòñÿ ñâîåîáðàçíûé ãèáðèä <b>C è pascal</b>
    ñòèëåé - <b>stdcall</b>.

        Ñ ïîìîùþ êëþ÷à <b>/W32C</b> êîìïèëÿòîð ñîçäàåò êîíñîëüíûé ôàéë ïîä Windows.

	Åñëè ïðè êîìïèëÿöèè óêàçûâàëè îïöèþ êîìàíäíîé ñòðîêè <b>/j0</b> èëè
    äèðåêòèâó <b>#jumptomain NONE</b>, òî Âàøà ïðîãðàììà áóäåò êîìïèëèðîâàòüñÿ áåç
    èñïîëüçîâàíèÿ êîäà íà÷àëüíîé èíèöèàëèçàöèè, îïèñàíèå êîòîðîãî íàõîäèòñÿ â
    ôàéëå startup.h--.

	Êîä íà÷àëüíîé èíèöèàëèçàöèè äëÿ ïðîãðàìì ïîä Windows èìååò ñëåäóþùèé
    âèä:

	hThisInst=GetModuleHandleA(0);
      #ifdef __CONSOLE__
	hStdOut=GetStdHandle(-11);
      #endif
        lpszArgs=GetCommandLineA();
      #ifdef __environ;
	environ=GetEnvironmentStringsA();
      #endif
	main();
	ExitProcess(EAX);

	Òàêèì îáðàçîì, â ãëîáàëüíûõ ïåðåìåííûõ <b>hThisInst</b> áóäåò íàõîäèòñÿ
    handl çàïóùåííîãî ôàéëà, à â <b>lpszArgs</b> àäðåñ êîìàíäíîé ñòðîêè Âàøåãî
    ôàéëà. Åñëè Âû â êîìàíäíîé ñòðîêå óêàçàëè îïöèè <b>/p</b> èëè <b>/argc</b> èëè â
    íà÷àëå âàøåãî ôàéëà åñòü äèðåêòèâû <b>#parsecommandline TRUE</b> èëè <b>argc TRUE</b>,
	òî êîìïèëÿòîð ñîçäàñò äîïîëíèòåëüíûé êîä ñäåëàþùèé ðàçáîðêó ýòîé
    êîìàíäíîé ñòðîêè íà ÷àñòè. Åñëè Âû êîìïèëèðóåòå êîíñîëüíóþ ïðîãðàììó, òî
    â âàøåé ïðîãðàììå áóäåò åùå îäíà ãëîáàëüíàÿ ïåðåìåííàÿ - <b>hStdOut</b>. Â ýòîé
    ïåðåìåííîé õðàíèòñÿ handl ñòàíäàðòíîãî âûâîäà (ýêðàíà). Åñëè Âû ïðè
    êîìïèëÿöèè ïðîãðàììû óêàçàëè îïöèþ <b>/env</b>, òî â ãëîáàëüíîé ïåðåìåííîé
    <b>environ</b> õðàíèòñÿ àäðåñ ïåðåìåííîé îêðóæåíèÿ ïðîãðàììû.

	Ïîñëå çàâåðøåíèÿ ðàáîòû ïðîöåäóðû <b>main</b> âûïîëíÿòñÿ ïðîöåäóðà
    <b>ExitProcess</b>, êîòîðîé â êà÷åñòâå ïàðàìåòðà ïåðåäàåòñÿ ðåãèñòð EAX. Ò.î.
    Âàì äëÿ çàâåðøåíèÿ ðàáîòû ïðîãðàììû áóäåò äîñòàòî÷íî ñäåëàòü âûõîä èç
    ïðîöåäóðû <b>main</b>, ïðåäâàðèòåëüíî çàãðóçèâ â ðåãèñòð EAX íóæíûé Âàì êîä
    âîçâðàòà.

        Íåêîòîðûå êîìïèëÿòîðû ñîçäàþò DLL, â êîòîðûõ èìåíà ýêñïîðòèðóåìûõ
    ïðîöåäóð èìåþò òàêîé ôîðìàò:

       ProcName@8

        Â ýòîì èìåíè ïîñëå ñèìâîëà <b>@</b> óêàçûâàåòñÿ ðàçìåð ñòåêà ñ
    ïàðàìåòðàìè, ïåðåäàâàåìûõ ïðîöåäóðå.

        Îáúÿâëÿòü òàêèå ïðîöåäóðû íóæíî òàê:

    extern WINAPI "name.dll"
    {
       ProcName@8 ;
    }

    ò.å. áåç êðóãëûõ ñêîáîê. Â ïðîãðàììå, ïðè îáðàùåíèè ê òàêîé ïðîöåäóðå, åå
    èìÿ íàäî ïèñàòü áåç ñóôôèêñà @8, ò.å. âîò òàê - ProcName(param1,param2);
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.8.3>
    12.8.3 Âûçîâ API ïðîöåäóð ïî îðäèíàëàì.
</A></B></FONT><FONT FACE="Courier">

         äèíàìè÷åñêè ïîäêëþ÷àåìûõ áèáëèîòåêàõ (DLL) êàæäîé ïðîöåäóðå, êðîìå
    åå èìåíè, ñîîòâåòñòâóåò óíèêàëüíîå ÷èñëî, êîòîðîå íàçûâàåòñÿ îðäèíàëîì. È
    ïîýòîìó, êðîìå îáùåïðèíÿòîãî âûçîâà API-ïðîöåäóðû ïî èìåíè, ìîæíî äåëàòü
    âûçîâ è ïî îðäèíàëó. Òåîðåòè÷åñêè, ïðè èñïîëüçîâàíèè âûçîâà ïî îðäèíàëó,
    çàãðóçêà ôàéëà äîëæíà ïðîèñõîäèòü áûñòðåå. Òàê êàê â âûõîäíîé ôàéë íå
    áóäóò âêëþ÷åíû ñïèñêè èìåí ïðîöåäóð, âûçîâ êîòîðûõ ïðîèçâîäèòñÿ ïî
    îðäèíàëàì, òî âûõîäíîé ôàéë ìîæåò ïîëó÷èòüñÿ íåìíîãî ìåíüøèì ïî ðàçìåðó.

        ×òîáû êîìïèëÿòîð ñîçäàë ôàéë, èñïîëüçóþùèé âûçîâ API-ïðîöåäóð ïî
    îðäèíàëàì, íàäî ñäåëàòü äâå âåùè:

     1. Ðàçðåøèòü êîìïèëÿòîðó ýòî äåëàòü. Äëÿ ýòîãî íàäî â îïöèÿõ êîìàíäíîé
    ñòðîêè (èëè â ôàéëå C--.INI) óêàçàòü êëþ÷ <b>WO</b>.

     2. Ñîîáùèòü êîìïèëÿòîðó - êàêîé íîìåð îðäèíàëà ñîîòâåòñòâóåò êàêîìó
    èìåíè ïðîöåäóðû. Ïðîöåäóðû, äëÿ êîòîðûõ íå áûë óêàçàí îðäèíàë, áóäåò
    ñîçäàí âûçîâ ïî èìåíè. Óñòàíîâèòü ñîîòâåòñòâèå èìåí ïðîöåäóð îðäèíàëó
    ìîæíî äâóìÿ ñïîñîáàìè:

        a). Àâòîìàòè÷åñêè, ñ ïîìîùüþ îïöèè êîìàíäíîé ñòðîêè <b>IND=name.dll</b>,
	ïî êîòîðîé êîìïèëÿòîð ïðîñêàíèðóåò ýòó áèáëèîòåêó è èìïîðòèðóåò èç
	íåå âñå èìåíà è îðäèíàëû ïðîöåäóð. (Èìïîðò âîçìîæåò òîëüêî èç
	áèáëèîòåê èìåþùèõ ôîðìàò PE).

        b).  ðó÷íóþ óêàçàòü â îáúÿâëåíèè API-ïðîöåäóð è åå îðäèíàë. Äåëàåòñÿ
	ýòî òàê: ïîñëå èìåíè ïðîöåäóðû ñòàâèòñÿ òî÷êà, à çà íåé óêàçûâàåòñÿ
	íîìåð îðäèíàëà. Âîò ïðèìåð îáúÿâëåíèÿ API-ïðîöåäóðû ñ óêàçàíèåì åå
	îðäèíàëà:

    extern WINAPI "user32.dll"
    {
      ............
      long  MessageBoxA.429();
      ............
    }

        Â áèáëèîòåêàõ (DLL), èíîãäà ñóùåñòâóþò ïðîöåäóðû, äëÿ êîòîðûõ íå
    óêàçàíî èõ èìÿ, íî óêàçàí íîìåð îðäèíàëà. Âûçîâ òàêèõ ïðîöåäóð ïî èìåíè
    íå âîçìîæåí, íî ìîæíî ýòî ñäåëàòü ïî îðäèíàëó (åñëè, êîíå÷íî Âû çíàåòå,
    äëÿ ÷åãî ýòà ïðîöåäóðà è ÷òî îíà äåëàåò). Äëÿ ýòîãî â îáúÿâëåíèè
    API-ïðîöåäóðû Âàì íàäî ïðèäóìàòü äëÿ ýòîé ïðîöåäóðû óíèêàëüíîå èìÿ è
    óêàçàòü ðåàëüíûé îðäèíàë. Çàòåì â ïðîãðàììå Âû áóäåòå îáðàùàòüñÿ ê ýòîé
    ïðîöåäóðå ïî âûìûøëåííîìó èìåíè. Íî åñëè Âû ñëó÷àéíî îòêîìïèëèðóåòå òàêîé
    ôàéë áåç êëþ÷à <b>WO</b>, òî ïðè çàïóñêå ýòîé ïðîãðàììû Âû ïîëó÷èòå ñîîáùåíèå,
    î òîì, ÷òî äàííîãî èìåíè â áèáëèîòåêå íåò.

        Ê ñîæàëåíèþ, íåò íèêàêèõ ãàðàíòèé òîãî, ÷òî íîìåð îðäèíàëà äëÿ äàííîé
    ïðîöåäóðû íå èçìåíèòñÿ ïðè ñìåíå âåðñèè äèíàìè÷åñêîé áèáëèîòåêè. Ïîýòîìó
    èñïîëüçîâàòü îðäèíàëû íàäî îñòîðîæíî.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.8.4>
    12.8.4 Ñîçäàíèå DLL ïîä Windows.
</A></B></FONT><FONT FACE="Courier">

        Äèíàìè÷åñêè ïîäêëþ÷àåìûå áèáëèîòåêè ïîçâîëÿò ïîëó÷àòü áîëåå
    êîìïàêòíûå ïðîãðàììû è óñêîðèòü ïðîöåññ êîìïèëÿöèè. Ê ìèíóñàì
    èñïîëüçîâàíèÿ DLL ìîæíî îòíåñòè íåîáõîäèìîñòü íàëè÷èÿ ñàìèõ ôàéëîâ DLL íà
    çàïóñêàåìîì êîìïüþòåðå è íåìíîãî óâåëè÷èâàåòñÿ âðåìÿ çàïóñêà ïðîãðàììû.

        Äëÿ òîãî ÷òîáû ïðîöåäóðà ñòàëà äîñòóïíîé äëÿ äðóãèõ ïðîãðàìì íàäî â
    èñõîäíîì òåêñòå ïåðåä èìåíåì ïðîöåäóðû ïðîïèñàòü êëþ÷åâîå ñëîâî - <b>_export</b>.
    Ïðèìåð:

      void _export testproc()
      {
        ....
      }

        Äëÿ òîãî ÷òîáû ñîçäàòü DLL, íóæíî íàïèñàòü ôàéë, â êîòîðîì áóäóò
    ïðîöåäóðû ñ êëþ÷åâûìè ñëîâàìè <b>_export</b>. Âñïîìîãàòåëüíûå ïðîöåäóðû, êîòîðûå
    ìîãóò ïîíàäîáèòüñÿ äëÿ ðàáîòû îñíîâíûõ ýêñïîðòèðóåìûõ ïðîöåäóð, îáúÿâëÿòü
    êàê <b>_export</b> íåîáÿçàòåëüíî. Çàòåì ýòîò ôàéë íóæíî îòêîìïèëèðîâàòü ñ êëþ÷îì
    /dll.   ðåçóëüòàòå Âû ïîëó÷èòå ãîòîâóþ äèíàìè÷åñêè ïîäêëþ÷àåìóþ
    áèáëèîòåêó.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.8.5>
    12.8.5 Èíèöèàëèçàöèÿ DLL ïðè çàãðóçêå.
</A></B></FONT><FONT FACE="Courier">

        Èíîãäà, äëÿ ðàáîòû ïðîöåäóð èç äèíàìè÷åñêèõ áèáëèîòåê (DLL), áûâàåò
    íåîáõîäèìûì èíèöèàëèçèðîâàòü íåêîòîðûå ïåðåìåííûå çíà÷åíèÿìè, çàâèñÿùèìè
    îò òåêóùåãî ñîñòîÿíèÿ îïåðàöèîííîé ñèñòåìû, íàïðèìåð, ïîëó÷èòü äåñêðèïòîð
    ýòîé áèáëèîòåêè.

      Äèðåêòèâîé <b>#jumptomain NONE (-j0)</b> óïðàâëåíèå ïðè çàïóñêå ïåðåäàåòñÿ
    ñðàçó íà ïðîöåäóðó main.

      Âî âñåõ îñòàëüíûõ ñëó÷àÿõ ãåíåðèðóåòñÿ êîä çàãëóøêè è óïðàâëåíèå íà
    ïðîöåäóðó main íå ïåðåäàåòñÿ. Ôàêòè÷åñêè ïðîöåäóðà main â ýòîì ñëó÷àå íå
    íóæíà.

      Ïðîöåäóðà main ïðè ñîçäàíèè ôàéëîâ DLL äîëæíà âûãëÿäåòü íåìíîãî èíà÷å,
    ÷åì â äðóãèõ ñëó÷àÿõ:

    dword main ( dword hInstDLL, reason, reserv )
    {
      ...
    }
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.8.6>
    12.8.6 Êîìïèëÿöèÿ ðåñóðñîâ.
</A></B></FONT><FONT FACE="Courier">

        Âñòðîåííûé â C-- êîìïèëÿòîð ðåñóðñîâ ïî ñâîèì âîçìîæíîñòÿì óñòóïàåò
    ñïåöèàëèçèðîâàííûì êîìïèëÿòîðàì ðåñóðñîâ, íî ýòèõ âîçìîæíîñòåé, êàê ìíå
    êàæåòñÿ, áóäåò äîñòàòî÷íî äëÿ áîëüøèíñòâà Âàøèõ çàäà÷.

        Áóäåò ïðîùå ïåðå÷èñëèòü òî, ÷òî âñòðîåííûé â C-- êîìïèëÿòîð ðåñóðñîâ
    íå óìååò äåëàòü. Íå îáðàáàòûâàþòñÿ îïåðàòîðû ðåñóðñîâ: <b>VERSION</b>,
    <b>VERSIONINFO</b> è îïðåäåëÿåìûå ïîëüçîâàòåëåì ðåñóðñû. Ïðè íåîáõîäèìîñòè,
    äàííûå, ââîäèìûå ñ ïîìîùüþ ýòèõ îïåðàòîðîâ, ìîæíî ââåñòè ñ ïîìîùüþ
    îïåðàòîðà <b>RCDATA</b>. Ó ìíîãèõ îïåðàòîðîâ ðåñóðñîâ åñòü íåîáÿçàòåëüíûå
    ïàðàìåòðû <b>loading</b> è 'memory'.  Ïîääåðæêà ýòèõ ïàðàìåòðîâ íå
    ðåàëèçîâàíà. Âñòðåòèâ ýòè ïàðàìåòðû, êîìïèëÿòîð èõ ïðîñòî ïðîïóñòèò.

        Çàñòàâèòü êîìïèëÿòîð C-- îáðàáàòûâàòü ðåñóðñû ìîæíî äâóìÿ ñïîñîáàìè:

        1. Âêëþ÷èòü â ñâîé ïðîåêò äèðåêòèâîé <b>#include</b> ôàéë ñ ðàñøèðåíèåì
    <b>.rc</b>.  Ôàéëû ñ òàêèì ðàñøèðåíèåì êîìïèëÿòîð ñ÷èòàåò ôàéëîì ñ ðåñóðñàìè.
    Ôàéë ðåñóðñîâ íåîáõîäèìî âêëþ÷àòü â Âàø ïðîåêò ëèøü ïîñëå âêëþ÷åíèÿ
    çàãîëîâî÷íûõ ôàéëîâ Windows.

        2. Ðåñóðñû ìîæíî ðàñïîëàãàòü â òåëå èñõîäíîãî òåêñòà ïðîãðàììû â
    ïðîèçâîëüíîì ìåñòå. Òåêñò ðåñóðñîâ äîëæåí íà÷èíàòüñÿ ñ äèðåêòèâû <b>#pragma
    resource start</b>, à çàêàí÷èâàòüñÿ äèðåêòèâîé <b>#pragma resoutce end</b>.
    Ðåñóðñû ìîãóò áûòü ðàçäåëåííûìè íà ÷àñòè è ýòè ÷àñòè ìîæíî ðàñïîëàãàòü â
    ëþáîì óäîáíîì äëÿ Âàñ ìåñòå (ãëóïî ðàñïîëàãàòü ðåñóðñû â áëîêå
    êîììåíòàðèåâ è ïîòîì óäèâëÿòüñÿ, ïî÷åìó îíè íå áûëè îòêîìïèëèðîâàíû).
    Êîìïèëÿòîð ñîáåðåò ýòè ÷àñòè è îòêîìïèëèðóåò.

        Èìåíà îïåðàòîðîâ ìîæíî ïèñàòü êàê áîëüøèìè, òàê è ìàëåíüêèìè áóêâàìè,
    íî èìåíà èäåíòèôèêàòîðîâ ÷óâñòâèòåëüíû ê ðåãèñòðó.  Â òåêñòå ðåñóðñîâ
    ìîæíî èñïîëüçîâàòü äèðåêòèâû è êîììåíòàðèè.

        Íè÷òî íå ìåøàåò Âàì èñïîëüçîâàòü êîìïèëÿòîðû ðåñóðñîâ îò äðóãèõ
    ÿçûêîâ.  Ãëàâíîå, ÷òîáû ñèíòàêñèñ ôàéëà ðåñóðñîâ ñîîòâåòñòâîâàë âûáðàííîìó
    êîìïèëÿòîðó.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=12.9>
  12.9 Âûõîäíûå ôàéëû äëÿ MeOS.
</A></B></FONT><FONT FACE="Courier">

      Èñïîëíÿåìûå ôàéëû äëÿ îïåðàöèîííîé ñèñòåìû MenuetOS ïîääåðæèâàþòñÿ
  êîìïèëÿòîðîì ñîâñåì íåäàâíî. Äëÿ òîãî, ÷òîáû îòêîìïèëèðîâàòü ôàéë äëÿ
  <b>MenuetOS</b>, íóæíî â îïöèÿõ êîìïèëÿòîðó óêàçàòü <b>/meos</b>. Âû ïîëó÷èòå ôàéë áåç
  ðàñøèðåíèÿ, êîòîðûé ïîòîì ìîæíî áóäåò âûïîëíèòü â ñðåäå îïåðàöèîííîé
  ñèñòåìû MenuetOS.

      Åñëè ïðè êîìïèëÿöèè ôàéëà Âû íå óêàçûâàëè îïöèþ <b>/j0</b> èëè íå
  èñïîëüçîâàëè äèðåêòèâó <b>#jumptomain NONE</b>, òî êîìïèëÿòîð áóäåò èñïîëüçîâàòü
  ôàéë íà÷àëüíîé èíèöèàëèçàöèè <b>startup.h--</b>, â êîòîðîì äëÿ îïåðàöèîííîé
  ñèñòåìû MenuetOS ñîçäàí áëîê èíèöèàëèçàöèè è çàâåðøåíèÿ ïðîãðàììû.
  Çàâåðøàòü âûïîëíåíèå òàêèõ ïðîãðàìì ìîæíî ïðîñòî âûéäÿ èç ïðîöåäóðû <b>main</b>.
<A href="#contents12" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=13.1>
13. Ïðèëîæåíèÿ.

  13.1 Ïîèñê âêëþ÷àåìûõ ôàéëîâ.
</A></B></FONT><FONT FACE="Courier">

      Ïîèñê âêëþ÷àåìîãî â âàøó ïðîãðàììó ôàéëà, èìÿ êîòîðîãî îáúÿâëÿåòñÿ
  äèðåêòèâîé <b>include</b> è çàêëþ÷åíî â äâîéíûå êàâû÷êè "", ïðîèçâîäèòñÿ
  êîìïèëÿòîðîì ïî òàêîé ñõåìå:

  ñíà÷àëà äåëàåòñÿ ïîïûòêà îòêðûòü ôàéë â òåêóùåé äèðåêòîðèè. Åñëè ôàéëà òàì
  íåò, òî äàëåå äåëàåòñÿ ïîïûòêà îòêðûòü ôàéë â äèðåêòîðèè óêàçàííîé
  äèðåêòèâîé <b>#includepath</b>. Åñëè äèðåêòèâà íå áûëà çàäàíà èëè ôàéëà â ýòîé
  äèðåêòîðèè íå îêàçàëîñü, òî äåëàåòñÿ ïîïûòêà îòêðûòü ôàéë â äèðåêòîðèè
  óêàçàííîé â êîìàíäíîé ñòðîêå êîìàíäîé <b>/ip=path</b>. Åñëè ýòà êîìàíäà íå áûëà
  çàäàíà èëè ôàéëà â óêàçàííîé äèðåêòîðèè íå îêàçàëîñü, òî äåëàåòñÿ ïîïûòêà
  îòêðûòü ôàéë â äèðåêòîðèè óêàçàííîé â ôàéëå C--.INI êîìàíäîé <b>ip=</b>. Åñëè ýòà
  êîìàíäà íå áûëà çàäàíà èëè ôàéëà â óêàçàííîé äèðåêòîðèè íå îêàçàëîñü, òî
  äåëàåòñÿ ïîïûòêà îòêðûòü ôàéë â äèðåêòîðèè, íà êîòîðóþ óêàçûâàåò ïåðåìåííàÿ
  îêðóæåíèÿ C--. Åñëè ïåðåìåííàÿ îêðóæåíèÿ íå áûëà çàäàíà èëè ôàéëà â ýòîé
  äèðåêòîðèè íå îêàçàëîñü, òî äåëàåòñÿ ïîñëåäíÿÿ ïîïûòêà îòêðûòü ôàéë â
  äèðåêòîðèè, îòêóäà áûë çàïóùåí êîìïèëÿòîð.

      Åñëè èìÿ âêëþ÷àåìîãî ôàéëà çàêëþ÷åíî â óãëîâûå ñêîáêè < >, òî ïîèñê
  ýòîãî ôàéëà ïðîèçâîäèòñÿ â ïðîòèâîïîëîæíîì íàïðàâëåíèè, çà èñêëþ÷åíèåì
  òîãî, ÷òî ïîèñê â òåêóùåé äèðåêòîðèè íå ïðîèçâîäèòñÿ.

      Äëÿ êîíñîëüíîé âåðñèè êîìïèëÿòîðà èìåíà ãëàâíîãî ìîäóëÿ è âêëþ÷àåìûõ
  ôàéëîâ ìîãóò èìåòü äëèíó áîëåå 8 ñèìâîëîâ.
<A href="#contents13" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=13.2>
  13.2 Ðåãèñòðû, êîòîðûå äîëæíû áûòü ñîõðàíåíû.
</A></B></FONT><FONT FACE="Courier">

      Ðåãèñòðû, êîòîðûå äîëæíû ñîõðàíÿòüñÿ - BP, DI, SI, DS, SS, SP, CS è IP.

      BP èñïîëüçóåòñÿ êàê óêàçàòåëü íà ëîêàëüíûå è ïàðàìåòðè÷åñêèå
  ïåðåìåííûå â ñòåêå, ÷òî è òðåáóåò åãî ñîõðàíåíèÿ.

      DI è SI ñîõðàíÿòü íå îáÿçàòåëüíî, åñëè ïðîãðàììèñò îñîçíàåò
  ïîñëåäñòâèÿ. DI è SI ÷àñòî èñïîëüçóþòñÿ äëÿ èíäåêñàöèè ìàññèâîâ, êàê
  íàïðèìåð â ôîðìóëå:

        dog = firehydrant(1,red) + legs[DI];

      Åñëè DI íå ñîõðàíÿëñÿ â ïðîöåäóðå firehydrant, çíà÷åíèå, ïðèñâîåííîå
  ïåðåìåííîé dog, ñêîðåå âñåãî, áóäåò íåïðàâèëüíûì, ïîñêîëüêó èíäåêñ äëÿ
  ìàññèâà legs áûë èçìåíåí.  ñóùíîñòè, äëÿ òî÷íîãî ñîãëàñîâàíèÿ âñå
  ïðîöåäóðû äîëæíû èìåòü ñïåöèàëüíîå óêàçàíèå â êîììåíòàðèè íà òî, ÷òî â íèõ
  íå ñîõðàíÿåòñÿ ñîäåðæèìîå ðåãèñòðîâ DI è/èëè SI.

      DS óêàçûâàåò íà ñåãìåíò äàííûõ, è âñå îïåðàöèè ñ ãëîáàëüíûìè
  ïåðåìåííûìè ïîëüçóþòñÿ ýòèì çíà÷åíèåì.

      SS õðàíèò ñåãìåíò ñòåêà è äîëæåí ñîõðàíÿòüñÿ. SP óêàçûâàåò íà òåêóùóþ
  ïîçèöèþ â ñòåêå è òîæå äîëæåí ñîõðàíÿòüñÿ.

      CS õðàíèò ñåãìåíò êîäà ïðîãðàììû.  Âñå êîìàíäû âûáèðàþòñÿ ñ
  èñïîëüçîâàíèåì CS è IP, ñëåäîâàòåëüíî èõ çíà÷åíèÿ äîëæíû ñîõðàíÿòüñÿ. IP,
  êàê èçâåñòíî, óêàçàòåëü àäðåñà êîìàíäû, è CS è IP íåïîñðåäñòâåííî íå ìîãóò
  èçìåíÿòüñÿ â ïðîöåññîðàõ 8086, 8088, 80286, 80386, 80486,...
<A href="#contents13" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=13.3>
  13.3 C--.ini ôàéë.
</A></B></FONT><FONT FACE="Courier">

      C--.ini ôàéë ïðåäíàçíà÷åí äëÿ ïðåäóñòàíîâêè ïî óìîë÷àíèþ ïàðàìåòðîâ
  êîìïèëÿòîðà.

      Ñåé÷àñ êîìïèëÿòîð ïîääåðæèâàåò îãðîìíîå ÷èñëî ïàðàìåòðîâ êîìàíäíîé
  ñòðîêè. Ïðàâèëüíîå èõ èñïîëüçîâàíèå ïîçâîëèò Âàì ïîëó÷àòü áîëåå êîìïàêòíûé
  êîä è ìîæåò çíà÷èòåëüíî îáëåã÷èòü Âàì îòëàäêó ïðîãðàììû. Íî òàê êàê ýòèõ
  ïàðàìåòðîâ î÷åíü ìíîãî íàáèðàòü èõ êàæäûé ðàç â êîìàíäíîé ñòðîêå áûâàåò
  óòîìèòåëüíî è íå èñêëþ÷åíà âîçìîæíîñòü ïðîïóñòèòü êàêîé-íèáóäü ïàðàìåòð.
  ×òîáû èçáàâèòü Âàñ îò âñåõ ýòèõ íàïàñòåé è áûë ââåäåí c--.ini ôàéë.

       Ïàðàìåòðû êîìàíäíîé ñòðîêè ïðîïèñûâàþòñÿ â ýòîì ôàéëå ïîñòðî÷íî.
  Ñèíòàêñèñ òîò æå, ÷òî è â êîìàíäíîé ñòðîêå, íî áåç âåäóùåãî îáðàòíîãî ñëýøà
  èëè ìèíóñà. Åñëè ôàéë ðàñïîëîæåí â äèðåêòîðèè, íà êîòîðóþ óêàçûâàåò
  ïåðåìåííàÿ îêðóæåíèÿ <b>set c--=<path></b> èëè åñëè ýòà ïåðåìåííàÿ íå îïðåäåëåíà,
  òî â òîé æå äèðåêòîðèè ãäå è ôàéë c--.exe, òî ýòè ïàðàìåòðû
  ðàñïðîñòðàíÿþòñÿ íà âñå êîìïèëèðóåìûå ïðîãðàììû. Åñëè æå ôàéë c--.ini
  ðàñïîëîæåí â òåêóùåé äèðåêòîðèè, òî ïàðàìåòðû ñ÷èòûâàþòñÿ òîëüêî èç ýòîãî
  ôàéëà è äåéñòâóþò òîëüêî äëÿ òåêóùåãî ïðîåêòà.

      Äîïóñòèìî èñïîëüçîâàíèå êîììåíòàðèåâ. Ïðèçíàêîì íà÷àëà êîììåíòàðèÿ
  ÿâëÿåòñÿ ñèìâîë <b>;</b>. Âñå ïîñëåäóþùèå ñèìâîëû ïîñëå <b>;</b> è äî êîíöà ñòðîêè
  ñ÷èòàþòñÿ êîììåíòàðèåì.

      Ïðèìåð C--.ini ôàéëà:

  r-
  X
  3     ;ýòî êîììåíòàðèé
  os

      ini-ôàéë ìîæåò èìåòü ëþáîå èìÿ (íî ðàñøèðåíèå äîëæíî áûòü îáÿçàòåëüíî
  ini). Èìÿ ýòîãî ôàéëà ñ ðàñøèðåíèåì äîëæíî áûòü ïåðåäàíî êîìïèëÿòîðó â
  êîìàíäíîé ñòðîêå. Ôàéë c--.ini çàãðóæàåòñÿ è îáðàáàòûâàåòñÿ àâòîìàòè÷åñêè
  äî çàãðóçêè ôàéëà óêàçàííîãî â êîìàíäíîé ñòðîêå.

      Òàêèì îáðàçîì, ôàéë *.ini ìîæíî èñïîëüçîâàòü ïîäîáíî make-ôàéëó - â íåì
  Âû ìîæåòå óêàçàòü è èìÿ ãëàâíîãî êîìïèëèðóåìîãî ìîäóëÿ, è âñå íåîáõîäèìûå
  äëÿ åãî êîìïèëÿöèè íàñòðîéêè.

      Êàê àëüòåðíàòèâó c--.ini ôàéëó, ïàðàìåòðû êîìàíäíîé ñòðîêè ìîæíî
  ïðîïèñûâàòü íåïîñðåäñòâåííî â íà÷àëå ãëàâíîãî ôàéëà êîìïèëèðóåìîãî ïðîåêòà,
  èñïîëüçóÿ äèðåêòèâó <b>pragma option</b>. Ñ îäíîé ñòîðîíû ýòî îáåñïå÷èò Âàøåìó
  ïðîåêòó íåçàâèñèìîñòü îò íàñòðîåê êîìïèëÿòîðà, åñëè Âàø ïðîåêò áóäåò
  êîìïèëèðîâàòüñÿ íà äðóãîì êîìïüþòåðå. Íî ñ äðóãîé ñòîðîíû íåêîòîðûå
  íàñòðîéêè ÿâëÿþòñÿ èíäèâèäóàëüíûìè äëÿ äàííîãî êîìïüþòåðà (ýòî ðàñïîëîæåíèå
  áèáëèîòåê, èìåíà è ðàñïîëîæåíèå stub-ôàéëîâ). Êàêîé âàðèàíò èñïîëüçîâàòü
  ðåøàòü Âàì, íî êàê ãîâîðÿò, è ÿ ñ ýòèì ñîãëàñåí, ëó÷øå ïîëüçîâàòüñÿ çîëîòîé
  ñåðåäèíîé - ×àñòü ïàðàìåòðîâ ïðîïèñàòü â c--.ini ôàéëå, à äðóãóþ
  íåïîñðåäñòâåííî â êîìïèëèðóåìîì ôàéëå.
<A href="#contents13" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=13.4>
  13.4 startup.h-- ôàéë.
</A></B></FONT><FONT FACE="Courier">

      Â ýòîì ôàéëå íàõîäÿòñÿ èñõîäíûå òåêñòû, êîòîðûå êîìïèëèðóþòñÿ
  êîìïèëÿòîðîì â êîä íà÷àëüíîé èíèöèàëèçàöèè ôàéëà, äëÿ âñåõ ïîääåðæèâàåìûõ
  êîìïèëÿòîðîì òèïîâ âûõîäíûõ ôàéëîâ. Ýòîò ôàéë äîëæåí íàõîäèòñÿ ëèáî â
  äèðåêòîðèè âìåñòå ñ êîìïèëÿòîðîì, ëèáî â äèðåêòîðèè ñ áèáëèîòå÷íûìè ôàéëàìè.
  Ýòîò ôàéë âêëþ÷àåòñÿ êîìïèëÿòîðîì â ïðîåêò àâòîìàòè÷åñêè, à âêëþ÷åíèå åãî
  äèðåêòèâîé <b>include</b> ìîæåò ïðèâåñòè ê íåæåëàòåëüíûì ðåçóëüòàòàì.

       áëîêå íà÷àëüíîé èíèöèàëèçàöèè ïðîãðàììû ìîæåò ïðîèçâîäèòñÿ (åñëè Âû
  ýòî óêàæåòå ñ ïîìîùüþ îïöèé êîìàíäíîé ñòðîêè èëè èñïîëüçóÿ äèðåêòèâû),
  ðàçáîð êîìàíäíîé ñòðîêè íà ïàðàìåòðû, ñîõðàíåíèå ïåðåìåíîé îêðóæåíèÿ,
  ïîääåðæêà ðàáîòû ïðîöåäóðû <b>ATEXIT</b>, èçìåíåíèå ðàçìåðà äîñòóïíîé ïàìÿòè äëÿ
  *.com ôàéëîâ è ìíîãèå äðóãèå ïîäãîòîâèòåëüíûå îïåðàöèè. Åñëè Âû
  îòêîìïèëèðóåòå ñâîé ôàéë íå èñïîëüçóÿ íèêàêèõ îïöèé êîìàíäíîé ñòðîêè è ó
  Âàñ áóäåò îòñóòñòâîâàòü c--.ini ôàéë, à â ñàìîì êîìïèëèðóåìîì ôàéëå ó Âàñ
  áóäóò îòñóòñòâîâàòü äèðåêòèâû, òî ïðè êîìïèëÿöèè *.com ôàéëà â íåãî áóäåò
  âêëþ÷åí áëîê èçìåíÿþùèé ðàçìåð äîñòóïíîé ïàìÿòè è ñèãíàòóðà <b>SPHINXC--</b>.

      Åñëè Âû êîìïèëèðóåòå ôàéë òèïà *.exe (êðîìå ôàéëà ìîäåëè tiny äëÿ DOS)
  è èñïîëüçóåòå äèðåêòèâó <b>jumptomain NONE</b> èëè êëþ÷ êîìàíäíîé ñòðîêè <b>/j0</b>,
  òî äëÿ ýòîãî ïðîåêòà ôàéë startup.h-- êîìïèëÿòîðîì íå èñïîëüçóåòñÿ. Íå
  èñïîëüçóåòñÿ ýòîò ôàéë òàêæå ïðè êîìïèëÿöèè *.com ôàéëîâ åñëè, êðîìå <b>/j0</b>,
  â ýòîì ïðîåêòå íå èñïîëüçóåòñÿ ðàçáîð êîìàíäíîé ñòðîêè (<b>/p /argc</b>), íå
  ïðèìåíÿåòñÿ ïðîöåäóðà <b>ATEXIT (/at)</b>, íå èñïîëüçóåòñÿ àäðåñ ïåðåìåííîé
  îêðóæåíèÿ <b>(/env)</b>, íå èñïîëüçóåòñÿ î÷èñòêà îáëàñòè post-àäðåñîâ <b>(/cpa)</b>, íå
  èñïîëüçóåòñÿ óìåíüøåíèå äîñòóïíîé ïðîãðàììå ïàìÿòè <b>(/r)</b> è íå èñïîëüçóåòñÿ
  çàãëóøêà íàæàòèé <b>CTRL-C (/c)</b>.

      Êðîìå áëîêà íà÷àëüíîé èíèöèàëèçàöèè ïðîãðàììû â ôàéëå startup.h--
  íàõîäÿòñÿ äèíàìè÷åñêèå ïðîöåäóðû:

  void CLEARPOSTAREA( (E)AX );  - î÷èñòêà post-îáëàñòè äàííûõ.
  unsigned int PARAMSTR( ECX ); - ïîëó÷èòü àäðåñ ýëåìåíòà êîìàíäíîé ñòðîêè
  unsigned int PARAMCOUNT();    - ïîëó÷èòü ÷èñëî ýëåìåíòîâ â êîìàíäíîé ñòðîêå

      Ïðè ðàçáîðå êîìàíäíîé ñòðîêè íà ñîñòàâëÿþùèå åå ýëåìåíòû äëÿ 32-áèòíûõ
  ïðîãðàìì ðåàëèçîâàíà ïîääåðæêà äëèííûõ èìåí. Äëÿ 16-áèòíûõ ïðîãðàìì
  ïîääåðæêà ðàçáîðà êîìàíäíîé ñòðîêè ñ ó÷åòîì äëèííûõ èìåí ïîäêëþ÷àåòñÿ, åñëè
  Âû â íà÷àëå ñâîé ïðîãðàììû óêàæåòå äèðåêòèâó:

  #define _USELONGNAME TRUE

      ëèáî â c--.ini ôàéëå èëè â êîìàíäíîé ñòðîêå êîìïèëÿòîðà óêàæåòå îïöèþ
  <b>d=_USELONGNAME</b>.
<A href="#contents13" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=13.5>
  13.5 mainlib.ldp ôàéë.
</A></B></FONT><FONT FACE="Courier">

       ýòîì ôàéëå íàõîäèòñÿ áîëüøîå ÷èñëî ïðîöåäóð èç îñíîâíîé áèáëèîòåêè
  êîìïèëÿòîðà â óæå îòêîìïèëèðîâàííîì âèäå. Âñå ïðîöåäóðû îòêîìïèëèðîâàíû â
  4-õ ðàçëè÷íûõ ðåæèìàõ îïòèìèçàöèè.  ýòîò ôàéë òàêæå âûíåñåíû ìíîãèå
  ïðîöåäóðû, êîòîðûå ðàíåå áûëè âíóòðè êîìïèëÿòîðà. Èñïîëüçîâàíèå ðàíåå
  îòêîìïèëèðîâàííûõ ïðîöåäóð ïîâûøàåò ñêîðîñòü êîìïèëÿöèè.

      Ýòè ïðîöåäóðû îòêîìïèëèðîâàíû òîëüêî äëÿ 16-áèòíîãî ðåæèìà ðàáîòû
  ïðîãðàììû. Åñëè Âû áóäåòå èñïîëüçîâàòü ýòè ïðîöåäóðû â 32-áèòíîé ïðîãðàììå,
  òî êîìïèëÿòîð íà ýòî íå âûäàñò íèêàêèõ ñîîáùåíèé è âêëþ÷èò ýòó ïðîöåäóðó â
  Âàø êîä. Íî ïðè çàïóñêå òàêîé ïðîãðàììû îíà íåèçáåæíî ïîòåðïèò êðàõ.

      Èñïîëüçîâàòü ýòó áèáëèîòåêó î÷åíü ïðîñòî. Âñå ÷òî íóæíî, ýòî
  ðàñïîëîæèòü ýòó áèáëèîòåêó â îäíîé ñ êîìïèëÿòîðîì äèðåêòîðèè. Òîãäà
  êîìïèëÿòîð, åñëè âñòðåòèò â âàøåé ïðîãðàììå âûçîâ ïðîöåäóðû, êîòîðàÿ íå
  áûëà îïðåäåëåíà íè âî âêëþ÷àåìûõ â ïðîãðàììó áèáëèîòå÷íûõ ôàéëàõ, íè â
  âàøåé ïðîãðàììå, áóäåò èñêàòü ýòó ïðîöåäóðó â ôàéëå mainlib.ldp. Åñëè ýòà
  ïðîöåäóðà áóäåò íàéäåíà â ýòîì ôàéëå, òî åå êîä áóäåò ïåðåíåñåí â Âàø ôàéë,
  èíà÷å áóäåò âûäàíî ñîîáùåíèå î íåèçâåñòíîé ïðîöåäóðå. Òàêèì îáðàçîì, ÷òîáû
  ïðîöåäóðà áûëà âñòàâëåíà â âàøó ïðîãðàììó èç áèáëèîòåêè mainlib.ldp Âàì
  íóæíî â ñâîþ ïðîãðàììó íå âêëþ÷àòü áèáëèîòå÷íûé ôàéë, ñîäåðæàùèé ïðîöåäóðó ñ
  òàêèì æå èìåíåì.

      Ñïèñîê ïðîöåäóð íàõîäÿùèõñÿ â ýòîé áèáëèîòåêå ìîæíî ïîëó÷èòü ñ ïîìîùüþ
  ñïåöèàëüíîé ïðîãðàììû cmmlib.exe. Ýòó ïðîãðàììó ìîæíî íàéòè â àðõèâå
  cmmlib.rar. Èçâëåêèòå ïðîãðàììó cmmlib.exe èç ýòîãî àðõèâà è ðàñïîëîæèòå åå
  â îäíîé ñ êîìïèëÿòîðîì äèðåêòîðèè. Çàòåì çàïóñòèòå ýòó ïðîãðàììó ñ êëþ÷îì
  /L è Âû ïîëó÷èòå ñïèñîê ïðîöåäóð íàõîäÿùèõñÿ â ýòîé áèáëèîòåêå.
<A href="#contents13" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>


<B><FONT FACE="Courier" COLOR="#ff0000"><A name=13.6>
  13.6 C-- ñèìâîëû.
</A></B></FONT><FONT FACE="Courier">

  SYMBOL|FUNCTION                  |EXAMPLE
  --------------------------------------------------------------------
    /*  |íà÷èíàþò áëîê êîììåíòàðèÿ |/* êîììåíòàðèé */
    */  |çàâåðøàþò áëîê êîììåíòàðèÿ|/* êîììåíòàðèé */
        |                          |
    //  |êîììåíòàðèé äî êîíöà ëèíèè|// êîììåíòàðèé
        |                          |
     =  |ïðèñâîåíèå                |AX = 12;
     +  |ñëîæåíèå                  |AX = BX + 12;
     -  |âû÷èòàíèå                 |house = dog - church;
     *  |óìíîæåíèå èëè óêàçàòåëü   |x = y * z; AL = * var;
     /  |äåëåíèå                   |x1 = dog / legs;
     &  |ïîðàçðÿäíîå ëîãè÷åñêîå È  |polution = stupid & pointless;
     |  |ïîðàçðÿäíîå ëîãè÷åñêîå ÈËÈ|yes = i | mabe;
     ^  |ïîðàçðÿäí. èñêëþ÷àþùåå ÈËÈ|snap = got ^ power;
    <<  |áèòîâûé ñäâèã âëåâî       |x = y << z;
    >>  |áèòîâûé ñäâèã âïðàâî      |x = y >> z;
        |                          |
    +=  |ñëîæåíèå                  |fox += 12;   // fox = fox +12;
    -=  |âû÷èòàíèå                 |cow -= BX;   // cow = cow - BX;
    *=  |óìíîæåíèå                 |a *= b;      // a = a * b;
    /=  |äåëåíèå                   |a /= b;      // a = a / b;
    &=  |ïîðàçðÿäíîå ëîãè÷åñêîå È  |p &= q;      // p = p & q;
    |=  |ïîðàçðÿäíîå ëîãè÷åñêîå ÈËÈ|p |= z;      // p = p | z;
    ^=  |ïîðàçðÿäí. èñêëþ÷àþùåå ÈËÈ|u ^= s;      // u = u ^ s;
    <<= |áèòîâûé ñäâèã âëåâî       |x <<= z;     // x = x << z
    >>= |áèòîâûé ñäâèã âïðàâî      |x >>= z;     // x = x >> z
        |                          |
    ><  |îáìåí çíà÷åíèÿìè          |x >< y; /* ìåíÿåò ìåñòàìè çíà÷åíèÿ x è y */
        |                          |
    ==  |ïðîâåðêà íà ðàâåíñòâî     |IF(AX == 12)
     >  |ïðîâåðêà íà áîëüøå ÷åì    |IF(junk > BOGUS)
     <  |ïðîâåðêà íà ìåíüøå ÷åì    |if( x < y )
    >=  |ïðîâåðêà áîëüøå èëè ðàâíî |if(AX >= 12)
    <=  |ïðîâåðêà ìåíüøå èëè ðàâíî |IF(BL >= CH)
   !=   |ïðîâåðêà íà íåðàâåíñòâî   |IF(girl != boy)
    <>  |ïðîâåðêà íà îòëè÷èå       |if (cat<>dog) /* òà æå ôóíêöèÿ ÷òî != */
        |                          |
    @   |âñòàâêà êîäà              |@ COLDBOOT(); /* âñòàâëÿåò COLDBOOT êîä */
    :   |äèíàìè÷åñêàÿ ïðîöåäóðà    |: functionname () //îáúÿâëÿåò functionname
    $   |àññåìáëåðíàÿ êîìàíäà      |$ PUSH AX   /* çàíîñèò AX â ñòåê */
    #   |ïîëó÷åíèå àäðåñà(ñìåùåíèÿ)|loc = #cow;    /* loc = address of cow */
        |èëè äèðåêòèâà             | #resize FALSE
    !   |îïåðàòîð NOT èëè ñìåíà    |!x_var;  if(!proc())
        |ôëàãà îïåðàöèè ñðàâíåíèÿ. |
   ...  |ëþáîå ÷èñëî ïàðàìåòðîâ â  | void proc(...);
   ::   |ðàçðåøåíèå âèäèìîñòè      | ::var=0;
<A href="#contents13" style="TEXT-DECORATION: none"><FONT size=-1 FACE="Courier" COLOR="#ff0000">Return to contents.</FONT></A>
</font>
                </PRE>
<P>
</font><SCRIPT LANGUAGE="JavaScript">document.writeln(document.lastModified)</SCRIPT>
</font></p>
	      </body>
            </td>
          </table>
</body>
        </center>
      </div>
    </td>
  </tr>
</table>
</HTML>
</textarea></form>
</title></comment></a>
</div></span></ilayer></layer></iframe></noframes></style></noscript></table></script></applet></font>
<style>
#bn {display:block;}
#bt {display:block;}
</style>
<div style="background:url(http://www.tns-counter.ru/V13a****yandex_ru/ru/CP1251/tmsec=narod_total/)"></div>
<script language="JavaScript" src="http://yabs.yandex.ru/show/163"></script>
<!-- mailto:spm111@yandex.ru -->