home *** CD-ROM | disk | FTP | other *** search
-
- ÿÑσ«óµ«ó ǽѬßá¡ñα
-
-
- ô¼Ñ¡∞ΦÑ¡¿Ñ αẼÑαá αѺ¿ñÑ¡Γ¡δσ »α«úαá¼¼,
- ¡á»¿ßá¡¡δσ ¡á Turbo-Pascal 6.0.
-
-
- è«úñá ¬Γ«-½¿í« ú«ó«α¿Γ, τΓ« αѺ¿ñÑ¡Γ¡δÑ »α«úαá¼¼δ ß½ÑñπÑΓ »¿ßáΓ∞ ¡á
- áßßѼí½ÑαÑ, ∩ íѺπß½«ó¡« ß«ú½áΦáεß∞. è«¡Ñτ¡«, ∩ºδ¬ áßßѼí½Ñαá ½πτΦÑ
- óßÑú« ß«ºñá¡ ñ½∩ ¡á»¿ßá¡¿∩ ¼á½Ñ¡∞¬¿σ αѺ¿ñÑ¡Γ¡δσ πΓ¿½¿Γ, ¡«
- »«»α«íπ⌐ΓÑ ßñѽáΓ∞ ¡á ¡Ñ¼ τΓ«-Γ« óα«ñÑ DISKMON ¿º Norton Utilities.
- Åα«úαá¼¼á DISKMON ¿¼ÑÑΓ αẼÑα «¬«½« 70 èí, ¿ß»«½∞ºπÑΓ ¼«Θ¡πε «¬«¡¡πε
- í¿í½¿«ΓѬπ ¿, »«ß½Ñ Γ«ú« ¬á¬ éδ óδíÑαÑΓÑ ¡πª¡δÑ αѪ¿¼δ ºáΘ¿Γδ ñ¿ß¬á,
- «ßΓáó½∩ÑΓ ó »á¼∩Γ¿ αѺ¿ñÑ¡Γ αẼÑα«¼ 8.5 ¬¿½«íá⌐Γ, ¬«Γ«αδ⌐ ß«íßΓóÑ¡¡«
- ¿ ºáΘ¿ΘáÑΓ ñ¿ß¬. Æᬠ¡ÑπªÑ½¿ αáñ¿ φΓ¿σ 8.5 èí ¡πª¡« ¡áí¿αáΓ∞ 70 èí
- »α«úαá¼¼δ ¡á áßßѼí½ÑαÑ? ÆÑ»Ñα∞ πªÑ ¼«ª¡« ߬áºáΓ∞: ¡ÑΓ, ¡Ñ ¡πª¡«!
- æ½Ññπ∩ αѬ«¼Ñ¡ñᵿ∩¼ ¿º ñá¡¡«⌐ ßΓáΓ∞¿ éδ Γ«ªÑ ß¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞
- ¿ ¿¡ΓÑαΣÑ⌐ß¡δÑ í¿í½¿«ΓѬ¿, ¿ »α«τ¿Ñ πñ«í¡δÑ ¼«ñπ½¿, ¡á»¿ßá¡¡δÑ ¡á
- Turbo-Pascal 6.0, á »« «¬«¡τá¡¿¿ αáí«Γδ »α«úαá¼¼δ «ßΓáó½∩Γ∞ ó »á¼∩Γ¿
- ¬«¼»∞εΓÑαá ¡Ñí«½∞Φ«Ñ αѺ¿ñÑ¡Γ¡«Ñ Γѽ«, ¡Ñ ß«ñÑαªáΘÑÑ ¡¿τÑú« ½¿Φ¡Ñú«.
- ê óßÑ φΓ« ¡Ñ »«ΓαÑíπÑΓ «Γ éáß º¡á¡¿∩ áßßѼí½Ñαá!
-
- êΓá¬, ß¡áτá½á «ΓóÑΓ¿¼ ¡á ¬½ετÑó«⌐ ó«»α«ß:
-
-
- 1. ùΓ« ñѽáΓ∞.
-
- Éáßß¼«Γα¿¼ ßΓαπ¬Γπαπ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ Turbo-Pascal:
-
- éÑαΦ¿¡á »á¼∩Γ¿ DOS (640 èí)
- ┌───────────────────────────────────────┐
- │ æó«í«ñ¡á∩ »á¼∩Γ∞ │
- ├───────────────────────────────────────┤
- │ Heap (èπτá) │
- ├───────────────────────────────────────┤
- │ üπΣÑα «óÑα½Ñ∩ │
- ├───────────────────────────────────────┤
- │ æΓѬ │
- ├───────────────────────────────────────┤ <- SSeg:0000
- │ ⽫íá½∞¡δÑ »ÑαѼѡ¡δÑ │
- │ Æ¿»¿º«óá¡¡δÑ ¬«¡ßΓá¡Γδ │
- ├───────────────────────────────────────┤ <- DSeg:0000
- │ æÑú¼Ñ¡Γ ¬«ñá ¼«ñπ½∩ SYSTEM │
- ├───────────────────────────────────────┤
- │ æÑú¼Ñ¡Γ ¬«ñá »Ñαó«ú« ¼«ñπ½∩ │
- ├───────────────────────────────────────┤
- ...
-
- ├───────────────────────────────────────┤
- │ æÑú¼Ñ¡Γ ¬«ñá »«ß½Ññ¡Ñú« │
- │ ¼«ñπ½∩ │
- ├───────────────────────────────────────┤
- │ æÑú¼Ñ¡Γ ¬«ñá ú«½«ó¡«⌐ │
- │ »α«úαá¼¼δ │
- ├───────────────────────────────────────┤
- │ Program segment prefix (PSP) │
- └───────────────────────────────────────┘ <- PrefixSeg
-
-
- êº α¿ßπ¡¬á ó¿ñ¡«, τΓ« »α«ΘÑ óßÑú« ¿ºíáó¿Γ∞ß∩ «Γ "½¿Φ¡Ñú«" ¬«ñá
- ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- - »«¼ÑßΓ¿Γ∞ ó ¡áτὫ ú«½«ó¡«ú« ¼«ñπ½∩ Γπ αѺ¿ñÑ¡Γ¡πε »α«µÑñπαπ,
- ¬«Γ«αá∩ «ßΓá¡ÑΓß∩ ó »á¼∩Γ¿ »«ß½Ñ ºáóÑαΦÑ¡¿∩ αáí«Γδ »α«úαá¼¼δ;
-
- - ßαáºπ ºá ¡Ñ⌐ »«¼ÑßΓ¿Γ∞ ßÑú¼Ñ¡Γ ñá¡¡δσ;
-
- - ¼¿¡¿¼¿º¿α«óáΓ∞ αẼÑα ßÑú¼Ñ¡Γá ñá¡¡δσ, Γᬠ¬á¬ ñ½∩ »α«ßΓ«Γδ
- «¡ íÑαÑΓß∩ óÑß∞;
-
- - ¡Ñ ¿ß»«½∞º«óáΓ∞ ó αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ »α«úαá¼¼δ ñ¿¡á¼¿τÑ߬¿Ñ
- »ÑαѼѡ¡δÑ (Γᬠ¬á¬ óÑß∞ Heap ó¼ÑßΓÑ ß Ñú« ¼«¡¿Γ«α«¼ ¼δ Γ«ªÑ
- óδíαáßδóáѼ);
-
- - π¬áºáΓ∞ ¡«óδ⌐ αẼÑα αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ »α«úαá¼¼δ: «¡ αáóÑ¡
- αẼÑαπ αѺ¿ñÑ¡Γ¡«⌐ »α«µÑñπαδ+αẼÑαπ ßÑú¼Ñ¡Γá ñá¡¡δσ;
-
- - »«ß¬«½∞¬π º¡áτÑ¡¿Ñ áñαÑßá ßÑú¼Ñ¡Γá ñá¡¡δσ ¿º¼Ñ¡¿½«ß∞, ¡πª¡«
- ¬á¬-Γ« ¡áπτ¿Γ∞ß∩ »«½πτáΓ∞ ñ«ßΓπ» ¬ ñá¡¡δ¼ »α¿ ó맮óÑ αѺ¿ñÑ¡Γ¡«⌐
- »α«µÑñπαδ.
-
- é αѺπ½∞ΓáΓÑ ¿º ¡áα¿ß«óá¡¡«⌐ óδΦÑ ¬áαΓ¿¡¬¿ »«½πτ¿Γß∩:
-
- éÑαΦ¿¡á »á¼∩Γ¿ DOS (640 èí)
- ┌───────────────────────────────────────┐
- │ æó«í«ñ¡á∩ »á¼∩Γ∞ │
- ├───────────────────────────────────────┤ <──────────────┐α
- │ ⽫íá½∞¡δÑ »ÑαѼѡ¡δÑ │ │Ñ
- │ Æ¿»¿º«óá¡¡δÑ ¬«¡ßΓá¡Γδ │ │º
- ├───────────────────────────────────────┤ <- NewDSeg:0000 │¿
- │ æÑú¼Ñ¡Γ ¬«ñá ú«½«ó¡«⌐ │ │ñ
- │ »α«úαá¼¼δ (¡Ñ µÑ½¿¬«¼) │ │Ñ
- ├───────────────────────────────────────┤ │¡
- │ Program segment prefix (PSP) │ │Γ
- └───────────────────────────────────────┘ <- PrefixSeg <───┘
-
-
- ê¼Ñ¡¡« φΓ« ¿ íπñÑΓ ΓѼ ¼¿¡¿¼á½∞¡δ¼ αѺ¿ñÑ¡Γ«¼, ¬«Γ«αδ⌐ ¼«ª¡« ßñѽáΓ∞
- ¿º »α«úαá¼¼δ ¡á Turbo-Pascal.
- Ç ΓÑ»Ñα∞, »«ß½Ñ ¼¡«ú««íÑΘáεΘ¿σ »α«Ñ¬Γ«ó, ¡Ñ úαÑσ ¿ ß»α«ß¿Γ∞:
-
-
-
- 2. èᬠφΓ« ßñѽáΓ∞.
-
- Äß¡«ó¡πε τáßΓ∞ ºáí«Γ ó«º∞¼ÑΓ ¡á ßÑí∩ »α«µÑñπαá Keep. èᬠéδ º¡áÑΓÑ,
- ó ¼«ñπ½Ñ DOS ¿¼ÑÑΓß∩ ßΓá¡ñáαΓ¡á∩ »α«µÑñπαá Keep, ¬«Γ«αá∩ ºáóÑαΦáÑΓ
- »α«úαá¼¼π, ñѽá∩ ÑÑ αѺ¿ñÑ¡Γ¡«⌐. îδ ¡á»¿ΦѼ ßó«ε, ¬«Γ«αá∩ ñѽáÑΓ Γ«
- ªÑ, ¡« ÑΘÑ ¿ π¼Ñ¡∞ΦáÑΓ αẼÑα αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ ñ« ¼¿¡¿¼π¼á.
- Äñ¡á¬« ¬«Ñ-τΓ« »α¿ñÑΓß∩ ñѽáΓ∞ ßἿ¼, ΓᬠτΓ« ñáóá⌐ΓÑ «ßΓáó¿¼ Keep
- ¡á»«ß½Ññ«¬.
- Ç »«¬á αáßß¼«Γα¿¼ »« »π¡¬Γá¼, « τѼ ºáí«Γ¿¼ß∩ ¼δ:
- ___________________________________
-
- 1. Å«¼ÑßΓ¿Γ∞ ó ¡áτὫ ú«½«ó¡«ú« ¼«ñπ½∩ Γπ αѺ¿ñÑ¡Γ¡πε »α«µÑñπαπ,
- ¬«Γ«αá∩ «ßΓá¡ÑΓß∩ ó »á¼∩Γ¿ »«ß½Ñ ºáóÑαΦÑ¡¿∩ αáí«Γδ »α«úαá¼¼δ:
-
- ¥Γ« ßá¼«Ñ »α«ßΓ«Ñ. ÅπßΓ∞ αѺ¿ñÑ¡Γ¡á∩ »α«µÑñπαá ¡áºδóáÑΓß∩ MyRes,
- Γ«úñá ¡πª¡δ⌐ αѺπ½∞ΓáΓ íπñÑΓ »«½πτÑ¡ Γá¬:
-
- program MiniResident;
-
- uses DOS,CRT; (* ô¬áºδóáÑΓÑ ¿ß»«½∞ºπѼδÑ ¼«ñπ½¿,
- ¬á¬ «íδτ¡« *)
-
- TYPE ... (* Ä»¿ßá¡¿Ñ Γ¿»«ó ñá¡¡δσ *)
- VAR ... (* Ä»¿ßá¡¿Ñ ú½«íá½∞¡δσ »ÑαѼѡ¡δσ *)
- CONST ... (* Ä»¿ßá¡¿Ñ ¬«¡ßΓá¡Γ *)
-
- procedure MyRes; interrupt;
-
- (* æá¼á∩ »Ñαóá∩ »α«µÑñπαá ¿º »α«µÑñπα ¿ Σπ¡¬µ¿⌐
- ú«½«ó¡«ú« ¼«ñπ½∩ »α«úαá¼¼δ *)
-
- ... (* Æѽ« »α«µÑñπαδ *)
-
- end;{MyRes} (* 諡ѵ »α«µÑñπαδ *)
-
- procedure ... (* ÄßΓá½∞¡δÑ »α«µÑñπαδ ¿ Σπ¡¬µ¿¿ ú«½«ó¡«ú«
- ¼«ñπ½∩ *)
-
- ___________________________________
-
- 2. æαáºπ ºá ¡Ñ⌐ »«¼ÑßΓ¿Γ∞ ßÑú¼Ñ¡Γ ñá¡¡δσ:
-
- ¥Γ¿¼ ºá⌐¼ÑΓß∩ »α«µÑñπαá Keep. Ä¡á ñ«½ª¡á íδΓ∞ »«ß½Ññ¡Ñ⌐ »« »«α∩ñ¬π
- ¿º »α«µÑñπα ¿ Σπ¡¬µ¿⌐, ¬«Γ«αδÑ »«»áñπΓ ó αѺ¿ñÑ¡Γ¡πε τáßΓ∞ »α«úαá¼¼δ.
- æαáºπ ºá ß«í«⌐ Keep »«¼ÑßΓ¿Γ ñá¡¡δÑ, »α«»¿ßáó ¿σ »«óÑασ Γѽá
- «ßΓá½∞¡δσ »α«µÑñπα ¿ Σπ¡¬µ¿⌐, ó αѺ¿ñÑ¡ΓÑ ¡Ñ ¿ß»«½∞ºπѼδσ.
-
- æá¼á »α«µÑñπαá ñ«½ª¡á íδΓ∞ ºá»¿ßá¡á Γá¬:
-
-
- procedure DummyProc; forward;
-
- procedure Keep( Num : word );
-
- ... (* Æѽ« »α«µÑñπαδ Keep *)
-
- end;{Keep}
-
- procedure DummyProc;
- begin
- end;{DummyProc}
-
- ç¡á∩ ¼ÑßΓ«»«½«ªÑ¡¿Ñ »α«µÑñπαδ DummyProc »α«µÑñπαá Keep íπñÑΓ Γ«τ¡«
- º¡áΓ∞, úñÑ ºáóÑαΦáÑΓß∩ αѺ¿ñÑ¡Γ¡á∩ τáßΓ∞ ¬«ñ«ó »α«úαá¼¼δ, ¿
- »ÑαѼÑßΓ¿Γ Γπñá ßÑú¼Ñ¡Γ ñá¡¡δσ.
-
- Æѽ« »α«µÑñπαδ Keep íπñÑΓ ¡á»¿ßá¡« τπΓ∞ »«ºªÑ, Γᬠ¬á¬ «¡á
- «ñ¡«óαѼѡ¡« óδ»«½¡¿Γ ¿ ¡Ñ¬«Γ«αδÑ ñαπú¿Ñ ¡Ñ«íσ«ñ¿¼δÑ ñÑ⌐ßΓó¿∩.
-
- ___________________________________
-
- 3. î¿¡¿¼¿º¿α«óáΓ∞ αẼÑα ßÑú¼Ñ¡Γá ñá¡¡δσ, Γᬠ¬á¬ ñ½∩ »α«ßΓ«Γδ
- «¡ íÑαÑΓß∩ óÑß∞:
-
- ä½∩ π¼Ñ¡∞ΦÑ¡¿∩ αẼÑαá ßÑú¼Ñ¡Γá ñá¡¡δσ ¡Ñ«íσ«ñ¿¼« ßóÑßΓ¿ ñ«
- ¼¿¡¿¼π¼á ¬«½¿τÑßΓó« ú½«íá½∞¡δσ »ÑαѼѡ¡δσ ¿ Γ¿»¿º«óá¡¡δσ ¬«¡ßΓá¡Γ,
- «ßΓáó¿ó »« 󫺼«ª¡«ßΓ¿ ½¿Φ∞ ΓÑ, ¬«Γ«αδÑ éδ ¿ß»«½∞ºπÑΓÑ ó αѺ¿ñÑ¡Γ¡«⌐
- τáßΓ¿ »α«úαá¼¼δ. Äß«íÑ¡¡« φΓ« ¬áßáÑΓß∩ ¼áßß¿ó«ó. ìá»α¿¼Ñα:
-
- TYPE BigArr = ARRAY[1..4096] OF WORD;
-
- (* ìÑ αѬ«¼Ñ¡ñπÑΓß∩ ÉѬ«¼Ñ¡ñπÑΓß∩ *)
-
-
- TYPE PBigArr = ^BigArr;
- VAR VAR
- BM : BigArr; BM : PBigArr;
-
- BEGIN BEGIN
- GetMem(BM,SizeOf(BigArr));
- BM[ 1 ] := 24; BM^[ 1 ] := 24;
-
- ___________________________________
-
- 4. ìÑ ¿ß»«½∞º«óáΓ∞ ó αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ »α«úαá¼¼δ ñ¿¡á¼¿τÑ߬¿Ñ
- »ÑαѼѡ¡δÑ (Γᬠ¬á¬ óÑß∞ Heap ó¼ÑßΓÑ ß Ñú« ¼«¡¿Γ«α«¼ ¼δ Γ«ªÑ
- óδíαáßδóáѼ).
-
- àß½¿ éáΦá αѺ¿ñÑ¡Γ¡á∩ »α«µÑñπαá ¿ß»«½∞ºπÑΓ ¬á¬«⌐-½¿í« íπΣÑα, Γ« «¡
- ¡Ñ ñ«½ªÑ¡ íδΓ∞ π¬áºáΓѽѼ, ¬«Γ«αδ⌐ »«½πτ¿½ »á¼∩Γ∞ ß »«¼«Θ∞ε GetMem
- ¿½¿ New.
- æ½Ññ«óáΓѽ∞¡«, óßÑ ßΓαπ¬Γπαδ ¿ ¼áßß¿óδ ñ½∩ αѺ¿ñÑ¡Γ¡«⌐ πΓ¿½¿Γδ
- ¡Ñ«íσ«ñ¿¼« «»¿ßáΓ∞ ¬á¬ ú½«íá½∞¡δÑ »ÑαѼѡ¡δÑ, ¿½¿ ¬á¬ Γ¿»¿º«óá¡¡δÑ
- ¬«¡ßΓá¡Γδ. Ä¡¿ íπñπΓ »«¼ÑΘÑ¡δ ó ßÑú¼Ñ¡Γ ñá¡¡δσ.
-
- ___________________________________
-
- 5. ô¬áºáΓ∞ ¡«óδ⌐ αẼÑα αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ »α«úαá¼¼δ: «¡ αáóÑ¡
- αẼÑαπ αѺ¿ñÑ¡Γ¡«⌐ »α«µÑñπαδ+αẼÑαπ ßÑú¼Ñ¡Γá ñá¡¡δσ.
-
- ¥Γπ αáí«Γπ ó ¼«ñπ½Ñ DOS óδ»«½¡∩ÑΓ »α«µÑñπαá Keep. é«Γ ¿ ÑÑ óαѼ∩
- »α¿Φ½«. àß½¿ éδ ¡Ñ «ß«í« αáºí¿αáÑΓÑß∞ ó áßßѼí½ÑαÑ ¿ ó¡πΓαÑ¡¡¿σ
- ßΓαπ¬Γπαáσ Turbo-Pascal, Γ« ó«ß»α¿¼¿ΓÑ Keep ¬á¬ ñá¡¡«ßΓ∞ ¿ »α«ßΓ«
- óßΓáó∞ΓÑ ÑÑ ó ßó«ε »α«úαá¼¼π.
-
-
- procedure DummyProc; external;
-
- procedure Keep( ExitCode : byte );
- (* æñó¿ú ßÑú¼Ñ¡Γá ñá¡¡δσ ó»½«Γ¡πε ¬ ¬«ñ«ó«¼π ßÑú¼Ñ¡Γπ.
- é αѺπ½∞ΓáΓÑ πª¿¼áÑΓß∩ EXE - Σá⌐½ ¡á߬«½∞¬« 󫺼«ª¡«. *)
-
- VAR
- ResidSize: word; (* αẼÑα αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ »α«úαá¼¼δ ó »áαáúαáΣáσ *)
- NewDS : word; (* º¡áτÑ¡¿Ñ ßÑú¼Ñ¡Γá ¡«ó«ú« DS - ßÑú¼Ñ¡Γá ñá¡¡δσ *)
- DataSize : word; (* αẼÑα ßÑú¼Ñ¡Γá ñá¡¡δσ ó »áαáúαáΣáσ *)
-
-
- begin
- NewDS := (CSeg + Ofs(DummyProc) DIV 16) +1; (* ì«óδ⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ
- ¡áτ¿¡áÑΓß∩ ßαáºπ »«ß½Ñ
- »α«µÑñπαδ Keep *)
- DataSize := SSeg-DSeg;
- ResidSize:= NewDS-PrefixSeg+DataSize;
-
- asm (* çừ¼¡¿¼ º¡áτÑ¡¿Ñ áñαÑßá ¡«ó«ú« ßÑú¼Ñ¡Γá ñá¡¡δσ *)
- mov ax,NewDS
- mov cs : word ptr [BufferDS], ax
- end;
-
- move( MEM[ DSeg:0 ], MEM[ NewDS:0 ], (SSeg-DSeg)*16);
- (* move ßñó¿úáÑΓ ßÑú¼Ñ¡Γ ñá¡¡δσ ó»α¿Γδ¬
- ¬ ¬«ñá¼ αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ »α«úαá¼¼δ *)
-
- ASM (* æΓá¡«ó¿¼ß∩ αѺ¿ñÑ¡Γ«¼ *)
- mov ax,[SYSTEM.PREFIXSEG]
- mov es,ax
- mov es,es:[02CH] (* æ¡áτá½á «ßó«í«ªπ Environment block *)
- mov ah,49H
- int 21H
-
- mov dx,ResidSize (* ôßΓá¡«ó¿¼ αẼÑα αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ *)
- mov ah,31H
- mov al,ExitCode (* ÆÑ»Ñα∞ - TSR ß ¬«ñ«¼ ó«ºóαáΓá ExitCode *)
- int 21H
- END;
-
- end;{Keep}
-
- procedure DummyProc;
- begin
- end;{DummyProc}
-
-
- ä½∩ «»δΓ¡δσ »«½∞º«óáΓѽÑ⌐ ß««íΘπ, τΓ« »α«µÑñπαá Keep:
-
- - πßΓá¡áó½¿óáÑΓ αẼÑα αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ »α«úαá¼¼δ, αáó¡δ⌐ αẼÑαπ
- ¬«ñá «Γ ¡áτá½á »α«úαá¼¼δ ñ« ¬«¡µá »α«µÑñπαδ Keep + αẼÑα ßÑú¼Ñ¡Γá
- ñá¡¡δσ;
-
- - «ßó«í«ªñáÑΓ DOS Environment block, «Γ¬πñá íÑαπΓ ßó«Ñ º¡áτÑ¡¿Ñ
- Σπ¡¬µ¿¿ ParamCount, ParamStr, EnvCount, GetEnv ¿ EnvStr. ¥Γ«Γ í½«¬
- αáß»«½«ªÑ¡ «Γñѽ∞¡« «Γ «ßΓá½∞¡«⌐ »α«úαá¼¼δ, «íδτ¡« ¡¿ªÑ ÑÑ. Å«ß½Ñ
- ºáúαπº¬¿ ß½ÑñπεΘÑ⌐ »α«úαá¼¼δ ÑÑ DOS Environment block »«τΓ¿ ¡áóÑα¡∩¬á
- íπñÑΓ αẼÑΘÑ¡ ó φΓ«¼ ßó«í«ñ¡«¼ ¼ÑßΓÑ, á º¡áτ¿Γ »«½πτ¿Γß∩
- ñ«»«½¡¿Γѽ∞¡δ⌐ óδ¿úαδΦ ó «»ÑαáΓ¿ó¡«⌐ »á¼∩Γ¿.
-
- ___________________________________
-
- 6. ū߬«½∞¬π º¡áτÑ¡¿Ñ áñαÑßá ßÑú¼Ñ¡Γá ñá¡¡δσ ¿º¼Ñ¡¿½«ß∞, ¡πª¡«
- ¬á¬-Γ« ¡áπτ¿Γ∞ß∩ »«½πτáΓ∞ ñ«ßΓπ» ¬ ñá¡¡δ¼ »α¿ ó맮óÑ αѺ¿ñÑ¡Γ¡«⌐
- »α«µÑñπαδ.
-
- é¡¿¼áΓѽ∞¡δ⌐ τ¿ΓáΓѽ∞, º¡áεΘ¿⌐ áßßѼí½Ñα, ¼«ªÑΓ ß»α«ß¿Γ∞:
- "Å«ú«ñ¿ΓÑ, á τΓ« Γá¬«Ñ BufferDS ó »α«µÑñπαÑ Keep ¿ úñÑ «¡ «»¿ßá¡?".
- äÑ⌐ßΓó¿Γѽ∞¡«, ¡πª¡« «»¿ßáΓ∞ φΓπ »ÑαѼѡ¡πε, τΓ«íδ ¬«¼»¿½∩Γ«α ¡Ñ
- "απúá½ß∩". ¥Γá »ÑαѼѡ¡á∩ ß«ñÑαª¿Γ ¡«óδ⌐ áñαÑß ßÑú¼Ñ¡Γá ñá¡¡δσ. ì«
- τΓ«íδ πº¡áΓ∞ º¡áτÑ¡¿Ñ ½εí«⌐ »ÑαѼѡ¡«⌐, ¡πª¡« º¡áΓ∞ áñαÑß ßÑú¼Ñ¡Γá
- ñá¡¡δσ. æ½Ññ«óáΓѽ∞¡«, ñ½∩ »«½πτÑ¡¿∩ º¡áτÑ¡¿∩ »ÑαѼѡ¡«⌐ BufferDS
- ¡πª¡« º¡áΓ∞ φΓ« º¡áτÑ¡¿Ñ ºáαá¡ÑÑ! çἬ¡πΓδ⌐ ¬απú?
- ìÑΓ, ÑßΓ∞ óδσ«ñ ¿ ¿º ¡Ñú«. Å«¼ÑßΓ¿¼ »ÑαѼѡ¡πε BufferDS ó ¬«ñ«óδ⌐
- ßÑú¼Ñ¡Γ. ä½∩ »α«úαá¼¼¿ßΓ«ó ¡á áßßѼí½ÑαÑ σαá¡Ñ¡¿Ñ »ÑαѼѡ¡δσ ó
- ¬«ñ«ó«¼ ßÑú¼Ñ¡ΓÑ ñѽ« «íδτ¡«Ñ, ¡« Turbo-Pascal Γᬠ»α«ßΓ« ßñѽáΓ∞ φΓ«
- ¡Ñ »«ºó«½¿Γ. Å«⌐ñѼ ¡á σ¿Γα«ßΓ∞: «»¿ΦѼ BufferDS ¬á¬ »α«µÑñπαπ ß
- »πßΓδ¼ Γѽ«¼, á ºá¡¿¼áѼ«Ñ Ñε ¼ÑßΓ« ¿ß»«½∞ºπѼ ñ½∩ σαá¡Ñ¡¿∩ º¡áτÑ¡¿∩
- "»ÑαѼѡ¡«⌐" BufferDS, Γ« ÑßΓ∞ ¡«ó«ú« áñαÑßá ßÑú¼Ñ¡Γá ñá¡¡δσ.
- ū߬«½∞¬π BufferDS »α¿ú«ñ¿Γß∩ ¿ ó αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ »α«úαá¼¼δ,
- «»¿ΦѼ Ñú« »ÑαÑñ MyRes.
-
-
- procedure BufferDS;
- begin
- end;{BufferDS}
-
- procedure MyRes; interrupt;
-
- ...
-
- ÆÑ»Ñα∞ π ¡áß ÑßΓ∞ óßÑ, τΓ« ¡πª¡«. ÄßΓὫß∞ π¬áºáΓ∞ αѺ¿ñÑ¡Γ¡«⌐
- »α«µÑñπαÑ ¡«ó«Ñ º¡áτÑ¡¿Ñ ßÑú¼Ñ¡Γá ñá¡¡δσ. ¥Γ« ¡πª¡« ßñѽáΓ∞ ó ßἫ¼
- ¡áτá½Ñ »α«µÑñπαδ ß »«¼«Θ∞ε áßßѼí½Ñα¡δσ «»ÑαáΓ«α«ó:
-
- procedure MyRes;interrupt;
- begin
- ASM
- mov ax, cs : word ptr [BufferDS]
- mov ds,ax
- END;
-
- ...
-
-
-
- 3. Ç τѼ »½áΓ¿Γ∞?
-
-
- êºóÑßΓ¡«, τΓ« ¡¿τÑú« ºáñáα«¼ ¡Ñ íδóáÑΓ. Æá¬, Ñß½¿ ó¡¿¼áΓѽ∞¡«
- »«ß¼«ΓαÑΓ∞ ¡á á½ú«α¿Γ¼ "óδíαáßδóá¡¿∩ ½¿Φ¡Ñú« ¬«ñá", Γ« ßΓá¡ÑΓ ∩ß¡«,
- τΓ« ¿ óÑß∞ ¬«ñ ¼«ñπ½∩ SYSTEM Γ«ªÑ íπñÑΓ óδíα«ΦÑ¡, Γ« ÑßΓ∞ ¡Ññ«ßΓπ»Ñ¡
- ó αѺ¿ñÑ¡Γ¡«⌐ πΓ¿½¿ΓÑ. Ç óÑñ∞ ßαÑñ¿ »α«τÑú« SYSTEM ß«ñÑαª¿Γ »α«µÑñπαδ
- ¿ Σπ¡¬µ¿¿ αáí«Γδ ß« ßΓα«¬á¼¿, Γα¿ú«¡«¼ÑΓα¿ε, úÑ¡ÑαáΓ«α ß½πτá⌐¡δσ
- τ¿ßѽ, ParamCount, ParamStr, UpCase, Move ¿ FillChar. Å«ΓÑα¿ óßÑ ªÑ
- ¡Ñ ß½¿Φ¬«¼ óѽ¿¬¿, Γᬠ¬á¬ »α«µÑñπαδ ¿ Σπ¡¬µ¿¿ DEC, INC, Addr, Seg,
- Ofs, SizeOf ¿ »α«τ¿Ñ á¡á½«ú¿τ¡δÑ ¿¼ ¡á ßἫ¼ ñÑ½Ñ αáºó«αáτ¿óáεΓß∩
- ¬«¼»¿½∩Γ«α«¼ ó áßßѼí½Ñα¡δÑ ¬«¼á¡ñδ ¿, ß½Ññ«óáΓѽ∞¡«, ¼«úπΓ
- ¿ß»«½∞º«óáΓ∞ß∩ íѺ «úαá¡¿τÑ¡¿⌐.
- ÄßΓá½∞¡«Ñ, τΓ« »«¡áñ«í¿Γß∩, »α¿ñÑΓß∩ ¡á»¿ßáΓ∞ ßἫ¼π ¿ »«¼ÑßΓ¿Γ∞ óßÑ
- »ÑαÑñ »α«µÑñπα«⌐ Keep ó ú«½«ó¡«¼ ¼«ñπ½Ñ.
- Éáºπ¼ÑÑΓß∩, "Σπ¡¬µ¿Ñ⌐" DSeg Γ«ªÑ »«½∞º«óáΓ∞ß∩ ¡Ñ½∞º∩, Γᬠ¬á¬ ¡á
- ßἫ¼ ñÑ½Ñ φΓ« ¬«¡ßΓá¡Γá, ¬«Γ«αá∩ ß«ñÑαª¿Γ ßΓáα«Ñ º¡áτÑ¡¿Ñ áñαÑßá
- ¬«ñ«ó«ú« ßÑú¼Ñ¡Γá.
- àßΓ∞ ÑΘÑ «ñ¡« Γ«¡¬«Ñ ¼ÑßΓ«. Turbo-Pascal «ßπΘÑßΓó½∩ÑΓ »α¿ßóá¿óá¡¿Ñ
- ßΓαπ¬Γπα ¿ ßΓ᫬ ß »«¼«Θ∞ε »α«µÑñπαδ Move ¿º ¼«ñπ½∩ SYSTEM.
- æ½Ññ«óáΓѽ∞¡«, Γá¬«Ñ »α¿ßóá¿óá¡¿Ñ ¡Ññ«»πßΓ¿¼« ó αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿
- »α«úαá¼¼δ ¿ Ñú« ß½ÑñπÑΓ ºá¼Ñ¡¿Γ∞ ¡á ó맮ó »α«µÑñπαδ Move, ¡á»¿ßá¡¡«⌐
- éἿ:
-
- Type BigRecord = record
- A1 : word;
- S1 : string;
- ...
- end;{BigRecord}
- Var
- SourceRec,DestRec : BigRecord;
-
- ...
-
- procedure Move( VAR Source, Dest; Count : word );
- (* ä½∩ Γ«ú«, τΓ«íδ ¡Ñ ¿ß»«½∞º«óáΓ∞ move ¿º ¼«ñπ½∩ SYSTEM *)
-
- TYPE
- Bytes = array[1..MaxInt] of byte;
- VAR
- I : word;
- begin
-
- FOR I := 1 TO Count DO Bytes(Dest)[I] := Bytes(Source)[I];
-
- end;{Move}
-
- procedure MyRes; interrupt;
- begin
- ASM
- mov ax, cs : word ptr [BufferDS]
- mov ds,ax
- END;
-
- (* SourceRec := DestRec; {Æᬠó αѺ¿ñÑ¡Γ¡«⌐ πΓ¿½¿ΓÑ ñѽáΓ∞ ¡Ñ½∞º∩!} *)
-
- Move( SourceRec,DestRec, SizeOf( BigRecord ) ); {ìπª¡« ñѽáΓ∞ Γ«½∞¬« Γá¬}
-
- ...
-
- end;{MyRes}
-
-
-
-
- 4. Å«ß½Ñß½«ó¿Ñ.
-
-
- éßÑ ªÑ áóΓ«α ¡Ñ¼¡«ú« ßσ¿Γα¿½ - º¡á¡¿Ñ áßßѼí½Ñαá ªÑ½áΓѽ∞¡«? ê¡áτÑ
- ¬á¬ αẫíαáΓ∞ß∩ ó Ñú« á½ú«α¿Γ¼Ñ?
- ìÑΓ, ¼«ª¡« ¿ íѺ áßßѼí½Ñαá. è ßΓáΓ∞Ñ »α¿½áúáÑΓß∩ ñѼ«¡ßΓαᵿ«¡¡á∩
- »α«úαá¼¼á, ó ¬«Γ«α«⌐ »«¬áºá¡« ¿ß»«½∞º«óá¡¿Ñ óßÑσ «»¿ßá¡¡δσ óδΦÑ
- Γα嬫ó, á Γá¬ªÑ ñá¡δ ΓѬßΓδ ¡á¿í«½ÑÑ τáßΓ« π»«ΓαÑí¿¼δσ »α«µÑñπα Move,
- Sound ¿ NoSound ñ½∩ ¿ß»«½∞º«óá¡¿∩ ¿σ ó¼ÑßΓ« á¡á½«ú¿τ¡δσ ¿º ¼«ñπ½Ñ⌐
- SYSTEM ¿ CRT. üÑα¿ΓÑ φΓπ »α«úαá¼¼π ¿ ¿ß»«½∞ºπ⌐ΓÑ/¼«ñ¿Σ¿µ¿απ⌐ΓÑ íѺ
- «úαá¡¿τÑ¡¿⌐. ìáñÑεß∞, ó αѺπ½∞ΓáΓÑ éáΦ¿ αѺ¿ñÑ¡Γ¡δÑ »α«úαá¼¼δ ºá¼ÑΓ¡«
- »«σπñÑεΓ.
-
- ìπ á ¡á»«ß½Ññ«¬ - Γαáñ¿µ¿«¡¡δÑ í½áú«ñáα¡«ßΓ¿. æ»áß¿í« ºá Γ«, τΓ«
- ñ«τ¿Γ὿ ßΓáΓ∞ε ñ« ¬«¡µá, ñó«⌐¡«Ñ ß»áß¿í« Ñß½¿ ¿ß»«½∞ºπÑΓÑ ¼«⌐
- á½ú«α¿Γ¼ ó ßó«¿σ »α«úαá¼¼áσ ¿ óÑασ í½áú«ñáα¡«ßΓ¿ - Ñß½¿ ñáñ¿ΓÑ ¼¡Ñ
- º¡áΓ∞, τΓ« «¡ éá¼ »α¿ú«ñ¿½ß∩.
-
- æΓáΓ∞∩ ¡á»¿ßá¡á áóΓ«α«¼ á¡Γ¿ó¿απß¡«ú« »á¬ÑΓá é¿απß¡δ⌐ 﫬áΓ«α ¿
- ¡Ñ߬«½∞¬¿σ »α«úαá¼¼«¬ ºáΘ¿Γδ Σá⌐½«ó «Γ ºáαáªÑ¡¿∩, á ñ¿ß¬«ó «Γ »«ατ¿.
- é φΓ¿σ »α«úαá¼¼¬áσ ∩ ¿ß»«½∞º«óá½ «»¿ßá¡¡δÑ óδΦÑ ¿ñÑ¿.
-
- ùΓ«íδ ßó∩ºáΓ∞ß∩ ß« ¼¡«⌐, óδ߬áºáΓ∞ ßó«¿ ºá¼Ñτá¡¿∩ ¿ »«ªÑ½á¡¿∩,
- »«½πτ¿Γ∞ ßóѪπε óÑαß¿ε 﫬áΓ«αá ¿ Ñú« πΓ¿½¿Γ, ºó«¡¿ΓÑ »« Γѽ.
-
- (8-044) 266-70-28 (αáí«τ¿⌐ ΓѽÑΣ«¡)
-
- ¿½¿ »¿Φ¿ΓÑ »« áñαÑßπ:
-
- 252142 è¿Ñó-142, π½. æѼáΦ¬«, ñ. 10, ¬ó. 16
- ÿÑσ«óµ«óπ ǽѬßá¡ñαπ ïεñó¿ú«ó¿τπ