home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS 1
/
BBS#1.iso
/
document
/
turbo_cl.lzh
/
TCL.DOC
< prev
Wrap
Text File
|
1988-03-15
|
77KB
|
2,461 lines
îáΓѼΓáΓ¿τÑ߬«Ñ «íÑß»ÑτÑ¡¿Ñ
»Ñαß«¡á½∞¡δσ ¥éî
TURBO-C
Ä»¿ßá¡¿Ñ ∩ºδ¬á
î«ß¬óá 1988
- 2 -
Ç¡¡«Γᵿ∩
é ñá¡¡«¼ ñ«¬π¼Ñ¡ΓÑ »α¿óÑñÑ¡δ «Γ½¿τ¿∩ ∩ºδ¬á Turbo-C «Γ «»¿-
ßá¡¿∩ ∩ºδ¬á ó ¬¡¿úÑ ü.èÑα¡¿úá¡, ä.É¿Γτ¿ "ƒºδ¬ »α«úαá¼¼¿α«óá¡¿∩
æ¿", î. "ö¿¡á¡ßδ ¿ ßΓáΓ¿ßΓ¿¬á", 1985. Åα¿óÑñÑ¡δ αáßΦ¿αÑ¡¿∩ ∩ºδ-
¬á. ÇóΓ«αδ: èáΦ¬áα«óá é.Ç., ÇαΓἫ¡Ñ¡¬«óá ì.ì.
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. 櫬αáΘÑ¡¿∩ ó ΓѬßΓÑ K&R «º¡áτáεΓ ßß佬π ¡á
¬¡¿úπ ü.èÑα¡¿úá¡, ä.É¿Γτ¿ "ƒºδ¬ »α«úαá¼¼¿α«óá¡¿∩ æ¿", î.
"ö¿¡á¡ßδ ¿ ßΓáΓ¿ßΓ¿¬á", 1985.
- 3 -
æ«ñÑαªá¡¿Ñ
Ç¡¡«Γᵿ∩................................................. 2
1. ÄÆïêùêƒ Turbo-C «Γ K&R.................................... 5
1.1. 諼¼Ñ¡Γáα¿¿ (K&R 2.1).................................. 5
1.2. êñÑ¡Γ¿Σ¿¬áΓ«αδ (K&R 2.2)............................... 5
1.3. è½ετÑóδÑ ß½«óá (K&R 2.3)............................... 5
1.4. è«¡ßΓá¡Γδ (K&R 2.4).................................... 6
1.4.1. ûѽδÑ ¬«¡ßΓá¡Γδ (K&R 2.4.1).......................... 6
1.4.2. 濼ó«½∞¡δÑ ¬«¡ßΓá¡Γδ (K&R 2.4.3)..................... 7
1.4.3. è«¡ßΓá¡Γδ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ (K&R 2.4.4)............. 7
1.5. æΓ᫬¿ (K&R 2.5)....................................... 8
1.6. çáó¿ß¿¼«ßΓ∞ «Γ ¼áΦ¿¡δ (K&R 2.6)........................ 8
1.7. ÅαÑ«íαẫóá¡¿∩ (K&R 6)................................. 9
1.7.1. Char, int ¿ enum (K&R 6.1)........................... 9
1.7.2. ô¬áºáΓѽ¿ (K&R 6.4).................................. 9
1.7.3. Çα¿Σ¼ÑΓ¿τÑ߬¿Ñ »αÑ«íαẫóá¡¿∩ (K&R 6.6).............. 9
1.8. Ä»ÑαáΓ«αδ (K&R 7.2)....................................10
1.9. æ»Ñµ¿Σ¿¬áµ¿¿ Γ¿»«ó (K&R 8.2)...........................10
1.9.1. Æ¿» enum.............................................11
1.9.2. Æ¿» void.............................................11
1.9.3. ç¡á¬«óδ⌐ ¼«ñ¿Σ¿¬áΓ«α.................................12
1.9.4. î«ñ¿Σ¿¬áΓ«α const....................................12
1.9.5. î«ñ¿Σ¿¬áΓ«α volatile.................................13
1.9.6. î«ñ¿Σ¿¬áΓ«αδ cdecl ¿ pascal..........................13
1.9.6.1. pascal.............................................14
1.9.6.2. cdecl..............................................14
1.9.7. î«ñ¿Σ¿¬áΓ«αδ near, far ¿ huge........................14
1.10. æΓαπ¬Γπαδ ¿ «íΩÑñ¿¡Ñ¡¿∩ (K&R 8.5)......................15
1.10.1. éδαáó¡¿óá¡¿Ñ ß½«ó....................................16
1.10.2. ü¿Γ«óδÑ »«½∩.........................................16
1.11. Ä»ÑαáΓ«αδ (K&R 9)......................................17
1.12. Ä»αÑñѽѡ¿Ñ ó¡ÑΦ¡¿σ Σπ¡¬µ¿⌐ (K&R 10.1).................17
1.12.1. î«ñ¿Σ¿¬áΓ«αδ Γ¿»á Σπ¡¬µ¿¿ (K&R 10.1.1)...............17
1.12.1.1. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ pascal.........................17
1.12.1.2. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ cdecl..........................18
1.12.1.3. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ interrupt......................18
1.12.1.4. Åα«Γ«Γ¿»δ Σπ¡¬µ¿⌐ (K&R 10.1.2).....................19
1.13. Åαáó¿½á ó¿ñ¿¼«ßΓ¿ (K&R 11).............................23
1.14. 諼á¡ñδ π»αáó½Ñ¡¿∩ Γαá¡ß½∩µ¿Ñ⌐ (R&K 12)................23
1.14.1. çá¼Ñ¡á ½Ñ¬ßѼ (K&R 12.1).............................23
1.14.2. 鬽ετÑ¡¿Ñ Σá⌐½á (K&R 12.2)...........................24
1.14.3. ôß½«ó¡á∩ ¬«¼»¿½∩µ¿∩ (K&R 12.3).......................25
1.14.4. ô»αáó½Ñ¡¿Ñ ßΓα«¬á¼¿ (K&R 12.4).......................26
1.14.5. ä¿αÑ¬Γ¿óá «íαáí«Γ¬¿ «Φ¿í«¬ (ANSI C 3.8.5)............26
1.14.6. ä¿αÑ¬Γ¿óá PRAGMA (ANSI C 3.8.6)......................26
1.14.6.1. #pragma inline.....................................27
- 4 -
1.14.6.2. #pragma warn.......................................27
1.14.7. ìπ½Ñóá∩ ñ¿αÑ¬Γ¿óá (ANSI C 3.7).......................27
1.14.8. éßΓα«Ñ¡¡δÑ ¼á¬α«-¿¼Ñ¡á...............................28
1.14.9. éßΓα«Ñ¡¡δÑ ¼á¬α«ßδ Turbo-C...........................28
2. î«ñѽ¿ »á¼∩Γ¿ Turbo-C.....................................30
2.1. êß»«½∞º«óá¡¿Ñ ß¼ÑΦá¡¡δσ ¼«ñѽÑ⌐ »á¼∩Γ¿:
¼«ñ¿Σ¿¬áΓ«αδ áñαÑßᵿ¿.................................30
3. êß»«½∞º«óá¡¿Ñ αẽ¿τ¡δσ ∩ºδ¬«ó »α«úαá¼¼¿α«óá¡¿∩...........32
3.1. æ¼ÑΦÑ¡¿Ñ ∩ºδ¬«ó »α«úαá¼¼¿α«óá¡¿∩: ¿¡ΓÑαΣÑ⌐ß............32
3.1.1. Å«ß½Ññ«óáΓѽ∞¡«ßΓ¿ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó: C ¿
Åá߬á½∞..............................................32
3.1.1.1. C-»«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó
(ß«ú½áΦÑ¡¿Ñ ó맮óá)................................32
3.1.1.2. Åá߬á½Ñó߬á∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »ÑαÑñáτ¿
»áαá¼ÑΓα«ó (ß«ú½áΦÑ¡¿Ñ ó맮óá).....................33
3.1.2. ê¡ΓÑαΣÑ⌐ß ß áßßѼí½Ñα«¼..............................35
3.1.2.1. ÄíαáΘÑ¡¿∩ ¬ Σá⌐½á¼ .ASM ¿º Turbo-C.................35
3.1.2.2. Ä»αÑñѽѡ¿Ñ ¬«¡ßΓá¡Γ ¿ »ÑαѼѡ¡δσ..................36
3.1.2.3. Ä»αÑñѽѡ¿Ñ ú½«íá½∞¡δσ ¿ ó¡ÑΦ¡¿σ
¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó....................................37
3.1.3. ÄíαáΘÑ¡¿∩ ¬ Turbo-C ¿º Σá⌐½á .ASM....................37
3.1.3.1. æßδ½¬á ¡á Σπ¡¬µ¿¿..................................37
3.1.3.2. æßδ½¬á ¡á ñá¡¡δÑ...................................38
3.1.4. éßΓα«Ñ¡¡δ⌐ áßßѼí½Ñα.................................38
3.1.4.1. æß佬¿ ¡á ñá¡¡δÑ ¿ Σπ¡¬µ¿¿ ¿º óßΓα«Ñ¡¡«ú«
áßßѼí½Ñαá.........................................40
3.1.4.2. êß»«½∞º«óá¡¿Ñ ßΓαπ¬Γπα.............................40
3.1.4.3. êß»«½∞º«óá¡¿Ñ ¬«¼á¡ñ »ÑαÑσ«ñá ¿ ¼ÑΓ«¬..............41
- 5 -
1. ÄÆïêùêƒ Turbo-C «Γ K&R
Turbo-C »«ññÑনóáÑΓ ¡Ñ Γ«½∞¬« «»αÑñѽѡ¿∩, ñá¡¡δÑ ó K&R,
¡« ¿ í«½∞Φ¿¡ßΓó« αáßΦ¿αÑ¡¿⌐ ANSI-ßΓá¡ñáαΓá. é ñá¡¡«¼ αáºñѽÑ
»α¿óÑñÑ¡δ ñ«»«½¡Ñ¡¿∩ ¬ K&R; ßß佬¿ ñá¡δ ¡á ß««ΓóÑΓßΓóπεΘ¿Ñ αáº-
ñÑ½δ »α¿½«ªÑ¡¿∩ "æ»αáó«τ¡«Ñ απ¬«ó«ñßΓó« »« ∩ºδ¬π C".
1.1. 諼¼Ñ¡Γáα¿¿ (K&R 2.1)
ä«»π߬áεΓß∩ 󽫪ѡ¡δÑ ¬«¼¼Ñ¡Γáα¿¿. é φΓ«¼ ß½πτáÑ »α«úαá¼¼á
ñ«½ª¡á ¬«¼»¿½¿α«óáΓ∞ß∩ ß Σ½áú«¼ -C. ä½∩ «íÑß»ÑτÑ¡¿∩ ¼«í¿½∞¡«ßΓ¿
πñ«í¡ÑÑ «Γ¼ÑτáΓ∞ ¬«ñ, ¬«Γ«αδ⌐ ñ«½ªÑ¡ íδΓ∞ ºá¬«¼¼Ñ¡Γ¿α«óá¡, ñ¿-
αÑ¬Γ¿óἿ #if 0 ¿ #endif.
1.2. êñÑ¡Γ¿Σ¿¬áΓ«αδ (K&R 2.2)
é ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ ñ«»π߬áÑΓß∩ º¡á¬ $. Äñ¡á¬« ¿ñÑ¡Γ¿Σ¿¬áΓ«α
¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ Γ«½∞¬« ß íπ¬óδ ¿½¿ ß¿¼ó«½á (_). ç¡áτáΘ¿¼¿ ∩ó-
½∩εΓß∩ »ÑαóδÑ 32 ß¿¼ó«½á ¿ñÑ¡Γ¿Σ¿¬áΓ«αá. ä½∩ ¿º¼Ñ¡Ñ¡¿∩ τ¿ß½á
º¡áτáΘ¿σ ß¿¼ó«½«ó ¼«ª¡« ¿ß»«½∞º«óáΓ∞ »α¿ ¬«¼»¿½∩µ¿¿ «»µ¿ε -i#.
32 ß¿¼ó«½á ∩ó½∩εΓß∩ º¡áτáΘ¿¼¿ ¿ ñ½∩ ú½«íá½∞¡δσ ¿ñÑ¡Γ¿Σ¿¬á-
Γ«α«ó, íÑαπΘ¿σß∩ ¿º ñαπú¿σ ¼«ñπ½Ñ⌐.
1.3. è½ετÑóδÑ ß½«óá (K&R 2.3)
ì¿ªÑ »α¿óÑñÑ¡δ ¬½ετÑóδÑ ß½«óá, ºáαѺÑαó¿α«óá¡¡δÑ Turbo-C
(TC) ¿ αáßΦ¿αÑ¡¿∩¼¿ ANSI-ßΓá¡ñáαΓá (AN). äá¡¡δÑ ß½«óá ¡Ñ ¼«úπΓ
íδΓ∞ ¿ß»«½∞º«óá¡δ ó ¬áτÑßΓóÑ ¿¼Ñ¡ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó. è½ετÑóδÑ
ß½«óá entry ¿ fortran, π»«¼∩¡πΓδÑ ó K&R, ¡Ñ ¿ß»«½∞ºπεΓß∩ ó Tur-
bo-C.
TC asm TC _cs TC _DH
TC cdecl TC _ds TC _DL
AN const TC _es TC _DX
AN enum TC _ss TC _BP
TC far TC _AH TC _DI
TC huge TC _AL TC _SI
TC interrupt TC _AX TC _SP
TC near TC _BH
TC pascal TC _BL
AN signed TC _CH
AN void TC _CL
AN volatile TC _CX
- 6 -
1.4. è«¡ßΓá¡Γδ (K&R 2.4)
Turbo-C »«ññÑনóáÑΓ óßÑ Γ¿»δ ¬«¡ßΓá¡Γ, «»αÑñѽѡ¡δÑ ó
K&R, ß ¡Ñ¬«Γ«α묨 αáßΦ¿αÑ¡¿∩¼¿.
1.4.1. ûѽδÑ ¬«¡ßΓá¡Γδ (K&R 2.4.1)
ä ä«»π߬áεΓß∩ ñÑß∩Γ¿τ¡δÑ ¬«¡ßΓá¡Γδ ó ñ¿á»áº«¡Ñ
0...4294967295. (ÄΓα¿µáΓѽ∞¡δÑ ¬«¡ßΓá¡Γδ αáßß¼áΓα¿óáεΓß∩ ¬á¬
íѺº¡á¬«óδÑ, ¬ ¬«Γ«αδ¼ »α¿¼Ñ¡Ñ¡ π¡áα¡δ⌐ «»ÑαáΓ«α "¼¿¡πß".
æπΣΣ¿¬ß U (¿½¿ u), «º¡áτáÑΓ τΓ« ¬«¡ßΓá¡Γá ¿¼ÑÑΓ Γ¿» unsig-
ned. è«¡ßΓá¡Γá íπñÑΓ ¿¼ÑΓ∞ Γ¿» unsigned long, Ñß½¿ ÑÑ º¡áτÑ¡¿Ñ
íπñÑΓ »αÑóδΦáΓ∞ 65535, ¡Ñºáó¿ß¿¼« «Γ ¿ß»«½∞ºπѼ«ú« «ß¡«óá¡¿∩.
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. ¡« ¿ß»«½∞º«óáΓ∞ ¬á¬ L, Γᬠ¿ U ßπΣΣ¿¬ßδ
ñ½∩ «ñ¡«⌐ ¿ Γ«⌐ ªÑ ¬«¡ßΓá¡Γδ.
Æáí½¿µá 1
ûѽδÑ ¬«¡ßΓá¡Γδ Turbo-C (íѺ L ¿½¿ U)
------------------------------------------------------
ä¿á»áº«¡ Æ¿»
------------------------------------------------------
________ñÑß∩Γ¿τ¡δÑ_¬«¡ßΓá¡Γδ_________
0-32767 int
32767-2147483647 long
2147483648-4294967295 unsigned long
>4294967295 íπñÑΓ »ÑαÑ»«½¡Ñ¡¿Ñ
íѺ »αÑñπ»αѪñÑ¡¿∩;
ó αѺπ½∞ΓáΓ íπñπΓ
ºá»¿ßá¡δ ¼½áñΦ¿Ñ í¿Γδ
ñÑ⌐ßΓó¿Γѽ∞¡«ú« αѺπ½∞ΓáΓá
________ó«ß∞¼Ñα¿τ¡δÑ_¬«¡ßΓá¡Γδ________
00-077777 int
0100000-0177777 unsigned int
01000000-017777777777 long
010000000000-0377777777777 unsigned long
>0377777777777 íπñÑΓ »ÑαÑ»«½¡Ñ¡¿Ñ
________ΦÑßΓ¡áñµáΓÑα¿τ¡δÑ_¬«¡ßΓá¡Γδ_________
0x0000-0x7FFF int
0x8000-0xFFFF unsigned int
0x10000-0x7FFFFFFF long
0x80000000-0xFFFFFFFF unsigned long
>0xFFFFFFFF íπñÑΓ »ÑαÑ»«½¡Ñ¡¿Ñ
- 7 -
1.4.2. 濼ó«½∞¡δÑ ¬«¡ßΓá¡Γδ (K&R 2.4.3)
éßÑ ¬«¡ßΓá¡Γδ »αÑñßΓáó½∩εΓß∩ 16-í¿Γ«ó«⌐ óѽ¿τ¿¡«⌐ Γ¿»á
int.
Turbo-C »«ññÑনóáÑΓ ANSI-αáßΦ¿αÑ¡¿Ñ, ñ«»π߬áεΘÑÑ ΦÑßΓ¡áñ-
µáΓÑα¿τ¡«Ñ »αÑñßΓáó½Ñ¡¿Ñ ¬«ñ«ó ß¿¼ó«½«ó. ìá»α¿¼Ñα, '\x1F' ¿½¿
'\x82'.
èα«¼Ñ Γ«ú«, »«ññÑনóáÑΓß∩ ñαπú«Ñ ANSI-αáßΦ¿αÑ¡¿Ñ, ñ«»πß-
¬áεΘÑÑ ESC-»«ß½Ññ«óáΓѽ∞¡«ßΓ¿. äá¡¡δ⌐ ß»¿ß«¬ ESC-»«ß½Ññ«óáΓѽ∞-
¡«ßΓÑ⌐ »αÑñßΓáó½∩ÑΓ ß«í«⌐ ñ«»«½¡Ñ¡¿Ñ ß»¿ß¬á, »α¿óÑñÑ¡¡«ú« ó
K&R.
Æáí½¿µá 2
ESC-»«ß½Ññ«óáΓѽ∞¡«ßΓ¿ Turbo-C
------------------------------------------------------
Å«ß½Ññ«óáΓѽ∞¡«ßΓ∞ è«ñ æ¿¼ó«½ Åα¿¼Ñτá¡¿Ñ
------------------------------------------------------
\a 0x07 BEL âπñ«¬
\v 0x0B VT éÑαΓ¿¬á½∞¡á∩
Γáíπ½∩µ¿∩
\" 0x22 " äó«⌐¡á∩ ¬áóδτ¬á
\? 0x3F ?
\DDD ½εí«⌐ Γ«ªÑ, τΓ« /ddd ó K&R
\xHHH 0xHHH ½εí«⌐ HHH=1,2 ¿½¿ 3
ΘÑßΓ¡áñµáΓÑα¿τ¡δÑ
µ¿Σαδ
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. Æ.¬. Turbo-C ñ«»π߬áÑΓ ñóπσß¿¼ó«½∞¡δÑ
¬«¡ßΓá¡Γδ, ¼«ªÑΓ ó«º¡¿¬¡πΓ∞ ñóπß¼δ߽ѡ¡«ßΓ∞, Ñß½¿ ó«ß∞¼Ñα¿τ¡á∩
ESC-»«ß½Ññ«óáΓѽ∞¡«ßΓ∞ ¼Ñ¡∞ΦÑ τѼ ¿º ΓαÑσ µ¿Σα »αÑñΦÑßΓóπÑΓ
µ¿ΣαÑ. é Γᬿσ ß½πτá∩σ, Turbo-C íπñÑΓ »αÑñ»«½áúáΓ∞, τΓ« ß½Ññπε-
Θ¿⌐ ß¿¼ó«½ - τáßΓ∞ ESC-»«ß½Ññ«óáΓѽ∞¡«ßΓ¿, ñáªÑ Ñß½¿ ß¿¼ó«½ ¡Ñ
ñ«»π߬áÑΓß∩ ñ½∩ ñá¡¡«ú« Γ¿»á τ¿ßѽ. ìá»α¿¼Ñα, ¬«¡ßΓá¡Γá \258
íπñÑΓ ¿¡ΓÑα»αÑΓ¿α«óáΓ∞ß∩ ¬á¬ ñóπσß¿¼ó«½∞¡á∩ ¬«¡ßΓá¡Γá, ß«ßΓ«∩-
Θá∩ ¿º ß¿¼ó«½«ó \25 ¿ 8.
1.4.3. è«¡ßΓá¡Γδ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ (K&R 2.4.4)
éßÑ ¬«¡ßΓá¡Γδ, «»αÑñѽѡ¡δÑ ¬á¬ double, »αÑñßΓáó½∩εΓ ß«í«⌐
¬«¡ßΓá¡Γδ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐. Äñ¡á¬«, ¬«¡ßΓá¡Γá ß »½áóáεΘÑ⌐
Γ«τ¬«⌐ ¼«ªÑΓ ¿¼ÑΓ∞ Γ¿» float; ¡Ñ«íσ«ñ¿¼« ñ«íáó½∩Γ∞ ßπΣΣ¿¬ß F
¿½¿ f ¬ ÑÑ º¡áτÑ¡¿ε.
- 8 -
1.5. æΓ᫬¿ (K&R 2.5)
Turbo-C ñ«»π߬áÑΓ ¼¡«ú«ßΓ᫬«óδÑ φ½Ñ¼Ñ¡Γδ ó ß¿¼ó«½∞¡δσ
¬«¡ßΓá¡Γáσ; ßΓ᫬«óá∩ ¬«¡ßΓá¡Γá íπñÑΓ »αÑñßΓáó½∩Γ∞ ß«í«⌐ «íΩÑ-
ñ¿¡Ñ¡¿Ñ φ½Ñ¼Ñ¡Γ«ó.
ìá»α¿¼Ñα,
main()
{
char *p;
p="äá¡¡á∩ »α«úαá¼¼á - »α¿¼Ñα Γ«ú«, ¬á¬ Turbo-C"
"íπñÑΓ áóΓ«¼áΓ¿τÑ߬¿\n«ßπΘÑßΓó½∩Γ∞ «íΩÑñ¿¡Ñ¡¿Ñ"
"ßΓ᫬ ó «τÑ¡∞ ñ½¿¡¡πε ßΓ᫬π;\n"
"Γá¬á∩ ßΓαπ¬Γπαá ¿ß»«½∞ºπÑΓß∩ ñ½∩ í«½∞ΦÑ⌐"
"¡áú½∩ñ¡«ßΓ¿ »α«úαá¼¼δ.\n"
}
1.6. çáó¿ß¿¼«ßΓ∞ «Γ ¼áΦ¿¡δ (K&R 2.6)
Æáí½¿µá 3
滿߫¬ αẽ¿τ¡δσ Γ¿»«ó ñá¡¡δσ ñ½∩ Turbo-C
------------------------------------------------------
Æ¿» ÉẼÑα(ó í¿Γáσ) ä¿á»áº«¡
------------------------------------------------------
unsigned char 8 0-255
char 8 -128-127
enum 16 -32768-32767
unsigned short 16 0-65535
short 16 -32768-32767
unsigned int 16 0-65535
int 16 -32768-32767
unsigned long 32 0-4294967295
long 32 -2147483648-2147483647
float 32 3.4E-38-3.4E+38
double 64 1.7E-308-1.7E+308
long double 64 1.7E-308-1.7E+308
pointer 16 (near, _cs, _ds, _ss)
pointer 32 (far, huge)
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. Æ¿» long double ñ«»π߬áÑΓß∩, ¡« αáßß¼áΓα¿-
óáÑΓß∩ ¬á¬ double.
- 9 -
1.7. ÅαÑ«íαẫóá¡¿∩ (K&R 6)
1.7.1. Char, int ¿ enum (K&R 6.1)
ÅαÑ«íαẫóá¡¿Ñ ß¿¼ó«½∞¡«⌐ ¬«¡ßΓá¡Γδ ¬ µÑ½«¼π ¿¼ÑÑΓ αѺπ½∞-
ΓáΓ«¼ 16-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ. ÅαÑ«íαẫóá¡¿Ñ ß¿¼ó«½∞¡«ú« «íΩѬΓá
(»ÑαѼѡ¡«⌐) ¬ µÑ½«τ¿ß½Ñ¡¡«¼π «íΩѬΓπ ¿¼ÑÑΓ αѺπ½∞ΓáΓ«¼ áóΓ«¼á-
Γ¿τÑ߬«Ñ º¡á¬«ó«Ñ αáΦ¿αÑ¡¿Ñ, Ñß½¿ óδ ßñѽ὿ »« π¼«½τá¡¿ε Γ¿»
char íѺº¡á¬«óδ¼ (¿ß»«½∞ºπ∩ »α¿ ¬«¼»¿½∩µ¿¿ «»µ¿ε -K). ÄíΩѬΓδ
Γ¿»á signed char óßÑúñá ¿ß»«½∞ºπεΓ º¡á¬«ó«Ñ αáßΦ¿αÑ¡¿Ñ; «íΩѬΓδ
Γ¿»á unsigned char óßÑúñá πßΓá¡áó½¿óáεΓ ßΓáαΦ¿⌐ í¿Γ ó ¡π½∞,
¬«úñá »αÑ«íαáºπεΓß∩ ó int.
ç¡áτÑ¡¿∩ Γ¿»á enum »αÑ«íαáºπεΓß∩ ó int íѺ ¼«ñ¿Σ¿¬áµ¿¿;
á¡á½«ú¿τ¡« Γ¿» int »αÑ«íαáºπÑΓß∩ ó »ÑαÑτ¿ß½¿¼δ⌐ Γ¿».
1.7.2. ô¬áºáΓѽ¿ (K&R 6.4)
ô¬áºáΓѽ¿, ¿ß»«½∞ºπѼδÑ »α«úαá¼¼«⌐, ¼«úπΓ íδΓ∞ αẽ¿τ¡δσ
αẼÑα«ó, ó ºáó¿ß¿¼«ßΓ¿ «Γ ¿ß»«½∞ºπѼ«⌐ ¼«ñѽ¿ »á¼∩Γ¿.
ìá»α¿¼Ñα, ¬«úñá óδ ¬«¼»¿½¿απÑΓÑ »α«úαá¼¼π, ¿ß»«½∞ºπ∩ ߻ѵ¿á½∞-
¡πε ¼«ñѽ∞ »á¼∩Γ¿, áñαÑßπѼδÑ ¼«ñ¿Σ¿¬áΓ«αδ (¿¡ñѬߡδÑ αÑú¿ßΓαδ)
(near, huge, far, _cs, _ds, _ss, _es) ¼«úπΓ ¡Ñ »α¿¡¿¼áΓ∞ ó«
ó¡¿¼á¡¿Ñ αẼÑα π¬áºáΓѽ∩, ºáñá¡¡δ⌐ ñá¡¡«⌐ ¼«ñѽ∞ε »á¼∩Γ¿.
ô¬áºáΓѽ∞ ñ«½ªÑ¡ íδΓ∞ «íΩ∩ó½Ñ¡ ¬á¬ π¬áºáΓѽ∞ ¡á ¡Ñ¬«Γ«αδ⌐
߻ѵ¿á½∞¡δ⌐ Γ¿», ñáªÑ Ñß½¿ ñá¡¡δ⌐ Γ¿» - void (¬«Γ«αδ⌐ ó ñÑ⌐ßΓ-
ó¿Γѽ∞¡«ßΓ¿ «º¡áτáÑΓ π¬áºáΓѽ∞ ¡á ¡¿τÑú«). Äñ¡á¬«, íπñπτ¿
«íΩ∩ó½Ñ¡, π¬áºáΓѽ∞ ¼«ªÑΓ π¬áºδóáΓ∞ ¡á «íΩÑ¬Γ ½εí«ú« ñαπú«ú«
Γ¿»á. Turbo-C »«ºó«½∩ÑΓ »ÑαѡạáτáΓ∞ π¬áºáΓѽ¿, ¡« ¬«¼»¿½∩Γ«α
íπñÑΓ »αÑñπ»αѪñáΓ∞, τΓ« »α«¿º«Φ½« »ÑαѡạáτÑ¡¿Ñ π¬áºáΓѽ∩ -
Ñß½¿ π¬áºáΓѽ∞ ¡Ñ íδ½ »Ñαó«¡áτá½∞¡« «»αÑñѽѡ ¬á¬ π¬áºáΓѽ∞ ¡á
Γ¿» void. Äñ¡á¬« π¬áºáΓѽ¿ ¡á Γ¿»δ ñá¡¡δσ ¡Ñ ¼«úπΓ íδΓ∞ »αÑ«í-
αẫóá¡δ ¬ π¬áºáΓѽ∩¼ ¡á Γ¿»δ Σπ¡¬µ¿⌐, ¿ ¡á«í«α«Γ.
1.7.3. Çα¿Σ¼ÑΓ¿τÑ߬¿Ñ »αÑ«íαẫóá¡¿∩ (K&R 6.6)
ÅαÑ«íαẫóá¡¿Ñ «»Ñαá¡ñ«ó ó áα¿Σ¼ÑΓ¿τÑ߬¿σ óδαáªÑ¡¿∩σ
óδ»«½¡∩ÑΓß∩ »« ß½ÑñπεΘ¿¼ »αáó¿½á¼:
1) ïεí«⌐ ¡Ñ-integer ¿ ¡Ñ-double Γ¿» »αÑ«íαáºπÑΓß∩ ¬á¬ »«¬á-
ºá¡« ó Γáí½¿µÑ, »α¿óÑñÑ¡¡«⌐ ¡¿ªÑ.
2) àß½¿ ¬á¬«⌐-½¿í« ¿º «»Ñαá¡ñ«ó ¿¼ÑÑΓ Γ¿» double, ñαπú«⌐
«»Ñαá¡ñ Γ«ªÑ »αÑ«íαáºπÑΓß∩ ó double.
- 10 -
3) àß½¿ ¬á¬«⌐-½¿í« ¿º «»Ñαá¡ñ«ó ¿¼ÑÑΓ Γ¿» unsigned long,
ñαπú«⌐ «»Ñαá¡ñ Γ«ªÑ »αÑ«íαáºπÑΓß∩ ó unsigned long.
4) àß½¿ ¬á¬«⌐-½¿í« ¿º «»Ñαá¡ñ«ó ¿¼ÑÑΓ Γ¿» unsigned, ñαπú«⌐
«»Ñαá¡ñ Γ«ªÑ »αÑ«íαáºπÑΓß∩ ó unsigned.
Æáí½¿µá 4
îÑΓ«ñδ áα¿Σ¼ÑΓ¿τÑ߬¿σ »αÑ«íαẫóá¡¿⌐
------------------------------------------------------
ÉѺπ½∞ΓáΓ
Æ¿» »αÑ«íαẫóá¡¿∩ îÑΓ«ñ
------------------------------------------------------
char int º¡á¬«óδ⌐
unsigned char int ¡π½Ñó«⌐ ßΓáαΦ¿⌐ íá⌐Γ
(óßÑúñá)
signed char int º¡á¬«óδ⌐ (óßÑúñá)
short int Ñß½¿ íѺº¡á¬«óδ⌐,
Γ« íѺº¡á¬«óδ⌐ int
enum int Γá ªÑ óѽ¿τ¿¡á
float double ¼á¡Γ¿ßßá ñ«»«½¡∩ÑΓß∩ 0
1.8. Ä»ÑαáΓ«αδ (K&R 7.2)
Turbo-C »«ññÑনóáÑΓ π¡áα¡δ⌐ «»ÑαáΓ«α +. Äíδτ¡« Turbo-C
«ßπΘÑßΓó½∩ÑΓ »ÑαÑúαπ»»¿α«ó¬π óδαáªÑ¡¿⌐, »ÑαÑπ»«α∩ñ«τ¿óá∩ ¬«¼¼π-
ΓáΓ¿ó¡δÑ «»ÑαáΓ«αδ (Γá¬¿Ñ ¬á¬ * ¿ ñó«¿τ¡δ⌐ +), »δΓá∩ß∞ ß«ºñáΓ∞
óδαáªÑ¡¿∩ φΣΣÑ¬Γ¿ó¡δÑ »α¿ ¬«¼»¿½∩µ¿¿. Äñ¡á¬« Turbo-C ¡Ñ íπñÑΓ
»ÑαÑ«αúá¡¿º«óδóáΓ∞ óδαáªÑ¡¿∩ ß π¡áα¡δ¼ «»ÑαáΓ«α«¼ +. æ½Ññ«óá-
Γѽ∞¡«, óδ ¼«ªÑΓÑ ¬«¡Γα«½¿α«óáΓ∞ óδτ¿ß½Ñ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐,
Γ.Ñ. «Γ½áó½¿óáΓ∞ «Φ¿í¬¿ Γ«τ¡«ßΓ¿ ¿ »ÑαÑ»«½¡Ñ¡¿∩, ¿ß»«½∞ºπ∩
π¡áα¡δ⌐ «»ÑαáΓ«α +, ¿ »α¿ φΓ«¼ ¡Ñ αáºí¿óá∩ µÑ½«Ñ óδαáªÑ¡¿Ñ ¡á
«Γñѽ∞¡δÑ óδαáªÑ¡¿∩. ìá»α¿¼Ñα, àß½¿ a, b, c ¿ f ¿¼ÑεΓ Γ¿»
float, óδαáªÑ¡¿Ñ
f=a++(b+c)
íπñÑΓ óδτ¿ß½∩Γ∞ß∩ ß½ÑñπεΘ¿¼ «íαẫ¼: αѺπ½∞ΓáΓ (b+c) íπñÑΓ »α¿-
íáó½Ñ¡ ¬ a.
1.9. æ»Ñµ¿Σ¿¬áµ¿¿ Γ¿»«ó (K&R 8.2)
Turbo-C »«ññÑনóáÑΓ ß½ÑñπεΘ¿Ñ «ß¡«ó¡δÑ Γ¿»δ, ¡Ñ π¬áºá¡¡δÑ
ó K&R.
- unsigned char
- unsigned short
- 11 -
- unsigned long
- long double
- enumeration
- viod
Æ¿» long double φ¬ó¿óá½Ñ¡ΓÑ¡ Γ¿»π double.
1.9.1. Æ¿» enum
Turbo-C »«ññÑনóáÑΓ óßÑ »ÑαÑτ¿ß½¿¼δÑ Γ¿»δ ANSI-ßΓá¡ñáαΓá.
ÅÑαÑτ¿ß½¿¼δ⌐ Γ¿» ñá¡¡δσ ¿ß»«½∞ºπÑΓß∩ ñ½∩ «»¿ßá¡¿∩ ñ¿ß¬αÑΓ¡«⌐
»«ß½Ññ«óáΓѽ∞¡«ßΓ¿ µÑ½δσ º¡áτÑ¡¿⌐. ìá»α¿¼Ñα,
enum days { sun, mon, tues, wed, thur, fri, sat};
ê¼Ñ¡á, ºá¡ÑßÑ¡¡δÑ ó days, »αÑñßΓáó½∩εΓ ß«í«⌐ µÑ½δÑ ¬«¡ß-
Γá¡Γδ, »Ñαóá∩ (sun) áóΓ«¼áΓ¿τÑ߬¿ πßΓá¡«ó½Ñ¡á ó ¡π½∞ ¿ ¬áªñá∩
ß½ÑñπεΘá∩ ¿¼ÑÑΓ º¡áτÑ¡¿Ñ ¡á Ññ¿¡¿µπ í«½∞ΦÑ, τѼ »αÑñδñπΘá∩
(mon=1, tues=2 ¿ Γ.ñ.). ¡« »α¿ßó«¿Γ∞ ¬«¡ßΓá¡Γá¼ «»αÑñѽѡ¡δÑ
º¡áτÑ¡¿∩; ¿¼Ñ¡á, ¡Ñ ¿¼ÑεΘ¿Ñ «»αÑñѽѡ¡δσ º¡áτÑ¡¿⌐, íπñπΓ, ¬á¬ ¿
αá¡∞ΦÑ, ¿¼ÑΓ∞ º¡áτÑ¡¿∩ »αÑñδñπΘ¿σ ¬«ßΓá¡Γ, πóѽ¿τÑ¡¡δÑ ¡á Ññ¿-
¡¿µπ. ìá»α¿¼Ñα,
enum coins {penny=1, nickle=5, dime=10, quarter=25};
ÅÑαѼѡ¡«⌐ »ÑαÑτ¿ß½¿¼«ú« Γ¿»á ¼«ªÑΓ íδΓ∞ »α¿ßó«Ñ¡« º¡áτÑ-
¡¿Ñ ½εí«ú« Γ¿»á int - »α«óÑα¬á Γ¿»á ¡Ñ »α«¿ºó«ñ¿Γß∩.
1.9.2. Æ¿» void
Turbo-C »«ññÑনóáÑΓ Γ¿» void, «»αÑñѽѡ¡δ⌐ ó ANSI-ßΓá¡-
ñáαΓÑ. äá¡¡δ⌐ Γ¿» ¿ß»«½∞ºπÑΓß∩ ñ½∩ ∩ó¡«ú« «»¿ßá¡¿∩ Σπ¡¬µ¿⌐, ¡Ñ
ó«ºóαáΘáεΘ¿σ º¡áτÑ¡¿⌐. ǡὫú¿τ¡«, »πßΓ«⌐ ß»¿ß«¬ »áαá¼ÑΓα«ó ¼«-
ªÑΓ íδΓ∞ «íΩ∩ó½Ñ¡ ß½«ó«¼ void. ìá»α¿¼Ñα,
void putmsg(void)
{
printf("Hello, world\n");
}
main()
{
putmsg();
}
¡« »αÑ«íαẫóδóáΓ∞ óδαáªÑ¡¿Ñ ¬ Γ¿»π void, ñ½∩ Γ«ú«
τΓ«íδ ∩ó¡« π¬áºáΓ∞, τΓ« º¡áτÑ¡¿Ñ, ó«ºóαáΘáѼ«Ñ Σπ¡¬µ¿Ñ⌐, ¿ú¡«-
- 12 -
α¿απÑΓß∩. ìá»α¿¼Ñα, Ñß½¿ óδ σ«Γ¿ΓÑ »α¿«ßΓá¡«ó¿Γ∞ óδ»«½¡Ñ¡¿Ñ
»α«úαá¼¼δ ñ« ΓÑσ »«α »«¬á »«½∞º«óáΓѽ∞ ¡Ñ ¡áª¼ÑΓ ¬á¬πε-½¿í«
¬½áó¿Φπ, óδ ¼«ªÑΓÑ ¡á»¿ßáΓ∞:
(void) getch();
èα«¼Ñ Γ«ú«, ¼«ª¡« «íΩ∩ó¿Γ∞ π¬áºáΓѽ∞ ¡á «íΩÑ¬Γ Γ¿»á void.
äá¡¡δ⌐ π¬áºáΓѽ∞ ¡Ñ íπñÑΓ π¬áºáΓѽѼ ¡á ¡¿τÑú«; ß«ºñáßΓß∩ π¬á-
ºáΓѽ∞ ¡á ¬á¬«⌐-Γ« «íΩÑ¬Γ ñá¡¡δσ, Γ¿» ¬«Γ«α«ú« ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ß-
Γ¿ «»αÑñѽ∩Γ∞. éδ ¼«ªÑΓÑ »α¿ßóá¿óáΓ∞ ½εí«⌐ π¬áºáΓѽ∞ π¬áºáΓѽε
Γ¿»á void, ¿ «íαáΓ¡«. Äñ¡á¬« óδ ¡Ñ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ «»ÑαáΓ«α
¬«ßóÑ¡¡«⌐ áñαÑßᵿ¿ (*), Γ.¬. ¿ß»«½∞ºπѼδ⌐ Γ¿» ¡Ñ«»αÑñѽѡ.
1.9.3. ç¡á¬«óδ⌐ ¼«ñ¿Σ¿¬áΓ«α
èα«¼Ñ π¬áºá¡¡δσ ó K&R ΓαÑσ Γ¿»«ó ¼«ñ¿Σ¿¬áΓ«α«ó - long,
short ¿ unsigned - Turbo-C »«ññÑনóáÑΓ ÑΘÑ Γα¿: signed, const
¿ vilatile (ANSI-ßΓá¡ñáαΓ).
î«ñ¿Σ¿¬áΓ«α signed ∩ó¡« π¬áºδóáÑΓ, τΓ« óѽ¿τ¿¡á ß« º¡á¬«¼.
äá¡¡δ⌐ ¼«ñ¿Σ¿¬áΓ«α ¿ß»«½∞ºπÑΓß∩ »αÑ¿¼πΘÑßΓóÑ¡¡« ñ½∩ ñ«¬π¼Ñ¡Γ¿-
α«óá¡¡«ßΓ¿ ¿ ºáóÑαΦÑ¡¡«ßΓ¿ »α«úαá¼¼. Äñ¡á¬«, Ñß½¿ óδ ¬«¼»¿½¿-
απÑΓÑ »α«úαá¼¼π, ¿ß»«½∞ºπ∩ »« π¼«½τá¡¿ε íѺº¡á¬«óδ⌐ Γ¿» char
(ó¼ÑßΓ« º¡á¬«ó«ú«), ¡Ñ«íσ«ñ¿¼« ¿ß»«½∞º«óáΓ∞ ¼«ñ¿Σ¿¬áΓ«α signed,
ñ½∩ Γ«ú« τΓ«íδ «»αÑñѽ¿Γ∞ »ÑαѼѡ¡πε ¿½¿ Σπ¡¬µ¿ε Γ¿»á signed
char. î«ñ¿Σ¿¬áΓ«α signed, ¿ß»«½∞º«óá¡¡δ⌐ ßá¼ »« ßÑíÑ, «º¡áτáÑΓ
signed int, Γá¬ªÑ ¬á¬ unsigned «º¡áτáÑΓ unsigned int.
1.9.4. î«ñ¿Σ¿¬áΓ«α const
î«ñ¿Σ¿¬áΓ«α const, ¬á¬ «»αÑñѽѡ« ó ANSI-ßΓá¡ñáαΓÑ, ¡Ñ ñ«-
»π߬áÑΓ ¬á¬¿σ íδ Γ« ¡¿ í佫 »ÑαÑ«»αÑñѽѡ¿⌐ º¡áτÑ¡¿∩ ¬«¡ßΓá¡Γδ
¿½¿ ñαπú¿σ ¬«ßóÑ¡¡δσ ñÑ⌐ßΓó¿⌐, Γᬿσ ¬á¬ π¼Ñ¡∞ΦÑ¡¿Ñ ¿½¿ πóѽ¿-
τÑ¡¿Ñ. ô¬áºáΓѽ∞ ¡á Γ¿» const ¡Ñ ¼«ªÑΓ íδΓ∞ ¿º¼Ñ¡Ñ¡, ó «Γ½¿τ¿¿
«Γ ßἫú« «íΩѬΓá, ¬«Γ«αδ⌐ «¡ «»αÑñѽ∩ÑΓ.
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. î«ñ¿Σ¿¬áΓ«α const, ¿ß»«½∞ºπѼδ⌐ ßá¼ »« ßÑ-
íÑ, φ¬ó¿óá½Ñ¡ΓÑ¡ const int. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ »α¿¼Ñαδ:
const float pi =3.1415926;
const maxint =32767;
const *char str ="Hello, world";
Åα¿óÑñÑ¡¡δÑ ¡¿ªÑ πΓóÑαªñÑ¡¿∩ ¡Ññ«»πßΓ¿¼δ:
pi = 3.0; /* Åα¿ßó«Ñ¡¿Ñ º¡áτÑ¡¿∩
¬«¡ßΓá¡ΓÑ */
i = maxint--; /* ô¼Ñ¡∞ΦÑ¡¿Ñ ¬«¡ßΓá¡Γδ */
str = "Hi, there!"; /* ÅÑαѡạáτÑ¡¿Ñ π¬áºáΓѽ∩ */
- 13 -
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. Äñ¡á¬«, ó맮ó Σπ¡¬µ¿¿ strcpy(str,"Hi, the-
re!") ñ«»πßΓ¿¼, Γ.¬. ó ñá¡¡«¼ ß½πτáÑ «ßπΘÑßΓó½∩ÑΓß∩ »«ß¿¼ó«½∞-
¡«Ñ ¬«»¿α«óá¡¿Ñ ßΓ᫬¿ "Hi, there!" ó ∩τÑ⌐¬¿ »á¼∩Γ¿, «»αÑñÑ-
½∩ѼδÑ str.
1.9.5. î«ñ¿Σ¿¬áΓ«α volatile
î«ñ¿Σ¿¬áΓ«α volatile - »«τΓ¿ »«½¡á∩ »α«Γ¿ó«»«½«ª¡«ßΓ∞
const. Ä¡ π¬áºδóáÑΓ, τΓ« «íΩÑ¬Γ ¼«ªÑΓ íδΓ∞ ¿º¼Ñ¡Ñ¡; ¡« ¡Ñ Γ«½∞-
¬« ¡Ñ»«ßαÑñßΓóÑ¡¡« óáΦÑ⌐ »α«úαá¼¼«⌐, ¡« ¿ Γá¬ªÑ ó¡ÑΦ¡¿¼ ó«º-
ñÑ⌐ßΓó¿Ñ¼, Γᬿ¼ ¬á¬ »α«úαá¼¼á »αÑαδóá¡¿⌐ ¿½¿ »«αΓ
óó«ñá/óδó«ñá. ÄíΩ∩ó½Ñ¡¿Ñ «íΩѬΓá ¬á¬ volatile »αÑñπ»αѪñáÑΓ
¬«¼»¿½∩Γ«α, τΓ« ¡Ñ ¡πª¡« ñѽáΓ∞ »αÑñ»«½«ªÑ¡¿⌐ «Γ¡«ß¿Γѽ∞¡« º¡á-
τÑ¡¿∩ «íΩѬΓá, ó Γ« óαѼ∩ ¬á¬ «µÑ¡¿óáεΓß∩ óδαáªÑ¡¿∩, Ñú« ß«ñÑα-
ªáΘ¿Ñ, Γ.¬. º¡áτÑ¡¿Ñ ¼«ªÑΓ (ΓÑ«αÑΓ¿τÑ߬¿) ¿º¼Ñ¡¿Γ∞ß∩ ó ½εí«⌐
¼«¼Ñ¡Γ. èα«¼Ñ Γ«ú«, ¿ß»«½∞º«óá¡¿Ñ ñá¡¡«ú« ¼«ñ¿Σ¿¬áΓ«αá ¡Ñ »«º-
ó«½∩ÑΓ ¬«¼»¿½∩Γ«απ ¿ß»«½∞º«óáΓ∞ ó¼ÑßΓ« »ÑαѼѡ¡δσ αÑú¿ßΓα«óδÑ
»ÑαѼѡ¡δÑ.
Åα¿¼Ñαδ:
volatile int ticks;
interrupt timer();
{
ticks++;
}
wait (int interval)
{
ticks=0;
while(ticks<interval);
}
¥Γ¿ »α«úαá¼¼δ íπñπΓ "ªñáΓ∞" ó ΓÑτÑ¡¿Ñ óαѼѡ¿, π¬áºá¡¡«ú«
ó áαúπ¼Ñ¡ΓÑ interval. çá¼ÑΓ¿¼, τΓ« ¬«¼»¿½∩Γ«α ß óδß«¬¿¼ πα«ó¡Ñ¼
«»Γ¿¼¿ºáµ¿¿ ¼«ªÑΓ ¡Ñ ºáúαπº¿Γ∞ º¡áτÑ¡¿Ñ ticks ó¡πΓα¿ µ¿¬½á whi-
le, Γ.¬. µ¿¬½ ¡Ñ ¿º¼Ñ¡∩ÑΓ º¡áτÑ¡¿∩ ticks.
1.9.6. î«ñ¿Σ¿¬áΓ«αδ cdecl ¿ pascal
Turbo-C »«ºó«½∩ÑΓ «íαáΘáΓ∞ß∩ ¿º óáΦÑ⌐ »α«úαá¼¼δ ¬ »α«úαá¼-
¼á¼, ¡á»¿ßá¡¡δ¼ ¡á ñαπú¿σ ∩ºδ¬áσ, ¿ ¡á«í«α«Γ. Åα¿ ß¼ÑΦ¿óá¡¿¿
∩ºδ¬«ó óδ ñ«½ª¡δ ¿¼ÑΓ∞ ñѽ« ß ñóπ¼∩ óáª¡δ¼¿ «íΩÑ¬Γ¿¼¿: ¿ñÑ¡Γ¿-
Σ¿¬áΓ«αἿ ¿ »ÑαÑñáóáÑ¼δ¼¿ »áαá¼ÑΓαἿ.
è«úñá óδ ¬«¼»¿½¿απÑΓÑ »α«úαá¼¼π ó Turbo-C, óßÑ ú½«íá½∞¡δÑ
¿ñÑ¡Γ¿Σ¿¬áΓ«αδ »α«úαá¼¼δ, Γ.Ñ. ¿¼Ñ¡á Σπ¡¬µ¿⌐ ¿ ú½«íá½∞¡δÑ »ÑαÑ-
¼Ñ¡¡δÑ, ß«σαá¡∩εΓß∩ ó «íΩÑ¬Γ¡«¼ ¬«ñÑ, »«½πτÑ¡¡«¼ ó αѺπ½∞ΓáΓÑ
¬«¼»¿½∩µ¿¿, ñ½∩ αáí«Γδ αÑñá¬Γ«αá ßó∩ºÑ⌐. Å« π¼«½τá¡¿ε φΓ¿ ¿ñÑ¡-
Γ¿Σ¿¬áΓ«αδ ß«σαá¡∩εß∩ ó ßó«Ñ¼ »Ñαó«¡áτá½∞¡«¼ ó¿ñÑ (Γ.Ñ ¡áí-
- 14 -
αá¡¡δ¼¿ ºáú½áó¡δ¼¿, ßΓα«τ¡δ¼¿ ¿½¿ ΓѼ¿ ¿ ñαπú¿¼¿ íπ¬óἿ). èα«-
¼Ñ Γ«ú«, ß¿¼ó«½ (_) »αÑñΦÑßΓóπÑΓ ¿ñÑ¡Γ¿Σ¿¬áΓ«απ, Ñß½¿ óδ ¡Ñ ¿ß-
»«½∞º«ó὿ «»µ¿ε -u- »α¿ ¬«¼»¿½∩µ¿¿.
ǡὫú¿τ¡«, óßÑ ó¡ÑΦ¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ, «íΩ∩ó½Ñ¡¡δÑ ó
»α«úαá¼¼Ñ, «ßΓáεΓß∩ ó Γ«¼ ªÑ ßἫ¼ Σ«α¼áΓÑ. ÉÑñá¬Γ«α ßó∩ºÑ⌐ (»«
π¼«½τá¡¿ε) αẽ¿τáÑΓ αÑú¿ßΓαδ ¬½áó¿áΓπαδ, »«φΓ«¼π ¿ñÑ¡Γ¿Σ¿¬á-
Γ«αδ, ¿ß»«½∞ºπѼδÑ ó αẽ¿τ¡δσ »α«úαá¼¼áσ, ñ«½ª¡δ »«½¡«ßΓ∞ε
ß«ó»áñáΓ∞ ¬á¬ ß Γ«τ¬¿ ºαÑ¡¿∩ «αΣ«úαáΣ¿¿ Γᬠ¿ αÑú¿ßΓα«ó ¬½áó¿á-
Γπαδ.
1.9.6.1. pascal
é «»αÑñѽѡ¡δσ ß¿Γπᵿ∩σ, ¡á»α¿¼Ñα »α¿ ¿ß»«½∞º«óá¡¿¿
¬«ñ«ó, ºá»¿ßá¡¡δσ ¡á ñαπú¿σ ∩ºδ¬áσ, «»¿ßá¡¡δ⌐ óδΦÑ ¼ÑΓ«ñ ß«σαá-
¡Ñ¡¿∩ ¿¼Ñ¡, »α¿¼Ñ¡∩Ѽδ⌐ »« π¼«½τá¡¿ε, ¼«ªÑΓ óδºóáΓ∞ α∩ñ
»α«í½Ñ¼. Turbo-C »«ºó«½∩ÑΓ ¿ºíѪáΓ∞ ñá¡¡δσ »α«í½Ñ¼. ¡« «íΩ∩-
ó¿Γ∞ ½εí«⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α ¬á¬ ¿ñÑ¡Γ¿Σ¿¬áΓ«α Γ¿»á pascal. ¥Γ« «º-
¡áτáÑΓ, τΓ« ¿ñÑ¡Γ¿Σ¿¬áΓ«α »αÑ«íαáºπÑΓß∩ ¬ óÑασ¡Ñ¼π αÑú¿ßΓαπ ¿
¡Ñ ñ«íáó½∩ÑΓß∩ ß¿¼ó«½ »«ñτÑનóá¡¿∩. (àß½¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«α Σπ¡¬-
µ¿∩, ñá¡¡«Ñ »αá󿽫 αáß»α«ßΓαá¡∩ÑΓß∩ ¡á »ÑαÑñáóáѼδÑ
»áαá¼ÑΓαδ.)
1.9.6.2. cdecl
éßÑ ú½«íá½∞¡δÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ ¼«ª¡« ßñÑ-
½áΓ∞ ¿ñÑ¡Γ¿Σ¿¬áΓ«αἿ Γ¿»á pascal, ¿ß»«½∞ºπ∩ «»µ¿ε -p »α¿ ¬«¼-
»¿½∩µ¿¿. Äñ¡á¬«, óδ ¼«ªÑΓÑ π¬áºáΓ∞, τΓ« «»αÑñѽѡ¡δÑ ¿ñÑ¡Γ¿Σ¿-
¬áΓ«αδ - ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ¡Ñ Åá߬á½Ñó߬«ú« Γ¿»á. éδ ¼«ªÑΓÑ «íΩ∩-
ó¿Γ∞ ¿σ ¬á¬ cdecl, (ñá¡¡«Ñ »αá󿽫 αáß»α«ßΓαá¡∩ÑΓß∩ ¿ ¡á »ÑαÑ-
ñáóáѼδÑ ó Σπ¡¬µ¿ε »áαá¼ÑΓαδ).
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. éßÑ Σπ¡¬µ¿¿ ó ß¿ßΓѼ¡δσ include-Σá⌐½áσ
(¡á»α¿¼Ñα, stdio.h) ¿¼ÑεΓ Γ¿» cdecl. ¥Γ« »«ºó«½∩ÑΓ »«ñ¬½ετáΓ∞
ß¿ßΓѼ¡δÑ í¿í½¿«ΓѬ¿, Ñß½¿ óδ ¿ß»«½∞ºπÑΓÑ «»µ¿ε -p »α¿ ¬«¼»¿½∩-
樨.
1.9.7. î«ñ¿Σ¿¬áΓ«αδ near, far ¿ huge
äá¡¡δÑ ¼«ñ¿Σ¿¬áΓ«αδ ó«ºñÑ⌐ßΓóπεΓ ¡á ¬«ßóÑ¡¡δÑ «»ÑαáΓ«α
(*), á ¿¼Ñ¡¡«, ¼«ñ¿Σ¿µ¿απεΓ π¬áºáΓѽ¿ ¡á ñá¡¡δÑ.
Turbo-C »«ºó«½∩ÑΓ ¿ß»«½∞º«óáΓ∞ αẽ¿τ¡δÑ ¼«ñѽ¿ »á¼∩Γ¿.
î«ñѽ∞, ¬«Γ«απε óδ ¿ß»«½∞ºπÑΓÑ, «»αÑñѽ∩ÑΓ ó¡ÑΦ¡¿⌐ Σ«α¼áΓ π¬á-
ºáΓѽÑ⌐ ¡á ñá¡¡δÑ. àß½¿ óδ ¿ß»«½∞ºπÑΓÑ "¼á½πε" ¼«ñѽ∞ ñá¡¡δσ
(tiny, small, medium), óßÑ π¬áºáΓѽ¿ ¿¼ÑεΓ ñ½¿¡π Γ«½∞¬« 16 í¿Γ
¿ ºáñáεΓ ß¼ÑΘÑ¡¿Ñ «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá ßÑú¼Ñ¡Γá ñá¡¡δσ (DS).
àß½¿ ¿ß»«½∞ºπÑΓß∩ "í«½∞Φá∩" ¼«ñѽ∞ »á¼∩Γ¿ (compact, large,
- 15 -
huge), óßÑ π¬áºáΓѽ¿ ¡á ñá¡¡δÑ ¿¼ÑεΓ ñ½¿¡π 32 í¿Γá ¿ ºáñáεΓ ¬á¬
áñαÑß ßÑú¼Ñ¡Γá, Γᬠ¿ ß¼ÑΘÑ¡¿Ñ.
é ¡Ñ¬«Γ«αδσ ß½πτá∩σ, ¬«úñá ¿ß»«½∞ºπÑΓß∩ «ñ¿¡ αẼÑα ¼«ñѽ¿
ñá¡¡δσ, ¼«ª¡« «íΩ∩ó¿Γ∞ π¬áºáΓѽ∞ ß αẼÑα«¼ ¿½¿ Σ«α¼áΓ«¼, «Γ-
½¿τ¡δ¼ «Γ ¿ß»«½∞ºπѼ«ú« »« π¼«½τá¡¿ε. ¥Γ« ñѽáÑΓß∩ ß »«¼«Θ∞ε
¼«ñ¿Σ¿¬áΓ«α«ó near, far ¿ huge.
ô¬áºáΓѽ∞ Γ¿»á near - 16-í¿Γ¡δ⌐; «¡ ¿ß»«½∞ºπÑΓ ΓѬπΘÑÑ ß«-
ñÑন¼«Ñ αÑú¿ßΓαá ßÑú¼Ñ¡Γá ñá¡¡δσ (DS) ñ½∩ «»αÑñѽѡ¿∩ áñαÑßá
ßÑú¼Ñ¡Γá. Å« π¼«½τá¡¿ε ¿ß»«½∞ºπÑΓß∩ ñ½∩ ¼á½δσ ¼«ñѽÑ⌐ ñá¡¡δσ.
Åα¿ ¿ß»«½∞º«óá¡¿¿ π¬áºáΓѽÑ⌐ Γ¿»á near, ñá¡¡δÑ óáΦÑ⌐ »α«úαá¼¼δ
«úαá¡¿τÑ¡δ αẼÑα«¼ ΓѬπΘÑú« ßÑú¼Ñ¡Γá ñá¡¡δσ 64è.
ô¬áºáΓѽ∞ Γ¿»á far - 32-í¿Γ¡δ⌐; ß«ñÑαª¿Γ ¬á¬ áñαÑß, Γᬠ¿
ß¼ÑΘÑ¡¿Ñ. Å« π¼«½τá¡¿ε ¿ß»«½∞ºπÑΓß∩ ñ½∩ í«½∞Φ¿σ ¼«ñѽÑ⌐. Åα¿
¿ß»«½∞º«óá¡¿¿ π¬áºáΓѽÑ⌐ Γ¿»á far ñ«»π߬áεΓß∩ ßß佬¿ ¡á ñá¡¡δÑ
ó »αÑñѽáσ 1-îí áñαÑß¡«ú« »α«ßΓαá¡ßΓóá »α«µÑßß«α«ó Intel
8088/8086.
ô¬áºáΓѽ∞ Γ¿»á huge - 32-í¿Γ¡δ⌐; á¡á½«ú¿τ¡« »αÑñδñπΘѼπ,
ß«ñÑαª¿Γ áñαÑß ßÑú¼Ñ¡Γá ¿ ß¼ÑΘÑ¡¿Ñ, «ñ¡á¬«, ó «Γ½¿τ¿¿ «Γ π¬áºá-
ΓѽÑ⌐ Γ¿»á far, π¬áºáΓѽ∞ huge óßÑúñá »«ññÑনóáÑΓß∩ ¡«α¼á½¿º«-
óá¡¡δ¼:
- Ä»ÑαáΓ«αδ «Γ¡«ΦÑ¡¿∩ (==, !=, <, >, <=, >=) αáí«ΓáεΓ »αá-
ó¿½∞¡« ß π¬áºáΓѽ∩¼¿ Γ¿»á huge; ¡« ¡Ñ ß π¬áºáΓѽ∩¼¿ Γ¿»á
far.
- éßÑ áα¿Σ¼ÑΓ¿τÑ߬¿Ñ «»Ñαᵿ¿ ¡áñ π¬áºáΓѽѼ huge ó«º-
ñÑ⌐ßΓóπεΓ ¬á¬ ¡á áñαÑß ßÑú¼Ñ¡Γá, Γᬠ¿ ¡á ß¼ÑΘÑ¡¿Ñ (¿º-
ºá ¡«α¼á½¿ºáµ¿¿); »α¿ ¿ß»«½∞º«óá¡¿¿ far π¬áºáΓѽÑ⌐ -
ó«ºñÑ⌐ßΓó¿Ñ Γ«½∞¬« ¡á ß¼ÑΘÑ¡¿Ñ.
- çáñá¡¡δ⌐ π¬áºáΓѽ∞ Γ¿»á huge ¼«ªÑΓ íδΓ∞ πóѽ¿τÑ¡ ó »αÑ-
ñѽáσ 1îí áñαÑß¡«ú« »α«ßΓαá¡ßΓóá; π¬áºáΓѽ¿ Γ¿»á far íπ-
ñπΓ »α¿ «»αÑñѽѡ¡δσ «íßΓ«∩Γѽ∞ßΓóáσ µ¿¬½¿τÑ߬¿ »ÑαÑσ«-
ñ¿Γ∞ ¡á ¡áτὫ 64è ßÑú¼Ñ¡Γá.
- Åα¿ ¿ß»«½∞º«óá¡¿¿ π¬áºáΓѽÑ⌐ Γ¿»á huge ΓαÑíπÑΓß∩ ñ«»«½-
¡¿Γѽ∞¡«Ñ óαѼ∩, Γ.¬. »α«úαá¼¼δ ¡«α¼á½¿ºáµ¿¿ ñ«½ª¡δ
óδºδóáΓ∞ß∩ »«ß½Ñ óδ»«½¡Ñ¡¿∩ ½εí«⌐ áα¿Σ¼ÑΓ¿τÑ߬«⌐ «»Ñαá-
µ¿¿ ¡áñ π¬áºáΓѽ∩¼¿.
1.10. æΓαπ¬Γπαδ ¿ «íΩÑñ¿¡Ñ¡¿∩ (K&R 8.5)
Turbo-C «íÑß»Ñτ¿óáÑΓ ß½ÑñπεΘ¿Ñ ñ«»«½¡¿Γѽ∞¡δÑ ó«º¼«ª¡«ßΓ¿.
- 16 -
1.10.1. éδαáó¡¿óá¡¿Ñ ß½«ó
àß½¿ »α¿ ¬«¼»¿½∩µ¿¿ ¿ß»«½∞ºπÑΓß∩ «»µ¿∩ -a, Turbo-C íπñÑΓ
ºá»«½¡∩Γ∞ íá⌐ΓἿ ßΓαπ¬Γπαπ (¿½¿ «íΩÑñ¿¡Ñ¡¿Ñ) Γᬿ¼ «íαẫ¼,
¬á¬ ΓαÑíπÑΓß∩ ñ½∩ óδαáó¡¿óá¡¿∩ ß½«ó. ÄíÑß»Ñτ¿óáÑΓß∩ ß½ÑñπεΘÑÑ:
- æΓαπ¬Γπαá íπñÑΓ ¡áτ¿¡áΓ∞ß∩ ß úαá¡¿µδ ß½«óá (τÑΓ¡δ⌐
áñαÑß).
- ïεí«⌐ τ½Ñ¡, ¿¼ÑεΘ¿⌐ ¡Ñ-char Γ¿», íπñÑΓ ¿¼ÑΓ∞ τÑΓ¡«Ñ ß¼Ñ-
ΘÑ¡¿Ñ «Γ ¡áτá½á ßΓαπ¬Γπαδ.
- é ¬«¡Ñµ íπñÑΓ ñ«íáó½Ñ¡ íá⌐Γ (Ñß½¿ ¡Ñ«íσ«ñ¿¼«), ñ½∩ úá-
αá¡Γ¿¿ Γ«ú«, τΓ« ßΓαπ¬Γπαá ß«ñÑαª¿Γ τÑΓ¡«Ñ τ¿ß½« íá⌐Γ.
1.10.2. ü¿Γ«óδÑ »«½∩
ü¿Γ«ó«Ñ »«½Ñ ¼«ªÑΓ ¿¼ÑΓ∞ Γ¿» ½¿í« signed, ½¿í« unsigned
int ¿ ¼«ªÑΓ ºá¡¿¼áΓ∞ «Γ 1 ñ« 16 í¿Γ«ó. ü¿Γ«óδÑ »«½∩ αẼÑΘáεΓß∩
ó ¡á»αáó½Ñ¡¿¿ «Γ ¼½áñΦ¿σ ¬ ßΓáαΦ¿¼ í¿Γá¼ ó ß½«óÑ. ìá»α¿¼Ñα,
ßΓαπ¬Γπαá
struct mystruct {
int i : 2;
unsigned j : 5;
int : 4;
int k : 1;
unsigned n : 4;
} a, b, c;
«íÑß»Ñτ¿óáÑΓ ß½ÑñπεΘÑÑ αẼÑΘÑ¡¿Ñ:
__________________________________________________
|15|14|13|12|11 |10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
|--|--|--|--|---|--|--|--|--|--|--|--|--|--|--|--|
| x| x| x| x| x | x| x| x| x| x| x| x| x| x| x| x|
|-----------|---|-----------|--------------|-----|
|<--------->|<->|<- - - - ->|<------------>|<--->|
|-----------|---|-----------|--------------|-----|
| m | k |¡Ñ ¿ß»«½∞º.| j | i |
|___________|___|___________|______________|_____|
Å«½∩ µÑ½«ú« Γ¿»á σαá¡∩Γß∩ ó «ñ¡«⌐ ¿º ñóπσ Σ«α¼; ¬αá⌐¡¿⌐
½Ñóδ⌐ í¿Γ - º¡á¬«óδ⌐ í¿Γ. ìá»α¿¼Ñα, í¿Γ«ó«Ñ »«½Ñ Γ¿»á signed
int Φ¿α¿¡«⌐ 1 í¿Γ ¼«ªÑΓ Γ«½∞¬« σαá¡¿Γ∞ º¡áτÑ¡¿Ñ -1 ¿ 0, Γ.¬.
½εí«Ñ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ íπñÑΓ ¿¡ΓÑα»αÑΓ¿α«óáΓ∞ß∩ ¬á¬ -1.
- 17 -
1.11. Ä»ÑαáΓ«αδ (K&R 9)
Turbo-C óδ»«½¡∩ÑΓ óßÑ íѺ ¿ß¬½ετÑ¡¿∩ «»ÑαáΓ«αδ, «»¿ßá¡¡δÑ
ó K&R.
1.12. Ä»αÑñѽѡ¿Ñ ó¡ÑΦ¡¿σ Σπ¡¬µ¿⌐ (K&R 10.1)
Ä»¿ßá¡¿Ñ extern, ºáñá¡¡«Ñ ó¡πΓα¿ Σπ¡¬µ¿¿, ¿¼ÑÑΓ ñÑ⌐ßΓó¿Ñ ó
»αÑñѽáσ ñá¡¡«ú« í½«¬á. Ä»¿ßá¡¿Ñ ¡Ñ íπñÑΓ αáß»«º¡áóáΓ∞ß∩ ó¡Ñ
í½«¬á, ó ¬«Γ«α«¼ «¡« «»αÑñѽѡ«. Äñ¡á¬«, Turbo-C íπñÑΓ
"ºá»«¼¿¡áΓ∞" «»¿ßá¡¿∩, ñ½∩ Γ«ú« τΓ«íδ ßαáó¡¿óáΓ∞ ¿σ ß »«ß½Ññπε-
Θ¿¼¿ «»¿ßá¡¿∩¼¿ ΓÑσ ªÑ ßá¼δσ «íΩÑ¬Γ«ó.
Turbo-C »«ññÑনóáÑΓ ñ«»«½¡¿Γѽ∞¡δÑ ¼«ñ¿Σ¿¬áΓ«αδ Σπ¡¬µ¿⌐,
Γá¬¿Ñ ¬á¬ »α«Γ«Γ¿»δ Σπ¡¬µ¿⌐ (ANSI-ßΓá¡ñáαΓ). æπΘÑßΓóπÑΓ ¡Ñß-
¬«½∞¬« ß«íßΓóÑ¡¡δσ αáßΦ¿αÑ¡¿⌐ Turbo-C, ¡á»α¿¼Ñα Σπ¡¬µ¿¿ Γ¿»á
interrupt.
1.12.1. î«ñ¿Σ¿¬áΓ«αδ Γ¿»á Σπ¡¬µ¿¿ (K&R 10.1.1)
é ñ«»«½¡Ñ¡¿Ñ ¬ external ¿ static, Turbo-C »«ññÑনóáÑΓ α∩ñ
¼«ñ¿Σ¿¬áΓ«α«ó Γ¿»á ñ½∩ «»¿ßá¡¿∩ Σπ¡¬µ¿⌐: pascal, cdecl, inter-
rupt, near, far ¿ huge.
1.12.1.1. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ pascal
äá¡¡δ⌐ ¼«ñ¿Σ¿¬áΓ«α ¿ß»«½∞ºπÑΓß∩ ñ½∩ Σπ¡¬µ¿⌐ (¿½¿ π¬áºáΓÑ-
½Ñ⌐ ¡á Σπ¡¬µ¿¿), ¬«Γ«αδÑ ¿ß»«½∞ºπεΓ Åá߬á½Ñó߬πε »«ß½Ññ«óáΓѽ∞-
¡«ßΓ∞ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó. ¥Γ« »«ºó«½∩ÑΓ »¿ßáΓ∞ ¡á ∩ºδ¬Ñ C
Σπ¡¬µ¿¿, ¬«Γ«αδÑ ¼«úπΓ íδΓ∞ óδºóá¡δ ¿º »α«úαá¼¼, ¡á»¿ßá¡¡δσ ¡á
ñαπú«¼ ∩ºδ¬Ñ; á¡á½«ú¿τ¡«, ¡á½¿τ¿Ñ ¼«ñ¿Σ¿¬áΓ«αá íπñÑΓ ñ«»π߬áΓ∞
«íαáΘÑ¡¿Ñ ¿º C-»α«úαá¼¼, ¬ ó¡ÑΦ¡¿¼ »«ñ»α«úαá¼¼á¼, ¡á»¿ßá¡¡δ¼ ¡á
ñαπú¿σ ∩ºδ¬áσ. ê¼∩ Σπ¡¬µ¿¿ »αÑ«íαáºπÑΓß∩ ¬ óÑασ¡Ñ¼π αÑú¿ßΓαπ,
τΓ« ¡Ñ«íσ«ñ¿¼« ñ½∩ αáí«Γδ αÑñá¬Γ«αá ßó∩ºÑ⌐.
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. êß»«½∞º«óá¡¿Ñ «»µ¿¿ -p íπñÑΓ »α¿ó«ñ¿Γ∞ ¬
Γ«¼π, τΓ« óßÑ Σπ¡¬µ¿¿ (¿ π¬áºáΓѽ¿ ¡á φΓ¿ Σπ¡¬µ¿¿) íπñπΓ αáßß-
¼áΓα¿óáΓ∞ß∩ ¬á¬ Ñß½¿ íδ «¡¿ ¿¼Ñ½¿ Γ¿» pascal. ìá»α¿¼Ñα, Ñß½¿ óδ
«íΩ∩󿽿 ¿ «Γ¬«¼»¿½¿α«ó὿ ß½ÑñπεΘπε Σπ¡¬µ¿ε:
pascal putnums(unt i, int j, int k)
{
printf("And the answers are: %d, %d ¿ %d\n",i,j,k);
}
ñαπúá∩ C-»α«úαá¼¼á ¼«ªÑΓ ºáΓѼ »«ñ¬½ετ¿Γ∞ ñá¡¡πε Σπ¡¬µ¿ε »α¿
αáí«ΓÑ αÑñá¬Γ«αá ßó∩ºÑ⌐ ¿ «íαáΘáΓ∞ß∩ ¬ ¡Ñ⌐, ¿ß»«½∞ºπ∩ «»¿ßá¡¿Ñ:
- 18 -
pascal putnums(int i, int j, int k);
main()
{
putnum(1,4,9);
}
öπ¡¬µ¿¿ Γ¿»á pascal ¡Ñ ¼«úπΓ ¿¼ÑΓ∞ αẽ¿τ¡«Ñ τ¿ß½« áαúπ-
¼Ñ¡Γ«ó, ¬á¬, ¡á»α¿¼Ñα, Σπ¡¬µ¿∩ printf. Å« φΓ«⌐ »α¿τ¿¡Ñ óδ ¡Ñ
¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ φ½½¿»ß¿ß (...) (»α«»π߬ »«ñαáºπ¼ÑóáѼ«ú«
áαúπ¼Ñ¡Γá) ó «»αÑñѽѡ¿¿ Σπ¡¬µ¿¿ Γ¿»á pascal.
1.12.1.2. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ cdecl
äá¡¡δ⌐ ¼«ñ¿Σ¿¬áΓ«α á¡á½«ú¿τÑ¡ ¼«ñ¿Σ¿¬áΓ«απ pascal; ¿ß»«½∞-
ºπÑΓß∩ ß Σπ¡¬µ¿∩¼¿ ¿½¿ π¬áºáΓѽ∩¼¿ ¡á Σπ¡¬µ¿¿, ñ½∩ Γ«ú« τΓ«íδ
«Γ¼Ñ¡¿Γ∞ ñ¿αÑ¬Γ¿ó𠬫¼»¿½∩Γ«αá -p ¿ «íΩ∩ó¿Γ∞ Σπ¡¬µ¿ε ¬á¬ «íδτ-
¡πε C-Σπ¡¬µ¿ε. ìá»α¿¼Ñα, Ñß½¿ óδ »α¿ ¬«¼»¿½∩µ¿¿ »α«úαá¼¼δ πßΓá-
¡«ó¿½¿ «»µ¿ε -p, ¡« σ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ printf, óδ ñ«½ª¡δ »«ß-
Γπ»¿Γ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
extern cdecl printf();
putnums(int i, int j, int k);
cdecl main()
{
putnums(1,4,9);
}
putnums(int i, int j, int k)
{
printf("And the answers are: %d, %d ¿ %d\n",i,j,k);
}
àß½¿ »α«úαá¼¼á ¬«¼»¿½¿απÑΓß∩ ß «»µ¿Ñ⌐ -p, óßÑ Σπ¡¬µ¿¿ ¿º
ß¿ßΓѼ¡«⌐ í¿í½¿«ΓѬ¿ ¡Ñ«íσ«ñ¿¼« «íΩ∩ó¿Γ∞ ¬á¬ cdecl. àß½¿ óδ
»«ß¼«Γα¿ΓÑ ß¿ßΓѼ¡δÑ include-Σá⌐½δ, Γ« πó¿ñÑΓÑ, τΓ« ¬áªñá∩
Σπ¡¬µ¿∩ ∩ó¡« «»¿ßá¡á ¬á¬ cdecl.
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. â½á¡á∩ »α«úαá¼¼á (main) ñ«½ª¡á íδΓ∞ ΓᬪÑ
«íΩ∩ó½Ñ¡á cdecl.
1.12.1.3. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ interrupt
î«ñ¿Σ¿¬áΓ«α interrupt »αÑñ¡áº¡áτÑ¡ ñ½∩ ¿ß»«½∞º«óá¡¿∩ ß
óÑ¬Γ«αἿ »αÑαδóá¡¿⌐ »α«µÑßß«αá 8086/8088. Turbo-C íπñÑΓ ¬«¼»¿-
½¿α«óáΓ∞ Σπ¡¬µ¿ε Γ¿»á interrupt ß ñ«»«½¡¿Γѽ∞¡δ¼ óσ«ñ«¼ ¿ ¬«ñ«¼
ºáóÑαΦÑ¡¿∩, ΓᬠτΓ« αÑú¿ßΓαδ AX, BX, CX, DX, SI, DI, ES ¿ DS
ß«σαá¡∩εΓß∩. äαπú¿Ñ αÑú¿ßΓαδ: BP, SP, SS, CS ¿ IP ß«σαá¡∩εΓß∩
¬á¬ τáßΓ∞ »«ß½Ññ«óáΓѽ∞¡«ßΓ¿ C-ó맮óá ¿½¿ τáßΓ∞ ßἫ⌐ «íαáí«Γ¬¿
- 19 -
»αÑαδóá¡¿∩. Éáßß¼«Γα¿¼ »α¿¼Ñα ßΓá¡ñáαΓ¡«ú« «»αÑñѽѡ¿∩ Σπ¡¬µ¿¿
Γ¿»á interrupt.
void interrupt myhandler()
{
. . .
}
åѽáΓѽ∞¡« «íΩ∩ó½∩Γ∞ Σπ¡¬µ¿¿ »αÑαδóá¡¿⌐ ¬á¬ Σπ¡¬µ¿¿ Γ¿»á
void. öπ¡¬µ¿¿ »αÑαδóá¡¿⌐ »«ññÑনóáεΓß∩ ñ½∩ óßÑσ ¼«ñѽÑ⌐
»á¼∩Γ¿. ä½∩ óßÑσ ¼«ñѽÑ⌐, ¿ß¬½ετá∩ huge, ó αÑú¿ßΓα DS ºá¡«ß¿Γß∩
ßÑú¼Ñ¡Γ ñá¡¡δσ »α«úαá¼¼δ. ä½∩ ¼«ñѽ¿ huge ó DS ºá¡«ß¿Γß∩ ¼«-
ñπ½∞¡δ⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ.
1.12.1.4. Åα«Γ«Γ¿»δ Σπ¡¬µ¿⌐ (K&R 10.1.2)
é K&R ñ«»π߬áÑΓß∩ Γ«½∞¬« «íΩ∩ó½Ñ¡¿Ñ Σπ¡¬µ¿¿, ß«ßΓ«∩ΘÑÑ ¿º
¿¼Ñ¡¿, Γ¿»á ¿ »πßΓδσ ߬«í«¬. Åáαá¼ÑΓαδ (Ñß½¿ «¡¿ ÑßΓ∞) «íΩ∩ó-
½∩εΓß∩ Γ«½∞¬« ó «»αÑñѽѡ¿¿ ¡Ñ»«ßαÑñßΓóÑ¡¡« ßἫ⌐ Σπ¡¬µ¿¿.
ANSI ßΓá¡ñáαΓ ¿ Turbo-C ñ«»π߬áεΓ ¿ß»«½∞º«óá¡¿Ñ »α«Γ«Γ¿»«ó
Σπ¡¬µ¿⌐, ñ½∩ Γ«ú« τΓ«íδ «íΩ∩ó¿Γ∞ Σπ¡¬µ¿ε. æπΘÑßΓóπεΓ ß»Ñµ¿á½∞¡-
δÑ «»¿ßá¡¿∩, ¬«Γ«αδÑ ó¬½ετáεΓ ¿¡Σ«α¼áµ¿ε « »áαá¼ÑΓαáσ Σπ¡¬µ¿¿.
諼»¿½∩Γ«α ¿ß»«½∞ºπÑΓ ñá¡¡πε ¿¡Σ«α¼áµ¿ε ñ½∩ »α«óÑન ó맮ó«ó
Σπ¡¬µ¿⌐, á Γá¬ªÑ ñ½∩ »αÑ«íαẫóá¡¿∩ áαúπ¼Ñ¡Γ«ó ¬ ΓαÑíπεΘѼπß∩
Γ¿»π. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
long lmax(long v1, long v2);
main()
{
int limit=32;
char ch='A';
long mval;
mval=lmax(limit,ch);
}
çáñá¡ »α«Γ«Γ¿» Σπ¡¬µ¿¿ ñ½∩ lmax; φΓá »α«úαá¼¼á íπñÑΓ
»αÑ«íαẫóδóáΓ∞ »áαá¼ÑΓαδ limit ¿ ch ¬ Γ¿»π long, ¿ß»«½∞ºπ∩
ßΓá¡ñáαΓ¡δÑ »αáó¿½á »αÑ«íαẫóá¡¿∩, »αѪñÑ τѼ «¡¿ íπñπΓ »«¼Ñ-
ΘÑ¡δ ó ßΓѬ ñ½∩ «íαáΘÑ¡¿∩ ¬ lmax. Åα¿ «ΓßπΓßΓó¿¿ »α«Γ«Γ¿»á
Σπ¡¬µ¿¿ »áαá¼ÑΓαδ limit ¿ ch í뫨 íδ »«¼ÑΘÑ¡δ ó ßΓѬ ß««ΓóÑΓßΓ-
óÑ¡¡« ¬á¬ µÑ½«Ñ º¡áτÑ¡¿Ñ ¿ ß¿¼ó«½; ó φΓ«¼ ß½πτáÑ ó lmax »ÑαÑñá-
ó὿ß∞ íδ »áαá¼ÑΓαδ, ¡Ñ ß«ó»áñáεΘ¿Ñ »« αẼÑαπ ¿ ß«ñÑαªá¡¿ε ß
«ª¿ñáÑ¼δ¼¿. êß»«½∞º«óá¡¿Ñ »α«Γ«Γ¿»«ó Σπ¡¬µ¿⌐ »«ºó«½∩ÑΓ ¿ºíѪáΓ∞
«Φ¿í«¬.
Ä»¿ßá¡¿Ñ Σπ¡¬µ¿¿
f(void)
- 20 -
«º¡áτáÑΓ, τΓ« Σπ¡¬µ¿∩ ¡Ñ ¿¼ÑÑΓ áαúπ¼Ñ¡Γ«ó.
é »α«Γ¿ó¡«¼ ß½πτáÑ, ó ߬«í¬áσ π¬áºδóáÑΓß∩ ß»¿ß«¬ »áαá¼ÑΓ-
α«ó, αáºñѽѡ¡δσ ºá»∩Γ묨. ÄíΩ∩ó½Ñ¡¿Ñ ¼«ªÑΓ íδΓ∞ ßñѽᡫ ó Σ«α-
¼Ñ
func(int *, long);
¿½¿ ó ¡Ñú« ¼«úπΓ íδΓ∞ ó¬½ετÑ¡δ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ
func(int * count, long total);
é «í«¿σ ß½πτá∩σ, π¬áºá¡¡δσ óδΦÑ, Σπ¡¬µ¿∩ func »α¿¡¿¼áÑΓ
ñóá »áαá¼ÑΓαá: π¬áºáΓѽ∞ ¡á Γ¿» int, ¡áºóá¡¡δ⌐ count, ¿ µÑ½πε
»ÑαѼѡ¡πε total Γ¿»á long. êñÑ¡Γ¿Σ¿¬áΓ«α, π¬áºá¡¡δ⌐ ó «íΩ∩ó½Ñ-
¡¿¿, ¿ß»«½∞ºπÑΓß∩ Γ«½∞¬« ó ñ¿áú¡«ßΓ¿τÑ߬«¼ ß««íΘÑ¡¿¿, ó ß½πτáÑ
󫺡¿¬¡«óÑ¡¿∩ ¡Ñß««ΓóÑΓßΓó¿∩ Γ¿»á »áαá¼ÑΓα«ó.
Åα«Γ«Γ¿» Σπ¡¬µ¿¿ «íδτ¡« «»αÑñѽ∩ÑΓ Σπ¡¬µ¿ε ¬á¬ Σπ¡¬µ¿ε,
»α¿¡¿¼áεΘπε Σ¿¬ß¿α«óá¡¡«Ñ τ¿ß½« »áαá¼ÑΓα«ó. ä½∩ C-Σπ¡¬µ¿⌐, ¬«-
Γ«αδÑ »α¿¡¿¼áεΓ αẽ¿τ¡«Ñ τ¿ß½« »áαá¼ÑΓα«ó (¡á»α¿¼Ñα, printf),
»α«»«Γ¿» Σπ¡¬µ¿¿ ¼«ªÑΓ ºá¬á¡τ¿óáΓ∞ß∩ ¼¡«ú«Γ«τ¿Ñ¼ (...), ¡á»α¿-
¼Ñα
f(int *count, long total, ...)
Åα¿ Γᬫ⌐ Σ«α¼Ñ »α«Γ«Γ¿»á Σ¿¬ß¿α«óá¡¡δÑ »áαá¼ÑΓαδ »α«óÑ-
α∩εΓß∩ ó« óαѼ∩ ¬«¼»¿½∩µ¿¿, á »ÑαѼѡ¡δÑ »áαá¼ÑΓαδ »ÑαÑñáεΓß∩,
¬á¬ »α¿ «ΓßπΓßΓó¿¿ »α«Γ«Γ¿»á.
Éáßß¼«Γα¿¼ ¡Ñ߬«½∞¬« »α¿¼Ñα«ó.
int f(); /* öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ óѽ¿τ¿¡π
Γ¿»á int. ¥Γ« ¬½áßß¿τÑ߬¿⌐
ßΓ¿½∞ K&R */
int f(void); /* öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ
Γ¿»á int. ƒó¡« π¬áºá¡«, τΓ« »áαá¼ÑΓαδ
¡Ñ »ÑαÑñáεΓß∩ */
int p(int,long); /* öπ¡¬µ¿∩ »«½πτáÑΓ ñóá »áαá¼ÑΓαá;
»Ñαóδ⌐ ¿¼ÑÑΓ Γ¿» int, óΓ«α«⌐ - long */
int pascal q(void); /* öπ¡¬µ¿∩ Åá߬á½Ñó߬«ú« Γ¿»á
íѺ »áαá¼ÑΓα«ó; ó«ºóαáΘáÑΓ
º¡áτÑ¡¿Ñ Γ¿»á int */
char far * s(char *source, int kind); /* öπ¡¬µ¿∩
ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ Γ¿»á far ¡á
- 21 -
ßΓ᫬π; »«½πτáÑΓ ñóá »áαá¼ÑΓαá */
int printf(char *format,...); /* öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ
º¡áτÑ¡¿Ñ Γ¿»á int, »«½πτá∩ π¬áºáΓѽ∞
¡á Σ¿¬ß¿α«óá¡¡δ⌐ »áαá¼ÑΓα Γ¿»á char
¿ ½εí«Ñ τ¿ß½« ñ«»«½¡¿Γѽ∞¡δσ
»áαá¼ÑΓα«ó ¡Ñ¿ºóÑßΓ¡«ú« Γ¿»á */
int (*fp)(int); /* ô¬áºáΓѽ∞ ¡á Σπ¡¬µ¿ε, ó«ºóαáΘáεΘπε
º¡áτÑ¡¿Ñ Γ¿»á int ¿ »«½πτáεΘπε
Ññ¿¡ßΓóÑ¡¡δ⌐ int »áαá¼ÑΓα */
ÄíΘ¿Ñ »αáó¿½á αáí«Γδ ß ¼«ñ¿Σ¿¬áΓ«αἿ ∩ºδ¬á ¿ Σ«α¼á½∞¡δ¼¿
»áαá¼ÑΓαἿ ó ó맮óáσ Σπ¡¬µ¿⌐, ¬á¬ ¿ß»«½∞ºπεΘ¿σ »α«Γ«»¿Γδ, Γá¬
¿ ¿σ ¡Ñ ¿ß»«½∞ºπεΘ¿σ:
1) î«ñ¿Σ¿¬áΓ«αδ ∩ºδ¬á ñ½∩ «»¿ßá¡¿∩ Σπ¡¬µ¿⌐ ñ«½ª¡δ ß«ó»áñáΓ∞
ß ¼«ñ¿Σ¿¬áΓ«αἿ, ¿ß»«½∞ºπÑ¼δ¼¿ ó «íΩ∩ó½Ñ¡¿¿ Σπ¡¬µ¿¿,
ñ½∩ óßÑσ «íαáΘÑ¡¿⌐ ¬ Σπ¡¬µ¿¿.
2) öπ¡¬µ¿∩ ¼«ªÑΓ ¿º¼Ñ¡∩Γ∞ º¡áτÑ¡¿∩ Σ«α¼á½∞¡δσ »áαá¼ÑΓα«ó,
¡« φΓ« ¡Ñ «¬áºδóáÑΓ ¬á¬«ú«-½¿í« ó«ºñÑ⌐ßΓó¿∩ ¡á º¡áτÑ¡¿∩
ñÑ⌐ßΓó¿Γѽ∞¡δσ áαúπ¼Ñ¡Γ«ó ó óδºδóáεΘÑ⌐ »α«úαá¼¼Ñ, ºá
¿ß¬½ετÑ¡¿Ñ¼ Σπ¡¬µ¿⌐ »αÑαδóá¡¿∩.
àß½¿ »α«Γ«Γ¿» Σπ¡¬µ¿¿ ¡Ñ «íΩ∩ó½Ñ¡ »αÑñóáα¿Γѽ∞¡«, Turbo-C
»αÑ«íαáºπÑΓ áαúπ¼Ñ¡Γδ »α¿ «íαáΘÑ¡¿¿ ¬ Σπ¡¬µ¿¿ ß«ú½áß¡«
»αáó¿½á¼, «»¿ßá¡¡δ¼ ó αáºñÑ½Ñ "Çα¿Σ¼ÑΓ¿τÑ߬¿Ñ »αÑ«íαẫóá¡¿∩".
àß½¿ «íΩ∩ó½Ñ¡ »α«Γ«Γ¿», Turbo-C »αÑ«íαáºπÑΓ áαúπ¼ÑΓδ ¬ Γ¿»π,
«íΩ∩ó½Ñ¡¡«¼π ñ½∩ »áαá¼ÑΓα«ó.
àß½¿ »α«Γ«Γ¿» Σπ¡¬µ¿¿ ó¬½ετáÑΓ ¼¡«ú«Γ«τ¿Ñ (...), Turbo-C
»αÑ«íαáºπÑΓ óßÑ ºáñá¡¡δÑ áαúπ¼Ñ¡Γδ Σπ¡¬µ¿¿ ¬ áαúπ¼Ñ¡Γá¼, ºáñá-
óáÑ¼δ¼ »α«Γ«Γ¿»«¼ (ñ« ¼¡«ú«Γ«τ¿∩). 諼»¿½Γ«α íπñÑΓ αáßΦ¿α∩Γ∞
½εíδÑ áαúπ¼Ñ¡Γδ, ºáñá¡¡δÑ »«ß½Ñ Σ¿¬ß¿α«óá¡¡δσ »áαá¼ÑΓα«ó, »«
¡«α¼á½∞¡δ¼ »αáó¿½á¼ ñ½∩ áαúπ¼Ñ¡Γ«ó Σπ¡¬µ¿⌐ íѺ »α«Γ«Γ¿»«ó.
àß½¿ ÑßΓ∞ »α«Γ«Γ¿», τ¿ß½« áαúπ¼Ñ¡Γ«ó ñ«½ª¡« íδΓ∞ ß««Γ-
óÑΓßΓóÑ¡¡δ¼ (ºá ¿ß¬½ετÑ¡¿Ñ¼ ß½πτá∩, ¬«úñá ó »α«Γ«Γ¿»Ñ «»πΘÑ¡
¬á¬«⌐-½¿í« áαúπ¼Ñ¡Γ). Æ¿»δ ñ«½ª¡δ íδΓ∞ ß«ó¼ÑßΓ¿¼δ Γ«½∞¬« »«
αẼÑαπ, ñ½∩ Γ«ú« τΓ«íδ ¬«ααÑ¬Γ¡« »α«¿ºó«ñ¿½¿ß∞ »αÑ«íαẫóá¡¿∩
Γ¿»«ó. éδ óßÑúñá ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ ∩ó¡δÑ »αÑ«íαẫóá¡¿∩ áαúπ-
¼Ñ¡Γ«ó ¬ Γ¿»π, ñ«»πßΓ¿¼«¼π ñ½∩ »α«Γ«Γ¿»á Σπ¡¬µ¿¿.
ÅÉêîàÉ:
int strcmp(char *s1, char *s2); /* Å«½¡δ⌐ »α«Γ«Γ¿» */
int *strcpy(); /* ìÑΓ »α«Γ«Γ¿»á */
int samp1(foat, int, ...); /* Å«½¡δ⌐ »α«Γ«Γ¿» */
samp2()
{
char *sx, *cp;
double z;
- 22 -
long a;
float q;
if(strcmp(sx, cp)) /* 1. éÑα¡« */
strcpy(sx, cp, 44); /* 2. êñÑΓ Γ«½∞¬« ñ½∩ Turbo-C */
samp1(3, a, q); /* 3. éÑα¡« */
strcpy(cp); /* 4. ÄΦ¿í¬á »α¿ óδ»«½¡Ñ¡¿¿ */
samp1(2); /* 5. ÄΦ¿í¬á »α¿ ¬«¼»¿½∩µ¿¿ */
}
é 1 ó맮óÑ (ß¼. ¡π¼Ñαᵿε ó ¬«¼¼Ñ¡Γáα¿∩σ) ¿ß»«½∞º«óá¡¿Ñ
Σπ¡¬µ¿¿ strcmp ∩ó¡« ß««ΓóÑΓßΓóπÑΓ »α«Γ«Γ¿»π ¿ ¬«ααÑ¬Γ¡« ñ½∩
óßÑσ ß½πτáÑó.
é« 2 ó맮óÑ (strcpy) ¿¼ÑÑΓß∩ ½¿Φ¡¿⌐ áαúπ¼Ñ¡Γ (strcpy «»αÑ-
ñѽѡá ñ½∩ ñóπσ áαúπ¼Ñ¡Γ«ó, á ¡Ñ ñ½∩ 3-Ñσ). é φΓ«¼ ß½πτáÑ Tur-
bo-C ΓÑα∩ÑΓ ¡Ñí«½∞Φ«Ñ ¬«½¿τÑßΓó« óαѼѡ¿ ¿ úÑ¡Ñα¿Γ ¬«ñ ñ½∩ »«-
¼ÑΘÑ¡¿∩ ½¿Φ¡Ñú« áαúπ¼Ñ¡Γá ó ßΓѬ. ¥Γ«, «ñ¡á¬«, ¡Ñ ∩ó½∩ÑΓß∩ ß¿¡-
Γá¬ß¿τÑ߬«⌐ «Φ¿í¬«⌐, Γ.¬. ¬«¼»¿½∩Γ«α ¡Ñ º¡áÑΓ « τ¿ß½Ñ áαúπ¼Ñ¡-
Γ«ó strcpy. Æᬫ⌐ ó맮ó ¡Ñ ñ«»πßΓ¿¼ ñ½∩ ñαπú¿σ ¬«¼»¿½¿Γ«α«ó.
é 3-Ѽ »α¿¼ÑαÑ »α«Γ«Γ¿» ΓαÑíπÑΓ, τΓ«íδ 1 áαúπ¼Ñ¡Γ ñ½∩
samp1 íδ½ »αÑ«íαẫóá¡ ¬ float, á 2-«⌐ - ¬ int. 諼»¿½∩Γ«α
óδñáßΓ »αÑñπ»αѪñÑ¡¿Ñ « 󫺼«ª¡«⌐ »«ΓÑαÑ º¡áτ¿¼δσ µ¿Σα óß½ÑñßΓ-
ó¿Ñ Γ«ú«, τΓ« »α¿ »αÑ«íαẫóá¡¿¿ Γ¿»á long ¬ Γ¿»π int «Γíαáßδ-
óáεΓß∩ óÑασ¡¿Ñ í¿Γδ. éδ ¼«ªÑΓÑ ¿ºíáó¿Γ∞ß∩ «Γ óδñáτ¿ Γᬫú« »αÑ-
ñπ»αѪñÑ¡¿∩, Ñß½¿ ºáñáñ¿ΓÑ ∩ó¡«Ñ »αÑ«íαẫóá¡¿Ñ ¬ µÑ½«¼π. ÆαÑ-
Γ¿⌐ áαúπ¼Ñ¡Γ, q, ß««ΓóÑΓßΓóπÑΓ «»πΘÑ¡¡«¼π áαúπ¼Ñ¡Γπ ó
»α«Γ«Γ¿»Ñ. Ä¡ »αÑ«íαáºπÑΓß∩ ¬ Γ¿»π double ß«ú½áß¡« «íδτ¡«¼π
áα¿Σ¼ÑΓ¿τÑ߬«¼π »αÑ«íαẫóá¡¿ε. éÑß∞ óδº«ó ¬«ααѬΓÑ¡.
é 4 ó맮óÑ ß¡«óá óßΓαÑτáÑΓß∩ «íαáΘÑ¡¿Ñ ¬ strcpy, ¡« τ¿ß½«
áαúπ¼Ñ¡Γ«ó ß½¿Φ¬«¼ ¼á½«. ¥Γ« ó맮óÑΓ «Φ¿í¬π »α¿ óδ»«½¡Ñ¡¿¿
»α«úαá¼¼δ. 諼»¿½∩Γ«α ªÑ ¡¿τÑú« ¡Ñ ß««íΘ¿Γ (Ñß½¿ ñáªÑ τ¿ß½« »á-
αá¼ÑΓα«ó «Γ½¿τáÑΓß∩ «Γ τ¿ß½á »áαá¼ÑΓα«ó ó »αÑñδñπΘѼ ó맮óÑ Γ«⌐
ªÑ Σπ¡¬µ¿¿), Γ.¬. ñ½∩ strcpy ¡ÑΓ »α«Γ«Γ¿»á Σπ¡¬µ¿¿.
é 5 ó맮óÑ ñ½∩ Σπ¡¬µ¿¿ samp1 ºáñá¡« ß½¿Φ¬«¼ ¼á½« áαúπ¼Ñ¡-
Γ«ó. Æ.¬. samp1 ΓαÑíπÑΓ ¼¿¡¿¼π¼ 2 áαúπ¼Ñ¡Γá, φëà «»ÑαáΓ«α ∩ó-
½∩ÑΓß∩ «Φ¿í«τ¡δ¼. 諼»¿½∩Γ«α óδñáßΓ ß««íΘÑ¡¿Ñ « Γ«¼, τΓ« ó
ó맮óÑ ¡Ñ σóáΓáÑΓ áαúπ¼Ñ¡Γ«ó.
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. àß½¿ óáΦ »α«Γ«Γ¿» Σπ¡¬µ¿¿ ¡Ñ ß««ΓóÑΓßΓóπÑΓ
ñÑ⌐ßΓó¿Γѽ∞¡«¼π «»αÑñѽѡ¿ε Σπ¡¬µ¿¿, Turbo-C «í¡áαπª¿Γ φΓ« ó
Γ«¼ ¿ Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ φΓ« «»αÑñѽѡ¿Ñ ¡áσ«ñ¿Γß∩ ó Γ«¼
ªÑ Σá⌐½Ñ, τΓ« ¿ »α«Γ«Γ¿». àß½¿ óδ ß«ºñáÑΓÑ í¿í½¿«ΓѬπ »α«úαá¼¼
ß ß««ΓóÑΓßΓóπεΘ¿¼ ßí«α¡¿¬«¼ »α«Γ«Γ¿»«ó (include-Σá⌐½«¼), óδ
ñ«½ª¡δ πτ¿ΓδóáΓ∞ ó¬½ετÑ¡¿Ñ Σá⌐½á ß »α«Γ«Γ¿»á¼¿ ó« óαѼ∩ ¬«¼»¿-
½∩µ¿¿ í¿í½¿«ΓѬ¿, ñ½∩ Γ«ú« τΓ«íδ «Γ½«ó¿Γ∞ ½εí«Ñ »α«Γ¿ó«αÑτ¿Ñ
¼Ñªñπ »α«Γ«Γ¿»á¼¿ ¿ ñÑ⌐ßΓó¿Γѽ∞¡δ¼¿ «»αÑñѽѡ¿∩¼¿ Σπ¡¬µ¿⌐.
- 23 -
1.13. Åαáó¿½á ó¿ñ¿¼«ßΓ¿ (K&R 11)
Åαáó¿½á ó¿ñ¿¼«ßΓ¿ - φΓ« »αáó¿½á, «»αÑñѽ∩εΘ¿Ñ, ó ¬á¬¿σ
τáßΓ∩σ ΓѬßΓá »α«úαá¼¼δ ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡á »ÑαѼѡ¡á∩ ó
ºáó¿ß¿¼«ßΓ¿ «Γ Γ«ú«, úñÑ ¿ ¬á¬ «¡á «»¿ßá¡á.
Turbo-C αáºαÑΦáÑΓ í«½ÑÑ ó«½∞¡«Ñ «íαáΘÑ¡¿Ñ ß ¡Ñπ¡¿¬á½∞¡δ¼¿
¿ñÑ¡Γ¿Σ¿¬áΓ«αἿ, τѼ Γ«ú« ΓαÑíπÑΓ K&R. Éẽ¿τáεΓ 4 ¬½áßßá
¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó:
ê¼Ñ¡á, «»¿ßδóáѼδÑ ß »«¼«Θ∞ε ß½«óá typedef, »ÑαѼѡ¡δÑ,
τ½Ñ¡δ »ÑαÑτ¿ß½Ñ¡¿∩ ñ«½ª¡δ íδΓ∞ π¡¿¬á½∞¡δ¼¿ ó¡πΓα¿ í½«¬á, ó ¬«-
Γ«α«¼ «¡¿ «»¿ßá¡δ. êñÑ¡Γ¿Σ¿¬áΓ«αδ, «íΩ∩ó½Ñ¡¡δÑ ó¡ÑΦ¡¿¼¿, ñ«½ª¡δ
íδΓ∞ π¡¿¬á½∞¡δ¼¿ ßαÑñ¿ »ÑαѼѡ¡δσ, «»¿ßá¡¡δσ ¬á¬ ó¡ÑΦ¡¿Ñ.
æΓαπ¬Γπαá, «íΩÑñ¿¡Ñ¡¿Ñ, »α¿º¡á¬¿ »ÑαÑτ¿ß½Ñ¡¿∩ ñ«½ª¡δ íδΓ∞
π¡¿¬á½∞¡δ¼¿ ó¡πΓα¿ í½«¬á, ó ¬«Γ«α«¼ «¡¿ «»¿ßá¡δ. Åਧ¡á¬¿, «»¿-
ßá¡¡δÑ ó¡Ñ »αÑñѽ«ó ¬á¬«⌐-½¿í« Σπ¡¬µ¿¿, ñ«½ª¡δ íδΓ∞ π¡¿¬á½∞¡δ
ßαÑñ¿ óßÑσ »α¿º¡á¬«ó, «»¿ßá¡¡δσ ¬á¬ ó¡ÑΦ¡¿Ñ.
ê¼Ñ¡á ßΓαπ¬Γπαδ ¿ τ½Ñ¡á «íΩÑñ¿¡Ñ¡¿∩ ñ«½ª¡δ íδΓ∞ π¡¿¬á½∞¡δ
ó ßΓαπ¬ΓπαÑ ¿½¿ «íΩÑñ¿¡Ñ¡¿¿, ó ¬«Γ«αδσ «¡¿ «»¿ßá¡δ. ìÑ ßπΘÑßΓ-
óπÑΓ ¡¿¬á¬¿σ «úαá¡¿τÑ¡¿⌐ ¡á Γ¿» ¿½¿ ß¼ÑΘÑ¡¿Ñ ñ½∩ τ½Ñ¡«ó ß «ñ¿-
¡á¬«óδ¼ ¿¼Ñ¡á¼¿ ó αẽ¿τ¡δσ ßΓαπ¬Γπαáσ.
Ä»ÑαáΓ«αδ GOTO ¡á ¼ÑΓ¬π ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ß∩ ½¿Φ∞ ó Γ«⌐
Σπ¡¬µ¿¿, úñÑ «íΩ∩ó½Ñ¡á ñá¡¡á∩ ¼ÑΓ¬á. îÑΓ¬á, ó ßó«ε «τÑαÑñ∞,
ñ«½ª¡á íδΓ∞ π¡¿¬á½∞¡á ñ½∩ Σπ¡¬µ¿¿, ó ¬«Γ«α«⌐ «¡á «íΩ∩ó½Ñ¡á.
1.14. 諼á¡ñδ π»αáó½Ñ¡¿∩ Γαá¡ß½∩µ¿Ñ⌐ (R&K 12)
Turbo-C »«ññÑনóáÑΓ óßÑ π»αáó½∩εΘ¿Ñ ¬«¼á¡ñδ, «»¿ßá¡¡δÑ ó
K&R. ¥Γ¿¼¿ ¬«¼á¡ñἿ ∩ó½∩εΓß∩ ñ¿αÑ¬Γ¿óδ »αÑ»α«µÑßß«αá - ßΓ᫬¿
¿ßσ«ñ¡«⌐ »α«úαá¼¼δ, ¡áτ¿¡áεΘ¿Ñß∩ ß« º¡á¬á #.
1.14.1. çá¼Ñ¡á ½Ñ¬ßѼ (K&R 12.1)
Turbo-C óδ»«½¡∩ÑΓ óßÑ «»αÑñѽѡ¿∩ #define ¿ #undef, «»¿-
ßá¡¡δÑ ó R&K, ß« ß½ÑñπεΘ¿¼¿ ñ«»«½¡Ñ¡¿∩¼¿:
1. æ½ÑñπεΘ¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ¡Ñ «í∩ºáΓѽ∞¡« ñ«½ª¡δ óßΓαÑ-
τáΓ∞ß∩ ó ñ¿αÑ¬Γ¿óáσ #define ¿ #undef:
_STDC_
_FILE_
_LINE_
- 24 -
_DATE_
_TIME_
2. é ¼á¬α««»αÑñѽѡ¿Ñ ¼«úπΓ íδΓ∞ óßΓáó½Ñ¡δ ñóÑ ½Ñ¬ßѼδ
ó¼ÑßΓÑ, αáºñѽѡ¡δÑ º¡á¬á¼¿ ##, ¡á»α¿¼Ñα:
#define VAR(i,j) (i ## j)
Åα¿ φΓ«¼ VAR(x,6) ó맮óÑΓ »«ñßΓá¡«ó¬π x6. ¥Γ« ºá¼Ñ¡∩ÑΓ
¿¡«úñá π»«ΓαÑí½∩Ѽδ⌐, ¡« ¡Ñ »ÑαÑ¡«ß¿¼δ⌐ ¼ÑΓ«ñ ¿ß»«½∞º«óá¡¿∩
(i/**/j).
3. 齫ªÑ¡¡δÑ ¼á¬α«ßδ ó ßΓα«¬Ñ ¼á¬α«-«»αÑñѽѡ¿∩ ßαáí«ΓáεΓ
½¿Φ∞ Γ«úñá, ¬«úñá ßαáí«ΓáÑΓ ßá¼ ¼á¬α«ß, á ¡Ñ »α¿ Ñú« «»¿ßá¡¿¿.
¥Γ« í«½∞ΦÑ ¬áßáÑΓß∩ 󽫪ѡ¡δσ ¼á¬α«ß«ó #undef.
4. æ¿¼ó«½ #, »«¼ÑΘáѼδ⌐ »ÑαÑñ ¼á¬α«áαúπ¼Ñ¡Γ«¼, π¬áºδóáÑΓ «
»αÑ«íαẫóá¡¿¿ Ñú« ó ßΓ᫬π. Åα¿ ¼á¬α«»«ñßΓá¡«ó¬Ñ »α«¿ºó«ñ¿Γß∩
ºá¼Ñ¡á #<Σ«α¼á½∞¡δ⌐ áαúπ¼Ñ¡Γ> ¡á "<ñÑ⌐ßΓó¿Γѽ∞¡δ⌐ áαúπ¼Ñ¡Γ>".
Æá¬, »α¿ ºáñá¡¿¿ ¼á¬α««»αÑñѽѡ¿∩
#define TRACE(flag) printf(#flag "= %d\n", flag)
ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ ΓѬßΓá »α«úαá¼¼δ
highval = 1024;
TRACE(highval);
»αÑ«íαáºπÑΓß∩:
highval = 1024;
printf("highval" "= %d\n", highval);
5. é «Γ½¿τ¿Ñ «Γ ñαπú¿σ αÑ὿ºáµ¿⌐, Turbo-C ¡Ñ «ßπΘÑßΓó½∩ÑΓ
»«ñßΓá¡«ó«¬ ¼á¬α«áαúπ¼Ñ¡Γ«ó ó¡πΓα¿ ßΓ᫬ ¿ ß¿¼ó«½∞¡δσ ¬«¡ßΓá¡Γ.
1.14.2. 鬽ετÑ¡¿Ñ Σá⌐½á (K&R 12.2)
Turbo-C ¿ß»«½∞ºπÑΓ ñ¿αÑ¬Γ¿óπ ΓᬠªÑ, ¬á¬ «»¿ßá¡« ó K&R, ¡«
ßπΘÑßΓóπεΓ ¡Ñ¬«Γ«αδÑ ñ«»«½¡¿Γѽ∞¡δÑ «ß«íÑ¡¡«ßΓ¿: àß½¿ »αÑ»α«-
µÑßß«α ¡Ñ ¡áΦѽ include-Σá⌐½ ó ¬áΓὫúÑ, πßΓá¡«ó½Ñ¡¡«¼ »« π¼«½-
τá¡¿ε (»αÑ»«½áúáÑΓß∩, τΓ« óδ ¿ß»«½∞ºπÑΓÑ Σ«α¼π
include "filename"), Γ«úñá «¡ ¿ΘÑΓ ¬áΓὫú¿, ºáñá¡¡δÑ «»-
µ¿Ñ⌐ ¬«¼»¿½∩Γ«αá -I. àß½¿ óδ ¿ß»«½∞ºπÑΓÑ Σ«α¼π #include
<filenamr>, Γ«úñá ¿ΘπΓß∩ Γ«½∞¬« ¬áΓὫú¿, ºáñá¡¡δÑ «»µ¿Ñ⌐ -I.
(èáΓὫú¿, »ÑαÑτ¿ß½∩ѼδÑ ó ¼Ñ¡ε »« «»µ¿¿ O/Environment/Include,
φ¬ó¿óá½Ñ¡Γ¡δ ¬áΓὫúá¼, ºáñá¡¡δ¼ ß »«¼«Θ∞ε «»µ¿¿ -I pathname ó
- 25 -
¬«¼á¡ñ¡«⌐ ßΓ᫬Ñ.
éδ ¼«ªÑΓÑ ºáñáΓ∞ ¿¼∩ »πΓ¿ #include, ó¬½ετáεΘÑÑ úαá¡¿τ¡δÑ
αáºñѽ¿Γѽ¿, ¿ß»«½∞ºπ∩ ¼á¬α«αáßΦ¿αÑ¡¿Ñ. àß½¿ ß½ÑñπεΘá∩ ßΓ᫬á
»«ß½Ñ ¬½ετÑó«ú« ß½«óá ¡áτ¿¡áÑΓß∩ ß ¿ñÑ¡Γ¿Σ¿¬áΓ«αá, »αÑ»α«µÑßß«α
»α«ß¼áΓα¿óáÑΓ ΓѬßΓ ñ½∩ ¼á¬α«ßá. Äñ¡á¬«, Ñß½¿ ßΓα«¬á ºá¬½ετÑ¡á
ó ¬áóδτ¬¿ ¿½¿ ó πú«½∞¡δÑ ß¬«í¬¿, Turbo-C ¡Ñ íπñÑΓ »α«óÑα∩Γ∞ ÑÑ
ñ½∩ ºá»«¼¿¡á¡¿∩ ¼á¬α«ßá. ìá»α¿¼Ñα,
#define myinclude "c:\tc\include\mystuff.h"
#include myinclude
#include "myinclude"
1-δ⌐ #include-«»ÑαáΓ«α ºáßΓáó¿Γ »αÑ»α«µÑßß«α »α«ß¼áΓα¿óáΓ∞
C:\TC\INCLUDE\MYSTUFF.H, Γ«úñá ¬á¬ 2-«⌐ ó맮óÑΓ »α«ß¼«Γα MYINC-
LUDE.H ó ¬áΓὫúÑ »« π¼«½τá¡¿ε.
éδ ¼«ªÑΓÑ ¡Ñ ¿ß»«½∞º«óáΓ∞ «íΩÑñ¿¡Ñ¡¿Ñ ½¿ΓÑα¡δσ ßΓ᫬ ¿
óßΓáó¬π ½Ñ¬ßѼ ó ¼á¬α«ßÑ, ¬«Γ«αδ⌐ ¿ß»«½∞ºπÑΓß∩ ó «»ÑαáΓ«αÑ
include. îá¬α«αáßΦ¿αÑ¡¿Ñ ñ«½ª¡« úÑ¡Ñα¿Γ∞ ΓѬßΓ, ¬«Γ«αδ⌐ τ¿ΓáÑΓ-
ß∩ ¬á¬ ¡«α¼á½∞¡á∩ #include-ñ¿αÑ¬Γ¿óá.
1.14.3. ôß½«ó¡á∩ ¬«¼»¿½∩µ¿∩ (K&R 12.3)
Turbo-C »«ññÑনóáÑΓ «»αÑñѽѡ¿Ñ πß½«ó¡«⌐ ¬«¼»¿½∩µ¿¿ K&R ß
»«¼«Θ∞ε ºá¼Ñ¡δ ß««ΓóÑΓßΓóπεΘ¿σ ßΓ᫬ ¡á »πßΓδÑ. æΓ᫬¿, ¿ú¡«α¿-
απѼδÑ Γ.«., ¡áτ¿¡áεΓß∩ ß ñ¿αÑ¬Γ¿ó #if, #ifdef, #ifndef, #else,
#elif,
endif, Γá¬ªÑ ¬á¬ ¿ óßÑ ¡Ñ¬«¼»¿½¿απѼδÑ ßΓ᫬¿, ∩ó½∩εΘ¿Ñß∩
αѺπ½∞ΓáΓ«¼ φΓ¿σ ñ¿αÑ¬Γ¿ó. éßÑ ñ¿αÑ¬Γ¿óδ πß½«ó¡«⌐ ¬«¼»¿½∩µ¿¿
ñ«½ª¡δ ºá¬á¡τ¿óáΓ∞ß∩ ó ¿ßσ«ñ¡«⌐ »α«úαá¼¼Ñ ¿½¿ include-Σá⌐½Ñ, ó
¬«Γ«αδσ «¡¿ ¡áτ὿ß∞.
Turbo-C »«ññÑনóáÑΓ Γá¬ªÑ «»ÑαáΓ«α ANSI-ßΓá¡ñáαΓá
defined(symbol). Åα¿ßóá¿óáÑΓß∩ º¡áτÑ¡¿Ñ 1 (true), Ñß½¿ ß¿¼ó«½
íδ½ »αÑñóáα¿Γѽ∞¡« «»αÑñѽѡ (ß ¿ß»«½∞º«ó᡿Ѽ #define) ¿ ºáΓѼ
¡Ñ íδ½ «Γ¼Ñ¡Ñ¡ (ß ¿ß»«½∞º«ó᡿Ѽ
undef); ¿¡áτÑ »α¿ßóá¿óáÑΓß∩ 0 (false). Æá¬, ñ¿αÑ¬Γ¿óá
#if defined(mysym)
áñѬóáΓ¡á ñ¿αÑ¬Γ¿óÑ
#ifdef mysym
ÅαÑ¿¼πΘÑßΓó«¼ φΓ«ú« ∩ó½∩ÑΓß∩ 󫺼«ª¡«ßΓ∞ »«óΓ«α¡«ú« ¿ß-
»«½∞º«óá¡¿∩ defined ó ß½«ª¡«¼ óδαáªÑ¡¿¿, ßΓ«∩ΘѼ »«ß½Ñ ñ¿αѬ-
Γ¿óδ #if:
- 26 -
#if defined(mysym) || defined(yoursym)
Turbo-C (ó «Γ½¿τ¿Ñ «Γ ANSI) »«ºó«½∩ÑΓ óá¼ ¿ß»«½∞º«óáΓ∞
«»ÑαáΓ«α sizeof ó óδαáªÑ¡¿¿ ñ½∩ »αÑ»α«µÑßß«αá:
#if (sizeof(void *) ==2)
#define SDATA
#else
#define LDATA
#endif
1.14.4. ô»αáó½Ñ¡¿Ñ ßΓα«¬á¼¿ (K&R 12.4)
Turbo-C »«ññÑনóáÑΓ «»αÑñѽѡ¿Ñ #line, ñá¡¡«Ñ ó K&R.
1.14.5. ä¿αÑ¬Γ¿óá «íαáí«Γ¬¿ «Φ¿í«¬ (ANSI C 3.8.5)
Turbo-C »«ññÑনóáÑΓ ñ¿αÑ¬Γ¿óπ #error, ¬«Γ«αá∩ π»«¼¿¡áÑΓß∩
(¡« ¡Ñ «»αÑñѽ∩ÑΓß∩) ó ANSI-ßΓá¡ñáαΓÑ. àÑ Σ«α¼áΓ:
#error errmsg
àß½¿ óδ ó¬½ετ¿ΓÑ φΓπ ñ¿αÑ¬Γ¿óπ πß½«ó¡«⌐ ¬«¼»¿½∩µ¿¿ ó Σá⌐½
ß óáΦÑ⌐ ¿ßσ«ñ¡«⌐ »α«úαá¼¼«⌐ ¿ πß½«ó¡δÑ ΓÑßΓ«óδÑ Σá⌐½δ, »αÑ»α«-
µÑßß«α íπñÑΓ ßτ¿ΓδóáΓ∞ ñ¿αÑ¬Γ¿óπ #error ¿ ¡Ñ¼Ññ½Ñ¡¡« »αÑαδóáΓ∞-
ß∩, óδñáóá∩ »α¿ φΓ«¼ ß½ÑñπεΘÑÑ ß««íΘÑ¡¿Ñ:
Fatal: filename line# Error directive: errmsg
ÅαÑ»α«µÑßß«α »α«ß¼áΓα¿óáÑΓ ΓѬßΓ ñ½∩ Γ«ú«, τΓ«íδ π¡¿τΓ«-
ª¿Γ∞ ¬«¼¼Ñ¡Γáα¿¿, ¡« ¡á φ¬αá¡ óδó«ñ¿Γ «ßΓáóΦ¿⌐ß∩ ΓѬßΓ íѺ
»α«ß¼«Γαá ñ½∩ óδ∩ó½Ñ¡¿∩ ¼á¬α«ß«ó.
1.14.6. ä¿αÑ¬Γ¿óá PRAGMA (ANSI C 3.8.6)
Turbo-C »«ññÑনóáÑΓ ñ¿αÑ¬Γ¿óπ #pragma, ¬«Γ«αá∩ (¬á¬ ¿
error), ¡Ñ∩ß¡« «»αÑñѽ∩ÑΓß∩ ó ANSI-ßΓá¡ñáαΓÑ. àÑ µÑ½∞ε ∩ó-
½∩ÑΓß∩ αáºαÑΦ¿Γ∞ ߻ѵ¿á½¿º¿α«óá¡¡δÑ ñ¿αÑ¬Γ¿óδ:
#pragma <directive name>
æ »«¼«Θ∞ε #pragma Turbo-C ¼«ªÑΓ «»αÑñѽ¿Γ∞ ½εíδÑ
ñ¿αÑ¬Γ¿óδ, ¬«Γ«αδÑ Ñ¼π ΓαÑíπεΓß∩, íѺ ó¼ÑΦáΓѽ∞ßΓóá ñαπú¿σ ¬«¼-
»¿½∩Γ«α«ó, ¬«Γ«αδÑ »«ññÑনóáεΓ #pragma. Å«-«»αÑñѽѡ¿ε, Ñß½¿
¬«¼»¿½∩Γ«α ¡Ñ «»«º¡á½ ¿¼∩ ñ¿αÑ¬Γ¿óδ, «¡ ¿ú¡«α¿απÑΓ ñ¿αÑ¬Γ¿óπ
pragma.
- 27 -
1.14.6.1. #pragma inline
Turbo-C αáß»«º¡áÑΓ ñóÑ ñ¿αÑ¬Γ¿óδ #pragma. ÅÑαóá∩:
#pragma inline
¥Γá ñ¿αÑ¬Γ¿óá φ¬ó¿óá½Ñ¡Γ¡á «»µ¿¿ ¬«¼»¿½∩Γ«αá -B. Ä¡á ß««í-
ΘáÑΓ ¬«¼»¿½∩Γ«απ « Γ«¼, τΓ« ó óáΦÑ⌐ »α«úαá¼¼Ñ »α¿ßπΓßΓóπεΓ áß-
ßѼí½Ñα«ó߬¿Ñ ¼áΦ¿¡¡δÑ ¬«¼á¡ñδ. ì´πτΦÑÑ ÑÑ »«½«ªÑ¡¿Ñ - ó ¡á-
τá½Ñ Σá⌐½á, Γ.¬. ¬«¼»¿½∩Γ«α ßἫ»ÑαѺá»π߬áÑΓß∩ ß «»µ¿Ñ⌐ -B
ßαáºπ, ¬á¬ Γ«½∞¬« óßΓαÑΓ¿Γß∩ #pragma inline. ìá ßἫ¼ ñѽÑ, óδ
¼«ªÑΓÑ «»πßΓ¿Γ∞ ¿ «»µ¿ε -B, ¿ ñ¿αÑ¬Γ¿óπ #pragma inline, Γ.¬.
¬«¼»¿½∩Γ«α óßÑ αáó¡« ß«¼«»ÑαѺá»π߬áÑΓß∩, ¬á¬ Γ«½∞¬« óßΓαÑΓ¿Γ
asm-«»ÑαáΓ«αδ; µÑ½∞ε φΓ«⌐ «»µ¿¿ ¿ ñ¿αÑ¬Γ¿óδ ∩ó½∩ÑΓß∩ φ¬«¡«¼¿∩
óαѼѡ¿ ¬«¼»¿½∩µ¿¿.
1.14.6.2. #pragma warn
äαπúá∩ #pragma-ñ¿αÑ¬Γ¿óá - φΓ«
pragma warn
äá¡¡á∩ ñ¿αÑ¬Γ¿óá »«ºó«½∩ÑΓ óá¼ ¡Ñ »α¿¡¿¼áΓ∞ ó« 󡿼᡿Ñ
߻ѵ¿á½∞¡πε «»µ¿ε ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ -wxxx («»µ¿∩ ó¬½ετÑ¡¿∩ ß»Ñ-
µ¿á½∞¡δσ »αÑñπ»αÑñ¿Γѽ∞¡δσ ß««íΘÑ¡¿⌐).
ìá»α¿¼Ñα, Ñß½¿ óáΦá ¿ßσ«ñ¡á∩ »α«úαá¼¼á ß«ñÑαª¿Γ ñ¿αÑ¬Γ¿óδ:
#pragma warn +xxx
#pragma warn -yyy
#pragma warn .zzz
Γ« xxx ó¬½ετ¿Γ óδñáτπ »αÑñπ»αÑñ¿Γѽ∞¡δσ ß««íΘÑ¡¿⌐ (Ñß½¿
ñáªÑ ó »«ñ¼Ñ¡ε O/C/Errors/ «¡á íδ½á ó䬽ετÑ¡á); yyy ó䬽ετ¿Γ
óδñáτπ ß««íΘÑ¡¿⌐; á zzz ó«ßßΓá¡«ó¿Γ »Ñαó«¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ,
¬«Γ«α«Ñ í佫 ó ¡áτá½Ñ ¬«¼»¿½∩µ¿¿ Σá⌐½á.
Ĭ«¡τáΓѽ∞¡δ⌐ ß»¿ß«¬ 3-íπ¬óÑ¡¡δσ áííαÑó¿áΓπα ¿ ß««íΘÑ¡¿⌐,
¬«Γ«αδÑ «¡¿ ó¬½ετáεΓ ¿ ó䬽ετáεΓ, »α¿óÑñÑ¡ ó Åα¿½«ªÑ¡¿¿ 3
æß佫τ¡«ú« Éπ¬«ó«ñßΓóá »« Turbo-C.
1.14.7. ìπ½Ñóá∩ ñ¿αÑ¬Γ¿óá (ANSI C 3.7)
Éáñ¿ ºáóÑαΦÑ¡¡«ßΓ¿, ANSI-ßΓá¡ñáαΓ ¿ Turbo-C «»«º¡áεΓ »πß-
Γπε ñ¿αÑ¬Γ¿óπ, ß«ßΓ«∩Θπε ¿º ßΓ᫬¿, ß«ñÑαªáΘÑ⌐ »α«ßΓ« º¡á¬ #.
¥Γá ñ¿αÑ¬Γ¿óá óßÑúñá ¿ú¡«α¿απÑΓß∩.
- 28 -
1.14.8. éßΓα«Ñ¡¡δÑ ¼á¬α«-¿¼Ñ¡á
ANSI-ßΓá¡ñáαΓ ΓαÑíπÑΓ 5 óßΓα«Ñ¡¡δσ ¼á¬α«ß«ó. Turbo-C »α¿-
¼Ñ¡∩ÑΓ óßÑ 5. ÄΓ¼ÑΓ¿¼, τΓ« ¬áªñδ⌐ ¿º ¡¿σ ¡áτ¿¡áÑΓß∩ ¿ «¬á¡τ¿-
óáÑΓß∩ ß¿¼ó«½«¼ »«ñτÑનóá¡¿∩ (__).
_LINE_
쫼Ñα «íαáíáΓδóáѼ«⌐ ßΓ᫬¿ ¿ßσ«ñ¡«⌐ »α«úαá¼¼δ - ñÑß∩-
Γ¿τ¡á∩ ¬«¡ßΓá¡Γá. ÅÑαóá∩ ßΓα«¬á ¿ßσ«ñ¡«ú« Σá⌐½á «»αÑñÑ-
½Ñ¡á ¬á¬ 1.
_FILE_
ê¼∩ «íαáíáΓδóáѼ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á - ½¿ΓÑα¡á∩ ßΓ᫬á.
äá¡¡«Ñ ¼á¬α««»αÑñѽѡ¿Ñ ¿º¼Ñ¡∩ÑΓß∩ óß∩¬¿⌐ αáº, ¬á¬ ¬«¼-
»¿½∩Γ«α «íαáíáΓδóáÑΓ ñ¿αÑ¬Γ¿óπ #include ¿½¿ ñ¿αÑ¬Γ¿óπ
line, ¿½¿ ¬«úñá ºá¬«¡τ¿½ß∩ #include-Σá⌐½.
_DATE_
äáΓá ¡áτá½á «íαáí«Γ¬¿ ΓѬπΘÑú« ¿ßσ«ñ¡«ú« Σá⌐½á - ½¿ΓÑα-
¡á∩ ßΓ᫬á.
èáªñ«Ñ óσ«ªñÑ¡¿Ñ _DATE_ ó ºáñá¡¡δ⌐ Σá⌐½ úáαá¡Γ¿απÑΓ «ñ¡«
º¡áτÑ¡¿Ñ, ¡Ñºáó¿ß¿¼« «Γ Γ«ú«, ¬á¬ ñ«½ú« πªÑ »α«ñ«½ªáÑΓß∩
«íαáí«Γ¬á. äáΓá ¿¼ÑÑΓ Σ«α¼áΓ mmmddyyyy, úñÑ mmm - ¼Ñß∩µ
(Jan, Feb ¿ Γ.ñ.), dd - τ¿ß½« ΓѬπΘÑú« ¼Ñß∩µá (1...31; ó
1-«⌐ ¿º ñóπσ »«º¿µ¿⌐ dd ßΓáó¿Γß∩ »α«íѽ, Ñß½¿ τ¿ß½«
¼Ñ¡∞ΦÑ 10), yyyy - ú«ñ (1987, 1988 ¿ Γ.ñ.).
_TIME_
éαѼ∩ ¡áτá½á «íαáí«Γ¬¿ ΓѬπΘÑú« ¿ßσ«ñ¡«ú« Σá⌐½á - ½¿ΓÑα-
¡á∩ ßΓ᫬á.
èáªñ«Ñ óσ«ªñÑ¡¿Ñ _TIME_ ó ºáñá¡¡δ⌐ Σá⌐½ úáαá¡Γ¿απÑΓ «ñ¡«
º¡áτÑ¡¿Ñ, ¡Ñºáó¿ß¿¼« «Γ Γ«ú«, ¬á¬ ñ«½ú« πªÑ »α«ñ«½ªáÑΓß∩
«íαáí«Γ¬á. éαѼ∩ ¿¼ÑÑΓ Σ«α¼áΓ hh:mm:ss, úñÑ hh - τáß
(00...23), mm - ¼¿¡πΓδ (00...59), ss - ßѬπ¡ñδ
(00...59).
_STDC_
è«¡ßΓá¡Γá, αáó¡á∩ 1, Ñß½¿ óδ ¬«¼»¿½¿απÑΓÑ ß Σ½áú«¼ -a,
¬«Γ«αδ⌐ πßΓá¡áó½¿óáÑΓ ß«ó¼ÑßΓ¿¼«ßΓ∞ ß ANSI-ßΓá¡ñáαΓ«¼
(ANSI keywords only ... ON); ¿¡áτÑ ¼á¬α««»αÑñѽѡ¿Ñ ¡Ñ
«»αÑñѽѡ«.
1.14.9. éßΓα«Ñ¡¡δÑ ¼á¬α«ßδ Turbo-C
ÅαÑ»α«µÑßß«α Turbo-C «»αÑñѽ∩ÑΓ αẽ¿τ¡δÑ ñ«»«½¡¿Γѽ∞¡δÑ
¼á¬α«ßδ. ÆᬪÑ, ¬á¬ ñ½∩ ¼á¬α«ß«ó, »αÑñ»¿ßá¡¡δσ ANSI-ßΓá¡ñáαΓ«¼,
¬áªñδ⌐ ¿º ¡¿σ ¡áτ¿¡áÑΓß∩ ¿ «¬á¡τ¿óáÑΓß∩ ß¿¼ó«½«¼ »«ñτÑનóá¡¿∩
(__).
- 29 -
_TURBOC_
éδñáτá ¡«¼Ñαá ΓѬπΘÑ⌐ óÑαß¿¿ Turbo-C - ΦÑß¡áñµáΓÑα¿τ¡á∩
¬«¡ßΓá¡Γá. éÑαß¿∩ 1.0 »αÑñßΓáó½∩ÑΓß∩ ¬á¬ 0x0100; óÑαß¿∩
1.2 - ¬á¬ 0x0102 ¿ Γ.ñ.
_PASCAL_
Ä»αÑñѽ∩ÑΓ º¡áτÑ¡¿Ñ Σ½áúá -p; πßΓá¡áó½¿óáÑΓß∩ ó µÑ½πε
¬«¡ßΓá¡Γπ, αáó¡πε 1, Ñß½¿ ¿ß»«½∞ºπÑΓß∩ Σ½áú -p; ¿¡áτÑ ¡Ñ
«»αÑñѽѡ«.
_MSDOS_
ûѽá∩ ¬«¡ßΓá¡Γá, αáó¡á∩ 1.
_CDECL_
Ä»αÑñѽ∩ÑΓ º¡áτÑ¡¿Ñ Σ½áúá -p; πßΓá¡áó½¿óáÑΓß∩ ó µÑ½πε
¬«¡ßΓá¡Γπ, αáó¡πε 1, Ñß½¿ Σ½áú -p ¡Ñ ¿ß»«½∞ºπÑΓß∩; ¿¡áτÑ
¡Ñ «»αÑñѽѡ«.
æ½ÑñπεΘ¿Ñ 6 ¼á¬α«ß«ó ºáó¿ß∩Γ «Γ óδíαá¡¡«⌐ ñ½∩ ¬«¼»¿½∩µ¿¿
¼«ñѽ¿ »á¼∩Γ¿. ä½∩ ½εí«⌐ ¬«¼»¿½∩µ¿¿ «»αÑñѽѡ ¼«ªÑΓ íδΓ∞ Γ«½∞¬«
«ñ¿¡ ¿º ¡¿σ; «ßΓá½∞¡δÑ (»«-«»αÑñѽѡ¿ε) ¡Ñ «»αÑñѽѡδ.
ìá»α¿¼Ñα, Ñß½¿ óδ ¬«¼»¿½¿απÑΓÑ ß ¼á½Ñ¡∞¬«⌐ ¼«ñѽ∞ε, «»αÑñѽѡ«
_SMALL_, á «ßΓá½∞¡δÑ - ¡ÑΓ; »«φΓ«¼π ñ¿αÑ¬Γ¿óá #if
defined(_SMALL_) íπñÑΓ ¿¼ÑΓ∞ º¡áτÑ¡¿Ñ true(óÑα¡«), ó Γ« óαѼ∩
¬á¬ #if defined(_HUGE_) (¿½¿ ½εíá∩ ñαπúá∩) íπñÑΓ ¿¼ÑΓ∞ º¡áτÑ¡¿Ñ
fulse(½«ª¡«). äÑ⌐ßΓó¿Γѽ∞¡«Ñ º¡áτÑ¡¿Ñ ñ½∩ ½εí«ú« «»αÑñѽѡ¡«ú«
¼á¬α««»αÑñѽѡ¿∩ αáó¡« 1.
_TINY_
Ä»µ¿¿ óδí«αá ¬α«ΦÑτ¡«⌐ ¼«ñѽ¿ »á¼∩Γ¿.
_SMALL_
Ä»µ¿¿ óδí«αá ¼á½Ñ¡∞¬«⌐ ¼«ñѽ¿ »á¼∩Γ¿.
_MEDIUM_
Ä»µ¿¿ óδí«αá ßαÑñ¡Ñ⌐ ¼«ñѽ¿ »á¼∩Γ¿.
_COMPACT_
Ä»µ¿¿ óδí«αá ¬«¼»á¬Γ¡«⌐ ¼«ñѽ¿ »á¼∩Γ¿.
- 30 -
2. î«ñѽ¿ »á¼∩Γ¿ Turbo-C
Turbo-C »«ññÑনóáÑΓ ΦÑßΓ∞ αẽ¿τ¡δσ ¼«ñѽÑ⌐ »á¼∩Γ¿: tiny,
small, medium, compact, large ¿ huge.
tiny
¥Γ« ßá¼á∩ ¼á½á∩ ¼«ñѽ∞ »á¼∩Γ¿. éßÑ τÑΓδαÑ αÑú¿ßΓαá ( CS,
DS, SS, ES) ß«ñÑαªáΓ «ñ¿¡ ¿ ëà ªÑ áñαÑß, »«φΓ«¼π 64è
óδñѽ∩εΓß∩ ñ½∩ σαá¡Ñ¡¿∩ ¬«ñá, ñá¡¡δσ ¿ ¼áßß¿ó«ó. éßÑúñá
¿ß»«½∞ºπεΓß∩ π¬áºáΓѽ¿ Γ¿»á near. Åα«úαá¼¼δ, ¿ß»«½∞ºπε-
Θ¿Ñ ¼«ñѽ∞ »á¼∩Γ¿ tiny, ¼«úπΓ íδΓ∞ »αÑ«íαẫóá¡δ ¬ Σ«α-
¼áΓπ .COM.
ìá »α¿óÑñÑ¡¡«¼ ¡¿ªÑ α¿ßπ¡¬Ñ »«¬áºá¡« αáß»αÑñѽѡ¿Ñ »á¼∩Γ¿.
æÑú¼Ñ¡Γ¡δÑ ÉẼÑα
αÑú¿ßΓαδ ßÑú¼Ñ¡Γá
+------------------------+
CS, DS, ES, SS ---| DGROUP | ñ« 64è íá⌐Γ
+------------------------+
| _TEXT ¬½áßß 'DATA' |
| ¬«ñ |
+------------------------+
| _DATA ¬½áßß 'DATA' |
| ¿¡¿µ¿á½¿º¿α«óá¡¡δÑ |
| ñá¡¡δÑ |
+------------------------+
| _BSS ¬½áßß 'BSS' |
| ¿¡¿µ¿á½¿º¿α«óá¡¡δÑ |
| ñá¡¡δÑ |
+------------------------+
| èπτá |
SP ---+------------------------+
| æΓѬ |
+------------------------+
æÑú¼Ñ¡Γᵿ∩ »á¼∩Γ¿ ¼«ñѽ¿ tiny
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. Ä»¿ßá¡¿Ñ «ßΓá½∞¡δσ ¼«ñѽÑ⌐ »á¼∩Γ¿ »α¿óÑñÑ-
¡« ó æ»αáó«τ¡«¼ απ¬«ó«ñßΓóÑ »« ¬«¼»¿½∩Γ«απ MSC.
2.1. êß»«½∞º«óá¡¿Ñ ß¼ÑΦá¡¡δσ ¼«ñѽÑ⌐ »á¼∩Γ¿:
¼«ñ¿Σ¿¬áΓ«αδ áñαÑßᵿ¿
Turbo-C »«ññÑনóáÑΓ ßѼ∞ ¡«óδσ ¬½ετÑóδσ ß½«ó, ¡Ñ«»αÑñÑ-
½Ñ¡¡δσ ó K&R ¿ ßΓá¡ñáαΓÑ ANSI: near, far, huge, _cs, _ds, _es,
_ss. Ä¡¿ ¼«úπΓ íδΓ∞ ¿ß»«½∞º«óá¡δ ß «»αÑñѽѡ¡δ¼¿ «úαá¡¿τÑ¡¿∩¼¿
¬á¬ ¼«ñ¿Σ¿¬áΓ«αδ ñ½∩ π¬áºáΓѽÑ⌐ (¿ ó ¡Ñ¬«Γ«αδσ ß½πτá∩σ ñ½∩
- 31 -
Σπ¡¬µ¿⌐).
é Turbo-C ¼«ª¡« ¿º¼Ñ¡∩Γ∞ Σπ¡¬µ¿¿ ¿ π¬áºáΓѽ¿ ß ¬½ετÑó묨
ß½«óἿ near, far ¿½¿ huge. è Σπ¡¬µ¿∩¼ Γ¿»á near (far,huge) «í-
αáΘáεΓß∩ ß »«¼«Θ∞ε near (far, huge) ó맮ó«ó ¿ «¡¿ ó«ºóαáΘáεΓ
Γ¿» near (far, huge).
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. öπ¡¬µ¿¿ Γ¿»á huge ¼«úπΓ πßΓá¡«ó¿Γ∞ αÑú¿ßΓ-
αÑ DS ó ¡«ó«Ñ º¡áτÑ¡¿Ñ, ó «Γ½¿τ¿Ñ «Γ Σπ¡¬µ¿⌐ «ßΓá½∞¡δσ Γ¿»«ó.
ä½∩ ñá¡¡δσ, ¿¼ÑεΘ¿σ Γ¿» near, ßπΘÑßΓóπεΓ τÑΓδαÑ ß»Ñ-
µ¿á½∞¡δσ π¬áºáΓѽ∩: _cs, _ds, _ss ¿ _es. ¥Γ« 16-í¿Γ«óδÑ π¬áºá-
Γѽ¿, ¬«Γ«αδÑ «ß«íδ¼ «íαẫ¼ ßó∩ºá¡δ ß ß««ΓóÑΓßΓóπεΘ¿¼¿ ßÑú-
¼Ñ¡Γ¡δ¼¿ αÑú¿ßΓαἿ. ìá»α¿¼Ñα, Ñß½¿ «íΩ∩ó¿Γ∞
char _ss *p;
Γ« p ß«ñÑαª¿Γ 16-í¿Γ«ó«Ñ ß¼ÑΘÑ¡¿Ñ ó ßΓѬ«ó«¼ ßÑú¼Ñ¡ΓÑ.
öπ¡¬µ¿¿ ¿ π¬áºáΓѽ¿ ó »α«úαá¼¼Ñ íπñπΓ »« π¼«½τá¡¿ε ¿¼ÑΓ∞
Γ¿» near ¿½¿ far, ó ºáó¿ß¿¼«ßΓ¿ «Γ óδíαá¡¡«⌐ óἿ ¼«ñѽ¿
»á¼∩Γ¿. àß½¿ Σπ¡¬µ¿∩ ¿½¿ π¬áºáΓѽ∞ ¿¼ÑÑΓ Γ¿» near, Γ« «¡¿ áóΓ«-
¼áΓ¿τÑ߬¿ ßó∩ºδóáεΓß∩ ß αÑú¿ßΓα«¼ CS ¿½¿ DS.
- 32 -
3. êß»«½∞º«óá¡¿Ñ αẽ¿τ¡δσ ∩ºδ¬«ó »α«úαá¼¼¿α«óá¡¿∩
3.1. æ¼ÑΦÑ¡¿Ñ ∩ºδ¬«ó »α«úαá¼¼¿α«óá¡¿∩: ¿¡ΓÑαΣÑ⌐ß
Turbo-C »«ºó«½∩ÑΓ ¿º »α«úαá¼¼ ¡á C «íαáΘáΓ∞ß∩ ¬
»α«úαá¼¼á¼, ¡á»¿ßá¡¡δ¼ ¡á ñαπú¿σ ∩ºδ¬áσ, ¿ ¡á«í«α«Γ. é ñá¡¡«¼
»«ñαáºñÑ½Ñ αáßß¼«ΓαÑ¡ ¿¡ΓÑαΣÑ⌐ß Turbo-C ß ñαπú¿¼¿ ∩ºδ¬á¼¿.
3.1.1. Å«ß½Ññ«óáΓѽ∞¡«ßΓ¿ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó: C ¿
Åá߬á½∞
Turbo-C »«ññÑনóáÑΓ ñóá ¼ÑΓ«ñá »ÑαÑñáτ¿ »áαá¼ÑΓα«ó ó
Σπ¡¬µ¿ε: ßΓá¡ñáαΓ¡δ⌐ C-¼ÑΓ«ñ ¿ »á߬á½Ñó߬¿⌐ ¼ÑΓ«ñ.
3.1.1.1. C-»«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó
(ß«ú½áΦÑ¡¿Ñ ó맮óá)
ÅαÑñ»«½«ª¿¼ óδ «íΩ∩󿽿 ß½ÑñπεΘ¿⌐ »α«Γ«Γ¿» Σπ¡¬µ¿¿:
void funca(int p1, int p2, int p3);
Å« π¼«½τá¡¿ε, Turbo-C ¿ß»«½∞ºπÑΓ C-»«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »Ñ-
αÑñáτ¿ »áαá¼ÑΓα«ó. Åα¿ «íαáΘÑ¡¿¿ ¬ ñá¡¡«⌐ Σπ¡¬µ¿¿ (funca) »áαá-
¼ÑΓαδ »«¼ÑΘáεΓß∩ ó ßΓѬ ó »«α∩ñ¬Ñ ß»αáóá-¡á½Ñó« (p3, p2, p1),
ß½Ññ«¼ ºá »áαá¼ÑΓαἿ ó ßΓѬ »«¼ÑΘáÑΓß∩ áñαÑß ó«ºóαáΓá. Éáßß-
¼«Γα¿¼ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
main()
{
int i, j;
long k;
. . .
i=5; j=7; k=0x1407AA;
funca(i,j,k)
. . .
}
æΓѬ íπñÑΓ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
SP + 06: 0014
SP + 04: 07AA k=p3
SP + 02 0007 j=p2
SP 0005 i=p1
- 33 -
Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. æΓѬ αáßΓÑΓ ßóÑασπ 󡿺, »«φΓ«¼π i - ΓѬπ-
Θ¿⌐ "óÑασ" ßΓѬá.
éδºδóáεΘá∩ »α«úαá¼¼á ¡Ñ óδí¿αáÑΓ »áαá¼ÑΓαδ ¿º ßΓѬá, φΓ«
íπñÑΓ ñѽáΓ∞ óδºδóáѼá∩ »α«úαá¼¼á.
Éáßß¼«Γα¿¼ Σαáú¼Ñ¡Γ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ áßßѼí½Ñαá, ¬«Γ«αδ⌐
»«½πτÑ¡ »α¿ ¬«¼»¿½∩µ¿¿ ¿ßσ«ñ¡«⌐ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ C, »α¿óÑñÑ¡-
¡«⌐ óδΦÑ.
mov word prt [bp-8],5 ; ôßΓá¡«ó¬á i=5
mov word prt [bp-6],7 ; j=7
mov word prt [bp-4],0014h ; k=0x1407AA
mov word prt [bp-2],07AAh
push word prt [bp-2] ; Å«¼ÑΘáѼ π¬áºáΓѽ∞
; ßΓÑ¬á ¡á ßΓáαΦÑÑ ß½«ó« k
push word prt [bp-4] ; Å«¼ÑΘáѼ π¬áºáΓѽ∞
; ßΓÑ¬á ¡á ¼½áñΦÑÑ ß½«ó« k
push word prt [bp-6] ; ô¬áºáΓѽ∞ ßΓѬá - ¡á j
push word prt [bp-8] ; ô¬áºáΓѽ∞ ßΓѬá - ¡á i
call near prt funca ; é맮ó Σπ¡¬µ¿¿ funca
add sp,8 ; ôßΓá¡«ó¬á ßΓѬá
Å«ß½Ññ¡∩∩ ¬«¼á¡ñá add sp,8. é ñá¡¡«⌐ Γ«τ¬Ñ ¬«¼»¿½∩Γ«α πº-
¡áÑΓ Γ«τ¡« ߬«½∞¬« »áαá¼ÑΓα«ó í佫 »«¼ÑΘÑ¡« ó ßΓѬ; πº¡áÑΓ áñ-
αÑß ó«ºóαáΓá, ¬«Γ«αδ⌐ íδ½ »«¼ÑΘÑ¡ ó ßΓѬ »«ßαÑñßΓó«¼ «íαáΘÑ¡¿∩
¬ funca.
3.1.1.2. Åá߬á½Ñó߬á∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »ÑαÑñáτ¿
»áαá¼ÑΓα«ó (ß«ú½áΦÑ¡¿Ñ ó맮óá)
äá¡¡δ⌐ ¼ÑΓ«ñ ¡Ñ «º¡áτáÑΓ, τΓ« óδ ¼«ªÑΓÑ óδºδóáΓ∞ Σπ¡¬µ¿¿
Turbo-Åá߬á½∩ ¿º Turbo-C.
àß½¿ Σπ¡¬µ¿∩ «íΩ∩ó½Ñ¡á ¬á¬
void pascal funca(int p1, int p2, int p3);
»α¿ «íαáΘÑ¡¿¿ ¬ Σπ¡¬µ¿¿ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »«¼ÑΘáÑΓ »áαá¼ÑΓαδ ó
ßΓѬ ß½Ñóá-¡á»αáó«, Γ.Ñ. ó »«α∩ñ¬Ñ (p1, p2, p3). çáΓѼ ó ßΓѬ
»«¼ÑΘáÑΓß∩ áñαÑß ó«ºóαáΓá.
Éáßß¼«Γα¿¼ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
main()
{
int i, j;
long k;
. . .
i=5; j=7; k=0x1407AA;
funca(i,j,k)
- 34 -
. . .
}
æΓѬ íπñÑΓ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
SP + 06: 0005 i=p1
SP + 04: 0007 j=p2
SP + 02 0014
SP 07AA k=p3
Åá߬á½Ñó߬á∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó »αÑñ-
»«½áúáÑΓ, τΓ« óδºóá¡¡«⌐ »α«úαá¼¼Ñ (funca) ¿ºóÑßΓ¡« ߬«½∞¬« »á-
αá¼ÑΓα«ó »ÑαÑñáÑΓß∩, ¿ ó ß««ΓóÑΓßΓó¿¿ ß φΓ¿¼ ºá»«½¡∩ÑΓß∩ ßΓѬ.
äαπú¿¼¿ ß½«óἿ, ¡á ∩ºδ¬Ñ áßßѼí½Ñαá «íαáΘÑ¡¿Ñ ¬ Σπ¡¬µ¿¿ funca
íπñÑΓ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
push word prt [bp-8] ; Å«¼ÑΘáѼ i
push word prt [bp-6] ; Å«¼ÑΘáѼ j
push word prt [bp-4] ; Å«¼ÑΘáѼ ßΓáαΦÑÑ
; ß½«ó« k
push word prt [bp-2] ; Å«¼ÑΘáѼ
; ¼½áñΦÑÑ ß½«ó« k
call near prt funca ; é맮ó Σπ¡¬µ¿¿ funca
(»«¼ÑΘáѼ áñαÑß ó«ºóαáΓá)
çá¼ÑΓ¿¼, τΓ« ó ñá¡¡«¼ ß½πτáÑ «ΓßπΓßΓóπÑΓ ¬«¼á¡ñá add sp,8
»«ß½Ñ ó맮óá. é¼ÑßΓ« φΓ«ú« funca ¿ß»«½∞ºπÑΓ ¬«¼á¡ñπ ret 8, ñ½∩
Γ«ú« τΓ«íδ «τ¿ßΓ¿Γ∞ ßΓѬ »ÑαÑñ ó«ºóαáΓ«¼ ó main.
Å« π¼«½τá¡¿ε óßÑ Σπ¡¬µ¿¿ Turbo-C ¿ß»«½∞ºπεΓ C-¼ÑΓ«ñ »ÑαÑ-
ñáτ¿ »áαá¼ÑΓα«ó. àß½¿ óδ ¿ß»«½∞ºπÑΓÑ Σ½áú -p »α¿ ¬«¼»¿½∩µ¿¿, ó
φΓ«¼ ß½πτáÑ óßÑ Σπ¡¬µ¿¿ ¿ß»«½∞ºπεΓ »á߬á½Ñó߬¿⌐ ¼ÑΓ«ñ. ä½∩
Γ«ú«, τΓ«íδ ºáñáΓ∞ ¿ß»«½∞º«óá¡¿Ñ C-¼ÑΓ«ñá ñ½∩ ¬á¬«⌐-ñ¿í« Σπ¡¬-
µ¿¿, ¿ß»«½∞ºπ⌐ΓÑ ¼«ñ¿Σ¿¬áΓ«α cdecl.
ìá»α¿¼Ñα,
void cdecl funca(int p1, int p2, int p3);
Åá߬á½Ñó߬¿⌐ ¼ÑΓ«ñ ¿ß»«½∞ºπÑΓß∩ ó ß½ÑñπεΘ¿σ ß½πτá∩σ:
1) Åα¿ ¿ß»«½∞º«óá¡¿¿ ó맮ó«ó ßπΘÑßΓóπεΘ¿σ »α«úαá¼¼ ¡á áß-
ßѼí½ÑαÑ, ¿ß»«½∞ºπεΘ¿σ ñá¡¡«Ñ ß«ú½áΦÑ¡¿Ñ ó맮óá
2) Åα¿ ¿ß»«½∞º«óá¡¿¿ »α«úαá¼¼, ¡á»¿ßá¡¡δσ ¡á ñαπú¿σ ∩ºδ¬áσ
»α«úαá¼¼¿α«óá¡¿∩.
3) the calling code produced is slightly smaller, since it
doesn't have to clean up the stack afterwards.
- 35 -
3.1.2. ê¡ΓÑαΣÑ⌐ß ß áßßѼí½Ñα«¼
3.1.2.1. ÄíαáΘÑ¡¿∩ ¬ Σá⌐½á¼ .ASM ¿º Turbo-C
éδ ¼«ªÑΓÑ »¿ßáΓ∞ áßßѼí½Ñα«ó߬¿Ñ »α«úαá¼¼δ ¬á¬ «Γñѽ∞¡δÑ
¼«ñπ½¿, ñ½∩ Γ«ú« τΓ«íδ ó »«ß½ÑñßΓó¿¿ ¿σ ßó∩ºδóáΓ∞ ß C-»α«úαá¼-
¼á¼¿. Äñ¡á¬«, ßπΘÑßΓóπεΓ «»αÑñѽѡ¡δÑ ß«ú½áΦÑ¡¿∩, ¬«Γ«αδ¼ óδ
ñ«½ª¡δ ß½Ññ«óáΓ∞, ñ½∩ Γ«ú« τΓ«íδ:
1) íδΓ∞ πóÑαÑ¡¡δ¼, τΓ« αÑñá¬Γ«α ßó∩ºÑ⌐ »«½πτ¿Γ óßε ¡Ñ«íσ«-
ñ¿¼πε ¿¡Σ«α¼áµ¿ε;
2) íδΓ∞ πóÑαÑ¡¡δ¼, τΓ« Σ«α¼áΓ Σá⌐½á ¡áσ«ñ¿Γß∩ ó ß««ΓóÑΓßΓ-
ó¿¿ ß ¼«ñѽ∞ε »á¼∩Γ¿, ¿ß»«½∞ºπѼ«⌐ óáΦÑ⌐ C-»α«úαá¼¼«⌐.
Æáí½¿µá 5
ÄíΘá∩ ßΓαπ¬Γπαá »α«úαá¼¼δ
-------------------------------------------------------
êñÑ¡Γ¿Σ¿¬áΓ«α ê¼∩ ê¼∩ Σá⌐½á
-------------------------------------------------------
<text> SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS: <text>, DS: <dseg>
<...........ßÑú¼Ñ¡Γ ¬«ñá..............>
<text> ENDS
<dseg> GROUP _DATA, _BSS
<data> SEGMENT WORD PUBLIC 'DATA'
<..ßÑú¼Ñ¡Γ ¿¡¿µ¿á½¿º¿α«óá¡¡δσ ñá¡¡δσ..>
<data> ENDS
_BSS SEGMENT WORD PUBLIC 'BSS'
<.ßÑú¼Ñ¡Γ ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δσ ñá¡¡δσ.>
_BSS ENDS
_BSS END
êñÑ¡Γ¿Σ¿¬áΓ«αδ <text>, <data>, <dseg> ó ñá¡¡«⌐ ßσÑ¼Ñ ¿¼ÑεΓ
«ß«íδÑ º¡áτÑ¡¿∩, ºáó¿ß∩Θ¿Ñ «Γ ¿ß»«½∞ºπѼ«⌐ ¼«ñѽ¿ »á¼∩Γ¿. é
»α¿óÑñÑ¡¡«⌐ ¡¿ªÑ Γáí½¿µÑ π¬áºá¡δ ß««ΓóÑΓßΓóπεΘ¿Ñ º¡áτÑ¡¿∩ ñ½∩
¬áªñ«⌐ ¼«ñѽ¿ »á¼∩Γ¿; filename ó ñá¡¡«⌐ Γáí½¿µÑ - φΓ« ¿¼∩ ¼«ñπ-
½∩; «¡« ñ«½ª¡« ¿ß»«½∞º«óáΓ∞ß∩ ó ñ¿αÑ¬Γ¿óÑ NAME ¿ ß«ñÑন¼«¼
¿ñÑ¡Γ¿Σ¿¬áΓ«αá.
çá¼ÑΓ¿¼, τΓ« ó ¼«ñѽ¿ huge ¡Ñ ¿ß»«½∞ºπÑΓß∩ ßÑú¼Ñ¡Γ _BSS, ¿
«»αÑñѽѡ¿Ñ GROUP »«½¡«ßΓ∞ »α«»πΘÑ¡«.
ìá¿í«½ÑÑ πñ«í¡« ß«ºñáΓ∞ Φáí½«¡ ¡á áßßѼí½ÑαÑ, «Γ¬«¼»¿½¿α«-
óáó »α«úαá¼¼π, ¿ß»«½∞ºπ∩ TCC ß «»µ¿Ñ⌐ -s, ¿ »«ß¼«ΓαÑΓ∞ Σá⌐½
- 36 -
.ASM, ó ¬«Γ«α«¼ σαá¡¿Γß∩ ßúÑ¡ÑαÑ¡¡δ⌐ áßßѼí½Ñα¡δ⌐ ¬«ñ.
Æáí½¿µá 6
æ«ñÑন¼«Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ¿ ¼«ñѽ¿ »á¼∩Γ¿
---------------------------------------------------------
î«ñѽ∞ æ«ñÑন¼«Ñ è«ñ ¿ π¬áºáΓѽ¿
¿¡ñÑ¡Γ¿Σ¿¬áΓ«αá
---------------------------------------------------------
tiny, small <code>=_TEXT Code: DW _TEXT:xxx
<data>=_DATA Data: DW DGROUP:xxx
<dseg>=DGOUP
compact <code>=_TEXT Code: DW _TEXT:xxx
<data>=_DATA Data: DD DGROUP:xxx
<dseg>=DGOUP
medium <code>=filename_TEXT Code: DD xxx
<data>=_DATA Data: DW DGROUP:xxx
<dseg>=DGOUP
large <code>=filename_TEXT Code: DD xxx
<data>=_DATA Data: DD DGROUP:xxx
<dseg>=DGOUP
huge <code>=filename_TEXT Code: DD xxx
<data>=filename_DATA Data: DD xxx
<dseg>=filename_DATA
3.1.2.2. Ä»αÑñѽѡ¿Ñ ¬«¡ßΓá¡Γ ¿ »ÑαѼѡ¡δσ
î«ñѽ∞ »á¼∩Γ¿ ó½¿∩ÑΓ Γá¬ªÑ ¡á «»αÑñѽѡ¿Ñ ½εíδσ ¬«¡ßΓá¡Γ
ñá¡¡δσ, Γᬿσ ¬á¬ π¬áºáΓѽ¿ ¡á ¬«ñδ, ñá¡¡δÑ. Åα¿óÑñÑ¡¡á∩ óδΦÑ
Γáí½¿µá »«¬áºδóáÑΓ ¬á¬ ñ«½ª¡δ óδú½∩ñÑΓ∞ Γá¬¿Ñ π¬áºáΓѽ¿; xxx -
áñαÑß, ¡á ¬«Γ«αδ⌐ ßßδ½áÑΓß∩ π¬áºáΓѽ∞. çá¼ÑΓ¿¼, τΓ« ¡Ñ¬«Γ«αδÑ
π¬áºáΓѽ¿ ¿ß»«½∞ºπεΓ DW (Ä»αÑñѽ∩εΓ ß½«ó«), ó Γ« óαѼ∩ ¬á¬ ñαπ-
ú¿Ñ ¿ß»«½∞ºπεΓ DD (Ä»αÑñѽ∩εΓ ñó«⌐¡«Ñ ß½«ó«), π¬áºáóá∩ αẼÑα
αѺπ½∞Γ¿απεΘÑú« π¬áºáΓѽ∩. û¿Σα«óδÑ ¿ ΓѬßΓ«óδÑ ¬«¡ßΓá¡Γδ «»αÑ-
ñѽ∩εΓß∩ ßΓá¡ñáαΓ¡δ¼ «íαẫ¼.
ÅÑαѼѡ¡δÑ «»αÑñѽ∩εΓß∩ Γá¬ªÑ ¬á¬ ¿ ¬«¡ßΓá¡Γδ. àß½¿ óδ σ«-
Γ¿ΓÑ ºáóÑßΓ¿ »ÑαѼѡ¡δÑ, ¬«Γ«αδÑ ¡Ñ ¿¼ÑεΓ ¡áτá½∞¡«ú« º¡áτÑ¡¿∩,
óδ ñ«½ª¡δ «íΩ∩ó¿Γ∞ ¿σ ó ßÑú¼Ñ¡ΓÑ _BSS, ºáñáó º¡á¬ (?), ¬«úñá óδ
ªÑ½áÑΓÑ óóÑßΓ¿ º¡áτÑ¡¿Ñ.
- 37 -
3.1.2.3. Ä»αÑñѽѡ¿Ñ ú½«íá½∞¡δσ ¿ ó¡ÑΦ¡¿σ
¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó.
Åα«úαá¼¼á ¡á áßßѼí½ÑαÑ ¼«ªÑΓ óδºδóáΓ∞ Σπ¡¬µ¿¿ ¿ ßßδ½áΓ∞ß∩
¡á »ÑαѼѡ¡δÑ Turbo-C. éßÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ó áßßѼí½Ñα«ó߬«⌐
»α«úαá¼¼Ñ, ¡á ¬«Γ«αδÑ óδ σ«Γ¿ΓÑ ßßδ½áΓ∞ß∩ ¿º Turbo-C »α«úαá¼¼δ,
ñ«½ª¡δ ¡áτ¿¡áΓ∞ß∩ ß ß¿¼ó«½á »«ñτÑનóá¡¿∩ (_).
ä½∩ Γ«ú« τΓ«íδ ¿ñÑ¡Γ¿Σ¿¬áΓ«α, ¿¼∩ »«ñ»α«úαá¼¼δ ¿½¿ »ÑαÑ-
¼Ñ¡¡á∩ íδ½á ñ«ßΓπ»¡á ¿º-ó¡Ñ óáΦÑú« áßßѼí½Ñα«ó߬«ú« ¼«ñπ½∩, óδ
ñ«½ª¡δ «íΩ∩ó¿Γ∞ ¿σ ¬á¬ PUBLIC. ìá»α¿¼Ñα, Ñß½¿ óδ ¡á»¿ß὿ ¼«-
ñπ½∞, ¬«Γ«αδ⌐ ß«ñÑαª¿Γ µÑ½δÑ Σπ¡¬µ¿¿ min ¿ max ¿ µÑ½δÑ »ÑαÑ-
¼Ñ¡¡δÑ MAXINT, lastmax ¿ lastmin, óδ ñ«½ª¡δ ó óáΦѼ ¬«ñ«ó«¼
ßÑú¼Ñ¡ΓÑ ºáñáΓ∞ «»ÑαáΓ«α
PUBLIC _min, _max
¿ «»ÑαáΓ«αδ
PUBLIC _MAXINT, _lastmax, _lastmin
_MAXINT DW 32767
_lastmin DW 0
_lastmax DW 0
3.1.3. ÄíαáΘÑ¡¿∩ ¬ Turbo-C ¿º Σá⌐½á .ASM
3.1.3.1. æßδ½¬á ¡á Σπ¡¬µ¿¿
àß½¿ óδ σ«Γ¿ΓÑ óδºóáΓ∞ æ-Σπ¡¬µ¿ε ¿º »α«úαá¼¼δ ¡á áßßѼí½Ñ-
αÑ, óδ ñ«½ª¡δ ºáñáΓ∞ ó ¼«ñπ½Ñ ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α:
EXTRN <fname> : <fdist>
úñÑ <fname> - ¿¼∩ Σπ¡¬µ¿¿, <fdist> - ½¿í« near, ½¿í« far, ó ºá-
ó¿ß¿¼«ßΓ¿ «Γ Γ«ú«, ¿¼ÑÑΓ ½¿ æ-Σπ¡¬µ¿∩ Γ¿» near ¿½¿ far. àß½¿
<fdist> - near, Γ« «»ÑαáΓ«α EXTRN ñ«½ªÑ¡ »«∩ó½∩Γ∞ß∩ ó¡πΓα¿ ¬«-
ñ«ó«ú« ßÑú¼Ñ¡Γá óáΦÑú« ¼«ñπ½∩; Ñß½¿ ªÑ far, Γ« «»ÑαáΓ«α EXTRN
ñ«½ªÑ¡ »«∩ó½∩Γ∞ß∩ ó¡Ñ ½εí«ú« ßÑú¼Ñ¡Γá. ìá»α¿¼Ñα, Ñß½¿ óδ ¿¼ÑÑΓÑ
ß½ÑñπεΘ¿⌐ ¬«ñ«óδ⌐ ßÑú¼Ñ¡Γ:
EXTRN _myfunc1:near, myfunc2:far
φΓ« »«ºó«½¿Γ óá¼ óδºδóáΓ∞ myCfunc1 ¿ myCfunc2 ¿º¡πΓα¿ óáΦ¿σ áß-
ßѼí½Ñα«ó߬¿σ »α«úαá¼¼.
- 38 -
3.1.3.2. æßδ½¬á ¡á ñá¡¡δÑ
ä½∩ Γ«ú« τΓ«íδ ß«ß½áΓ∞ß∩ ¡á »ÑαѼѡ¡δÑ, óδ ñ«½ª¡δ »«¼Ñß-
Γ¿Γ∞ «»ÑαáΓ«αδ EXTRN ó¡πΓα¿ óáΦÑú« ßÑú¼Ñ¡Γá ñá¡¡δσ, ¿ß»«½∞ºπ∩
ß½ÑñπεΘ¿⌐ Σ«α¼áΓ
EXTRN <vname> : <size>
úñÑ <vname> - ¿¼∩ »ÑαѼѡ¡«⌐ ¿ <size> - «ñ¿¡ ¿º ß½ÑñπεΘ¿σ ¿ñÑ¡-
Γ¿Σ¿¬áΓ«α«ó, π¬áºδóáεΘ¿⌐ αẼÑα »ÑαѼѡ¡«⌐:
1) BYTE (1 íá⌐Γ)
2) WORD (2 íá⌐Γá)
3) DWORD (4 íá⌐Γá)
4) QWORD (8 íá⌐Γ)
5) TBYTE (10 íá⌐Γ)
3.1.4. éßΓα«Ñ¡¡δ⌐ áßßѼí½Ñα
ä½∩ Γ«ú« τΓ«íδ ¿ß»«½∞º«óáΓ∞ óßΓα«Ñ¡¡δ⌐ áßßѼí½Ñα ó æ-»α«ú-
αá¼¼Ñ, óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ «»µ¿ε -B »α¿ ¬«¼»¿½∩µ¿¿. àß½¿ óδ
¡Ñ ¿ß»«½∞ºπÑΓÑ ñá¡¡πε «»µ¿ε, á ¬«¼»¿½∩Γ«α óßΓαÑτáÑΓ óßΓα«Ñ¡¡δ⌐
áßßѼí½Ñα, íπñÑΓ óδñáóáΓ∞ß∩ »αÑñπ»αѪñÑ¡¿Ñ.
éδ ñ«½ª¡δ ¿¼ÑΓ∞ MASM óÑαß¿¿ 3.0 ¿ ßΓáαΦÑ. 諼»¿½∩Γ«α ß¡á-
τá½á ß«ºñáÑΓ Σá⌐½ ¡á áßßѼí½ÑαÑ, á ºáΓѼ »«ñ¬½ετáÑΓ MASM, ñ½∩
»«½πτÑ¡¿∩ Σá⌐½á .OBJ.
ìÑ«íσ«ñ¿¼« ¿ß»«½∞º«óáΓ∞ ¬½ετÑó«Ñ ß½«ó« asm ñ½∩ óóÑñÑ¡¿∩
áßßѼí½Ñα«ó߬¿σ ¬«¼á¡ñ. ö«α¼áΓ
asm <opcode> <operands> <; or newline>
úñÑ
<opcode>
ñ«»πßΓ¿¼á∩ ¬«¼á¡ñá 8086
<operands>
«»Ñαáñ¡δ; ¼«ª¡« ßßδ½áΓ∞ß∩ ¡á æ ¬«¡ßΓá¡Γδ, »ÑαѼѡ¡δÑ ¿
¼ÑΓ¬¿
<; or newline>
(;) ¿½¿ ¡«óá∩ ßΓ᫬á - «ñ¿¡ ¿º »α¿º¡á¬«ó ¬«¡µá «»ÑαáΓ«αá
asm.
(;) ¡Ñ ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡á ¬á¬ ¡áτὫ ¬«¼¼Ñ¡Γáα¿∩ ¬á¬
- 39 -
ó MASM. êß»«½∞ºπ⌐ΓÑ æ-¬«¼¼Ñ¡Γáα¿¿. ìá»α¿¼Ñα
asm mov ax, ds; /* ä«»πßΓ¿¼δ⌐ ¬«¼¼Ñ¡Γáα¿⌐ */
asm pop ax; asm pop ds; asm iret;
asm push ds;
èáªñδ⌐ asm-«»ÑαáΓ«α ßτ¿ΓáÑΓß∩ ¬á¬ æ-«»ÑαáΓ«α. ìá»α¿¼Ñα,
myfunc()
{
int i;
int x;
if(i>0)
asm mov x,4
else
i=7;
}
çá¼ÑΓ¿¼, τΓ« ¡ÑΓ (;) »«ß½Ñ ¬«¼á¡ñδ mov x,4. ¥Γ« ñ«»πßΓ¿¼δ⌐
if.
ÇßßѼí½Ñα«ó߬¿⌐ «»ÑαáΓ«α ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡ ¬á¬ óδ»«½-
¡∩Ѽδ⌐ «»ÑαáΓ«α ó¡πΓα¿ Σπ¡¬µ¿¿, Γᬠ¿ ¬á¬ ó¡ÑΦ¡ÑÑ «»¿ßá¡¿Ñ ó¡Ñ
Σπ¡¬µ¿¿. Ä»ÑαáΓ«αδ, »«¼ÑΘÑ¡¡δÑ ó¡Ñ Σπ¡¬µ¿¿ αẼÑΘáεΓß∩ ó ßÑú-
¼Ñ¡ΓÑ DATA, «»ÑαáΓ«αδ, »«¼ÑΘÑ¡¡δÑ ó¡πΓα¿ Σπ¡¬µ¿¿, - ó ßÑú¼Ñ¡ΓÑ
CODE.
Éáßß¼«Γα¿¼ »α¿¼Ñα óßΓα«Ñ¡¡«⌐ Σπ¡¬µ¿¿ min.
int min (int V1, int V2)
{
asm mov ax, V1
asm cmp ax, V2
asm jle minexit
asm mov ax,V2
minexit:
return(_AX);
}
äá¡¡δ⌐ »α¿¼Ñα αáí«ΓáÑΓ ñ½∩ ¼«ñπ½Ñ⌐, ¿ß»«½∞ºπεΘ¿σ large ¿
small ¼«ñѽ¿ »á¼∩Γ¿, æ ¿ Åá߬á½Ñó߬¿Ñ ß«ú½áΦÑ¡¿∩ ó맮óá.
æπΘÑßΓóπεΓ τÑΓδαÑ ¬½áßßá ¬«¼á¡ñ óßΓα«Ñ¡¡«ú« áßßѼí½Ñαá,
ñ«»πßΓ¿¼δσ Turbo-C:
1) ßΓá¡ñáαΓ¡δÑ ¬«¼á¡ñδ
2) ¬«¼á¡ñδ αáí«Γδ ß« ßΓα«¬á¼¿
3) ¬«¼á¡ñδ »ÑαÑσ«ñá
4) áßßѼí½Ñα¡δÑ ñ¿αÑ¬Γ¿óδ - «»αÑñѽѡ¿∩ ¿ ¬«¼á¡ñδ αẼÑΘÑ-
¡¿∩ ñá¡¡δσ (db, dd, dw, extrn)
- 40 -
3.1.4.1. æß佬¿ ¡á ñá¡¡δÑ ¿ Σπ¡¬µ¿¿ ¿º óßΓα«Ñ¡¡«ú«
áßßѼí½Ñαá
éæÆÉÄàìì¢ë ÇææàîüïàÉ ¿ ÉàâêæÆÉÄé¢à ÅàÉàîàìì¢à:
àß½¿ «»¿ßá¡¿∩ register óßΓαÑτáεΓß∩ ó Σπ¡¬µ¿¿, «¡¿ αáßß¼áΓ-
α¿óáεΓß∩ ¬á¬ «»¿ßá¡¿∩ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ, ó« óßÑσ ñαπú¿σ
ß½πτá∩σ ñá¡¡δÑ «»¿ßá¡¿∩ αáßß¼áΓα¿óáεΓß∩ ¬á¬ «»¿ßá¡¿∩ áóΓ«¼áΓ¿-
τÑ߬¿σ »ÑαѼѡ¡δσ. é ¡Ññ«»πßΓ¿¼δσ ß½πτá∩σ ¬½ετÑó«Ñ ß½«ó« regis-
ter ¿ú¡«α¿απÑΓß∩.
Æ«½∞¬« short, int (¿½¿ ß««ΓóÑΓßΓóπεΘ¿Ñ unsigned Γ¿»δ) ¿ 2-
íá⌐Γ«óδÑ π¬áºáΓѽ¿ ¼«úπΓ íδΓ∞ »«¼ÑΘÑ¡δ ó αÑú¿ßΓαδ. ä½∩ αÑú¿ßΓ-
α«óδσ »ÑαѼѡ¡δσ ¿ß»«½∞ºπεΓß∩ SI ¿ DI αÑú¿ßΓαδ.
àß½¿ ¿ß»«½∞ºπÑΓß∩ αÑú¿ßΓα«ó«Ñ «»¿ßá¡¿Ñ ó Σπ¡¬µ¿¿,
óßΓα«Ñ¡¡δ⌐ áßßѼí½Ñα ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ ¿½¿ ¿º¼Ñ¡¿Γ∞ º¡áτÑ¡¿∩
αÑú¿ßΓα«ó«⌐ »ÑαѼѡ¡«⌐, ¿ß»«½∞ºπ∩ DI ¿½¿ SI; ßá¼«Ñ ½πτΦÑÑ ¿ß»«-
»«½∞º«óáΓ∞ æ ß¿¼ó«½∞¡δÑ ¿¼Ñ¡á ó ß½πτáÑ ¿º¼Ñ¡Ñ¡¿∩ º¡áτÑ¡¿∩ αÑ-
ú¿ßΓα«óδσ »ÑαѼѡ¡δσ.
3.1.4.2. êß»«½∞º«óá¡¿Ñ ßΓαπ¬Γπα
é« óßΓα«Ñ¡¡«¼ áßßѼí½ÑαÑ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ßß佬¿ ¡á
ßΓαπ¬Γπαδ. èα«¼Ñ Γ«ú«, ¼«ª¡« ¡Ñ»«ßαÑñßΓóÑ¡¡« ßßδ½áΓ∞ß∩ ¡á τ½Ñ¡
ßΓαπ¬Γπαδ. Éáßß¼«Γα¿¼ ß½ÑñπεΘπε »α«úαá¼¼π.
struct myStruct {
int a_a;
int a_b;
int a_c;
} myA;
myfunc()
{
...
asm mov ax, myA.a_b
asm mov bx,[di].a_c
...
}
ÅÑαóá∩ ßΓ᫬á asm ºáßδ½áÑΓ ó αÑú¿ßΓα AX º¡áτÑ¡¿Ñ myA.a_b.
æ½ÑñπεΘá∩ º ºáßδ½áÑΓ º¡áτÑ¡¿Ñ, ¡áσ«ñ∩ΘÑÑß∩ »« áñαÑßπ
[DI]+ß¼ÑΘÑ¡¿Ñ(a_c) (íÑαÑΓß∩ áñαÑß, ¡áσ«ñ∩Θ¿⌐ß∩ ó αÑú¿ßΓαÑ DI, ¿
ñ«íáó½∩ÑΓß∩ ¬ ß¼ÑΘÑ¡¿ε a_c «Γ ¡áτá½á ßΓαπ¬Γπαδ) ó αÑú¿ßΓα BX.
¥Γá »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ «»ÑαáΓ«α«ó »«α«ªñáÑΓ ß½ÑñπεΘ¿⌐ ¬«ñ
mov ax, DGROUP:myA+2
mov bx,[di+4]
- 41 -
3.1.4.3. êß»«½∞º«óá¡¿Ñ ¬«¼á¡ñ »ÑαÑσ«ñá ¿ ¼ÑΓ«¬
¡« ¿ß»«½∞º«óáΓ∞ ¬«¼á¡ñδ πß½«ó¡«ú« ¿ íѺπß½«ó¡«ú« »ÑαÑ-
σ«ñá, ¿ µ¿¬½δ ó« óßΓα«Ñ¡¡«¼ áßßѼí½ÑαÑ. Ä¡¿ ñ«»πßΓ¿¼δ Γ«½∞¬«
ó¡πΓα¿ Σπ¡¬µ¿¿. 諼á¡ñδ »ÑαÑσ«ñá ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ ¼ÑΓ¬¿ «»Ñ-
αáΓ«αá æ goto.
ä«»π߬áÑΓß∩ ¬«ßóÑ¡¡δ⌐ »ÑαÑσ«ñ. éδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ αÑ-
ú¿ßΓα«ó«Ñ ¿¼∩ ¬á¬ «»Ñαá¡ñ ó ¬«¼á¡ñÑ »ÑαÑσ«ñá ¿½¿ ºá¬½ετ¿Γ∞ «»Ñ-
αá¡ñ ó ߬«í¬¿ [], «»αÑñѽ∩∩ JUMP-áñαÑß.
ìá»α¿¼Ñα
int x()
{
int a;
. . .
a:
. . .
asm jmp a /* »ÑαÑσ«ñ ¡á ¼ÑΓ¬π "a" */
asm jmp [a] /* »ÑαÑσ«ñ »« áñαÑßπ,
ß«ñÑαªáΘѼπß∩ ó "á" */
. . .
}