home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS 1
/
BBS#1.iso
/
document
/
pas60pg.lzh
/
PG14.MY
< prev
next >
Wrap
Text File
|
1991-02-04
|
15KB
|
355 lines
âïÇéÇ 14.
êæÅÄï£çÄéÇìêà 8087.
æπΘÑßΓóπÑΓ ñóá ó¿ñá τ¿ßѽ, ß ¬«Γ«α묨 óδ ¼«ªÑΓÑ αáí«ΓáΓ∞ ó
Turbo Pascal: µÑ½δÑ (Shortint, Integer, LongInt, Byte, Word) ¿
óÑΘÑßΓóÑ¡¡δÑ (Real, Single, Double, Extended, Comp). éÑΘÑßΓóÑ¡¡δÑ
Γá¬ªÑ ¿ºóÑßΓ¡δ, ¬á¬ τ¿ß½á ß »½áóáεΘÑ⌐ Γ«τ¬«⌐. Åα«µÑßß«α 8086
ß»α«Ñ¬Γ¿α«óá¡ Γá¬, τΓ« ½Ñú¬« «íαáíáΓδóáÑΓ µÑ½δÑ τ¿ß½á, ¡« ΓαáΓ¿Γ
º¡áτ¿Γѽ∞¡« í«½∞ΦÑ óαѼѡ¿ ¿ πß¿½¿⌐ ¡á «íαáí«Γ¬π óÑΘÑßΓóÑ¡¡δσ.
ùΓ«íδ π½πτΦ¿Γ∞ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ∞ «íαáí«Γ¬¿ óÑΘÑßΓóÑ¡¡δσ τ¿ßѽ,
ßπΘÑßΓóπÑΓ ¼áΓѼáΓ¿τÑ߬¿⌐ ß«»α«µÑßß«α 8087.
æ«»α«µÑßß«α 8087 - φΓ« ߻ѵ¿á½∞¡δ⌐ á»»áαáΓ¡δ⌐ τ¿ß½«ó«⌐
»α«µÑßß«α, ¬«Γ«αδ⌐ ¼«ªÑΓ íδΓ∞ πßΓá¡«ó½Ñ¡ ó éáΦπ ¼áΦ¿¡π. Ä¡
óδ»«½¡∩ÑΓ «»Ñαᵿ¿ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ «τÑ¡∞ íδßΓα«, Ñß½¿ óδ
¿ß»«½∞ºπÑΓÑ ¼¡«ú« Γᬿσ óδτ¿ß½Ñ¡¿⌐, óá¼, óÑα«∩Γ¡«, ¡Ñ«íσ«ñ¿¼
ß«»α«µÑßß«α.
Turbo Pascal «íÑß»Ñτ¿óáÑΓ «»Γ¿¼á½∞¡πε »α«¿ºó«ñ¿Γѽ∞¡«ßΓ∞ ß
»½áóáεΘÑ⌐ Γ«τ¬«⌐ ó ºáó¿ß¿¼«ßΓ¿ «Γ Γ«ú«, ÑßΓ∞ π óáß 8087 ¿½¿ ¡ÑΓ.
- ä½∩ »α«úαá¼¼, αáí«ΓáεΘ¿σ ¡á ½εíδσ ¥éî (ß 8087 ¿½¿ íѺ),
Turbo Pascal «íÑß»Ñτ¿óáÑΓ Γ¿» real ¿ í¿í½¿«ΓѬπ »α«úαá¼¼, ¬«Γ«αá∩
«íαáíáΓδóáÑΓ óÑΘÑßΓóÑ¡¡δÑ «»Ñαᵿ¿. Æ¿» real ºá¡¿¼áÑΓ 6 íá⌐Γ »á¼∩Γ¿
¿ «íÑß»Ñτ¿óáÑΓ ñ¿á»áº«¡ «Γ 2.9x(10** -39) ñ« 1.7x(10**38) ß 11-ε -
12-ε º¡áτáΘ¿¼¿ µ¿ΣαἿ. Åα«úαá¼¼¡á∩ í¿í½¿«ΓѬá ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
«»Γ¿¼¿º¿α«óá¡á »« ߬«α«ßΓ¿ ¿ αẼÑαπ, »α¿í½¿ªá∩ß∞ ó ¡Ñ¬«Γ«αδσ
»α¿¼Ñ¡Ñ¡¿∩σ r 󫺼«ª¡«ßΓ∩¼, «íÑß»Ñτ¿óáÑ¼δ¼ 8087.
- àß½¿ óá¼ ΓαÑíπÑΓß∩ ñ«»«½¡¿Γѽ∞¡á∩ Γ«τ¡«ßΓ∞ ¿ ú¿í¬«ßΓ∞ 8087,
óδ ¼«ªÑΓÑ ¿¡ßΓαπ¬Γ¿α«óáΓ∞ Turbo Pascal, úÑ¡Ñα¿α«óáΓ∞ ¬«ñ, ¬«Γ«αδ⌐
¿ß»«½∞ºπÑΓ 8087. ¥Γ« ñáÑΓ óá¼ ñ«ßΓπ» ¬ τÑΓδαѼ ñ«»«½¡¿Γѽ∞¡δ¼
óÑΘÑßΓóÑ¡¡δ¼ Γ¿»á¼ (Single, Double, Extended ¿ Comp) ¿ αáßΦ¿α∩ÑΓ
ñ¿á»áº«¡ «Γ 3.4x(10**-4951) ñ« 1.1x(10**4932) ß 19-ε - 20-ε
º¡áτáΘ¿¼¿ µ¿ΣαἿ.
éδ »ÑαѬ½ετáÑΓÑ ¼Ñªñπ ñóπ¼∩ αẽ¿τ¡δ¼¿ ¼«ñѽ∩¼¿ óÑΘÑßΓóÑ¡¡δσ
τ¿ßѽ, ¿ß»«½∞ºπ∩ ñ¿αÑ¬Γ¿ó𠬫¼»¿½∩Γ«αá $N ¿½¿ ¬¡«»¬π 8087/80287 ó
ñ¿á½«ú«ó«¼ «¬¡Ñ Options/Compiler. ç¡áτÑ¡¿∩ »« π¼«½τá¡¿ε - {$N-}, ¿
ó φΓ«¼ ß«ßΓ«∩¡¿¿ ¬«¼»¿½∩Γ«α ¿ß»«½∞ºπÑΓ 6-¿ íá⌐Γ«óπε óÑΘÑßΓóÑ¡¡πε
í¿í½¿«ΓѬπ, »«ºó«½∩∩ óá¼ αáí«ΓáΓ∞ Γ«½∞¬« ß »ÑαѼѡ¡δ¼¿ Γ¿»á Real. é
ß«ßΓ«∩¡¿¿ {$N+} ¬«¼»¿½∩Γ«α úÑ¡Ñα¿απÑΓ ¬«ñ ñ½∩ 8087, «íÑß»Ñτ¿óá∩ éá¼
»«óδΦÑ¡¡πε Γ«τ¡«ßΓ∞ ¿ ñ«ßΓπ» ¬ τÑΓδαѼ ñ«»«½¡¿Γѽ∞¡δ¼ óÑΘÑßΓóÑ¡¡δ¼
Γ¿»á¼.
Åα¿¼Ñτá¡¿Ñ: è«úñá »α«úαá¼¼á ¬«¼»¿½¿απÑΓß∩ ó αѪ¿¼Ñ N+,
º¡áτÑ¡¿∩, ó«ºóαáΘáѼδÑ óÑΘÑßΓóÑ¡¡δ¼¿ »α«úαἼἿ ¼«ñπ½∩ System
(Sqrt, Pi, Sin ¿ Γ.ñ.) íπñÑΓ Γ¿»á Extended ó¼ÑßΓ« Real:
{$N+}
begin
WriteLn(Pi); {3.14159265358979}
end.
{$N-}
begin
WriteLn(Pi); {3.1415926536}
end.
äáªÑ Ñß½¿ ¡á éáΦÑ⌐ ¥éî ¡ÑΓ 8087, óδ ¼«ªÑΓÑ π¬áºáΓ∞ Turbo
Pascal »«ñ¬½ετ¿Γ∞ í¿í½¿«ΓѬπ, ¬«Γ«αá∩ φ¼π½¿απÑΓ ß«»α«µÑßß«α. é φΓ«¼
ß½πτáÑ, Ñß½¿ 8087 ßπΘÑßΓóπÑΓ - «¡ ¿ß»«½∞ºπÑΓß∩. àß½¿ ¡Ñ ßπΘÑßΓóπÑΓ,
«¡ φ¼π½¿απÑΓß∩ »α«úαá¼¼¡«⌐ í¿í½¿«ΓѬ«⌐, τΓ« º¡áτ¿Γѽ∞¡« ¼Ññ½Ñ¡¡ÑÑ.
ä¿αÑ¬Γ¿óá ¬«¼»¿½∩Γ«αá $E ¿ ¬¡«»¬á Emulation ó ñ¿á½«ú«ó«¼ «¬¡Ñ
Options/Compiler ¿ß»«½∞ºπÑΓß∩ ñ½∩ αáºαÑΦÑ¡¿∩ ¿½¿ ºá»αÑΘÑ¡¿∩
φ¼π½∩µ¿¿ 8087. ç¡áτÑ¡¿Ñ »« π¼«½τá¡¿ε - $à+. ê ó φΓ«¼ ß«ßΓ«∩¡¿¿
»«½¡δ⌐ φ¼π½∩Γ«α 8087 áóΓ«¼áΓ¿τÑ߬¿ »«ñ¬½ετáÑΓß∩ ¬ »α«úαá¼¼Ñ,
¬«Γ«αá∩ ¿ß»«½∞ºπÑΓ 8087. é ß«ßΓ«∩¡¿¿ $E- ¿ß»«½∞ºπÑΓß∩ º¡áτ¿Γѽ∞¡«
¼Ñ¡∞Φá∩ í¿í½¿«ΓÑ¬á ¿ αѺπ½∞Γ¿απεΘ¿⌐ .EXE Σá⌐½ ¼«ªÑΓ αáí«ΓáΓ∞ Γ«½∞¬«
¡á ¥éî ß 8087.
Åα¿¼Ñτá¡¿Ñ: ä¿αÑ¬Γ¿óá $E ¡Ñ ¿¼ÑÑΓ φΣΣѬΓá, Ñß½¿ ßΓ«¿Γ ó
¼«ñπ½Ñ, «¡á »α¿¼Ñ¡∩ÑΓß∩ Γ«½∞¬« »α¿ ¬«¼»¿½∩µ¿¿ »α«úαá¼¼.
æ½Ññ«óáΓѽ∞¡«, Ñß½¿ »α«úαá¼¼á «Γ¬«¼»¿½¿α«óá¡á ó ß«ßΓ«∩¡¿¿ {$N-} ¿
óßÑ ¼«ñπ½¿, ¿ß»«½∞ºπѼδÑ »α«úαá¼¼«⌐, Γá¬ªÑ «Γ¬«¼»¿½¿α«óá¡δ ß {$N-},
Γ« í¿í½¿«ΓѬá 8087 ¡Ñ »«ñ¬½ετáÑΓß∩ ¿ ñ¿αÑ¬Γ¿óá $E ¿ú¡«α¿απÑΓß∩.
äá½ÑÑ ó φΓ«⌐ ú½áóÑ «íßπªñáεΓß∩ ߻ѵ¿á½∞¡δÑ ó«»α«ßδ, ¬áßáεΘ¿Ñß∩
»α«úαá¼¼ ¡á Turbo Pascal, ¬«Γ«αδÑ ¿ß»«½∞ºπεΓ 8087.
Æ¿»δ ñá¡¡δσ 8087.
ä½∩ »α«úαá¼¼, ¬«Γ«αδÑ ¿ß»«½∞ºπεΓ 8087, Turbo Pascal
«íÑß»Ñτ¿óáÑΓ τÑΓδαÑ óÑΘÑßΓóÑ¡¡δσ Γ¿»á ó ñ«»«½¡Ñ¡¿Ñ ¬ Γ¿»π Rreal.
- Æ¿» Single ¿¼ÑÑΓ ¡á¿¼Ñ¡∞Φπε ñ½¿¡π, ¬«Γ«απε ¼«ª¡«
¿ß»«½∞º«óáΓ∞ ñ½∩ óÑΘÑßΓóÑ¡¡«ú« τ¿ß½á. Ä¡ ºá¡¿¼áÑΓ 4 íá⌐Γá »á¼∩Γ¿,
«íÑß»Ñτ¿óá∩ ñ¿á»áº«¡ «Γ 1.5x(10** -45) ñ« 3.4x(10**38) ß 7-ε - 8-ε
º¡áτáΘ¿¼¿ µ¿ΣαἿ.
- Æ¿» Double ºá¡¿¼áÑΓ 8 íá⌐Γ »á¼∩Γ¿, «íÑß»Ñτ¿óá∩ ñ¿á»áº«¡ «Γ
5.0σ(10** -324) ñ« 1.7σ(10** 308) ß 15-ε - 16-ε º¡áτáΘ¿¼¿ µ¿ΣαἿ.
- Æ¿» Extended - ¡á¿í«½∞Φ¿⌐ óÑΘÑßΓóÑ¡¡δ⌐ Γ¿», »«ññÑনóáѼδ⌐
8087. Ä¡ ºá¡¿¼áÑΓ 10 íá⌐Γ »á¼∩Γ¿, «íÑß»Ñτ¿óá∩ ñ¿á»áº«¡ «Γ 3.4σ(10 *
* -4932) ñ« 1.1σ(10** 4932) ß 19-ε - 20-ε º¡áτáΘ¿¼¿ µ¿ΣαἿ. ïεíá∩
áα¿Σ¼ÑΓ¿τÑ߬á∩ «»Ñαᵿ∩ ß óÑΘÑßΓóÑ¡¡δ¼ Γ¿»«¼ »α«¿ºó«ñ¿Γß∩ ß
ñ¿á»áº«¡«¼ ¿ Γ«τ¡«ßΓ∞ε Γ¿»á Extended.
- Æ¿» Comp ß«σαá¡∩ÑΓ µÑ½δÑ º¡áτÑ¡¿∩ ó 8 íá⌐Γáσ »á¼∩Γ¿,
«íÑß»Ñτ¿óá∩ ñ¿á»áº«¡ «Γ -2 ** 63+1 ñ« 2 ** 63-1, τΓ« »α¿¼Ñα¡« αáó¡«
«Γ - 9.2σ(10**18) ñ« 9.2σ(10**18). Comp ¼«ª¡« ßαáó¡¿Γ∞ ß LongInt
ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿, ¡« αáßß¼áΓα¿óáÑΓß∩ ¬á¬ óÑΘÑßΓóÑ¡¡δ⌐ Γ¿» ¿º-ºá
Γ«ú«, τΓ« óßÑ «»Ñαᵿ¿ Comp ¿ß»«½∞ºπεΓ 8087. Comp πñ«íÑ¡ ñ½∩
¿ß»«½∞º«óá¡¿∩ ó φ¬«¡«¼¿τÑ߬¿σ αáßτÑΓáσ.
é ¡Ñºáó¿ß¿¼«ßΓ¿ «Γ Γ«ú«, ÑßΓ∞ ½¿ 8087 ¿½¿ ¡ÑΓ, 6-Γ¿ íá⌐Γ«óδ⌐
Γ¿» Real ñ«ßΓπ»Ñ¡ óßÑúñá, ΓᬠτΓ« óá¼ ¡Ñ »«ΓαÑíπÑΓß∩ ¼«ñ¿Σ¿µ¿α«óáΓ∞
¿ßσ«ñ¡δ⌐ ¬«ñ ñ½∩ ¿ß»«½∞º«óá¡¿∩ 8087. éδ ¼«ªÑΓÑ óßÑúñá τ¿ΓáΓ∞ Σá⌐½δ
ß ñá¡¡δ¼¿, ßúÑ¡Ñα¿α«óá¡¡δ¼¿ »α«úαá¼¼«⌐, ó ¬«Γ«α«⌐ ¿ß»«½∞º«óá½áß∞
»α«úαá¼¼¡á∩ í¿í½¿«ΓѬá óÑΘÑßΓóÑ¡¡δσ τ¿ßѽ.
çá¼ÑΓ¿¼ «ñ¡á¬«, τΓ« 8087 «íαáíáΓδóáÑΓ »ÑαѼѡ¡δÑ Γ¿»á Real
º¡áτ¿Γѽ∞¡« ¼Ññ½Ñ¡¡ÑÑ, τѼ ñαπú¿Ñ Γ¿»δ. ¥Γ« »α«¿ßσ«ñ¿Γ ¿º-ºá Γ«ú«,
τΓ« 8087 ¡Ñ ¼«ªÑΓ »α∩¼« «íαáíáΓδóáΓ∞ Σ«α¼áΓ Real. é¼ÑßΓ« φΓ«ú«
óδºδóáÑΓß∩ »α«úαá¼¼á, »αÑ«íαáºπεΘá∩ º¡áτÑ¡¿Ñ Γ¿»á Real ó Γ¿»
Extended ñ« «»Ñαᵿ¿ ¡áñ ¡¿¼. àß½¿ Bδ σ«Γ¿ΓÑ «»Γ¿¼¿º¿α«óáΓ∞
߬«α«ßΓ∞ óδ»«½¡Ñ¡¿∩ ¿ ¡¿¬«úñá ¡Ñ íπñÑΓÑ ¿ß»«½∞º«óáΓ∞ ¥éî íѺ 8087,
óá¼ ½πτΦÑ ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« Γ¿»δ Single, Double, Extended ¿ Comp.
ÉáßΦ¿αÑ¡¡á∩ áα¿Σ¼ÑΓ¿¬á.
Æ¿» Extended ∩ó½∩ÑΓß∩ «ß¡«ó«⌐ ñ½∩ óßÑσ óδτ¿ß½Ñ¡¿⌐ ß »½áóáεΘÑ⌐
Γ«τ¬«⌐ ñ½∩ 8087. Turbo Pascal ¿ß»«½∞ºπÑΓ Σ«α¼áΓ Extended ñ½∩
σαá¡Ñ¡¿∩ óßÑσ óÑΘÑßΓóÑ¡¡δσ ¬«¡ßΓá¡Γ ¿ óδτ¿ß½∩ÑΓ óßÑ óÑΘÑßΓóÑ¡¡δÑ
óδαáªÑ¡¿∩, ¿ß»«½∞ºπ∩ Γ«τ¡«ßΓ∞ Extended. Æᬠ¡á»α¿¼Ñα, óß∩ »αáóá∩
τáßΓ∞ ß½ÑñπεΘÑú« «»ÑαáΓ«αá, íπñÑΓ óδτ¿ß½∩Γ∞ß∩ ó Extended ñ«
»αÑ«íαẫóá¡¿∩ ó Γ¿» ½Ñó«⌐ τáßΓ¿:
{$N+}
var
X, A, B, C: Real;
begin
X := (B + Sqrt(B * B - A * C)) / A;
end;
üѺ ߻ѵ¿á½∞¡δσ πß¿½¿⌐ »α«úαá¼¼¿ßΓá Turbo Pascal «íÑß»Ñτ¿óáÑΓ
óδτ¿ß½Ñ¡¿∩, ¿ß»«½∞ºπ∩ Γ«τ¡«ßΓ∞ ¿ ñ¿á»áº«¡ Γ¿»á Extended.
ä«»«½¡¿Γѽ∞¡á∩ Γ«τ¡«ßΓ∞ «º¡áτáÑΓ ¼Ñ¡∞Φπε «Φ¿í¬π «¬απú½Ñ¡¿∩, ¿
ñ«»«½¡¿Γѽ∞¡δ⌐ ñ¿á»áº«¡ «º¡áτáÑΓ í«½ÑÑ αÑñ¬¿Ñ «Φ¿í¬¿ »ÑαÑ»«½¡Ñ¡¿∩.
éδ ¼«ªÑΓÑ π½πτΦ¿Γ∞ áóΓ«¼áΓ¿τÑ߬«Ñ ¿ß»«½∞º«óá¡¿Ñ Extended Turbo
Pascal. ìá»α¿¼Ñα, óδ ¼«ªÑΓÑ «íΩ∩ó¿Γ∞ »ÑαѼѡ¡δÑ Γ¿»á Extended,
¿ß»«½∞ºπѼδÑ ñ½∩ »α«¼ÑªπΓ«τ¡δσ αѺπ½∞ΓáΓ«ó. æ½ÑñπεΘ¿⌐ »α¿¼Ñα
óδτ¿ß½∩ÑΓ ßπ¼¼π:
var
Sum: Single;
X, Y: array[1..100] of Single;
I: Integer;
T: Extended; {ñ½∩ »α«¼ÑªπΓ«τ¡«ú« αѺπ½∞ΓáΓá}
begin
T := 0.0;
for I := 1 to 100 do
T := T + X[I] * Y[I];
Sum := T;
end;
àß½¿ íδ Æ íδ½á «íΩ∩ó½Ñ¡á ¬á¬ Single, Γ« ¬áªñ«Ñ »α¿ßóá¿óá¡¿Ñ T
ó µ¿¬½Ñ ñáóὫ íδ «Φ¿í¬π «¬απú½Ñ¡¿∩ ¿º-ºá «úαá¡¿τÑ¡¡«⌐ Γ«τ¡«ßΓ¿
Single. ì« Γᬠ¬á¬ Æ - Extended, Γ« óßÑ «Φ¿í¬¿ «¬απú½Ñ¡¿∩
«úαá¡¿τÑ¡δ Γ«τ¡«ßΓ∞ε Extended ºá ¿ß¬½ετÑ¡¿Ñ¼ »α¿ßóá¿óá¡¿∩ T ó Sum.
îÑ¡∞Φá∩ «Φ¿í¬á «¬απú½Ñ¡¿∩ «º¡áτáÑΓ í«½ÑÑ Γ«τ¡δ⌐ αѺπ½∞ΓáΓ.
éδ ¼«ªÑΓÑ Γá¬ªÑ «íΩ∩ó¿Γ∞ Σ«α¼á½∞¡δÑ »áαá¼ÑΓαδ ¿ αѺπ½∞ΓáΓ
Σπ¡¬µ¿⌐ Γ¿»á Extended. ¥Γ« »αÑñ«ΓóαáΘáÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ∞
»αÑ«íαẫóá¡¿∩ ¼Ñªñπ τ¿ß½«ó묨 Σ«α¼áΓἿ, τΓ« ¼«ú½« íδ »α¿óÑßΓ¿ ¬
»«ΓÑαÑ Γ«τ¡«ßΓ¿. ìá»α¿¼Ñα:
function Area(Radius: Extended): Extended;
begin
Area := Pi * Radius * Radius;
end;
æαáó¡Ñ¡¿Ñ óÑΘÑßΓóÑ¡¡δσ Γ¿»«ó.
ū߬«½∞¬π óÑΘÑßΓóÑ¡¡δÑ Γ¿»δ ∩ó½∩εΓß∩ á»»α«¬ß¿¼¿α«óá¡¡δ¼¿,
αѺπ½∞ΓáΓ ßαáó¡Ñ¡¿∩ ñóπσ αẽ¿τ¡δσ óÑΘÑßΓóÑ¡¡δσ Γ¿»«ó ¡Ñ óßÑúñá
«τÑó¿ñÑ¡. ìá»α¿¼Ñα, Ñß½¿ X - »ÑαѼѡ¡á∩ Γ¿»á Single, á Y »ÑαѼѡ¡á∩
Γ¿»á Double, Γ« ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ íπñπΓ ñáóáΓ∞ False :
X := 1/3;
Y := 1/3;
Writeln( X = Y);
¥Γ« »α«¿ßσ«ñ¿Γ ¿º-ºá Γ«ú«, τΓ« X ¿¼ÑÑΓ Γ«τ¡«ßΓ∞ 7 - 8 µ¿Σα, á
Y - 15 - 16 ; ¿ ¬«úñá «íÑ »αÑ«íαáºπεΓß∩ ó Extended, «¡¿ ¿¼ÑεΓ
«Γ½¿τ¿Ñ »«ß½Ñ 7 - 8 µ¿Σα. ǡὫú¿τ¡«, «»ÑαáΓ«αδ
X := 1/3;
Writeln( X = 1/3);
íπñπΓ óδñáóáΓ∞ False »«ß¬«½∞¬π αѺπ½∞ΓáΓ 1/3 ó WriteLn íπñÑΓ
óδτ¿ß½∩Γ∞ß∩ ß 20-ε º¡áτáΘ¿¼¿ µ¿ΣαἿ.
æΓѬ óδτ¿ß½Ñ¡¿∩ 8087.
8087 ¿¼ÑÑΓ ó¡πΓαÑ¡¡¿⌐ ßΓѬ ú½πí¿¡«⌐ 8 πα«ó¡Ñ⌐. ä«ßΓπ» ¬
º¡áτÑ¡¿ε ó ßΓÑ¬Ñ 8087 ¼¡«ú« íδßΓαÑÑ, τѼ ñ«ßΓπ» ¬ »ÑαѼѡ¡«⌐ ó
»á¼∩Γ¿. ùΓ«íδ ñ«ßΓ¿τ∞ ¡á¿í«½∞ΦÑ⌐ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿, Turbo Pascal
¿ß»«½∞ºπÑΓ ßΓѬ 8087 ñ½∩ σαá¡Ñ¡¿∩ óαѼѡ¡δσ αѺπ½∞ΓáΓ«ó.
ÆÑ«αÑΓ¿τÑ߬¿, «τÑ¡∞ ß½«ª¡δÑ óÑΘÑßΓóÑ¡¡δÑ óδαáªÑ¡¿∩ ¼«úπΓ
»α¿óÑßΓ¿ ¬ »ÑαÑ»«½¡Ñ¡¿ε ßΓѬá. Äñ¡á¬«, φΓ«ú« ¡Ñ »α«¿ßσ«ñ¿Γ,
»«ß¬«½∞¬π φΓ« ΓαÑíπÑΓ, τΓ«íδ óδαáªÑ¡¿Ñ úÑ¡Ñα¿α«óὫ í«½ÑÑ 8
»α«¼ÑªπΓ«τ¡δσ αѺπ½∞ΓáΓ«ó.
Ä»áß¡«ßΓ∞ ºá¬½ετáÑΓß∩ ó ó맮óÑ αѬπαß¿ó¡δσ Σπ¡¬µ¿⌐. àß½¿ ΓᬿÑ
¬«¡ßΓαπ¬µ¿¿ ¡á»¿ßá¡δ ¡Ñ¬«ααÑ¬Γ¡«, «¡¿ ¼«úπΓ »α¿óÑßΓ¿ ¬ »ÑαÑ»«½¡Ñ¡¿ε
ßΓѬá 8087.
Éáßß¼«Γα¿¼ ß½ÑñπεΘπε »α«µÑñπαπ, ¬«Γ«αá∩ óδτ¿ß½∩ÑΓ τ¿ß½á
ö¿í«¡áττ¿, ¿ß»«½∞ºπ∩ αѬπαß¿ε.
function Fib(N: Integer): Extended;
begin
if N = 0 then
Fib := 0.0
else
if N = 1 then
Fib := 1.0
else
Fib := Fib(N - 1) + Fib(N - 2);
end;
é맮ó φΓ«⌐ óÑαß¿¿ Fib íπñÑΓ »α¿ó«ñ¿Γ∞ ¬ »ÑαÑ»«½¡Ñ¡¿ε ßΓѬá
8087 »α¿ N > 8. ¥Γ« »α«¿ßσ«ñ¿Γ ¿º-ºá Γ«ú«, τΓ« óδτ¿ß½Ñ¡¿Ñ
»«ß½Ññ¡Ñú« »α¿ßóá¿óá¡¿∩ ΓαÑíπÑΓ ß«σαá¡¿Γ∞ ó ßΓÑ¬Ñ αѺπ½∞ΓáΓ
Fib(N-1). èáªñδ⌐ αѬπαß¿ó¡δ⌐ ó맮ó íπñÑΓ ß«σαá¡∩Γ∞ º¡áτÑ¡¿∩ ó
ßΓѬÑ, »α¿ó«ñ∩ ¬ »ÑαÑ»«½¡Ñ¡¿ε ¡á 9-«¼ ó맮óÑ. è«ααÑ¬Γ¡á∩
¬«¡ßΓαπ¬µ¿∩ ñ«ª¡á íδΓ∞
function Fib(N: Integer): Extended;
var F1, F2: Extended;
begin
if N = 0 then
Fib := 0.0
else
if N = 1 then
Fib := 1.0
else
begin
F1 := Fib(N - 1);
F2 := Fib(N - 2);
Fib := F1 + F2;
end;
end;
éαѼѡ¡δÑ αѺπ½∞ΓáΓδ ßÑ⌐τáß ºá»«¼¿¡áεΓß∩ ó »ÑαѼѡ¡δσ,
αáß»αÑñѽѡ¡δσ ó ßΓÑ¬Ñ 8086. (æΓѬ 8086, ¬«¡Ñτ¡« Γ«ªÑ ¼«ªÑΓ íδΓ∞
»ÑαÑ»«½¡Ñ¡, ¡« φΓ« «íδτ¡« ΓαÑíπÑΓ º¡áτ¿Γѽ∞¡« í«½∞ΦÑ αѬπαß¿ó¡δσ
ó맮ó«ó).
éδó«ñ óÑΘÑßΓóÑ¡¡δσ τ¿ßѽ ß 8087.
é ß«ßΓ«∩¡¿¿ {$N+} ßΓá¡ñáαΓ¡δÑ »α«µÑñπαδ Write ¿ WriteLn
óδó«ñ∩Γ 4 µ¿Σαδ ó¼ÑßΓ« 2 ñ½∩ φ¬ß»«¡Ñ¡Γδ τ¿ß½á ß »½áóáεΘÑ⌐ Γ«τ¬«⌐,
τΓ«íδ «íÑß»Ñτ¿Γ∞ ñ¿á»áº«¡ ñ½∩ Γ¿»á àxtended. èα«¼Ñ Γ«ú«,
ßΓá¡ñáαΓ¡á∩ »α«µÑñπαá Str ó«ºóαáΘáÑΓ 4 µ¿Σαδ φ¬ß»«¡Ñ¡Γδ, ¬«úñá
óδíαá¡ óÑΘÑßΓóÑ¡¡δ⌐ Σ«α¼áΓ.
î«ñπ½¿, ¿ß»«½∞ºπεΘ¿Ñ 8087.
î«ñπ½¿, ¬«Γ«αδÑ ¿ß»«½∞ºπεΓ 8087, ¼«úπΓ íδΓ∞ ¿ß»«½∞º«óá¡δ
Γ«½∞¬« ΓѼ¿ ¼«ñπ½∩¼¿ ¿ »α«úαἼἿ, ¬«Γ«αδÑ «Γ¬«¼»¿½¿α«óá¡δ ó
ß«ßΓ«∩¡¿¿ {$N+}.
Ä»αÑñѽѡ¿Ñ, íπñÑΓ ½¿ ¼«ñπ½∞ ¿ß»«½∞º«óáΓ∞ 8087, ºáó¿ß¿Γ «Γ
Γ«ú«, ß«ñÑαª¿Γ ½¿ «¡ ¿¡ßΓαπ¬µ¿¿ 8087, á ¡Ñ «Γ Γ«ú«, ó ¬á¬«¼
ß«ßΓ«∩¡¿¿ ¡áσ«ñ¿Γß∩ ñ¿αÑ¬Γ¿óá $N ó« óαѼ∩ Ñú« ¬«¼»¿½∩µ¿¿. ¥Γ«
ñѽáÑΓ ¬«¼»¿½∩Γ«α í«½ÑÑ "ºáíδóτ¿óδ¼" ó ß½πτáÑ, ¬«úñá óδ ß½πτá⌐¡«
¬«¼»¿½¿απÑΓÑ ¼«ñπ½∞ (¬«Γ«αδ⌐ ¡Ñ ¿ß»«½∞ºπÑΓ 8087) ó {$N+}.
Åα¿¼Ñτá¡¿Ñ: è«úñá éδ ¬«¼»¿½¿απÑΓÑ ó ß«ßΓ«∩¡¿¿ τ¿ß½«ó«⌐
«íαáí«Γ¬¿, {$N+} ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ »α«úαá¼¼ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
ó ¼«ñπ½Ñ System - Sqrt, Pi, Sin ¿ Γ.ñ. íπñπΓ Γ¿»á Extended ó¼ÑßΓ«
Real.
Äí¡áαπªÑ¡¿Ñ 8087.
ü¿í½¿«ΓѬá 8087 Turbo Pascal, óßΓα«Ñ¡¡á∩ ó éáΦπ »α«úαá¼¼π
(¬«¼»¿½¿α«óá¡¡πε ß {$N+}) ó¬½ετáÑΓ ¬«ñ, ¬«Γ«αδ⌐ áóΓ«¼áΓ¿τÑ߬¿
«»αÑñѽ∩ÑΓ ¡á½¿τ¿Ñ 8087. àß½¿ 8087 »α¿ßπΓßΓóπÑΓ - »α«úαá¼¼á íπñÑΓ
Ñú« ¿ß»«½∞º«óáΓ∞. àß½¿ Ñú« ¡ÑΓ, Γ« »α«úαá¼¼á íπñÑΓ ¿ß»«½∞º«óáΓ∞
í¿í½¿«ΓѬπ φ¼π½∩µ¿¿. àß½¿ »α«úαá¼¼á íδ½á «Γ¬«¼»¿½¿α«óá¡á ó
ß«ßΓ«∩¡¿¿ {$E-} ¿ 8087 ¡Ñ «í¡áαπªÑ¡, Γ« »α«úαá¼¼á óδñáÑΓ:
"ÆαÑíπÑΓß∩ ß«»α«µÑßß«α" ("Numeric coprocessor required") ¿
ºáóÑαΦáÑΓß∩.
üδóáεΓ ß½πτá¿, ¬«úñá éá¼ ¡Ñ«íσ«ñ¿¼« «Γ¼Ñ¡¿Γ∞ φΓ«
áóΓ««í¡áαπªÑ¡¿Ñ. ìá»α¿¼Ñα, óáΦá ¥éî ¼«ªÑΓ ¿¼ÑΓ∞ 8087, ¡« éδ σ«Γ¿ΓÑ
»α«óÑα¿Γ∞, ¬á¬ íπñÑΓ αáí«ΓáΓ∞ éáΦá »α«úαá¼¼á ¡á ¼áΦ¿¡Ñ íѺ 8087.
꽿 éáΦÑ⌐ »α«úαá¼¼Ñ ¡πª¡« αáí«ΓáΓ∞ ¡á PC - ß«ó¼ÑßΓ¿¼δσ ¥éî ¿
¬á¬¿Ñ-Γ« ¿º ¡¿σ ó«ºóαáΘáεΓ ¡Ñ¬«ααÑ¬Γ¡«Ñ º¡áτÑ¡¿Ñ »α¿
áóΓ««í¡áαπªÑ¡¿¿ (߬áªÑ¼, τΓ« 8087 »α¿ßπΓßΓóπÑΓ, ¬«úñá Ñú« ¡ÑΓ, ¿½¿
¡á«í«α«Γ).
Turbo Pascal «íÑß»Ñτ¿óáÑΓ ó«º¼«ª¡«ßΓ∞ ñ½∩ «Γ¼Ñ¡δ
áóΓ««í¡áαπªÑ¡¿∩. ¥Γ« ñѽáÑΓß∩ ß »«¼«Θ∞ε »ÑαѼѡ¡«⌐ 87 ßαÑñδ DOS.
éδ πßΓá¡áó½¿óáÑΓÑ º¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐ 87 «Γ »«ñ߬Ậ¿ DOS,
¿ß»«½∞ºπ∩ ¬«¼á¡ñπ SET:
SET 87 = Y
¿½¿
SET 87 = N
ôßΓá¡áó½¿óá∩ »ÑαѼѡ¡πε ßαÑñδ 87 ó N, éδ ú«ó«α¿ΓÑ Turbo
Pascal, τΓ« ¡Ñ σ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ 8087, ñáªÑ Ñß½¿ «¡ ÑßΓ∞ ¡á ¥éî.
æ««ΓóÑΓßΓóÑ¡¡«, »α¿ßóá¿óá¡¿Ñ »ÑαѼѡ¡«⌐ 87 = Y, «º¡áτáÑΓ, τΓ«
ß«»α«µÑßß«α ÑßΓ∞ ¿ éδ σ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ Ñú«.
éìêîÇìêà! àß½¿ éδ πßΓᡫ󿽿 87 = Y , á 8087 ¡ÑΓ ¡á ¥éî, Γ«
óδ»«½¡Ñ¡¿Ñ éáΦÑ⌐ »α«úαá¼¼δ »α¿óÑñÑΓ ¬ áóáα¿⌐¡«¼π ºáóÑαΦÑ¡¿ε.
àß½¿ »ÑαѼѡ¡á∩ 87 íδ½á «»αÑñѽѡá (½εí«Ñ º¡áτÑ¡¿Ñ) ¿ éδ
σ«Γ¿ΓÑ «Γ¼Ñ¡¿Γ∞ Ñú«, óóÑñ¿ΓÑ
SET 87 =
¿ »«ß½Ñ φΓ«ú« ¡áª¼¿ΓÑ Enter.
àß½¿ πßΓá¡«ó½Ñ¡« 87 = Y ¿½¿ Ñß½¿ áóΓ««í¡áαπªÑ¡¿Ñ πß»ÑΦ¡« ¡áΦ½«
ß«»α«µÑßß«α, Γ« ¬«ñ áóΓ««í¡áαπªÑ¡¿∩ «»αÑñѽ∩ÑΓ, ¬á¬«⌐ ß«»α«µÑßß«α
¿ß»«½∞ºπÑΓß∩ (8087, 80287 ¿½¿ 80387).
¥Γ« ¡Ñ«íσ«ñ¿¼« ñ½∩ Γ«ú«, τΓ«íδ Turbo Pascal ¼«ú ¬«ααÑ¬Γ¡«
«íαáíáΓδóáΓ∞ αẽ¿τ¿∩, ¬«Γ«αδÑ ¿¼ÑεΓ φΓ¿ ß«»α«µÑßß«αδ. ÉѺπ½∞ΓáΓ
áóΓ««í¡áαπªÑ¡¿∩ ºá»¿ßδóáÑΓß∩ ó »ÑαѼѡ¡πε Test8087 (¬«Γ«αá∩
«íΩ∩ó½Ñ¡á ó ¼«ñπ½Ñ System). Ä»αÑñѽѡδ ß½ÑñπεΘ¿Ñ º¡áτÑ¡¿∩ :
────────────────────────────────────
ç¡áτÑ¡¿Ñ Ä»¿ßá¡¿Ñ
────────────────────────────────────
0 ß«»α«µÑßß«αá ¡ÑΓ
1 «í¡áαπªÑ¡ 8087
2 «í¡áαπªÑ¡ 80287
3 «í¡áαπªÑ¡ 80387
────────────────────────────────────
éáΦá »α«úαá¼¼á ¼«ªÑΓ »α«óÑα¿Γ∞ »ÑαѼѡ¡πε Test8087, τΓ«íδ
«»αÑñѽ¿Γ∞ ¬«¡Σ¿úπαáµ¿ε ¥éî. é τáßΓ¡«ßΓ¿, Test8087 ¼«ªÑΓ íδΓ∞
»α«óÑαÑ¡á ñ½∩ Γ«ú«, τΓ«íδ «»αÑñѽ¿Γ∞ - óÑΘÑßΓóÑ¡¡δÑ «»Ñαᵿ¿
φ¼π½¿απεΓß∩ ¿½¿ óδ»«½¡∩εΓß∩ ¡á»α∩¼πε.
¥¼π½∩µ¿∩ 8087 ó ÇßßѼí½ÑαÑ.
è«úñá »«ñ¬½ετáÑΓß∩ «íΩÑ¬Γ¡δ⌐ Σá⌐½ (¿ß»«½∞ºπ∩ ñ¿αÑ¬Γ¿óπ {$L
filename}), Γ« ¡Ñ«íσ«ñ¿¼«, τΓ«íδ φëà «íΩÑ¬Γ¡δ⌐ Σá⌐½ íδ½
«Γ¬«¼»¿½¿α«óá¡ ß φ¼π½∩µ¿Ñ⌐ 8087. ìá»α¿¼Ñα, Ñß½¿ éδ ¿ß»«½∞ºπÑΓÑ
óÑΘÑßΓóÑ¡¡δÑ «»Ñαᵿ¿ ó« ó¡ÑΦ¡Ñ⌐ »α«µÑñπαÑ, ¡á»¿ßá¡¡«⌐ ¡á
ÇßßѼí½ÑαÑ, Γ« ¡Ñ«íσ«ñ¿¼«, τΓ«íδ íδ½á ó¬½ετÑ¡á φ¼¼π½∩µ¿∩, ¬«úñá éδ
áßßÑ¼í½¿απÑΓÑ Σá⌐½ .ASM ó Σá⌐½ .OBJ. é »α«Γ¿ó¡«¼ ß½πτáÑ ¿¡ßΓαπ¬µ¿¿
8087 ¡Ñ ß¼«úπΓ íδΓ∞ φ¼π½¿α«óá¡δ ¡á ¼áΦ¿¡Ñ íѺ 8087. ä½∩ ó¬½ετÑ¡¿∩
φ¼π½∩µ¿¿ ¿ß»«½∞ºπ⌐ΓÑ «»µ¿ε /à Turbo Assembler.