home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-01-04 | 479.3 KB | 11,172 lines |
-
- éδí¿αá⌐ΓÑ
- =================================================================
-
- ÇóΓ«α߬¿⌐ ¬«½½Ñ¬Γ¿ó "*.*"
- »«ñ απ¬«ó«ñßΓó«¼ ÄὫóá æ.ü.
-
-
-
- ÅÉÄâÉÇîîÇ-æÅÉÇéÄùìêè »« ß¿ßΓѼÑ
- »α«úαá¼¼¿α«óá¡¿∩ ÆôÉüÄ ÇææàîüïàÉ 2.0
-
- ÉôèÄéÄ俯éÄ ÅÄï£çÄéÇÆàïƒ
-
- #3/5 (â½áóδ 9-11, »α¿½«ªÑ¡¿∩)
-
-
- ú.î«ß¬óá, 1990 ú.
-
- =================================================================
-
- Äú½áó½Ñ¡¿Ñ
- TASM2 #3-5/䫬 = 1 =
-
- â½áóá 9. Éáºó¿Γ«Ñ »α«úαá¼¼¿α«óá¡¿Ñ ¡á Æπαí« ÇßßѼí½ÑαÑ..........6
- ÅαÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó............................6
- ǽ∞ΓÑα¡áΓ¿ó¡á∩ Σ«α¼á.........................................10
- è«úñá »αÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ¡Ñ αáí«ΓáεΓ.........10
- ä«ßΓπ» ¬ ¡Ñ߬«½∞¬¿¼ ßÑú¼Ñ¡Γá¼................................12
- 﫬á½∞¡δÑ ¼ÑΓ¬¿..............................................13
- ÇóΓ«¼áΓ¿τÑ߬«Ñ ¡áº¡áτÑ¡¿Ñ αẼÑαá »ÑαÑσ«ñá...................18
- æß佬¿ ó»ÑαÑñ ¡á ¬«ñ ¿ ñá¡¡δÑ................................23
- êß»«½∞º«óá¡¿Ñ í½«¬«ó »«óΓ«αÑ¡¿∩ ¿ ¼á¬α«¬«¼á¡ñ................28
- ü½«¬¿ »«óΓ«αÑ¡¿∩.............................................28
- ü½«¬¿ »«óΓ«αÑ¡¿∩ ¿ »áαá¼ÑΓαδ-»ÑαѼѡ¡δÑ......................31
- îá¬α«¬«¼á¡ñδ.................................................32
- 齫ªÑ¡¡δÑ ¼á¬α«¬«¼á¡ñδ.......................................39
- îá¬α«¬«¼á¡ñδ ¿ πß½«ó¿∩.......................................40
- çáóÑαΦÑ¡¿Ñ ¼á¬α«αáßΦ¿αÑ¡¿∩ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EXITM.........42
- Ä»αÑñѽѡ¿Ñ ¼ÑΓ«¬ ß »«¼«Θ∞ε ¼á¬α«¬«¼á¡ñ......................43
- Éáºó¿ΓδÑ ßΓαπ¬Γπαδ ñá¡¡δσ....................................45
- ä¿αÑ¬Γ¿óá STRUC..............................................46
- ìÑñoßΓáΓ¬¿ ¿ »αÑ¿¼πΘÑßΓóá ¿ß»«½∞º«óá¡¿∩ ñ¿αÑ¬Γ¿óδ STRUC......51
- ô¡¿¬á½∞¡δÑ ¿¼Ñ¡á »«½Ñ⌐ ßΓαπ¬Γπα..............................52
- 齫ªÑ¡¡δÑ ßΓαπ¬Γπαδ..........................................53
- ê¡¿µ¿á½¿ºáµ¿∩ ßΓαπ¬Γπα.......................................54
- ä¿αÑ¬Γ¿óá RECORD.............................................56
- ä«ßΓπ» ¬ ºá»¿ß∩¼.............................................58
- Ä»Ñαᵿ∩ WITH................................................61
- Ä»Ñαᵿ∩ MASK................................................62
- ä½∩ τÑú« ¿ß»«½∞ºπεΓß∩ ºá»¿ß¿?................................64
- ä¿αÑ¬Γ¿óá UNION..............................................67
- ä¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó..............................71
- ä¿αÑ¬Γ¿óá SEGMENT............................................72
- Å«½∩ "¿¼∩" ¿ "óδαáó¡¿óá¡¿Ñ"..................................72
- Å«½Ñ "¬«¼í¿¡¿α«óá¡¿Ñ"........................................73
- ìạáτÑ¡¿Ñ »«½Ñ⌐ "¿ß»«½∞º«óá¡¿Ñ" ¿ "¬½áßß"...................75
- ÉẼÑα, Γ¿», ¿¼∩ ¿ πα«óÑ¡∞ 󽫪ѡ¡«ßΓ¿ ßÑú¼Ñ¡Γá..............75
- Å«α∩ñ«¬ ßÑú¼Ñ¡Γ«ó............................................78
- ä¿αÑ¬Γ¿óá GROUP..............................................80
- ä¿αÑ¬Γ¿óá ASSUME.............................................83
- ô»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó...................87
- Åα¿¼Ñα »α«úαá¼¼δ, ß«ßΓ«∩ΘÑ⌐ ¿º ¡Ñ߬«½∞¬¿σ ßÑú¼Ñ¡Γ«ó..........93
- â½áóá 10. Åα«µÑßß«α 80386 ¿ ñαπú¿Ñ »α«µÑßß«αδ..................98
- éδí«α ó »α«úαá¼¼Ñ ¡á ÇßßѼí½ÑαÑ Γ¿»á »α«µÑßß«αá..............98
- Åα«µÑßß«αδ 80186 ¿ 80188.....................................99
- ÉáºαÑΦÑ¡¿Ñ áßßÑ¼í½¿α«óá¡¿∩ ñ½∩ »α«µÑßß«αá 80186.............101
- ì«óδÑ ¿¡ßΓαπ¬µ¿¿............................................101
- ê¡ßΓαπ¬µ¿¿ PUSHA ¿ POPA.....................................101
- ê¡ßΓαπ¬µ¿¿ ENTER ¿ LEAVE....................................103
-
- TASM2 #3-5/䫬 = 2 =
-
- ê¡ßΓαπ¬µ¿∩ BOUND............................................105
- ê¡ßΓαπ¬µ¿¿ INS ¿ OUTS.......................................107
- ÉáßΦ¿αÑ¡¡δÑ óÑαß¿¿ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086...............109
- çá¡ÑßÑ¡¿Ñ ó ßΓѬ »α«¼ÑªπΓ«τ¡δσ º¡áτÑ¡¿⌐.....................109
- æñó¿ú¿ ¿ µ¿¬½¿τÑ߬¿Ñ ßñó¿ú¿ c ¡Ñ»«ßαÑñßΓóÑ¡¡δ¼¿ º¡áτÑ¡¿∩¼¿..110
- ô¼¡«ªÑ¡¿Ñ ¡á ¡Ñ»«ßαÑñßΓóÑ¡¡«Ñ º¡áτÑ¡¿Ñ......................110
- Åα«µÑßß«α 80286.............................................113
- ÇßßÑ¼í½¿α«óá¡¿∩ ß ¿ß»«½∞º«ó᡿Ѽ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá
- 80286......................................................115
- Åα«µÑßß«α 80386.............................................116
- éδí«α αѪ¿¼á áßßÑ¼í½¿α«óá¡¿∩ ñ½∩ »α«µÑßß«αá 80386...........116
- ì«óδÑ Γ¿»δ ßÑú¼Ñ¡Γ«ó........................................118
- ô»α«ΘÑ¡¡δÑ ßÑú¼Ñ¡Γ¡δÑ ñ¿αÑ¬Γ¿óδ ¿ Γ¿»δ ßÑú¼Ñ¡Γ«ó ñ½∩ 80386..123
- 48-í¿Γ«óδ⌐ Γ¿» ñá¡¡δσ FWORD.................................123
- ì«óδÑ αÑú¿ßΓαδ..............................................127
- 32-αáºα∩ñ¡δÑ «íΘ¿Ñ αÑú¿ßΓαδ.................................130
- 32-αáºα∩ñ¡δ⌐ αÑú¿ßΓα Σ½áú«ó.................................132
- 32-αáºα∩ñ¡δ⌐ π¬áºáΓѽ∞ ¿¡ßΓαπ¬µ¿⌐...........................132
- ì«óδÑ ßÑú¼Ñ¡Γ¡δÑ αÑú¿ßΓαδ...................................134
- ì«óδÑ αѪ¿¼δ áñαÑßᵿ¿......................................135
- ì«óδÑ ¿¡ßΓαπ¬µ¿¿............................................142
- Åα«óÑα¬á í¿Γ................................................142
- Åα«ß¼«Γα í¿Γ«ó..............................................144
- ÅÑαѼÑΘÑ¡¿Ñ ñá¡¡δσ ß αáßΦ¿αÑ¡¿Ñ¼ »« º¡á¬π ¿½¿ ¡π½ε..........146
- ÅαÑ«íαẫóá¡¿Ñ ñá¡¡δσ Γ¿»á DWORD ¿½¿ QWORD..................148
- æñó¿ú ¡Ñ߬«½∞¬¿σ ß½«ó.......................................149
- ôß½«ó¡á∩ πßΓá¡«ó¬á í¿Γ......................................151
- çáúαπº¬á αÑú¿ßΓα«ó SS, FS ¿ GS..............................153
- ÉáßΦ¿αÑ¡¡δÑ ¿¡ßΓαπ¬µ¿¿......................................155
- æ»Ñµ¿á½∞¡δÑ óÑαß¿¿ ¿¡ßΓαπ¬µ¿¿ MOV...........................155
- 32-αáºα∩ñ¡δÑ óÑαß¿¿ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086..............157
- ì«óδÑ óÑαß¿¿ ¿¡ßΓαπ¬µ¿⌐ LOOP ¿ JCXZ.........................157
- ì«óδÑ óÑαß¿¿ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐...........................160
- ê¡ßΓαπ¬µ¿∩ IRETD............................................162
- ê¡ßΓαπ¬µ¿¿ PUSHFD ¿ POPFD...................................162
- ê¡ßΓαπ¬µ¿¿ PUSHAD ¿ POPAD...................................162
- ì«óδÑ óÑαß¿¿ ¿¡ßΓαπ¬µ¿¿ IMUL................................163
- ùÑαÑñ«óá¡¿Ñ 16-αáºα∩ñ¡δσ ¿ 32-αáºα∩ñ¡δσ ¿¡ßΓαπ¬µ¿⌐ ¿
- ßÑú¼Ñ¡Γ«ó..................................................164
- Åα¿¼Ñα Σπ¡¬µ¿¿ ñ½∩ »α«µÑßß«αá 80386.........................167
- æ«»α«µÑßß«α 80287...........................................173
- æ«»α«µÑßß«α 80387...........................................173
- â½áóá 11. ô½πτΦÑ¡¡δ⌐ αѪ¿¼ Æπαí« ÇßßѼí½Ñαá...................175
- ùΓ« Γá¬«Ñ π½πτΦÑ¡¡δ⌐ αѪ¿¼?.................................175
- ä½∩ τÑú« ¿ß»«½∞ºπÑΓß∩ π½πτΦÑ¡¡δ⌐ αѪ¿¼?.....................176
-
- TASM2 #3-5/䫬 = 3 =
-
- ÅÑαѬ½ετÑ¡¿Ñ ó π½πτΦÑ¡¡δ⌐ αѪ¿¼ ¿ óδσ«ñ ¿º ¡Ñú«.............177
- ÄΓ½¿τ¿∩ π½πτΦÑ¡¡«ú« αѪ¿¼á ¿ αѪ¿¼á MASM....................179
- ïѬßѼδ π½πτΦÑ¡¡«ú« αѪ¿¼á..................................179
- ïѬßѼδ-¿ñÑ¡Γ¿Σ¿¬áΓ«αδ......................................179
- äπí½¿α«óá¡¿Ñ ¿¼Ñ¡ φ½Ñ¼Ñ¡Γ«ó.................................180
- ïѬßѼδ, »αÑñßΓáó½∩εΘ¿Ñ ß«í«⌐ τ¿ß½á ß »½áóáεΘÑ⌐ Γ«τ¬«⌐......182
- ÆÑ¬ßΓ«óδÑ ¿ τ¿ß½«óδÑ »α¿ßóá¿óá¡¿∩ (ñ¿αÑ¬Γ¿óδ EQU ¿ =).......182
- éδαáªÑ¡¿∩ ¿ «»Ñαá¡ñδ........................................183
- Ä»Ñαᵿ∩ ¬óáñαáΓ¡δσ ߬«í«¬ []...............................183
- Åα¿¼Ñαδ «»Ñαá¡ñ«ó...........................................184
- Ä»Ñαᵿ¿....................................................186
- Æ«τ¬¿ ó φ½Ñ¼Ñ¡Γáσ ßΓαπ¬Γπαδ.................................186
- ô¬áºáΓѽ¿ ¡á ßΓαπ¬Γπαδ......................................188
- Ä»Ñαᵿ∩ SYMTYPE............................................189
- Ä»Ñαᵿ¿ HIGH ¿ LOW.........................................189
- ìÑ«í∩ºáΓѽ∞¡á∩ «»Ñαᵿ∩ PTR.................................190
- Ä»Ñαᵿ∩ SIZE...............................................190
- ä¿αÑ¬Γ¿óδ...................................................192
- ô»αáó½Ñ¡¿Ñ ½¿ßΓ¿¡ú«¼........................................192
- ä¿αÑ¬Γ¿óδ, ¡áτ¿¡áεΘ¿Ñß∩ ß Γ«τ¬¿.............................193
- ÄíαáΓ¡δ⌐ »«α∩ñ«¬ ¿¼Ñ¡¿ ñ¿αÑ¬Γ¿óδ ¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá...........194
- çᬽετÑ¡¡δÑ ó ¬áóδτ¬¿ ßΓ᫬¿, ∩ó½∩εΘ¿Ñß∩ áαúπ¼Ñ¡ΓἿ
- ñ¿αÑ¬Γ¿ó...................................................196
- æÑú¼Ñ¡Γδ ¿ úαπ»»δ...........................................196
- ä«ßΓπ» ¬ ñá¡¡δ¼ ó ßÑú¼Ñ¡ΓÑ, »α¿¡áñ½ÑªáΘѼ úαπ»»Ñ............196
- Ä»αÑñѽѡ¿Ñ ó ¬«ñÑ í½¿ª¡¿σ ¿ ñá½∞¡¿σ ¼ÑΓ«¬..................199
- é¡ÑΦ¡¿Ñ, «íΘÑñ«ßΓπ»¡δÑ ¿ ú½«íá½∞¡δÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ..........200
- äαπú¿Ñ «Γ½¿τ¿∩..............................................202
- Å«ñáó½Ñ¡¿Ñ ¬«ααÑ¬Γ¿α«ó«¬....................................202
- Ä»Ñαá¡ñ ¿¡ßΓαπ¬µ¿¿ BOUND....................................202
- 諼¼Ñ¡Γáα¿¿ ó ¼á¬α«¬«¼á¡ñáσ.................................203
- 﫬á½∞¡δÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ....................................204
- æαáó¡Ñ¡¿Ñ »α«úαá¼¼¿α«óá¡¿∩ ó αѪ¿¼Ñ MASM ¿ ó π½πτΦÑ¡¡«¼
- αѪ¿¼Ñ.....................................................204
- Åα¿¼Ñα »α«úαá¼¼δ ó αѪ¿¼Ñ MASM..............................204
- Åα¿¼Ñα »α«úαá¼¼δ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ........................206
- ǡ὿º αѪ¿¼á MASM ¿ π½πτΦÑ¡¡«ú« αѪ¿¼á.....................208
- ï¿ΓÑαáΓπαá..................................................211
- Åα¿½«ªÑ¡¿Ñ A. ê¡ΓÑαΣÑ⌐ß Æπαí« ÇßßѼí½Ñαá ¿ Æπαí« üÑ⌐ß¿¬á......212
- ÅÑαÑñáτá »áαá¼ÑΓα«ó.........................................213
- ÅÑαѼѡ¡δÑ, ¡áσ«ñ∩Θ¿Ñß∩ ó¡Ñ ΓѬπΘÑú« ßÑú¼Ñ¡Γá ñá¡¡δσ........216
- Æ¿» «»ÑαáΓ«αá CALL..........................................216
- êºó½ÑτÑ¡¿Ñ ¿º ßΓѬá.........................................217
- 櫺ñá¡¿Ñ »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ ñ½∩ Æπαí« üÑ⌐ß¿¬á..........219
- é맮ó óßΓα«Ñ¡¡«⌐ »α«µÑñπαδ ÇßßѼí½Ñαá.......................219
- ÉẼÑΘÑ¡¿Ñ »«ñ»α«úαá¼¼δ Æπαí« üÑ⌐ß¿¬á ó »á¼∩Γ¿..............223
-
- TASM2 #3-5/䫬 = 4 =
-
- "æ¬αδΓδÑ" ßΓ᫬¿............................................224
- Ä»ÑαáΓ«α CALL ABSOLUTE......................................226
- ÄíαáΘÑ¡¿Ñ CALL ABSOLUTE ¬ Σ¿¬ß¿α«óá¡¡δ¼ áñαÑßá¼ »á¼∩Γ¿......228
- ÄíαáΘÑ¡¿Ñ CALL ABSOLUTE ¬ ñαπú¿¼ áñαÑßá¼ »á¼∩Γ¿.............229
- äαπú¿Ñ »α«í½Ñ¼δ, 󫺡¿¬áεΘ¿Ñ »α¿ ¿ß»«½∞º«óá¡¿¿ CALL
- ABSOLUTE...................................................231
- CALL INTERRUPT..............................................231
- Åα¿¼Ñα »α«úαá¼¼δ............................................234
- Åα¿½«ªÑ¡¿Ñ B. ê¡ΓÑαΣÑ⌐ß Æπαí« ÇßßѼí½Ñαá ß Æπαí« Åα«½«ú«¼.....237
- ÄíΩ∩ó½Ñ¡¿Ñ ó¡ÑΦ¡¿σ »αÑñ¿¬áΓ«ó...............................237
- æ«ú½áΦÑ¡¿∩ »« ó맮óπ ¿ »áαá¼ÑΓαδ............................237
- æ«ú½áΦÑ¡¿∩ »« ¿¼Ñ¡á¼........................................239
- Éáºαáí«Γ¬á »αÑñ¿¬áΓ«ó ¡á ÇßßѼí½ÑαÑ.........................240
- ÉÑ὿ºáµ¿∩ »αÑñ¿¬áΓá double.................................243
- ÉÑ὿ºáµ¿∩ »αÑñ¿¬áΓ«ó ß ¡Ñ߬«½∞¬¿¼¿ »«Γ«¬á¼¿ óó«ñá-óδó«ñá...247
- é맮ó »αÑñ¿¬áΓ«ó Æπαí« Åα«½«úá ¿º Σπ¡¬µ¿⌐ ÇßßѼí½Ñαá........249
- 滿߬¿ ¿ Σπ¡¬Γ«αδ...........................................252
- Åα¿½«ªÑ¡¿Ñ C. ÄΓóÑΓδ ¡á «íΘ¿Ñ ó«»α«ßδ.........................256
-
- TASM2 #3-5/䫬 = 5 =
-
- =================================================================
-
- ÇóΓ«α߬¿⌐ ¬«½½Ñ¬Γ¿ó "*.*"
- »«ñ απ¬«ó«ñßΓó«¼ ÄὫóá æ.ü.
-
-
-
- ÅÉÄâÉÇîîÇ-æÅÉÇéÄùìêè »« ß¿ßΓѼÑ
- »α«úαá¼¼¿α«óá¡¿∩ ÆôÉüÄ ÇææàîüïàÉ 2.0
-
- ÉôèÄéÄ俯éÄ ÅÄï£çÄéÇÆàïƒ
-
- #3/5 (â½áóδ 9-11, »α¿½«ªÑ¡¿∩)
-
-
-
-
- ú.î«ß¬óá, 1990 ú.
-
- =================================================================
-
- TASM2 #3-5/䫬 = 6 =
-
- â½áóá 9. Éáºó¿Γ«Ñ »α«úαá¼¼¿α«óá¡¿Ñ ¡á Æπαí« ÇßßѼí½ÑαÑ
- -----------------------------------------------------------------
-
- é »αÑñδñπΘ¿σ ó«ß∞¼¿ ú½áóáσ ñá¡¡«ú« απ¬«ó«ñßΓóá ¼δ αáß߬áºá½¿
- « ßπΘ¡«ßΓ¿ »α«úαá¼¼¿α«óá¡¿∩ ¡á ÇßßѼí½ÑαÑ. ÆÑ»Ñα∞ óδ ú«Γ«óδ ¬
- Γ«¼π, τΓ«íδ «º¡á¬«¼¿Γ∞ß∩ ß ¡Ñ¬«Γ«α묨 αáºó¿Γ묨 ßαÑñßΓóἿ Æπαí«
- ÇßßѼí½Ñαá.
-
- é ñá¡¡«⌐ ú½áóÑ ¼δ ¿ßß½ÑñπѼ ¡Ñ߬«½∞¬« áß»Ñ¬Γ«ó »α«úαá¼¼¿α«-
- óá¡¿∩ ¡á ÇßßѼí½ÑαÑ, ¬«Γ«αδÑ ¼δ αá¡ÑÑ Γ«½∞¬« ß½Ñú¬á ºáΓα«¡π½¿. è
- ¡¿¼ «Γ¡«ß∩Γß∩ »αÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, ¼á¬α«¬«¼á¡ñδ,
- ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ¿ αáºαáí«Γ¬á »α«úαá¼¼, ß«ñÑαªáΘ¿σ
- ¡Ñ߬«½∞¬« ßÑú¼Ñ¡Γ«ó ¬«ñá ¿ ñá¡¡δσ. îδ αáßß¼«Γα¿¼ Γá¬ªÑ ¡Ñ¬«Γ«αδÑ
- »«½Ñº¡δÑ ßαÑñßΓóá, ß ¬«Γ«α묨 óδ αá¡ÑÑ ¡Ñ óßΓαÑτ὿ß∞, ó¬½ετá∩
- ½«¬á½∞¡δÑ ¼ÑΓ¬¿, áóΓ«¼áΓ¿τÑ߬«Ñ ¡áº¡áτÑ¡¿Ñ αẼÑα«ó »ÑαÑσ«ñ«ó,
- «»ÑαѪáεΘ¿Ñ ßß佬¿ ¿ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßΓαπ¬Γπα ñá¡¡δσ.
-
- ò«Γ∩ ¼δ »«º¡á¬«¼¿½¿ óáß ß «ß¡«óἿ »α«úαá¼¼¿α«óá¡¿∩ ¡á Çß-
- ßѼí½ÑαÑ ¿ αáßß¼«Γα¿¼ ó ñá¡¡«⌐ ú½áóÑ ¡Ñ¬«Γ«αδÑ ΓѼδ αáºó¿Γ«ú«
- ("»α«ñó¿¡πΓ«ú«") »α«úαá¼¼¿α«óá¡¿∩, ¼δ, ¬«¡Ñτ¡«, ¡Ñ «σóáΓ¿½¿ φΓ¿¼
- óßÑ á߻ѬΓδ »α«úαá¼¼¿α«óá¡¿∩ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá. é ¬«¡µÑ ñá¡¡«⌐
- ¬¡¿ú¿ ¼δ »αÑñ½áúáѼ ¡Ñ߬«½∞¬« ¬¡¿ú »« »α«úαá¼¼¿α«óá¡¿ε ¡á ÇßßѼí-
- ½ÑαÑ ¿ ¡áñÑѼß∩, τΓ« óδ ñ«ßΓá¡ÑΓÑ «ñ¡π ¿º ¡¿σ ¿ »α«ñ«½ª¿ΓÑ ßἫß-
- Γ«∩Γѽ∞¡«Ñ ¿ºπτÑ¡¿Ñ ÇßßѼí½Ñαá.
-
- åѽáѼ πß»Ñσá!
-
- ÅαÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó
- -----------------------------------------------------------------
-
- ùáΘÑ óßÑú« «»Ñαá¡ñδ ó »á¼∩Γ¿ «»αÑñѽ∩εΓ ∩τÑ⌐¬¿ »á¼∩Γ¿ ó ßÑú-
- ¼Ñ¡ΓÑ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα DX. ìá»α¿¼Ñα, »«ß½Ññ«óáΓѽ∞-
- ¡«ßΓ∞ ¿¡ßΓαπ¬µ¿⌐:
-
- .
- .
- .
- mov bx,10h
- mov si,5
- mov ax,[bx+si+1]
- .
- .
- .
-
- ºáúαπªáÑΓ ó αÑú¿ßΓα AX ß½«ó«, ºá»¿ßá¡¡«Ñ »« ß¼ÑΘÑ¡¿ε 16 ó ßÑú¼Ñ¡-
-
- TASM2 #3-5/䫬 = 7 =
-
- ΓÑ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα DS. äαπú«⌐ ß»«ß«í ßñѽáΓ∞ φΓ«
- ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ π¬áºáΓ∞, τΓ« AX ºáúαπªáÑΓß∩ ¿º ∩τÑ⌐¬¿ »á¼∩Γ¿
- »« áñαÑßπ DS:0016.
-
- Äñ¡« ¿º ¿ß¬½ετÑ¡¿⌐ ¿º »αáó¿½á ºáúαπº¬¿ ¿º ßÑú¼Ñ¡Γá, ¡á ¬«Γ«-
- αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα DS, ß«ßΓ«¿Γ ó Γ«¼, τΓ« ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿
- STOS ¿ MOVS óδ»«½¡∩εΓ ºá»¿ß∞ ó ßÑú¼Ñ¡Γ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑ-
- ú¿ßΓα ES, á ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ SCAS ¿ CMPS ¿ß»«½∞ºπεΓ ó ¬áτÑßΓ-
- óÑ ¿ßΓ«τ¡¿¬á «»Ñαá¡ñ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα ES. (Äñ¿¡ ¿º
- «»Ñαá¡ñ«ó-¿ßΓ«τ¡¿¬«ó ¿¡ßΓαπ¬µ¿¿ CMPS ¡áσ«ñ¿Γß∩ ó ßÑú¼Ñ¡ΓÑ ñá¡¡δσ,
- á ñαπú«⌐ - ó ñ«»«½¡¿Γѽ∞¡«⌐ ßÑú¼Ñ¡ΓÑ.)
-
- äαπú«Ñ ¿ß¬½ετÑ¡¿Ñ ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ« ½εí«⌐ «»Ñαá¡ñ ó »á-
- ¼∩Γ¿, ¿ß»«½∞ºπεΘ¿⌐ αÑú¿ßΓα BP, «íαáΘáÑΓß∩ ¬ ßÑú¼Ñ¡Γπ, ¡á ¬«Γ«αδ⌐
- π¬áºδóáÑΓ αÑú¿ßΓα SS. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- mov bp,100h
- mov al,[bp+6]
- .
- .
- .
-
- ºáúαπªáεΓ αÑú¿ßΓα AL ß«ñÑন¼δ¼ ∩τÑ⌐¬¿ »á¼∩Γ¿ SS:1006.
-
- ÅαÑñ»«½«ª¿¼, «ñ¡á¬«, τΓ« óδ σ«Γ¿ΓÑ «íαáΓ¿Γ∞ß∩, ¬á¬ ¬ «»Ñαá¡-
- ñπ ó »á¼∩Γ¿, ¬ ∩τÑ⌐¬Ñ ó ßÑú¼Ñ¡ΓÑ, «»αÑñѽ∩Ѽ«¼ αÑú¿ßΓα«¼ CS (φΓ«
- »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ Γáí½¿µ »ÑαÑσ«ñá, «ß«íÑ¡¡« ó »α«úαá¼¼áσ,
- ß«ßΓ«∩Θ¿σ ¿º ¡Ñ߬«½∞¬¿σ ßÑú¼Ñ¡Γ«ó). 꽿 »αÑñ»«½«ª¿¼, τΓ« σ«Γѽ¿
- íδ »«½πτ¿Γ∞ ñ«ßΓπ» ¬ ∩τÑ⌐¬Ñ ßΓѬá ß »«¼«Θ∞ε αÑú¿ßΓαá BX, ¿½¿ ¬
- ∩τÑ⌐¬Ñ ßÑú¼Ñ¡Γá, «»αÑñѽ∩Ѽ«ú« αÑú¿ßΓα«¼ DS, ß »«¼«Θ∞ε BP, ½¿í« ¬
- ∩τÑ⌐¬Ñ ßÑú¼Ñ¡Γá, ºáñáóáѼ«ú« αÑú¿ßΓα«¼ ES, ß »«¼«Θ∞ε ¡ÑßΓ᫬«ó«⌐
- ¿¡ßΓαπ¬µ¿¿. ¡« ½¿ φΓ« ßñѽáΓ∞?
-
- ÄΓóÑΓ¿Γ∞ ¼«ª¡« »«½«ª¿Γѽ∞¡«. ä½∩ ñ«ßΓπ»á ó« ¼¡«ú¿σ ¿¡ßΓαπ¬-
- µ¿∩σ ¬ ¡πª¡δ¼ óá¼ ßÑú¼Ñ¡Γá¼ óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ »αÑΣ¿¬ßδ »ÑαÑ-
- «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- mov bx,100h
- mov cl,ss:[bx+10h]
- .
-
- TASM2 #3-5/䫬 = 8 =
-
- .
- .
-
- ºáúαπªáεΓ αÑú¿ßΓα CL ß«ñÑন¼δ¼ »« ß¼ÑΘÑ¡¿ε 110h ó ßÑú¼Ñ¡ΓÑ ßΓÑ-
- ¬á, á ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- mov bp,200h
- mov si,cs:[bp+1]
- .
- .
- .
-
- ºáúαπªáεΓ αÑú¿ßΓα SI ß«ñÑন¼δ¼ »« ß¼ÑΘÑ¡¿ε 201h ó ßÑú¼Ñ¡ΓÑ ¬«ñá.
-
- é «ß¡«ó¡«¼ óßÑ, τΓ« ΓαÑíπÑΓß∩, τΓ«íδ ñá¡¡á∩ ¿¡ßΓαπ¬µ¿∩ «íαá-
- Θá½áß∞ ¬ ßÑú¼Ñ¡Γπ, «Γ½¿τ¡«¼π «Γ ¿ß»«½∞ºπѼ«ú« »« π¼«½τá¡¿ε ßÑú-
- ¼Ñ¡Γá, - φΓ« π¬áºá¡¿Ñ »ÑαÑñ «»Ñαá¡ñ«¼ »á¼∩Γ¿ ó φΓ«⌐ ¿¡ßΓαπ¬µ¿¿
- »αÑΣ¿¬ßá »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá: CS:, DS:, ES: ¿½¿ SS:.
-
- îѪñπ »α«τ¿¼, »αÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ¡á ßἫ¼
- ñÑ½Ñ ¡Ñ ∩ó½∩εΓß∩ "»αÑΣ¿¬ßἿ", Γᬠ¬á¬ «¡¿ »αÑñΦÑßΓóπεΓ ó ßΓ᫬Ñ
- ¿¡ßΓαπ¬µ¿¿ «»Ñαá¡ñá¼ ó »á¼∩Γ¿. ÅαÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá ó
- ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ »αÑñßΓáó½∩ÑΓ ß«í«⌐ »αÑΣ¿¬ß¡δ⌐ íá⌐Γ ¿¡ßΓαπ¬µ¿¿,
- ¬«Γ«αδ⌐ ¼«ñ¿Σ¿µ¿απÑΓ αáí«Γπ ¿¡ßΓαπ¬µ¿¿ (¬á¬ ¿ »αÑΣ¿¬ß REP, « ¬«-
- Γ«α«¼ ¼δ αáß߬áºδó὿ ó â½áóÑ 6). Å«φΓ«¼π, ¡á»α¿¼Ñα, ¬«úñá »α«-
- µÑßß«α 8086 óßΓαÑτáÑΓ íá⌐Γδ:
-
- A0 00 00
-
- ¬«Γ«αδÑ «íαáºπεΓ ¿¡ßΓαπ¬µ¿ε:
-
- mov al,[0]
-
- «¡ ºáúαπªáÑΓ ó αÑú¿ßΓα AL ß«ñÑন¼«Ñ, αáß»«½«ªÑ¡¡«Ñ »« ß¼ÑΘÑ¡¿ε 0
- ó ßÑú¼Ñ¡Γá ñá¡¡δσ. Äñ¡á¬«, »«ß¬«½∞¬π º¡áτÑ¡¿Ñ¼ »αÑΣ¿¬ßá »ÑαÑ«»αÑ-
- ñѽѡ¿∩ ßÑú¼Ñ¡Γá ES: ∩ó½∩ÑΓß∩ 26h, ¬«úñá »α«µÑßß«α 8086 óßΓαÑτáÑΓ
- »«ß½Ññ«óáΓѽ∞¡«ßΓ∞:
-
- 26 A0 00 00
-
- ¬«Γ«αá∩ «íαáºπÑΓ ¿¡ßΓαπ¬µ¿ε:
-
- mov al,es:[0]
-
- TASM2 #3-5/䫬 = 9 =
-
-
- «¡ ºáúαπªáÑΓ ó αÑú¿ßΓα AL ß«ñÑন¼«Ñ »« ß¼ÑΘÑ¡¿ε 0 ó ñ«»«½¡¿Γѽ∞-
- ¡«¼ ßÑú¼Ñ¡ΓÑ (extra segment), á ¡Ñ ó ßÑú¼Ñ¡ΓÑ ñá¡¡δσ.
-
-
-
-
- TASM2 #3-5/䫬 = 10 =
-
- ǽ∞ΓÑα¡áΓ¿ó¡á∩ Σ«α¼á
- -----------------------------------------------------------------
-
- Æπαí« ÇßßѼí½Ñα »«ññÑনóáÑΓ á½∞ΓÑα¡áΓ¿ó¡πε Σ«α¼π »αÑΣ¿¬ßá
- »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá, ¬«úñá φëà »αÑΣ¿¬ß αẼÑΘáÑΓß∩ ¡á «Γ-
- ñѽ∞¡«⌐ ßΓ᫬Ñ. ¥Γá Σ«α¼á ¿¼ÑÑΓ ó¿ñ SEGCS ñ½∩ »αÑΣ¿¬ßá »ÑαÑ«»αÑ-
- ñѽѡ¿∩ ßÑú¼Ñ¡Γá CS:, SEGDS - ñ½∩ »αÑΣ¿¬ßá »ÑαÑ«»αÑñѽѡ¿∩ ßÑú-
- ¼Ñ¡Γá DS:, SEGES - ñ½∩ »αÑΣ¿¬ßá »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá ES: ¿
- SEGSS - ñ½∩ »αÑΣ¿¬ßá »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá SS:. èáªñδ⌐ ¿º ¡¿σ
- ñÑ⌐ßΓóπÑΓ Γ«½∞¬« ¡á ß½ÑñπεΘπε ßΓ᫬𠬫ñá, á ¡Ñ ¡á óßÑ »«ß½Ññπε-
- Θ¿Ñ ßΓ᫬¿. ìá»α¿¼Ñα, ß½ÑñπεΘ¿Ñ ¿¡ßΓαπ¬µ¿¿ ºá»¿ßδóáεΓ ß«ñÑন¼«Ñ
- αÑú¿ßΓαá DX »« ß¼ÑΘÑ¡¿ε 999h ó ñ«»«½¡¿Γѽ∞¡«¼ ßÑú¼Ñ¡ΓÑ:
-
- .
- .
- .
- mov si,999h
- seges
- mov [si],dx
- .
- .
- .
-
- ¥Γπ á½∞ΓÑα¡áΓ¿ó¡πε Σ«α¼π »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ π¬áºá¡¿∩
- »αÑΣ¿¬ß«ó »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ó ¿¡ßΓαπ¬µ¿∩σ, ¡Ñ ¿¼ÑεΘ¿σ
- «»Ñαá¡ñá (¡á»α¿¼Ñα, LODSB). ìá»α¿¼Ñα, ñá½ÑÑ αÑú¿ßΓα AL ºáúαπªáÑΓ-
- ß∩ ¿º SS:SI:
-
- .
- .
- .
- segss
- lodsb
- .
- .
- .
-
- è«úñá »αÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ¡Ñ αáí«ΓáεΓ
- -----------------------------------------------------------------
-
- ÅαÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó αáí«ΓáεΓ ¡Ñ ó« óßÑσ ¿¡ßΓ-
- απ¬µ¿∩σ. ìá»α¿¼Ñα, ¿σ ¡Ñ½∞º∩ ¿ß»«½∞º«óáΓ∞ ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ
- »α¿ «íαáΘÑ¡¿¿ ¬ ñ«»«½¡¿Γѽ∞¡«¼π ßÑú¼Ñ¡Γπ, Γ« ÑßΓ∞ ¿¡ßΓαπ¬µ¿∩:
-
- lods es:[ByteVar]
-
- TASM2 #3-5/䫬 = 11 =
-
-
- ñ«»πßΓ¿¼á, á ¿¡ßΓαπ¬µ¿∩:
-
- stos ds:[ByteVar]
-
- αáí«ΓáΓ∞ ¡Ñ íπñÑΓ. àß½¿ óδ »δΓáÑΓÑß∞ »ÑαÑ«»αÑñѽ¿Γ∞ π¬áºá¡¡δ¼ «í-
- αẫ¼ «íαáΘÑ¡¿Ñ ó ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ ¬ ñ«»«½¡¿Γѽ∞¡«¼π ßÑú¼Ñ¡-
- Γπ, Γ« Æπαí« ÇßßѼí½Ñα ß««íΘ¿Γ óá¼, τΓ« φΓ« ¡Ññ«»πßΓ¿¼«. Äñ¡á¬«,
- Ñß½¿ óδ ñ½∩ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá ¿ß»«½∞ºπÑΓÑ »αÑΣ¿¬ß SEGCS
- ¿½¿ á¡á½«ú¿τ¡δ⌐, Γ« Æπαí« ÇßßѼí½Ñα ¡Ñ º¡áÑΓ, ¬á¬πε ¿¡ßΓαπ¬µ¿ε óδ
- σ«Γ¿ΓÑ »ÑαÑ«»αÑñѽ¿Γ∞, ¿ ó φΓ«¼ ß½πτáÑ «Φ¿í¬π ¡Ñ úÑ¡Ñα¿απÑΓ. ìá»-
- α¿¼Ñα, ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- segds
- stosb
- .
- .
- .
-
- ¡Ñ »α¿óÑñπΓ ¬ úÑ¡Ñαᵿ¿ «Φ¿í¬¿, ¡« ¿¡ßΓαπ¬µ¿∩ STOSB íπñÑΓ óδ»«½-
- ¡∩Γ∞ ºá»¿ß∞ ó ñ«»«½¡¿Γѽ∞¡δ⌐ ßÑú¼Ñ¡Γ, á ¡Ñ ó ßÑú¼Ñ¡Γ ñá¡¡δσ.
-
- ìÑ«íσ«ñ¿¼« Γá¬ªÑ ¿¼ÑΓ∞ ó ó¿ñπ, τΓ« »αÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩
- ßÑú¼Ñ¡Γ«ó ¡Ñ ó½¿∩εΓ ¡á ñ«ßΓπ» ¬ ßΓѬπ. çá¡ÑßÑ¡¿Ñ ó ßΓѬ ¿ ¿ºó½Ñ-
- τÑ¡¿Ñ ¿º ßΓѬá óßÑúñá óδ»«½¡∩ÑΓß∩ ñ½∩ ßÑú¼Ñ¡Γá ßΓѬá. ìá»α¿¼Ñα,
- ¿¡ßΓαπ¬µ¿∩:
-
- .
- .
- .
- segcs
- push [bx]
- .
- .
- .
-
- ¿ß»«½∞ºπÑΓ »αÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá ñ½∩ óδí«αá Γ«ú« ßÑú-
- ¼Ñ¡Γá, ¿º ¬«Γ«α«ú« ¡πª¡« ¿ºó½Ñτ∞ ºá¡«ß¿¼«Ñ ó ßΓѬ º¡áτÑ¡¿Ñ. ¥Γ«
- º¡áτÑ¡¿Ñ ºá»¿ßδóáÑΓß∩ »« ß¼ÑΘÑ¡¿ε SP-2 ó ßÑú¼Ñ¡ΓÑ ßΓѬá, ¬á¬
- «íδτ¡«.
-
- é «íΘѼ ß½πτáÑ ß½ÑñπÑΓ ¿ºíÑúáΓ∞ ß¼ÑΦ¿óáΓ∞ »αÑΣ¿¬ßδ »ÑαÑ«»αÑ-
- ñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ß »αÑΣ¿¬ßἿ REP, »«ß¬«½∞¬π ¼«úπΓ ó«º¡¿¬¡πΓ∞
-
- TASM2 #3-5/䫬 = 12 =
-
- »α«í½Ñ¼δ ó ß½πτáÑ »αÑαδóá¡¿∩ »«óΓ«αÑ¡¿⌐ Γᬫ⌐ ¿¡ßΓαπ¬µ¿¿ (»«ñα«í-
- ¡ÑÑ «í φΓ«¼ αáß߬áºá¡« ó â½áóÑ 6).
-
- ä«ßΓπ» ¬ ¡Ñ߬«½∞¬¿¼ ßÑú¼Ñ¡Γá¼
- -----------------------------------------------------------------
-
- ÅαÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó »«½Ñº¡« ¿ß»«½∞º«óáΓ∞,
- Ñß½¿ óδ σ«Γ¿ΓÑ «íαáΘáΓ∞ß∩ ¬ ¡Ñ߬«½∞¬¿¼ ßÑú¼Ñ¡Γá¼. Æá¬á∩ ¡Ñ«íσ«ñ¿-
- ¼«ßΓ∞ ¡Ñ¿ºíѪ¡« 󫺡¿¬áÑΓ, Ñß½¿ óá¼ ¡Ñ«íσ«ñ¿¼« óδ»«½¡¿Γ∞ ºá»¿ß∞ ¿
- ó ßΓѬ, ¿ ó ßÑú¼Ñ¡Γ ñá¡¡δσ (τΓ« «íδτ¡« »α«¿ßσ«ñ¿Γ, Ñß½¿ ßΓѬ ¿ß-
- »«½∞ºπÑΓß∩ ñ½∩ ñ¿¡á¼¿τÑ߬¿ αáß»αÑñѽ∩Ѽδσ »ÑαѼѡ¡δσ, á ßÑú¼Ñ¡Γ
- ñá¡¡δσ - ñ½∩ ßΓáΓ¿τÑ߬¿σ »ÑαѼѡ¡δσ). àΘÑ «ñ¿¡ ß½πτá⌐ - ¬«úñá
- »α«úαá¼¼á ß«ñÑαª¿Γ í«½ÑÑ 64è ñá¡¡δσ, ¿º-ºá τÑú« Γá¬ªÑ ¼«ªÑΓ »«Γ-
- αÑí«óáΓ∞ß∩ ñ«ßΓπ» ¬ ¡Ñ߬«½∞¬¿¼ ßÑú¼Ñ¡Γá¼.
-
- Äñ¡« ¿º «ß«íÑ¡¡« »«½Ñº¡δσ »α¿¼Ñ¡Ñ¡¿⌐ »αÑΣ¿¬ß«ó »ÑαÑ«»αÑñѽÑ-
- ¡¿∩ ßÑú¼Ñ¡Γ«ó - φΓ« ß¼ÑΦá¡¡«Ñ ¿ß»«½∞º«óá¡¿Ñ ßΓ᫬«óδσ ¿ ¡ÑßΓ᫬«-
- óδσ ¿¡ßΓαπ¬µ¿⌐. ìá»α¿¼Ñα, »αÑñ»«½«ª¿¼, τΓ« óßÑ ß¿¼ó«½δ ñá¡¡«⌐
- ßΓ᫬¿ ß« º¡áτÑ¡¿∩¼¿, ¼Ñ¡∞Φ¿¼¿ 20h, óδ σ«Γ¿ΓÑ »αÑ«íαẫóáΓ∞ ó
- »α«íѽδ. é ß½ÑñπεΘѼ ¬«ñá ß µÑ½∞ε »«óδΦÑ¡¿∩ φΣΣÑ¬Γ¿ó¡«ßΓ¿ ¿ß»«½∞-
- ºπεΓß∩ »αÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó:
-
- .
- .
- .
- mov ax,SEG StringToConvert
- mov es,ax
- mov di,OFFSET StringToConvert ; ES:DI π¬áºδóáεΓ ¡á
- ; »αÑ«íαáºπѼπε ßΓ᫬π
- cld ; ßñѽáΓ∞ Γá¬, τΓ«íδ
- ; ¿¡ßΓαπ¬µ¿∩ STOSB
- ; πóѽ¿τ¿óá½á DI
- ConvertLoop:
- mov al,es:[di] ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐
- ; ß¿¼ó«½
- and al,al ; φΓ« ¬«¡Ñµ ßΓ᫬¿?
- jz ConvertLoopDone ; ñá, óδ»«½¡Ñ¡«
- cmp al,20h ; ¡πª¡« ½¿ ¡á¼
- ; »αÑ«íαẫóáΓ∞ Ñú«?
- jnb SaveChar ; ¡ÑΓ, ß«σαá¡¿Γ∞ Ñú«
- mov al,' ' ; »αÑ«íαẫóáΓ∞ ó
- ; »α«íѽ
- SaveChar:
- stosb ; ß«σαá¡¿Γ∞ φΓ«Γ ß¿¼ó«½
- ; ¿ »«½πτ¿Γ∞ ßß佬π ¡á
-
- TASM2 #3-5/䫬 = 13 =
-
- ; ß½ÑñπεΘ¿⌐
- jmp ConvertLoop ; »α«óÑα¿Γ∞ ß½ÑñπεΘ¿⌐
- ; ß¿¼ó«½
- ConvertLoopDone:
- stosb ; ¬«¡Ñµ ßΓ᫬¿ - 0
- .
- .
- .
-
- 﫬á½∞¡δÑ ¼ÑΓ¬¿
- -----------------------------------------------------------------
-
- 﫬á½∞¡δÑ ¼ÑΓ¬¿ (¼ÑΓ¬¿ ß «úαá¡¿τÑ¡¡«⌐ «í½áßΓ∞ε ñÑ⌐ßΓó¿∩) -
- φΓ« «ñ¡« ¿º »«½«ª¿Γѽ∞¡δσ ¬áτÑßΓó Æπαí« ÇßßѼí½Ñαá. äáóá⌐ΓÑ »«ß-
- ¼«Γα¿¼, ¬á¬ ¼«ª¡« ¿σ ¿ß»«½∞º«óáΓ∞.
-
- ÅαÑñ»«½«ª¿¼, ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ π óáß ÑßΓ∞ ¡Ñ߬«½∞¬« τáßΓÑ⌐
- ¬«ñá, ¬«Γ«αδÑ óδ»«½¡∩εΓ á¡á½«ú¿τ¡δÑ Σπ¡¬µ¿¿. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐
- »α¿¼Ñα:
-
- .
- .
- .
- Sub1 PROC
- sub ax,ax
- IntCountLoop:
- add ax,[bx]
- inc bx
- inc bx
- loop IntCountLoop
- ret
- Sub1 ENDP
- .
- .
- .
- Sub2 PROC
- sub ax,ax
- mov dx,ax
- LongCountLoop:
- add ax,[bx]
- adc dx,[bx+2]
- add bx,4
- loop LongCountLoop
- ret
- Sub2 ENDP
-
- TASM2 #3-5/䫬 = 14 =
-
- .
- .
- .
-
- è«úñá ñóÑ τáßΓ¿ ¬«ñá óδ»«½¡∩εΓ á¡á½«ú¿τ¡δÑ Σπ¡¬µ¿¿, Γ« ¿º
- φΓ«ú« τáßΓ« ß½ÑñπÑΓ, τΓ« «¡¿ ß«ñÑαªáΓ «ñ¿¡á¬«óδÑ ¼ÑΓ¬¿. ìá»α¿¼Ñα,
- Sub1 ¿ Sub2 ß«ñÑαªáΓ ¼ÑΓ¬¿, «Γ¼ÑτáεΘ¿Ñ ¡áτὫ µ¿¬½á.
-
- è«úñá ó »α«úαá¼¼Ñ ¿¼ÑÑΓß∩ Γ«½∞¬« ¡Ñ߬«½∞¬« ¼ÑΓ«¬, óδ ½Ñú¬«
- ¼«ªÑΓÑ «íÑß»Ñτ¿Γ∞, τΓ«íδ óßÑ ¼ÑΓ¬¿ í뫨 αẽ¿τ¡δ¼¿. Äñ¡á¬« ó
- í«½∞Φ¿σ »α«úαá¼¼áσ ¿ºíÑúáΓ∞ ¿ñÑ¡Γ¿τ¡δσ ¼ÑΓ«¬ ßΓá¡«ó¿Γß∩ ºáΓαπñ¡¿-
- Γѽ∞¡«. Åα¿ φΓ«¼ «íδτ¡« íÑαπΓ αáí«ΓáεΘπε »«ñ»α«úαá¼¼π, ¬«»¿απεΓ
- í½«¬ ¿ »ÑαÑ¿¼Ñ¡«óδóáεΓ Ñú«, ¼«ñ¿Σ¿µ¿απ∩ ó ¡«óπε »«ñ»α«úαá¼¼π. Äñ-
- ¡á¬« »α¿ Γᬫ⌐ »α«µÑñπαÑ ½Ñú¬« ºáíδΓ∞ ¿º¼Ñ¡¿Γ∞ Γπ ¿½¿ ¿¡πε ¼ÑΓ¬π,
- τΓ« »α¿óÑñÑΓ ¬ Γ«¼π, τΓ« ¡«óá∩ »«ñ»α«úαá¼¼á íπñÑΓ óδ»«½¡∩Γ∞ »ÑαÑ-
- σ«ñ ¡á ¼ÑΓ¬π ßΓáα«⌐ »«ñ»α«úαá¼¼δ. ìá»α¿¼Ñα, Ñß½¿ óδ ߬«»¿απÑΓÑ ¿
- ¼«ñ¿Σ¿µ¿απÑΓÑ Sub1, τΓ«íδ »«½πτ¿Γ∞ Sub2, ¼«ª¡« ß½πτá⌐¡« »«½πτ¿Γ∞
- ß½ÑñπεΘÑÑ:
-
- .
- .
- .
- Sub2 PROC
- sub ax,ax
- LongCountLoop:
- add ax,[bx]
- adc dx,[bx+2]
- add bx,4
- loop IntCountLoop
- ret
- Sub2 ENDP
- .
- .
- .
-
- τΓ« ó맮óÑΓ »ÑαÑσ«ñ ó ßÑαÑñ¿¡π »«ñ»α«úαá¼¼δ Sub1 󫺼«ª¡« ß «τÑ¡∞
- ¡Ñ»α¿∩Γ¡δ¼¿ »«ß½ÑñßΓó¿∩¼¿.
-
- çñÑß∞ 󫺡¿¬áÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ∞ ¿¼ÑΓ∞ Γᬫ⌐ Γ¿» ¼ÑΓ¬¿, ¬«Γ«αδ⌐
- «úαá¡¿τÑ¡ »« «í½áßΓ¿ ñÑ⌐ßΓó¿∩ «Γñѽ∞¡«⌐ »«ñ»α«úαá¼¼«⌐, τΓ« »«ºó«-
- ½¿Γ ¿ºíѪáΓ∞ ¬«¡Σ½¿¬Γá (»« ¼ÑΓ¬á¼) ß ñαπú¿¼¿ »«ñ»α«úαἼἿ. Æá-
- ¬«⌐ Γ¿» ¼ÑΓ«¬ ¡áºδóáÑΓß∩ ½«¬á½∞¡δ¼¿ ¼ÑΓ¬á¼¿.
-
- ùΓ« ªÑ Γá¬«Ñ ½«¬á½∞¡δÑ ¼ÑΓ¬¿? 﫬á½∞¡δÑ ¼ÑΓ¬¿, ¬«Γ«αδÑ »«
- π¼«½τá¡¿ε «íδτ¡« ¡áτ¿¡áεΓß∩ ß ñóπσ ß¿¼ó«½«ó @@, «úαá¡¿τÑ¡δ »« «í-
- ½áßΓ¿ ñÑ⌐ßΓó¿∩ ¿¡ßΓαπ¬µ¿∩¼¿, ºá¬½ετÑ¡¡δ¼¿ ¼Ñªñπ ñóπ¼∩ ¡Ñ½«¬á½∞¡δ-
-
- TASM2 #3-5/䫬 = 15 =
-
- ¼¿ ¼ÑΓ¬á¼¿. (ìѽ«¬á½∞¡δÑ ¼ÑΓ¬¿ - φΓ« ΓÑ ¼ÑΓ¬¿, ¬«Γ«αδÑ «»αÑñѽѡδ
- ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ PROC ¿ ¼ÑΓ¬¿, ºáóÑαΦáεΘ¿Ñß∩ ñó«ÑΓ«τ¿Ñ¼, ¬«Γ«-
- αδÑ ¡Ñ ¡áτ¿¡áεΓß∩ ß ñóπσ ß¿¼ó«½«ó @@.) ùΓ« ¬áßáÑΓß∩ Æπαí« ÇßßѼ-
- í½Ñαá, Γ« ñ½∩ ¡Ñú« ½«¬á½∞¡δÑ ¼ÑΓ¬¿ »α«ßΓ« ¡Ñ ßπΘÑßΓóπεΓ ó¡Ñ ñ¿á-
- »áº«¡á, «úαá¡¿τÑ¡¡«ú« í½¿ªá⌐Φ¿¼¿ ¡Ñ½«¬á½∞¡δ¼¿ ¼ÑΓ¬á¼¿.
-
- êñÑ¡Γ¿Σ¿¬áΓ«αδ, ¬«Γ«αδÑ «»αÑñѽ∩εΓß∩ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ
- LABEL, ¡Ñ »α¿ó«ñ∩Γ ¬ ¡áτá½π ¡«ó«ú« í½«¬á ½«¬á½∞¡δσ ¿ñÑ¡Γ¿Σ¿¬áΓ«-
- α«ó.
-
- ìá»α¿¼Ñα, óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ½«¬á½∞¡δÑ ¼ÑΓ¬¿ ñ½∩ Γ«ú«,
- τΓ«íδ ¼«ñ¿Σ¿µ¿α«óáΓ∞ »α¿¼Ñα, »α¿óÑñÑ¡¡δ⌐ ó ¡áτá½Ñ ñá¡¡«ú« αáºñÑ-
- ½á, ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .
- .
- .
- Sub1 PROC
- sub ax,ax
- @@CountLoop:
- add ax,[bx]
- inc bx
- inc bx
- loop @@CountLoop
- ret
- Sub1 ENDP
- .
- .
- .
- Sub2 PROC
- sub ax,ax
- mov dx,ax
- @@CountLoop:
- add ax,[bx]
- adc dx,[bx+2]
- add bx,4
- loop @@CountLoop
- ret
- Sub2 ENDP
- .
- .
- .
-
- çñÑß∞ óá¼ ¡Ñ ¡πª¡« ºáí«Γ¿Γ∞ß∩ « Γ«¼, τΓ«íδ ¼ÑΓ¬¿ µ¿¬½á «ñ¡«⌐
- »«ñ»α«úαá¼¼δ ¡Ñ óσ«ñ¿½¿ ó ¬«¡Σ½¿¬Γ ß ¼ÑΓ¬á¼¿ µ¿¬½á ñαπú«⌐ »«ñ-
- »α«úαá¼¼δ, ¿ ¡ÑΓ óÑα«∩Γ¡«ßΓ¿, τΓ« «ñ¡á »«ñ»α«úαá¼¼á ß½πτá⌐¡« »Ñ-
-
- TASM2 #3-5/䫬 = 16 =
-
- αÑ⌐ñÑΓ ¡á ¼ÑΓ¬π ñαπú«⌐ »«ñ»α«úαá¼¼δ.
-
- èᬠ¼«ª¡« ºá¼ÑΓ¿Γ∞, »ÑαÑñ ¿ß»«½∞º«ó᡿Ѽ ½«¬á½∞¡δσ ¼ÑΓ«¬ ¼δ
- π¬áºá½¿ ñ¿αÑ¬Γ¿óπ LOCALS. é αѪ¿¼Ñ MASM ½«¬á½∞¡δÑ ¼ÑΓ¬¿ »« π¼«½-
- τá¡¿ε ºá»αÑΘÑ¡δ ¿ »ÑαÑñ ΓѼ, ¬á¬ óδ ß¼«ªÑΓÑ ¿σ ¿ß»«½∞º«óáΓ∞,
- ñ«½ª¡δ íδΓ∞ αáºαÑΦÑ¡δ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ LOCALS. é π½πτΦÑ¡¡«¼
- αѪ¿¼Ñ ½«¬á½∞¡δÑ ¼ÑΓ¬¿ »« π¼«½τá¡¿ε αáºαÑΦÑ¡δ, σ«Γ∩ óδ ¼«ªÑΓÑ ¿σ
- ºá»αÑΓ¿Γ∞ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ NOLOCALS.
-
- 﫬á½∞¡δÑ ¼ÑΓ¬¿ »«½Ñº¡δ ΓᬪÑ, ¬«úñá óδ σ«Γ¿ΓÑ »«½πτ¿Γ∞ ó
- »«ñ»α«úαá¼¼Ñ ¡Ñ߬«½∞¬« ¬«α«Γ¬¿σ »ÑαÑσ«ñ«ó ¿ ¡Ñ σ«Γ¿ΓÑ ΓÑα∩Γ∞ óαÑ-
- ¼∩, »α¿ñπ¼δóá∩ ñ½∩ ¡¿σ π¡¿¬á½∞¡δÑ ¿¼Ñ¡á. ìá»α¿¼Ñα, óδ ¼«ªÑΓÑ ¿ß-
- »«½∞º«óáΓ∞ ½«¬á½∞¡δÑ ¼ÑΓ¬¿, ¬«úñá »α«óÑα∩ÑΓÑ «ñ¡« ¿º ¡Ñ߬«½∞¬¿σ
- º¡áτÑ¡¿⌐:
-
- .
- .
- .
- LOCALS
- cmp al,'A'
- jnz @@P1
- jmp HandleA
- @@P1:
- cmp al,'B'
- jnz @@P2
- jnz HandleB
- @@P2:
- cmp al,'C'
- jnz @@P3
- jmp HandleC
- @@P3:
- .
- .
- .
-
- Åα¿ ¿ß»«½∞º«óá¡¿¿ ½«¬á½∞¡δσ ¼ÑΓ«¬ óá¼ ¡Ñ »α¿ñÑΓß∩ ºáí«Γ¿Γ∞ß∩
- « Γ«¼, ß«ñÑαªáΓß∩ ½¿ ¼ÑΓ¬¿ Γ¿»á P1 ¿ P2 úñÑ-½¿í« ÑΘÑ ó »α«úαá¼¼Ñ.
-
- ìπª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« ½εíá∩ ¡Ñ½«¬á½∞¡á∩ ¼ÑΓ¬á «úαá¡¿τ¿óá-
- ÑΓ «í½áßΓ∞ ñÑ⌐ßΓó¿∩ ½«¬á½∞¡«⌐ ¼ÑΓ¬¿. ìá»α¿¼Ñα, ß½ÑñπεΘá∩ »«ß½Ññ«-
- óáΓѽ∞¡«ßΓ∞ ¿¡ßΓαπ¬µ¿⌐ áßßÑ¼í½¿α«óáΓ∞ß∩ ¡Ñ íπñÑΓ:
-
- .
- .
- .
- Sub1 PROC NEAR
-
- TASM2 #3-5/䫬 = 17 =
-
- .
- .
- .
- LOCALS
- @@CountLoop:
- add ax,[bx]
- jnz NotZero
- inc dx
- NotZero:
- inc bx
- inc bx
- loop @@CountLoop
- .
- .
- .
-
- Åα«í½Ñ¼á ºñÑß∞ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ¼Ñªñπ ßß佬«⌐ ¡á ½«¬á½∞¡πε
- ¼ÑΓ¬π @@CountLoop ó ¿¡ßΓαπ¬µ¿¿ LOOP ¿ «»αÑñѽѡ¿Ñ¼ @@CountLoop
- ¡áσ«ñ¿Γß∩ ¡Ñ½«¬á½∞¡á∩ ¼ÑΓ¬á NotZero. Äí½áßΓ∞ ñÑ⌐ßΓó¿∩ ½«¬á½∞¡«⌐
- »ÑαѼѡ¡«⌐ αáß»α«ßΓαá¡∩ÑΓß∩ Γ«½∞¬« ñ« í½¿ªá⌐ΦÑ⌐ ¡Ñ½«¬á½∞¡«⌐ ¼ÑΓ-
- ¬¿, »«φΓ«¼π ¬«úñá Æπαí« ÇßßѼí½Ñα áßßÑ¼í½¿απÑΓ ¿¡ßΓαπ¬µ¿ε LOOP,
- ½«¬á½∞¡á∩ ¼ÑΓ¬á @@CountLoop «í¡áαπªÑ¡á ¡Ñ íπñÑΓ.
-
- ö«α¼π »αÑΣ¿¬ßá ½«¬á½∞¡«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá (ß¿¼ó«½δ @@) ¼«ª¡«
- ¿º¼Ñ¡¿Γ∞ ¡á ½εíδÑ ñóá ñαπú¿Ñ ß¿¼ó«½á, ¬«Γ«αδÑ ¼«úπΓ ¿ß»«½∞º«óáΓ∞-
- ß∩ ó ¡áτá½Ñ ¿¼Ñ¡¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá. ¥Γ« ¼«ª¡« ßñѽáΓ∞, π¬áºáó ¡«óδÑ
- ß¿¼ó«½δ »αÑΣ¿¬ßá ó ¬áτÑßΓóÑ áαúπ¼Ñ¡Γ«ó ñ¿αÑ¬Γ¿óδ LOCAL:
-
- LOCALS__
-
- çñÑß∞ ó ¬áτÑßΓóÑ »αÑΣ¿¬ßá ½«¬á½∞¡«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá íπñπΓ
- ¿ß»«½∞º«óáΓ∞ß∩ ñóá ß¿¼ó«½á »«ñτÑનóá¡¿∩. ¥Γ« ¼«ªÑΓ «¬áºáΓ∞ß∩ »«-
- ½Ñº¡δ¼, ¬«úñá óδ σ«Γ¿ΓÑ ¡áτáΓ∞ ¿ß»«½∞º«óá¡¿Ñ ½«¬á½∞¡δσ ¿ñÑ¡Γ¿Σ¿-
- ¬áΓ«α«ó ó ¼«ñπ½Ñ, úñÑ πªÑ ¿¼ÑεΓß∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ, ¡áτ¿¡áεΘ¿Ñß∩ ß
- ¿ß»«½∞ºπѼ«ú« »« π¼«½τá¡¿ε »αÑΣ¿¬ßá ¿ñÑ¡Γ¿Σ¿¬áΓ«αá.
-
- è«úñá óδ Γᬿ¼ «íαẫ¼ ¼Ñ¡∩ÑΓÑ »αÑΣ¿¬ß ½«¬á½∞¡«ú« ¿ñÑ¡Γ¿Σ¿-
- ¬áΓ«αá, Γ« ½«¬á½∞¡δÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ áóΓ«¼áΓ¿τÑ߬¿ αáºαÑΦáεΓß∩ ¡á
- Γ«⌐ ªÑ ßΓ᫬Ñ, Γ«τ¡« ΓᬪÑ, ¬á¬ Ñß½¿ íδ óδ ¿ß»«½∞º«ó὿ ñ¿αÑ¬Γ¿óπ
- LOCALS íѺ ¬á¬¿σ-½¿í« áαúπ¼Ñ¡Γ«ó. àß½¿ óδ ñá½ÑÑ ñ½∩ ºá»αÑΘÑ¡¿∩
- ½«¬á½∞¡δσ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó π¬áªÑΓÑ ñ¿αÑ¬Γ¿óπ NOLOCALS, Γ« Æπαí«
- ÇßßѼí½Ñα "óß»«¼¡¿Γ" ß¿¼ó«½δ »αÑΣ¿¬ßá, ¬«Γ«αδÑ óδ ºáñáó὿. ¥Γ«
- »«ºó«½∩ÑΓ óá¼ ñ½∩ ó«ßßΓá¡«ó½Ñ¡¿∩ ½«¬á½∞¡δσ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ß ºá-
- ñá¡¡δ¼¿ αá¡ÑÑ »αÑΣ¿¬ßἿ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ LOCALCS íѺ áαúπ-
- ¼Ñ¡Γ«ó.
-
-
- TASM2 #3-5/䫬 = 18 =
-
- ÇóΓ«¼áΓ¿τÑ߬«Ñ ¡áº¡áτÑ¡¿Ñ αẼÑαá »ÑαÑσ«ñá
- -----------------------------------------------------------------
-
- î¡«ú« ½ÑΓ ¡áºáñ αáºαáí«Γτ¿¬¿ »α«µÑßß«αá 8086 αÑΦ¿½¿, τΓ« ó
- ¿¡ßΓαπ¬µ¿∩σ »ÑαÑσ«ñá ¼«ú½¿ íδ »«ññÑনóáΓ∞ß∩ Γ«½∞¬« «ñ¡«íá⌐Γ«óδÑ
- ß¼ÑΘÑ¡¿∩ »ÑαÑσ«ñ«ó. ¥Γ« «º¡áτáÑΓ, τΓ« ¬áªñδ⌐ πß½«ó¡δ⌐ »ÑαÑσ«ñ ¼«ú
- íδ »ÑαÑñáóáΓ∞ π»αáó½Ñ¡¿Ñ Γ«½∞¬« ó »αÑñѽáσ 128 íá⌐Γ «Γ ßἫ⌐ ¿¡ß-
- Γαπ¬µ¿¿ »ÑαÑσ«ñá.
-
- æÑú«ñ¡∩, ¬«¡Ñτ¡«, φΓ¿ ¿¡ßΓαπ¬µ¿¿ »ÑαÑσ«ñá Γ«ªÑ »α¿¼Ñ¡∩εΓß∩.
- ôß½«ó¡δÑ »ÑαÑσ«ñδ ß πß»Ñσ«¼ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ß »α«úαá¼¼áσ, ß«º-
- ñáóá∩ ¬«¼»á¬Γ¡δ⌐ ¬«ñ (Γᬠ¬á¬ ¿¡ßΓαπ¬µ¿∩ πß½«ó¡«ú« »ÑαÑσ«ñá ¿¼ÑÑΓ
- αẼÑα Γ«½∞¬« 2 íá⌐Γá). Äñ¡á¬« ¿¡ßΓαπ¬µ¿¿ πß½«ó¡«ú« »ÑαÑσ«ñá »α«-
- µÑßß«αá 8086 ¿¡«úñá »α¿¡πªñáεΓ »¿ßáΓ∞ ¡ÑφΣΣÑ¬Γ¿ó¡δ⌐ ¬«ñ, »«ß¬«½∞-
- ¬π, ¬«úñá áñαÑß πß½«ó¡«ú« »ÑαÑσ«ñ «ΓßΓ«¿Γ ß½¿Φ¬«¼ ñá½Ñ¬« ¿ ¡Ññ«ß-
- Γ¿ª¿¼ ß »«¼«Θ∞ε «ñ¡«íá⌐Γ«ó«ú« ß¼ÑΘÑ¡¿∩, »α¿σ«ñ¿Γß∩ »¿ßáΓ∞
- 5-íá⌐Γ«óδÑ »«ß½Ññ«óáΓѽ∞¡«ßΓ¿ ¿¡ßΓαπ¬µ¿⌐ Γ¿»á:
-
- .
- .
- .
- jnz NotZero
- jmp IsZero
- NotZero:
- .
- .
- .
-
- ùΓ« ÑΘÑ σπªÑ, ¡Ñ󫺼«ª¡« ºáαá¡ÑÑ πº¡áΓ∞, ñ«ßΓ¿ª¿¼á ½¿ π¬á-
- ºá¡¡á∩ ¼ÑΓ¬á ß »«¼«Θ∞ε ñá¡¡«ú« πß½«ó¡«ú« »ÑαÑσ«ñá, »«φΓ«¼π óδ
- «¬áºδóáÑΓÑß∞ »ÑαÑñ óδí«α«¼: ½¿í« »«»δΓáΓ∞ß∩ »ÑαÑ⌐Γ¿ ¡á ¼ÑΓ¬π ¡Ñ-
- »«ßαÑñßΓóÑ¡¡« (τΓ« 󫺼«ª¡« ó맮óÑΓ «Φ¿í¬π áßßÑ¼í½¿α«óá¡¿∩), ½¿í«
- ¿ß»«½∞º«óáΓ∞ ñ½∩ Γᬫú« »ÑαÑσ«ñá íѺπß½«ó¡δ⌐ »ÑαÑσ«ñ, »«ΓÑα∩ó »α¿
- φΓ«¼ 3 íá⌐Γá ¿ »«½πτ¿ó »α«¿úαδΦ ó« óαѼѡ¿ óδ»«½¡Ñ¡¿∩. èα«¼Ñ Γ«ú«
- ºñÑß∞ ÑßΓ∞ ÑΘÑ «ñ¡á ¡Ñ»α¿∩Γ¡«ßΓ∞: ñ«íáó¿ó ó¡πΓα¿ µ¿¬½á «ñ¡π-ñóÑ
- ¿¡ßΓαπ¬µ¿¿, óδ ¼«ªÑΓÑ »«½πτ¿Γ∞ «Φ¿í¬π Relative jump out of range
- (»ÑαÑσ«ñ ºá ñ«»πßΓ¿¼δÑ úαá¡¿µδ).
-
- ò«Γ∩ Æπαí« ÇßßѼí½Ñα ¿ ¡Ñ ¼«ªÑΓ αÑΦ¿Γ∞ óßÑσ »α«í½Ñ¼, ßó∩ºá¡-
- ¡δσ ß πß½«ó¡δ¼¿ »ÑαÑσ«ñἿ, «¡ º¡áτ¿Γѽ∞¡« »α¿í½¿ªáÑΓß∩ ¬ φΓ«¼π,
- Ñß½¿ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ JUMPS. àß½¿ óδ π¬áªÑΓÑ φΓπ ñ¿αÑ¬Γ¿óπ,
- Æπαí« ÇßßѼí½Ñα áóΓ«¼áΓ¿τÑ߬¿ »αÑ«íαáºπÑΓ «íδτ¡δÑ πß½«ó¡δÑ »ÑαÑ-
- σ«ñδ ó πß½«ó¡δÑ »ÑαÑσ«ñδ, ¿ß»«½∞ºπεΘ¿Ñ íѺπß½«ó¡δÑ »ÑαÑσ«ñδ, ¬«ú-
- ñá φΓ« ¡πª¡«, τΓ«íδ ñ«ßΓ¿τ∞ µÑ½Ñó«⌐ ¼ÑΓ¬¿.
-
- èᬠóδ»«½¡∩ÑΓß∩ φΓ« áóΓ«¼áΓ¿τÑ߬«Ñ »αÑ«íαẫóá¡¿Ñ? Éáßß¼«Γ-
-
- TASM2 #3-5/䫬 = 19 =
-
- α¿¼ ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
-
- .
- .
- .
- JUMPS
- RepeatLoop:
- jmp SkipOverData
- DB 100h DUP (?)
- SkipOverData:
- .
- .
- .
- dec dx
- jnz RepeatLoop
- .
- .
- .
-
- ƒß¡«, τΓ« ¼ÑΓ¬á RepeatLoop ¡Ññ«ßΓ¿ª¿¼á ¿º ¿¡ßΓαπ¬µ¿¿ JNZ,
- »«ß¬«½∞¬π ¼Ñªñπ ¡¿¼¿ í«½ÑÑ 256 íá⌐Γ. Äñ¡á¬«, Γᬠ¬á¬ íδ½á π¬áºá¡á
- ñ¿αÑ¬Γ¿óá JUMPS, «Φ¿í¬¿ áßßÑ¼í½¿α«óá¡¿∩ ¡Ñ 󫺡¿¬¡ÑΓ. é¼ÑßΓ« φΓ«-
- ú« Æπαí« ÇßßѼí½Ñα áßßÑ¼í½¿απÑΓ ñá¡¡δ⌐ ¬«ñ ó ß½ÑñπεΘ¿⌐ φ¬ó¿óá-
- ½Ñ¡Γ:
-
- .
- .
- .
- RepeatLoop:
- jmp SkipOverData
- DB 100h DUP (?) ; óαѼѡ¡á∩ »á¼∩Γ∞ ñ½∩ ñá¡¡δσ ó CS
- SkipOverData:
- .
- .
- .
- dec dx
- jz $+5
- jmp RepeatLoop
- .
- .
- .
-
- úñÑ ó¼ÑßΓ« ¿¡ßΓαπ¬µ¿¿ JZ áóΓ«¼áΓ¿τÑ߬¿ ¿ß»«½∞ºπεΓß∩ ¿¡ßΓαπ¬µ¿¿ JZ
- ¿ JMP.
-
- ìÑ ß½ÑñπÑΓ ñπ¼áΓ∞, τΓ« »α¿ ¿ß»«½∞º«óá¡¿¿ ñ¿αÑ¬Γ¿óδ JUMPS
-
- TASM2 #3-5/䫬 = 20 =
-
- Æπαí« ÇßßѼí½Ñα óßÑúñá úÑ¡Ñα¿απÑΓ »áαπ πß½«ó¡δ⌐/íѺπß½«ó¡δÑ »ÑαÑ-
- σ«ñ: ¬«úñá µÑ½Ñóπε ¼ÑΓ¬π ¼«ª¡« ñ«ßΓ¿τ∞ ß »«¼«Θ∞ε πß½«ó¡«ú« »ÑαÑ-
- σ«ñá, Γ« óßÑúñá ¿ß»«½∞ºπÑΓß∩ πß½«ó¡δ⌐ »ÑαÑσ«ñ (»αÑ«íαẫóá¡¿Ñ ¡Ñ
- óδ»«½¡∩ÑΓß∩). ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ »α¿¼ÑαÑ »ÑαÑσ«ñ íπñÑΓ óδ»«½-
- ¡∩Γ∞ß∩ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ JNZ, Γᬠ¬á¬ ¼ÑΓ¬á ¡áσ«ñ¿Γß∩ ñ«ßΓá-
- Γ«τ¡« í½¿º¬« ¿ ñ«ßΓ¿ª¿¼á, Ñß½¿ ¿ß»«½∞º«óáΓ∞ 1-íá⌐Γ«ó«Ñ ß¼ÑΘÑ¡¿Ñ:
-
- .
- .
- .
- JUMPS
- RepeatLoop:
- add BYTE PTR [bx],1
- inc bx
- dec dx
- jnz RepeatLoop
- .
- .
- .
-
- èᬠ¼δ πªÑ π»«¼¿¡á½¿, áóΓ«¼áΓ¿τÑ߬«Ñ «»αÑñѽѡ¿Ñ Æπαí« Çß-
- ßѼí½Ñα«¼ αẼÑαá «»Ñαᵿ⌐ »ÑαÑσ«ñá ¡Ñ αÑΦáÑΓ óßÑσ »α«í½Ñ¼, ßó∩-
- ºá¡¡δσ ß πß½«ó¡δ¼¿ »ÑαÑσ«ñἿ. Æπαí« ÇßßѼí½Ñα »αѬαáß¡« «íαáíá-
- ΓδóáÑΓ áóΓ«¼áΓ¿τÑ߬«Ñ «»αÑñѽѡ¿Ñ αẼÑαá »α¿ «íαáΓ¡δσ »ÑαÑσ«ñáσ
- (»ÑαÑσ«ñáσ ¡á ¼ÑΓ¬¿, ¬«Γ«αδÑ ß«ñÑαªáΓß∩ ó ¬«ñÑ, »αÑñΦÑßΓóπεΘѼ
- ¿¡ßΓαπ¬µ¿¿ »ÑαÑσ«ñá).
-
- Æá¬ ¬á¬ Æπαí« ÇßßѼí½Ñα αáí«ΓáÑΓ «íδτ¡«, ¬á¬ «ñ¡«»α«σ«ñ¡δ⌐
- áßßѼí½Ñα, »α¿ áóΓ«¼áΓ¿τÑ߬«¼ ¡áº¡áτÑ¡¿¿ αẼÑαá »ÑαÑσ«ñá ¡á ¼ÑΓ-
- ¬π ó»ÑαÑñ ΓαÑíπÑΓß∩ αáºπ¼¡δ⌐ ¬«¼»α«¼¿ßß. çñÑß∞ ¡Ñ óßÑ »α«σ«ñ¿Γ
- Γᬠú½áñ¬«, ¬á¬ »α¿ «íαáΓ¡δσ »ÑαÑσ«ñáσ. Äñ¡á¬« ¡Ñ»½«σ«, τΓ« πß-
- ½«ó¡δÑ »ÑαÑσ«ñδ ó»ÑαÑñ ¡á í½¿ª¡¿Ñ ¼ÑΓ¬¿ óßÑúñá íπñπΓ áßßÑ¼í½¿α«-
- óáΓ∞ß∩ »α¿ αáºαÑΦÑ¡¿¿ áóΓ«¼áΓ¿τÑ߬«ú« «»αÑñѽѡ¿∩ αẼÑαá, σπªÑ,
- τΓ« Ñß½¿ «¬áªÑΓß∩, τΓ« ß½ÑñπεΘπε ºá ¡¿¼ ¼ÑΓ¬π ¼«ª¡« ñ«ßΓ¿τ∞ ß »«-
- ¼«Θ∞ε πß½«ó¡«ú« »ÑαÑσ«ñá, á ó ΓѬßΓ íπñπΓ ó¬½ετÑ¡δ ¡Ñ߬«½∞¬« ñ«-
- »«½¡¿Γѽ∞¡δσ ¿¡ßΓαπ¬µ¿⌐ NOP (»πßΓá∩ «»Ñαᵿ∩). äá¡¡«⌐ »α«í½Ñ¼δ
- ¼«ª¡« ¿ºíѪáΓ∞, Ñß½¿ π¬áºáΓ∞ ß »«¼«Θ∞ε »áαá¼ÑΓαá /m Æπαí« ÇßßѼí-
- ½Ñαπ ¡á ¡Ñ«íσ«ñ¿¼«ßΓ∞ óδ»«½¡Ñ¡¿∩ ¡Ñ߬«½∞¬¿σ »α«σ«ñ«ó (σ«Γ∩ φΓ«
- ßαÑñßΓó« ¡Ñ߬«½∞¬« ºá¼Ññ½∩ÑΓ »α«µÑßß áßßÑ¼í½¿α«óá¡¿∩).
-
- àß½¿ ¡Ñ¼¡«ú« »«ñπ¼áΓ∞, Γ« ßΓá¡ÑΓ »«¡∩Γ¡«, »«τѼπ »α¿ áóΓ«¼á-
- Γ¿τÑ߬«¼ «»αÑñѽѡ¿¿ αẼÑαá »ÑαÑσ«ñ«ó »α¿ ßß佬áσ ó»ÑαÑñ ¡Ñ
- óßÑúñá úÑ¡Ñα¿απÑΓß∩ «»Γ¿¼á½∞¡δ⌐ ¬«ñ. è«úñá Æπαí« ÇßßѼí½Ñα ñ«ßΓ¿-
- úáÑΓ ¿¡ßΓαπ¬µ¿¿ πß½«ó¡«ú« »ÑαÑσ«ñá, ó ¬«Γ«α«⌐ ¿¼ÑÑΓß∩ ßß佬á ó»Ñ-
- αÑñ, Γ« ¡Ñ󫺼«ª¡« «»αÑñѽ¿Γ∞, ¬á¬ ñá½Ñ¬« ¡áσ«ñ¿Γß∩ φΓá ¼ÑΓ¬á
- (óÑñ∞ Æπαí« ÇßßѼí½Ñα φΓ«⌐ ¼ÑΓ¬¿ ÑΘÑ ¡Ñ «í¡áαπª¿½). àß½¿ áóΓ«¼á-
-
- TASM2 #3-5/䫬 = 21 =
-
- Γ¿τÑ߬«Ñ «»αÑñѽѡ¿Ñ αẼÑα«ó πß½«ó¡«ú« »ÑαÑσ«ñá αáºαÑΦÑ¡«, Γ«
- Æπαí« ÇßßѼí½Ñα ¼«ú íδ ßúÑ¡Ñα¿α«óáΓ∞ πß½«ó¡δ⌐ »ÑαÑσ«ñ (¿¡ßΓαπ¬µ¿∩
- αẼÑα«¼ 2 íá⌐Γá), Ñß½¿ µÑ½Ñóá∩ ¼ÑΓ¬á ¡áσ«ñ¿Γß∩ ñ«ßΓáΓ«τ¡« í½¿º-
- ¬«, ¿ πß½«ó¡δ⌐ »ÑαÑσ«ñ τÑαѺ íѺπß½«ó¡δ⌐ »ÑαÑσ«ñ (2-íá⌐Γ«óá∩ ¿¡ß-
- Γαπ¬µ¿∩, ºá ¬«Γ«α«⌐ ß½ÑñπÑΓ ¿¡ßΓαπ¬µ¿∩ αẼÑα«¼ 3 íá⌐Γá) ó »α«-
- Γ¿ó¡«¼ ß½πτáÑ. è ß«ªá½Ñ¡¿ε, ¬«úñá Æπαí« ÇßßѼí½Ñα «í¡áαπª¿óáÑΓ
- »ÑαÑσ«ñ ß« ßß佬«⌐ ó»ÑαÑñ, «¡ ÑΘÑ ¡Ñ º¡áÑΓ, ¡Ñ«íσ«ñ¿¼á ½¿ 2-íá⌐-
- Γ«óá∩ ¿¡ßΓαπ¬µ¿∩ ¿½¿ »áαá ¿¡ßΓαπ¬µ¿⌐ αẼÑα«¼ ó 5 íá⌐Γ.
-
- ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ óδíαáΓ∞ ¡Ñ¬«Γ«αδÑ αẼÑαδ
- »αáó¿½∞¡«. Åα¿ φΓ«¼ π ¡Ñú« ¡ÑΓ óδí«αá ¿ ñ½∩ ¡áñѪ¡«ßΓ¿ «¡ αѺÑα-
- ó¿απÑΓ 5 íá⌐Γ ñ½∩ »áαδ ¿¡ßΓαπ¬µ¿⌐ íѺπß½«ó¡«ú«/πß½«ó¡«ú« »ÑαÑ-
- σ«ñá. Å«ß½Ñ φΓ«ú«, ¬«úñá Æπαí« ÇßßѼí½Ñα ºáΓѼ ñ«ßΓ¿úáÑΓ µÑ½Ñó«⌐
- ¼ÑΓ¬¿ ¿ ó¿ñ¿Γ, τΓ« ¼«ª¡« «í«⌐Γ¿ß∞ 2-íá⌐Γ«ó«⌐ ¿¡ßΓαπ¬µ¿Ñ⌐, «¡ áß-
- ßÑ¼í½¿απÑΓ πß½«ó¡δ⌐ »ÑαÑσ«ñ, ºá ¬«Γ«αδ¼ ß½ÑñπÑΓ Γα¿ ¿¡ßΓαπ¬µ¿¿
- NOP (τΓ«íδ ºá»«½¡¿Γ∞ αѺÑαó ó 5 íá⌐Γ).
-
- ÅαÑñ»«½«ª¿¼, Æπαí« ÇßßѼí½Ñα αѺÑαó¿απÑΓ ß½ÑñπεΘ¿Ñ ¿¡ßΓαπ¬-
- 樨:
-
- .
- .
- .
- JUMPS
- jz DestLabel
- inc ax
- .
- .
- .
-
- àß½¿ ¿¡ßΓαπ¬µ¿∩ JZ ¡Ñ ¼«ªÑΓ ñ«ßΓ¿τ∞ µÑ½Ñó«⌐ ¼ÑΓ¬¿ ¡Ñ»«ßαÑñß-
- ΓóÑ¡¡«, Æπαí« ÇßßѼí½Ñα áßßÑ¼í½¿απÑΓ ß½ÑñπεΘ¿⌐ φ¬ó¿óá½Ñ¡Γ:
-
- .
- .
- .
- jnz $+5 ; ñóá íá⌐Γá
- jmp DestLabel ; Γα¿ íá⌐Γá
- inc ax
- .
- .
- .
-
- àß½¿, ß ñαπú«⌐ ßΓ«α«¡δ, ¿¡ßΓαπ¬µ¿∩ JZ ¼«ªÑΓ ñ«ßΓ¿τ∞ µÑ½Ñó«⌐
- ¼ÑΓ¬¿ ¡Ñ»«ßαÑñßΓóÑ¡¡«, Γ« Æπαí« ÇßßѼí½Ñα áßßÑ¼í½¿απÑΓ ß½ÑñπεΘ¿Ñ
- ¿¡ßΓαπ¬µ¿¿:
-
- TASM2 #3-5/䫬 = 22 =
-
-
- .
- .
- .
- jz DestLabel ; ñóá íá⌐Γá
- nop ; ¬áªñá∩ «»Ñαᵿ∩ NOP
- ; ¿¼ÑÑΓ αẼÑα 1 íá⌐Γ
- nop
- nop
- inc ax
- .
- .
- .
-
- Æπαí« ÇßßѼí½Ñα ñ«½ªÑ¡ αѺÑαó¿α«óáΓ∞ »α¿ ¬áªñ«¼ áóΓ«¼áΓ¿τÑß-
- ¬«¼ «»αÑñѽѡ¿¿ αẼÑαá πß½«ó¡«ú« »ÑαÑσ«ñá ß« ßß佬«⌐ ó»ÑαÑñ 5
- íá⌐Γ, »«φΓ«¼π πß½«ó¡δÑ »ÑαÑσ«ñδ ß áóΓ«¼áΓ¿τÑ߬¿¼ «»αÑñѽѡ¿Ñ¼
- αẼÑαá, ¬«Γ«αδÑ ¼«úπΓ ñ«ßΓ¿τ∞ ßó«¿σ ¼ÑΓ«¬, ñ«»«½¡∩εΓß∩ ΓαѼ∩ ¿¡-
- ßΓαπ¬µ¿∩¼¿ NOP. ¥Γ¿ Γα¿ ñ«»«½¡¿Γѽ∞¡δÑ ¿¡ßΓαπ¬µ¿¿ NOP »α¿ó«ñ∩Γ ¬
- »«ΓÑαÑ ß¬«α«ßΓ¿ αáí«Γδ (¬áªñá∩ ¿º ¡¿σ ΓαÑíπÑΓ ñ½∩ óδ»«½¡Ñ¡¿∩ 3
- µ¿¬½«ó ¡á »α«µÑßß«αÑ 8086) ¿ πóѽ¿τ¿óáεΓ «íΩѼ »α«úαá¼¼δ. Æá¬¿¼
- «íαẫ¼, ¼δ ¼«ªÑ¼ óá¼ »«ß«óÑΓ«óáΓ∞ ó ΓÑσ ß½πτá∩σ, ¬«úñá αẼÑα
- ¬«ñá ¿ ߬«α«ßΓ∞ óδ»«½¡Ñ¡¿∩ ¿¼ÑεΓ αÑΦáεΘÑÑ º¡áτÑ¡¿Ñ, ¿ß»«½∞º«óáΓ∞
- áóΓ«¼áΓ¿τÑ߬«Ñ «»αÑñѽѡ¿Ñ αẼÑα«ó πß½«ó¡δσ »ÑαÑσ«ñ«ó ß« ßß佬á-
- ¼¿ ó»ÑαÑñ ñ«ßΓáΓ«τ¡« αÑñ¬«.
-
- àß½¿ óδ »¿ΦÑΓÑ »α«úαá¼¼π, ß«ñÑαªáΘπε óδß«¬«»α«¿ºó«ñ¿Γѽ∞¡δ⌐
- ¬«ñ, Γ« ¼«ª¡« αáºαÑΦ¿Γ∞ áóΓ«¼áΓ¿τÑ߬«Ñ «»αÑñѽѡ¿Ñ αẼÑαá πß½«ó-
- ¡δσ »ÑαÑσ«ñ«ó ñ½∩ ¡Ñ¬α¿Γ¿τÑ߬¿σ πτáßΓ¬«ó óáΦÑ⌐ »α«úαá¼¼δ ¿ ºá»αÑ-
- Γ¿Γ∞ Ñú« ñ½∩ ¬α¿Γ¿τÑ߬¿σ πτáßΓ¬«ó. ï¿í« ¼«ª¡« αáºαÑΦ¿Γ∞ áóΓ«¼á-
- Γ¿τÑ߬«Ñ «»αÑñѽѡ¿Ñ αẼÑα«ó »ÑαÑσ«ñ«ó ß «íαáΓ¡δ¼¿ ßßδ½¬á¼¿ ¿
- ºá»αÑΓ¿Γ∞ Ñú« ñ½∩ »ÑαÑσ«ñ«ó ß« ßßδ½¬á¼¿ ó»ÑαÑñ. ¥Γ« ¼«ª¡« ßñÑ-
- ½áΓ∞, ß«τÑΓá∩ ñ¿αÑ¬Γ¿óπ JUMPS ß ñ¿αÑ¬Γ¿ó«⌐ NOJUMPS (¬«Γ«αá∩ ºá»-
- αÑΘáÑΓ áóΓ«¼áΓ¿τÑ߬«Ñ «»αÑñѽѡ¿Ñ αẼÑα«ó »ÑαÑσ«ñ«ó).
-
- ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ áóΓ«¼áΓ¿τÑ߬«Ñ «»-
- αÑñѽѡ¿Ñ αẼÑα«ó »ÑαÑσ«ñ«ó ¿ß»«½∞ºπÑΓß∩ Γ«½∞¬« ñ½∩ «íαáΓ¡δσ »Ñ-
- αÑσ«ñ«ó, ¡« ¡Ñ ñ½∩ »ÑαÑσ«ñ«ó ß« ßßδ½¬á¼¿ ó»ÑαÑñ:
-
- .
- .
- .
- LoopTop:
- .
- .
- .
-
- TASM2 #3-5/䫬 = 23 =
-
- lodsb
- cmp al,80h
- NOJUMPS
- jb SaveByteValue
- neg al
- SaveByteValue:
- stosb
- .
- .
- .
- dec dx
- JUMPS
- jnz LoopTop
- .
- .
- .
-
- çñÑß∞ ¼δ ¡Ñ»«ßαÑñßΓóÑ¡¡« ºáñ὿ 2-íá⌐Γ«óδ⌐ πß½«ó¡δ⌐ »ÑαÑσ«ñ
- ñ½∩ »ÑαÑσ«ñá ß« ßß佬«⌐ ¡á ¼ÑΓ¬π SaveByteValue, á ñ½∩ «íαáΓ¡«ú«
- »ÑαÑσ«ñá ¡á LoopTop Æπαí« ÇßßѼí½Ñα ßá¼ óδíÑαÑΓ ½πτΦ¿⌐ ¬«ñ.
-
- èßΓáΓ¿, ó ¡áτá½Ñ áßßÑ¼í½¿α«óá¡¿∩ óßÑúñá (»« π¼«½τá¡¿ε) óδí¿-
- αáÑΓß∩ ñ¿αÑ¬Γ¿óá NOJUMPS. àß½¿ óδ σ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ áóΓ«¼áΓ¿-
- τÑ߬«Ñ «»αÑñѽѡ¿Ñ αẼÑα«ó »ÑαÑσ«ñ«ó, ¡πª¡« ∩ó¡« αáºαÑΦ¿Γ∞ φΓ« ß
- »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ JUMPS.
-
- æß佬¿ ó»ÑαÑñ ¡á ¬«ñ ¿ ñá¡¡δÑ
- -----------------------------------------------------------------
-
- é »«ß½Ññ¡Ñ¼ αáºñÑ½Ñ ¼δ ó¿ñѽ¿ »α¿¼Ñα Γ«ú«, ¬á¬ πß½«ó¡δÑ »Ñ-
- αÑσ«ñδ ß« ßßδ½¬á¼¿ ó»ÑαÑñ ¼«úπΓ »α¿óÑßΓ¿ ¬ Γ«¼π, τΓ« »α¿ αáºαÑΦÑ-
- ¡¿¿ áóΓ«¼áΓ¿τÑ߬«ú« «»αÑñѽѡ¿∩ αẼÑαá »ÑαÑσ«ñ«ó Æπαí« ÇßßѼí½Ñα
- úÑ¡Ñα¿απÑΓ ¼Ñ¡ÑÑ φΣΣÑ¬Γ¿ó¡δ⌐ ¬«ñ. Äñ¡á¬« ßπΓ∞ ñѽá ß«ßΓ«¿Γ ó Γ«¼,
- τΓ« »α«í½Ñ¼δ ó Æπαí« ÇßßѼí½ÑαÑ ¼«úπΓ óδºóáΓ∞ óßÑ ó¿ñδ ßß佫¬
- ó»ÑαÑñ (¿½¿ «»ÑαѪáεΘ¿σ ßß佫¬), »«φΓ«¼π «»ÑαѪáεΘ¿σ ßß佫¬ (Γ«
- ÑßΓ∞ ßß佫¬ ¡á ¼ÑΓ¬¿, ¬«Γ«αδÑ ¡áσ«ñ∩Γß∩ úñÑ-Γ« ñá½∞ΦÑ ó »α«úαá¼-
- ¼Ñ) »« 󫺼«ª¡«ßΓ¿ ß½ÑñπÑΓ ¿ºíÑúáΓ∞.
-
- Å«τѼπ φΓ« Γá¬? è«úñá Æπαí« ÇßßѼí½Ñα áßßÑ¼í½¿απÑΓ ¿ßσ«ñ¡δ⌐
- ¼«ñπ½∞, «¡ óδ»«½¡∩ÑΓ «ñ¿¡ »α«σ«ñ, »α«ñó¿úá∩ß∞ «Γ »Ñαó«⌐ ßΓ᫬¿
- ¿ßσ«ñ¡«ú« ¼«ñπ½∩ ¬ »«ß½Ññ¡Ñ⌐. ¥Γ« «º¡áτáÑΓ, τΓ« Æπαí« ÇßßѼí½Ñα
- Γαá¡ß½¿απÑΓ »Ñαóπε ßΓ᫬π ó ¼«ñπ½Ñ, ºáΓѼ óΓ«απε ßΓ᫬π, ΓαÑΓ∞ε
- ßΓப㠨 Γ.ñ. ò«Γ∩ φΓ« ¼«ªÑΓ »«¬áºáΓ∞ß∩ ñ«ßΓáΓ«τ¡« «τÑó¿ñ¡δ¼, ¡«
- ß φΓ¿¼ ¼«úπΓ íδΓ∞ ßó∩ºá¡δ ¼Ñ¡ÑÑ «τÑó¿ñ¡δÑ óÑΘ¿: Æπαí« ÇßßѼí½Ñα
- ¡Ñ º¡áÑΓ ºáαá¡ÑÑ « ßΓα«¬Ñ ¬«ñá ¡¿τÑú«, »«¬á «¡ ¡Ñ ñ«ßΓ¿ú ÑÑ, »«φ-
-
- TASM2 #3-5/䫬 = 24 =
-
- Γ«¼π ßß佬¿ ó»ÑαÑñ ºáßΓáó½∩εΓ Æπαí« ÇßßѼí½Ñα ñѽáΓ∞ »αÑñ»«½«ªÑ-
- ¡¿∩, ¬«Γ«αδÑ ¼«úπΓ «¬áºáΓ∞ß∩ ¡Ñ¬«ααÑ¬Γ¡δ¼¿. àß½¿ φΓ¿ »αÑñ»«½«ªÑ-
- ¡¿∩ ó ßἫ¼ ñÑ½Ñ «¬áºá½¿ß∞ ¡Ñ¬«ααÑ¬Γ¡δ, Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ
- úÑ¡Ñα¿α«óáΓ∞ ¬«ñ, φΣΣÑ¬Γ¿ó¡«ßΓ∞ ¬«Γ«α«ú« ¡¿ªÑ ¼á¬ß¿¼á½∞¡«⌐. äáªÑ
- Ñß½¿ Æπαí« ÇßßѼí½Ñα ßúÑ¡Ñα¿απÑΓ φΣΣÑ¬Γ¿ó¡δ⌐ ¬«ñ, ¼«ªÑΓ «¬áºáΓ∞ß∩
- ¡Ñ«íσ«ñ¿¼δ¼ óÑα¡πΓ∞ß∩ ¡Ñ »αÑñδñπΘ¿Ñ ßΓ᫬¿ ñ½∩ óδ»«½¡Ñ¡¿∩ ¬«ααѬ-
- Γ¿α«ó¬¿. êº-ºá φΓ«ú« ñ½∩ áßßÑ¼í½¿α«óá¡¿∩ »«ΓαÑíπÑΓß∩ í«½∞ΦÑ óαÑ-
- ¼Ñ¡¿.
-
- Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ »α¿¼Ñα:
-
- .
- .
- .
- jmp DestLabel
- .
- .
- .
- DestLabel:
- .
- .
- .
-
- è«úñá Æπαí« ÇßßѼí½Ñα óßΓαÑτáÑΓ ßΓ᫬π:
-
- jmp DestLabel
-
- «¡ ÑΘÑ ¡Ñ ñ«Φѽ ñ« «»αÑñѽѡ¿∩ ¼ÑΓ¬¿ DestLabel. é ¿Γ«úÑ Æπαí« Çß-
- ßѼí½Ñα ¡Ñ ¼«ªÑΓ «»αÑñѽ¿Γ∞, ∩ó½∩ÑΓß∩ ½¿ φΓá ¼ÑΓ¬á ñá½∞¡Ñ⌐ ¿½¿
- í½¿ª¡Ñ⌐, ¿, Ñß½¿ «¡á í½¿ª¡∩∩ (SHORT ¿½¿ NEAR), ¼«ª¡« ½¿ ñ«ßΓ¿τ∞
- ÑÑ ß »«¼«Θ∞ε 1-íá⌐Γ«ó«ú« ß¼ÑΘÑ¡¿∩, ¿½¿ ñ½∩ φΓ«ú« ΓαÑíπÑΓß∩ »«½¡«Ñ
- 2-íá⌐Γ«ó«Ñ ß¼ÑΘÑ¡¿Ñ. é ¿Γ«úÑ, τΓ«íδ »α«ñ«½ª¿Γ∞ áßßÑ¼í½¿α«óá¡¿Ñ,
- Æπαí« ÇßßѼí½Ñαπ »α¿σ«ñ¿Γß∩ ñѽáΓ∞ »αÑñ»«½«ªÑ¡¿∩ « ¼ÑΓ¬Ñ
- DestLabel.
-
- Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ »αÑñ»«½«ª¿Γ∞, τΓ« φΓá ¼ÑΓ¬á ∩ó½∩ÑΓß∩
- ñá½∞¡Ñ⌐ (FAR), ¿ ºáαѺÑαó¿α«óáΓ∞ ñ½∩ ñá½∞¡Ñ⌐ ¿¡ßΓαπ¬µ¿¿ JMP 5
- íá⌐Γ«ó. Äñ¡á¬« í«½∞Φ¿¡ßΓó« »ÑαÑσ«ñ«ó »αÑñßΓáó½∩εΓ ß«í«⌐ 3-íá⌐Γ«-
- óδÑ í½¿ª¡¿Ñ »ÑαÑσ«ñδ, ¿ í佫 íδ αáßΓ«τ¿Γѽ∞¡δ¼ ΓαáΓ¿Γ∞ ½¿Φ¡¿Ñ 2
- íá⌐Γá ñ½∩ ¬áªñ«ú« í½¿ª¡Ñú« »ÑαÑσ«ñá ß« ßß佬«⌐ ó»ÑαÑñ. æ ñαπ-
- ú«⌐ ßΓ«α«¡δ, Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ »αÑñ»«½«ª¿Γ∞, τΓ« ¼ÑΓ¬π
- DestLabel ¼«ª¡« ñ«ßΓ¿τ∞ ß »«¼«Θ∞ε «ñ¡«íá⌐Γ«ó«ú« ß¼ÑΘÑ¡¿∩ ¿ ¿¡ß-
- Γαπ¬µ¿¿ JUMP SHORT. çñÑß∞ »α«í½Ñ¼á ß«ßΓ«¿Γ ó Γ«¼, τΓ« ¼¡«ú¿Ñ »Ñ-
- αÑσ«ñδ ¡Ñ ∩ó½∩εΓß∩ ¬«α«Γ¬¿¼¿, ¿ Ñß½¿ Æπαí« ÇßßѼí½Ñα ºáαѺÑαó¿α«-
- óá½ Γ«½∞¬« 2 íá⌐Γá, ¼«ªÑΓ ó«º¡¿¬¡πΓ∞ «Φ¿í¬á.
-
-
- TASM2 #3-5/䫬 = 25 =
-
- é ¬áτÑßΓóÑ ¬«¼»α«¼¿ßß¡«ú« αÑΦÑ¡¿∩ Æπαí« ÇßßѼí½Ñα »αÑñ»«½á-
- úáÑΓ, τΓ« óßÑ »ÑαÑσ«ñδ ß« ßßδ½¬á¼¿ ó»ÑαÑñ ∩ó½∩εΓß∩ í½¿ª¡¿¼¿, Ñß½¿
- óδ ¡Ñ ºáñáñ¿ΓÑ «íαáΓ¡«Ñ ß »«¼«Θ∞ε «»Ñαᵿ⌐ SHORT ¿½¿ FAR PTR. ä½∩
- »ÑαÑσ«ñ«ó ß« ßßδ½¬á¼¿ ó»ÑαÑñ óßÑúñá αѺÑαó¿απεΓß∩ Γα¿ íá⌐Γá. àß½¿
- «¬áªÑΓß∩, τΓ« »ÑαÑσ«ñ ñá½∞¡¿⌐, Γ« 󫺡¿¬áÑΓ «Φ¿í¬á. Å«φΓ«¼π óδ
- óßÑúñá ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ ñ½∩ 󫺼«ª¡«ßΓ¿ áßßÑ¼í½¿α«óá¡¿∩ »ÑαÑ-
- σ«ñ«ó ó»ÑαÑñ ¡á ñá½∞¡¿Ñ ¼ÑΓ¬¿ «»Ñαᵿε FAR PRT.
-
- æ ñαπú«⌐ ßΓ«α«¡δ, Ñß½¿ »ÑαÑσ«ñ ß« ßß佬«⌐ ó»ÑαÑñ «¬áºδóáÑΓß∩
- ¬«α«Γ¬¿¼, Æπαí« ÇßßѼí½Ñα Γαá¡ß½¿απÑΓ ¬«α«Γ¬¿⌐ »ÑαÑσ«ñ, ¡« ñ½∩
- ºá»«½¡Ñ¡¿∩ «ßΓáóΦ¿σß∩ 3 íá⌐Γ, ¬«Γ«αδÑ í뫨 ºáαѺÑαó¿α«óá¡δ ñ½∩
- »ÑαÑσ«ñá, ó¬½ετáÑΓ 3 «»Ñαᵿ¿ NOP. ìá»α¿¼Ñα, Æπαí« ÇßßѼí½Ñα áß-
- ßÑ¼í½¿απÑΓ ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- jmp DestLabel
- DestLabel:
- .
- .
- .
-
- ó ¬«ñ:
-
- .
- .
- .
- jmp SHORT DestLabel
- nop
- DestLabel:
- .
- .
- .
-
- ò«Γ∩ Γᬫ⌐ »ÑαÑσ«ñ αáí«ΓáÑΓ »αѬαáß¡« ¿ óδ»«½¡∩ÑΓß∩ íδßΓα«,
- «¡ ñ½¿¡¡ÑÑ, τѼ ΓαÑíπÑΓß∩. è«¡Ñτ¡«, τΓ«íδ »αÑóαáΓ¿Γ∞ ½εí«⌐ »ÑαÑ-
- σ«ñ ¡á ¼ÑΓ¬π ó»ÑαÑñ ó 2-íá⌐Γ«óπε ¿¡ßΓαπ¬µ¿ε, óδ ¼«ªÑΓÑ ¿ß»«½∞º«-
- óáΓ∞ «»Ñαᵿε SHORT. ì« φΓ« ¡Ñ Γᬠπñ«í¡«, ¬á¬ Ñß½¿ íδ Æπαí« Çß-
- ßѼí½Ñα ¿¼Ñ½ 󫺼«ª¡«ßΓ∞ úÑ¡Ñα¿α«óáΓ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ »ÑαÑσ«ñ
- áóΓ«¼áΓ¿τÑ߬¿.
-
- é᪡« »«¡¿¼áΓ∞, τΓ« «»ÑαѪáεΘá∩ ßßδ½¬á ¡Ñ ∩ó½∩ÑΓß∩ ºñÑß∞
- ¡Ñ»αÑ«ñ«½¿¼δ¼ »αÑ»∩ΓßΓó¿Ñ¼. àß½¿ íδ Æπαí« ÇßßѼí½Ñα º¡á½ αáßßΓ«∩-
- ¡¿Ñ ñ« µÑ½Ñó«⌐ ¼ÑΓ¬¿, Γ« ¼«ª¡« í佫 íδ áßßÑ¼í½¿α«óáΓ∞ ¡á¿í«½ÑÑ
- φΣΣÑ¬Γ¿ó¡δ⌐ »ÑαÑσ«ñ. ì« »α¿ ¿ß»«½∞º«óá¡¿¿ Γᬿσ ßß佫¬ Æπαí« Çß-
-
- TASM2 #3-5/䫬 = 26 =
-
- ßѼí½Ñα ¡Ñ ¼«ªÑΓ º¡áΓ∞ αáßßΓ«∩¡¿Ñ ñ« µÑ½Ñó«⌐ ¼ÑΓ¬¿, »«¬á «¡ ¡Ñ
- ñ«Φѽ ñ« ¡ÑÑ, ¿ ¡Ñ ¼«ªÑΓ ñ«ßΓ¿τ∞ φΓ«⌐ ¼ÑΓ¬¿, »«¬á «¡ ¡Ñ áßßÑ¼í½¿-
- α«óá½ «»Ñαᵿε πß½«ó¡«ú« »ÑαÑσ«ñá. Æπαí« ÇßßѼí½Ñα αáºαÑΦáÑΓ φΓπ
- ñ¿½Ñ¼¼π, ßñѽáó π»α«ΘÑ¡¡«Ñ »αÑñ»«½«ªÑ¡¿Ñ, τΓ« ñáÑΓ Ñ¼π 󫺼«ª-
- ¡«ßΓ∞ »α«ñ«½ªáΓ∞ αáí«Γπ, ¡« 󫺼«ª¡« µÑ¡«⌐ »«½πτÑ¡¿∩ ¬«ñá í«½∞ΦÑ-
- ú« «íΩѼá, τѼ φΓ« ¡Ñ«íσ«ñ¿¼«.
-
- è«úñá Æπαí« ÇßßѼí½Ñαπ ¿ºóÑßΓÑ¡ Γ¿» »ÑαÑσ«ñá (SHORT, NEAR
- ¿½¿ FAR), Γ« íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ß∩ ¼á¬ß¿¼á½∞¡« φΣΣÑ¬Γ¿ó¡δ⌐ ¬«ñ.
- ¡« »«ñóÑßΓ¿ ¿Γ«ú, Γ« »«½Ñº¡« ñ½∩ ¬«α«Γ¬¿⌐ »ÑαÑσ«ñ«ó ß« ßß佬«⌐
- ó»ÑαÑñ ¿ß»«½∞º«óáΓ∞ «»Ñαᵿε SHORT (¿, ¬«¡Ñτ¡«, «»Ñαᵿε FAR PTR
- ñ½∩ ñá½∞¡¿σ »ÑαÑσ«ñ«ó).
-
- ÅÑαÑσ«ñδ - φΓ« ¡Ñ Ññ¿¡ßΓóÑ¡¡δÑ ¿¡ßΓαπ¬µ¿¿, ó ¬«Γ«αδσ ß½ÑñπÑΓ
- ¿ºíÑúáΓ∞ ¿ß»«½∞º«óá¡¿∩ «»ÑαѪáεΘ¿σ ßß佫¬. ìÑφΣΣÑ¬Γ¿ó¡δ⌐ ¬«ñ ¼«-
- ªÑΓ Γá¬ªÑ úÑ¡Ñα¿α«óáΓ∞ß∩ »α¿ ¿ß»«½∞º«óá¡¿¿ ßß佫¬ ó»ÑαÑñ ¡á ñá¡-
- ¡δÑ. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ »α¿¼Ñα:
-
- .
- .
- .
- .CODE
- .
- .
- .
- mov bl,Value
- .
- .
- .
- Value EQU 1
- .
- .
- .
-
- è«úñá Æπαí« ÇßßѼí½Ñα ñ«ßΓ¿úáÑΓ ¿¡ßΓαπ¬µ¿¿ MOV, Γ« ¡Ñ󫺼«ª-
- ¡« «»αÑñѽ¿Γ∞, »αÑñßΓáó½∩ÑΓ ½¿ ß«í«⌐ Value »α¿αáó¡Ñ¡¡πε ¼ÑΓ¬π ¿½¿
- »ÑαѼѡ¡πε ó »á¼∩Γ¿. àß½¿ Value - φΓ« »ÑαѼѡ¡á∩ ó »á¼∩Γ¿, Γ«
- »«ΓαÑíπÑΓß∩ 4-íá⌐Γ«óá∩ ¿¡ßΓαπ¬µ¿∩, á Ñß½¿ Value - φΓ« »α¿αáó¡Ñ¡-
- ¡á∩ ¼ÑΓ¬á (¡á»α¿¼Ñα, ¬«Γ«αá∩ ¿ß»«½∞ºπÑΓß∩, ¬á¬ ¬«¡ßΓá¡Γá), Γ«
- ¡πª¡á 2-íá⌐Γ«óá∩ ¿¡ßΓαπ¬µ¿∩.
-
- èᬠ«íδτ¡«, τΓ«íδ »α«ñ«½ª¿Γ∞ áßßÑ¼í½¿α«óá¡¿Ñ, Æπαí« ÇßßѼí-
- ½Ñα ñ«½ªÑ¡ »αÑñ»«½«ª¿Γ∞ σπñΦ¿⌐ ß½πτá⌐, »«φΓ«¼π ñ½∩ ¿¡ßΓαπ¬µ¿¿
- MOV αѺÑαó¿απÑΓß∩ 4 íá⌐Γá. è«úñá ºáΓѼ íπñÑΓ ñ«ßΓ¿ú¡πΓá ¼ÑΓ¬á
- Value ¿ «¬áªÑΓß∩, τΓ« φΓ« »α¿αáó¡Ñ¡¡á∩ ¼ÑΓ¬á, á ¡Ñ »ÑαѼѡ¡á∩ ó
- »á¼∩Γ¿, Γ« Æπαí« ÇßßѼí½Ñα ó«ºóαáΘáÑΓß∩ ¬ ¿¡ßΓαπ¬µ¿¿ MOV ¿ Σ«α¼¿-
-
- TASM2 #3-5/䫬 = 27 =
-
- απÑΓ 2-íá⌐Γ«óπε ¿¡ßΓαπ¬µ¿ε ß «»Ñαá¡ñ«¼-¬«¡ßΓá¡Γ«⌐ ¿, τΓ«íδ ºá»«½-
- ¡¿Γ∞ ºáαѺÑαó¿α«óá¡¡δÑ ΓαÑΓ¿⌐ ¿ τÑΓóÑαΓδ⌐ íá⌐Γδ, ñ«½ªÑ¡ ó¬½ετ¿Γ∞
- ñóÑ ¿¡ßΓαπ¬µ¿¿ NOP. çá¼ÑΓ¿¼, τΓ« ¡¿τÑú« φΓ«ú« ¡Ñ ß½πτ¿½«ß∞ íδ,
- Ñß½¿ íδ Value íδ½á «»αÑñÑ½Ñ¡á »ÑαÑñ ¿¡ßΓαπ¬µ¿Ñ⌐ MOV, Γᬠ¬á¬ Æπα-
- í« ÇßßѼí½Ñα º¡á½ íδ, τΓ« Value - φΓ« ¡Ñ »ÑαѼѡ¡á∩ ó »á¼∩Γ¿.
-
- öá¬Γ¿τÑ߬¿, »α¿ ¿ß»«½∞º«óá¡¿¿ «íαáΓ¡δσ ßß佫¬ ¡¿ «ñ¡á ¿º
- π¬áºá¡¡δσ »α«í½Ñ¼ ¡Ñ 󫺡¿¬áÑΓ, Γᬠ¬á¬ Æπαí« ÇßßѼí½Ñα óßÑúñá
- º¡áÑΓ « Γᬿσ ¼ÑΓ¬áσ óßÑ, τΓ« Ѽπ ¡πª¡«. é αѺπ½∞ΓáΓÑ ñ½∩ ΓÑσ ¿¡-
- ßΓαπ¬µ¿⌐, úñÑ ¿ß»«½∞ºπεΓß∩ «íαáΓ¡δÑ ßß佬¿, «¡ áßßÑ¼í½¿απÑΓ ¬«ñ ß
- ¼á¬ß¿¼á½∞¡« 󫺼«ª¡«⌐ φΣΣÑ¬Γ¿ó¡«ßΓ∞ε. ÄΓßεñá ¼«ª¡« ºá¬½ετ¿Γ∞, τΓ«
- ªÑ½áΓѽ∞¡« Γá¼, úñÑ φΓ« 󫺼«ª¡«, ¿ºíÑúáΓ∞ ¿ß»«½∞º«óá¡¿∩ «»ÑαѪá-
- εΘ¿σ ßß佫¬.
-
- éδ ¼«ªÑΓÑ »«ñπ¼áΓ∞, ¡Ñ ∩ó½∩ÑΓß∩ ½¿ »α«í½Ñ¼á «»ÑαѪáεΘ¿σ ßßδ-
- ½«¬ ßΓ«½∞ ªÑ ßÑα∞Ѻ¡«⌐ ñ½∩ ó맮ó«ó, ¬á¬ ñ½∩ »ÑαÑσ«ñ«ó? ÄΓóÑΓ
- ºñÑß∞ «Γα¿µáΓѽ∞¡δ⌐. äá½∞¡¿Ñ ó맮óδ ß« ßßδ½¬á¼¿ ó»ÑαÑñ ñ«½ª¡δ
- ¿¼ÑΓ∞ »ÑαÑ«»αÑñѽѡ¿∩ Γ¿»á FAR PTR, Γᬠ¬á¬ Æπαí« ÇßßѼí½Ñα »αÑñ-
- »«½áúáÑΓ, τΓ« ó맮óδ ß «»ÑαѪáεΘ¿¼¿ ßßδ½¬á¼¿ ∩ó½∩εΓß∩ í½¿ª¡¿¼¿.
- ū߬«½∞¬π «ΓßπΓßΓóπεΓ Γá¬¿Ñ óÑΘ¿, ¬á¬ ¬«α«Γ¬¿⌐ ó맮ó, Γ« ¡ÑφΣΣѬ-
- Γ¿ó¡δ⌐ ¬«ñ ñ½∩ ó맮ó«ó ¡¿¬«úñá ¡Ñ úÑ¡Ñα¿απÑΓß∩.
-
- î¡«ú¿Ñ «»ÑαѪáεΘ¿Ñ ßß佬¿ »α¿ó«ñ∩Γ ¬ «Φ¿í¬á¼ áßßÑ¼í½¿α«óá-
- ¡¿∩, á ¡Ñ ¬ ¡ÑφΣΣÑ¬Γ¿ó¡«¼π ¬«ñπ. ìá»α¿¼Ñα, «»ÑαѪáεΘ¿Ñ ßß佬¿ ¡á
- »α¿αáó¡Ñ¡¡πε ¼ÑΓ¬π ¡Ñ ¼«úπΓ áßßÑ¼í½¿α«óáΓ∞ß∩, á «»ÑαѪáεΘ¿Ñ ßßδ½-
- ¬¿ ¡á ñá½∞¡¿Ñ ¼ÑΓ¬¿ ¡Ñ ¼«úπΓ áßßÑ¼í½¿α«óáΓ∞ß∩ íѺ »ÑαÑ«»αÑñѽѡ¿∩
- Γ¿»á.
-
- äáªÑ Ñß½¿ Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ úÑ¡Ñα¿α«óáΓ∞ φΣΣÑ¬Γ¿ó¡δ⌐ ¬«ñ
- ñ½∩ «»ÑαѪáεΘ¿σ ßß佫¬, áßßÑ¼í½¿α«óá¡¿Ñ óδ»«½¡∩ÑΓß∩ ¼Ññ½Ñ¡¡ÑÑ,
- τѼ ñ½∩ «íαáΓ¡δσ ßß佫¬. ¥Γ« »α«¿ßσ«ñ¿Γ ¿º-ºá Γ«ú«, τΓ« Æπαí« Çß-
- ßѼí½Ñα ñ«½ªÑ¡ ó«ºóαáΘáΓ∞ß∩ ¬ ¬áªñ«⌐ ¿¡ßΓαπ¬µ¿¿ ß «»ÑαѪáεΘÑ⌐
- ßß佬«⌐ ¿ ñ«½ª¡δ¼ «íαẫ¼ ÑÑ áßßÑ¼í½¿α«óáΓ∞, »«ß½Ñ Γ«ú« ¬á¬ º¡á-
- τÑ¡¿Ñ ¿ Γ¿» ¼ÑΓ¬¿ ßΓ὿ ¿ºóÑßΓ¡δ.
-
- éδó«ñ ∩ßÑ¡: ¡á߬«½∞¬« φΓ« 󫺼«ª¡«, ó »α«úαá¼¼Ñ ¡πª¡« ¿ºíÑ-
- úáΓ∞ ßß佫¬ ó»ÑαÑñ, τΓ« »«ºó«½¿Γ Æπαí« ÇßßѼí½Ñαπ ßúÑ¡Ñα¿α«óáΓ∞
- ¡á¿í«½ÑÑ φΣΣÑ¬Γ¿ó¡δ⌐ ¬«ñ ºá ¼¿¡¿¼á½∞¡«Ñ óαѼ∩. ìá»α¿¼Ñα, »«½Ñº¡«
- αẼÑΘáΓ∞ «»αÑñѽѡ¿∩ ñá¡¡δσ ó ¡áτá½Ñ ¿ßσ«ñ¡«ú« ¼«ñπ½∩, ñ« Γ«ú«,
- ¬á¬ ¡á ¡¿σ ßßδ½áÑΓß∩ ¬«ñ. è«úñá óδ ¡Ñ ¼«ªÑΓÑ ¿ºíѪáΓ∞ «»ÑαѪáεΘ¿σ
- ßß佫¬, Γ« óßÑúñá ¿ß»«½∞ºπ⌐ΓÑ «»Ñαáµ¿ε «»αÑñѽѡ¿∩ Γ¿»á, τΓ« »«º-
- ó«½¿Γ Æπαí« ÇßßѼí½Ñαπ Γ«τ¡« º¡áΓ∞, ß ¬á¬¿¼ Γ¿»«¼ ¼ÑΓ¬¿ óδ αáí«-
- ΓáÑΓÑ. àß½¿ óδ ß »«¼«Θ∞ε »áαá¼ÑΓαá /m ºáñáÑΓÑ ¡Ñ߬«½∞¬« »α«σ«ñ«ó,
- Γ« íπñÑΓ ßúÑ¡Ñα¿α«óá¡ «»Γ¿¼á½∞¡δ⌐ ¬«ñ, ¡« »α«µÑßß áßßÑ¼í½¿α«óá¡¿∩
- »«ΓαÑíπÑΓ í«½∞ΦÑú« óαѼѡ¿, τѼ »α¿ «ñ¡«¼ »α«σ«ñÑ.
-
-
- TASM2 #3-5/䫬 = 28 =
-
-
- êß»«½∞º«óá¡¿Ñ í½«¬«ó »«óΓ«αÑ¡¿∩ ¿ ¼á¬α«¬«¼á¡ñ
- ---------------------------------------------------------------
-
- Äñ¡á ¿º αáí«Γ, ¬«Γ«απε ¬«¼»∞εΓÑα »αѬαáß¡« óδ»«½¡∩ÑΓ - φΓ«
- »«óΓ«α∩εΘ¿Ñß∩ ñÑ⌐ßΓó¿∩. éδ ¼«ªÑΓÑ πΓ«¼¿Γ∞ß∩ »α¿ óó«ñÑ ñÑß∩Γ¬«ó
- º¡áτÑ¡¿⌐ ñ½∩ ñ¿αÑ¬Γ¿ó DB ¿½¿ ¼á½« «Γ½¿τáεΘ¿σß∩ óáα¿á¡Γ«ó «ñ¡«ú« ¿
- Γ«ú« ªÑ ¿ßσ«ñ¡«ú« ¬«ñá, ¡« ¬«¼»∞εΓÑα ¡¿¬«úñá ¡Ñ πßΓá¡ÑΓ «Γ Γá-
- ¬«⌐ αáí«Γδ. ùΓ«íδ «ßó«í«ñ¿Γ∞ óáß «Γ Γᬫú« α«ñá ¼«¡«Γ«¡¡δσ «»Ñαá-
- µ¿⌐, ó Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«ΓαÑ¡δ ¼á¬α«¬«¼á¡ñδ ¿ í½«¬¿ »«óΓ«-
- αÑ¡¿∩.
-
- ü½«¬¿ »«óΓ«αÑ¡¿∩
- -----------------------------------------------------------------
-
- ü½«¬ »«óΓ«αÑ¡¿∩ ¡áτ¿¡áÑΓß∩ ß ñ¿αÑ¬Γ¿óδ REPT ¿ ºá¬á¡τ¿óáÑΓß∩
- ñ¿αÑ¬Γ¿ó«⌐ ENDM. è«ñ í½«¬á »«óΓ«αÑ¡¿∩ áßßÑ¼í½¿απÑΓß∩ Γ« τ¿ß½«
- αáº, ¬«Γ«α«Ñ ºáñáÑΓß∩ «»Ñαá¡ñ«¼ ñ¿αÑ¬Γ¿óδ REPT. ìá»α¿¼Ñα, »α¿ áß-
- ßÑ¼í½¿α«óá¡¿¿ ¿¡ßΓαπ¬µ¿⌐:
-
- .
- .
- .
- REPT 10
- DW 0
- ENDM
- .
- .
- .
-
- úÑ¡Ñα¿απÑΓß∩ ëà ªÑ ¬«ñ, τΓ« ¿ »α¿ áßßÑ¼í½¿α«óá¡¿¿ ¿¡ßΓαπ¬µ¿⌐:
-
- .
- .
- .
- DW 0
- DW 0
- DW 0
- DW 0
- DW 0
- DW 0
- DW 0
- DW 0
- DW 0
- DW 0
- .
-
- TASM2 #3-5/䫬 = 29 =
-
- .
- .
-
- ¥Γ« ¡Ñ ñ«½ª¡« óáß πñ¿ó½∩Γ∞, »«ß¬«½∞¬π Γ«ªÑ ßá¼«Ñ ¼«ª¡« ßñÑ-
- ½áΓ∞ ß »«¼«Θ∞ε:
-
- DW 10 DUP (0)
-
- 欫¼í¿¡¿απѼ í½«¬¿ »«óΓ«αÑ¡¿∩ ¿ ñ¿αÑ¬Γ¿óπ = ñ½∩ ß«ºñá¡¿∩
- Γáí½¿µδ »Ñαóδσ ñÑß∩Γ¿ µÑ½δσ τ¿ßѽ:
-
- .
- .
- .
- IntVal = 0
- REPT 10
- DW IntVal
- IntVal = IntVal+1
- ENDM
- .
- .
- .
-
- Åα¿ φΓ«¼ úÑ¡Ñα¿απÑΓß∩ ß½ÑñπεΘ¿⌐ φ¬ó¿óá½Ñ¡Γ:
-
- .
- .
- .
- DW 0
- DW 1
- DW 2
- DW 3
- DW 4
- DW 5
- DW 6
- DW 7
- DW 8
- DW 9
- .
- .
- .
-
- Å«»α«íπ⌐ΓÑ ßñѽáΓ∞ φΓ« ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ DUP! èα«¼Ñ Γ«ú«,
- Ñß½¿ óδ ºáσ«Γ¿ΓÑ »«½πτ¿Γ∞ 100 »Ñαóδσ µÑ½δσ τ¿ßѽ, óá¼ »«ΓαÑíπÑΓß∩
- Γ«½∞¬« ¿º¼Ñ¡¿Γ∞ º¡áτÑ¡¿Ñ «»Ñαá¡ñá ñ¿αÑ¬Γ¿óδ REPT ¡á 100: φΓ«, ¬«-
- ¡Ñτ¡«, ½ÑúτÑ, τѼ óó«ñ¿Γ∞ 100 ßΓ᫬.
-
- TASM2 #3-5/䫬 = 30 =
-
-
- Äñ¡« ¿º »αѬαáß¡δσ »α¿¼Ñ¡Ñ¡¿⌐ ñ¿αÑ¬Γ¿óδ REPT ß«ßΓ«¿Γ ó úÑ¡Ñ-
- αᵿ¿ Γáí½¿µ, ¿ß»«½∞ºπεΘ¿σß∩ ñ½∩ íδßΓα«ú« π¼¡«ªÑ¡¿∩ ¿ ñѽѡ¿∩.
- ìá»α¿¼Ñα, ñá½ÑÑ »ÑαѼ¡«ªáεΓß∩ τ¿ß½á «Γ 0 ñ« 99 (¬«Γ«αδÑ σαá¡∩Γß∩
- ó BX) ¡á 10 («τÑ¡∞ íδßΓα«), á αѺπ½∞ΓáΓ »«¼ÑΘáÑΓß∩ ó αÑú¿ßΓα AX.
-
- .DATA
- TableOfMultipleOf10 LABEL WORD
- BaseVal = 0
- REPT 100
- DW BaseVal
- BaseVal = BaseVal+10
- ENDM
- .
- .
- .
- .CODE
- .
- .
- .
- shl bx,1 ; »«ñú«Γ«ó¬á ñ½∩ »«¿ß¬á ó Γáí½¿µÑ
- ; ºá»¿ßÑ⌐ αẼÑα«¼ ó ß½«ó«
- mov ax,[TableOfMultiplesOf10+bx] ; »«¿ß¬ αѺπ½∞ΓáΓá
- ; π¼¡«ªÑ¡¿∩ ¡á 10
- .
- .
- .
-
-
- ê¼Ñ⌐ΓÑ ó ó¿ñπ, τΓ« ΓѬßΓ ó í½«¬Ñ »«óΓ«αÑ¡¿∩ »α«ßΓ« áßßÑ¼í½¿-
- απÑΓß∩ ßΓ«½∞¬« αáº, ߬«½∞¬« π¬áºá¡« ó «»Ñαá¡ñÑ ñ¿αÑ¬Γ¿óδ REPT.
- ìÑΓ αạ¿µδ ¼Ñªñπ 10-¬αáΓ¡δ¼ óδ»«½¡Ñ¡¿Ñ¼ í½«¬á »«óΓ«αÑ¡¿∩ ¿ ß«º-
- ñ᡿Ѽ 9 ñ«»«½¡¿Γѽ∞¡δσ ¬«»¿⌐ ¬«ñá ó φΓ«¼ í½«¬Ñ ¿ áßßÑ¼í½¿α«óá¡¿-
- Ѽ 10 óσ«ªñÑ¡¿⌐ φΓ«ú« ¬«ñá.
-
- ¥Γ« «º¡áτáÑΓ, τΓ« ó¡πΓα¿ í½«¬á »«óΓ«αÑ¡¿∩ ¼«ª¡« αẼÑßΓ¿Γ∞
- ½εí«⌐ ñ«»πßΓ¿¼δ⌐ ¬«ñ, ó¬½ετá∩ ¿¡ßΓαπ¬µ¿¿. ìá»α¿¼Ñα, ñá½ÑÑ úÑ¡Ñα¿-
- απÑΓß∩ ¬«ñ ñ½∩ ñѽѡ¿∩ 32-í¿Γ«ó«ú« íѺº¡á¬«ó«ú« º¡áτÑ¡¿∩ ó αÑ-
- ú¿ßΓαáσ DX:AX ¡á 16:
-
- .
- .
- .
- REPT 4
- shr dx,1
- rcr ax,1
-
- TASM2 #3-5/䫬 = 31 =
-
- ENDM
- .
- .
- .
-
- ü½«¬¿ »«óΓ«αÑ¡¿∩ ¼«úπΓ íδΓ∞ 󽫪ѡ¡δ¼¿. ìá»α¿¼Ñα, ñá½ÑÑ úÑ-
- ¡Ñα¿απÑΓß∩ 10 ¿¡ßΓαπ¬µ¿⌐ NOP:
-
- .
- .
- .
- REPT 5
- REPT 2
- nop
- ENDM
- ENDM
- .
- .
- .
-
- ü½«¬¿ »«óΓ«αÑ¡¿∩ ¿ »áαá¼ÑΓαδ-»ÑαѼѡ¡δÑ
- -----------------------------------------------------------------
-
- Åáαá¼ÑΓα-»ÑαѼѡ¡á∩ í½«¬á »«óΓ«αÑ¡¿∩ ¼«ªÑΓ ºáñáóáΓ∞ß∩ ß »«-
- ¼«Θ∞ε ñ¿αÑ¬Γ¿ó IRP ¿ IRPC.
-
- ä¿αÑ¬Γ¿óá IRP »«ñßΓáó½∩ÑΓ »Ñαóπε ºá»¿ß∞ ó ß»¿ß¬Ñ »áαá¼ÑΓαá
- »α¿ »Ñαó«¼ »«óΓ«αÑ¡¿¿ í½«¬á, óΓ«απε ºá»¿ß∞ - »α¿ óΓ«α«¼ »«óΓ«αÑ-
- ¡¿¿ í½«¬á ¿ Γ.ñ. ñ« ΓÑσ »«α, »«¬á ß»¿ß«¬ ¡Ñ íπñÑΓ ¿ßτÑα»á¡. ìá»-
- α¿¼Ñα, ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- IRP PARM,<0,1,4,9,16,25>
- DB PARM
- ENDM
- .
- .
- .
-
- úÑ¡Ñα¿απεΓ:
-
- .
- .
-
- TASM2 #3-5/䫬 = 32 =
-
- .
- DB 0
- DB 1
- DB 4
- DB 9
- DB 16
- DB 25
- .
- .
- .
-
- ä¿αÑ¬Γ¿óá IRPC αáí«ΓáÑΓ á¡á½«ú¿τ¡«, Γ«½∞¬« «¡á »«ñßΓáó½∩ÑΓ
- ñ½∩ ¬áªñ«ú« »«óΓ«αÑ¡¿∩ í½«¬á «ñ¿¡ ß¿¼ó«½ ¿º ßΓ᫬¿. æ½ÑñπεΘ¿⌐ ¬«ñ
- πßΓá¡áó½¿óáÑΓ Σ½áú ¡π½∩, Ñß½¿ αÑú¿ßΓα AL αáóÑ¡ «ñ¡«¼π ¿º ß¿¼ó«½«ó
- ó ßΓ᫬Ñ, ∩ó½∩εΘÑ⌐ß∩ óΓ«αδ¼ áαúπ¼Ñ¡Γ«¼ IRPC:
-
- .
- .
- .
- IRPC TEST_CHAR,azklg
- cmp al,'&TEST_CHAR&'
- jz EndCompare
- ENDM
- EndCompare:
- .
- .
- .
-
- Ǽ»Ñαßá¡ñ (&) ó »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ ¿ß»«½∞ºπÑΓß∩ ñ½∩ Γ«ú«,
- τΓ«íδ ºáñáΓ∞ óδτ¿ß½Ñ¡¿Ñ »áαá¼ÑΓαá í½«¬á »«óΓ«αÑ¡¿∩ ñáªÑ ó¡πΓα¿
- ¬áóδτѬ. Ǽ»Ñαßá¡ñ - φΓ« ¼á¬α««»Ñαᵿ∩, ¬«Γ«αá∩ αáí«ΓáÑΓ ó í½«¬Ñ
- »«óΓ«αÑ¡¿∩, »«ß¬«½∞¬π í½«¬¿ »«óΓ«αÑ¡¿∩ »αÑñßΓáó½∩εΓ ß«í«⌐ «ñ¿¡ ¿º
- Γ¿»«ó ¼á¬α«¬«¼á¡ñδ. çñÑß∞ ñ«»π߬áÑΓß∩ »α¿¼Ñ¡∩Γ∞ Γá¬ªÑ ñαπú¿Ñ ¼á¬-
- α«ßαÑñßΓóá, ΓᬿÑ, ¬á¬ ñ¿αÑ¬Γ¿óδ LOCAL ¿ EXITM. Äí φΓ«¼ ¼δ αáß-
- ߬áªÑ¼ »«ºñ¡ÑÑ.
-
- îá¬α«¬«¼á¡ñδ
- -----------------------------------------------------------------
-
- æπΓ∞ αáí«Γδ ¼á¬α«¬«¼á¡ñδ óÑß∞¼á »α«ßΓá: óδ »α¿ßóá¿óáÑΓÑ ¿¼∩
- í½«¬π ΓѬßΓá (¼á¬α«¬«¼á¡ñÑ), ºáΓѼ, ¬«úñá Æπαí« ÇßßѼí½Ñα «í¡áαπ-
- ª¿óáÑΓ φΓ« ¿¼∩ ó ¿ßσ«ñ¡«¼ ¬«ñÑ, Γ« áßßÑ¼í½¿απÑΓß∩ ßó∩ºá¡¡δσ ß
- φΓ¿¼ ¿¼Ñ¡Ñ¼ ΓѬßΓ. ¡« ßτ¿ΓáΓ∞, τΓ« ¿¼∩ ¼á¬α«¬«¼á¡ñδ αáßΦ¿α∩ÑΓ-
- ß∩ ñ« »«½¡«ú« ΓѬßΓá φΓ«⌐ ¼á¬α«¬«¼á¡ñδ, »«φΓ«¼π ñ½∩ «»¿ßá¡¿∩
- »«ñßΓá¡«ó¬¿ ΓѬßΓá ¼á¬α«¬«¼á¡ñδ ó¼ÑßΓ« ÑÑ ¿¼Ñ¡¿ τáßΓ« ¿ß»«½∞ºπÑΓ-
-
- TASM2 #3-5/䫬 = 33 =
-
- ß∩ ΓÑନ¡ "¼á¬α«αáßΦ¿αÑ¡¿Ñ".
-
- Å«½Ñº¡«⌐ á¡á½«ú¿Ñ⌐ ºñÑß∞ ¼«ªÑΓ ß½πª¿Γ∞ ó¬½ετáѼδ⌐ Σá⌐½. è«ú-
- ñá Æπαí« ÇßßѼí½Ñα óßΓαÑτáÑΓ ñ¿αÑ¬Γ¿óπ INCLUDE, Γ« áßßÑ¼í½¿απÑΓß∩
- ΓѬßΓ, ß«ñÑαªáΘ¿⌐ß∩ ó ºáñá¡¡«¼ Σá⌐½Ñ (¬á¬ Ñß½¿ íδ «¡ ß«ñÑαªá½ß∩ ó
- ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ, úñÑ ¿ß»«½∞ºπÑΓß∩ ñ¿αÑ¬Γ¿óá INCLUDE). àß½¿ «í¡á-
- απª¿óáÑΓß∩ óΓ«αá∩ ñ¿αÑ¬Γ¿óá INCLUDE ß ΓѼ ªÑ ¿¼Ñ¡Ñ¼ Σá⌐½á, Γ«
- Æπαí« ÇßßѼí½Ñα ß¡«óá áßßÑ¼í½¿απÑΓ φëà ΓѬßΓ.
-
- îá¬α«¬«¼á¡ñδ á¡á½«ú¿τ¡δ ó¬½ετáÑ¼δ¼ Σá⌐½á¼ ó Γ«¼ »½á¡Ñ, τΓ«
- ΓѬßΓ ¿½¿ Γѽ« ¼á¬α«¬«¼á¡ñδ áßßÑ¼í½¿απÑΓß∩ ¬áªñδ⌐ αáº, ¬«úñá «í-
- ¡áαπª¿óáÑΓß∩ ¿¼∩ ¼á¬α«¬«¼á¡ñδ. Äñ¡á¬« ¼á¬α«¬«¼á¡ñδ «Γ½¿τáεΓß∩
- º¡áτ¿Γѽ∞¡« í«½∞ΦÑ⌐ ú¿í¬«ßΓ∞ε, τѼ ó¬½ετáѼδÑ Σá⌐½δ, Γᬠ¬á¬ ¿¼
- ¼«úπΓ »ÑαÑñáóáΓ∞ß∩ »áαá¼ÑΓαδ ¿ «¡¿ ¼«úπΓ ß«ñÑαªáΓ∞ ½«¬á½∞¡δÑ ¼ÑΓ-
- ¬¿. Ä¡¿ «íαáíáΓδóáεΓß∩ º¡áτ¿Γѽ∞¡« íδßΓαÑÑ, τѼ ó¬½ετáѼδÑ Σá⌐½δ,
- Γᬠ¬á¬ ΓѬßΓ ¼á¬α«¬«¼á¡ñδ ¡Ñ ΓαÑíπÑΓß∩ τ¿ΓáΓ∞ ß ñ¿ß¬á (¬á¬
- Σá⌐½). äáóá⌐ΓÑ αáßß¼«Γα¿¼ «ß¡«óδ αáí«Γδ ¼á¬α«¬«¼á¡ñ.
-
- é ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ¼á¬α«¬«¼á¡ñá MULTIPLY_BY_4
- ¿ß»«½∞ºπÑΓß∩ ñ½∩ π¼¡«ªÑ¡¿∩ º¡áτÑ¡¿∩ ó αÑú¿ßΓαÑ AX ¡á 4 ¿ ß«σαá¡Ñ-
- ¡¿∩ αѺπ½∞ΓáΓá ó αÑú¿ßΓαáσ DX:AX:
-
- .
- .
- .
- MULTIPLY_BY_4 MACRO
- sub dx,dx
- shl ax,1
- rcl dx,1
- shl ax,1
- rcl dx,1
- ENDM
- .
- .
- .
- mov ax,[MemVar]
- MULTIPLY_BY_4
- mov WORD PTR [Result],ax
- mov WORD PTR [Result+2],dx
- .
- .
- .
-
- è«úñá Æπαí« ÇßßѼí½Ñα óßΓαÑτáÑΓ ¿¼∩ ¼á¬α«¬«¼á¡ñδ MULTIPLY_BY
- _4, «¡ áßßÑ¼í½¿απÑΓ ó φΓ«⌐ Γ«τ¬Ñ 4 ¿¡ßΓαπ¬µ¿¿, ß«ßΓáó½∩εΘ¿Ñ Γѽ«
- ¼á¬α«¬«¼á¡ñδ. ¥Γ« »«τΓ¿ Γ«ªÑ ßἫÑ, ¬á¬ Ñß½¿ íδ½á «»αÑñÑ½Ñ¡á ¡«-
-
- TASM2 #3-5/䫬 = 34 =
-
- óá∩ ¿¡ßΓαπ¬µ¿∩ MULTIPLY_BY_4, ¬«Γ«αá∩ ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ Γ«τ¡«
- ΓᬪÑ, ¬á¬ óδ ¿ß»«½∞ºπÑΓÑ ¿¡ßΓαπ¬µ¿¿ MOV ¿½¿ MUL. è«¡Ñτ¡«, ¡«óá∩
- ¼á¬α«¿¡ßΓαπ¬µ¿∩ ß«ßΓ«¿Γ ¿º 5 ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086, ¡« »α¿-
- óÑñÑ¡¡δ⌐ óδΦÑ ¬«ñ ú«αáºñ« ½ÑúτÑ τ¿ΓáÑΓß∩, Ñß½¿ ¿ß»«½∞º«óáΓ∞ ¼á¬-
- ᫬«¼á¡ñπ, τѼ íѺ ¡ÑÑ.
-
- é¼ÑßΓ« ¼á¬α«¬«¼á¡ñδ ó ñá¡¡«¼ »α¿¼ÑαÑ óδ ¼«ú½¿ íδ ß αáó¡δ¼
- πß»Ñσ«¼ ¿ß»«½∞º«óáΓ∞ »«ñ»α«úαá¼¼π ß ¿¼Ñ¡Ñ¼ MyltiplyBy4:
-
- .
- .
- .
- MultiplyBy4 PROC
- sub dx,dx
- shl ax,1
- rcl dx,1
- shl ax,1
- rcl dx,1
- ret
- MultiplyBy4 ENDP
- .
- .
- .
- mov ax,[MemVar]
- call MultiplyBy4
- mov WORD PTR [Result],ax
- mov WORD PTR [Result+2],dx
- .
- .
- .
-
- ùΓ« ½πτΦÑ óδíαáΓ∞, »«ñ»α«úαá¼¼π ¿½¿ ¼á¬α«¬«¼á¡ñπ? é «íΘѼ
- ß½πτáÑ ¬«ñ ¼Ñ¡∞ΦÑú« «íΩÑ¼á ¼«ª¡« »«½πτ¿Γ∞, Ñß½¿ ¿ß»«½∞º«óáΓ∞
- »«ñ»α«úαá¼¼π, »«ß¬«½∞¬π ÑÑ ¬«ñ áßßÑ¼í½¿απÑΓß∩ Γ«½∞¬« «ñ¿¡ αáº, á
- ó ΓÑ½Ñ »α«úαá¼¼δ ß«ñÑαªáΓß∩ ó맮óδ. Äñ¡á¬« í«½ÑÑ íδßΓαδ⌐ ¬«ñ ¼«ª-
- ¡« »«½πτ¿Γ∞ ß »«¼«Θ∞ε ¼á¬α«¬«¼á¡ñ, »«ß¬«½∞¬π ºñÑß∞ ¡Ñ ΓÑα∩ÑΓß∩
- óαѼ∩ ¡á «Γαáí«Γ¬π ¿¡ßΓαπ¬µ¿⌐ CALL ¿ RET. èα«¼Ñ Γ«ú« «ñ¡π ¿ Γπ ªÑ
- ¼á¬α«¬«¼á¡ñπ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ úÑ¡Ñαᵿ¿ ñ½∩ á¡á½«ú¿τ¡δσ ºá-
- ñáτ ß½Ñú¬á «Γ½¿τáεΘÑú«ß∩ ¬«ñá, á »«ñ»α«úαá¼¼π ¡ÑΓ.
-
- é «íΘѼ ß½πτáÑ ½πτΦÑ ¿ß»«½∞º«óáΓ∞ »«ñ»α«úαá¼¼δ ñ½∩ ¼¿¡¿¼¿ºá-
- µ¿¿ «íΩÑ¼á ¬«ñá ¿ ¼á¬α«¬«¼á¡ñδ ñ½∩ πóѽ¿τÑ¡¿∩ ߬«α«ßΓ¿ ¿ ú¿í¬«ß-
- Γ¿.
-
- èᬫú« α«ñá ú¿í¬«ßΓ∞ »αÑñ«ßΓáó½∩ÑΓ ¼á¬α«¬«¼á¡ñá? ¥Γá ú¿í-
- ¬«ßΓ∞ «úαá¡¿τ¿óáÑΓß∩ Γ«½∞¬« óáΦ¿¼ ó««íαáªÑ¡¿Ñ¼, Γᬠ¬á¬ ¼á¬α«¬«-
-
- TASM2 #3-5/䫬 = 35 =
-
- ¼á¡ñδ ¼«úπΓ ó«ß»α¿¡¿¼áΓ∞ »áαá¼ÑΓαδ ¿ ß«ñÑαªáΓ∞ ñ¿αÑ¬Γ¿óδ πß½«ó¡«-
- ú« áßßÑ¼í½¿α«óá¡¿∩. Åáαá¼ÑΓαδ ¼á¬α«¬«¼á¡ñδ π¬áºδóáεΓß∩, ¬á¬
- «»Ñαá¡ñδ ñ¿αÑ¬Γ¿óδ MACRO. ìá»α¿¼Ñα, VALUE ¿ LENGTH - φΓ« »áαá¼ÑΓ-
- αδ ¼á¬α«¬«¼á¡ñδ FILL_ARRAY, ¬«Γ«αá∩ «»αÑñѽѡá ß½ÑñπεΘ¿¼ «íαá-
- º«¼:
-
- .
- .
- .
- FILL_ARRAY MACRO VALUE,LENGTH
- REPT LENGTH
- DB VALUE
- ENDM
- ENDM
- .
- .
- .
-
- Åα¿ ó맮óÑ ¼á¬α«¬«¼á¡ñδ ÑÑ »áαá¼ÑΓαδ ¼«ª¡« π¬áºδóáΓ∞, ¬á¬
- «»Ñαá¡ñδ ó맮óá ¼á¬α«¬«¼á¡ñδ. ìá»α¿¼Ñα, ¼á¬α«¬«¼á¡ñπ FILL_ARRAY
- ¼«ª¡« óδºδóáΓ∞, ¬á¬:
-
- .
- .
- .
- ByteArray LABEL BYTE
- FILL_ARRAY 2,9
- .
- .
- .
-
- Åáαá¼ÑΓαδ, ¬«Γ«αδÑ π¬áºδóáεΓß∩ ó ó맮óÑ ¼á¬α«¬«¼á¡ñδ (2 ¿ 9
- ó »α¿óÑñÑ¡¡«¼ »α¿¼ÑαÑ), ¡áºδóáεΓß∩ Σá¬Γ¿τÑ߬¿¼¿ »áαá¼ÑΓαἿ. Åá-
- αá¼ÑΓαδ, ¬«Γ«αδÑ π¬áºδóáεΓß∩ ó «»αÑñѽѡ¿¿ ¼á¬α«¬«¼á¡ñδ (VALUE ¿
- LENGTH ó ñá¡¡«¼ »α¿¼ÑαÑ) ¡áºδóáεΓß∩ Σ«α¼á½∞¡δ¼¿ »áαá¼ÑΓαἿ. Åα¿
- ¬áªñ«¼ ó맮óÑ ¼á¬α«¬«¼á¡ñδ »ÑαÑñ ÑÑ αáßΦ¿αÑ¡¿Ñ¼ Σ«α¼á½∞¡δÑ »áαá-
- ¼ÑΓαδ πßΓá¡áó½¿óáεΓß∩ ó º¡áτÑ¡¿∩ ß««ΓóÑΓßΓóπεΘ¿σ Σá¬Γ¿τÑ߬¿σ »á-
- αá¼ÑΓα«ó. Å«φΓ«¼π:
-
- .
- .
- .
- ByteArray LABEL BYTE
- FILL_ARRAY 2,9
- .
- .
-
- TASM2 #3-5/䫬 = 36 =
-
- .
-
- »α¿óÑñÑΓ ¬ ß½ÑñπεΘÑ¼π ¬«ñπ ¡á ÇßßѼí½ÑαÑ:
-
- .
- .
- .
- ByteArray LABEL BYTE
- REPT 9
- DB 2
- ENDM
- .
- .
- .
-
- Åα¿ ¼á¬α«ó맮óÑ º¡áτÑ¡¿∩ Σá¬Γ¿τÑ߬¿σ »áαá¼ÑΓα«ó »«ñßΓáó½∩εΓ-
- ß∩ ó¼ÑßΓ« Σ«α¼á½∞¡δσ »áαá¼ÑΓα«ó ó ¼á¬α««»αÑñѽѡ¿¿, »«φΓ«¼π óδ
- ¼«ªÑΓÑ úÑ¡Ñα¿α«óáΓ∞ αẽ¿τ¡δ⌐ ¼á¬α«¬«ñ, »α«ßΓ« ¿º¼Ñ¡¿ó ó ¼á¬α«óδ-
- ºδóÑ Σá¬Γ¿τÑ߬¿Ñ »áαá¼ÑΓαδ. ìá»α¿¼Ñα, Ñß½¿ óδ σ«Γ¿ΓÑ ¿¡¿µ¿á½¿º¿-
- α«óáΓ∞ ¼áßß¿ó ByteArray Γᬿ¼ «íαẫ¼, τΓ«íδ «¡ ¿¼Ñ½ ñ½¿¡π 8 íá⌐-
- Γ«ó ¿ º¡áτÑ¡¿Ñ 0FFh, á ByteArray2 - τΓ«íδ «¡ ¿¼Ñ½ ñ½¿¡π 100 íá⌐-
- Γ«ó ¿ º¡áτÑ¡¿Ñ 0, óßÑ, τΓ« ¡πª¡« ñ½∩ φΓ«ú« ßñѽáΓ∞, φΓ«:
-
- .
- .
- .
- ByteArray LABEL BYTE
- FILL_ARRAY 0ffh,8
- ByteArray2 LABEL BYTE
- FILL_ARRAY 0,100h
- .
- .
- .
-
- ö«α¼á½∞¡δÑ »áαá¼ÑΓαδ ¼«úπΓ ¿ß»«½∞º«óáΓ∞ß∩ ó ½εí«¼ ¼ÑßΓÑ ¼á¬-
- ᫬«¼á¡ñδ. Äñ¡á¬« 󫺡¿¬áÑΓ »α«í½Ñ¼á, ¬«úñá Σ«α¼á½∞¡δÑ »áαá¼ÑΓαδ
- ß¼ÑΦ¿óáεΓß∩ ß ñαπú¿¼ ΓѬßΓ«¼. ìá»α¿¼Ñα, ó ¼á¬α«¬«¼á¡ñÑ:
-
- .
- .
- .
- PUSH_WORD_REG MACRO RLETTER
- push RLETTERx
- ENDM
- .
- .
-
- TASM2 #3-5/䫬 = 37 =
-
- .
-
- Æπαí« ÇßßѼí½Ñα ¡Ñ º¡áÑΓ, ∩ó½∩ÑΓß∩ ½¿ ßΓ᫬á RLETTER, ó¬½ε-
- τÑ¡¡á∩ ó RLETTERx, ¿¼Ñ¡Ñ¼ Σ«α¼á½∞¡«ú« »áαá¼ÑΓαá, ¿½¿ τáßΓ∞ε «»Ñ-
- αá¡ñá ¿¡ßΓαπ¬µ¿¿ PUSH, »«φΓ«¼π «¡ »αÑñ»«½áúáÑΓ, τΓ« φΓ« τáßΓ∞
- «»Ñαá¡ñá. Äñ¡á¬« ¼á½«óÑα«∩Γ¡«, τΓ« ºá¡ÑßÑ¡¿Ñ ó ßΓѬ RLETTERx »α¿-
- óÑñÑΓ ¬ πß»Ñσπ, Γᬠ¬á¬ ¼«ªÑΓ «¬áºáΓ∞ß∩, τΓ« π óáß ÑßΓ∞ »ÑαѼѡ-
- ¡á∩ ß ΓѼ ªÑ ¿¼Ñ¡Ñ¼. é ½εí«¼ ß½πτáÑ ªÑ½áѼδ⌐ αѺπ½∞ΓáΓ »«½πτÑ¡ ¡Ñ
- íπñÑΓ.
-
- ÉÑΦÑ¡¿Ñ¼ ∩ó½∩ÑΓß∩ ºá¬½ετÑ¡¿Ñ Σ«α¼á½∞¡«ú« »áαá¼ÑΓαá ó »áαπ
- ß¿¼ó«½«ó &. è«úñá Æπαí« ÇßßѼí½Ñα «í¡áαπª¿óáÑΓ ΓѬßΓ ¼á¬α«¬«¼á¡-
- ñδ, ºá¬½ετÑ¡¡δ⌐ ó ß¿¼ó«½δ &, «¡ »α«óÑα∩ÑΓ ß¡áτá½á, ∩ó½∩ÑΓß∩ ½¿
- φëà ΓѬßΓ ¿¼Ñ¡Ñ¼ Σ«α¼á½∞¡«ú« »áαá¼ÑΓαá. àß½¿ φΓ« Γá¬, Γ« «¡
- »«ñßΓáó½∩ÑΓ º¡áτÑ¡¿Ñ ñá¡¡«ú« »áαá¼ÑΓαá. àß½¿ Γᬫ⌐ ΓѬßΓ ¡Ñ ∩ó½∩-
- ÑΓß∩ ¿¼Ñ¡Ñ¼ Σ«α¼á½∞¡«ú« »áαá¼ÑΓαá, Γ« Æπαí« ÇßßѼí½Ñα ¿ú¡«α¿απÑΓ
- á¼»Ñαßá¡ñδ (&).
-
- ìá»α¿¼Ñα, ß½ÑñπεΘÑÑ αáßΦ¿αÑ¡¿Ñ ¼á¬α«¬«¼á¡ñδ PUSH_WORD_REG:
-
- .
- .
- .
- PUSH_WORD_REG MACRO RLETTER
- push &RLETTER&x
- ENDM
- .
- .
- .
- PUSH_WORD_REG
-
- áßßÑ¼í½¿απÑΓß∩ ó push bp.
-
- Ǽ»Ñαßá¡ñδ ΓαÑíπεΓß∩ Γ«½∞¬« Γá¼, úñÑ ßßδ½¬á ¡á Σ«α¼á½∞¡δ⌐
- »áαá¼ÑΓα ¡áσ«ñ¿Γß∩ »«ñ ó«»α«ß«¼. ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ ΓѬßΓÑ «¡¿
- ¡Ñ ¡πª¡δ:
-
- .
- .
- .
- PUSH_WORD_REG MACRO REGISTER
- push REGISTER
- ENDM
- .
- .
- .
-
- TASM2 #3-5/䫬 = 38 =
-
-
- Äñ¡á¬« ¿ß»«½∞º«óá¡¿Ñ á¼»Ñαßá¡ñ«ó ¡¿¬á¬«ú« óαÑñá ¡Ñ »α¿¡ÑßÑΓ,
- »«φΓ«¼π ½πτΦÑ ¿ß»«½∞ºπ⌐ΓÑ ¿σ ó Γ«¼ ß½πτáÑ, Ñß½¿ óδ ß«¼¡ÑóáÑΓÑß∞,
- ¡πª¡δ «¡¿, ¿½¿ ¡ÑΓ.
-
-
-
-
- TASM2 #3-5/䫬 = 39 =
-
- 齫ªÑ¡¡δÑ ¼á¬α«¬«¼á¡ñδ
- -----------------------------------------------------------------
-
- èᬠóδ πªÑ ó¿ñѽ¿, ¼á¬α«¬«¼á¡ñδ ¼«úπΓ ß«ñÑαªáΓ∞ í½«¬¿ »«óΓ«-
- αÑ¡¿∩. îá¬α«¬«¼á¡ñδ ¼«úπΓ Γá¬ªÑ óδºδóáΓ∞ ñαπú¿Ñ ¼á¬α«¬«¼á¡ñδ.
- ìá»α¿¼Ñα:
-
- .
- .
- .
- PUSH_WORD_REG MACRO REGISTER
- push REGISTER
- ENDM
- .
- .
- .
- PUSH_ALL_REG MACRO
- IRP REG,<AX,BX,CX,DX,SI,DI,BP,SP>
- PUSH_WORD_REG REG
- ENDM
- .
- .
- .
-
- çñÑß∞ ¼á¬α«¬«¼á¡ñá PUSH_ALL_REG ß«ñÑαª¿Γ í½«¬ »«óΓ«αÑ¡¿∩,
- ¬«Γ«αδ⌐, ó ßó«ε «τÑαÑñ∞, ß«ñÑαª¿Γ ó맮ó ¼á¬α«¬«¼á¡ñδ
- PUSH_ALL_REG.
-
-
-
-
- TASM2 #3-5/䫬 = 40 =
-
- îá¬α«¬«¼á¡ñδ ¿ πß½«ó¿∩
- -----------------------------------------------------------------
-
- 髺¼«ª¡«, ¡á¿í«½ÑÑ ¼«Θ¡«Ñ ßαÑñßΓó«, ñ«ßΓπ»¡«Ñ ó ¼á¬α«¬«¼á¡-
- ñáσ, - φΓ« 󫺼«ª¡«ßΓ∞ ó¬½ετáΓ∞ ó ¡¿σ ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßѼí-
- ½¿α«óá¡¿∩. ¥Γ« »«ºó«½∩ÑΓ «ñ¡«⌐ ¼á¬α«¬«¼á¡ñÑ áßßÑ¼í½¿α«óáΓ∞ αáº-
- ½¿τ¡δÑ ó¿ñδ ¬«ñá, ó ºáó¿ß¿¼«ßΓ¿ «Γ ß«ßΓ«∩¡¿∩ »α¿αáó¡Ñ¡¡δσ ¼ÑΓ«¬ ¿
- »áαá¼ÑΓα«ó ¬áªñ«ú« ó맮óá ¼á¬α«¬«¼á¡ñδ.
-
- äáóá⌐ΓÑ óÑα¡Ñ¼ß∩ ¬ »«¬áºá¡¡«¼π αá¡ÑÑ »α¿¼Ñαπ ¼á¬α«¬«¼á¡ñδ,
- óδ»«½¡∩εΘÑ⌐ π¼¡«ªÑ¡¿Ñ. é ñá¡¡«¼ ß½πτáÑ, Ñß½¿ ¼¡«ª¿Γѽ∞ »ÑαÑñáóáÑ-
- ¼δ⌐ ¼á¬α«¬«¼á¡ñÑ, »αÑñßΓáó½∩ÑΓ ß«í«⌐ ßΓѻѡ∞ τ¿ß½á 2, Γ« ñ½∩ í«-
- ½ÑÑ íδßΓα«ú« óδ»«½¡Ñ¡¿∩ π¼¡«ªÑ¡¿∩ ¼δ íπñѼ ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬-
- µ¿¿ ßñó¿úá ¿ µ¿¬½¿τÑ߬«ú« ßñó¿úá, á ó »α«Γ¿ó¡«¼ ß½πτáÑ ¿ß»«½∞ºπѼ
- ¿¡ßΓαπ¬µ¿ε MUL. îá¬α«¬«¼á¡ñá óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .
- .
- .
- MULTIPLY MACRO FACTOR
- ;
- ; Åα«óÑα¿Γ∞, ∩ó½∩ÑΓß∩ ½¿ FACTOR ßΓѻѡ∞ε 2
- ;
- IS_POWER_OF_TWO = 0
- COUNT = 15
- POWER_OF_TWO = 800h
- REPT 16
- IF POWER_OF_TWO EQ FACTOR
- IS_POWER_OF_TWO = 1 ; ¼¡«ª¿Γѽ∞ »αÑñßΓáó½∩ÑΓ
- ; ß«í«⌐ ßΓѻѡ∞ τ¿ß½á 2
- EXITM
- ENDIF
- COUNT = COUNT - 1
- POWER_OF_TWO = POWER_OF_TWO SHR 1
- ENDM
-
- IF IS_POWER_OF_TWO
- sub dx,dx
- REPT COUNT
- shl al,1
- rcl dx,1
- ENDM
- ELSE
- mov dx,FACTOR
- mul dx
- ENDIF
-
- TASM2 #3-5/䫬 = 41 =
-
- ENDM
- .
- .
- .
-
- MULTIPLY ó σ«ñÑ αáí«Γδ »α«óÑα∩ÑΓ, óδ»«½¡∩ÑΓß∩ ½¿ π¼¡«ªÑ¡¿Ñ
- ¡á ßΓѻѡ∞ 2, ¿ áßßÑ¼í½¿απÑΓ ß««ΓóÑΓßΓóπεΘ¿⌐ ¬«ñ. Å«φΓ«¼π ¬«ñ:
-
- MULTIPLY 10
-
- áßßÑ¼í½¿απÑΓß∩ ó:
-
- .
- .
- .
- mov dx,10
- mul dx
- .
- .
- .
-
- á ¬«ñ:
-
- MULTIPLY 8
-
- áßßÑ¼í½¿απÑΓß∩ ó ß½ÑñπεΘ¿⌐ ó¿ñ:
-
- .
- .
- .
- sub dx,dx
- shl ax,1
- rcl dx,1
- shl ax,1
- rcl dx,1
- shl ax,1
- rcl dx,1
- .
- .
- .
-
- ìπª¡« πτ¿ΓδóáΓ∞, τΓ« αáßΦ¿αÑ¡¿Ñ ¼á¬α«¬«¼á¡ñ óδ»«½¡∩ÑΓß∩ ó«
- óαѼ∩ áßßÑ¼í½¿α«óá¡¿∩, á ¡Ñ ó« óαѼ∩ óδ»«½¡Ñ¡¿∩. èáªñδ⌐ ó맮ó
- ¼á¬α«¬«¼á¡ñδ MULTIPLY »α¿ó«ñ¿Γ ¬ áßßÑ¼í½¿α«óá¡¿ε ¡«ó«ú« ¬«ñá: ñ¿-
- αÑ¬Γ¿óá IF ó φΓ«⌐ ¼á¬α«¬«¼á¡ñÑ «»αÑñѽ∩ÑΓ, ¬á¬¿Ñ ¿¡ßΓαπ¬µ¿¿ áß-
- ßÑ¼í½¿α«óáΓ∞. ìÑ »πΓá⌐ΓÑ ¼á¬α«¬«¼á¡ñδ ß »«ñ»α«úαἼἿ, á πß½«ó-
-
- TASM2 #3-5/䫬 = 42 =
-
- ¡«Ñ áßßÑ¼í½¿α«óá¡¿Ñ ß «»ÑαáΓ«αἿ if ¿ á¡á½«ú¿τ¡δ¼¿ ó ∩ºδ¬áσ
- óδß«¬«ú« πα«ó¡∩.
-
-
- çáóÑαΦÑ¡¿Ñ ¼á¬α«αáßΦ¿αÑ¡¿∩ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EXITM
- -----------------------------------------------------------------
-
- é »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ ß«ñÑনΓß∩ ñ¿αÑ¬Γ¿óá, ¬«Γ«απε ¼δ ñ« ß¿σ
- »«α ¡Ñ αáßß¼áΓα¿ó὿ - ñ¿αÑ¬Γ¿óá EXITM. ¥Γá ñ¿αÑ¬Γ¿óá π¬áºδóáÑΓ
- Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡« »αѬαáΓ¿Γ∞ αáßΦ¿αÑ¡¿Ñ ΓѬπΘÑ⌐ ¼á¬α«-
- ¬«¼á¡ñδ ¿½¿ í½«¬á »«óΓ«αÑ¡¿∩. àß½¿ ªÑ ΓѬπΘá∩ ¼á¬α«¬«¼á¡ñá ¿½¿
- í½«¬ »«óΓ«αÑ¡¿∩ ∩ó½∩ÑΓß∩ 󽫪ѡ¡δ¼ »« «Γ¡«ΦÑ¡¿ε ¬ ñαπú«⌐ ¼á¬α«¬«-
- ¼á¡ñÑ ¿½¿ í½«¬π »«óΓ«αÑ¡¿∩, Γ« αáßΦ¿αÑ¡¿Ñ ó¡ÑΦ¡Ñú« í½«¬á »«óΓ«αÑ-
- ¡¿∩ ¿½¿ ¼á¬α«¬«¼á¡ñδ »α«ñ«½ªáÑΓß∩.
-
- é ¡áΦѼ »α¿¼ÑαÑ ñ¿αÑ¬Γ¿óá EXITM »αѬαáΘáÑΓ αáßΦ¿αÑ¡¿Ñ í½«¬á
- »«óΓ«αÑ¡¿∩, ß«ñÑαªáΘÑú« EXITM, «ñ¡á¬« αáßΦ¿αÑ¡¿Ñ ¼á¬α«¬«¼á¡ñδ
- MULTIPLY, ¬«Γ«αá∩ ß«ñÑαª¿Γ í½«¬ »«óΓ«αÑ¡¿∩, »α«ñ«½ªáÑΓß∩. öá¬Γ¿-
- τÑ߬¿ ó ñá¡¡«¼ »α¿¼ÑαÑ ¿¡ßΓαπ¬µ¿¿ REPT ¿ EXITM ¿ß»«½∞ºπεΓß∩ ß«ó-
- ¼ÑßΓ¡« ñ½∩ »«½πτÑ¡¿∩ á¡á½«úá µ¿¬½á while ó ∩ºδ¬Ñ æ¿. çñÑß∞ «»∩Γ∞
- ¡πª¡« π»«¼∩¡πΓ∞ « Γ«¼, τΓ« µ¿¬½ while ó MULTIPLY - φΓ« µ¿¬½ φΓá»á
- áßßÑ¼í½¿α«óá¡¿∩, »«ºó«½∩εΘ¿⌐ «»αÑñѽ¿Γ∞, ¬á¬«⌐ ¬«ñ ¡πª¡« áßßѼí-
- ½¿α«óáΓ∞, á ¡Ñ µ¿¬½ φΓá»á óδ»«½¡Ñ¡¿∩.
-
-
-
-
- TASM2 #3-5/䫬 = 43 =
-
- Ä»αÑñѽѡ¿Ñ ¼ÑΓ«¬ ß »«¼«Θ∞ε ¼á¬α«¬«¼á¡ñ
- -----------------------------------------------------------------
-
- Äñ¡á ¿º »«ΓÑ¡µ¿á½∞¡δσ »α«í½Ñ¼ ó ¼á¬α«¬«¼á¡ñáσ 󫺡¿¬áÑΓ,
- ¬«úñá óδ σ«Γ¿ΓÑ «»αÑñѽ¿Γ∞ ó ¼á¬α«¬«¼á¡ñÑ ¼ÑΓ¬π. ìá»α¿¼Ñα, ß½Ññπ-
- εΘ¿⌐ ¬«ñ »α¿óÑñÑΓ ¬ «Φ¿í¬Ñ ¿º-ºá »«óΓ«α¡«ú« «»αÑñѽѡ¿∩ ¼ÑΓ¬¿
- SkipLabel, »«ß¬«½∞¬π φΓá ¼ÑΓ¬á «»αÑñѽ∩ÑΓß∩ ó αáßΦ¿αÑ¡¿¿ ¼á¬α«¬«-
- ¼á¡ñδ DO_DEC:
-
- .
- .
- .
- DO_DEC MACRO
- jcxz SkipLabel
- dec cx
- SkipLabel:
- ENDM
- .
- .
- .
- DO_DEC
- .
- .
- .
- DO_DEC
- .
- .
- .
-
- è ßτáßΓ∞ε, ó Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«ΓαÑ¡« »α«ßΓ«Ñ αÑΦÑ-
- ¡¿Ñ ñá¡¡«⌐ »α«í½Ñ¼δ ó ó¿ñÑ ñ¿αÑ¬Γ¿óδ LOCAL. ¥Γá ñ¿αÑ¬Γ¿óá ó ¼á¬-
- ᫬«¼á¡ñÑ »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« «í½áßΓ∞ ñÑ⌐ßΓó¿∩ π¬áºá¡¡«⌐ ¼ÑΓ¬¿
- ¿½¿ ¼ÑΓ«¬ «úαá¡¿τ¿óáÑΓß∩ ñá¡¡«⌐ ¼á¬α«¬«¼á¡ñ«⌐. ìá»α¿¼Ñα, ñ¿αÑ¬Γ¿-
- óπ LOCAL ¼«ª¡« ¿ß»«½∞º«óáΓ∞, τΓ«íδ »α¿óÑßΓ¿ »αÑñδñπΘ¿⌐ »α¿¼Ñα ¬
- ¬«ααÑ¬Γ¡«¼π ó¿ñπ:
-
- .
- .
- .
- DO_DEC MACRO
- LOCAL SkipLabel
- jcxz SkipLabel
- dec cx
- SkipLabel:
- ENDM
- .
-
- TASM2 #3-5/䫬 = 44 =
-
- .
- .
- DO_DEC
- .
- .
- .
- DO_DEC
- .
- .
- .
-
- àß½¿ ñ¿αÑ¬Γ¿óá LOCAL ¿ß»«½∞ºπÑΓß∩ ó ¼á¬α«¬«¼á¡ñÑ, «¡á ñ«½ª¡á
- π¬áºδóáΓ∞ß∩ ¡Ñ»«ßαÑñßΓóÑ¡¡« ºá ñ¿αÑ¬Γ¿ó«⌐ MACRO. æ »«¼«Θ∞ε «ñ¡«⌐
- ñ¿αÑ¬Γ¿óδ LOCAL ½«¬á½∞¡δ¼¿ ¼«ª¡« «íΩ∩ó¿Γ∞ ¡Ñ߬«½∞¬« ¼ÑΓ«¬. ¡«
- Γá¬ªÑ ¿ß»«½∞º«óáΓ∞ ¡Ñ߬«½∞¬« ñ¿αÑ¬Γ¿ó LOCAL:
-
- .
- .
- .
- TEST_MACRO MACRO
- LOCAL LoopTop,LoopEnd,SkipInc
- LOCAL NoEvent,MacroDone
- .
- .
- .
- ENDM
- .
- .
- .
-
- ê¼Ñ¡á, »α¿ßóá¿óáѼδÑ ó ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ ½«¬á½∞¡δ¼ ¼ÑΓ¬á¼,
- ¿¼ÑεΓ ó¿ñ:
-
- ??XXXX
-
- úñÑ XXXX - φΓ« ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ τ¿ß½« ó ñ¿á»áº«¡Ñ «Γ 0 ñ«
- 0FFFFh. æ½Ññ«óáΓѽ∞¡«, óδ ¡Ñ ñ«½ª¡δ »α¿ßóá¿óáΓ∞ óáΦ¿¼ ¼ÑΓ¬á¼ ¿¼Ñ-
- ¡á, ¬«Γ«αδÑ ¡áτ¿¡áεΓß∩ ß ß¿¼ó«½«ó ??, ¿¡áτÑ φΓ« ¼«ªÑΓ »α¿óÑßΓ¿ ¬
- ¬«¡Σ½¿¬Γπ ß ½«¬á½∞¡δ¼¿ ¼ÑΓ¬á¼¿, úÑ¡Ñα¿απÑ¼δ¼¿ Æπαí« ÇßßѼí½Ñα«¼.
-
- Ä»ÑαѪáεΘ¿Ñ ßß佬¿ ¡á ¼á¬α«¬«¼á¡ñδ ¡Ñ ñ«»π߬áεΓß∩: ¼á¬α«¬«-
- ¼á¡ñδ ñ«½ª¡δ «»αÑñѽ∩Γ∞ß∩ ñ« Γ«ú«, ¬á¬ «¡¿ óδºδóáεΓß∩. é ßóÑΓÑ
- Γ«ú«, τΓ« αá¡ÑÑ ú«ó«α¿½«ß∞ ¡á¼¿ «í «»ÑαѪáεΘ¿σ ßß佬áσ, φΓ« ¿¼ÑÑΓ
- «»αÑñѽѡ¡δ⌐ ß¼δß½, Γᬠ¬á¬ Æπαí« ÇßßѼí½Ñα ¡Ñ º¡áÑΓ, ߬«½∞¬«
- íá⌐Γ ¡πª¡« αѺÑαó¿α«óáΓ∞ ñ½∩ ¼á¬α«¬«¼á¡ñδ, ¡á ¬«Γ«απε ¿¼ÑÑΓß∩
- «»ÑαѪáεΘá∩ ßß佬á. Äñ¡á¬« ß ñαπú«⌐ ßΓ«α«¡δ ¼á¬α«¬«¼á¡ñδ ¼«ª¡«
-
- TASM2 #3-5/䫬 = 45 =
-
- «»αÑñѽ∩Γ∞ ó ½εí«¼ ¼ÑßΓÑ ¿ßσ«ñ¡«ú« ¼«ñπ½∩.
-
- é ¼á¬α«¬«¼á¡ñÑ ¼«ªÑΓ ß«ñÑαªáΓ∞ß∩ ½εíá∩ ñ«»πßΓ¿¼á∩ ó ÇßßѼí-
- ½ÑαÑ ßΓ᫬á. ¥Γ« ó¬½ετáÑΓ ó ßÑí∩ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ñá¡¡δσ, á
- Γá¬ªÑ ¬«ñ ¿ ñáªÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, óßÑ Γ¿»δ ¼ÑΓ«¬
- ¿ ñ¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼.
-
- ê¼ÑÑΓß∩ ¡Ñ߬«½∞¬« ñ¿αÑ¬Γ¿ó, ¬«Γ«αδÑ ß«ºñá¡δ ߻ѵ¿á½∞¡« ñ½∩
- ¿ß»«½∞º«óá¡¿∩ ó ¼á¬α«¬«¼á¡ñáσ. ¥Γ« ñ¿αÑ¬Γ¿óδ IFDIF, IFIDN,
- IFDIFI, IFIDNI, IFB ¿ IFNB. àßΓ∞ Γá¬ªÑ ¡Ñ߬«½∞¬« ñ¿αÑ¬Γ¿ó πß½«ó-
- ¡«⌐ «íαáí«Γ¬¿ «Φ¿í«¬, ¬«Γ«αδÑ ¿ß»«½∞ºπεΓß∩ ó ¼á¬α«¬«¼á¡ñáσ. ¥Γ«
- ñ¿αÑ¬Γ¿óδ ERRDIF, ERRIDN, ERRDIFI, ERRIDNI, ERRB ¿ ERRNB. Äí φΓ¿σ
- ñ¿αÑ¬Γ¿óáσ αáß߬áºδóáÑΓß∩ ó â½áóÑ 6 ¿ ó "æ»αáó«τ¡«¼ απ¬«ó«ñßΓóÑ"
- (ó â½áóÑ 3).
-
- ê¼ÑÑΓß∩ Γá¬ªÑ ¡Ñ߬«½∞¬« ߻ѵ¿á½∞¡δσ «»Ñαᵿ⌐, ¬«Γ«αδÑ ¼«ª¡«
- ¿ß»«½∞º«óáΓ∞ ó ¼á¬α«¬«¼á¡ñáσ:
-
- & Ä»Ñαᵿ∩ »«ñßΓá¡«ó¬¿
- <> æΓ᫬«óá∩ «»Ñαᵿ∩ ½¿ΓÑαá½∞¡«ú« ΓѬßΓá
- ! Ä»Ñαᵿ∩ ß¿¼ó«½á ó ¬áóδτ¬áσ
- % Ä»Ñαᵿ∩ óδτ¿ß½Ñ¡¿∩ óδαáªÑ¡¿∩
- ;; Å«ñáó½Ñ¡¿Ñ ¬«¼¼Ñ¡Γáα¿∩
-
- Ä»Ñαᵿ∩ »«ñßΓá¡«ó¬¿ & «íßπªñá½áß∞ ó »αÑñδñπΘѼ αáºñѽÑ,
- »«ßó∩ΘÑ¡¡«¼ ¼á¬α«¬«¼á¡ñá¼. ¥Γ¿ ¿ ñαπú¿Ñ ߻ѵ¿á½∞¡δÑ «»Ñαᵿ¿ í«-
- ½ÑÑ »«½¡« «»αÑñѽ∩εΓß∩ ó "æ»αáó«τ¡«¼ απ¬«ó«ñßΓóÑ".
-
- Éáºó¿ΓδÑ ßΓαπ¬Γπαδ ñá¡¡δσ
- -----------------------------------------------------------------
-
- ä½∩ «í½ÑúτÑ¡¿∩ Σπ¡¬µ¿⌐ π»αáó½Ñ¡¿∩ ß½«ª¡δ¼¿ ßΓαπ¬ΓπαἿ ñá¡-
- ¡δσ ó Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«ΓαÑ¡δ Γα¿ ñ¿αÑ¬Γ¿óδ: STRUC, RECORD
- ¿ UNION. éδ 󫺼«ª¡« ºá¼ÑΓ¿½¿, τΓ« ¡áºóá¡¿∩ φΓ¿σ ñ¿αÑ¬Γ¿ó á¡á½«-
- ú¿τ¡δ ΓѼ, ¬«Γ«αδÑ ¿ß»«½∞ºπεΓß∩ ó ∩ºδ¬áσ óδß«¬«ú« πα«ó¡∩. äÑ⌐ß-
- Γó¿Γѽ∞¡«, ÑßΓ∞ ¡Ñ¬«Γ«α«Ñ »«ñ«í¿Ñ ¼Ñªñπ ñ¿αÑ¬Γ¿óἿ ßΓαπ¬Γπα ñá¡-
- ¡δσ Æπαí« ÇßßѼí½Ñαá ¿ ΓѼ¿, ¬«Γ«αδÑ ¿ß»«½∞ºπεΓß∩ ó ∩ºδ¬áσ
- óδß«¬«ú« πα«ó¡∩.
-
- Äñ¡á¬« ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßΓαπ¬Γπα ñá¡¡δσ ó ∩ºδ¬Ñ ÇßßѼí-
- ½Ñαá, íπñπτ¿ »«½Ñº¡δ¼¿, ∩ó½∩εΓß∩ ΓѼ ¡Ñ ¼Ñ¡ÑÑ ¡Ñ Γᬿ¼¿ αáºó¿Γδ-
- ¼¿, ¬á¬ ¿ß»«½∞ºπεΘ¿Ñß∩ ó ∩ºδ¬áσ óδß«¬«ú« πα«ó¡∩. ìá»α¿¼Ñα, ó ∩ºδ-
- ¬Ñ ÇßßѼí½Ñαá «í½áßΓ∞ ñÑ⌐ßΓó¿∩ ¿¼Ñ¡¿ φ½Ñ¼Ñ¡Γá ßΓαπ¬Γπαδ ¡Ñ
- «úαá¡¿τ¿óáÑΓß∩ φΓ«⌐ ßΓαπ¬Γπα«⌐, »«φΓ«¼π ¿¼∩ ¬áªñ«ú« φ½Ñ¼Ñ¡Γá
- ßΓαπ¬Γπαδ ñ«½ª¡« íδΓ∞ π¡¿¬á½∞¡« ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ.
-
- TASM2 #3-5/䫬 = 46 =
-
-
- èα«¼Ñ Γ«ú«, ó «Γ½¿τ¿Ñ «Γ ∩ºδ¬«ó æ¿ ¿ Åá߬á½∞, ó ∩ºδ¬Ñ Çß-
- ßѼí½Ñαá ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßΓαπ¬Γπα ñá¡¡δσ - φΓ« πñ«íßΓó«, á
- ¡Ñ ¡Ñ«íσ«ñ¿¼«ßΓ∞: ¼«ª¡« αáí«ΓáΓ∞ ß« ßΓαπ¬ΓπαἿ ºá»¿ßÑ⌐, ñá¡¡δ¼¿
- ¿ «íΩÑñ¿¡Ñ¡¿∩¼¿ ÇßßѼí½Ñαá ¡Ñ ¿ß»«½∞ºπ∩ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩
- ßΓαπ¬Γπα ñá¡¡δσ. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ φΓ¿ ñ¿αÑ¬Γ¿óδ «τÑ¡∞ πñ«í¡δ ¿ ¿σ
- ßΓ«¿Γ ¿ºπτ¿Γ∞.
-
- æ½ÑñπεΘÑÑ ¡¿ªÑ «íßπªñÑ¡¿Ñ «Γ¡«ß¿Γß∩ ¬ Æπαí« ÇßßѼí½Ñαπ, αá-
- í«ΓáεΘѼπ ó αѪ¿¼Ñ MASM. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ (Ideal) Æπαí« Çß-
- ßѼí½Ñα »«ññÑনóáÑΓ º¡áτ¿Γѽ∞¡« í«½ÑÑ ¼«Θ¡δÑ Σ«α¼δ ñ¿αÑ¬Γ¿ó «»-
- αÑñѽѡ¿∩ ßΓαπ¬Γπα ñá¡¡δσ. Ä αáßΦ¿αÑ¡¡δσ ßαÑñßΓóáσ π½πτΦÑ¡¡«ú«
- αѪ¿¼á ¼«ª¡« »α«τ¿ΓáΓ∞ ó â½áóÑ 11.
-
- ÅÑαÑñ ΓѼ, ¬á¬ ¼δ ¡áτ¡Ñ¼ αáß߬áºδóáΓ∞ « ßΓαπ¬Γπαáσ ñá¡¡δσ
- Æπαí« ÇßßѼí½Ñαá, ßΓ«¿Γ ßñѽáΓ∞ «ñ¡« ºá¼Ñτá¡¿Ñ: Ñß½¿ ¡á ¡¿σ «Γ-
- ßπΓßΓóπεΓ ó ¿¡ßΓαπ¬µ¿∩σ ¿ ñ¿αÑ¬Γ¿óáσ «»ÑαѪáεΘ¿Ñ ßß佬¿, ßΓαπ¬Γπ-
- αδ, ºá»¿ß¿ ¿ «íΩÑñ¿¡Ñ¡¿∩ ¼«úπΓ ß«ñÑαªáΓ∞ß∩ ó ½εí«¼ ¼ÑßΓÑ ΓѬßΓá.
-
- ä¿αÑ¬Γ¿óá STRUC
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óπ STRUC, ¬«Γ«αá∩ »«ºó«½∩ÑΓ óá¼ «»αÑñѽ¿Γ∞ ßΓαπ¬Γπαπ
- ñá¡¡δσ, »«½Ñº¡« «»αÑñѽ¿Γ∞ ó Γ«¼ ß½πτáÑ, ¬«úñá óá¼ »α¿σ«ñ¿Γß∩
- ¿¼ÑΓ∞ ñѽ« ß ñá¡¡δ¼¿, αáºñѽѡ¡δ¼¿ ¡á ½«ú¿τÑ߬¿Ñ úαπ»»δ.
-
- ä½∩ ΓÑσ, ¬Γ« º¡á¬«¼ ß ∩ºδ¬«¼ æ¿, ñ¿αÑ¬Γ¿óá STRUC á¡á½«ú¿τ¡á∩
- «»ÑαáΓ«απ ßΓαπ¬Γπαδ ∩ºδ¬á æ¿.
-
- ìá»α¿¼Ñα, »αÑñ»«½«ª¿¼, τΓ« óδ σ«Γ¿ΓÑ «»αÑñѽ¿Γ∞ ßΓαπ¬Γπαπ
- ñá¡¡δσ, ß«ñÑαªáΘπε ¿¼∩, ó«ºαáßΓ ¿ ñ«σ«ñ ñ½∩ «ñ¡«ú« »«½∞º«óáΓѽ∩.
- é«Γ φΓá ßΓαπ¬Γπαá:
-
- CLIENT STRUC
- NAME DB 'çñÑß∞ π¬áºδóáÑΓß∩ ¿¼∩...'
- AGE DW ?
- INCOME DD ?
- CLIENT ENDS
-
- æΓαπ¬Γπαá CLIENT (»«½∞º«óáΓѽ∞) ß«ñÑαª¿Γ Γα¿ »«½∩: »«½Ñ NAME
- ß«ñÑαª¿Γ ¿¼∩ (ñ« 20 ß¿¼ó«½«ó ñ½¿¡«⌐), »«½Ñ AGE ß«ñÑαª¿Γ ó«ºαáßΓ,
- ¬«Γ«αδ⌐ σαá¡¿Γß∩, ¬á¬ 16-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ, ¿ »«½Ñ INCOME, ß«ñÑα-
- ªáΘÑÑ ñ«σ«ñ (σαá¡¿Γß∩, ¬á¬ 32-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ).
-
- æΓαπ¬Γπαπ CLIENT ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- TASM2 #3-5/䫬 = 47 =
-
-
- .
- .
- .
- CLIENT STRUC
- NAME DB 'çñÑß∞ π¬áºδóáÑΓß∩ ¿¼∩...'
- AGE DW ?
- INCOME DD ?
- CLIENT ENDS
- .
- .
- .
- .DATA
- MisterBark CLIENT <'John Q. Bark',32,10000>
- .
- .
- .
- .CODE
- .
- .
- .
- mov ax,[MisterBark.Age]
- mov bx,OFFSET MisterBark
- mov ax,WORD PTR [bx.INCOME]
- mov dx,WORD PTR [bx.INCOME+2]
- .
- .
- .
-
- ¥Γ«Γ »α¿¼Ñα ßΓ«¿Γ »«ñα«í¡« αáßß¼«ΓαÑΓ∞. ÄΓ¼ÑΓ¿¼ ß¡áτá½á, τΓ«
- «»αÑñѽѡ¿∩ ßΓαπ¬Γπαδ ºáóÑαΦáεΓß∩ ñ¿αÑ¬Γ¿ó«⌐ ENDS. ¥Γ« Γá ªÑ ñ¿-
- αÑ¬Γ¿óá, τΓ« ºá¬á¡τ¿óáÑΓ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó. ìá»α¿¼Ñα, ñá½ÑÑ
- «»αÑñѽ∩ÑΓß∩ ßΓαπ¬Γπαá ó¡πΓα¿ ßÑú¼Ñ¡Γá ñá¡¡δσ.
-
- .
- .
- .
- _Data SEGMENT WORD PUBLIC 'DATA'
- .
- .
- .
- Test STRUC
- .
- .
- .
- Test ENDS
-
- TASM2 #3-5/䫬 = 48 =
-
- .
- .
- .
- _Data ENDS
-
- é«-óΓ«αδσ, «Γ¼ÑΓ¿¼, τΓ« »ÑαѼѡ¡á∩ MisterBark ßΓαπ¬Γπαδ
- CLIENT ß«ºñá¡á Γá¬, ¬á¬ Ñß½¿ íδ ßπΘÑßΓó«óá½ ¡«óδ⌐ Γ¿» ñá¡¡δσ ß
- ¿¼Ñ¡Ñ¼ CLIENT (Σá¬Γ¿τÑ߬¿, ¿¼Ñ¡¡« Γᬫ⌐ Γ¿» ñá¡¡δσ óδ ¿ ß«ºñ὿,
- «»αÑñѽ¿ó ßΓαπ¬Γπαπ CLIENT). àß½¿ ñ½∩ ßΓαπ¬Γπαδ CLIENT óδ »α¿¼Ñ-
- ¡¿ΓÑ «»Ñαᵿε SIZE, Γ« »«½πτ¿ΓÑ º¡áτÑ¡¿Ñ 26 (αẼÑα ßΓαπ¬Γπαδ).
-
- Åα¿ ß«ºñá¡¿¿ »ÑαѼѡ¡«⌐ MisterBark ó πú½«óδσ ߬«í¬áσ »αÑñπß-
- ¼«ΓαÑ¡δ Γα¿ »áαá¼ÑΓαá «»¿ßá¡¿∩. ¥Γ¿ »áαá¼ÑΓαδ ßΓá¡«ó∩Γß∩ ¡áτá½∞-
- ¡δ¼¿ º¡áτÑ¡¿∩¼¿ ß««ΓóÑΓßΓóπεΘ¿σ »«½Ñ⌐ »ÑαѼѡ¡«⌐ MisterBark.
- æΓ᫬á 'John Q. Bark' - φΓ« ¡áτá½∞¡«Ñ º¡áτÑ¡¿∩ »«½∩ NAME, 32 -
- ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ »«½∩ AGE, á 10000 - ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ »«½∩
- INCOME.
-
- éá¼ ¡Ñ ΓαÑíπÑΓß∩ «»αÑñѽ∩Γ∞ ¡áτá½∞¡δÑ º¡áτÑ¡¿∩ óßÑσ »«½Ñ⌐,
- «»αÑñѽѡ¡δσ ó ßΓαπ¬ΓπαÑ. ìá»α¿¼Ñα:
-
- MisterBark CLIENT <>
-
- ¡Ñ ¿¡¿µ¿á½¿º¿απÑΓ ¡¿¬á¬¿σ »«½Ñ⌐ MisterBark, á
-
- MisterBark CLIENT <,,19757>
-
- ¿¡¿µ¿á½¿º¿απÑΓ Γ«½∞¬« »«½Ñ INCOME. Äñ¡á¬« πú½«óδÑ ß¬«í¬¿ ΓαÑíπÑΓ-
- ß∩ π¬áºδóáΓ∞, ñáªÑ Ñß½¿ »«½∩ ¡Ñ ¿¡¿µ¿á½¿º¿α«óá¡δ.
-
- àß½¿ »α¿ ß«ºñá¡¿¿ »ÑαѼѡ¡«⌐ ó »á¼∩Γ¿ óδ ¡Ñ «»αÑñѽ∩ÑΓÑ ¡á-
- τá½∞¡«Ñ º¡áτÑ¡¿Ñ, Γ« ÑßΓ∞ Γα¿ ó«º¼«ª¡δσ ß»«ß«íá, ß »«¼«Θ∞ε ¬«Γ«-
- αδσ φΓ« ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ ¼«ªÑΓ íδΓ∞ ºáñá¡«. àß½¿ óδ ºáñ὿ ¡á-
- τá½∞¡«Ñ º¡áτÑ¡¿Ñ ñá¡¡«ú« »«½∩ »α¿ «»αÑñѽѡ¿¿ ßΓαπ¬Γπα¡«ú« Γ¿»á,
- Γ« φΓ«¼π »«½ε »α¿ßóá¿óáÑΓß∩ π¬áºá¡¡«Ñ º¡áτÑ¡¿Ñ (»« π¼«½τá¡¿ε).
-
- ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ
- ºáñáÑΓß∩ Γ«½∞¬« ñ½∩ «ñ¡«ú« »«½∩ MisterBark (»«½Ñ NAME) »α¿ ß«ºñá-
- ¡¿¿ »ÑαѼѡ¡«⌐ MisterBark. Äñ¡á¬«, «»αÑñѽѡ« ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ,
- ºáñá¡¡«Ñ ñ½∩ »«½∩ AGE »α¿ «»αÑñѽѡ¿¿ ßΓαπ¬Γπαδ CLIENT, »«φΓ«¼π
- φΓ« íπñÑΓ º¡áτÑ¡¿Ñ¼ »«½∩ AGE ñ½∩ MisterBark. ä½∩ »«½∩ INCOME º¡á-
- τÑ¡¿Ñ ¡¿úñÑ ¡Ñ ºáñá¡«, »«φΓ«¼π ñá¡¡«Ñ »«½Ñ ¿¡¿µ¿á½¿º¿απÑΓß∩ º¡á-
- τÑ¡¿Ñ¼ 0. Åα¿¼Ñα:
-
- .
- .
-
- TASM2 #3-5/䫬 = 49 =
-
- .
- CLIENT STRUC
- NAME DB 'çñÑß∞ π¬áºδóáÑΓß∩ ¿¼∩...'
- AGE DW ?
- INCOME DD ?
- CLIENT ENDS
- .
- .
- .
- .DATA
- MisterBark CLIENT <'John Q. Bark>
- .
- .
- .
-
- é αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ ñá¡¡«⌐ »α«úαá¼¼δ »«½Ñ NAME ¿¡¿µ¿á½¿-
- º¿απÑΓß∩ º¡áτÑ¡¿Ñ¼ 'John Q. Bark', »«½Ñ AGE - º¡áτÑ¡¿Ñ¼ 21, á »«-
- ½Ñ INCOME - º¡áτÑ¡¿Ñ¼ 0. çá¼ÑΓ¿¼, τΓ« ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ »«½∩
- NAME, ºáñáóáѼ«Ñ »α¿ ß«ºñá¡¿¿ »ÑαѼѡ¡«⌐ MisterBark, «Γ¼Ñ¡∩ÑΓ ¡á-
- τá½∞¡«Ñ º¡áτÑ¡¿Ñ, ºáñá¡¡«Ñ »α¿ «»αÑñѽѡ¿¿ ßΓαπ¬Γπαδ CLIENT.
-
- æ »«¼«Θ∞ε «»Ñαᵿ¿ DUP óδ ¼«ªÑΓÑ ¿¡¿µ¿á½¿º¿α«óáΓ∞ ¼áßß¿ó
- ßΓαπ¬Γπα. ìá»α¿¼Ñα:
-
- Clients CLIENT 52 DUP (<>)
-
- çñÑß∞ ß«ºñáÑΓß∩ ¼áßß¿ó Clients, ß«ßΓ«∩Θ¿⌐ ¿º 52 ßΓαπ¬Γπα Γ¿-
- »á CLIENT, ¬áªñá∩ ¿º ¬«Γ«αδσ ¿¡¿µ¿á½¿º¿απÑΓß∩ º¡áτÑ¡¿∩¼¿ »« π¼«½-
- τá¡¿ε.
-
- àß½¿ óδ ß¡«óá óºú½∩¡ÑΓÑ ¡á »α¿¼Ñα ¿ßσ«ñ¡«⌐ ßΓαπ¬Γπαδ, Γ«
- πó¿ñ¿ΓÑ ¡«óπε «»Ñαᵿε - Γ«τ¬π (.). ¥Γá «»Ñαᵿ∩ »αÑñßΓáó½∩ÑΓ ß«-
- í«⌐ ñαπúπε Σ«α¼π «»Ñαᵿ¿ + ñ½∩ áñαÑßᵿ¿ ó »á¼∩Γ¿. Æ« ÑßΓ∞, ß½Ñ-
- ñπεΘ¿Ñ ßΓ᫬¿ óδ»«½¡∩εΓ «ñ¿¡á¬«óδÑ ñÑ⌐ßΓó¿∩:
-
- .
- .
- .
- mov ax,[bx.AGE]
- mov ax,[bx].AGE
- mov ax,[bx+AGE]
- mov ax,[bx]+AGE
- .
- .
- .
-
-
- TASM2 #3-5/䫬 = 50 =
-
- Ä»Ñαᵿ∩ Γ«τ¬¿ τáßΓ« ¿ß»«½∞ºπÑΓß∩ »α¿ ßΓαπ¬Γπα¡δσ ßß佬áσ ¡á
- ß«ñÑন¼«Ñ ó «í«º¡áτÑ¡¿∩σ ∩ºδ¬á æ¿, úñÑ Γá¬ªÑ ¿ß»«½∞ºπÑΓß∩ Γ«τ¬á.
- ¥Γ« ñѽáÑΓß∩ ΓᬪÑ, τΓ«íδ í佫 »«¡∩Γ¡«, τΓ« ¿ß»«½∞ºπÑΓß∩ »«½Ñ
- ßΓαπ¬Γπαδ. éδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ Γπ «»Ñαᵿε, ¬«Γ«αá∩ óá¼ í«½∞ΦÑ
- ¡αáó¿Γß∩ (. ¿½¿ +).
-
- Å«½∩ ßΓαπ¬Γπαδ, «»αÑñѽѡ¡δÑ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ STRUC, ó
- ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ »αÑñßΓáó½∩εΓ ß«í«⌐ ¼ÑΓ¬¿, »α¿αáó¡Ñ¡¡δÑ ¬ ß¼ÑΘÑ-
- ¡¿ε »«½∩ ó ßΓαπ¬ΓπαÑ. êß»«½∞ºπ∩ ñá¡¡«Ñ αá¡ÑÑ «»αÑñѽѡ¿Ñ ñ½∩
- CLIENT ¿ MisterBark, ¼«ª¡« ߬áºáΓ∞, τΓ« ß½ÑñπεΘ¿Ñ ñóÑ ßΓ᫬¿ φ¬-
- ó¿óá½Ñ¡Γ¡δ:
-
- .
- .
- .
- mov [MisterBark.AGE],ax
- mov [MisterBark+20],ax
- .
- .
- .
-
- ¿½¿
- .
- .
- .
- AGE_FIELD EQU 20
- .
- .
- .
- mov [MisterBark+AGE_FIELD],ax
- .
- .
- .
-
-
-
-
- TASM2 #3-5/䫬 = 51 =
-
- ìÑñoßΓáΓ¬¿ ¿ »αÑ¿¼πΘÑßΓóá ¿ß»«½∞º«óá¡¿∩ ñ¿αÑ¬Γ¿óδ STRUC
- -----------------------------------------------------------------
-
- ä½∩ τÑú« ªÑ ¡πª¡« ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ STRUC? é«-»Ñαóδσ,
- »«½∩ ßΓαπ¬Γπαδ «íÑß»Ñτ¿óáεΓ Γ¿»¿ºáµ¿ε ñá¡¡δσ. Æπαí« ÇßßѼí½Ñα
- º¡áÑΓ, τΓ« MisterBark.AGE ó »Ñαó«¼ »α¿¼ÑαÑ - φΓ« »ÑαѼѡ¡á∩ αáº-
- ¼Ñα«¼ ó ß½«ó«, »«ß¬«½∞¬π AGE - φΓ« φ½Ñ¼Ñ¡Γ ßΓαπ¬Γπαδ, á óδαáªÑ¡¿Ñ
- MisterBark+AGE ó« óΓ«α«¼ »α¿¼ÑαÑ ¡Ñ ¿¼ÑÑΓ »α¿ßπΘÑú« Ѽπ αẼÑαá.
-
- é«-óΓ«αδσ, ¡á¼¡«ú« »α«ΘÑ ¿º¼Ñ¡¿Γ∞ «»αÑñѽѡ¿Ñ ßΓαπ¬Γπαδ, τѼ
- ¿º¼Ñ¡∩Γ∞ ß¼ÑΘÑ¡¿∩ ¬«¡ßΓá¡Γ, ¿½¿ ñáªÑ ¡áí«α »α¿ßóá¿óá¡¿⌐. ìá»α¿-
- ¼Ñα, Ñß½¿ óδ αÑΦ¿½¿, τΓ« »«½Ñ NAME ñ«½ª¡« ¿¼ÑΓ∞ ñ½¿¡π 30 ß¿¼ó«-
- ½«ó, Γ« óá¼ »α¿Φ½«ß∞ íδ ¿º¼Ñ¡¿Γ∞ ºá»¿ß∞ ñ½∩ »«½∩ NAME ó «»αÑñѽÑ-
- ¡¿¿ CLIENT. àß½¿ íδ óδ ¿ß»«½∞º«ó὿ »α¿ßóá¿óá¡¿∩, óá¼ »α¿Φ½«ß∞ íδ
- óαπτ¡πε óδτ¿ß½∩Γ∞ ¿ ¿º¼Ñ¡∩Γ∞ ß¼ÑΘÑ¡¿∩ »«½Ñ⌐ AGE ¿ INCOME. é í«½∞-
- Φ¿σ ßΓαπ¬Γπαáσ φΓ« íδ½á íδ «úα«¼¡á∩ αáí«Γá.
-
- ìᬫ¡Ñµ, ñ¿αÑ¬Γ¿óá STRUC «í½ÑúτáÑΓ ß«ºñá¡¿Ñ ¿ ¿¡¿µ¿á½¿ºáµ¿ε
- ßΓαπ¬Γπα ñá¡¡δσ.
-
- è«α«τÑ ú«ó«α∩, ñ¿αÑ¬Γ¿óá STRUC ñáÑΓ πñ«í¡δ⌐ ß»«ß«í ß«ºñá¡¿∩
- ßΓαπ¬Γπα ñá¡¡δσ ¿ ñ«ßΓπ»á ¬ ¡¿¼. æ ñαπú«⌐ ßΓ«α«¡δ, ßΓαπ¬Γπαδ ñá¡-
- ¡δσ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ß»«ß«íßΓóπεΓ «Φ¿í¬á¼ ó í«½∞ΦÑ⌐ ßΓѻѡ¿,
- τѼ ßΓαπ¬Γπαδ ñá¡¡δσ ¡á ∩ºδ¬Ñ æ¿. ìá»α¿¼Ñα, ¬«úñá óδ ¿ß»«½∞ºπÑΓÑ
- ñ½∩ ßß佬¿ ¡á ßΓαπ¬Γπαπ ñá¡¡δσ αÑú¿ßΓα, ó Æπαí« ÇßßѼí½ÑαÑ ¡ÑΓ
- ß»«ß«íá ß««íΘ¿Γ∞, ß«ñÑαª¿Γ ½¿ αÑú¿ßΓα π¬áºáΓѽ∞ ¡á ñ«»πßΓ¿¼πε ñ½∩
- φΓ«ú« Γ¿»á ßΓαπ¬Γπαπ ñá¡¡δσ. é ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ αÑ-
- ú¿ßΓα BX ºáúαπªáÑΓß∩ º¡áτÑ¡¿Ñ¼ 0, ¡« Æπαí« ÇßßѼí½Ñα ¡Ñ ¼«ªÑΓ
- º¡áΓ∞, αáß»«½«ªÑ¡á »« ß¼ÑΘÑ¡¿ε 0 ñ«»πßΓ¿¼á∩ ßΓαπ¬Γπαá ñá¡¡δσ
- DATA, ¿½¿ ¡ÑΓ:
-
- .
- .
- .
- mov bx,0
- mov dx,[bx.AGE]
- .
- .
- .
-
- ¥Γ« ¡Ñ »α«í½Ñ¼á ∩ºδ¬á ÇßßѼí½Ñαá, φΓ« »α«ßΓ« «ΓαáªáÑΓ Ñú«
- »α¿α«ñπ. éÑñ∞ ÑßΓ∞ óδí«α ¼Ñªñπ ΓѼ, τΓ«íδ ñáΓ∞ óá¼ »«½¡πε ßó«í«ñπ
- ó »α«úαá¼¼¿α«óá¡¿¿ ¿ ΓѼ, τΓ«íδ ºáΘ¿Γ¿Γ∞ óáß «Γ ßἫú« ßÑí∩. ƒºδ¬
- ÇßßѼí½Ñαá »αÑñ«ßΓáó½∩ÑΓ óá¼ ßó«í«ñπ. ìπª¡« ¿¼ÑΓ∞ ó ó¿ñπ ÑΘÑ «ñ¿¡
- ó᪡δ⌐ ¼«¼Ñ¡Γ: ó ßß佬áσ ¡á ßΓαπ¬Γπαδ ñá¡¡δσ Æπαí« ÇßßѼí½Ñα ¼«-
- ªÑΓ óδ»«½¡∩Γ∞ Γ«½∞¬« «úαá¡¿τÑ¡¡πε »α«óÑα¬π ¡á «Φ¿í¬¿. ÄΓóÑΓßΓóÑ¡-
-
- TASM2 #3-5/䫬 = 52 =
-
- ¡«ßΓ∞ ºá »αáó¿½∞¡πε ºáúαπº¬π π¬áºáΓѽÑ⌐ 󫺽áúáÑΓß∩ ¡á óáß.
-
- ô¡¿¬á½∞¡δÑ ¿¼Ñ¡á »«½Ñ⌐ ßΓαπ¬Γπα
- -----------------------------------------------------------------
-
- ìÑ߬«½∞¬« ñ«ßáñÑ¡ ëà Σá¬Γ, τΓ« ¿¼Ñ¡á »«½Ñ⌐ ßΓαπ¬Γπα, ¬«Γ«-
- αδÑ ó ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ »α«ßΓ« ∩ó½∩εΓß∩ ¼ÑΓ¬á¼¿, ñ«½ª¡δ íδΓ∞ ó
- ñá¡¡«¼ ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ π¡¿¬á½∞¡δ. ìá»α¿¼Ñα, Ñß½¿ óδ ó ñá¡¡«¼ ¿ß-
- σ«ñ¡«¼ ¼«ñπ½Ñ «»αÑñѽ¿½¿ ßΓαπ¬Γπαπ CLIENT, ¡¿úñÑ ó ñαπú«¼ ¼ÑßΓÑ
- ¼«ñπ½∩ óδ ¡Ñ ¼«ú½¿ íδ ¿ß»«½∞º«óáΓ∞ ¼ÑΓ¬π ß ¿¼Ñ¡Ñ¼ INCOME (ñáªÑ ó
- ñαπú«⌐ ßΓαπ¬ΓπαÑ). INCOME - φΓ« »α«ßΓ« ¼ÑΓ¬á ß« º¡áτÑ¡¿Ñ¼ 22 ¿,
- ¬«¡Ñτ¡«, ó «ñ¡«¼ ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ ¡Ñ ¼«ªÑΓ ß«ñÑαªáΓ∞ß∩ ñóÑ ¼ÑΓ¬¿ ß
- «ñ¡¿¼ ¿ ΓѼ ªÑ ¿¼Ñ¡Ñ¼. é ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ¿º-ºá »«-
- »δΓ¬¿ »ÑαÑ«»αÑñѽѡ¿∩ AGE íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ß∩ «Φ¿í¬á:
-
- .
- .
- .
- CLIENT STRUC
- NAME DB 'çñÑß∞ π¬áºδóáÑΓß∩ ¿¼∩...'
- AGE DW ?
- INCOME DD ?
- CLIENT ENDS
- .
- .
- .
- AGE EQU 21
- .
- .
- .
-
-
-
-
- TASM2 #3-5/䫬 = 53 =
-
- 齫ªÑ¡¡δÑ ßΓαπ¬Γπαδ
- -----------------------------------------------------------------
-
- æΓαπ¬Γπαδ ¼«úπΓ íδΓ∞ 󽫪ѡ¡δ¼¿, ¡á»α¿¼Ñα:
-
- .
- .
- .
- .DATA
- .
- .
- .
- AGE_STRUC STRUC
- YEARS DW ?
- MONTHS DW ?
- AGE_STRUC ENDS
- .
- .
- .
- CLIENT STRUC
- NAME DB 'çñÑß∞ π¬áºδóáÑΓß∩ ¿¼∩...'
- AGE AGE_STRUC <>
- INCOME DW ?
- CLIENT ENDS
- .
- .
- .
- MisterBark CLIENT <>
- .
- .
- .
- .CODE
- .
- .
- .
- mov dx,[MisterBark.AGE.MONTHS]
- mov si,OFFSET MisterBark
- mov cx,[si.AGE.YEARS]
- .
- .
- .
-
- çñÑß∞ ßΓαπ¬Γπαá AGE_STRUC ß ¿¼Ñ¡Ñ¼ AGE ó ßΓαπ¬ΓπαÑ CLIENT
- ∩ó½∩ÑΓß∩ 󽫪ѡ¡«⌐, á ºáΓѼ ó ßΓαπ¬ΓπαÑ CLIENT MisterBark ¼«ª¡«
- ßßδ½áΓ∞ß∩ ¡á »«½∩ MONTHS ¿ YEARS.
-
-
- TASM2 #3-5/䫬 = 54 =
-
- ê¡¿µ¿á½¿ºáµ¿∩ ßΓαπ¬Γπα
- -----------------------------------------------------------------
-
- ÄΓ¡«ß¿Γѽ∞¡« ¿¡¿µ¿á½¿ºáµ¿¿ ßΓαπ¬Γπα ¡πª¡« ßñѽáΓ∞ ¡Ñ߬«½∞¬«
- »αÑñπ»αѪñÑ¡¿⌐. é«-»Ñαóδσ, Ñß½¿ óδ »δΓáÑΓÑß∞ ¿¡¿µ¿á½¿º¿α«óáΓ∞
- ßΓ᫬«ó«Ñ »«½Ñ ßΓαπ¬Γπαδ ßΓ᫬«⌐, ñ½¿¡á ¬«Γ«α«⌐ »αÑóδΦáÑΓ ñ½¿¡π
- »«½∩, Γ« íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ß∩ «Φ¿í¬á áßßÑ¼í½¿α«óá¡¿∩.
-
- é«-óΓ«αδσ, Ññ¿¡ßΓóÑ¡¡δ¼ ó¿ñ«¼ »«½∩, ¬«Γ«α«Ñ ¼«ª¡« ¿¡¿µ¿á½¿-
- º¿α«óáΓ∞ ßΓ᫬«óδ¼ º¡áτÑ¡¿Ñ¼ - φΓ« ßΓ᫬«ó«Ñ »«½Ñ. æ½ÑñπεΘ¿⌐ ñá-
- ½ÑÑ ¬«ñ áßßÑ¼í½¿α«óáΓ∞ß∩ ¡Ñ íπñÑΓ:
-
- .
- .
- .
- TEST STRING
- TEXT DG 30 DUP (' ')
- TEST ENDS
- .
- .
- TStruct TEST <'Test string'>
- .
- .
- .
-
- ñáªÑ Ñß½¿ ßΓ᫬á TEXT ¿¡¿µ¿á½¿α«óá¡á ¡π½∩¼¿, Γᬠ¬á¬ Æπαí« Çß-
- ßѼí½Ñα αáßß¼áΓα¿óáÑΓ TEXT, ¬á¬ ¼áßß¿ó ¿º 30 »α«íѽ«ó, á ¡Ñ ßΓα«-
- ¬π ¿º 30 ß¿¼ó«½«ó. ä«»πßΓ¿¼, ¿¼ÑÑΓß∩ ß½ÑñπεΘ¿⌐ ¬«ñ:
-
- .
- .
- .
- TEST STRUC
- TEXT DB 'çñÑß∞ ß½ÑñπÑΓ ßΓ᫬á.....'
- TEST ENDS
- .
- .
- .
- TStruct TEST <'Test string'>
- .
- .
- .
-
- ¥Γ«Γ ¬«ñ íπñÑΓ áßßÑ¼í½¿α«óáΓ∞ß∩.
-
-
- TASM2 #3-5/䫬 = 55 =
-
- é-ΓαÑΓ∞¿σ, σ«Γ∩ óδ ¼«ªÑΓÑ ¿¡¿µ¿á½¿º¿α«óáΓ∞ í«½ÑÑ «ñ¡«ú« φ½Ñ-
- ¼Ñ¡Γá ñá¡¡δσ, ¬á¬ »α¿¡áñ½ÑªáΘ¿σ ¬ «ñ¡«¼π »«½ε ßΓαπ¬Γπαδ, ¿¡¿µ¿á-
- ½¿º¿α«óáΓ∞ óδ ¼«ªÑΓÑ, ßá¼«Ñ í«½∞ΦÑÑ, «ñ¿¡ φ½Ñ¼Ñ¡Γ ¡á »«½Ñ (¬«úñá
- óδ ß«ºñáÑΓÑ óσ«ªñÑ¡¿Ñ φΓ«⌐ ßΓαπ¬Γπαδ). ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ
- Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ, ¬«úñá ß«ºñáÑΓß∩ ßΓαπ¬Γπαá TestStruc, »Ñαóδ⌐
- íá⌐Γ »«½∩ B ¿¡¿µ¿á½¿º¿απÑΓß∩ º¡áτÑ¡¿Ñ¼ 2, ó Γ« óαѼ∩ ¬á¬ óΓ«α«⌐
- íá⌐Γ ¬áªñ«ú« »«½∩ «ßΓáÑΓß∩ αáó¡δ¼ º¡áτÑ¡¿ε »« π¼«½τá¡¿ε 20h (»α«-
- íѽ):
-
- .
- .
- .
- T STRUC
- A DB 0ffh,0ffh
- B DB 0ffh,0ffh
- T ENDS
- .
- .
- .
- TestStruc T <1,2>
- .
- .
- .
-
- é ñá¡¡«¼ αáºñÑ½Ñ ¼δ «íßπñ¿½¿ óÑαß¿ε ñ¿αÑ¬Γ¿óδ STRUC ñ½∩ αÑ-
- ª¿¼á MASM. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ (αѪ¿¼ IDEAL) ñ¿αÑ¬Γ¿óá STRUC º¡á-
- τ¿Γѽ∞¡« í«½ÑÑ ¼«Θ¡á∩ ¿ »«ºó«½∩ÑΓ ¿ß»«½∞º«óáΓ∞ í«½∞ΦÑ ßαÑñßΓó,
- ñ«ßΓπ»¡δσ ó ∩ºδ¬áσ óδß«¬«ú« πα«ó¡∩ («í π½πτΦÑ¡¡«¼ αѪ¿¼Ñ Æπαí«
- ÇßßѼí½Ñαá αáß߬áºδóáÑΓß∩ ó â½áóÑ 11).
-
-
-
-
- TASM2 #3-5/䫬 = 56 =
-
- ä¿αÑ¬Γ¿óá RECORD
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá RECORD ñáÑΓ óἠ󫺼«ª¡«ßΓ∞ «»αÑñѽ∩Γ∞ »«½∩ í¿Γ ó
- íá⌐ΓÑ ¿½¿ ß½«óÑ. Ä»αÑñѽѡ¿∩ »«½Ñ⌐ í¿Γ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ úÑ-
- ¡Ñαᵿ¿ ¼áß«¬ ß µÑ½∞ε óδñѽѡ¿∩ «ñ¡«ú« ¿½¿ í«½ÑÑ »«½Ñ⌐ í¿Γ, á
- Γá¬ªÑ ó ¬áτÑßΓóÑ ßτÑΓτ¿¬«ó ßñó¿ú«ó ñ½∩ óδαáó¡¿óá¡¿∩ ó»αáó« ½εí«ú«
- í¿Γ«ó«ú« »«½∩. ä¿αÑ¬Γ¿óá RECORD ¡Ñ ¿¼ÑÑΓ «Γ¡«ΦÑ¡¿∩ ¬ «»ÑαáΓ«απ
- Åá߬á½∩ record.
-
- ÅαÑñ»«½«ª¿¼, τΓ« óδ «»αÑñѽ¿ΓÑ ßΓαπ¬Γπαπ ñá¡¡δσ, ¬«Γ«αá∩ ß«-
- ñÑαª¿Γ 1-í¿Γ«óδÑ Σ½áú¿ ¿ 12-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ. ¥Γ« ¼«ª¡« ßñѽáΓ∞ ß
- »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ RECORD ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- TEST_REC RECORD FLAG1:1,FLAG2:1,FLAG3:1,TVAL:12
-
- é ñá¡¡«¼ »α¿¼ÑαÑ «»αÑñѽ∩ÑΓß∩ Γα¿ Σ½áúá FLAG1, FLAG2 ¿ FLAG3
- ¿ »«½Ñ ñá¡¡δσ ß ¿¼Ñ¡Ñ¼ TVAL. ç¡áτÑ¡¿Ñ, π¬áºδóáѼ«Ñ ñ½∩ ¬áªñ«ú«
- »«½∩ »«ß½Ñ ñó«ÑΓ«τ¿∩, ºáñáÑΓ αẼÑα φΓ«ú« »«½∩ ó í¿Γáσ (¬áªñδ⌐ ¿º
- Σ½áú«ó ¿¼ÑÑΓ αẼÑα 1 í¿Γ, TVAL - 12 í¿Γ).
-
- èᬿ¼ «íαẫ¼ »«½∩ σαá¡∩Γß∩ ó¡πΓα¿ ºá»¿ß¿? ¥Γ« ñ«ó«½∞¡«
- ß½«ª¡«. ÅÑαó«Ñ »«½Ñ (FLAG1) - φΓ« ßá¼δ⌐ ½Ñóδ⌐ (¡á¿í«½ÑÑ º¡áτáΘ¿⌐)
- í¿Γ ºá»¿ß¿. éΓ«α«Ñ »«½Ñ (FLAG2) - φΓ« ß½ÑñπεΘ¿⌐ »« º¡áτ¿¼«ßΓ¿ í¿Γ
- ºá»¿ß¿ ¿ Γ.ñ., »«¬á óδ ¡Ñ ñ«ßΓ¿ú¡¿ΓÑ º¡áτÑ¡¿∩ TVAL, ¬«Γ«α«Ñ ºá-
- ¬á¡τ¿óáÑΓß∩ ó ßἫ¼ ¼½áñΦѼ í¿ΓÑ ºá»¿ß¿. Äñ¡á¬« φΓá ºá»¿ß∞ ¿¼ÑÑΓ
- αẼÑα Γ«½∞¬« 15 í¿Γ ¿ «ñ¿¡ í¿Γ ó ß½«óÑ «ßΓáÑΓß∩ ¡ÑπτΓÑ¡¡δ¼ (ºá-
- »¿ß¿ óßÑúñá ºá¡¿¼áεΓ Γ«τ¡« 8 ¿½¿ 16 í¿Γ). éδ»«½¡∩ÑΓß∩ ß½ÑñπεΘÑÑ
- »αá󿽫: ºá»¿ß¿ ó µÑ½«¼ óßÑúñá óδαáó¡¿óáεΓß∩ ó»αáó« ¡á úαá¡¿µπ
- íá⌐Γá ¿½¿ ß½«óá.
-
- èᬠ¼δ πªÑ ߬áºá½¿, φΓ« ¡Ñ¼¡«ú« ß½«ª¡«. ä½∩ »α«∩ߡѡ¿∩ ß¿Γπ-
- ᵿ¿ »α¿óÑñѼ »α¿¼Ñα. çỿß∞ Γ¿»á TEST_REC «»αÑñѽѡá ß »«¼«Θ∞ε
- ßΓ᫬¿ ó¿ñá:
-
- TRec TEST_REC <1,0,0,52h>
-
- çñÑß∞ ¼δ ß«ºñ὿ »ÑαѼѡ¡πε TRec Γ¿»á ºá»¿ß¿ TEST_REC. ç¡á-
- τÑ¡¿∩ ó πú½«óδσ ߬«í¬áσ »αÑñßΓáó½∩εΓ ß«í«⌐ ¡áτá½∞¡δÑ º¡áτÑ¡¿∩ ß«-
- «ΓóÑΓßΓóπεΘ¿σ »«½Ñ⌐, »«φΓ«¼π »«½Ñ TRec FLAG1 ¿¡¿µ¿á½¿º¿απÑΓß∩
- º¡áτÑ¡¿Ñ¼ 0, á »«½Ñ TVAL ¿¡¿µ¿á½¿º¿απÑΓß∩ º¡áτÑ¡¿Ñ¼ 52h. ìá É¿ß.
- 9.1 »«¬áºá¡« αẼÑΘÑ¡¿Ñ ¿ ¡áτá½∞¡δÑ º¡áτÑ¡¿∩ τÑΓδαÑσ »«½Ñ⌐ ºá»¿ß¿
- »ÑαѼѡ¡«⌐ TRec.
-
- FLAG1 FLAG3
- ¡Ñ ¿ß»«½∞ºπÑΓß∩ | FLAG2 | TVAL
-
- TASM2 #3-5/䫬 = 57 =
-
- | | | | |
- ---|-----|-----|-----|-------------|----------------------
- | v | v | v | v | v |
- TRec | 0 | 1 | 0 | 0 | 52h |
- | | | | | |
- ----------------------------------------------------------
- í¿Γ 15 14 13 12 11 0
-
- É¿ß. 9.1. Éáß»«½«ªÑ¡¿Ñ ¿ ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ »«½Ñ⌐ ó ºá»¿ß¿
- TREC.
-
- àß½¿ «íΘ¿⌐ αẼÑα ºá»¿ß¿ («íΘá∩ ßπ¼¼á óßÑσ »«½Ñ⌐) ß«ßΓáó½∩ÑΓ
- 8 ¿½¿ ¼Ñ¡ÑÑ í¿Γ, Γ« ºá»¿ß∞ σαá¡¿Γß∩ ó íá⌐ΓÑ, ó »α«Γ¿ó¡«¼ ß½πτáÑ
- «¡á σαá¡¿Γß∩ ó ß½«óÑ. çá ¿ß¬½ετÑ¡¿Ñ¼ ΓÑσ ß½πτáÑó, ¬«úñá αáºαÑΦÑ¡«
- áßßÑ¼í½¿α«óá¡¿Ñ ß ¿ß»«½∞º«ó᡿Ѽ »α«µÑßß«αá 80386 (ó φΓ«¼ ß½πτáÑ
- ñ«»π߬áεΓß∩ ºá»¿ß¿ ñ« 32 í¿Γ), ºá»¿ß¿, αẼÑα ¬«Γ«αδσ »αÑóδΦáÑΓ
- 16 í¿Γ, ¡Ñ »«ññÑনóáεΓß∩.
-
- ê¡¿µ¿á½¿ºáµ¿∩ »ÑαѼѡ¡«⌐ Γ¿»á ºá»¿ß∞ ó« ¼¡«ú«¼ á¡á½«ú¿τ¡á
- ¿¡¿µ¿á½¿ºáµ¿¿ ßΓαπ¬Γπα¡«⌐ »ÑαѼѡ¡«⌐. àß½¿ óδ ºáñáÑΓÑ ¡áτá½∞¡«Ñ
- º¡áτÑ¡¿Ñ ñ½∩ ñá¡¡«ú« »«½∩ ºá»¿ß¿ »α¿ ß«ºñá¡¿¿ »ÑαѼѡ¡«⌐ Γ¿»á ºá-
- »¿ß∞, Γ« »«½Ñ ¿¡¿µ¿á½¿º¿απÑΓß∩ φΓ¿¼ º¡áτÑ¡¿Ñ¼ (¬á¬ »«¬áºá¡« ó
- »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ).
-
- àß½¿ »α¿ ß«ºñá¡¿¿ »ÑαѼѡ¡«⌐-ºá»¿ß¿ óδ ¡Ñ ºáñáñ¿ΓÑ ¡áτá½∞¡«Ñ
- º¡áτÑ¡¿Ñ ñ½∩ ñá¡¡«ú« »«½∩ ºá»¿ß¿, Γ« 󫺼«ª¡δ ñóá ¿ß»«½∞ºπѼδσ »«
- π¼«½τá¡¿ε º¡áτÑ¡¿∩. è«úñá óδ ß«ºñáÑΓÑ Γ¿» ºá»¿ß¿, óδ ¼«ªÑΓÑ ºá-
- ñáΓ∞ ñ½∩ ½εí«ú« »«½∩ ¿ß»«½∞ºπѼ«Ñ »« π¼«½τá¡¿ε º¡áτÑ¡¿Ñ. ìá»α¿-
- ¼Ñα:
-
- TEST_REC RECORD FLAG:1=1,FLAG:1=0,FLAG3,TVAL:12=0fffh
-
- ºáñáÑΓ »« π¼«½τá¡¿ε º¡áτÑ¡¿Ñ 1 ñ½∩ FLAG1, º¡áτÑ¡¿Ñ 0 ñ½∩ FLAG 2 ¿
- 0FFFh - ñ½∩ TVAL (ñ½∩ FLAG3 ∩ó¡«Ñ º¡áτÑ¡¿Ñ »« π¼«½τá¡¿ε ¡Ñ ºáñá-
- ÑΓß∩). Å« π¼«½τá¡¿ε ¬áªñ«Ñ »«½Ñ, º¡áτÑ¡¿Ñ ¬«Γ«α«ú« ∩ó¡« ¡Ñ ºáñá-
- ÑΓß∩, »α¿¡¿¼áÑΓ º¡áτÑ¡¿Ñ 0, »«φΓ«¼π »« π¼«½τá¡¿ε FLAG3 »α¿ßóá¿óá-
- ÑΓß∩ º¡áτÑ¡¿Ñ 0.
-
- ÄΓßεñá ß½ÑñπÑΓ, τΓ« c πτÑΓ«¼ «»αÑñѽѡ¿∩ TEST_REC ¿ ß«ºñá¡¿∩
- TRec:
-
- .
- .
- .
- .DATA
- .
-
- TASM2 #3-5/䫬 = 58 =
-
- .
- .
- TEST_REC RECORD FLAG:1=1,FLAG:1=0,FLAG3,TVAL:12=0fffh
- .
- .
- .
- TRec TEST_REC <,1,,2>
- .
- .
- .
-
- »«½∩ ¿¡¿µ¿á½¿º¿απεΓß∩ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- - »«½Ñ FLAG1 ¿¡¿µ¿á½¿º¿απÑΓß∩ º¡áτÑ¡¿Ñ¼ 1;
- - »«½Ñ FLAG2 ¿¡¿µ¿á½¿º¿απÑΓß∩ º¡áτÑ¡¿Ñ¼ 1;
- - »«½Ñ FLAG3 ¿¡¿µ¿á½¿º¿απÑΓß∩ º¡áτÑ¡¿Ñ¼ 0;
- - »«½Ñ TVAL ¿¡¿µ¿á½¿º¿απÑΓß∩ º¡áτÑ¡¿Ñ¼ 2.
-
- ÄíΘÑÑ º¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐-ºá»¿ß¿ TRec - 6002h. çá¼ÑΓ¿¼, τΓ«
- ¡áτá½∞¡δÑ º¡áτÑ¡¿∩, ºáñá¡¡δÑ »α¿ ß«ºñá¡¿¿ ºá»¿ß¿, »ÑαÑ«»αÑñѽ∩εΓ
- ¡áτá½∞¡δÑ º¡áτÑ¡¿∩, ºáñáóáѼδÑ »α¿ «»αÑñѽѡ¿¿ ºá»¿ß¿.
-
- Å«ß½Ñ «»αÑñѽѡ¿∩ Γ¿» ºá»¿ß¿ á¡á½«ú¿τÑ¡ ñαπú¿¼ Γ¿»á¼ ñá¡¡δσ.
- éδ, ¡á»α¿¼Ñα, ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ «»Ñαá¡ñδ Γ¿»á ºá»¿ß¿ ó «»Ñαᵿ¿
- SIZE, ¿½¿ ¼«ª¡« «»αÑñѽ¿Γ∞ ¼áßß¿ó ºá»¿ßÑ⌐ ß »«¼«Θ∞ε «»Ñαᵿ¿ DUP.
- ìá»α¿¼Ñα, ñá½ÑÑ «»αÑñѽ∩ÑΓß∩ ¼áßß¿ó ¿º 90 ºá»¿ßÑ⌐ Γ¿»á TEST_REC:
-
- TRecArray TEST_REC 90 DUP (<1,1,1,0>)
-
- èᬠ¿ ¿¼Ñ¡á »«½Ñ⌐ ßΓαπ¬Γπα, ¿¼Ñ¡á »«½Ñ⌐ ºá»¿ßÑ⌐ »αÑñßΓáó½∩εΓ
- ß«í«⌐ ¼ÑΓ¬¿. ū߬«½∞¬π «»αÑñѽ∩Γ∞ ¼ÑΓ¬¿ ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ ñ«»πß-
- ¬áÑΓß∩ Γ«½∞¬« «ñ¿¡ αáº, φΓ« «º¡áτáÑΓ, τΓ« ¿¼Ñ¡á »«½Ñ⌐ ºá»¿ßÑ⌐
- ñ«½ª¡δ íδΓ∞ ó ñá¡¡«¼ ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ π¡¿¬á½∞¡δ.
-
- ä«ßΓπ» ¬ ºá»¿ß∩¼
- -----------------------------------------------------------------
-
- ÆÑ»Ñα∞, ¬«úñá óδ º¡áÑΓÑ, ¬á¬¿¼ «íαẫ¼ ¼«ª¡« ß«ºñáΓ∞ ºá»¿ß∞,
- ¿ ¬á¬ σαá¡∩Γß∩ αẽ¿τ¡δÑ »«½∩ ó ºá»¿ß¿, ¼«ª¡« »α¿ßΓπ»¿Γ∞ ¬ ¿ºπτÑ-
- ¡¿ε ñ«ßΓπ»á ¬ ºá»¿ß∩¼. éδ ¼«ªÑΓÑ ß »«½¡δ¼ «ß¡«ó᡿Ѽ »«ñπ¼áΓ∞,
- τΓ« «íαáΘáΓ∞ß∩ ¬ ºá»¿ß∩¼ ¼«ª¡« Γ«τ¡« ΓᬪÑ, ¬á¬ ¿ ¬ »«½∩¼ ßΓαπ¬-
- Γπαδ, ¡á»α¿¼Ñα:
-
- mov al,[TRec.FLAG2] ; φΓ« αáí«ΓáΓ∞ ¡Ñ íπñÑΓ!
-
-
- TASM2 #3-5/䫬 = 59 =
-
- ¡« φΓ« ¡Ñ Γá¬. Åα«µÑßß«α 8086 ¼«ªÑΓ αáí«ΓáΓ∞ Γ«½∞¬« ß 8- ¿½¿
- 16-í¿Γ«ó묨 «»Ñαá¡ñἿ ó »á¼∩Γ¿, »«φΓ«¼π ¡Ñ󫺼«ª¡« ºáúαπº¿Γ∞
- 1-í¿Γ«ó«Ñ »«½Ñ, ¡á»α¿¼Ñα, ó αÑú¿ßΓα. Äñ¡á¬« ß »«½∩¼¿ ºá»¿ßÑ⌐ ¼«ª-
- ¡« ñѽáΓ∞ ß½ÑñπεΘÑÑ: ¼«ª¡« «»αÑñѽ¿Γ∞ ¿σ αẼÑα ó íá⌐Γáσ, «»αÑñÑ-
- ½¿Γ∞, ߬«½∞¬« í¿Γ ¡πª¡« óδα«ó¡∩Γ∞ ó»αáó« ¿½¿ ó½Ñó« ¿ ñ½∩ Γ«ú«,
- τΓ«íδ óδñѽ¿Γ∞ ¿σ, ß«ºñáΓ∞ ¼á߬π. äαπú¿¼¿ ß½«óἿ, σ«Γ∩ »α«µÑßß«α
- 8086 ¡Ñ »«ºó«½∩ÑΓ óá¼ ¡Ñ»«ßαÑñßΓóÑ¡¡« αáí«ΓáΓ∞ ß »«½∩¼¿ ºá»¿ßÑ⌐,
- Æπαí« ÇßßѼí½Ñα »«ññÑনóáÑΓ αáí«Γπ ß φΓ¿¼¿ »«½∩¼¿ ß »«¼«Θ∞ε Γá-
- ¬¿σ ¿¡ßΓαπ¬µ¿⌐, ¬á¬ AND ¿ SHR.
-
- ç¡áτÑ¡¿Ñ ñá¡¡«ú« »«½∩ ºá»¿ß¿ »αÑñßΓáó½∩ÑΓ ß«í«⌐ τ¿ß½« í¿Γ,
- ¡á ¬«Γ«αδÑ ¡πª¡« ßñó¿¡πΓ∞ ºá»¿ß∞, τΓ«íδ óδα«ó¡∩Γ∞ ó»αáó« ¡á φΓ«
- »«½Ñ (Γ« ÑßΓ∞ »«¼ÑßΓ¿Γ∞ í¿Γ 0 »«½∩ ó í¿Γ 0 ºá»¿ß¿). ìá»α¿¼Ñα:
-
- .
- .
- .
- mov al,FLAG1
- mov ah,TVAL
- .
- .
- .
-
- ºáúαπªáεΓ ó AL 14 ¿ ó AH 0, »«φΓ«¼π:
-
- .
- .
- .
- mov ax,[TRec]
- mov cl,FLAG1
- shr ax,cl
- .
- .
- .
-
- óδαáó¡¿óáεΓ ó»αáó« ¡á »«½Ñ FLAG1 TRec ó AX.
-
- ç¡áτÑ¡¿Ñ ßἫú« Γ¿»á ºá»¿ß¿ - φΓ« º¡áτÑ¡¿Ñ íá⌐Γá ¿½¿ ß½«óá,
- ¬«Γ«α«Ñ ¼«ú½« íδ úÑ¡Ñα¿α«óáΓ∞ß∩ ß »«¼«Θ∞ε ß«ºñá¡¿∩ ºá»¿ß¿ ß ñá¡-
- ¡δ¼¿ ¡áτá½∞¡δ¼¿ º¡áτÑ¡¿∩¼¿. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩:
-
- mov ax,TEXT_REC <1,1,1,0fffh>
-
- ºáúαπªáÑΓ ó AX º¡áτÑ¡¿Ñ 7FFFh - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ óδ ¼«ú½¿ íδ »«-
- ½πτ¿Γ∞, Ñß½¿ íδ ß«ºñ὿ Γ¿» ºá»¿ß¿ TEST_REC ß ¡áτá½∞¡δ¼¿ º¡áτÑ-
- ¡¿∩¼¿ <1,1,1,0FFFh>. ìπª¡« πτ¿ΓδóáΓ∞ αẽ¿τ¿Ñ ¼Ñªñπ ºáúαπº¬«⌐ AX
-
- TASM2 #3-5/䫬 = 60 =
-
- Γ¿»«¼ ºá»¿ß¿ TEST_REC (¬á¬ ó »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ) ¿ ºáúαπº¬«⌐ αÑ-
- ú¿ßΓαá AX Γ¿»«¼ ºá»¿ß¿ TREC, ¬á¬ ó »α¿¼ÑαÑ:
-
- .
- .
- .
- TEST_REC RECORD FLAG1:1=1,FLAG2:1=0,FLAG3:1,TVAL:12=0fffh
- .
- .
- .
- TRec TEST_REC <,1,,,2>
- .
- .
- .
- .CODE
- .
- .
- .
- mov ax,[TRec]
- .
- .
- .
-
- úñÑ αÑú¿ßΓα AX ºáúαπªáÑΓß∩ º¡áτÑ¡¿Ñ¼ 6002h (º¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐
- TRec).
-
-
-
-
- TASM2 #3-5/䫬 = 61 =
-
- Ä»Ñαᵿ∩ WITH
- -----------------------------------------------------------------
-
- Ä»Ñαᵿ∩ WITH ó«ºóαáΘáÑΓ αẼÑα ºá»¿ß¿ ¿½¿ »«½∩ ºá»¿ß¿ ó í¿-
- Γáσ. ìá»α¿¼Ñα, ¡á ß½ÑñπεΘÑ⌐ ßΓα«¬Ñ ó αÑú¿ßΓαÑ AL ß«σαá¡∩ÑΓß∩ º¡á-
- τÑ¡¿Ñ 15 (τ¿ß½« í¿Γ ó ºá»¿ß¿ TEST_REC):
-
- mov al,WITH TEST_REC ; αẼÑα »«½∩ ºá»¿ß¿ ó í¿Γáσ
-
- á ñá½ÑÑ º¡áτÑ¡¿Ñ 1 (ñ½¿¡á ¬áªñ«ú« ¿º »«½Ñ⌐ Σ½áú«ó) ß«σαá¡∩ÑΓß∩ ó
- αÑú¿ßΓαáσ AL, AH ¿ BL ¿ º¡áτÑ¡¿Ñ TVAL - ó αÑú¿ßΓαÑ BH:
-
- .
- .
- .
- mov al,WITH FLAG1
- mov ah,WITH FLAG2
- mov bl,WITH FLAG3
- mov bh,WITH TVAL
- .
- .
- .
-
-
-
-
- TASM2 #3-5/䫬 = 62 =
-
- Ä»Ñαᵿ∩ MASK
- -----------------------------------------------------------------
-
- Ä»Ñαᵿ∩ MASK ó«ºóαáΘáÑΓ ¼á߬π, »«ñσ«ñ∩Θπε ñ½∩ óδñѽѡ¿∩ ºá-
- »¿ß¿ ¿½¿ »«½∩ ºá»¿ß¿ ó »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ AND. ìá»α¿¼Ñα:
-
- mov ax,MASK TEST_REC
-
- ºá»¿ßδóáÑΓ º¡áτÑ¡¿Ñ 7FFFh ó αÑú¿ßΓα AX, á ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- mov ax,MASK TEST_REC
- mov dx,[TRec]
- and dx,ax
- .
- .
- .
-
- ºá»¿ßδóáεΓ º¡áτÑ¡¿Ñ ºá»¿ß¿ TRec ó αÑú¿ßΓαÑ DX, αẼá߬¿απ∩ í¿Γ
- 15, ¬«Γ«αδ⌐ ¡Ñ ∩ó½∩ÑΓß∩ τáßΓ∞ε ºá»¿ß¿ TEST_REC.
-
- Ä»Ñαᵿ∩ MASK í«½ÑÑ »«½Ñº¡á, ¬«úñá ΓαÑíπÑΓß∩ óδñѽ¿Γ∞ «Γ-
- ñѽ∞¡«Ñ »«½Ñ ºá»¿ß¿. äá½ÑÑ «»αÑñѽ∩ÑΓß∩, πßΓá¡«ó½Ñ¡ ½¿ Σ½áú FLAG3
- »«½∩ TRec:
-
- .
- .
- .
- mov ax,[TRec]
- and ax,MASK FLAG3
- jz Flag3NotSet ; Σ½áú ¡Ñ πßΓá¡«ó½Ñ¡
- .
- .
- .
-
- çá¼ÑΓ¿¼, τΓ« ó¼ÑßΓ« ¿¡ßΓαπ¬µ¿¿ AND ¼«ª¡« ß»«¬«⌐¡« ¿ß»«½∞º«-
- óáΓ∞ ¿¡ßΓαπ¬µ¿ε TEST. äá½ÑÑ óδ»«½¡∩ÑΓß∩ Γá ªÑ »α«óÑα¬á, τΓ« ¿ ó
- »αÑñδñπΘѼ »α¿¼ÑαÑ, »α¿ φΓ«¼ ¡Ñ ¿º¼Ñ¡∩εΓß∩ ¡¿¬á¬¿Ñ αÑú¿ßΓαδ ¿½¿
- ∩τÑ⌐¬¿ »á¼∩Γ¿:
-
- .
- .
- .
- jz Flag3NotSet
-
- TASM2 #3-5/䫬 = 63 =
-
- .
- .
- .
-
- Ä»Ñαᵿε MASK »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ αáí«Γδ ß »«½∩¼¿ ºá»¿-
- ß¿ ó ß«τÑΓá¡¿¿ ß ¿¡ßΓαπ¬µ¿∩¼¿ ßñó¿úá (¬á¬ óδ πó¿ñ¿ΓÑ ñá½ÑÑ).
-
-
-
-
- TASM2 #3-5/䫬 = 64 =
-
- ä½∩ τÑú« ¿ß»«½∞ºπεΓß∩ ºá»¿ß¿?
- -----------------------------------------------------------------
-
- ÆÑ»Ñα∞ óδ πº¡á½¿, τΓ« »αÑñßΓáó½∩εΓ ß«í«⌐ ºá»¿ß¿ ¿ ¬á¬ «¡¿
- ¿ß»«½∞ºπεΓß∩. è«úñá ¼«ªÑΓ ñÑ⌐ßΓó¿Γѽ∞¡« 󫺡¿¬¡πΓ∞ ¡Ñ«íσ«ñ¿¼«ßΓ∞
- ó ¿ß»«½∞º«óá¡¿¿ ºá»¿ßÑ⌐? è«¡Ñτ¡«, ºá»¿ß¿ ¿ß»«½∞ºπεΓß∩ ¡ÑτáßΓ«, ¡«
- «¡¿ «τÑ¡∞ πñ«í¡δ: óÑñ∞ ¡Ñ߬«½∞¬« »«½Ñ⌐ ñá¡¡δσ óδ ¼«ªÑΓÑ ºá»¿ßáΓ∞
- ó «ñ¿¡ íá⌐Γ ¿½¿ ó ß½«ó«. ìѬ«Γ«αδÑ ¿ß»«½∞ºπѼδÑ íẫó«⌐ ß¿ßΓѼ«⌐
- óó«ñá-óδó«ñá (BIOS) »ÑαѼѡ¡δÑ Γá¬ªÑ ßΓαπ¬Γπα¿α«óá¡δ ó ó¿ñÑ ºá»¿-
- ßÑ⌐. ìá»α¿¼Ñα, ¼½áñΦ¿⌐ íá⌐Γ Σ½áúá «í«απñ«óá¡¿∩ BIOS, ó ¬«Γ«α«¼
- σαá¡¿Γß∩ «Γ¡«ß∩Θá∩ß∩ ¬ á»»áαáΓ¡«¼π «íÑß»ÑτÑ¡¿ε ¿¡Σ«α¼áµ¿∩ (á¬Γ¿ó-
- ¡δ⌐ ó¿ñÑ«áñá»ΓÑα, τ¿ß½« ¿¼ÑεΘ¿σß∩ ñ¿ß¬«ó«ñ«ó ¿ Γ.ñ.) - φΓ« »«½Ñ
- ßΓαπ¬Γπαδ:
-
- EQ__FLAG RECORD NUMDISKS:2,VIDEO:2,RSRVD:2,MATHCHIP:1,AREDISKS:1
-
- úñÑ:
-
- NUMDISKS - τ¿ß½« πßΓá¡«ó½Ñ¡¡δσ ñ¿ß¬«ó«ñ«ó ñ½∩ ú¿í¬¿σ ñ¿ß¬«ó,
- - 1.
-
- VIDEO - »«¬áºδóáÑΓ, ¬á¬«⌐ Γ¿» ñ¿ß»½Ñ⌐¡«ú« áñá»ΓÑαá ó ñá¡¡δ⌐
- ¼«¼Ñ¡Γ á¬Γ¿óÑ¡.
-
- RSRVD - »«½Ñ, ºáαѺÑαó¿α«óá¡¡«Ñ ñ½∩ ¿ß»«½∞º«óá¡¿∩ ó αẽ¿τ-
- ¡δσ ¼¿¬α«¬«¼»∞εΓÑαáσ Σ¿α¼δ IBM.
-
- MATHCHIP = 1, Ñß½¿ πßΓá¡«ó½Ñ¡ áα¿Σ¼ÑΓ¿τÑ߬¿⌐ ß«»α«µÑßß«αá
- (Γ¿»á 8087).
-
- AREDISKS = 1, Ñß½¿ πßΓá¡«ó½Ñ¡δ ñ¿ß¬«ó«ñδ ñ½∩ ú¿í¬¿σ ñ¿ß¬«ó.
-
- Åα¿óÑñѼ »α¿¼Ñα Σπ¡¬µ¿¿, ¬«Γ«αá∩ ¿ß»«½∞ºπÑΓ ºá»¿ß∞ EQ_FLAG
- ¿ «»Ñαᵿ¿ ¡áñ ºá»¿ß∞ε ñ½∩ πßΓá¡«ó¬¿ »«½∩ ñ¿ß»½Ñ⌐¡«ú« áñá»ΓÑαá ó«
- Σ½áúÑ-»ÑαѼѡ¡«⌐ á»»áαáΓπαδ BIOS:
-
- ;
- ; 髺óαáΘáÑΓ ΓѬπΘÑÑ º¡áτÑ¡¿Ñ »«½∩ ñ¿ß»½Ñ⌐¡«ú« áñá»ΓÑαá
- ; Σ½áúá-»ÑαѼѡ¡«⌐ á»»áαáΓπαδ BIOS
- ;
- ; éó«ñ: ¡ÑΓ
- ;
- ; éδó«ñ:
- ; AL = 0, Ñß½¿ ñ¿ß»½Ñ⌐¡δ⌐ áñá»ΓÑα ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ ¡Ñ óδíαá¡
- ; 1, Ñß½¿ óδíαá¡ µóÑΓ¡«⌐ ñ¿ß»½Ñ⌐¡δ⌐ áñá»ΓÑα 40σ25
- ; 2, Ñß½¿ óδíαá¡ µóÑΓ¡«⌐ ñ¿ß»½Ñ⌐ 80σ25
-
- TASM2 #3-5/䫬 = 65 =
-
- ; 3, Ñß½¿ óδíαá¡ ¼«¡«σα«¼¡δ⌐ ñ¿ß»½Ñ⌐ 80σ25
- ;
- ; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ: AX, CL, ES
- ;
- EQ__FLAG RECORD NUMDISKS:2,VIDEO:2,RSRVD:2,MATHCHIP:1,AREDISKS:1
- ;
-
- GetBIOSEquipmentFlag PROC
- mov ax,40h
- mov es,ax ; ES π¬áºδóáÑΓ ¡á ßÑú¼Ñ¡Γ ñá¡¡δσ
- ; BIOS
- mov al,es:[10h] ; »«½πτ¿Γ∞ ¼½áñΦ¿⌐ íá⌐Γ Σ½áúá
- ; á»»áαáΓπαδ
- and al,MASK VIDEO ; óδñѽ¿Γ∞ »«½Ñ ñ¿ß»½Ñ⌐¡«ú«
- ; áñá»ΓÑαá
- mov cl,VIDEO ; »«½πτ¿Γ∞ τ¿ß½« íá⌐Γ ñ½∩
- ; ßñó¿úá »«½∩ ó»αáó« (óδαáó¡¿-
- ; óá¡¿Ñ ó»αáó« ¡á φΓ« »«½Ñ)
- shr al,cl ; óδα«ó¡∩Γ∞ ó»αáó« ¡á »«½Ñ
- ; ñ¿ß»½Ñ⌐¡«ú« áñá»ΓÑαá
- ret
- GetBIOSEquipmentFlag ENDP
-
- Åα¿óÑñѼ »α¿¼Ñα ñ«»«½¡¿Γѽ∞¡«⌐ Σπ¡¬µ¿¿, ¬«Γ«αá∩ πßΓá¡áó½¿óá-
- ÑΓ »«½Ñ Σ½áúá á»»áαáΓπαδ BIOS ó ºáñá¡¡«Ñ º¡áτÑ¡¿Ñ:
-
- ;
- ; ôßΓá¡áó½¿óáÑΓ º¡áτÑ¡¿Ñ »«½∩ Σ½áúá á»»áαáΓπαδ BIOS
- ;
- ; éó«ñ:
- ; AL = 0, Ñß½¿ ñ¿ß»½Ñ⌐¡δ⌐ áñá»ΓÑα ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ ¡Ñ óδíαá¡
- ; 1, Ñß½¿ óδíαá¡ µóÑΓ¡«⌐ ñ¿ß»½Ñ⌐¡δ⌐ áñá»ΓÑα 40σ25
- ; 2, Ñß½¿ óδíαá¡ µóÑΓ¡«⌐ ñ¿ß»½Ñ⌐ ß αѪ¿¼«¼ 80σ25
- ; 3, Ñß½¿ óδíαá¡ ¼«¡«σα«¼¡δ⌐ ñ¿ß»½Ñ⌐ 80σ25
- ;
- ; éδó«ñ: ¡ÑΓ
- ;
- ; ìáαπΦáѼδÑ αÑú¿ßΓαδ: AX, CL, ES
- ;
- EQ__FLAG RECORD NUMDISKS:2,VIDEO:2,RSRVD:2,MATHCHIP:1,AREDISKS:1
- ;
-
- SetBIOSEquipmentFlag PROC
- mov ax,40h
- mov es,cx ; ES π¬áºδóáÑΓ ¡á ßÑú¼Ñ¡Γ ñá¡¡δσ
- ; BIOS
-
- TASM2 #3-5/䫬 = 66 =
-
- mov cl,VIDEO ; »«½πτ¿Γ∞ τ¿ß½« íá⌐Γ ñ½∩
- ; ßñó¿úá »ÑαÑñáóáѼ«ú« º¡áτÑ¡¿∩
- ; ó½Ñó« ñ½∩ óδαáó¡¿óá¡¿∩ Ñú« ¡á
- ; »«½Ñ ñ¿ß»½Ñ⌐¡«ú« áñá»ΓÑαá
- shl al,cl ; óδα«ó¡∩Γ∞ º¡áτÑ¡¿Ñ
- mov ah,es:[10h] ; »«½πτ¿Γ∞ ¼½áñΦ¿⌐ íá⌐Γ Σ½áúá
- ; á»»áαáΓπαδ
- and ah,NOT MASK VIDEO ; «τ¿ßΓ¿Γ∞ »«½Ñ ñ¿ß»½Ñ⌐¡«ú«
- ; áñá»ΓÑαá
- and al,MASK VIDEO ; «íÑß»Ñτ¿Γ∞ »αáó¿½∞¡«Ñ ºáñá-
- ; ¡¿Ñ ¡«ó«ú« º¡áτÑ¡¿Ñ »«½∩
- ; ñ¿ß»½Ñ⌐¡«ú« áñá»ΓÑαá
- or al,ah ; ºá¡ÑßΓ¿ ¡«óδ⌐ ñ¿ß»½Ñ⌐¡δ⌐
- ; áñá»ΓÑα
- mov es:[10h],al ; πßΓá¡«ó¿Γ∞ ¡«óδ⌐ Σ½áú
- ; á»»áαáΓπαδ
- ret
- SetBIOSEquipmentFlag ENDP
-
- é ñá¡¡«¼ αáºñÑ½Ñ ¼δ «íßπñ¿½¿ óÑαß¿ε ñ¿αÑ¬Γ¿óδ RECORD αѪ¿¼á
- MASM. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ (IDEAL) óÑαß¿∩ ñá¡¡«⌐ ñ¿αÑ¬Γ¿óδ ¡Ñß-
- ¬«½∞¬« «Γ½¿τáÑΓß∩ «Γ αѪ¿¼á MASM (í«½ÑÑ »«ñα«í¡« «í π½πτΦÑ¡¡«¼
- αѪ¿¼Ñ αáß߬áºδóáÑΓß∩ ó â½áóÑ 11).
-
-
-
-
- TASM2 #3-5/䫬 = 67 =
-
- ä¿αÑ¬Γ¿óá UNION
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá UNION «íÑß»Ñτ¿óáÑΓ ß»«ß«í, ß »«¼«Θ∞ε ¬«Γ«α«ú« ¼«ª-
- ¡« ßßδ½áΓ∞ß∩ ¡á ñá¡¡πε ∩τÑ⌐¬π »á¼∩Γ¿, ¬á¬ ¡á ñá¡¡δÑ ¡Ñ߬«½∞¬¿σ
- Γ¿»«ó. ¥Γá ñ¿αÑ¬Γ¿óá á¡á½«ú¿τ¡á «»ÑαáΓ«απ union ∩ºδ¬á æ¿.
-
- ÅαÑñ»«½«ª¿¼, π óáß ¿¼ÑÑΓß∩ ßτÑΓτ¿¬, ¬«Γ«αδ⌐ ¿¡«úñá ¿ß»«½∞ºπ-
- ÑΓß∩, ¬á¬ 8-í¿Γ«óδ⌐ ßτÑΓτ¿¬, á ¿¡«úñá - ¬á¬ 16-í¿Γ«óδ⌐. àú« ¼«ª¡«
- «»¿ßáΓ∞, ¬á¬ ß½ÑñπεΘÑÑ «íΩÑñ¿¡Ñ¡¿Ñ:
-
- .
- .
- .
- FLEX_COUNT UNION
- COUNT8 DB ?
- COUNT16 DW ?
- FLEX_COUNT ENDS
- .
- .
- .
-
- çá¼ÑΓ¿¼, τΓ« ¬á¬ ¿ ñ¿αÑ¬Γ¿óá STRUC, ñ¿αÑ¬Γ¿óá UNION ñ«½ª¡á
- ºáóÑαΦáΓ∞ß∩ ß««ΓóÑΓßΓóπεΘÑ⌐ ñ¿αÑ¬Γ¿ó«⌐ ENDS.
-
- æ πτÑΓ«¼ »αÑñδñπΘÑú« «»αÑñѽѡ¿∩ «íΩÑñ¿¡Ñ¡¿∩ FLEX_COUNT óδ
- ¼«ªÑΓÑ ß«ºñáΓ∞ ¿ ¿ß»«½∞º«óáΓ∞ Γᬫ⌐ ñó«⌐¡«⌐ ßτÑΓτ¿¬ ß½ÑñπεΘ¿¼ «í-
- αẫ¼:
-
- .
- .
- .
- .DATA
- Counter FLEX_COUNT <?,?>
- .
- .
- .
- .CODE
- .
- .
- .
- mov [Counter.COUNT16],0ffffh
- LoopTop:
- .
- .
- .
-
- TASM2 #3-5/䫬 = 68 =
-
- dec [Count.COUNT16]
- jnz LoopTop
- .
- .
- .
- mov [Counter.COUNT8],255
- ShortLoopTop:
- .
- .
- .
- dec [Counter.COUNT8]
- jnz LoopTop
- .
- .
- .
-
- èᬠ¿ »α¿ ¿ß»«½∞º«óá¡¿¿ ßΓαπ¬Γπαδ, «»Ñαᵿ∩ Γ«τ¬¿ ¿ß»«½∞ºπ-
- ÑΓß∩ ñ½∩ ßß佬¿ ¡á »«½∩ «íΩÑñ¿¡Ñ¡¿∩ (¼«ª¡« Γá¬ªÑ ¿ß»«½∞º«óáΓ∞
- «»Ñαᵿε +). æßδ½¬á ¡á »ÑαѼѡ¡πε ß »«¼«Θ∞ε »«½Ñ⌐ «íΩÑñ¿¡Ñ¡¿∩ φ¬-
- ó¿óá½Ñ¡Γ¡á ¿ß»«½∞º«óá¡¿ε »ÑαÑ«»αÑñѽѡ¿∩ Γ¿»á. ÅαÑñδñπΘ¿⌐ »α¿¼Ñα
- φ¬ó¿óá½Ñ¡ΓÑ¡ ß½ÑñπεΘѼπ:
-
- .
- .
- .
- .DATA
- Counter DW ?
- .
- .
- .
- .CODE
- .
- .
- .
- mov WORD PTR [Counter],0ffffh
- LoopTop:
- .
- .
- .
- dec WORD PTR [Counter]
- jnz LoopTop
- .
- .
- .
- mov BYTE PTR [Counter],255
- ShortLoopTop:
-
- TASM2 #3-5/䫬 = 69 =
-
- .
- .
- .
- dec BYTE PTR [Counter]
- jnz LoopTop
- .
- .
- .
-
- ÅαÑ¿¼πΘÑßΓó« ¿ß»«½∞º«óá¡¿∩ «íΩÑñ¿¡Ñ¡¿⌐ »« ßαáó¡Ñ¡¿ε ß ¿ß-
- »«½∞º«ó᡿Ѽ »ÑαÑ«»αÑñѽѡ¿⌐ Γ¿»á ß«ßΓ«¿Γ ó Γ«¼, τΓ« óδ ß í«½∞ΦÑ⌐
- óÑα«∩Γ¡«ßΓ∞ε ¿ß»«½∞ºπÑΓÑ ¬«ααÑ¬Γ¡«Ñ ¿¼∩ φ½Ñ¼Ñ¡Γá «íΩÑñ¿¡Ñ¡¿∩, τѼ
- íπñÑΓÑ ¬áªñδ⌐ αẠóß»«¼¿¡áΓ∞ « »ÑαÑ«»αÑñѽѡ¿¿ Γ¿»á. èα«¼Ñ Γ«ú«,
- »«óΓ«α∩εΘá∩ß∩ «»Ñαᵿ∩ ß »ÑαѼѡ¡«⌐-«íΩÑñ¿¡Ñ¡¿Ñ¼ ßΓá¡«ó¿Γß∩ «τÑ-
- ó¿ñ¡«⌐, Ñß½¿ óδ »«ß¼«Γα¿ΓÑ ¡á «»αÑñѽѡ¿Ñ »ÑαѼѡ¡«⌐, »«φΓ«¼π
- »α«úαá¼¼π, ó ¬«Γ«α«⌐ ß«ñÑαªáΓß∩ «íΩÑñ¿¡Ñ¡¿∩, ú«αáºñ« ½ÑúτÑ »«¡¿-
- ¼áΓ∞ ¿ «íß½πª¿óáΓ∞.
-
- é «íΩÑñ¿¡Ñ¡¿∩σ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ 󽫪ѡ¡δÑ «íΩÑñ¿¡Ñ¡¿∩ ¿
- ßΓαπ¬Γπαδ. ìá»α¿¼Ñα, ß½ÑñπεΘÑÑ «íΩÑñ¿¡Ñ¡¿Ñ »«ºó«½∩ÑΓ «αúá¡¿º«óáΓ∞
- ñ«ßΓπ» ¬ 4-íá⌐Γ«ó«⌐ »ÑαѼѡ¡«⌐ »á¼∩Γ¿ ½¿í« ¬á¬ π¬áºáΓѽε (Γ¿»á
- ßÑú¼Ñ¡Γ:ß¼ÑΘÑ¡¿Ñ) αẼÑα«¼ ó ñó«⌐¡«Ñ ß½«ó«, ½¿í« ¬á¬ »ÑαѼѡ-
- ¡«⌐-ß¼ÑΘÑ¡¿ε αẼÑα«¼ ó ß½«ó« ¿ »ÑαѼѡ¡«⌐-ßÑú¼Ñ¡Γπ αẼÑα«¼ ó
- ß½«ó«:
-
- .
- .
- .
- SEG_OFF STRUC
- POFF DW ?
- PSEG DW ?
- SEG_OFF ENDS
- .
- .
- .
- PUNION UNION
- DPTR DD ?
- XPTR SEG_OFF <>
- PUNION ENDS
- .
- .
- .
- .CODE
- .
- .
- .
-
- TASM2 #3-5/䫬 = 70 =
-
- mov [bx.XPTR.POFF],si
- mov [bx.XPTR.PSEG],ds
- .
- .
- .
- les di,[bx.DPTR]
- .
- .
- .
-
-
- èᬠ¿ »α¿ ¿ß»«½∞º«óá¡¿¿ ñ¿αÑ¬Γ¿ó STRUC ¿ RECORD, ¿¼Ñ¡á »«-
- ½Ñ⌐, «»αÑñѽ∩Ѽδσ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ UNION, »αÑñßΓáó½∩εΓ ß«í«⌐
- «íδτ¡δÑ ¼ÑΓ¬¿. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ñ¿αÑ¬Γ¿óá UNION º¡áτ¿Γѽ∞¡«
- í«½ÑÑ ¼«Θ¡á∩ ¿ »αÑñ«ßΓáó½∩ÑΓ ¼¡«ªÑßΓó« ßαÑñßΓó, ¬«Γ«αδÑ ñ«ßΓπ»¡δ
- ó ∩ºδ¬áσ óδß«¬«ú« πα«ó¡∩ («í π½πτΦÑ¡¡«¼ αѪ¿¼Ñ αáß߬áºδóáÑΓß∩ ó
- â½áóÑ 11).
-
-
-
-
- TASM2 #3-5/䫬 = 71 =
-
-
- ä¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó
- -----------------------------------------------------------------
-
- é â½áóÑ 5 ¼δ πªÑ αáß߬áºδó὿ « Γ«¼, ¬á¬ ¿ß»«½∞º«óáΓ∞ π»α«-
- ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó. éδ πªÑ Γá¬ªÑ º¡áÑΓÑ ñ«ß-
- ΓáΓ«τ¡« « ßΓá¡ñáαΓ¡δσ ñ¿αÑ¬Γ¿óáσ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, τΓ«íδ
- ß«ºñáΓ∞ αáí«τπε »α«úαá¼¼π. ÆÑ»Ñα∞ ¼δ «íßπñ¿¼ ¬áªñπε ¿º ßΓá¡ñáαΓ-
- ¡δσ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó »«ñα«í¡« ¿ ñáñ¿¼ óá¼ í«½ÑÑ
- »«ñα«í¡πε ¿¡Σ«α¼áµ¿ε « Γ«¼, τΓ« »αÑñßΓáó½∩εΓ ß«í«⌐ π»α«ΘÑ¡¡δÑ ñ¿-
- αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó. îδ αáßß¼«Γα¿¼ Γá¬ªÑ »α¿¼Ñα »α«ú-
- αá¼¼δ, ó ¬«Γ«α«⌐ ¿ß»«½∞ºπεΓß∩ ¡Ñ߬«½∞¬« ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ¬«ñá
- ¿ ñá¡¡δσ, τΓ«íδ óδ »«½πτ¿½¿ »αÑñßΓáó½Ñ¡¿Ñ « Γ«¼, ¬á¬ αáí«ΓáÑΓ
- »α«úαá¼¼á, ß«ßΓ«∩Θá∩ ¿º ¡Ñ߬«½∞¬¿σ ßÑú¼Ñ¡Γ«ó.
-
- éß»«¼¡¿¼, τΓ« π»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó
- ½ÑúτÑ ¿ß»«½∞º«óáΓ∞, ¡« «¡¿ ¼Ñ¡ÑÑ ¼«Θ¡δÑ, τѼ ßΓá¡ñáαΓ¡δÑ (»«½¡δÑ)
- ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó. é ß½ÑñπεΘ¿σ αáºñѽáσ ¼δ αáßß¼«Γ-
- α¿¼ Γá¬¿Ñ ßΓá¡ñáαΓ¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, ¬á¬
- SEGMENT, GROUP ¿ ASSUME.
-
-
-
-
- TASM2 #3-5/䫬 = 72 =
-
-
- ä¿αÑ¬Γ¿óá SEGMENT
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá SEGMENT ¿ß»«½∞ºπÑΓß∩ ñ½∩ Γ«ú«, τΓ«íδ ¡áτáΓ∞ ßÑú-
- ¼Ñ¡Γ. èáªñ«⌐ ñ¿αÑ¬Γ¿óÑ SEGMENT ñ«½ª¡á ß««ΓóÑΓßΓó«óáΓ∞ ñ¿αÑ¬Γ¿óá
- ENDS, ºáóÑαΦáεΘá∩ ßÑú¼Ñ¡Γ. é «Γ½¿τ¿Ñ «Γ π»α«ΘÑ¡¡δσ ñ¿αÑ¬Γ¿ó «»αÑ-
- ñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, ñ¿αÑ¬Γ¿óá SEGMENT »«ºó«½∩ÑΓ óá¼ »«½¡«ßΓ∞ε π»-
- αáó½∩Γ∞ áΓα¿íπΓἿ ¬áªñ«ú« ßÑú¼Ñ¡Γá.
-
- Å«½¡á∩ Σ«α¼á ñ¿αÑ¬Γ¿óδ SEGMENT ¿¼ÑÑΓ ß½ÑñπεΘ¿⌐ ó¿ñ:
-
- ¿¼∩ SEGMENT óδαáó¡¿óá¡¿Ñ ¬«¼í¿¡¿α«óá¡¿Ñ ¿ß»«½∞º«óá¡¿Ñ '¬½áßß'
-
- úñÑ »«½∩ óδαáó¡¿óá¡¿Ñ", "¬«¼í¿¡¿α«óá¡¿Ñ", "¿ß»«½∞º«óá¡¿Ñ" ¿
- "¬½áßß" ¡Ñ«í∩ºáΓѽ∞¡δ. èáªñ«Ñ ¿º φΓ¿σ »«½Ñ⌐ ¼δ «íßπñ¿¼ »««τÑαÑñ-
- ¡«.
-
- Å«½∩ "¿¼∩" ¿ "óδαáó¡¿óá¡¿Ñ"
- -----------------------------------------------------------------
-
- Å«½Ñ "¿¼∩" ºáñáÑΓ ¿¼∩ ßÑú¼Ñ¡Γá. ê¼Ñ¡á ßÑú¼Ñ¡Γ«ó ∩ó½∩εΓß∩
- ¼ÑΓ¬á¼¿, »«φΓ«¼π ó ßó«¿σ ¿ßσ«ñ¡δσ ¼«ñπ½∩σ «¡¿ ñ«½ª¡δ íδΓ∞ π¡¿-
- ¬á½∞¡δ. Åα¿ ºáóÑαΦÑ¡¿¿ ßÑú¼Ñ¡Γá Γ« ªÑ ¿¼∩ ñ«½ª¡« ¿ß»«½∞º«óáΓ∞ß∩ ó
- ñ¿αÑ¬Γ¿óÑ ENDS.
-
- Å«½Ñ "óδαáó¡¿óá¡¿Ñ" ºáñáÑΓ úαá¡¿µπ »á¼∩Γ¿, ß ¬«Γ«α«⌐ ñ«½ªÑ¡
- ¡áτ¿¡áΓ∞ß∩ ßÑú¼Ñ¡Γ. ä«»πßΓ¿¼δ ß½ÑñπεΘ¿Ñ úαá¡¿µδ óδαáó¡¿óá¡¿∩:
-
- BYTE - ¿ß»«½∞ºπÑΓß∩ ß½ÑñπεΘ¿⌐ ñ«ßΓπ»¡δ⌐ áñαÑß íá⌐Γá.
- DWORD - ¿ß»«½∞ºπÑΓß∩ ß½ÑñπεΘ¿⌐ áñαÑß, óδα«ó¡Ñ¡¡δ⌐ ¡á úαá¡¿µπ
- ñó«⌐¡«ú« ß½«óá.
- PAGE - ¿ß»«½∞ºπÑΓß∩ áñαÑß ß½ÑñπεΘÑ⌐ ßΓαá¡¿µδ (óδαáó¡¿óáÑΓß∩ ¡á
- úαá¡¿µπ, ¬αáΓ¡πε 256 íá⌐Γá¼).
- PARA - ¿ß»«½∞ºπÑΓß∩ ß½ÑñπεΘ¿⌐ áñαÑß »áαáúαáΣá (óδαáó¡¿óáÑΓß∩
- áñαÑßπ, ¬αáΓ¡«¼π 16 íá⌐Γá¼.
- WORD - ¿ß»«½∞ºπÑΓß∩ ß½ÑñπεΘ¿⌐ áñαÑß, óδα«ó¡Ñ¡¡δ⌐ ¡á úαá¡¿µπ
- ß½«óá.
-
- ä½∩ í«½∞Φ¿¡ßΓóá ¬«¼»á¬Γ¡δσ »α«úαá¼¼ »«ñσ«ñ¿Γ óδαáó¡¿óá¡¿Ñ ¡á
- úαá¡¿µπ íá⌐Γá. é í«½∞Φ¿¡ßΓóÑ 16-αáºα∩ñ¡δσ ¬«¼»∞εΓÑα«ó (Γᬿσ, ¬á¬
- AT) í«½ÑÑ »αÑñ»«τΓ¿Γѽ∞¡« óδαáó¡¿óá¡¿Ñ ¡á úαá¡¿µπ ß½«óá, Γᬠ¬á¬
- 16-αáºα∩ñ¡δÑ »α«µÑßß«αδ í«½ÑÑ φΣΣÑ¬Γ¿ó¡« αáí«ΓáεΓ ß ñá¡¡δ¼¿, óδ-
- α«ó¡Ñ¡¡δ¼¿ ¡á úαá¡¿µπ ß½«óá. Å« ΓѼ ªÑ »α¿τ¿¡á¼ ó 32-αáºα∩ñ¡δσ
- ¬«¼»∞εΓÑαáσ »αÑñ»«τΓ¿Γѽ∞¡ÑÑ óδαáó¡¿óá¡¿Ñ ¡á úαá¡¿µπ ñó«⌐¡«ú«
- ß½«óá. éδαáó¡¿óá¡¿Ñ ¡á úαá¡¿µπ »áαáúαáΣá ¡Ñ«íσ«ñ¿¼« ñ½∩ ßÑú¼Ñ¡-
-
- TASM2 #3-5/䫬 = 73 =
-
- Γ«ó, ¬«Γ«αδÑ íπñπΓ »«½¡«ßΓ∞ε ºá¡¿¼áΓ∞ «íΩѼ 64è.
-
- Å«½Ñ "¬«¼í¿¡¿α«óá¡¿Ñ"
- -----------------------------------------------------------------
-
- Å«½Ñ "¬«¼í¿¡¿α«óá¡¿Ñ" π»αáó½∩ÑΓ ΓѼ ß»«ß«í«¼, ß »«¼«Θ∞ε ¬«-
- Γ«α«ú« ßÑú¼Ñ¡Γδ ß ΓѼ¿ ªÑ ¿¼Ñ¡á¼¿ ó ñαπú¿σ ¼«ñπ½∩σ íπñπΓ ß«τÑ-
- ΓáΓ∞ß∩ ß ñá¡¡δ¼ ¼«ñπ½Ñ¼ »α¿ ¿σ ¬«¼»«¡«ó¬Ñ. ¥Γ« »«½Ñ ¼«ªÑΓ »α¿¡¿-
- ¼áΓ∞ ß½ÑñπεΘ¿Ñ º¡áτÑ¡¿∩:
-
- AT PRIVATE
- COMMON PUBLIC
- MEMORY STACK
- VIRTUAL
-
- éδ ¼«ªÑΓÑ Γá¬ªÑ »α«ß¼«ΓαÑΓ∞ »«ß½Ññ¡¿⌐ αáºñѽ ("ô»α«ΘÑ¡¡δÑ
- ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó"), úñÑ »«¬áºá¡δ Γ¿»δ ¬«¼í¿¡¿α«óá-
- ¡¿∩, ¿ß»«½∞ºπѼδÑ ó ∩ºδ¬áσ óδß«¬«ú« πα«ó¡∩.
-
- Æ¿» ¬«¼í¿¡¿α«óá¡¿∩ AT »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« ¡áτὫ ßÑú¼Ñ¡Γá
- íπñÑΓ αẼÑΘáΓ∞ß∩ »« π¬áºá¡¡«¼π áñαÑßπ ó »á¼∩Γ¿. ÉÑá½∞¡δ⌐ ¬«ñ ¡Ñ
- úÑ¡Ñα¿απÑΓß∩, ó¼ÑßΓ« φΓ«ú« ßÑú¼Ñ¡Γδ ß Γ¿»«¼ ¬«¼í¿¡¿α«óá¡¿∩ (ß«τÑ-
- Γá¡¿∩) AT ¿ß»«½∞ºπεΓß∩, ¬á¬ ΓαáΣáαÑΓ ñ½∩ ñ«ßΓπ»á ¬ «í½áßΓ∩¼ »á¼∩-
- Γ¿, Γᬿ¼, ¬á¬ ßÑú¼Ñ¡Γ ñá¡¡δσ Åçô íẫó«⌐ ß¿ßΓѼδ óó«ñá-óδó«ñá ¿
- ñ¿ß»½Ñ⌐¡á∩ »á¼∩Γ∞. ìá»α¿¼Ñα:
-
- .
- .
- .
- VGA_GRAPHICS_MEMORY SEGMENT AT 0A000h
- BitMapStart LABEL BYTE
- VGA_GRAPHICS_MEMORY ENDS
- .
- .
- .
- mov ax,VGA_GRAPHICS_MEMORY
- mov es,ax
- ASSUME ES:VGA_GRAPHICS_MEMORY
- mov cx,08000h
- sub ax,ax
- cld
- rep stosw
- .
- .
- .
-
- TASM2 #3-5/䫬 = 74 =
-
-
- «τ¿ΘáÑΓ úαáΣ¿τÑ߬¿⌐ φ¬αá¡ áñá»ΓÑαá VGA.
-
- Æ¿» ¬«¼í¿¡¿α«óá¡¿∩ COMMON ºáñáÑΓ, τΓ« ¡áτὫ ñá¡¡«ú« ßÑú¼Ñ¡-
- Γá ¿ ¡áτὫ ñαπú¿σ ßÑú¼Ñ¡Γ«ó ß ΓѼ ªÑ ¿¼Ñ¡Ñ¼ ñ«½ª¡« óδαáó¡¿-
- óáΓ∞ß∩ Γᬿ¼ «íαẫ¼, τΓ« ßÑú¼Ñ¡Γδ íπñπΓ »ÑαѬαδóáΓ∞ ñαπú ñαπúá.
- ÄíΘ¿⌐ αẼÑα ßÑú¼Ñ¡Γá »αÑñßΓáó½∩ÑΓ ß«í«⌐ αẼÑα ¡á¿í«½∞ΦÑú« ßÑú-
- ¼Ñ¡Γá ß ñá¡¡δ¼ ¿¼Ñ¡Ñ¼. Äñ¿¡ ¿º ß»«ß«í«ó ¿ß»«½∞º«óá¡¿∩ Γ¿»á ¬«¼-
- í¿¡¿α«óá¡¿∩ COMMON ß«ßΓ«¿Γ ó« ó¬½ετÑ¡¿¿ Σá⌐½á, ó ¬«Γ«α«¼ «»αÑñÑ-
- ½∩ÑΓß∩ ßÑú¼Ñ¡Γ COMMON, ó ¬áªñ«¼ ¼«ñπ½Ñ, úñÑ ¿¼ÑÑΓß∩ ßßδ½¬á ¡á
- ñá¡¡δ⌐ ßÑú¼Ñ¡Γ, í½áú«ñáα∩ τѼπ óßÑ ¼«ñ㫨 ¼«úπΓ ß«ó¼ÑßΓ¡« ¿ß»«½∞-
- º«óáΓ∞ «ñ¿¡ ¿ ëà ªÑ ßÑú¼Ñ¡Γ.
-
- Æ¿» ¬«¼í¿¡¿α«óá¡¿∩ PUBLIC π¬áºδóáÑΓ ¬«¼»«¡«óΘ¿¬π, τΓ« ¡πª¡«
- óδ»«½¡¿Γ∞ ¬«¡¬áΓѡᵿε ñá¡¡«ú« ßÑú¼Ñ¡Γá ß ñαπú¿¼¿ ßÑú¼Ñ¡ΓἿ ß
- ΓѼ ªÑ ¿¼Ñ¡Ñ¼, í½áú«ñáα∩ τѼπ ßÑú¼Ñ¡Γδ ß«ßΓáó½∩εΓ «ñ¿¡ í«½∞Φ«⌐
- ßÑú¼Ñ¡Γ. ÄíΘ¿⌐ αẼÑα ßÑú¼Ñ¡Γá »αÑñßΓáó½∩ÑΓ ß«í«⌐ ßπ¼¼π αẼÑα«ó
- óßÑσ ßÑú¼Ñ¡Γ«ó ß φΓ¿¼ ¿¼Ñ¡Ñ¼. ÄíΘ¿⌐ αẼÑα ßÑú¼Ñ¡Γ«ó PUBLIC ¡Ñ
- ñ«½ªÑ¡ »αÑóδΦáΓ∞ 64è (¬á¬ ¿ αẼÑα óßÑσ ñαπú¿σ ßÑú¼Ñ¡Γ«ó). Æ¿»
- PUBLIC ¿ß»«½∞ºπÑΓß∩, ¬«úñá ¡Ñ߬«½∞¬« ¼«ñπ½Ñ⌐ ß«ó¼ÑßΓ¡« ¿ß»«½∞ºπεΓ
- «ñ¿¡ ¿ ëà ªÑ ßÑú¼Ñ¡Γ, ¡« ¬áªñδ⌐ ¼«ñπ½∞ «»αÑñѽ∩ÑΓ ßó«¿ ß«íßΓóÑ¡-
- ¡δÑ »ÑαѼѡ¡δÑ. ÅÑαѼѡ¡δÑ ó ßÑú¼Ñ¡Γáσ PUBLIC ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ
- GLOBAL τáßΓ« ¿ß»«½∞ºπεΓß∩ ¼«ñπ½∩¼¿ ß«ó¼ÑßΓ¡«.
-
- Æ¿» ¬«¼í¿¡¿α«óá¡¿∩ MEMORY - φΓ« Γ«ªÑ ßἫÑ, τΓ« Γ¿» PUBLIC.
-
- Æ¿» ¬«¼í¿¡¿α«óá¡¿∩ STACK π¬áºδóáÑΓ ¬«¼»«¡«óΘ¿¬π, τΓ« ¡πª¡«
- óδ»«½¡¿Γ∞ ¬«¡¬áΓѡᵿε óßÑσ ßÑú¼Ñ¡Γ«ó ß ñá¡¡δ¼ ¿¼Ñ¡Ñ¼ ó «ñ¿¡ ßÑú-
- ¼Ñ¡Γ, ¿ »«ßΓα«¿Γ∞ Σá⌐½ .àòà, τΓ«íδ »α¿ óδ»«½¡Ñ¡¿¿ »α«úαá¼¼δ αÑ-
- ú¿ßΓαδ SS:SP π¬áºδó὿ ¡á ¬«¡Ñµ φΓ«ú« ßÑú¼Ñ¡Γá. ¥Γ« ߻ѵ¿á½∞¡δ⌐
- Γ¿» ¬«¼í¿¡¿α«óá¡¿∩, ¬«Γ«αδ⌐ ñ«½ªÑ¡ ¿ß»«½∞º«óáΓ∞ß∩ Γ«½∞¬« ñ½∩ ßΓÑ-
- ¬á ¿ ¡¿ ñ½∩ τÑú« í«½ÑÑ.
-
- Æ¿» ¬«¼í¿¡¿α«óá¡¿∩ VIRTUAL «»αÑñѽ∩ÑΓ ßÑú¼Ñ¡Γ ߻ѵ¿á½∞¡«ú«
- ó¿ñá, ¬«Γ«αδ⌐ íπñÑΓ ¿¡ΓÑα»αÑΓ¿α«óáΓ∞ß∩, ¬á¬ «íΘá∩ «í½áßΓ∞, ¿ »α¿-
- ß«Ññ¿¡∩Γ∞ß∩ ó« óαѼ∩ ¬«¼»«¡«ó¬¿ ¬ ñαπú«¼π ßÑú¼Ñ¡Γπ. ÅαÑñ»«½áúáÑΓ-
- ß∩, τΓ« ßÑú¼Ñ¡Γ VIRTUAL »α¿ß«Ññ¿¡∩ÑΓß∩ ¬ ßÑú¼Ñ¡Γπ, ó ¬«Γ«αδ⌐ «¡
- 󽫪ѡ. ÄΓ φΓ«ú« ßÑú¼Ñ¡Γá ßÑú¼Ñ¡Γ VIRTUAL ¡áß½ÑñπÑΓ áΓα¿íπΓδ. ä¿-
- αÑ¬Γ¿óá ASSUME αáßß¼áΓα¿óáÑΓ ßÑú¼Ñ¡Γ VIRTUAL, ¬á¬ τáßΓ∞ Ñú« α«ñ¿-
- Γѽ∞߬«ú« ßÑú¼Ñ¡Γá, ñαπú¿¼¿ ß½«óἿ, ßÑú¼Ñ¡ΓÑ VIRTUAL ¿¡ΓÑα»αÑΓ¿-
- απÑΓß∩, ¬á¬ «íδτ¡δ⌐ ßÑú¼Ñ¡Γ. 諼»«¡«óΘ¿¬ αáßß¼áΓα¿óáÑΓ ßÑú¼Ñ¡Γδ
- VIRTUAL, ¬á¬ «íΘπε «í½áßΓ∞, ¬«Γ«αá∩ íπñÑΓ ¿ß»«½∞º«óáΓ∞ß∩ αáº¡δ¼¿
- ¼«ñπ½∩¼¿. ¥Γ« »«ºó«½∩ÑΓ ß«ó¼ÑßΓ¡« ¿ß»«½∞º«óáΓ∞ ó αạδσ ¼«ñπ½∩σ
- ßΓáΓ¿τÑ߬¿Ñ ñá¡¡δÑ, ß«ñÑαªáΘ¿Ñß∩ ó« ó¬½ετáѼδσ Σá⌐½áσ.
-
- ìᬫ¡Ñµ, Γ¿» ¬«¼í¿¡¿α«óá¡¿∩ PRIVATE π¬áºδóáÑΓ ¬«¼»«¡«óΘ¿¬π,
-
- TASM2 #3-5/䫬 = 75 =
-
- τΓ« ñá¡¡δ⌐ ßÑú¼Ñ¡Γ ¡Ñ ß½ÑñπÑΓ ß«τÑΓáΓ∞ ¡¿ ß ¬á¬¿¼¿ ñαπú¿¼¿ ßÑú-
- ¼Ñ¡ΓἿ. ¥Γ« »«ºó«½∩ÑΓ óá¼ «»αÑñѽ∩Γ∞ ßÑú¼Ñ¡Γδ, ¬«Γ«αδÑ ∩ó½∩εΓß∩
- ½«¬á½∞¡δ¼¿ »« «Γ¡«ΦÑ¡¿ε ¬ ñá¡¡«¼π ¼«ñπ½ε (»α¿ φΓ«¼ ¡Ñ ¡πª¡« íÑß-
- »«¬«¿Γ∞ß∩ « 󫺼«ª¡δσ ¬«¡Σ½¿¬Γáσ ß ßÑú¼Ñ¡ΓἿ ß ΓѼ¿ ªÑ ¿¼Ñ¡á¼¿,
- ¿ß»«½∞ºπεΘ¿¼¿ß∩ ó ñαπú¿σ ¼«ñπ½∩σ. àß½¿ Γ¿» ¬«¼í¿¡¿α«óá¡¿∩ ¡Ñ π¬á-
- ºδóáÑΓß∩, Γ« ñ½∩ ßÑú¼Ñ¡Γ«ó »« π¼«½τá¡¿ε ºáñáÑΓß∩ Γ¿» ¬«¼í¿¡¿α«óá-
- ¡¿∩ PRIVATE.
-
-
- ìạáτÑ¡¿Ñ »«½Ñ⌐ "¿ß»«½∞º«óá¡¿Ñ" ¿ "¬½áßß"
- -----------------------------------------------------------------
-
- Å«½Ñ "¿ß»«½∞º«óá¡¿Ñ" ñ¿αÑ¬Γ¿óδ SEGMENT »αÑñ¡áº¡áτÑ¡« Γ«½∞¬«
- ñ½∩ αáí«Γδ ß »α«µÑßß«α«¼ 80386. ü«½ÑÑ »«ñα«í¡« «í φΓ«¼ »«½Ñ αáßß-
- ¬áºδóáÑΓß∩ ó â½áóÑ 10.
-
- Å«½Ñ "¬½áßß" ¿ß»«½∞ºπÑΓß∩ ñ½∩ π»αáó½Ñ¡¿∩ »«α∩ñ¬«¼, ó ¬«Γ«α«¼
- ¬«¼»«¡«óΘ¿¬ αẼÑΘáÑΓ ßÑú¼Ñ¡Γδ. éßÑ ßÑú¼Ñ¡Γδ ñá¡¡«ú« ¬½áßßá αáº-
- ¼ÑΘáεΓß∩ ó ¡Ñ»αÑαδó¡«¼ í½«¬Ñ »á¼∩Γ¿, ¡Ñºáó¿ß¿¼« «Γ ¿σ »«α∩ñ¬á ó
- ¿ßσ«ñ¡«¼ ¬«ñÑ. é αáºñÑ½Ñ "ô»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú-
- ¼Ñ¡Γ«ó »«¬áºá¡δ ¬½áßßδ, ¿ß»«½∞ºπѼδÑ ó ∩ºδ¬áσ óδß«¬«ú« πα«ó¡∩.
- ä½∩ »α«ßΓ«Γδ óδ ¼«ªÑΓÑ ß«í½εñáΓ∞ φΓ¿ ß«ú½áΦÑ¡¿∩. (ü«½ÑÑ »«ñα«í¡«
- «í π»«α∩ñ«τ¿óá¡¿¿ ßÑú¼Ñ¡Γ«ó αáß߬áºδóáÑΓß∩ ó ß½ÑñπεΘѼ αáºñѽÑ.)
-
- ÉẼÑα, Γ¿», ¿¼∩ ¿ πα«óÑ¡∞ 󽫪ѡ¡«ßΓ¿ ßÑú¼Ñ¡Γá
- -----------------------------------------------------------------
-
- ÄíΘ¿⌐ αẼÑα ßÑú¼Ñ¡Γ«ó ó ¬½áßßÑ «úαá¡¿τÑ¡ Γ«½∞¬« ñ«ßΓπ»¡«⌐
- ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ »á¼∩Γ∞ε. Äñ¡á¬« αẼÑα «Γñѽ∞¡δσ
- ßÑú¼Ñ¡Γ«ó ¡Ñ ¼«ªÑΓ »αÑóδΦáΓ∞ 64è.
-
- çá¼ÑΓ¿¼, τΓ« Γ¿» ¬½áßßá (Ñß½¿ «¡ »α¿ßπΓßΓóπÑΓ) ñ«½ªÑ¡ ºá¬½ε-
- τáΓ∞ß∩ ó ¬áóδτ¬¿. Æ¿» ¬½áßßá ñ«½ªÑ¡ íδΓ∞ π¡¿¬á½Ñ¡ ó ñá¡¡«¼ ¿ßσ«ñ-
- ¡«¼ ¼«ñπ½Ñ, Γ« ÑßΓ∞ ¡¿¬á¬á∩ ¿ß»«½∞ºπѼá∩ ó ñá¡¡«¼ ¼«ñπ½Ñ ¼ÑΓ¬á ¡Ñ
- ¼«ªÑΓ Γ«ªÑ ¿¼∩, τΓ« ¿ ¿¼∩ ¬½áßßá, π¬áºá¡¡«Ñ ó φΓ«¼ ¼«ñπ½Ñ. Äñ¡á-
- ¬«, óδ ñ«½ª¡δ πíÑñ¿Γ∞ß∩, τΓ« óßÑ «»αÑñѽѡ¿∩ ñá¡¡«ú« ßÑú¼Ñ¡Γá ó
- ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ ¿¼ÑεΓ «ñ¡¿ ¿ ΓÑ ªÑ áΓα¿íπΓδ, ó »α«Γ¿ó¡«¼ ß½πτáÑ
- Æπαí« ÇßßѼí½Ñα íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ «Φ¿í¬π.
-
- ôñ«í¡δ⌐ ß»«ß«í ¿ºíѪáΓ∞ Γᬿσ «Φ¿í«¬ ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ«-
- íδ ºáñáΓ∞ áΓα¿íπΓδ Γ«½∞¬« «ñ¿¡ αẠ»α¿ «»αÑñѽѡ¿¿ ßÑú¼Ñ¡Γá ó ¿ß-
- σ«ñ¡«¼ ¼«ñπ½Ñ. àß½¿ »α¿ »«óΓ«α¡«¼ «»αÑñѽѡ¿¿ ßÑú¼Ñ¡Γá áΓα¿íπΓδ
- «í¡áαπªÑ¡δ ¡Ñ íπñπΓ, Γ« Æπαí« ÇßßѼí½Ñα áóΓ«¼áΓ¿τÑ߬¿ ¿ß»«½∞ºπÑΓ
- áΓα¿íπΓδ, ºáñá¡¡δÑ »α¿ »Ñαó«¼ «»αÑñѽѡ¿¿ ßÑú¼Ñ¡Γá.
-
-
- TASM2 #3-5/䫬 = 76 =
-
- ìᬫ¡Ñµ, ßÑú¼Ñ¡Γδ ¼«úπΓ íδΓ∞ 󽫪ѡ¡δ¼¿, τΓ« «º¡áτáÑΓ, τΓ«
- óδ ¼«ªÑΓÑ «»αÑñѽ¿Γ∞ ßÑú¼Ñ¡Γ ñ« Γ«ú«, ¬á¬ óδ ºá¬«¡τ¿ΓÑ »αÑñδñπΘ¿⌐
- ßÑú¼Ñ¡Γ, ¡á»α¿¼Ñα:
-
- .
- .
- .
- DataSeg SEGMENT PARA PUBLIC 'DATA'
- .
- .
- .
- DataSeg2 SEGMENT PARA PRIVATE 'FAR_DATA'
- .
- .
- .
- DataSeg2 ENDS
- .
- .
- .
- DataSeg ENDS
- .
- .
- .
-
- é «íΘѼ ß½πτáÑ ó½«ªÑ¡¡«ßΓ∞ ¡Ñ ∩ó½∩ÑΓß∩ »«½Ñº¡«⌐, «ñ¡á¬« ÑßΓ∞
- »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ «ñ¿¡ ß½πτá⌐, ¬«úñá «¡á ¼«ªÑΓ «¬áºáΓ∞ß∩ »«½Ñº¡«⌐ -
- φΓ« ¼á¬α«¬«¼á¡ñá. ùΓ«íδ «»αÑñѽ¿Γ∞ ßÑú¼Ñ¡Γ ó ¼á¬α«¬«¼á¡ñÑ, óá¼
- «íδτ¡« »α¿σ«ñ¿Γß∩ ºáóÑαΦáΓ∞, á ºáΓѼ ó«º«í¡«ó½∩Γ∞ ΓѬπΘ¿⌐ ßÑú-
- ¼Ñ¡Γ, á τΓ«íδ φΓ« ßñѽáΓ∞, óá¼ ΓαÑíπÑΓß∩ º¡áΓ∞ ΓѬπΘÑÑ ¿¼∩ ßÑú-
- ¼Ñ¡Γá, τΓ« ó ¬«¡ΓѬßΓÑ ¼á¬α«¬«¼á¡ñδ ¡Ñ óßÑúñá «τÑó¿ñ¡«. 齫ªÑ¡-
- ¡«ßΓ∞ ßÑú¼Ñ¡Γ«ó »«ºó«½∩ÑΓ óá¼ «»αÑñѽ¿Γ∞ ßÑú¼Ñ¡Γ, ñáªÑ ¡Ñ º¡á∩
- ¿¼Ñ¡¿ ΓѬπΘÑú« ßÑú¼Ñ¡Γá, ¡á»α¿¼Ñα:
-
- .
- .
- .
- TEST MACRO
- .
- .
- .
- TestSeg SEGMENT WORD PRIVATE 'FAR_DATA'
- .
- .
- .
- TestSeg ENDS
- .
-
- TASM2 #3-5/䫬 = 77 =
-
- .
- .
- ENDM
- .
- .
- .
-
- Å«ß½Ñ ºáóÑαΦÑ¡¿∩ 󽫪ѡ¡«ú« ßÑú¼Ñ¡Γá Æπαí« ÇßßѼí½Ñα »α«ßΓ«
- ó«º«í¡«ó½∩ÑΓ áßßÑ¼í½¿α«óá¡¿Ñ ó ßÑú¼Ñ¡ΓÑ, ¬«Γ«αδ⌐ íδ½ á¬Γ¿ó¡δ¼ ñ«
- ¡áτá½á 󽫪ѡ¡«ú« ßÑú¼Ñ¡Γá.
-
-
-
-
- TASM2 #3-5/䫬 = 78 =
-
- Å«α∩ñ«¬ ßÑú¼Ñ¡Γ«ó
- -----------------------------------------------------------------
-
- é «ß¡«ó¡«¼ óá¼ ¡Ñ »α¿σ«ñ¿Γß∩ íÑß»«¬«¿Γ∞ß∩ « Γ«¼, ¬á¬«ó »«α∩-
- ñ«¬ ßÑú¼Ñ¡Γ«ó ó »«½πτáѼ«¼ Σá⌐½Ñ .àòà. é«-»Ñαóδσ, »«α∩ñ«¬, ó ¬«-
- Γ«α«¼ ßÑú¼Ñ¡Γδ ß½ÑñπεΓ ó óδ»«½¡∩Ѽ«¼ Σá⌐½Ñ, τáßΓ« ¡Ñ ¿¼ÑÑΓ º¡áτÑ-
- ¡¿∩. é«-óΓ«αδσ, ó í«½∞Φ¿¡ßΓóÑ ß½πτáѼ, ¬«úñá óá¼ ¡πª¡« ß«í½εñáΓ∞
- »«α∩ñ«¬ ßÑú¼Ñ¡Γ«ó, ½Ñú¬« ¼«ª¡« «í«⌐Γ¿ß∞ ¬«¼»¿½∩Γ«α«¼ ∩ºδ¬á óδß«-
- ¬«ú« πα«ó¡∩ ¿½¿ ñ¿αÑ¬Γ¿ó«⌐ DOSSEG. àß½¿ óδ óδ»«½¡∩ÑΓÑ ¬«¼»«¡«ó¬π
- ß ∩ºδ¬«¼ óδß«¬«ú« πα«ó¡∩, Γ« »«α∩ñ¬«¼ ßÑú¼Ñ¡Γ«ó «íδτ¡« π»αáó½∩ÑΓ
- ¬«¼»¿½∩Γ«α φΓ«ú« ∩ºδ¬á. àß½¿ óδ »¿ΦÑΓÑ »α«úαá¼¼π Γ«½∞¬« ¡á ∩ºδ¬Ñ
- ÇßßѼí½Ñαá ¿ π¬áºδóáÑΓÑ ñ¿αÑ¬Γ¿óπ DOSSEG, Γ« »α¿ π»«α∩ñ«τ¿óá¡¿¿
- ßÑú¼Ñ¡Γ«ó íπñπΓ ß«í½εñáΓ∞ß∩ ß«ú½áΦÑ¡¿∩ Σ¿α¼δ Microsoft, Γ« ÑßΓ∞
- »«α∩ñ«¬ ßÑú¼Ñ¡Γ«ó íπñÑΓ ß½ÑñπεΘ¿¼:
-
- - ßÑú¼Ñ¡Γδ ¬½áßßá CODE;
- - ßÑú¼Ñ¡Γδ ß ¬½áßß«¼, «Γ½¿τ¡δ¼ «Γ CODE, ¡Ñ ∩ó½∩εΘ¿Ñß∩ τáßΓ∞ε
- DGROUP;
- - ßÑú¼Ñ¡Γδ, ∩ó½∩εΘ¿Ñß∩ τáßΓ∞ε DGROUP:
-
- á) ßÑú¼Ñ¡Γδ ß ¬½áßß«¼, «Γ½¿τ¡δ¼ «Γ STACK ¿ BSS;
- í) ßÑú¼Ñ¡Γδ ¬½áßßá BSS;
- ó) ßÑú¼Ñ¡Γδ ¬½áßßá STACK.
-
- àß½¿ óá¼ σ«τÑΓß∩ πº¡áΓ∞ « »«α∩ñ¬Ñ, ó ¬á¬«¼ ¬«¼»«¡«óΘ¿¬ αáº-
- ¼ÑΘáÑΓ óáΦ¿ ßÑú¼Ñ¡Γδ, ¼«ªÑΓÑ »α«ßΓ« ¿ß»«½∞º«óáΓ∞ »áαá¼ÑΓα ¬«¼á¡ñ-
- ¡«⌐ ßΓ᫬¿ /s, ¬«Γ«αδ⌐ π¬áªÑΓ πΓ¿½¿ΓÑ TLINK, τΓ« ¡πª¡« úÑ¡Ñα¿α«-
- óáΓ∞ »«ñα«í¡δ⌐ Σá⌐½ ßσѼδ ßÑú¼Ñ¡Γ«ó, ¿ »α«ß¼«Γα¿ΓÑ φëà Σá⌐½.
-
- ÄßΓáÑΓß∩ ó«»α«ß, ¬á¬¿¼ «íαẫ¼ π»«α∩ñ«τ¿óáεΓß∩ ßÑú¼Ñ¡Γδ, Ñß-
- ½¿ óδ ¡Ñ óδ»«½¡∩ÑΓÑ ¬«¼»«¡«ó¬π ß ∩ºδ¬«¼ óδß«¬«ú« πα«ó¡∩ ¿ ¡Ñ ¿ß-
- »«½∞ºπÑΓÑ ñ¿αÑ¬Γ¿óπ DOSSEG? ùáΘÑ óßÑú« óá¼ ¡Ñ »«ΓαÑíπÑΓß∩ º¡áΓ∞
- «ΓóÑΓ ¡á φëà ó«»α«ß, ¡« ñ½∩ Γ«ú« ß½πτá∩, ¬«úñá φΓ« ¿¼ÑÑΓ ñ½∩ óáß
- º¡áτÑ¡¿Ñ, ¼δ ßñѽáѼ ¡Ñ¬«Γ«α«Ñ »«∩ߡѡ¿Ñ (φΓ« ¡Ñ߬«½∞¬« ß½«ª¡ÑÑ,
- τѼ ¼«ªÑΓ »«¬áºáΓ∞ß∩).
-
- Åα¿ «ΓßπΓßΓó¿¿ ∩ó¡«ú« ºáñá¡¿∩ »«α∩ñ¬á ßÑú¼Ñ¡Γ«ó (¡á»α¿¼Ñα, ß
- »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ DOSSEG) ¬«¼»«¡«óΘ¿¬Ñ úαπ»»¿απÑΓ ó¼ÑßΓÑ óßÑ ßÑú-
- ¼Ñ¡Γδ ñá¡¡«ú« ¬½áßßá (úñÑ ¬½áßß ßÑú¼Ñ¡Γá «»αÑñѽ∩ÑΓß∩ »«½Ñ¼
- "¬½áßß" ó ñ¿αÑ¬Γ¿óÑ SEGMENT). æá¼¿ úαπ»»δ ßÑú¼Ñ¡Γ«ó »«¼ÑΘáεΓß∩ ó
- Σá⌐½ .EXE »α«ßΓ« ó Γ«¼ »«α∩ñ¬Ñ, ó ¬á¬«¼ ¬«¼»«¡«óΘ¿¬ ¿σ «í¡áαπª¿-
- óáÑΓ. ¥Γ« «º¡áτáÑΓ, τΓ« »«α∩ñ«¬, ó ¬«Γ«α«¼ ¬«¼»«¡πεΓß∩ «íΩÑ¬Γ¡δÑ
- Σá⌐½δ, ó½¿∩ÑΓ ¡á ¬«¡Ñτ¡δ⌐ »«α∩ñ«¬ ßÑú¼Ñ¡Γ«ó ó Σá⌐½Ñ .EXE.
-
- ÆÑ»Ñα∞ ¼δ »«½πτ¿½¿ ßÑú¼Ñ¡Γδ, ßΓα«ú« π»«α∩ñ«τÑ¡¡δÑ »« ¬½áß-
- ßá¼. Ç ¬á¬ π»«α∩ñ«τ¿óáεΓß∩ ßÑú¼Ñ¡Γδ ó¡πΓα¿ ¬áªñ«ú« ¬½áßßá? Ä¡¿
-
- TASM2 #3-5/䫬 = 79 =
-
- Γá¬ªÑ »«¼ÑΘáεΓß∩ ó Σá⌐½ .EXE ó Γ«¼ »«α∩ñ¬Ñ, ó ¬á¬«¼ ¬«¼»«¡«óΘ¿¬
- ¿σ «í¡áαπª¿óáÑΓ. Äñ¡¿¼ ¿º Σá¬Γ«α«ó ºñÑß∞ íπñÑΓ »«α∩ñ«¬, ó ¬«Γ«α«¼
- ¬«¼»«¡πεΓß∩ Σá⌐½δ .OBJ. äαπú«⌐ Σá¬Γ«α - φΓ« »«α∩ñ«¬, ó ¬«Γ«α«¼
- ßÑú¼Ñ¡Γδ αẼÑΘÑ¡δ ó ¬áªñ«¼ Σá⌐½Ñ .OBJ.
-
- ä¿αÑ¬Γ¿óá .SEQ π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ßÑú¼Ñ¡Γδ ó
- Σá⌐½Ñ .OBJ ¡πª¡« αẼÑßΓ¿Γ∞ ó Γ«¼ »«α∩ñ¬Ñ, ó ¬á¬«¼ «¡¿ ß½ÑñπεΓ ó
- ¿ßσ«ñ¡«¼ Σá⌐½Ñ. Åα¿ »«ß½Ññ«óáΓѽ∞¡«¼ π»«α∩ñ«τ¿óá¡¿¿ ßÑú¼Ñ¡Γ«ó »«-
- α∩ñ«¬ ßÑú¼Ñ¡Γ«ó ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ ¼«ªÑΓ »«ó½¿∩Γ∞ ¡á »«α∩ñ«¬ ßÑú-
- ¼Ñ¡Γ«ó ó Σá⌐½Ñ .EXE. ¥Γ« αѪ¿¼ αáí«Γδ, »α¿¡∩Γδ⌐ ó Æπαí« ÇßßѼí½Ñ-
- αÑ »« π¼«½τá¡¿ε, »«φΓ«¼π ßÑú¼Ñ¡Γδ íπñπΓ π»«α∩ñ«τ¿óáΓ∞ß∩
- »«ß½Ññ«óáΓѽ∞¡«, ñáªÑ Ñß½¿ óδ «»πßΓ¿ΓÑ ñ¿αÑ¬Γ¿óπ .SEQ (¡« Ñß½¿ ¡Ñ
- ¿ß»«½∞ºπÑΓß∩ ñ¿αÑ¬Γ¿óá .ALPHA).
-
- ä¿αÑ¬Γ¿óá .ALPHA π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ßÑú¼Ñ¡Γδ ó
- «íΩÑ¬Γ¡«¼ Σá⌐½Ñ ¡πª¡« αẼÑΘáΓ∞ ó á½Σáó¿Γ¡«¼ »«α∩ñ¬Ñ. Åα¿ π»«α∩-
- ñ«τ¿óá¡¿¿ »« á½Σáó¿Γπ »«α∩ñ«¬ ßÑú¼Ñ¡Γ«ó ó ñá¡¡«¼ ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ
- ¡Ñ ó½¿∩ÑΓ ¡á »«α∩ñ«¬ ßÑú¼Ñ¡Γ«ó ó Σá⌐½Ñ .EXE. é ¡Ñ¬«Γ«αδσ ßΓáαδσ
- áßßѼí½Ñαáσ φëà αѪ¿¼ αáí«Γδ ¿ß»«½∞ºπÑΓß∩ »« π¼«½τá¡¿ε, »«φΓ«¼π,
- τΓ«íδ τΓ«íδ »α«úαá¼¼δ »αáó¿½∞¡« αáí«Γ὿, óá¼ ¿¡«úñá ¼«ªÑΓ »«¡á-
- ñ«í¿Γ∞ß∩ ¿ß»«½∞º«óá¡¿Ñ ñá¡¡«⌐ ñ¿αÑ¬Γ¿óδ.
-
- êΓá¬, ΓÑ»Ñα∞ óδ ¿¼ÑÑΓÑ ßÑú¼Ñ¡Γδ, ßó«í«ñ¡« π»«α∩ñ«τÑ¡¡δÑ »«
- ¬½áßßá¼, ¿ π»«α∩ñ«τÑ¡¡δÑ ó¡πΓα¿ ¬½áßßá ó ß««ΓóÑΓßΓó¿¿ ß »«α∩ñ¬«¼
- ¿σ ß½Ññ«óá¡¿∩. éδ ¼«ªÑΓÑ π»αáó½∩Γ∞ π»«α∩ñ«τ¿ó᡿Ѽ ßÑú¼Ñ¡Γ«ó ó
- ¬½áßßÑ ¬á¬ ó ß««ΓóÑΓßΓó¿¿ ß ΓѼ »«α∩ñ¬«¼, ó ¬«Γ«α«¼ ¬«¼»«¡πεΓß∩
- «íΩÑ¬Γ¡δÑ Σá⌐½δ, Γᬠ¿ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿ó .SEQ ¿ .ALPHA. àß½¿
- óδíαá¡á ñ¿αÑ¬Γ¿óá .SEQ, Γ« ¡á »«α∩ñ«¬ ß½Ññ«óá¡¿∩ ßÑú¼Ñ¡Γ«ó ó óδ-
- »«½¡∩Ѽ«¼ Σá⌐½Ñ .EXE »«α∩ñ«¬ ß½Ññ«óá¡¿∩ ßÑú¼Ñ¡Γ«ó ó ñá¡¡«¼ ¿ßσ«ñ-
- ¡«¼ ¼«ñπ½Ñ.
-
- èᬠóδ ¼«ªÑΓÑ ó¿ñÑΓ∞, π»«α∩ñ«τ¿óá¡¿Ñ ßÑú¼Ñ¡Γ«ó - ñѽ« ¡Ñ
- »α«ßΓ«Ñ. Äñ¡á¬«, ¬á¬ ¡¿ ßΓαá¡¡«, óá¼ ¡Ñ »α¿ñÑΓß∩ íÑß»«¬«¿Γ∞ß∩ «
- »«α∩ñ¬Ñ ßÑú¼Ñ¡Γ«ó: «íδτ¡« «¡ ¡Ñ ¿¼ÑÑΓ º¡áτÑ¡¿∩, á ¬«úñá «¡ óáªÑ¡,
- Γ« «í π»«α∩ñ«τ¿óá¡¿¿ ßÑú¼Ñ¡Γ«ó ºá óáß, ¬á¬ »αá󿽫, ºáí«Γ¿Γß∩
- ¬«¼»¿½∩Γ«α ∩ºδ¬á óδß«¬«ú« πα«ó¡∩ ¿½¿ ñ¿αÑ¬Γ¿óá DOSSEG.
-
-
-
-
- TASM2 #3-5/䫬 = 80 =
-
- ä¿αÑ¬Γ¿óá GROUP
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá GROUP ¿ß»«½∞ºπÑΓß∩ ñ½∩ ¬«¼í¿¡¿α«óá¡¿∩ ñóπσ ¿½¿ í«-
- ½ÑÑ ßÑú¼Ñ¡Γ«ó ó «ñ¡π ½«ú¿τÑ߬πε ºá»¿ß∞, »«ß½Ñ τÑú« ¬« óßѼ φΓ¿¼
- ßÑú¼Ñ¡Γá¼ ¼«ª¡« áñαÑß«óáΓ∞ß∩ «Γ¡«ß¿Γѽ∞¡« «ñ¡«ú« ßÑú¼Ñ¡Γ¡«ú« αÑ-
- ú¿ßΓαá.
-
- ÅαÑñ»«½«ª¿¼, π óáß ÑßΓ∞ »α«úαá¼¼á, ¬«Γ«αá∩ «íαáΘáÑΓß∩ ¬ ñá¡-
- ¡δ¼ ó ñóπσ ßÑú¼Ñ¡Γáσ. Äíδτ¡« óá¼ »α¿σ«ñ¿Γß∩ ºáúαπªáΓ∞ ßÑú¼Ñ¡Γ¡δ⌐
- αÑú¿ßΓα ¿ π¬áºδóáΓ∞ ñ¿αÑ¬Γ¿óπ ASSUME ¬áªñδ⌐ αáº, ¬«úñá óδ σ«Γ¿ΓÑ
- ß¡áτá½á «íαáΓ¿Γ∞ß∩ ¬ «ñ¡«¼π ßÑú¼Ñ¡Γπ, á ºáΓѼ ¬ ñαπú«¼π. ¥Γ« ñ«-
- ó«½∞¡« «íαѼѡ¿Γѽ∞¡« ¿ ΓαÑíπÑΓ ½¿Φ¡Ñú« óαѼѡ¿. ìἡ«ú« »α«ΘÑ
- ߬«¼í¿¡¿α«óáΓ∞ ßÑú¼Ñ¡Γδ ó «ñ¡π úαπ»»π ß ¿¼Ñ¡Ñ¼ DataGroup, ºáúαπ-
- º¿Γ∞ ó αÑú¿ßΓα DS ¡áτὫ DataGroup, ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ ASSUME
- DS ñ½∩ úαπ»»δ DataGroup, á ºáΓѼ ó ½εí«⌐ ¼«¼Ñ¡Γ «íαáΘáΓ∞ß∩ ¬ Γ«¼π
- ¿½¿ ¿¡«¼π ¿º φΓ¿σ ßÑú¼Ñ¡Γ«ó. Åα¿óÑñѼ »α¿¼Ñα »α«úαá¼¼δ:
-
- .
- .
- .
- DataGroup GROUP DataSeg1,DataSeg2
- .
- .
- .
- DataSeg1 SEGMENT PARA PUBLIC 'DATA'
- MemVar1 DW 0
- DataSeg1 ENDS
- .
- .
- .
- mov ax,DataGroup
- mov ds,ax
- ASSUME DS:DataGroup
- .
- .
- .
- mov ax,[MemVar1]
- mov [MemVar2],ax
- .
- .
- .
-
- ä½∩ τÑú« ¼«ªÑΓ »«ΓαÑí«óáΓ∞ß∩ ¿ß»«½∞º«óáΓ∞ úαπ»»δ, σ«Γ∩ »α«ΘÑ
- »«½πτ¿Γ∞ ëà ªÑ αѺπ½∞ΓáΓ ß »«¼«Θ∞ε «ñ¡«ú« ¿¼Ñ¡¿ ßÑú¼Ñ¡Γá ¿ Γ¿»á
- ¬«¼í¿¡¿α«óá¡¿∩ PUBLIC? äÑ⌐ßΓó¿Γѽ∞¡«, ó »α«úαá¼¼áσ, ¬«Γ«αδÑ »¿-
-
- TASM2 #3-5/䫬 = 81 =
-
- ΦπΓß∩ Γ«½∞¬« ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá, ¡ÑΓ í«½∞Φ«⌐ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ó
- úαπ»»áσ, σ«Γ∩ Ñß½¿ óδ σ«Γ¿ΓÑ, óδ ¬«¡Ñτ¡« ¼«ªÑΓÑ ¿σ ¿ß»«½∞º«óáΓ∞.
- âαπ»»δ ¿ß»«½∞ºπεΓß∩ ó «ß¡«ó¡«¼, ¬«úñá «αúá¡¿ºπÑΓß∩ ¿¡ΓÑαΣÑ⌐ß Çß-
- ßѼí½Ñαá ß ¬«ñ«¼ ∩ºδ¬«ó óδß«¬«ú« πα«ó¡∩. é τáßΓ¡«ßΓ¿, úαπ»»á
- DGROUP ¿ß»«½∞ºπÑΓß∩ ó ∩ºδ¬áσ óδß«¬«ú« πα«ó¡∩, τΓ«íδ ¼«ª¡« í佫
- «íαáΘáΓ∞ß∩ ¬ ßΓѬπ, ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δ¼ ñá¡¡δ¼ í½¿ª¡Ñú« Γ¿»á ¿
- ¬«¡ßΓá¡Γá¼ «Γ¡«ß¿Γѽ∞¡« «ñ¡«ú« ßÑú¼Ñ¡Γ¡«ú« αÑú¿ßΓαá.
-
- Åα¿ ¿ß»«½∞º«óá¡¿¿ úαπ»» ßÑú¼Ñ¡Γ«ó ¡πª¡« ß«í½εñáΓ∞ «ñ¡« ¬½ε-
- τÑó«Ñ »αá󿽫: óßÑ ßÑú¼Ñ¡Γδ ó úαπ»»Ñ ñ«½ª¡δ ½ÑªáΓ∞ ó «ñ¡«¼ ßÑú-
- ¼Ñ¡ΓÑ αẼÑα«ó 64è, Γᬠ¬á¬ óßÑ «¡¿ ñ«½ª¡δ íδΓ∞ ñ«ßΓπ»¡δ ß »«-
- ¼«Θ∞ε «ñ¡«ú« ßÑú¼Ñ¡Γ¡«ú« αÑú¿ßΓαá. ìπª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ«
- »«α∩ñ«¬ ßÑú¼Ñ¡Γ«ó ºáó¿ß¿Γ «Γ ¼¡«ú¿σ Σá¬Γ«α«ó («í φΓ«¼ πªÑ αáß߬á-
- ºδóὫß∞ ó »αÑñδñπΘѼ αáºñѽÑ), »«φΓ«¼π, Ñß½¿ óδ ¡Ñ íπñÑΓÑ á¬¬π-
- αáΓ¡δ, ßÑú¼Ñ¡Γδ ¼«úπΓ «ΓßΓ«∩Γ∞ ñαπú «Γ ñαπúá ¡á º¡áτ¿Γѽ∞¡«Ñ
- αáßßΓ«∩¡¿Ñ. æá¼δ⌐ ¡áñѪ¡δ⌐ »«ñσ«ñ ºñÑß∞ - φΓ« «íΩ∩ó¿Γ∞ óßÑ ßÑú-
- ¼Ñ¡Γδ úαπ»»δ, ¬á¬ ßÑú¼Ñ¡Γδ «ñ¡«ú« ¬½áßßá ¿ «»αÑñѽ¿Γ∞ ¿σ «ñ¿¡ ºá
- ñαπú¿¼ ó ¡áτá½Ñ óßÑσ ¼«ñπ½Ñ⌐, ó ¬«Γ«αδσ «¡¿ «»αÑñѽ∩εΓß∩.
-
- Äñ¡á¬«, Ñß½¿ óδ óδ»«½¡∩ÑΓÑ ¬«¼»«¡«ó¬π ß ∩ºδ¬«¼ óδß«¬«ú«
- πα«ó¡∩ ¿½¿ úñÑ-½¿í« ó »α«úαá¼¼Ñ ¿ß»«½∞ºπÑΓÑ ñ¿αÑ¬Γ¿óπ DOSSEG, Γ«
- ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ íÑß»«¬«¿Γ∞ß∩ « Γ«¼, τΓ«íδ ß«íαáΓ∞ óßÑ ßÑú¼Ñ¡Γδ
- DGROUP ó¼ÑßΓÑ. é «í«¿σ ß½πτá∩σ ¬«¼»«¡«óΘ¿¬ áóΓ«¼áΓ¿τÑ߬¿ ¡áßΓα«¿Γ
- óßÑ ßÑú¼Ñ¡Γδ DGROUP.
-
- ò«Γ∩ ßÑú¼Ñ¡Γδ ó úαπ»»Ñ ¡Ñ ñ«½ª¡δ »αÑóδΦáΓ∞ αẼÑα ó 64è, »α¿
- ¬«¼»«¡«ó¬Ñ «¡¿ ¡Ñ «í∩ºáΓѽ∞¡« ñ«½ª¡δ íδΓ∞ ¡Ñ»αÑαδó¡δ¼¿. îѪñπ
- ßÑú¼Ñ¡ΓἿ, óσ«ñ∩Θ¿¼¿ ó úαπ»»π, ¼«úπΓ ½ÑªáΓ∞ ñαπú¿Ñ ßÑú¼Ñ¡Γδ.
-
- Åα¿¼Ñτá¡¿Ñ: àß½¿ óδ ¿ß»«½∞ºπÑΓÑ úαπ»»π ßÑú¼Ñ¡Γ«ó, Γ«
- ¡πª¡« »α¿ ºáúαπº¬Ñ ßÑú¼Ñ¡Γá (ñ½∩ ßß佬¿ ¡á úαπ»»π) óßÑúñá
- ᬬπαáΓ¡« ¿ß»«½∞º«óáΓ∞ ó ñ¿αÑ¬Γ¿óÑ ASSUME ¿¼∩ úαπ»»δ. é
- »α«Γ¿ó¡«¼ ß½πτáÑ Æπαí« ÇßßѼí½Ñα íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ ß¼ÑΘÑ-
- ¡¿∩ «Γ¡«ß¿Γѽ∞¡« ¡áτá½á ßÑú¼Ñ¡Γá, á ¡Ñ ¡áτá½á úαπ»»δ, ñáªÑ
- Ñß½¿ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα π¬áºδóáÑΓ ¡á ¡áτὫ úαπ»»δ. ìá»α¿-
- ¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ß πτÑΓ«¼ »αÑñδñπΘÑú«
- «»αÑñѽѡ¿∩ DGROUP 󫺡¿¬¡ÑΓ «Φ¿í¬á:
-
- .
- .
- .
- mov ax,DGROUP
- mov ds,ax
- ASSUME DS:Stack ; íπñÑΓ »«½πτÑ¡« ¡Ñ¬«ααÑ¬Γ¡«Ñ
- ; ß¼ÑΘÑ¡¿Ñ!
- .
-
- TASM2 #3-5/䫬 = 82 =
-
- .
- .
-
- é¼ÑßΓ« φΓ«ú« ¡πª¡« ¿ß»«½∞º«óáΓ∞ ß½ÑñπεΘÑÑ:
-
- .
- .
- .
- mov ax,DGROUP
- mov ds,ax
- ASSUME DS:DGROUP
- .
- .
- .
-
- è«α«τÑ ú«ó«α∩, Ñß½¿ óδ ºáúαπªáÑΓÑ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα,
- τΓ«íδ «¡ π¬áºδóá½ ¡á úαπ»»π DGROUP, ¡πª¡« πíÑñ¿Γ∞ß∩, τΓ« óδ
- ¿ß»«½∞ºπÑΓÑ ó ñ¿αÑ¬Γ¿óÑ ASSUME φΓπ úαπ»»π, á ¡Ñ ¬á¬«⌐-½¿í«
- ¿º ß«ßΓáó½∩εΘ¿σ ÑÑ ßÑú¼Ñ¡Γ«ó.
-
- é ¼á¬α«áßßѼí½ÑαÑ Σ¿α¼δ Microsoft MASM ß«ñÑনΓß∩ «Φ¿í¬á,
- «Γ¡«ß∩Θá∩ß∩ ¬ ¿ß»«½∞º«óá¡¿ε ß úαπ»»á¼¿ «»Ñαᵿ¿ OFFSET. ¥Γá «Φ¿í-
- ¬á ¼«ªÑΓ Γá¬ªÑ ó«º¡¿¬áΓ∞ »α¿ ¿¡¿µ¿á½¿ºáµ¿¿ ñá¡¡δσ áñαÑß«¼ ¿½¿
- ¼ÑΓ¬á¼¿ ó úαπ»»Ñ. é µÑ½∩σ ß«ó¼ÑßΓ¿¼«ßΓ¿ Æπαí« ÇßßѼí½Ñα ó«ß»α«¿º-
- ó«ñ¿Γ φΓπ «Φ¿í¬π. ùΓ«íδ «í«⌐Γ¿ ÑÑ, ¡πª¡« ó ¼ÑΓ¬áσ (¬«úñá óδ ¿σ
- ¿ß»«½∞ºπÑΓÑ ó «»Ñαᵿ¿ OFFSET ¿½¿ ñ½∩ ¿¡¿µ¿á½¿ºáµ¿¿ ñá¡¡δσ) π¬á-
- ºδóáΓ∞ »αÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó. (Å«ñα«í¡ÑÑ «í φΓ«¼
- αáß߬áºδóáÑΓß∩ ó â½áóÑ 6 ó αáºñÑ½Ñ "ìÑ ºáíδóá⌐ΓÑ ¿ß»«½∞º«óáΓ∞ ó
- «»Ñαá¡ñáσ ¿ Γáí½¿µáσ ñá¡¡δσ »ÑαÑ«»αÑñѽѡ¿∩ úαπ»»δ").
-
-
-
-
- TASM2 #3-5/䫬 = 83 =
-
- ä¿αÑ¬Γ¿óá ASSUME
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá ASSUME (»«ñαáºπ¼ÑóáΓ∞, »αÑñ»«½áúáΓ∞) »«ºó«½∩ÑΓ óá¼
- ß««íΘ¿Γ∞ Æπαí« ÇßßѼí½Ñαπ, ¡á ¬á¬«⌐ ßÑú¼Ñ¡Γ ¿½¿ úαπ»»π π¬áºδóáÑΓ
- ñá¡¡δ⌐ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα. çá¼ÑΓ¿¼, τΓ« φΓ« ¡Ñ Γ« ªÑ ßἫÑ, τΓ«
- ñÑ⌐ßΓó¿Γѽ∞¡á∩ ºáúαπº¬á ßÑú¼Ñ¡Γ¡«ú« αÑú¿ßΓαá ñ½∩ ßß佬¿ ¡á ñá¡¡δ⌐
- ßÑú¼Ñ¡Γ (óδ ñ«½ª¡δ φΓ« ñѽáΓ∞ «Γñѽ∞¡« ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ MOV).
- ìạáτÑ¡¿Ñ ñ¿αÑ¬Γ¿óδ ASSUME ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ ñáΓ∞ Æπαí« Çß-
- ßѼí½Ñαπ 󫺼«ª¡«ßΓ∞ »α«óÑα¿Γ∞ ñ«»πßΓ¿¼«ßΓ∞ óáΦ¿σ ßß佫¬ ¡á »á-
- ¼∩Γ∞ ¿ »α¿ «íαáΘÑ¡¿¿ ¬ »á¼∩Γ¿ áóΓ«¼áΓ¿τÑ߬¿ ó¬½ετ¿Γ∞ »αÑΣ¿¬ßδ »Ñ-
- αÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó (Ñß½¿ φΓ« ΓαÑíπÑΓß∩).
-
- ä¿αÑ¬Γ¿óá ASSUME ñ½∩ αÑú¿ßΓαá CS ñ«½ª¡á ß½Ññ«óáΓ∞ »ÑαÑñ ½ε-
- íδ¼ ¬«ñ«¼ ó ¬áªñ«¼ ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ. ü½áú«ñáα∩ φΓ«¼π Æπαí« ÇßßѼí-
- ½Ñα º¡áÑΓ, ó ¬á¬«¼ ßÑú¼Ñ¡ΓÑ »«ñαáºπ¼ÑóáÑΓß∩ αẼÑΘÑ¡¿Ñ ¿¡ßΓαπ¬µ¿⌐
- (φΓ« ¡πª¡« ñ½∩ óδ»«½¡Ñ¡¿∩ »ÑαÑσ«ñ«ó, ó맮ó«ó ¿ πßΓá¡«ó¬¿ ¡áτá½∞-
- ¡«ú« áñαÑßá »α«úαá¼¼δ).
-
- Å« ¼ÑαÑ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ó ½εí«⌐ ¿ßσ«ñ¡δ⌐ ¼«ñπ½∞ ¼«úπΓ ó¬½ε-
- τáΓ∞ß∩ ñαπú¿Ñ ñ¿αÑ¬Γ¿óδ ASSUME (ß π¬áºá¡¿Ñ¼ αẽ¿τ¡δσ ßÑú¼Ñ¡Γ¡δσ
- αÑú¿ßΓα«ó). Å«ñαáºπ¼ÑóáѼδ⌐ ßÑú¼Ñ¡Γ ñ½∩ ½εí«ú« ßÑú¼Ñ¡Γ¡«ú« αÑ-
- ú¿ßΓαá ¼«ªÑΓ íδΓ∞ ¿º¼Ñ¡Ñ¡, ¬«úñá óδ φΓ«ú« »«ªÑ½áÑΓÑ. é «ñ¡«⌐ ñ¿-
- αÑ¬Γ¿óÑ ASSUME ¼«ª¡« ¿º¼Ñ¡¿Γ∞ ½εí«⌐ ¿½¿ óßÑ »αÑñ»«½áúáѼδÑ ßÑú-
- ¼Ñ¡Γ¡δÑ αÑú¿ßΓαδ.
-
- éδ ¼«ªÑΓÑ ºáñáΓ∞ »αÑñ»«½áúáѼδ⌐ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα »« ¿¼Ñ¡¿
- ßÑú¼Ñ¡Γá, ¿¼Ñ¡¿ úαπ»»δ, ¿½¿ óδñѽ¿Γ∞ ßÑú¼Ñ¡Γ ¿º ¼ÑΓ¬¿ ß »«¼«Θ∞ε
- «»Ñαᵿ¿ SEG. èα«¼Ñ Γ«ú«, ñ½∩ π¬áºá¡¿ε Æπαí« ÇßßѼí½Ñαπ, τΓ« ½ε-
- í«⌐ ¿½¿ óßÑ ßÑú¼Ñ¡Γ¡δÑ αÑú¿ßΓαδ ¡Ñ π¬áºδóáεΓ ¡¿ ¡á ¬á¬«⌐ ßÑú¼Ñ¡Γ,
- ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ¬½ετÑó«Ñ ß½«ó« NOTHING.
-
- Åα¿óÑñѼ »α¿¼Ñα ñ¿αÑ¬Γ¿óδ ASSUME:
-
- Stack SEGMENT PARA STACK 'STACK'
- DB 512 DUP (0)
- Stack ENDS
- TGROUP GROUP DataSeg1,DataSeg2
- DataSeg1 SEGMENT PARA PUBLIC 'DATA'
- .
- .
- .
- DataSeg1 ENDS
- DataSeg2 SEGMENT PARA PUBLIC 'DATA'
- .
- .
-
- TASM2 #3-5/䫬 = 84 =
-
- .
- DataSeg2 ENDS
- .
- .
- .
- DataSeg3 SEGMENT PARA PUBLIC 'CODE'
- MemVar DW 0
- .
- .
- .
- CodeSeg SEGMENT PARA PUBLIC 'CODE'
- ASSUME CS:CodeSeg,DS:TGROUP,SS:Stack,ES:NOTHING
- ProgramStart:
- mov ax,TGROUP
- mov ds,ax
- ASSUME DS:TGROUP
- .
- .
- .
- mov ax,SEG MemVar ; á¡á½«ú¿τ¡« DataSeg3
- mov es,ax
- ASSUME ES:SEG MemVar
- .
- .
- .
- CodeSeg ENDS
- END ProgramStart
-
-
- àß½¿ ó ñ¿αÑ¬Γ¿óÑ ASSUME π¬áºδóáÑΓß∩ úαπ»»á, Γ« »αÑñ»«½áúáÑΓ-
- ß∩, τΓ« ºáñá¡¡δ⌐ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα π¬áºδóáÑΓ ¡á ¡áτὫ ñá¡¡«⌐
- úαπ»»δ ßÑú¼Ñ¡Γ«ó. Äñ¡á¬«, Ñß½¿ ó ñ¿αÑ¬Γ¿óÑ ASSUME π¬áºδóáÑΓß∩
- ßÑú¼Ñ¡Γ, ∩ó½∩εΘ¿⌐ß∩ τáßΓ∞ε úαπ»»δ, Γ« »«ñαáºπ¼ÑóáÑΓß∩, τΓ« ßÑú-
- ¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα π¬áºδóáÑΓ ¡á ¡áτὫ φΓ«ú« αÑú¿ßΓαá, á ¡Ñ úαπ»»δ.
- ¥Γ« ¼«ªÑΓ óδºóáΓ∞ »α«í½Ñ¼δ, »«ß¬«½∞¬π «íδτ¡« ßÑú¼Ñ¡Γ¡δÑ αÑú¿ßΓαδ
- πßΓá¡áó½¿óáεΓß∩ Γᬿ¼ «íαẫ¼, τΓ«íδ π¬áºδóáΓ∞ ¡á ¡áτὫ úαπ»»δ,
- á ¡Ñ óσ«ñ∩Θ¿σ ó ¡ÑÑ ßÑú¼Ñ¡Γ«ó. ìá»α¿¼Ñα, ñá½ÑÑ αÑú¿ßΓα AX íπñÑΓ
- ºáúαπªÑ¡ ¿º ¡ÑóÑα¡«⌐ ∩τÑ⌐¬¿ »á¼∩Γ¿, Γᬠ¬á¬ DS π¬áºδóáÑΓ ¡á ¡áτá-
- ½« DGROUP, á ñ¿αÑ¬Γ¿óá ASSUME ¡Ñ¬«ααÑ¬Γ¡« »«¬áºδóáÑΓ, τΓ« αÑú¿ßΓα
- DS π¬áºδóáÑΓ ¡á ¡áτὫ DataSeg2:
-
- .
- .
- .
- TGROUP GROUP DataSeg1,DataSeg2
- DataSeg1 SEGMENT PARA PUBLIC 'DATA'
-
- TASM2 #3-5/䫬 = 85 =
-
- .
- .
- .
- DataSeg1 ENDS
- DataSeg2 SEGMENT PARA PUBLIC 'DATA'
- MemVar DW 0
- DataSeg2 ENDS
- .
- .
- .
- CodeSeg SEGMENT PARA PUBLIC 'CODE'
- ASSUME CS:CodeSeg
- .
- .
- .
- mov ax,TGROUP
- mov ds,ax
- ASSUME DS:DataSeg2 ; ¡Ñ»αáó¿½∞¡«!
- ; (¡πª¡« TGROUP)
- mov ax,[MemVar] ; íπñÑΓ ºáúαπªÑ¡« ¿º
- ; ¡Ñ»αáó¿½∞¡«ú« ß¼ÑΘÑ¡¿∩
- ; («Γ¡«ß¿Γѽ∞¡« DataSeg2 á ¡Ñ
- ; «Γ¡«ß¿Γѽ∞¡« úαπ»»δ TGROUP)
- .
- .
- .
-
- àß½¿ óδ ¿ß»«½∞ºπÑΓÑ π»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡-
- Γ«ó, Γ« ó «íΘѼ ß½πτáÑ ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ π¬áºδóáΓ∞ ñ¿αÑ¬Γ¿óπ
- ASSUME, Γᬠ¬á¬ Æπαí« ÇßßѼí½Ñα úÑ¡Ñα¿απÑΓ ß««ΓóÑΓßΓóπεΘ¿Ñ »αÑñ-
- »«½«ªÑ¡¿∩ «í ¿ß»«½∞ºπѼδσ ßÑú¼Ñ¡Γáσ áóΓ«¼áΓ¿τÑ߬¿. Äñ¡á¬«, Ñß½¿
- »α¿ ¿ß»«½∞º«óá¡¿¿ π»α«ΘÑ¡¡δσ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó óδ
- ¿º¼Ñ¡¿½¿ «ñ¿¡ ¿º ßÑú¼Ñ¡Γ¡δσ αÑú¿ßΓα«ó, Γ« ¡πª¡« π¬áºáΓ∞ ß««ΓóÑΓß-
- ΓóπεΘπε ñ¿αÑ¬Γ¿óπ ASSUME. ìá»α¿¼Ñα, ñá½ÑÑ ºáñáÑΓß∩, τΓ«íδ αÑú¿ßΓα
- DS π¬áºδóá½ ¡á ßÑú¼Ñ¡Γ .DATA, ßÑú¼Ñ¡Γ .CODE, ßÑú¼Ñ¡Γ .FARDATA ¿,
- ¡á¬«¡Ñµ, ß¡«óá ¡á ßÑú¼Ñ¡Γ .DATA:
-
- .
- .
- .
- .DATA
- .
- .
- .
- .FARDATA
- .
-
- TASM2 #3-5/䫬 = 86 =
-
- .
- .
- .CODE
- mov ax,@Data
- mov ds,ax
- ASSUME DS:@Data
- .
- .
- .
- mov ax,@Code
- mov ds,ax
- ASSUME DS:@Code
- .
- .
- .
- mov ax,@FarData
- mov ds,ax
- ASSUME DS:@FarData
- .
- .
- .
- mov ax,@Data
- mov ds,ax
- ASSUME DS:@Data
- .
- .
- .
-
- èᬠ¼δ πªÑ «Γ¼Ñτ὿, í½áú«ñáα∩ ñ¿αÑ¬Γ¿óÑ ASSUME Æπαí« Çß-
- ßѼí½Ñα ¼«ªÑΓ »α¿ ßß佬áσ ¡á »á¼∩Γ∞ ó ß½πτáÑ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ó¬½ε-
- τáΓ∞ »αÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó. ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ
- Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ó ¿¡ßΓαπ¬µ¿¿, úñÑ ¿¼ÑÑΓß∩ ßßδ½¬á ¡á MemVar,
- íπñÑΓ »«¼ÑΘÑ¡ »αÑΣ¿¬ß ES: (»«ß¬«½∞¬π ñ¿αÑ¬Γ¿óÑ ASSUME ¡Ñ¬«ααÑ¬Γ¡«
- π¬áºδóáÑΓ, τΓ« τÑαѺ αÑú¿ßΓα DS ¡Ñ½∞º∩ ñ«ßΓ¿τ∞ ßÑú¼Ñ¡Γá, úñÑ ¡á-
- σ«ñ¿Γß∩ »ÑαѼѡ¡á∩ MemVar):
-
- .
- .
- .
- DataSeg SEGMENT PARA PUBLIC 'DATA'
- MemVar DB ?
- .
- .
- .
- DataSeg ENDS
- .
-
- TASM2 #3-5/䫬 = 87 =
-
- .
- .
- CodeSeg SEGMENT PARA PUBLIC 'CODE'
- ASSUME CS:CodeSeg,DS:NOTHING,ES:DataSeg
- .
- .
- .
- mov ax,DataSeg
- mov ds,ax
- mov es,ax
- mov [MemVar],1
- .
- .
- .
-
- ÄΓßεñá ¼«ª¡« ºá¬½ετ¿Γ∞, τΓ« ñ¿αÑ¬Γ¿óδ ASSUME ¡πª¡« ¿ß»«½∞º«-
- óáΓ∞ ᬬπαáΓ¡«, τΓ«íδ «¡¿ óßÑ óαѼ∩ ß««ΓóÑΓßΓó«ó὿ ñÑ⌐ßΓó¿Γѽ∞-
- ¡δ¼ º¡áτÑ¡¿∩¼ ßÑú¼Ñ¡Γ¡δσ αÑú¿ßΓα«ó.
-
- ô»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó
- -----------------------------------------------------------------
-
- ìѬ«Γ«αδÑ ñÑΓ὿ π»α«ΘÑ¡¡δσ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó
- ¼δ πªÑ «íßπñ¿½¿ ó â½áóÑ 5. Äñ¡á¬« «ß¡«ó¡«⌐ áß»Ñ¬Γ π»α«ΘÑ¡¡δσ ñ¿-
- αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, ¬«Γ«αδ⌐ ¼δ ÑΘÑ ¡Ñ «íßπªñ὿, φΓ«
- ¬á¬¿Ñ ¿¼Ñ¡¡« ßÑú¼Ñ¡Γδ ß«ºñáεΓß∩ π»α«ΘÑ¡¡δ¼¿ ñ¿αÑ¬Γ¿óἿ «»αÑñѽÑ-
- ¡¿∩ ßÑú¼Ñ¡Γ«ó. ¥Γ« ¡Ñ Γá ¿¡Σ«α¼áµ¿∩, ¬«Γ«αá∩ »«ΓαÑíπÑΓß∩ óá¼ ó
- »«óßÑñ¡Ñó¡«⌐ αáí«ΓÑ, ¡« Ñß½¿ óδ ¿ß»«½∞ºπÑΓÑ ß¼Ñß∞ π»α«ΘÑ¡¡δσ ¿
- ßΓá¡ñáαΓ¡δσ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, º¡áΓ∞ φΓ« ¡Ñ«íσ«ñ¿¼«.
-
- æÑú¼Ñ¡Γδ ¿ úαπ»»δ ßÑú¼Ñ¡Γ«ó, ß«ºñáóáѼδÑ »« ñ¿αÑ¬Γ¿óá¼
- .CODE, .DATA, .DATA?, .STACK, .CONST, .FARDATA ¿ .FARDATA? ºáó¿-
- ß∩Γ «Γ ¼«ñѽ¿ »á¼∩Γ¿, óδí¿αáѼ«⌐ »« ñ¿αÑ¬Γ¿óÑ .MODEL. (àß½¿ óδ
- »«¼¡¿ΓÑ, « ¼«ñѽ∩σ »á¼∩Γ¿ ¼δ αáß߬áºδó὿ ó â½áóÑ 4.) æ««ΓóÑΓß-
- Γó¿Ñ ¼Ñªñπ ¼«ñѽ∩¼¿ »á¼∩Γ¿ ¿ ßÑú¼Ñ¡ΓἿ, ß«ºñáóáÑ¼δ¼¿ »« π»α«ΘÑ¡-
- ¡δ¼ ñ¿αÑ¬Γ¿óá¼ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, »«¬áºá¡δ ó ß½ÑñπεΘ¿σ Γáí½¿-
- µáσ:
-
-
- TASM2 #3-5/䫬 = 88 =
-
-
- Æáí½¿µá 9.1. êß»«½∞ºπѼδÑ »« π¼«½τá¡¿ε
- ßÑú¼Ñ¡Γδ ¿ Γ¿»δ ñ½∩ ßóÑασ¼á½«⌐ ¼«ñѽ¿ »á¼∩Γ¿
- -----------------------------------------------------------------
- ä¿αÑ¬Γ¿óá ê¼∩ éδαáó¡¿óá¡¿Ñ è«¼í¿¡¿α«óá¡¿Ñ è½áßß âαπ»»á
- -----------------------------------------------------------------
- .CODE _TEXT WORD PUBLIC 'CODE' DGROUP
- .FARDATA FAR_DATA PARA private 'FAR_DATA'
- .FARDATA? FAR_BSS PARA private 'FAR_BSS'
- .DATA _DATA WORD PUBLIC 'DATA' DGROUP
- .CONST CONST WORD PUBLIC 'CONST' DGROUP
- .DATA? _BSS WORD PUBLIC 'BSS' DGROUP
- .STACK STACK PARA STACK 'STACK' DGROUP
- -----------------------------------------------------------------
-
- Æáí½¿µá 9.2. êß»«½∞ºπѼδÑ »« π¼«½τá¡¿ε
- ßÑú¼Ñ¡Γδ ¿ Γ¿»δ ñ½∩ ¼á½«⌐ ¼«ñѽ¿ »á¼∩Γ¿
- -----------------------------------------------------------------
- ä¿αÑ¬Γ¿óá ê¼∩ éδαáó¡¿óá¡¿Ñ è«¼í¿¡¿α«óá¡¿Ñ è½áßß âαπ»»á
- -----------------------------------------------------------------
- .CODE _TEXT WORD PUBLIC 'CODE'
- .FARDATA FAR_DATA PARA private 'FAR_DATA'
- .FARDATA? FAR_BSS PARA private 'FAR_BSS'
- .DATA _DATA WORD PUBLIC 'DATA' DGROUP
- .CONST CONST WORD PUBLIC 'CONST' DGROUP
- .DATA? _BSS WORD PUBLIC 'BSS' DGROUP
- .STACK STACK PARA STACK 'STACK' DGROUP
- -----------------------------------------------------------------
-
- Æáí½¿µá 9.3. êß»«½∞ºπѼδÑ »« π¼«½τá¡¿ε
- ßÑú¼Ñ¡Γδ ¿ Γ¿»δ ñ½∩ ßαÑñ¡Ñ⌐ ¼«ñѽ¿ »á¼∩Γ¿
- -----------------------------------------------------------------
- ä¿αÑ¬Γ¿óá ê¼∩ éδαáó¡¿óá¡¿Ñ è«¼í¿¡¿α«óá¡¿Ñ è½áßß âαπ»»á
- -----------------------------------------------------------------
- .CODE ¿¼∩ _TEXT WORD PUBLIC 'CODE'
- .FARDATA FAR_DATA PARA private 'FAR_DATA'
- .FARDATA? FAR_BSS PARA private 'FAR_BSS'
- .DATA _DATA WORD PUBLIC 'DATA' DGROUP
- .CONST CONST WORD PUBLIC 'CONST' DGROUP
- .DATA? _BSS WORD PUBLIC 'BSS' DGROUP
- .STACK STACK PARA STACK 'STACK' DGROUP
- -----------------------------------------------------------------
-
-
- TASM2 #3-5/䫬 = 89 =
-
-
- Æáí½¿µá 9.4. êß»«½∞ºπѼδÑ »« π¼«½τá¡¿ε
- ßÑú¼Ñ¡Γδ ¿ Γ¿»δ ñ½∩ ¬«¼»á¬Γ¡«⌐ ¼«ñѽ¿ »á¼∩Γ¿
- -----------------------------------------------------------------
- ä¿αÑ¬Γ¿óá ê¼∩ éδαáó¡¿óá¡¿Ñ è«¼í¿¡¿α«óá¡¿Ñ è½áßß âαπ»»á
- -----------------------------------------------------------------
- .CODE _TEXT WORD PUBLIC 'CODE'
- .FARDATA FAR_DATA PARA private 'FAR_DATA'
- .FARDATA? FAR_BSS PARA private 'FAR_BSS'
- .DATA _DATA WORD PUBLIC 'DATA' DGROUP
- .CONST CONST WORD PUBLIC 'CONST' DGROUP
- .DATA? _BSS WORD PUBLIC 'BSS' DGROUP
- .STACK STACK PARA STACK 'STACK' DGROUP
- -----------------------------------------------------------------
-
- Æáí½¿µá 9.5. êß»«½∞ºπѼδÑ »« π¼«½τá¡¿ε
- ßÑú¼Ñ¡Γδ ¿ Γ¿»δ ñ½∩ í«½∞Φ«⌐ ¿½¿ ßóÑασí«½∞Φ«⌐ ¼«ñѽ¿ »á¼∩Γ¿
- -----------------------------------------------------------------
- ä¿αÑ¬Γ¿óá ê¼∩ éδαáó¡¿óá¡¿Ñ è«¼í¿¡¿α«óá¡¿Ñ è½áßß âαπ»»á
- -----------------------------------------------------------------
- .CODE _TEXT WORD PUBLIC 'CODE'
- .FARDATA FAR_DATA PARA private 'FAR_DATA'
- .FARDATA? FAR_BSS PARA private 'FAR_BSS'
- .DATA _DATA WORD PUBLIC 'DATA' DGROUP
- .CONST CONST WORD PUBLIC 'CONST' DGROUP
- .DATA? _BSS WORD PUBLIC 'BSS' DGROUP
- .STACK STACK PARA STACK 'STACK' DGROUP
- -----------------------------------------------------------------
-
- ù¿Γá∩ »«ß½Ññ¡¿Ñ ú½áóδ, óδ ¬«¡Ñτ¡« ºá¼ÑΓ¿½¿, τΓ« ó »α«úαá¼-
- ¼áσ, ¿ß»«½∞ºπεΘ¿σ π»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, ¡Ñ
- ΓαÑíπÑΓß∩ π¬áºδóáΓ∞ ñ¿αÑ¬Γ¿óδ ASSUME, GROUP ¿½¿ ENDS. ä¿αÑ¬Γ¿óá
- .MODEL áóΓ«¼áΓ¿τÑ߬¿ óδ»«½¡∩ÑΓ ß««ΓóÑΓßΓóπεΘ¿Ñ ñ¿αÑ¬Γ¿óδ ASSUME
- ñ½∩ óδíαá¡¡«⌐ ¼«ñѽ¿ »á¼∩Γ¿ (»α¿ φΓ«¼ ¿ß»«½∞ºπεΓß∩ ßÑú¼Ñ¡Γδ, »«-
- ¬áºá¡¡δÑ ó »α¿óÑñÑ¡¡δσ óδΦÑ Γáí½¿µáσ). ä¿αÑ¬Γ¿óá .MODEL óδ»«½¡∩ÑΓ
- Γá¬ªÑ «»αÑñѽѡ¿Ñ úαπ»»δ ñ½∩ DGROUP (ó ß««ΓóÑΓßΓó¿¿ ß Γáí½¿µá¼¿).
-
- ùΓ« ¬áßáÑΓß∩ ñ¿αÑ¬Γ¿óδ ENDS, Γ« ¡áτὫ ¡«ó«ú« ßÑú¼Ñ¡Γá ß »«-
- ¼«Θ∞ε π»α«ΘÑ¡¡«⌐ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá áóΓ«¼áΓ¿τÑ߬¿ ºá-
- óÑαΦáÑΓ ΓѬπΘ¿⌐ ßÑú¼Ñ¡Γ (Ñß½¿ «¡ ¿¼ÑÑΓß∩).
-
- äáóá⌐ΓÑ ΓÑ»Ñα∞ αáßß¼«Γα¿¼ ¡Ñ¬«Γ«αδÑ ¡á¿í«½ÑÑ ßπΘÑßΓóÑ¡¡δÑ
- π»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ: ñ¿αÑ¬Γ¿óδ .DATA?, .CONST, .FARDATA ¿
- .FARDATA? ìá ßἫ¼ ñÑ½Ñ ñ¿αÑ¬Γ¿óá .FARDATA - φΓ« Ññ¿¡ßΓóÑ¡¡á∩ ñ¿-
- αÑ¬Γ¿óá, ¬«Γ«απε ¡πª¡« ¿ß»«½∞º«óáΓ∞ ó »α«úαá¼¼Ñ, ¡á»¿ßá¡¡«⌐ Γ«½∞-
- ¬« ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá. ÄßΓá½∞¡δÑ ñ¿αÑ¬Γ¿óδ ß½πªáΓ ñ½∩ ß««ΓóÑΓß-
-
- TASM2 #3-5/䫬 = 90 =
-
- Γó¿∩ ¿ß»«½∞ºπѼδσ ßÑú¼Ñ¡Γ«ó ∩ºδ¬á¼ óδß«¬«ú« πα«ó¡∩.
-
- ä¿αÑ¬Γ¿óá .DATA? ¡áτ¿¡áÑΓ ßÑú¼Ñ¡Γ, ¬«Γ«αδ⌐ ß«ñÑαª¿Γ ó DGROUP
- ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δÑ ñá¡¡δÑ í½¿ª¡Ñú« Γ¿»á. Æá¬ ¬á¬ ßÑú¼Ñ¡Γδ .DATA
- ¿ .DATA? ¡áσ«ñ∩Γß∩ ó «ñ¡«⌐ ¿ Γ«⌐ ªÑ úαπ»»Ñ, Γ« ñ¿αÑ¬Γ¿óπ .DATA?
- »« ¿ñÑÑ ß«óßѼ ¼«ª¡« «»πßΓ¿Γ∞, ¿ ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ñ¿αÑ¬Γ¿óπ
- .DATA ¿ ó«»α«ß¿Γѽ∞¡δ⌐ º¡á¬ ñ½∩ «»αÑñѽѡ¿∩ ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δσ
- ñá¡¡δσ ó ßÑú¼Ñ¡ΓÑ .DATA (¬α«¼Ñ ΓÑσ ß½πτáÑó, ¬«úñá óδ ß«í½εñáÑΓÑ
- ß«ú½áΦÑ¡¿∩ ∩ºδ¬«ó óδß«¬«ú« πα«ó¡∩).
-
- é Γπ ªÑ ¬áΓÑú«α¿ε, τΓ« ¿ ñ¿αÑ¬Γ¿óá .DATA?, »«»áñáÑΓ ñ¿αÑ¬Γ¿-
- óá .CONST, ¬«Γ«αá∩ ¡áτ¿¡áÑΓ ßÑú¼Ñ¡Γ, ß«ñÑαªáΘ¿⌐ ñá¡¡δÑ-¬«¡ßΓá¡Γδ
- í½¿ª¡Ñú« Γ¿»á. éδ Γá¬ªÑ ¼«ªÑΓÑ αẼÑßΓ¿Γ∞ ¬«¡ßΓá¡Γδ ó ßÑú¼Ñ¡ΓÑ
- .DATA ¿ «»πßΓ¿Γ∞ ñ¿αÑ¬Γ¿óπ .CONST, Ñß½¿ óá¼ ¡Ñ ¡πª¡« ß«í½εñáΓ∞
- ß«ú½áΦÑ¡¿∩, »α¿¡∩ΓδÑ ó ∩ºδ¬áσ óδß«¬«ú« πα«ó¡∩.
-
- ä¿αÑ¬Γ¿óá .FARDATA ¿ß»«½∞ºπÑΓß∩ ñ½∩ ß«ºñá¡¿∩ ßÑú¼Ñ¡Γá ñá¡¡δσ
- ñá½∞¡Ñú« Γ¿»á, π¡¿¬á½∞¡«ú« ñ½∩ ñá¡¡«ú« ¿ßσ«ñ¡«ú« ¼«ñπ½∩ (Γ« ÑßΓ∞
- φëà ßÑú¼Ñ¡Γ ¡Ñ ¿ß»«½∞ºπÑΓß∩ ß«ó¼ÑßΓ¡« ß ñαπú¿¼¿ ¼«ñπ½∩¼¿).
-
- ¥Γ«Γ ßÑú¼Ñ¡Γ ¡áºδóáÑΓß∩ FAR_DATA, ¡« ¿¼ÑÑΓ Γ¿» ¬«¼í¿¡¿α«óá-
- ¡¿∩ PRIVATE, »«φΓ«¼π «¡ ¡Ñ ¬«¼í¿¡¿απÑΓß∩ ß ñαπú¿¼¿ ßÑú¼Ñ¡ΓἿ.
- ä¿αÑ¬Γ¿óá .FARDATA »«ºó«½∩ÑΓ óá¼ «»αÑñѽ¿Γ∞ ñ« 64è »á¼∩Γ¿ ½«¬á½∞-
- ¡δσ ñá¡¡δσ ó ¬áªñ«¼ ¼«ñπ½Ñ. è«¡Ñτ¡«, Ñß½¿ óδ ¿ß»«½∞ºπÑΓÑ ñ¿αÑ¬Γ¿-
- óπ .FARDATA, óδ ñ«½ª¡δ πßΓá¡«ó¿Γ∞ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα Γá¬, τΓ«íδ
- «¡ π¬áºδóá½ ¡á ñá¡¡δ⌐ ßÑú¼Ñ¡Γ, ¡á»α¿¼Ñα:
-
- .MODEL SMALL
- .DATA
- InitValue DW 0
- .FARDATA
- MemArray DW 100 DUP (?)
- .CODE
- .
- .
- .
- mov ax,@Data
- mov ds,ax
- mov ax,[InitValue]
- mov ax,@FarData
- mov di,OFFSET MemArray
- mov cx,100
- cld
- rep stosw
- .
- .
-
- TASM2 #3-5/䫬 = 91 =
-
- .
-
- çá¼ÑΓ¿¼, τΓ« »αÑñ«»αÑñѽѡ¡á∩ ¼ÑΓ¬á @FarData ß«ñÑαª¿Γ ¿¼∩
- ßÑú¼Ñ¡Γá, «»αÑñѽѡ¡«ú« »« ñ¿αÑ¬Γ¿óÑ .FARDATA.
-
- ò«Γ∩ ßÑú¼Ñ¡Γ, «»αÑñѽѡ¡δ⌐ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ .FARDATA, ¡Ñ
- ¿ß»«½∞ºπÑΓß∩ ß«ó¼ÑßΓ¡« ß ñαπú¿¼¿ ¼«ñπ½∩¼¿, ñ½∩ ß«ó¼ÑßΓ¡«ú« ß ñαπ-
- ú¿¼¿ ¼«ñπ½∩¼¿ ¿ß»«½∞º«óá¡¿∩ «Γñѽ∞¡δσ »ÑαѼѡ¡δσ ó ßÑú¼Ñ¡ΓÑ
- .FARDATA óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ GLOBAL. ìá»α¿¼Ñα, ¿ß-
- »«½∞ºπѼá∩ ñá½ÑÑ »ÑαѼѡ¡á∩ MemVar íπñÑΓ ñ«ßΓπ»¡á ó ñαπú¿σ ¼«ñπ-
- ½∩σ.
-
- .MODEL SMALL
- .FARDATA
- GLOBAL MemVar:WORD
- MemVar DW 0
- .
- .
- .
-
- Æ«úñá ¡á φΓπ »ÑαѼѡ¡πε ¼«ª¡« ßßδ½áΓ∞ß∩ ó ñαπú«¼ ¼«ñπ½Ñ,
- ¡á»α¿¼Ñα:
-
- .MODEL SMALL
- GLOBAL MemVar:WORD
- .DATA
- .
- .
- .
- .CODE
- .
- .
- .
- mov ax,SEG MemVar
- mov ds,ax
- ASSUME DS:SEG MemVar
- mov ax,[MemVar]
- .
- .
- .
-
- ÄΓ¼ÑΓ¿¼, τΓ« «íΩ∩ó½Ñ¡¿Ñ MemVar, ¬á¬ ú½«íá½∞¡«⌐ »ÑαѼѡ¡«⌐
- (GLOBAL), ß½ÑñπÑΓ ñ« Γ«ú«, ¬á¬ «»¿ßδóáÑΓß∩ ¬á¬«⌐-½¿í« ßÑú¼Ñ¡Γ.
- ¥Γ« ¡Ñ«íσ«ñ¿¼«, Γᬠ¬á¬ ú½«íá½∞¡«Ñ «»¿ßá¡¿Ñ ñá¡¡«⌐ »ÑαѼѡ¡«⌐
- ñ«½ª¡« óδ»«½¡∩Γ∞ß∩ ½¿í« ó ßÑú¼Ñ¡ΓÑ φΓ«⌐ »ÑαѼѡ¡«⌐, ½¿í« óßÑ óßÑσ
- ßÑú¼Ñ¡Γ«ó.
-
- TASM2 #3-5/䫬 = 92 =
-
-
- ä¿αÑ¬Γ¿óá .FARDATA? á¡á½«ú¿τ¡á ñ¿αÑ¬Γ¿óÑ .FARDATA, ¡« «¡á
- ß«ºñáÑΓ ßÑú¼Ñ¡Γ Γ¿»á PRIVATE ß ¿¼Ñ¡Ñ¼ FAR_BSS. æÑú¼Ñ¡Γδ FAR_BSS
- ¿ß»«½∞ºπεΓß∩ ó ∩ºδ¬áσ óδß«¬«ú« πα«ó¡∩ ñ½∩ ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δσ
- ñá¡¡δσ ñá½∞¡Ñú« Γ¿»á. àß½¿ óδ ¡Ñ «αúá¡¿ºπÑΓÑ ¿¡ΓÑαΣÑ⌐ß ß ∩ºδ¬«¼
- óδß«¬«ú« πα«ó¡∩, Γ« óá¼ ß½ÑñπÑΓ «»αÑñѽ¿Γ∞ ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δÑ
- ñá¡¡δÑ ñá½∞¡Ñú« Γ¿»á ó ßÑú¼Ñ¡ΓÑ .FARDATA ¿ ºáíδΓ∞ « .FARDATA?.
- æÑú¼Ñ¡Γ .FARDATA ñáÑΓ óá¼ ñ«»«½¡¿Γѽ∞¡δÑ 64è »á¼∩Γ¿ ß ñá½∞¡¿¼ Γ¿-
- »«¼ «íαáΘÑ¡¿∩, ¡« Ñß½¿ óá¼ ΓαÑíπÑΓß∩ í«½ÑÑ 64è »á¼∩Γ¿ ñá½∞¡Ñú«
- Γ¿»á, Γ« óÑα«∩Γ¡« »«ΓαÑíπÑΓß∩ ¿ß»«½∞º«óáΓ∞ ßΓá¡ñáαΓ¡δÑ ñ¿αÑ¬Γ¿óδ
- «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó.
-
- àß½¿ óδ ¿ß»«½∞ºπÑΓÑ ñ¿αÑ¬Γ¿óπ .FARDATA?, »αÑñ«»αÑñѽѡ¡á∩
- ¼ÑΓ¬á @FarData? ß«ñÑαª¿Γ ¿¼∩ ßÑú¼Ñ¡Γá, «»αÑñѽѡ¡«ú« »« ñ¿αÑ¬Γ¿óÑ
- .FARDATA, ¬«Γ«α«Ñ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ó ñ¿αÑ¬Γ¿óáσ ASSUME ¿ »α¿
- ºáúαπº¬Ñ ßÑú¼Ñ¡Γ¡δσ αÑú¿ßΓα«ó.
-
-
-
-
- TASM2 #3-5/䫬 = 93 =
-
- Åα¿¼Ñα »α«úαá¼¼δ, ß«ßΓ«∩ΘÑ⌐ ¿º ¡Ñ߬«½∞¬¿σ ßÑú¼Ñ¡Γ«ó
- -----------------------------------------------------------------
-
- æ½ÑñπεΘá∩ »α«úαá¼¼á ß«ñÑαª¿Γ ñóá ßÑú¼Ñ¡Γá ¬«ñá ¿ ñóá ßÑú¼Ñ¡-
- Γá ñá¡¡δσ. ¥Γ«, óÑα«∩Γ¡«, ¡Ñ½∞º∩ ßτ¿ΓáΓ∞ ¿ßτÑα»δóáεΘ¿¼ »α¿¼Ñα«¼
- »α«úαá¼¼¿α«óá¡¿∩ ß ¿ß»«½∞º«ó᡿Ѽ ¡Ñ߬«½∞¬¿σ ßÑú¼Ñ¡Γ«ó, «ñ¡á¬« ¼δ
- ¡Ñ αáß»«½áúáѼ ¼ÑßΓ«¼ ñ½∩ »α«úαá¼¼δ, ß«ñÑαªáΘÑ⌐ ß«Γ¡¿ ¿½¿ Γδß∩τ¿
- ßΓ᫬. ¥Γá »α«úαá¼¼á ñáßΓ óá¼ »αÑñßΓáó½Ñ¡¿Ñ « »ÑαѬ½ετÑ¡¿¿ ¼Ñªñπ
- ßÑú¼Ñ¡ΓἿ, ºáúαπº¬¿ π¬áºáΓѽÑ⌐ Γ¿»á "ßÑú¼Ñ¡Γ:ß¼ÑΘÑ¡¿Ñ" ¿ ó맮óÑ
- ¬«ñá ¿º ñαπú¿σ ßÑú¼Ñ¡Γ«ó.
-
- ;
- ; Åα«úαá¼¼á ñ½∩ ñѼ«¡ßΓαᵿ¿ ¿ß»«½∞º«óá¡¿∩ ¡Ñ߬«½∞¬¿σ ßÑú¼Ñ¡Γ«ó
- ; ¬«ñá ¿ ñá¡¡δσ
- ;
- ; æΓ᫬á ßτ¿ΓδóáÑΓß∩ ß ¬«¡ß«½¿, ß«σαá¡∩ÑΓß∩ ó «ñ¡«¼ ßÑú¼Ñ¡ΓÑ
- ; ñá¡¡δσ, ¬«»¿απÑΓß∩ ó ßΓ᫬π ó ñαπú«¼ ßÑú¼Ñ¡ΓÑ ñá¡¡δσ (»α¿
- ; φΓ«¼ óδ»«½¡∩ÑΓß∩ »α«µÑßß ÑÑ »αÑ«íαẫóá¡¿∩ ó ¡¿ª¡¿⌐ αÑú¿ßΓα),
- ; á ºáΓѼ ßΓ᫬á óδó«ñ¿Γß∩ ¡á ¬«¡ß«½∞. ä½∩ τΓÑ¡¿∩, óδó«ñá ¿
- ; ¬«»¿α«óá¡¿∩ ßΓ᫬¿ ¿ß»«½∞ºπεΓß∩ Σπ¡¬µ¿¿ ó ñαπú«¼ ßÑú¼Ñ¡ΓÑ
- ; ¬«ñá.
- ;
- STACK SEGMENT PARA STACK 'STACK'
- DB 512 DUP (?)
- Stack ENDS
-
- MAX_STRING_LENGTH EQU 1000
-
- SourceDataSeg SEGMENT PARA PRIVATE 'DATA'
- InputBuffer DB MAX_STRING_LENGTH DUP (?)
- SourceDataSeg ENDS
-
- DestDataSeg SEGMENT PARA PRIVATE 'DATA'
- OutputBuffer DB MAX_STRING_LENGTH DUP (?)
- DestDataSeg ENDS
-
- SubCode SEGMENT PARA PRIVATE 'DATA'
- ASSUME CS:SubCOde
- ;
- ; Å«ñ»α«úαá¼¼á ñ½∩ ßτ¿Γδóá¡¿∩ ßΓ᫬¿ ß ¬«¡ß«½¿. 諡ѵ ßΓ᫬¿
- ; «Γ¼ÑτáÑΓß∩ ß¿¼ó«½«¼ ó«ºóαáΓá ¬áαÑΓ¬¿, ¬«Γ«αδ⌐ »αÑ«íαáºπÑΓß∩
- ; ó »áαπ ß¿¼ó«½«ó ó«ºóαáΓ ¬áαÑΓ¬¿/»ÑαÑó«ñ ßΓ᫬¿ (í½áú«ñáα∩
- ; τѼπ »α¿ óδó«ñÑ »α«¿ßσ«ñ¿Γ »ÑαÑó«ñ ¡á ß½ÑñπεΘπε ßΓ᫬π).
- ; ä½∩ ºáóÑαΦÑ¡¿∩ ßΓ᫬¿ ñ«íáó½∩ÑΓß∩ 0.
- ;
- ; éó«ñ:
-
- TASM2 #3-5/䫬 = 94 =
-
- ; ES:DI - áñαÑß αáß»«½«ªÑ¡¿∩ ßΓ᫬¿
- ;
- ; éδó«ñ: «ΓßπΓßΓóπÑΓ
- ;
- ; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ: AX, DI
- ;
- GetString PROC FAR
- GetStringLoop:
- mov ah,1
- int 21h ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- stosb ; ß«σαá¡¿Γ∞ Ñú«
- cmp al,13 ; φΓ« ó«ºóαáΓ ¬áαÑΓ¬¿?
- jnz GetStringLoop ; ¡ÑΓ, »«¬á ¡Ñ óδ»«½¡Ñ¡«
- mov BYTE PTR es:[di],10
- mov BYTE PTR es:[di+1],0 ; ºáóÑαΦ¿Γ∞ ßΓ᫬π
- ; ß¿¼ó«½«¼ »ÑαÑó«ñá ßΓ᫬¿ ¿ 0
- ret
- GetString ENDP
- ;
- ; Å«ñ»α«úαá¼¼á ñ½∩ ¬«»¿α«óá¡¿∩ ßΓ᫬¿ ¿ »αÑ«íαẫóá¡¿∩ ÑÑ
- ; ó ¡¿ª¡¿⌐ αÑú¿ßΓα.
- ;
- ; éó«ñ:
- ; DS:SI - ßΓ᫬á ñ½∩ ¬«»¿α«óá¡¿∩
- ; ES:DI - ¼ÑßΓ«, ¬πñá ¡πª¡« »«¼ÑßΓ¿Γ∞ ßΓ᫬π
- ;
- ; éδó«ñ: «ΓßπΓßΓóπÑΓ
- ;
- ; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ: AX, DI, SI
- ;
- CopyLowerCase PROC FAR
- CopyLoop:
- lodsb
- cmp al,'A'
- jb NotUpper
- cmp al,'Z'
- ja NotUpper
- add al,20h ; »αÑ«íαẫóáΓ∞ ó ¡¿ª¡¿⌐
- ; αÑú¿ßΓα (Ñß½¿ φΓ« óÑασ¡¿⌐
- ; αÑú¿ßΓα)
- NotUpper:
- stosb
- and al,al ; cΓα«¬á ºáóÑαΦáÑΓß∩ 0?
- jnz CopyLoop ; ¡ÑΓ, ߬«»¿α«óáΓ∞ ñαπú«⌐
- ; ß¿¼ó«½
- ret
-
- TASM2 #3-5/䫬 = 95 =
-
- CopyLowerCase ENDP
- ;
- ; Å«ñ»α«úαá¼¼á ñ½∩ óδó«ñá ßΓ᫬¿ ¡á ¬«¡ß«½∞.
- ;
- ; éó«ñ:
- ; ES:DI - áñαÑß ¬«»¿απѼ«⌐ ßΓ᫬¿
- ;
- ; éδó«ñ: «ΓßπΓßΓóπÑΓ
- ;
- ; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ: AH, DL, SI
- ;
- DispleyString PROC FAR
- DisplayStringLoop:
- mov dl,[si] ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- and dl,dl ; φΓ« 0, ºáóÑαΦáεΘ¿⌐ ßΓ᫬π?
- jz DisplayStringDone ; ñá, óδ»«½¡Ñ¡«
- inc si ; ßßδ½¬á ¡á ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- mov ah,2
- int 21h ; óδóÑßΓ¿ ß¿¼ó«½
- jmp DisplayStringLoop
- DisplayStringDone:
- ret
- DisplayString ENDP
- SubCode ENDS
-
- Code SEGMENT PARA PRIVATE 'CODE'
- ASSUME CS:Code,DS:NOTHING,ES:NOTHING,SS:Stack
- ProgramStart:
- cld ; πóѽ¿τÑ¡¿Ñ ó ßΓ᫬«óδσ
- ; ¿¡ßΓαπ¬µ¿∩σ αÑú¿ßΓα«ó-
- ; π¬áºáΓѽÑ⌐
- ;
- ; æτ¿ΓáΓ∞ ßΓ᫬π ß ¬«¡ß«½¿ ó InputBuffer.
- ;
- mov ax,SourceDataSeg
- mov es,ax
- ASSUME ES:SourceDataSeg
- mov di,OFFSET InputBuffer
- call GetString ; ßτ¿ΓáΓ∞ ßΓ᫬π ß ¬«¡ß«½¿
- ; ¿ ß«σαá¡¿Γ∞ ÑÑ »« áñαÑßπ
- ; ES:DI
- ;
- ; éδóÑßΓ¿ ß¿¼ó«½ »ÑαÑó«ñá ßΓ᫬¿, τΓ«íδ »α«ñó¿¡πΓ∞ß∩ ¡á
- ; ß½ÑñπεΘπε ßΓ᫬π.
- ;
- mov ah,2
-
- TASM2 #3-5/䫬 = 96 =
-
- mov dl,10
- int 21h
- ;
- ; 欫»¿α«óáΓ∞ ßΓα«¬π ¿º InputBuffer (óσ«ñ¡«⌐ íπΣÑα) ó
- ; OutputBuffer (óδσ«ñ¡«⌐ íπΣÑα), »αÑ«íαáºπ∩ ÑÑ ó ¡¿ª¡¿⌐
- ; αÑú¿ßΓα.
- ;
- push es
- pop ds
- ASSUME DS:SourceDataSeg
- mov ax,DestDataSeg
- mov es,ax
- ASSUME ES:DestDataSeg
- mov si,OFFSET InputBuffer ; ߬«»¿α«óáΓ∞ ¿º DS:DI
- mov di,OFFSET OutputBuffer ; ó ES:DI,
- call CopyLowerCase ; »αÑ«íαáºπ∩ ó ¡¿º¬¿⌐
- ; αÑú¿ßΓα
- ;
- ; éδóÑßΓ¿ ßΓ᫬π (ßΓα«τ¡δÑ íπ¬óδ).
- ;
- push es
- pop ds
- ASSUME DS:DestDataSeg
- mov si,OFFSET OutputBuffer
- call DisplayString ; óδóÑßΓ¿ ßΓ᫬π, αáß»«-
- ; ½«ªÑ¡¡πε »« áñαÑßπ
- ; DS:SI, ¡á ¬«¡ß«½∞
- ;
- ; éδ»«½¡Ñ¡«.
- ;
- mov ah,4ch
- int 21h
- Code ENDS
- END ProgramStart
-
- çá¼ÑΓ¿¼, τΓ« ó ñá¡¡«¼ »α¿¼ÑαÑ »ÑαÑñ «ß¡«ó¡«⌐ »α«úαá¼¼«⌐ ß½Ñ-
- ñπÑΓ »«ñ»α«úαá¼¼á. ¥Γ« ñѽáÑΓß∩ ñ½∩ Γ«ú«, τΓ«íδ ¿ºíѪáΓ∞ «»ÑαѪá-
- εΘ¿σ ßß佫¬, Γᬠ¬á¬ »«ñ»α«úαá¼¼á ¿ «ß¡«ó¡á∩ »α«úαá¼¼á ¡áσ«ñ∩Γß∩
- ó αẽ¿τ¡δσ ßÑú¼Ñ¡Γáσ ñá¡¡δσ. àß½¿ «ß¡«ó¡á∩ »α«úαá¼¼á ß½ÑñπÑΓ
- »Ñαó«⌐, Γ« »α¿ ¬áªñ«¼ ó맮óÑ »«ñ»α«úαá¼¼δ óá¼ »α¿ñÑΓß∩ π¬áºáΓ∞
- »ÑαÑ«»αÑñѽѡ¿Ñ FAR PTR, Γᬠ¬á¬ Æπαí« ÇßßѼí½Ñα ¡Ñ ¼«ªÑΓ óδ»«½-
- ¡∩Γ∞ áóΓ«¼áΓ¿τÑ߬«Ñ áßßÑ¼í½¿α«óá¡¿Ñ «»ÑαѪáεΘ¿σ ßß佫¬ ñá½∞¡Ñú«
- Γ¿»á. Äñ¡á¬« »α¿ ¿ß»«½∞º«óá¡¡«⌐ ó »α¿¼ÑαÑ «αúá¡¿ºáµ¿¿ »α«úαá¼¼δ
- »α¿ óßÑσ ó맮óáσ »«ñ»α«úαá¼¼ ¿ß»«½∞ºπεΓß∩ «íαáΓ¡δÑ ßß佬¿, »«φΓ«-
- ¼π Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ áóΓ«¼áΓ¿τÑ߬¿ úÑ¡Ñα¿α«óáΓ∞ ñá½∞¡¿Ñ ó맮-
- óδ ñ½∩ Γá¬¿σ »«ñ»α«úαá¼¼.
-
- TASM2 #3-5/䫬 = 97 =
-
-
- é« óßÑσ ñαπú¿σ «Γ¡«ΦÑ¡¿∩σ φΓá »α«úαá¼¼á óÑß∞¼á »α«ßΓá. Åα¿
- ßßδ½¬Ñ ¡á ñá¡¡δÑ ó »«ñ»α«úαá¼¼áσ ¿ß»«½∞ºπεΓß∩ »«½¡δÑ π¬áºáΓѽ¿
- (ßÑú¼Ñ¡Γ:ß¼ÑΘÑ¡¿Ñ), ¿, Ñß½¿ φΓ« ¡Ñ«íσ«ñ¿¼«, ó «ß¡«ó¡«⌐ »α«úαá¼¼Ñ
- º¡áτÑ¡¿∩ αÑú¿ßΓα«ó ES ¿ DS πßΓá¡áó½¿óáεΓß∩ ó αẽ¿τ¡δÑ ßÑú¼Ñ¡Γδ
- ñá¡¡δσ. ÄíαáΓ¿ΓÑ ó¡¿¼á¡¿Ñ ¡á ¿ß»«½∞º«óá¡¿Ñ ñ½∩ ¬«»¿α«óá¡¿∩ ßΓ᫬¿
- ¿ »αÑ«íαẫóá¡¿∩ ÑÑ ó ¡¿ª¡¿⌐ αÑú¿ßΓα ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐. Å«ß-
- ¬«½∞¬π ó ¿¡ßΓαπ¬µ¿¿ LODS »« π¼«½τá¡¿ε ¿ß»«½∞ºπÑΓß∩ αÑú¿ßΓα DS, á
- ó STOSW - ES, Γ« φΓ¿ ¿¡ßΓαπ¬µ¿¿ ¿ñÑá½∞¡« »«ñσ«ñ∩Γ ñ½∩ ¿ß»«½∞º«óá-
- ¡¿∩ ¿º ó »α«úαá¼¼Ñ, úñÑ ΓαÑíπÑΓß∩ «íαáΘáΓ∞ß∩ ¬ ñóπ¼ ßÑú¼Ñ¡Γá¼
- ßαáºπ.
-
-
-
-
-
-
- TASM2 #3-5/䫬 = 98 =
-
- â½áóá 10. Åα«µÑßß«α 80386 ¿ ñαπú¿Ñ »α«µÑßß«αδ
- -----------------------------------------------------------------
-
- ä« ß¿σ »«α ¼δ αáßß¼áΓα¿ó὿ »α«úαá¼¼¿α«óá¡¿Ñ ¡á ∩ºδ¬Ñ Çß-
- ßѼí½Ñαá ñ½∩ »α«µÑßß«αá 8086. (è«ßóÑ¡¡« ¼δ »α¿ φΓ«¼ αáßß¼«Γαѽ¿
- Γá¬ªÑ »α«µÑßß«α 8088, ¬«Γ«αδ⌐ ¿ß»«½∞ºπÑΓß∩ ó ¬«¼»∞εΓÑαáσ IBM PC ¿
- XT, »«ß¬«½∞¬π «¡ ó «ß¡«ó¡«¼ φ¬ó¿óá½Ñ¡ΓÑ¡ »α«µÑßß«απ 8086, ¡« «ß-
- ¡áΘÑ¡ 8-αáºα∩ñ¡«⌐ Φ¿¡«⌐ ñá¡¡δσ.) Åα«µÑßß«α 8086 - φΓ« ¡Ñ Ññ¿¡ß-
- ΓóÑ¡¡δ⌐ »α«µÑßß«α, »«ññÑনóáѼδ⌐ Æπαí« ÇßßѼí½Ñα«¼. ê¼ÑÑΓß∩ µÑ-
- ½«Ñ ßѼÑ⌐ßΓó« αáºó¿Γδσ »α«µÑßß«α«ó 8086, ¿ºóÑßΓ¡δσ, ¬á¬ ßÑα¿∩
- iAPx86, ¿ ßѼÑ⌐ßΓó« ¼áΓѼáΓ¿τÑ߬¿σ ß«»α«µÑßß«α«ó, ∩ó½∩εΘ¿σß∩ αáº-
- ó¿Γ¿Ñ¼ ß«»α«µÑßß«αá 8087.
-
- ìá¿í«½ÑÑ αáºó¿Γδ¼ »α«µÑßß«α«¼ ßÑα¿¿ iAPx86 ∩ó½∩ÑΓß∩, íѺ
- ß«¼¡Ñ¡¿∩, »α«µÑßß«α 80386, í½áú«ñáα∩ ¬«Γ«α«¼π »Ñαß«¡á½∞¡δÑ ¬«¼»∞-
- εΓÑαδ ßΓ὿ ßΓ«½∞ ªÑ ¼«Θ¡δ¼¿, ¬á¬ ¼¿¡¿-¥éî. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, ¬áªñδ⌐
- »α«µÑßß«α ßÑα¿¿ iAPx86 ¿¼ÑÑΓ ¿¡ΓÑαÑß¡δÑ π½πτΦÑ¡¿∩ »« ßαáó¡Ñ¡¿ε ß
- 󫺼«ª¡«ßΓ∩¼¿ »α«µÑßß«αá 8086. äá½ÑÑ ¼δ αáßß¼«Γα¿¼ »α«úαá¼¼¿α«óá-
- ¡¿Ñ ñ½∩ »α«µÑßß«αá 80386: πó¿ñ¿¼, ¬á¬ ¼«ª¡« αáºαÑΦ¿Γ∞ ó Æπαí« Çß-
- ßѼí½ÑαÑ ¿ß»«½∞º«óá¡¿Ñ ßαÑñßΓó« »α«µÑßß«αá 80386, »«º¡á¬«¼¿¼ß∩ ß
- ¡«ó묨 αÑú¿ßΓαἿ, αѪ¿¼á¼¿ áñαÑßᵿ¿ ¿ ¿¡ßΓαπ¬µ¿∩¼¿ »α«µÑßß«αá
- 80386. Å«ß½Ñ φΓ«ú« ¼δ αáßß¼«Γα¿¼ ¼«Θ¡«Ñ ßó«⌐ßΓó« Æπαí« ÇßßѼí½Ñαá
- - 󫺼«ª¡«ßΓ∞ τÑαÑñ«óá¡¿∩ 16-αáºα∩ñ¡δσ ¿ 32-αáºα∩ñ¡δσ ¿¡ßΓαπ¬µ¿⌐
- ¿ ßÑú¼Ñ¡Γ«ó, á Γá¬ªÑ ¡Ñ¬«Γ«αδÑ »α¿¼Ñαδ »α«úαá¼¼ ñ½∩ »α«µÑßß«αá
- 80386. ìᬫ¡Ñµ, ¼δ ¬αáΓ¬« »α«á¡á½¿º¿απѼ, ¬á¬¿¼ «íαẫ¼ 󫺼«ª-
- ¡«ßΓ¿ »α«µÑßß«αá 80386 ¼«ª¡« αáßΦ¿α¿Γ∞ ºá ßτÑΓ ¿ß»«½∞º«óá¡¿∩ ß«»-
- α«µÑßß«α«¼ 80287 ¿ 80387.
-
- éδí«α ó »α«úαá¼¼Ñ ¡á ÇßßѼí½ÑαÑ Γ¿»á »α«µÑßß«αá
- -----------------------------------------------------------------
-
- Å« π¼«½τá¡¿ε Æπαí« ÇßßѼí½Ñα áßßÑ¼í½¿απÑΓ ¬«ñ Γ«½∞¬« ñ½∩
- »α«µÑßß«αá 8086. ùΓ«íδ Æπαí« ÇßßѼí½Ñα ¼«ú »«ññÑনóáΓ∞ ñαπú¿Ñ
- »α«µÑßß«αδ ßÑα¿¿ iAPx86, ¿½¿ ß«»α«µÑßß«αδ, óδ ñ«½ª¡δ π¬áºδóáΓ∞
- ß««ΓóÑΓßΓóπεΘ¿Ñ ñ¿αÑ¬Γ¿óδ. æ½ÑñπεΘ¿Ñ ñ¿αÑ¬Γ¿óδ ß««íΘáεΓ Æπαí« Çß-
- ßѼí½Ñαπ, ¬á¬«⌐ Γ¿» »α«µÑßß«αá ¡πª¡« »«ññÑনóáΓ∞ »α¿ áßßÑ¼í½¿α«-
- óá¡¿¿ ¬«ñá:
-
- .186 .286C .287 .386C .387 .8087
- .286 .286P .386 .386P .8086
-
- ¥Γ¿ ñ¿αÑ¬Γ¿óδ ¼«ª¡« π¬áºδóáΓ∞ ó ½εí«¼ ¼ÑßΓÑ ¿ßσ«ñ¡«ú« Σá⌐-
- ½á, »«ß½Ñ τÑú« «¡¿ ßαáºπ óßΓπ»áεΓ ó ñÑ⌐ßΓó¿Ñ. é «ñ¡«¼ ¿ßσ«ñ¡«¼
- Σá⌐½Ñ ¼«ª¡« αẼÑßΓ¿Γ∞ ¡Ñ߬«½∞¬« ñ¿αÑ¬Γ¿ó óδí«αá Γ¿»á »α«µÑßß«αá,
- »α¿ φΓ«¼ ΓѬπΘ¿¼ »α«µÑßß«α«¼ ßτ¿ΓáÑΓß∩ »α«µÑßß«α, óδíαá¡¡δ⌐ »«
-
- TASM2 #3-5/䫬 = 99 =
-
- »«ß½Ññ¡Ñ⌐ π¬áºá¡¡«⌐ ñ¿αÑ¬Γ¿óÑ.
-
- é ½εí«⌐ ¼«¼Ñ¡Γ ¼«ª¡« π¬áºáΓ∞ ñ¿αÑ¬Γ¿óπ .8086, »« ¬«Γ«α«⌐
- Æπαí« ÇßßѼí½Ñα íπñÑΓ ß¡«óá »«ññÑনóáΓ∞ Γ«½∞¬« »α«µÑßß«α 8086.
- (é «ßΓá½∞¡«⌐ τáßΓ¿ ñá¡¡«⌐ ú½áóδ óßÑ ßß佬¿ ¡á »α«µÑßß«α 8086 «Γ-
- ¡«ß∩Γß∩ ó αáó¡«⌐ ßΓѻѡ¿ ¿ ¬ »α«µÑßß«απ 8088.)
-
- é ¬áτÑßΓóÑ »α¿¼Ñαá »α¿óÑñѼ ß½ÑñπεΘπε Σπ¡¬µ¿ε, ¬«Γ«αá∩
- ߬½áñδóáÑΓ ñóá 32-αáºα∩ñ¡δσ º¡áτÑ¡¿∩, ¿ß»«½∞ºπ∩ »α«µÑßß«α 8086,
- ºáΓѼ 80386, ¿ ¡á¬«¡Ñµ ß¡«óá 8086:
-
- DOSSEG
- .MODEL SMALL
- .CODE
- Add32 PROC
- mov ax,[bp+4] ; »«½πτ¿Γ∞ ¼½áñΦπε »«½«ó¿¡π
- ; ¿ßΓ«τ¡¿¬á 1
- mov dx,[bp+6] ; »«½πτ¿Γ∞ ßΓáαΦπε »«½«ó¿¡π
- ; ¿ßΓ«τ¡¿¬á 1
- mov bx,[bp+8] ; »«½πτ¿Γ∞ ¼½áñΦπε »«½«ó¿¡π
- ; ¿ßΓ«τ¡¿¬á 2
- mov cx,[bp+10] ; »«½πτ¿Γ∞ ßΓáαΦπε »«½«ó¿¡π
- ; ¿ßΓ«τ¡¿¬á 2
- .386 ; ¿ß»«½∞º«óáΓ∞ ñ½∩ ß½«ªÑ¡¿∩
- ; αÑú¿ßΓαδ »α«µÑßß«αá 80386
- shl eax,16
- mov ax,dx
- rol eax,16 ; ºá¡ÑßΓ¿ 32 í¿Γá ¿ßΓ«τ¡¿¬á 1
- ; ó αÑú¿ßΓα EAX
- mov dx,cx
- mov edx,16 ; »«¼ÑßΓ¿Γ∞ 32 í¿Γá ¿ßΓ«τ¡¿¬á 2
- ; ó EDX
- mov dx,bx
- add eax,adx ; ß½«ª¿Γ∞ ¿ßΓ«τ¡¿¬ 1 ¿ ¿ßΓ«τ¡¿¬ 2
- rol eax,16
- mov dx,ax ; »«¼ÑßΓ¿Γ∞ ßΓáαΦπε »«½«ó¿¡π
- ; αѺπ½∞ΓáΓá ó αÑú¿ßΓα AX
- .8086
- ret
- Add32 ENDP
- END
-
-
- Åα«µÑßß«αδ 80186 ¿ 80188
- -----------------------------------------------------------------
-
-
- TASM2 #3-5/䫬 = 100 =
-
- Åα«µÑßß«α 80186 (¬«Γ«αδ⌐ ∩ó½∩ÑΓß∩ »α«µÑßß«α«¼ ßÑα¿¿ iAPx86)
- ó «ß¡«ó¡«¼ á¡á½«ú¿τÑ¡ »α«µÑßß«απ 8086. Åα«µÑßß«α 80186 »«ññÑন-
- óáÑΓ óßÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 8086, á Γá¬ªÑ ¡Ñ߬«½∞¬« ¡«óδσ ¿¡ß-
- Γαπ¬µ¿⌐ ¿ αáßΦ¿αÑ¡¡δÑ Σ«α¼δ ¡Ñ¬«Γ«αδσ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086.
- èα«¼Ñ Γ«ú«, »α¿ óδ»«½¡Ñ¡¿¿ ¼¡«ú¿σ «»Ñαᵿ⌐ («ß«íÑ¡¡« »α¿ óδτ¿ß½Ñ-
- ¡¿¿ áñαÑß«ó »á¼∩Γ¿) »α«µÑßß«α 80186 αáí«ΓáÑΓ ßπΘÑßΓóÑ¡¡« íδßΓαÑÑ
- »α«µÑßß«αá 8086, »«φΓ«¼π »α«úαá¼¼δ, ¡á»¿ßá¡¡δÑ ñ½∩ αáí«Γδ ¡á »α«-
- µÑßß«αÑ 8086, ¡á »α«µÑßß«αÑ 80186 óδ»«½¡∩εΓß∩ º¡áτ¿Γѽ∞¡« íδßΓ-
- ॥.
-
- Åα«µÑßß«α 80188 «í½áñáÑΓ »α«úαá¼¼¡«⌐ ß«ó¼ÑßΓ¿¼«ßΓ∞ε ß »α«-
- µÑßß«α«¼ 80186. àñ¿¡ßΓóÑ¡¡«Ñ «Γ½¿τ¿Ñ ¼Ñªñπ ¡¿¼¿ ºá¬½ετáÑΓß∩ ó
- Γ«¼, τΓ« »α«µÑßß«α 80186 ¿¼ÑÑΓ 16-αáºα∩ñ¡πε Φ¿¡π ñá¡¡δσ, á »α«-
- µÑßß«α 80188 - 8-αáºα∩ñ¡πε.
-
-
-
-
- TASM2 #3-5/䫬 = 101 =
-
-
- ÉáºαÑΦÑ¡¿Ñ áßßÑ¼í½¿α«óá¡¿∩ ñ½∩ »α«µÑßß«αá 80186
- -----------------------------------------------------------------
-
- Å«ññÑαª¬á Æπαí« ÇßßѼí½Ñαá ñ½∩ áßßÑ¼í½¿α«óá¡¿∩ ¬«ñá »α«µÑß-
- ß«αá 80186 αáºαÑΦáÑΓß∩ »« ñ¿αÑ¬Γ¿óÑ .186.
-
- äá½ÑÑ ¼δ αáßß¼«Γα¿¼ ¡«óδÑ ¿ αáßΦ¿αÑ¡¡δÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑß-
- ß«αá 80186. Å«ñα«í¡á∩ ¿¡Σ«α¼áµ¿∩ »« ¿¡ßΓαπ¬µ¿∩¼ »α«µÑßß«αá 80186
- ß«ñÑনΓß∩ ó â½áóÑ 3 "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá".
-
- ÅÑαÑñ ¡áτὫ¼ αáßß¼«ΓαÑ¡¿∩ «Γ¼ÑΓ¿¼, τΓ« »α«µÑßß«α 8086 ¡Ñ
- αáß»«º¡áÑΓ ¡¿ «ñ¡π ¿º ΓÑσ ¿¡ßΓαπ¬µ¿⌐, ¬«Γ«αδÑ ¼δ íπñѼ «íßπªñáΓ∞.
- é ¿Γ«úÑ óßÑ »α«úαá¼¼δ, ¬«Γ«αδÑ ß«ñÑαªáΓ σ«Γ∩ íδ «ñ¡π ¿¡ßΓαπ¬µ¿ε
- (¡«óπε ¿½¿ αáßΦ¿αÑ¡¡πε) »α«µÑßß«αá 80186, ¡á »α«µÑßß«αÑ 8086 αá-
- í«ΓáΓ∞ ¡Ñ íπñπΓ.
-
-
- ì«óδÑ ¿¡ßΓαπ¬µ¿¿
- -----------------------------------------------------------------
-
- ìáí«α ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80186 ß«ñÑαª¿Γ ß½ÑñπεΘ¿Ñ ¡«óδÑ
- ¿¡ßΓαπ¬µ¿¿:
-
- BOUND INS OUTS PUSHA
- ENTER LEAVE POPA
-
- ê¡ßΓαπ¬µ¿¿ PUSHA ¿ POPA
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿¿ PUSHA ¿ POPA »αÑñ«ßΓáó½∩εΓ φΣΣÑ¬Γ¿ó¡«Ñ ßαÑñßΓó«,
- ß »«¼«Θ∞ε ¬«Γ«α«ú« ¼«ª¡« ºá¡«ß¿Γ∞ ¿ ¿ºó½Ñ¬áΓ∞ ¿º ßΓѬá óßÑ ó«ßѼ∞
- «íΘ¿σ αÑú¿ßΓα«ó. ê¡ßΓαπ¬µ¿⌐ PUSHA ºá¡«ß¿Γ ó ßΓѬ ó«ßѼ∞ «íΘ¿σ αÑ-
- ú¿ßΓα«ó ó ß½ÑñπεΘѼ »«α∩ñ¬Ñ: AX, CX, DX, BX, SP, BP, SI, DI. ê¡ß-
- Γαπ¬µ¿∩ POPA ¿ºó½Ñ¬áÑΓ αÑú¿ßΓαδ DI, SI, BP, BS, DX, CX ¿ AX (Γ«
- ÑßΓ∞ óδ»«½¡∩ÑΓ ñÑ⌐ßΓó¿Ñ, «íαáΓ¡«Ñ ñÑ⌐ßΓó¿ε ¿¡ßΓαπ¬µ¿¿ PUSHA). ÉÑ-
- ú¿ßΓα SP ¿¡ßΓαπ¬µ¿Ñ⌐ POPA ¡Ñ ¿ºó½Ñ¬áÑΓß∩, ó¼ÑßΓ« φΓ«ú« º¡áτÑ¡¿Ñ
- SP πóѽ¿τ¿óáÑΓß∩ ¡á 16 - ñ½¿¡π í½«¬á αÑú¿ßΓα«ó, ºá¡ÑßÑ¡¡δσ ó ßΓѬ
- »« ¿¡ßΓαπ¬µ¿¿ PUSHA, á º¡áτÑ¡¿Ñ SP, ºá¡ÑßÑ¡¡«Ñ ó ßΓѬ »« ¿¡ßΓαπ¬-
- µ¿¿ PUSHA, «τ¿ΘáÑΓß∩ ¿¡ßΓαπ¬µ¿Ñ⌐ POPA ¿ «ΓíαáßδóáÑΓß∩. ìá ßÑú-
- ¼Ñ¡Γ¡δÑ αÑú¿ßΓαδ, Σ½áú¿ ¿ π¬áºáΓѽ∞ ¿¡ßΓαπ¬µ¿⌐ PUSHA ¿ POPA ¡Ñ
- ó½¿∩εΓ.
-
- ìá»α¿¼Ñα, ¬«ñ:
-
- .186
-
- TASM2 #3-5/䫬 = 102 =
-
- .
- .
- .
- SampleFunction PROC
- pusha
- .
- .
- .
- popa
- ret
- SampleFunction ENDP
- .
- .
- .
-
- ß«σαá¡∩ÑΓ óßÑ 8 «íΘ¿σ αÑú¿ßΓα«ó ß »«¼«Θ∞ε ñóπσ ¿¡ßΓαπ¬µ¿⌐, ó¼ÑßΓ«
- 16 ¿¡ßΓαπ¬µ¿⌐, ¬«Γ«αδÑ »«ΓαÑí«ó὿ß∞ íδ ñ½∩ αáºñѽ∞¡«ú« ß«σαá¡Ñ-
- ¡¿∩ ¿ ¿ºó½ÑτÑ¡¿∩ αÑú¿ßΓα«ó. (ìÑ ºáíδóá⌐ΓÑ ñ½∩ αáºαÑΦÑ¡¿∩ ¿ß»«½∞-
- º«óá¡¿∩ ߻ѵ¿á½∞¡δσ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80186 π¬áºδóáΓ∞ ñ¿αѬ-
- Γ¿óπ .186.)
-
- ôτΓ¿ΓÑ, τΓ« ¿¡ßΓαπ¬µ¿∩ PUSHA óδ»«½¡∩ÑΓß∩ íδßΓαÑÑ, τѼ ó«-
- ßѼ∞ «Γñѽ∞¡δσ ¿¡ßΓαπ¬µ¿⌐ PUSH, ¡« ¼Ññ½Ñ¡¡ÑÑ, τѼ Γα¿ ¿½¿ τÑΓδαÑ
- ¿¡ßΓαπ¬µ¿¿ PUSH. àß½¿ óδ σ«Γ¿ΓÑ ß«σαá¡¿Γ∞ Γ«½∞¬« ¡Ñ߬«½∞¬« αÑ-
- ú¿ßΓα«ó, Γ« ½πτΦÑ ßñѽáΓ∞ φΓ« ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ PUSH. Æá¬«Ñ ªÑ
- ºá¼Ñτá¡¿Ñ ¼«ª¡« ßñѽáΓ∞ «Γ¡«ß¿Γѽ∞¡« ¿¡ßΓαπ¬µ¿⌐ POPA ¿ POP.
-
- ÅÑαÑñ ¿ß»«½∞º«ó᡿Ѽ ߻ѵ¿Σ¿τÑ߬¿σ ñ½∩ »α«µÑßß«αá 80186 ¿¡ß-
- Γαπ¬µ¿⌐ (Γᬿσ, ¬á¬ PUSHA ¿ POPA) ¡Ñ ºáíπñ∞ΓÑ αáºαÑΦ¿Γ∞ ¿σ áß-
- ßÑ¼í½¿α«óá¡¿Ñ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ .186.
-
-
-
-
- TASM2 #3-5/䫬 = 103 =
-
- ê¡ßΓαπ¬µ¿¿ ENTER ¿ LEAVE
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿¿ ENTER ¿ LEAVE ¿ß»«½∞ºπεΓß∩ ñ½∩ Γ«ú«, τΓ«íδ πßΓá-
- ¡«ó¿Γ∞ ¿ «Γ¼Ñ¡¿Γ∞ úαá¡¿µδ ßΓѬá, ó ¬«Γ«αδσ »ÑαÑñáóáѼδÑ »áαá¼ÑΓαδ
- ¿ ½«¬á½∞¡δÑ ñ¿¡á¼¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ ñ«ßΓπ»¡δ «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓ-
- αá BP. ¥Γ¿ ¿¡ßΓαπ¬µ¿¿ «ß«íÑ¡¡« »«½Ñº¡δ »α¿ «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá
- ÇßßѼí½Ñαá ß ∩ºδ¬á¼¿, «α¿Ñ¡Γ¿α«óá¡¡δ¼¿ ¡á αáí«Γπ ß« ßΓѬ«¼ (¡á»-
- α¿¼Ñα, ß ∩ºδ¬«¼ æ¿). (æ¼. ú½áóπ, úñÑ ß«ñÑনΓß∩ ¿¡Σ«α¼áµ¿∩ «í «α-
- úá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá Σπ¡¬µ¿⌐ ÇßßѼí½Ñαá ß Æπαí« æ¿, »α¿½«ªÑ¡¿Ñ, ó
- ¬«Γ«α«¼ ú«ó«α¿Γß∩ «í ¿¡ΓÑαΣÑ⌐ßÑ ß Æπαí« Åα«½«ú«¼, ¿ ú½áóπ, úñÑ
- «»¿ßδóáÑΓß∩ ¿¡ΓÑαΣÑ⌐ß ß Æπαí« Åá߬á½Ñ¼, á Γá¬ªÑ »α¿½«ªÑ¡¿Ñ, »«ß-
- ó∩ΘÑ¡¡πε ¿¡ΓÑαΣÑ⌐ßπ ß Æπαí« üÑ⌐ß¿¬«¼.)
-
- ê¡ßΓαπ¬µ¿∩ ENTER ß«σαá¡∩ÑΓ αÑú¿ßΓα BP óδºδóáεΘÑ⌐ »α«úαá¼¼δ,
- πßΓá¡áó½¿óáÑΓ Ñú« Γᬿ¼ «íαẫ¼, τΓ«íδ «¡ π¬áºδóá½ ¡á ¡áτὫ »Ñ-
- αÑñáóáѼδσ »áαá¼ÑΓα«ó (Ñß½¿ «¡¿ ¿¼ÑεΓß∩) ó ¡«óδσ úαá¡¿µáσ ßΓѬá,
- πßΓá¡áó½¿óáÑΓ, ¬á¬ φΓ« ¡Ñ«íσ«ñ¿¼«, SP ñ½∩ óδñѽѡ¿∩ »α«ßΓαá¡ßΓóá
- ñ½∩ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ, ¿ ñáªÑ ¬«»¿απÑΓ í½«¬ π¬áºáΓѽÑ⌐ ¡á úαá-
- ¡¿µδ ßΓѬá ∩ºδ¬á óδß«¬«ú« πα«ó¡∩ ó ¡«óδÑ úαá¡¿µδ ßΓѬá (Ñß½¿ φΓ«
- ¡Ñ«íσ«ñ¿¼«).
-
- ê¡ßΓαπ¬µ¿∩ LEAVE ¿¼ÑÑΓ ñÑ⌐ßΓó¿Ñ, «íαáΓ¡«Ñ ¿¡ßΓαπ¬µ¿¿ ENTER,
- ¿ ó«ßßΓá¡áó½¿óáÑΓ BP ¿ SP ó Γ« ß«ßΓ«∩¡¿Ñ, ¬«Γ«α«Ñ «¡¿ ¿¼Ñ½¿ »ÑαÑñ
- óδ»«½¡Ñ¡¿Ñ¼ ß««ΓóÑΓßΓóπεΘÑ⌐ ¿¡ßΓαπ¬µ¿¿ ENTER.
-
- ìá»α¿¼Ñα, ß½ÑñπεΘá∩ ¿¡ßΓαπ¬µ¿∩ ¿ß»«½∞ºπÑΓ ENTER ñ½∩ πßΓá-
- ¡«ó¬¿ ß«ó¼ÑßΓ¿¼«⌐ ß æ¿ úαá¡¿µδ ßΓѬá (»α¿ φΓ«¼ 20 íá⌐Γ«ó αѺÑαó¿-
- απÑΓß∩ ñ½∩ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ), á ¿¡ßΓαπ¬µ¿∩ LEAVE ¿ß»«½∞ºπÑΓ-
- ß∩, τΓ«íδ «Γ¼Ñ¡¿Γ∞ úαá¡¿µπ ßΓÑ¬á ¿ ó«ßßΓá¡«ó¿Γ∞ úαá¡¿µπ ßΓѬá
- óδºδóáεΘÑú« ¬«ñá:
-
- .
- .
- SampleFunction PROC
- enter 10,1
- .
- .
- .
- leave
- ret
- SampleFunction ENDP
- .
- .
- .
-
-
- TASM2 #3-5/䫬 = 104 =
-
- ÅÑαóδ⌐ «»Ñαá¡ñ ¿¡ßΓαπ¬µ¿¿ ENTER »αÑñßΓáó½∩ÑΓ ß«í«⌐ 16-í¿Γ«-
- ó«Ñ »α«¼ÑªπΓ«τ¡«Ñ º¡áτÑ¡¿Ñ, ºáñáεΘÑÑ τ¿ß½« íá⌐Γ«ó, ºáαѺÑαó¿α«-
- óá¡¡δσ ñ½∩ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ ó ¡«ó«⌐ úαá¡¿µÑ ßΓѬá. éΓ«α«⌐
- «»Ñαá¡ñ ¿¡ßΓαπ¬µ¿¿ ENTER - φΓ« 8-í¿Γ«ó«Ñ »α«¼ÑªπΓ«τ¡«Ñ º¡áτÑ¡¿Ñ,
- ºáñáεΘÑÑ πα«óÑ¡∞ 󽫪ѡ¡«ßΓ¿ Σπ¡¬µ¿¿, ñ½∩ ¬«Γ«α«⌐ ñ«½ª¡á ß«ºñá-
- óáΓ∞ß∩ ¡«óá∩ úαá¡¿µá ßΓѬá. ¥Γ«Γ «»Ñαá¡ñ ºáñáÑΓ, ߬«½∞¬« αẠ¡πª-
- ¡« ߬«»¿α«óáΓ∞ π¬áºáΓѽ¿ úαá¡¿µδ ßΓÑ¬á ¿º úαá¡¿µ ßΓѬá óδºδóáεΘÑ-
- ú« ¬«ñá ó ¡«óδÑ úαá¡¿µδ ßΓѬá.
-
- ÄΓ¼ÑΓ¿¼, τΓ« τΓ«íδ ó«ºóαáΓ¿Γ∞ π»αáó½Ñ¡¿Ñ ó óδºδóáεΘ¿⌐ ¬«ñ,
- »«ß½Ñ ¿¡ßΓαπ¬µ¿¿ LEAVE ¡Ñ«íσ«ñ¿¼á ¿¡ßΓαπ¬µ¿∩ RET. ê¡ßΓαπ¬µ¿∩
- LEAVE «Γ¼Ñ¡∩ÑΓ ΓѬπΘπε úαá¡¿µπ ßΓѬá, ¡« ¡Ñ óδ»«½¡∩ÑΓ ó«ºóαáΓá
- π»αáó½Ñ¡¿∩.
-
- ê¡ßΓαπ¬µ¿¿ ENTER ¿ LEAVE ¡Ñ ß«σαá¡∩εΓ ¡¿¬á¬¿σ αÑú¿ßΓα«ó óδ-
- ºδóáεΘÑú« ¬«ñá. ä½∩ φΓ«⌐ µÑ½¿ ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬µ¿¿
- PUSHA ¿ POPA (¿½¿ PUSH ¿ POP).
-
-
-
-
- TASM2 #3-5/䫬 = 105 =
-
- ê¡ßΓαπ¬µ¿∩ BOUND
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩ BOUND »α«óÑα∩ÑΓ, τΓ« 16-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ ¡áσ«ñ¿Γ-
- ß∩ ó ñ¿á»áº«¡Ñ ß« º¡á¬«¼, ºáñá¡¡«¼ ñóπ¼∩ ߼Ѫ¡δ¼¿ ß½«óἿ »á¼∩Γ¿,
- »α¿ φΓ«¼ óÑασ¡∩∩ úαá¡¿µá ºá»¿ßá¡á »« áñαÑßπ, αáß»«½«ªÑ¡¡«¼π ¡Ñ-
- »«ßαÑñßΓóÑ¡¡« ¡áñ ¡¿ª¡Ñ⌐ úαá¡¿µÑ⌐. ÄíÑ úαá¡¿µδ ¿¡ΓÑα»αÑΓ¿απεΓß∩,
- ¬á¬ º¡áτÑ¡¿∩ ß« º¡á¬«¼, »«φΓ«¼π ¼«ª¡« ºáñáΓ∞ ¼á¬ß¿¼á½∞¡δ⌐ ñ¿á»á-
- º«¡ «Γ -32768 ñ« +32767 ó¬½ετ¿Γѽ∞¡«. ç¡áτÑ¡¿∩, ß«ó»áñáεΘ¿Ñ ß
- ¡¿ª¡Ñ⌐ ¿½¿ óÑασ¡Ñ⌐ úαá¡¿µÑ⌐, αáßß¼áΓα¿óáεΓß∩, ¬á¬ »α¿¡áñ½ÑªáΘ¿Ñ
- ºáñá¡¡«¼π ñ¿á»áº«¡π.
-
- ê¡ßΓαπ¬µ¿∩ BOUND ¿ß»«½∞ºπÑΓß∩ «íδτ¡« ñ½∩ Γ«ú«, τΓ«íδ »αÑ-
- ñ«ΓóαáΓ¿Γ∞ óδσ«ñ ºá úαá¡¿µδ ¼áßß¿óá. ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú-
- ¼Ñ¡ΓÑ »α«úαá¼¼δ »α«óÑα∩ÑΓß∩, ¡áσ«ñ¿Γß∩ ½¿ º¡áτÑ¡¿Ñ αÑú¿ßΓαá BX ó
- ñ¿á»áº«¡Ñ «Γ 0 ñ« 99 ó¬½ετ¿Γѽ∞¡« »ÑαÑñ ¿ß»«½∞º«ó᡿Ѽ Ñú« ó ¬á-
- τÑßΓóÑ ¿¡ñѬßá ó 100-íá⌐Γ«ó«¼ ¼áßß¿óÑ TestArray.
-
- .
- .
- .
- .DATA
- TestArrayBounds LABEL DWORD
- DW 0 ; ¡¿ª¡∩∩ úαá¡¿µá ¼áßß¿óá
- DW 99 ; óÑασ¡∩∩ úαá¡¿µá ¼áßß¿óá
- TestArray DB 100 DUP (?)
- .
- .
- .
- .CODE
- .
- .
- .
- mov ax,@Data
- mov ds,ax
- .
- .
- .
- bound bx,[TestArrayBounds]
- mov al,[TestArray+bx]
- .
- .
- .
-
- àß½¿ º¡áτÑ¡¿Ñ αÑú¿ßΓαá BX ¡Ñ ¡áσ«ñ¿Γß∩ ó ºáñá¡¡«¼ ñ¿á»áº«¡Ñ,
- Γ« úÑ¡Ñα¿απÑΓß∩ »αÑαδóá¡¿Ñ INT 5. ÅÑαÑñ ¿ß»«½∞º«ó᡿Ѽ ¿¡ßΓαπ¬µ¿¿
-
- TASM2 #3-5/䫬 = 106 =
-
- BOUND ñ«½ªÑ¡ íδΓ∞, ¬«¡Ñτ¡«, πßΓá¡«ó½Ñ¡ ñαá⌐óÑα »αÑαδóá¡¿⌐.
-
- ÅÑαóδ⌐ «»Ñαá¡ñ ¿¡ßΓαπ¬µ¿¿ BOUND »αÑñßΓáó½∩ÑΓ ß«í«⌐ 16-αáº-
- α∩ñ¡δ⌐ αÑú¿ßΓα «íΘÑú« ¡áº¡áτÑ¡¿∩, ß«ñÑαªáΘ¿⌐ »α«óÑα∩Ѽ«Ñ º¡áτÑ-
- ¡¿Ñ. éΓ«α«⌐ «»Ñαá¡ñ ¿¡ßΓαπ¬µ¿¿ BOUND - φΓ« ñó«⌐¡«Ñ ß½«ó«, ß«ñÑα-
- ªáΘÑÑ ñ¿á»áº«¡. ¥Γ« ñó«⌐¡«Ñ ß½«ó« ß«ñÑαª¿Γ 16-í¿Γ«óπε ¡¿ª¡εε
- úαá¡¿µπ ó ¼½áñΦѼ ß½«óÑ ¿ 16-í¿Γ«óπε óÑασ¡εε úαá¡¿µπ ß« º¡á¬«¼ ó
- ¬áτÑßΓóÑ ßΓáαΦÑú« ß½«óá.
-
- ÄΓ¡«ß¿Γѽ∞¡« ¿¡ßΓαπ¬µ¿¿ BOUND ß½ÑñπÑΓ ßñѽáΓ∞ «ñ¡« ºá¼Ñτá-
- ¡¿Ñ: π¬áºáΓѽ∞ ¿¡ßΓαπ¬µ¿⌐, ºá¡«ß¿¼δ⌐ ó ßΓѬ »α¿ úÑ¡Ñαᵿ¿ »αÑαδ-
- óá¡¿∩ INT 5 »α¿ óδσ«ñÑ »α«óÑα∩Ѽ«ú« º¡áτÑ¡¿∩ ºá úαá¡¿µδ ñ¿á»áº«-
- ¡á, π¬áºδóáÑΓ ¡á ßá¼π ¿¡ßΓαπ¬µ¿ε BOUND, á ¡Ñ ¡á ß½ÑñπεΘπε
- ¿¡ßΓαπ¬µ¿ε. àß½¿ φΓ« ¡Ñ íπñÑΓ ß¬«ααÑ¬Γ¿α«óá¡« «íαáí«Γτ¿¬«¼ »αÑαδ-
- óá¡¿∩ INT 5 »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ ¿¡ßΓαπ¬µ¿¿ IRET, Γ« Γá ªÑ ¿¡ßΓαπ¬-
- µ¿∩ BOUND ß¡«óá ßúÑ¡Ñα¿απÑΓ »αÑαδóá¡¿Ñ INT 5, ¿ Γᬠñ« íÑ߬«¡Ñτ-
- ¡«ßΓ¿. Å«φΓ«¼π «íαáí«Γτ¿¬ »αÑαδóá¡¿∩ INT 5 ñ½∩ ¿¡ßΓαπ¬µ¿⌐ BOUND
- ñ«½ªÑ¡ óδóÑßΓ¿ ß««íΘÑ¡¿Ñ ¿ ºáóÑαΦ¿Γ∞ »α«úαá¼¼π íѺ óδ»«½¡Ñ¡¿∩ ¿¡-
- ßΓαπ¬µ¿¿ IRET, ¿½¿ ߬«ααÑ¬Γ¿α«óáΓ∞ πß½«ó¿Ñ óδσ«ñá ºá úαá¡¿µδ ñ¿á-
- »áº«¡á »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ ¿¡ßΓαπ¬µ¿¿ IRET ¿ »α«ñ«½ªÑ¡¿Ñ¼ αáí«Γδ.
-
-
-
-
- TASM2 #3-5/䫬 = 107 =
-
- ê¡ßΓαπ¬µ¿¿ INS ¿ OUTS
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿¿ INS ¿ OUTS «íÑß»Ñτ¿óáεΓ φΣΣÑ¬Γ¿ó¡πε »ÑαÑñáτπ
- ñá¡¡δσ ¼Ñªñπ »«αΓἿ óó«ñá-óδó«ñá ¿ »á¼∩Γ∞ε.
-
- ê¡ßΓαπ¬µ¿∩ MOVS »ÑαѼÑΘáÑΓ «ñ¿¡ ¿½¿ í«½ÑÑ íá⌐Γ (¿½¿ ß½«ó) ¿º
- »«αΓá óó«ñá-óδó«ñá, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα DX, ó ¼áßß¿ó ó
- »á¼∩Γ¿, ¡á ¬«Γ«αδ⌐ π¬áºδóáεΓ ES:DI, πóѽ¿τ¿óá∩ DI ¡á 1 (¿½¿ ¡á 2)
- »«ß½Ñ Γ«ú«, ¬á¬ ¬áªñδ⌐ íá⌐Γ (¿½¿ ß½«ó«) íπñÑΓ »ÑαÑñá¡ (¿½¿ π¼Ñ¡∞-
- Φá∩ SI, Ñß½¿ πßΓá¡«ó½Ñ¡ Σ½áú ¡á»αáó½Ñ¡¿∩). ìá αÑú¿ßΓα DX ¿¡ßΓαπ¬-
- µ¿∩ INS ¡Ñ ó½¿∩ÑΓ. èᬠ¿ ó ß½πτáÑ óßÑσ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐, ¬«-
- Γ«αδÑ óδ»«½¡∩εΓ ºá»¿ß∞ ó »á¼∩Γ∞, ¿ß»«½∞º«óá¡¿Ñ ES ó ¬áτÑßΓóÑ
- ßÑú¼Ñ¡Γ¡«ú« αÑú¿ßΓαá µÑ½Ñó«ú« ßÑú¼Ñ¡Γá »ÑαÑ«»αÑñѽ¿Γ∞ ¡Ñ½∞º∩.
-
- ê¡ßΓαπ¬µ¿∩ OUTS »ÑαѼÑΘáÑΓ «ñ¿¡ ¿½¿ í«½ÑÑ íá⌐Γ (¿½¿ ß½«ó) ¿º
- ¼áßß¿óá ó »á¼∩Γ¿, ¡á ¬«Γ«αδ⌐ π¬áºδóáεΓ DS:SI, ó »«αΓ óó«ñá-óδó«-
- ñá, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα DX, πóѽ¿τ¿óá∩ º¡áτÑ¡¿Ñ SI ¡á 1
- (¿½¿ 2) »«ß½Ñ »ÑαÑß佬¿ ¬áªñ«ú« íá⌐Γá (¿½¿ ß½«óá), ½¿í« π¼Ñ¡∞Φá∩
- αÑú¿ßΓα SI, Ñß½¿ πßΓá¡«ó½Ñ¡ Σ½áú ¡á»αáó½Ñ¡¿∩. ìá αÑú¿ßΓα DX ¿¡ß-
- Γαπ¬µ¿∩ OUTS ¡Ñ ó½¿∩ÑΓ. æ »«¼«Θ∞ε »αÑΣ¿¬ßá »ÑαÑ«»αÑñѽѡ¿∩ ßÑú-
- ¼Ñ¡Γá ¼«ª¡« óδíαáΓ∞ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα, «Γ½¿τ¡δ⌐ «Γ αÑú¿ßΓαá DS.
- é ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ¿¡ßΓαπ¬µ¿∩ INSB (íá⌐Γ«óá∩ Σ«α¼á)
- ¿ß»«½∞ºπÑΓß∩ ñ½∩ ¬«»¿α«óá¡¿∩ 300h íá⌐Γ ó »á¼∩Γ∞ ¿º »«αΓá óó«-
- ñá-óδó«ñá 3000h, á ºáΓѼ ¿ß»«½∞ºπÑΓß∩ ¿¡ßΓαπ¬µ¿∩ OUTSB ñ½∩ ¬«»¿-
- α«óá¡¿∩ ¬«»¿α«óá¡¿∩ φΓ«ú« íá⌐Γ«ó«ú« í½«¬á ó »«αΓ óó«ñá-óδó«ñá
- 3001h:
-
- .
- .
- .
- cld
- mov ax,@Data
- mov ds,ax
- mov es,ax
- mov dx,3000h
- mov di,OFFSET Buffer
- mov cx,300h
- rep insb ; ߬«»¿α«óáΓ∞ 300 íá⌐Γ ¿º
- ; »«αΓá ó íπΣÑα
- mov dx,3001h
- mov si,OFFSET Buffer
- mov cx,300h
- rep outsb ; ߬«»¿α«óáΓ∞ 300h íá⌐Γ ¿º
- ; íπΣÑαá ó »«αΓ
- .
-
- TASM2 #3-5/䫬 = 108 =
-
- .
- .
-
-
-
-
- TASM2 #3-5/䫬 = 109 =
-
-
- ÉáßΦ¿αÑ¡¡δÑ óÑαß¿¿ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086
- -----------------------------------------------------------------
-
- é ¡áí«αÑ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80186 ¿¼ÑεΓß∩ ß½ÑñπεΘ¿Ñ αáß-
- Φ¿αÑ¡¡δÑ óÑαß¿¿ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086:
-
- IMUL ROL SAR
- PUSH ROR SHL
- RCL SAL SHR
- RCR
-
- çá¡ÑßÑ¡¿Ñ ó ßΓѬ »α«¼ÑªπΓ«τ¡δσ º¡áτÑ¡¿⌐
- -----------------------------------------------------------------
-
- é Γ« óαѼ∩ ¬á¬ »α«µÑßß«α 8086 ¼«ªÑΓ ºá¡«ß¿Γ∞ ó ßΓѬ Γ«½∞¬«
- αÑú¿ßΓα«óδÑ «»Ñαá¡ñδ ¿½¿ «»Ñαá¡ñδ ó »á¼∩Γ¿, »α«µÑßß«α 80186 ¼«ªÑΓ
- ºá¡«ß¿Γ∞ ó ¡Ñú« Γá¬ªÑ ¿ »α«¼ÑªπΓ«τ¡δÑ º¡áτÑ¡¿∩:
-
- push 19
-
- çá¡ÑßÑ¡¿Ñ ó ßΓѬ »α«¼ÑªπΓ«τ¡δσ º¡áτÑ¡¿⌐ »«½Ñº¡« ¿ß»«½∞º«óáΓ∞
- »α¿ »ÑαÑñáτ¿ ó ßΓÑ¬Ñ Σπ¡¬µ¿∩¼ »áαá¼ÑΓα«ó-¬«¡ßΓá¡Γ. ìá»α¿¼Ñα, ¬«ñ
- »α«µÑßß«αá 8086 ñ½∩ Σπ¡¬µ¿«¡á½∞¡«ú« ó맮óá æ¿:
-
- Average(5, 2);
-
- ¿¼ÑÑΓ ß½ÑñπεΘ¿⌐ ó¿ñ:
-
- mov ax,2
- push ax
- mov ax,5
- push ax
- call _Average
- add sp,4
-
- á »α¿ ¡á½¿τ¿¿ »α«µÑßß«αá 80186 Ñú« ¼«ª¡« »αÑ«íαẫóáΓ∞ ó ß½Ññπε-
- Θ¿⌐ ó¿ñ:
-
- push 2
- push 5
- call _Average
- add sp,4
-
- çá¼ÑΓ¿¼, τΓ« σ«Γ∩ »α«µÑßß«α 8086 ¡Ñ ¿¼ÑÑΓ ¿¡ßΓαπ¬µ¿¿ PUSH ß
- ¡Ñ»«ßαÑñßΓóÑ¡¡δ¼ º¡áτÑ¡¿Ñ¼, ß¿¡Γá¬ß¿ß Æπαí« ÇßßѼí½Ñαá óÑαß¿¿ 2.0
-
- TASM2 #3-5/䫬 = 110 =
-
- »«ºó«½∩ÑΓ óá¼ ºáñáΓ∞ ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ Γá¬πε ¿¡ßΓαπ¬µ¿ε. è«úñá φΓá
- ¿¡ßΓαπ¬µ¿∩ íπñÑΓ «í¡áαπªÑ¡á, «¡á ºá¼Ñ¡∩ÑΓß∩ ó «íΩÑ¬Γ¡«¼ ¬«ñÑ
- 10-íá⌐Γ«ó«⌐ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ε, ¬«Γ«αá∩ ¼«ñѽ¿απÑΓ ñá¡¡πε «»Ñαá-
- µ¿ε, ß«σαá¡∩∩ óßÑ αÑú¿ßΓαδ ¿ Σ½áú¿.
-
- æñó¿ú¿ ¿ µ¿¬½¿τÑ߬¿Ñ ßñó¿ú¿ c ¡Ñ»«ßαÑñßΓóÑ¡¡δ¼¿ º¡áτÑ¡¿∩¼¿
- -----------------------------------------------------------------
-
- é Γ« óαѼ∩ ¬á¬ »α«µÑßß«α 8086 ¼«ªÑΓ ¼«ªÑΓ Γ«½∞¬« óδ»«½¡∩Γ∞
- ßñó¿ú ¿½¿ µ¿¬½¿τÑ߬¿⌐ ßñó¿ú ¡á 1 í¿Γ ¿½¿ ¡á τ¿ß½« í¿Γ, ºáñá¡¡«Ñ ó
- αÑú¿ßΓαÑ CL, »α«µÑßß«α 80186 ¼«ªÑΓ óδ»«½¡∩Γ∞ ßñó¿ú ¿½¿ µ¿¬½¿τÑß-
- ¬¿⌐ ßñó¿ú ¡á º¡áτÑ¡¿Ñ-¬«¡ßΓá¡Γπ:
-
- .
- .
- .
- ror ax,3
- shl dl,7
- .
- .
- .
-
- ¥Γ« πñ«í¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ óδ»«½¡Ñ¡¿∩ ßñó¿ú«ó ¡á ¡Ñ߬«½∞¬«
- í¿Γ«ó íѺ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ºáúαπº¬¿ ó αÑú¿ßΓα CL ßτÑΓτ¿¬á í¿Γ. ìá»-
- α¿¼Ñα, ß½ÑñπεΘ¿⌐ ¬«ñ »α«µÑßß«αá 8086 óδ»«½¡∩ÑΓ π¼¡«ªÑ¡¿Ñ ß«ñÑন-
- ¼«ú« αÑú¿ßΓα AX ¡á 256:
-
- .
- .
- .
- mov cl,8
- shl ax,cl
- .
- .
- .
-
- æ ¿ß»«½∞º«ó᡿Ѽ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80186 φΓ« »α¿¡¿¼áÑΓ
- ó¿ñ:
-
- shl ax,8
-
- ô¼¡«ªÑ¡¿Ñ ¡á ¡Ñ»«ßαÑñßΓóÑ¡¡«Ñ º¡áτÑ¡¿Ñ
- -----------------------------------------------------------------
-
-
- TASM2 #3-5/䫬 = 111 =
-
- Åα«µÑßß«α 8086 ¼«ªÑΓ π¼¡«ªáΓ∞ Γ«½∞¬« 8- ¿½¿ 16-αáºα∩ñ¡δ⌐
- αÑú¿ßΓα ¿½¿ «»Ñαá¡ñ ó »á¼∩Γ¿ ¡á AL ¿½¿ AX, αẼÑΘá∩ αѺπ½∞ΓáΓ ó
- αÑú¿ßΓαÑ AX ¿½¿ ó »áαÑ αÑú¿ßΓα«ó DX:AX. é »α«µÑßß«αÑ 80186 »αÑ-
- ñπß¼«ΓαÑ¡δ ñóÑ ¡«óδÑ Σ«α¼δ π¼¡«ªÑ¡¿∩, ¬«Γ«αδÑ ¿ß»«½∞ºπεΓß∩, ¬«úñá
- 16-αáºα∩ñ¡«Ñ π¼¡«ªÑ¡¿Ñ íπñÑΓ αẼÑΘáΓ∞ß∩ ó 16 í¿Γáσ.
-
- Äñ¡á ¿º ¡«óδσ Σ«α¼ π¼¡«ªÑ¡¿∩ »ÑαѼ¡«ªáÑΓ 16-αáºα∩ñ¡δ⌐ αÑ-
- ú¿ßΓα ¿ 16-αáºα∩ñ¡«Ñ ¡Ñ»«ßαÑñßΓóÑ¡¡«Ñ º¡áτÑ¡¿Ñ, á αѺπ½∞ΓáΓ ß«σ-
- αá¡∩ÑΓ «íαáΓ¡« ó 16-αáºα∩ñ¡«¼ αÑú¿ßΓαÑ. ìá»α¿¼Ñα, ß½ÑñπεΘá∩ ¿¡ß-
- Γαπ¬µ¿∩ π¼¡«ªáÑΓ ß«ñÑন¼«Ñ DX ¡á 4, á »α«¿ºóÑñÑ¡¿Ñ ºá»¿ßδóáÑΓ ó
- «íαáΓ¡« ó DX:
-
- imul dx,4
-
- ÅÑαóδ⌐ «»Ñαá¡ñ, ¬«Γ«αδ⌐ ¼«ªÑΓ »αÑñßΓáó½∩Γ∞ ß«í«⌐ ½εí«⌐
- 16-αáºα∩ñ¡δ⌐ αÑú¿ßΓα «íΘÑú« ¡áº¡áτÑ¡¿∩, ∩ó½∩ÑΓß∩ «ñ¡«óαѼѡ¡« ¿ß-
- Γ«τ¡¿¬«¼ ñ½∩ «ñ¡«ú« ¿º ß«¼¡«ª¿ΓѽÑ⌐ ¿ »α¿Ñ¼¡¿¬«¼ ñ½∩ »α«¿ºóÑñÑ-
- ¡¿∩. éΓ«α«⌐ «»Ñαá¡ñ, ¬«Γ«αδ⌐ ñ«½ªÑ¡ »αÑñßΓáó½∩Γ∞ ß«í«⌐ ¡Ñ»«ßαÑñß-
- ΓóÑ¡¡«Ñ 16-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ, - φΓ« ñαπú«⌐ ß«¼¡«ª¿Γѽ∞.
-
- àΘÑ «ñ¡á ¡«óá∩ Σ«α¼á π¼¡«ªÑ¡¿∩ »ÑαѼ¡«ªáÑΓ 16-αáºα∩ñ¡δ⌐ αÑ-
- ú¿ßΓα ¿½¿ «»Ñαá¡ñ ó »á¼∩Γ¿ ¡á 16-í¿Γ«ó«Ñ ¡Ñ»«ßαÑñßΓóÑ¡¡«Ñ º¡áτÑ-
- ¡¿Ñ, ¿ ß«σαá¡∩ÑΓ αѺπ½∞ΓáΓ ó ºáñá¡¡«¼ 16-í¿Γ«ó«¼ αÑú¿ßΓαÑ. ìá»-
- α¿¼Ñα, ß½ÑñπεΘá∩ ¿¡ßΓαπ¬µ¿∩ π¼¡«ªáÑΓ ß«ñÑন¼«Ñ αÑú¿ßΓαá DX ¡á
- 600h ¿ »«¼ÑΘáÑΓ »α«¿ºóÑñÑ¡¿Ñ ó αÑú¿ßΓα CX:
-
- imul cx,dx,600h
-
- ǡὫú¿τ¡«, ß½ÑñπεΘá∩ ¿¡ßΓαπ¬µ¿∩ π¼¡«ªáÑΓ 16-αáºα∩ñ¡«Ñ º¡á-
- τÑ¡¿Ñ ó [BX+SI+1] ¡á 3 ¿ »«¼ÑΘáÑΓ »α«¿ºóÑñÑ¡¿Ñ ó αÑú¿ßΓα AX.
-
- imul ax,[bx+si+1],3
-
- é ñá¡¡«⌐ Σ«α¼Ñ ¿¡ßΓαπ¬µ¿¿ IMUL »Ñαóδ⌐ «»Ñαá¡ñ »αÑñßΓáó½∩ÑΓ
- ß«í«⌐ »α¿Ñ¼¡¿¬. ¥Γ«Γ «»Ñαá¡ñ ¼«ªÑΓ íδΓ∞ ½εíδ¼ 16-αáºα∩ñ¡δ¼ «íΘ¿¼
- αÑú¿ßΓα«¼. éΓ«α«⌐ «»Ñαá¡ñ, ¬«Γ«αδ⌐ ¼«ªÑΓ ºáñáóáΓ∞ß∩ ½εíδ¼ 16-αáº-
- α∩ñ¡δ¼ «íΘ¿¼ αÑú¿ßΓα«¼ ¿½¿ ∩τÑ⌐¬«⌐ »á¼∩Γ¿, ∩ó½∩ÑΓß∩ ¿ßΓ«τ¡¿¬«¼
- «ñ¡«ú« ¿º ß«¼¡«ª¿ΓѽÑ⌐. ÆαÑΓ¿⌐ «»Ñαá¡ñ, ¬«Γ«αδ⌐ ñ«½ªÑ¡ ºáñáóáΓ∞ß∩
- 16-í¿Γ«óδ¼ ¡Ñ»«ßαÑñßΓóÑ¡¡δ¼ º¡áτÑ¡¿Ñ¼, - φΓ« ñαπú«⌐ ß«¼¡«ª¿Γѽ∞.
-
- àß½¿ ¡Ñ¼¡«ú« »«ñπ¼áΓ∞, Γ« ßΓá¡ÑΓ ∩ß¡«, τΓ« »Ñαóá∩ ¿º ¡«óδσ
- Σ«α¼ π¼¡«ªÑ¡¿∩ - φΓ« ó ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ »«ñ¼¡«ªÑßΓó« óΓ«α«⌐ ¡«ó«⌐
- Σ«α¼δ. ìá»α¿¼Ñα, ß½ÑñπεΘá∩ ¿¡ßΓαπ¬µ¿∩:
-
- imul si,10
-
-
- TASM2 #3-5/䫬 = 112 =
-
- φΓ« »α«ßΓ« ß«¬αáΘÑ¡¡á∩ Σ«α¼á ¿¡ßΓαπ¬µ¿¿:
-
- imul si,si,10
-
- ä½∩ «íÑ¿σ ¡«óδσ Σ«α¼ ¿¡ßΓαπ¬µ¿¿ IMUL ß««ΓóÑΓßΓóπεΘ¿⌐ ΦÑßΓ-
- ¡áñµáΓ¿α¿τ¡δ⌐ ¬«ñ íπñÑΓ «ñ¿¡á¬«óδ¼. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, πñ«í¡« ¿¼ÑΓ∞
- 󫺼«ª¡«ßΓ∞ ¿ß»«½∞º«óáΓ∞ í«½ÑÑ »α«ßΓπε Σ«α¼π ¿¡ßΓαπ¬µ¿¿ IMUL ß
- ñóπ¼∩ «»Ñαá¡ñἿ, ¬«úñá «ñ¿¡ ¿ ëà ªÑ αÑú¿ßΓα ¿ß»«½∞ºπÑΓß∩ ¿ ¬á¬
- ¿ßΓ«τ¡¿¬, ¿ ¬á¬ »α¿Ñ¼¡¿¬.
-
- Åα¿ ½εí«⌐ ¿º ¡«óδσ Σ«α¼ π¼¡«ªÑ¡¿∩ ½εíá∩ τáßΓ∞ αѺπ½∞ΓáΓá,
- ¬«Γ«αá∩ ¡Ñ »«¼ÑΘáÑΓß∩ ó 16 í¿Γáσ, ΓÑα∩ÑΓß∩. àß½¿ ΓÑα∩εΓß∩ º¡áτá-
- Θ¿Ñ í¿Γδ (»αÑñ»«½áúá∩, τΓ« αѺπ½∞ΓáΓ ñ«½ªÑ¡ »αÑñßΓáó½∩Γ∞ ß«í«⌐
- º¡áτÑ¡¿Ñ ß« º¡á¬«¼), Γ« πßΓá¡áó½¿óáεΓß∩ Σ½áú¿ »ÑαÑ¡«ßá ¿ »ÑαÑ»«½-
- ¡Ñ¡¿∩. é ¡«óδσ Σ«α¼áσ «»Ñαᵿ¿ π¼¡«ªÑ¡¿∩ π¼¡«ªÑ¡¿Ñ º¡áτÑ¡¿⌐ ß«
- º¡á¬«¼ ¿ íѺº¡á¬«óδσ º¡áτÑ¡¿⌐ ¡Ñ αẽ¿τáεΓß∩, »«ß¬«½∞¬π αѺπ½∞ΓáΓ
- ¿¼ÑÑΓ ñ½¿¡π Γ«½∞¬« 16 í¿Γ«ó, ¿ ¼½áñΦ¿Ñ 16 í¿Γ«ó »α«¿ºóÑñÑ¡¿∩ (»«-
- ½πτÑ¡¡«ú« ó αѺπ½∞ΓáΓÑ »ÑαѼ¡«ªÑ¡¿∩ ¬á¬ º¡áτÑ¡¿⌐ ß« º¡á¬«¼, Γᬠ¿
- íѺº¡á¬«óδσ º¡áτÑ¡¿⌐) óßÑúñá ß«ó»áñáεΓ. æ½Ññ«óáΓѽ∞¡«, ñ½∩ «í«º-
- ¡áτÑ¡¿∩ ¡«óδσ Σ«α¼ π¼¡«ªÑ¡¿∩ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ¿¡ßΓαπ¬µ¿ε
- IMUL.
-
-
-
-
- TASM2 #3-5/䫬 = 113 =
-
- Åα«µÑßß«α 80286
- -----------------------------------------------------------------
-
- Åα«µÑßß«α 80286 íδ½ »Ñαóδ¼ »α«µÑßß«α«¼ ßÑα¿¿ iAPx86, ¬«Γ«αδ⌐
- »«ºó«½¿½ πßΓαá¡¿Γ∞ «úαá¡¿τÑ¡¿Ñ »« »á¼∩Γ¿ ó 1 ¼Ñúáíá⌐Γ, ¿ ¬«Γ«αδ⌐
- »«ññÑনóá½ Γá¬ªÑ ºáΘ¿Γπ »á¼∩Γ¿ ¿ ó¿αΓπá½∞¡πε »á¼∩Γ∞. Åα«µÑßß«α
- 80286 »«ññÑনóáÑΓ óßÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«α«ó 8089 ¿ 80186 ¿ ¬α«-
- ¼Ñ Γ«ú« »«ºó«½∩ÑΓ ¿ß»«½∞º«óáΓ∞ ñ«»«½¡¿Γѽ∞¡δÑ ¿¡ßΓαπ¬µ¿¿, «íÑß»Ñ-
- τ¿óáεΘ¿Ñ π»αáó½Ñ¡¿Ñ »á¼∩Γ∞ε ß αáºó¿Γ«⌐ áασ¿ΓѬΓπα«⌐.
-
- Åα«µÑßß«α 80286 ¿¼ÑÑΓ ñóá αѪ¿¼á «»Ñαᵿ⌐: αÑá½∞¡δ⌐ αѪ¿¼ ¿
- ºáΘ¿ΘÑ¡¡δ⌐ αѪ¿¼. Éáí«Γá »α«µÑßß«αá 80286 ó αÑá½∞¡«¼ αѪ¿¼Ñ »αá¬-
- Γ¿τÑ߬¿ á¡á½«ú¿τ¡á αáí«ΓÑ »α«µÑßß«αá 80286 («¡ «íÑß»Ñτ¿óáÑΓ Γ«Γ
- ªÑ ¡áí«α ¿¡ßΓαπ¬µ¿⌐, τΓ« ¿ »α«µÑßß«α 80186). ¥Γ« ëà αѪ¿¼, ó ¬«-
- Γ«α«¼ ó ¬«¼»∞εΓÑαÑ, ¿ß»«½∞ºπεΘѼ »α«µÑßß«α 80286 (Γᬫ¼, ¬á¬ PC
- AT Σ¿α¼δ IBM) αáí«ΓáεΓ í«½∞Φ¿¡ßΓó« »α¿¬½áñ¡δσ »α«ñπ¬Γ«ó (¡á»α¿-
- ¼Ñα, Æπαí« Åá߬á½∞ ¿½¿ Quattro) ¿ «»Ñαᵿ«¡¡á∩ ß¿ßΓѼá PC-DOS.
-
- æαÑñßΓóá π»αáó½Ñ¡¿∩ »á¼∩Γ∞ε ó »α«µÑßß«αÑ 80286 ñ«ßΓπ»¡δ
- Γ«½∞¬« ó ºáΘ¿ΘÑ¡¡«¼ αѪ¿¼Ñ. ê Γ«½∞¬« ó φΓ«¼ αѪ¿¼Ñ ¼«ª¡« «ñ¡«óαÑ-
- ¼Ñ¡¡« ºá»πßΓ¿Γ∞ ¡á óδ»«½¡Ñ¡¿Ñ ¡Ñ߬«½∞¬« ¡Ñ «¬áºδóáεΘ¿σ ó½¿∩¡¿Ñ
- ñαπú ¡á ñαπúá ºáñáτ. Åα¿ φΓ«¼ ¼«ª¡« áñαÑß«óáΓ∞ß∩ ¬ »á¼∩Γ¿, «íΩѼ
- ¬«Γ«α«⌐ »αÑóδΦáÑΓ 1 ¼Ñúáíá⌐Γ. é φΓ«¼ αѪ¿¼Ñ ¡á ¬«¼»∞εΓÑαáσ ß »α«-
- µÑßß«α«¼ 80286 αáí«ΓáÑΓ «»Ñαᵿ«¡¡á∩ ß¿ßΓѼá OS/2.
-
- ä½∩ αáí«Γδ ó ºáΘ¿ΘÑ¡¡«¼ αѪ¿¼Ñ ó »α«µÑßß«αÑ 80286 ¿ß»«½∞ºπ-
- εΓß∩ ß½ÑñπεΘ¿Ñ ¿¡ßΓαπ¬µ¿¿:
-
- CLTS LIDT LMSW
- LGDT LLDT LTR
-
- ¥Γ¿ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 80286 »αÑñ¡áº¡áτÑ¡δ Γ«½∞¬« ñ½∩ ¿ß-
- »«½∞º«óá¡¿∩ «»Ñαᵿ«¡¡«⌐ ß¿ßΓѼ«⌐. é »α¿¬½áñ¡δσ »α«úαá¼¼áσ ¡ÑΓ
- ¡Ñ«íσ«ñ¿¼«ßΓ¿ (¿ 󫺼«ª¡«ßΓ¿) ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬µ¿¿ ºáΘ¿ΘÑ¡¡«ú«
- αѪ¿¼á. êß»«½∞º«óá¡¿Ñ φΓ¿σ ¿¡ßΓαπ¬µ¿⌐ ¿ ºáΘ¿ΘÑ¡¡«ú« αѪ¿¼á »α«-
- µÑßß«αá 80286 ó «íΘѼ ß½πτáÑ ñ«ó«½∞¡« ß½«ª¡«. ¥Γπ ΓѼπ ¼δ ó ñá¡-
- ¡«¼ απ¬«ó«ñßΓóÑ «ßóÑΘáΓ∞ ¡Ñ íπñѼ.
-
- é »α«µÑßß«αÑ 80286 óóÑñÑ¡δ óóÑñÑ¡δ ñóá ñ«»«½¡¿Γѽ∞¡δσ ß«ßΓ«-
- ∩¡¿∩ ó αÑú¿ßΓαÑ Σ½áú«ó: í¿Γ 󽫪ѡ¡«⌐ ºáñáτ¿ ¿ »«½Ñ óó«ñá-óδó«ñá
- »α¿ó¿½Ñú¿α«óá¡¡«ú« πα«ó¡∩. èᬠ¿ ¿¡ßΓαπ¬µ¿¿ ºáΘ¿ΘÑ¡¡«ú« αѪ¿¼á,
- «íá í¿Γá »αÑñ¡áº¡áτÑ¡δ Γ«½∞¬« ñ½∩ ¿ß»«½∞º«óá¡¿∩ ó ß¿ßΓѼ¡«¼ »α«ú-
- αá¼¼¡«¼ «íÑß»ÑτÑ¡¿¿, »«φΓ«¼π »α¿¬½áñ¡δÑ »α«úαá¼¼¿ßΓδ ¡Ñ ñ«½ª¡δ ß
- ¡¿¼¿ αáí«ΓáΓ∞. Åα«µÑßß«α 80286 ¿¼ÑÑΓ Γá¬ªÑ ¡Ñ߬«½∞¬« ¡«óδσ αÑ-
- ú¿ßΓα«ó, ß ¬«Γ«α묨 ¼«ª¡« αáí«ΓáΓ∞ Γ«½∞¬« ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿⌐
- ºáΘ¿ΘÑ¡¡«ú« αѪ¿¼á. ¥Γ« αÑú¿ßΓα ºáñáτ¿, αÑú¿ßΓα ß½«óá ß«ßΓ«∩¡¿∩
-
- TASM2 #3-5/䫬 = 114 =
-
- ¼áΦ¿¡δ ¿ αÑú¿ßΓα Γáí½¿µδ ú½«íá½∞¡δσ ñÑß¬α¿»Γ«α«ó. Åਪ½áñ¡δ¼¿ ºá-
- ñáτἿ φΓ¿ αÑú¿ßΓαδ ¡Ñ ¿ß»«½∞ºπεΓß∩, »«φΓ«¼π ó ñá¡¡«¼ απ¬«ó«ñßΓóÑ
- ¼δ ¡Ñ íπñѼ ¿σ «»¿ßδóáΓ∞.
-
-
-
-
- TASM2 #3-5/䫬 = 115 =
-
- ÇßßÑ¼í½¿α«óá¡¿∩ ß ¿ß»«½∞º«ó᡿Ѽ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80286
- -----------------------------------------------------------------
-
- é Æπαí« ÇßßѼí½ÑαÑ αáºαÑΦ¿Γ∞ áßßÑ¼í½¿α«óá¡¿Ñ ß ¿ß»«½∞º«óá¡¿-
- Ѽ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80286 (¡ÑºáΘ¿ΘÑ¡¡δ⌐ αѪ¿¼) ¼«ª¡« ß »«-
- ¼«Θ∞ε ñ¿αÑ¬Γ¿óδ .286. (ä½∩ ß«ó¼ÑßΓ¿¼«ßΓ¿ ß í«½ÑÑ αá¡¡¿¼¿ óÑαß¿∩¼¿
- áßßѼí½Ñα«ó ó Æπαí« ÇßßѼí½ÑαÑ »«ññÑনóáÑΓß∩ Γá¬ªÑ ñ¿αÑ¬Γ¿óá
- .286æ.)
-
- çá¼ÑΓ¿¼, τΓ« ñ¿αÑ¬Γ¿óá .286 ¡Ñ∩ó¡« αáºαÑΦáÑΓ »«ññÑ᪬π óßÑσ
- ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086 ¿ 80186, Γᬠ¬á¬ »α«µÑßß«α 80286 »«ñ-
- ñÑনóáÑΓ »«½¡δ⌐ ¡áí«α ¿¡ßΓαπ¬µ¿⌐ ñ½∩ í«½ÑÑ αá¡¡¿σ »α«µÑßß«α«ó
- ßÑα¿¿ iAPx86.
-
- Å«ññÑαª¬á ¿¡ßΓαπ¬µ¿⌐ ºáΘ¿ΘÑ¡¡«ú« αѪ¿¼á »α«µÑßß«αá 80286
- αáºαÑΦáÑΓß∩ »« ñ¿αÑ¬Γ¿óÑ .286É. ê¡ßΓαπ¬µ¿¿ ¡ÑºáΘ¿ΘÑ¡¡«ú« αѪ¿¼á
- »α«µÑßß«αá 80286 Γá¬ªÑ αáºαÑΦáεΓß∩ »« ñ¿αÑ¬Γ¿óÑ .286É (¬á¬ ¿ »α¿
- óδ»«½¡Ñ¡¿¿ ñ¿αÑ¬Γ¿óδ .286).
-
- ü«½ÑÑ »«ñα«í¡á∩ ¿¡Σ«α¼áµ¿∩ «í ¿¡ßΓαπ¬µ¿∩σ »α«µÑßß«αá 80286
- ß«ñÑনΓß∩ ó â½áóÑ 3 "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá".
-
- é᪡« ºá¼ÑΓ¿Γ∞, τΓ« »α«µÑßß«αδ 8086 ¿ 80186 ¡Ñ αáß»«º¡áεΓ
- ¿¡ßΓαπ¬µ¿¿ ºáΘ¿ΘÑ¡¡«ú« αѪ¿¼á »α«µÑßß«αá 80286. é ¿Γ«úÑ óßÑ »α«ú-
- αá¼¼δ, ¬«Γ«αδÑ ¿¡ßΓαπ¬µ¿¿ ºáΘ¿ΘÑ¡¡«ú« αѪ¿¼á, ¡á »α«µÑßß«αáσ 8086
- ¿ 80186 αáí«ΓáΓ∞ ¡Ñ íπñπΓ. Äñ¡á¬« »α«µÑßß«α 80386 »«ññÑনóáÑΓ
- ¬á¬ ¿¡ßΓαπ¬µ¿¿ ºáΘ¿ΘÑ¡¡«ú« αѪ¿¼á »α«µÑßß«αá 80286, Γᬠ¿ ¿¡ß-
- Γαπ¬µ¿¿ ¡ÑºáΘ¿ΘÑ¡¡«ú« αѪ¿¼á.
-
-
-
-
- TASM2 #3-5/䫬 = 116 =
-
-
- Åα«µÑßß«α 80386
- -----------------------------------------------------------------
-
- Åα«µÑßß«α 80386 »αÑñßΓáó½∩ÑΓ ß«í«⌐ º¡áτ¿Γѽ∞¡πε óÑσπ ó φó«-
- ½εµ¿¿ ¼¿¬α«¬«¼»∞εΓÑα«ó, «íÑß»Ñτ¿óá∩ ¡«óδÑ ¿ αáßΦ¿αÑ¡¡δÑ ¿¡ßΓαπ¬-
- µ¿¿, αáßΦ¿αÑ¡¡δ⌐ ¡áí«α 32-αáºα∩ñ¡δσ αÑú¿ßΓα«ó, ½¿¡Ñ⌐¡δÑ ßÑú¼Ñ¡Γδ
- αẼÑα«¼ ñ« 4 ú¿úáíá⌐Γ ¿ 󫺼«ª¡«ßΓ∞ φ¼π½¿α«óáΓ∞ «ñ¡«óαѼѡ¡πε
- αáí«Γπ ¡Ñ߬«½∞¬¿σ »α«µÑßß«α«ó 8086, íδßΓαδÑ ßñó¿ú¿ ¿ µ¿¬½¿τÑ߬¿Ñ
- ßñó¿ú¿, ßΓαá¡¿τ¡πε »á¼∩Γ∞, í«½∞Φπε ߬«α«ßΓ∞ Γá⌐¼Ñαá, τѼ ¡á »αÑ-
- ñδñπΘ¿σ »α«µÑßß«αáσ ßѼÑ⌐ßΓóá iAPx86 (τΓ« »α¿ó«ñ¿Γ ¬ í«½∞ΦÑ⌐ ߬«-
- α«ßΓ¿ αáí«Γδ) ¿ Γ.ñ. èᬠóδ ¼«ªÑΓÑ ºá¼ÑΓ¿Γ∞, ñ½∩ »«ññÑ᪬¿ óßÑσ
- 󫺼«ª¡«ßΓÑ⌐ »α«µÑßß«αá 80386 ¡Ñ«íσ«ñ¿¼« ¿ß»«½∞º«óáΓ∞ óßÑ αáßΦ¿-
- αÑ¡¿∩ ∩ºδ¬á ÇßßѼí½Ñαá ñ½∩ »α«µÑßß«α«ó 8086/80186/80286. Æπαí«
- ÇßßѼí½Ñα «íÑß»Ñτ¿óáÑΓ »«½¡δ⌐ ¡áí«α αáßΦ¿αÑ¡¿⌐ »α«µÑßß«αá 80386,
- »«ññÑনóá∩ óßÑ Ñú« αѪ¿¼δ ¿ ßαÑñßΓóá.
-
- Åα«µÑßß«α 80386 - φΓ« αáºó¿Γδ⌐ »α«µÑßß«α, ¡á ¡Ñ߬«½∞¬« »«-
- α∩ñ¬«ó í«½ÑÑ ß½«ª¡δ⌐, τѼ »α«µÑßß«α 8086, »«φΓ«¼π ¼δ ¡Ñ ß¼«ªÑ¼
- ºñÑß∞ «σóáΓ¿Γ∞ óßÑ á߻ѬΓδ »α«úαá¼¼¿α«óá¡¿∩ ñ½∩ »α«µÑßß«αá 80386.
- Äñ¡á¬« ¼δ αáßß¼«Γα¿¼, ¬á¬πε »«ññÑ᪬π »α«µÑßß«αá 80386 «íÑß»Ñτ¿-
- óáÑΓ Æπαí« ÇßßѼí½Ñα.
-
- éδí«α αѪ¿¼á áßßÑ¼í½¿α«óá¡¿∩ ñ½∩ »α«µÑßß«αá 80386
- -----------------------------------------------------------------
-
- èᬠ¿ »α«µÑßß«α 80286, »α«µÑßß«α 80386 ¿¼ÑÑΓ ñóá Γ¿»á ¿¡ß-
- Γαπ¬µ¿⌐ - »α¿ó¿½Ñú¿α«óá¡¡δÑ ¿ ¡Ñ»α¿ó¿½Ñú¿α«óá¡¡δÑ. ìÑ»α¿ó¿½Ñú¿α«-
- óá¡¡δÑ ¿¡ßΓαπ¬µ¿¿ ¼«ªÑΓ óδ»«½¡∩Γ∞ ½εíá∩ »α«úαá¼¼á. Äñ¡á¬« »α¿ó¿-
- ½Ñú¿α«óá¡¡δÑ ¿¡ßΓαπ¬µ¿¿ ¼«ªÑΓ óδ»«½¡∩Γ∞ Γ«½∞¬« »α«úαá¼¼á,
- óδ»«½¡∩εΘá∩ß∩ ¡á ΓѬπΘѼ πα«ó¡Ñ »α¿«α¿ΓÑΓá 0 (¡á¿í«½ÑÑ »α¿ó¿½Ñú¿-
- α«óá¡¡δ⌐ πα«óÑ¡∞). Åα¿ó¿½Ñú¿α«óá¡¡δÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 80386
- »αÑñßΓáó½∩εΓ ß«í«⌐ αáßΦ¿αÑ¡¿Ñ ¼¡«ªÑßΓóá »α¿ó¿½Ñú¿α«óá¡¡δσ ¿¡ß-
- Γαπ¬µ¿⌐ »α«µÑßß«αá 80286 (¿¡ßΓαπ¬µ¿¿ ºáΘ¿ΘÑ¡¡«ú« αѪ¿¼á) ¿ ΓᬪÑ
- »αÑñ¡áº¡áτÑ¡δ Γ«½∞¬« ñ½∩ ¿ß»«½∞º«óá¡¿∩ «»Ñαᵿ«¡¡«⌐ ß¿ßΓѼ«⌐.
-
- Å«ññÑαª¬á ¡Ñ»α¿ó¿½Ñú¿α«óá¡¡δσ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80386
- αáºαÑΦáÑΓß∩ »« ñ¿αÑ¬Γ¿óÑ .386. (ä½∩ ß«ó¼ÑßΓ¿¼«ßΓ¿ ß í«½ÑÑ αá¡¡¿¼¿
- áßßѼí½ÑαἿ Æπαí« ÇßßѼí½Ñα »«ññÑনóáÑΓ Γá¬ªÑ ñ¿αÑ¬Γ¿óπ .386æ,
- ¬«Γ«αá∩ Γá¬ªÑ αáºαÑΦáÑΓ áßßÑ¼í½¿α«óá¡¿Ñ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá
- 80386.)
-
- çá¼ÑΓ¿¼, τΓ« ñ¿αÑ¬Γ¿óá .386 ¡Ñ∩ó¡« αáºαÑΦáÑΓ Γá¬ªÑ ¿ß»«½∞º«-
- óá¡¿Ñ óßÑσ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086 ¿ 80186, ¿, ¬α«¼Ñ Γ«ú«,
- óßÑσ ¡Ñ»α¿ó¿½Ñú¿α«óá¡¡δσ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80286, »«ß¬«½∞¬π
- »α«µÑßß«α 80386 »«ññÑনóáÑΓ óÑß∞ ¡áí«α ¿¡ßΓαπ¬µ¿⌐ í«½ÑÑ αá¡¡¿σ
-
- TASM2 #3-5/䫬 = 117 =
-
- »α«µÑßß«α«¼ ßÑα¿¿ iAPx86. êß»«½∞º«óá¡¿Ñ ¡Ñ»α¿ó¿½Ñú¿α«óá¡¡δσ ¿¡ß-
- Γαπ¬µ¿⌐ »α«µÑßß«αá 80386 αáºαÑΦáÑΓß∩ Γá¬ªÑ ¿ »« ñ¿αÑ¬Γ¿óÑ .386É
- (¬á¬ ¿ »α¿ óδ»«½¡Ñ¡¿¿ ñ¿αÑ¬Γ¿óδ .386). Æá¬ ¬á¬ »α«µÑßß«α 80386
- »«ññÑনóáÑΓ óßÑ »α¿ó¿½Ñú¿α«óá¡¡δÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 80286,
- ñ¿αÑ¬Γ¿óá .386É ¡Ñ∩ó¡« αáºαÑΦáÑΓ »«ññÑ᪬π óßÑσ »α¿ó¿½Ñú¿α«óá¡¡δσ
- ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80286.
-
-
-
-
- TASM2 #3-5/䫬 = 118 =
-
- ì«óδÑ Γ¿»δ ßÑú¼Ñ¡Γ«ó
- -----------------------------------------------------------------
-
- 髺¼«ª¡«ßΓ∞ »α«µÑßß«αá 80386 »«ññÑনóáΓ∞ ßÑú¼Ñ¡Γδ αẼÑα«¼
- 64è (¬á¬ ó »α«µÑßß«αÑ 80286) ¿½¿ ½¿¡Ñ⌐¡δÑ ßÑú¼Ñ¡Γδ ñ« 4 ú¿úáíá⌐Γ
- »«ΓαÑí«óá½á ñóπσ ¡«óδσ Γ¿»«ó ßÑú¼Ñ¡Γ«ó - USE16 ¿ USE32.
-
- Åα¿ ßßδ½¬Ñ ¡á ßÑú¼Ñ¡Γ αẼÑα«¼ 64è 16-αáºα∩ñ¡«Ñ ß¼ÑΘÑ¡¿Ñ ¼«-
- ªÑΓ σαá¡¿Γ∞ß∩ ½¿í« ó íáº«ó«¼ ¿½¿ ¿¡ñѬߡ«¼ αÑú¿ßΓαÑ (BX, SI, DI
- ¿½¿ BP), ½¿í« ¿ß»«½∞º«óáΓ∞ß∩ ó ¬áτÑßΓóÑ ¡Ñ»«ßαÑñßΓóÑ¡¡«ú« ß¼ÑΘÑ-
- ¡¿∩. é φΓ«¼ αѪ¿¼Ñ αáí«ΓáÑΓ »α«µÑßß«α 80286 (¿ 8086). é »α«µÑßß«-
- αÑ 80386 ßÑú¼Ñ¡Γá¼, ¿¼ÑεΘ¿¼ ¼á¬ß¿¼á½∞¡δ⌐ αẼÑα 64è, ñáÑΓß∩ Γ¿»
- ¿ß»«½∞º«óá¡¿∩ USE16, ¡á»α¿¼Ñα:
-
- .386
- .
- .
- .
- DataSeg Segment USE16
- Var1 DW ?
- Ptr1 DW Var1
- DataSeg ENDS
- .
- .
- .
- CodeSeg SEGMENT USE16
- ASSUME CS:CodeSeg
- mov ax,DataSeg
- mov fs,ax
- ASSUME FS:DataSeg
- mov [Var1],0 ; πßΓá¡«ó¿Γ∞ Var1 ó º¡áτÑ¡¿Ñ 0
- mov bx,[Ptr1] ; ºáúαπº¿Γ∞ 16-αáºα∩ñ¡δ⌐
- ; π¬áºáΓѽ∞ ¡á Var1
- inc WORD PTR fs:[bx] ; πóѽ¿τ¿Γ∞ º¡áτÑ¡¿Ñ Var1
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
-
- ÄΓ¼ÑΓ¿¼ ¿ß»«½∞º«óá¡¿Ñ FS - «ñ¡«ú« ¿º ñóπσ ñ«»«½¡¿Γѽ∞¡δσ
- ßÑú¼Ñ¡Γ«ó (¡áα∩ñπ ß GS) »α«µÑßß«αá 80386.
-
- ÄΓ¼ÑΓ¿¼ ΓᬪÑ, τΓ« ß¼ÑΘÑ¡¿Ñ σαá¡¿Γß∩ ó ½εí«¼ ¿º «íΘ¿σ
-
- TASM2 #3-5/䫬 = 119 =
-
- 32-αáºα∩ñ¡δσ αÑú¿ßΓα«ó »α«µÑßß«αá 80386 ¿ ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩
- ñ½∩ áñαÑßᵿ¿ ¬ ßÑú¼Ñ¡Γπ USE16, Ñß½¿ Ñß½¿ óѽ¿τ¿¡á ß¼ÑΘÑ¡¿∩ ¡Ñ
- »αÑóδΦáÑΓ 0FFFFh (65535).
-
- ä½∩ ßß佬¿ ¡á ½εíπε ∩τÑ⌐¬π ó 4-ú¿úáíá⌐Γ«ó«¼ ßÑú¼Ñ¡ΓÑ ¡πª¡«
- ¿ß»«½∞º«óáΓ∞ 32-αáºα∩ñ¡«Ñ ß¼ÑΘÑ¡¿Ñ ºá»¿ßá¡¡«Ñ ó ½εí«¼ ¿º 32-αáº-
- α∩ñ¡δσ αÑú¿ßΓα«ó ¿½¿ π¬áºδóáѼ«Ñ ¡Ñ»«ßαÑñßΓóÑ¡¡«. æÑú¼Ñ¡Γá¼ »α«-
- µÑßß«αá 80386, ¬«Γ«αδÑ ¿¼ÑεΓ ¼á¬ß¿¼á½∞¡πε ñ½¿¡π 4 ú¿úáíá⌐Γá, ñá-
- ÑΓß∩ Γ¿» USE32, ¡á»α¿¼Ñα:
-
- .386
- .
- .
- .
- BigDataSeg SEGMENT USE32
- Var1 DW ?
- Ptr1 DD Var1
- BigDataSeg ENDS
- .
- .
- .
- CodeSeg SEGMENT USE16
- ASSUME CS:CodeSeg
- mov ax,BigDataSeg
- mov fs,ax
- ASSUME FS:BigDataSeg
- mov [Var1],0 ; πßΓá¡«ó¿Γ∞ Var1 ó º¡áτÑ¡¿Ñ 0
- mov eax,[Ptr1] ; ºáúαπº¿Γ∞ 32-αáºα∩ñ¡δ⌐
- ; π¬áºáΓѽ∞ ¡á Var1
- inc WORD PTR fs:[eax] ; πóѽ¿τ¿Γ∞ º¡áτÑ¡¿Ñ Var1
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
-
- ÄΓ¼ÑΓ¿¼ ¿ß»«½∞º«óá¡¿Ñ ó ¬áτÑßΓóÑ π¬áºáΓѽ∩ αÑú¿ßΓαá EAX.
- Åα«µÑßß«α 80386 »«ºó«½∩ÑΓ ¿ß»«½∞º«óáΓ∞ ó ¬áτÑßΓóÑ íẫó«ú« αÑ-
- ú¿ßΓαá ¿½¿ ó ¿¡ñѬߡ«ú« αÑú¿ßΓαá óßÑ ó«ßѼ∞ 32-αáºα∩ñ¡δσ «íΘ¿σ
- αÑú¿ßΓα«ó (EAX, EBX, ECX, EDX, ESI, EDI, EBP ¿ ESP). (ü«½ÑÑ »«ñ-
- α«í¡« ß¼. ñá½ÑÑ ó αáºñÑ½Ñ "ì«óδÑ αѪ¿¼δ áñαÑßᵿ¿").
-
- ä½∩ »ÑαÑ«»αÑñѽѡ¿∩ ¿ß»«½∞ºπѼ«ú« »« π¼«½τá¡¿ε αẼÑαá ß¼Ñ-
- ΘÑ¡¿∩ ñá¡¡«ú« «»Ñαá¡ñá ¼«ª¡« ¿ß»«½∞º«óáΓ∞ «»Ñαᵿ¿ SMALL ¿ LARGE.
-
- TASM2 #3-5/䫬 = 120 =
-
- Ä»Ñαᵿ∩ SMALL »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« íπñÑΓ ¿ß»«½∞º«óáΓ∞ß∩ 16-αáº-
- α∩ñ¡«Ñ ß¼ÑΘÑ¡¿Ñ, á LARGE óδ¡πªñáÑΓ ¿ß»«½∞º«óáΓ∞ 32-αáºα∩ñ¡«Ñ ß¼Ñ-
- ΘÑ¡¿Ñ. ìá»α¿¼Ñα:
-
- .386
- .
- .
- .
- CodeSeg SEGMENT USE16
- ASSUME CS:CodeSeg
- mov ax,DateSeg
- mov ds,ax
- ASSUME DS:DataSeg
- mov ax,[LARGE TestLoc]
- .
- .
- .
- CodeSeg ENDS
-
- .
- .
- .
- DataSeg SEGMENT USE32
- TestLoc DW 0
- DataSeg ENDS
- .
- .
- .
-
- çñÑß∞ πß»ÑΦ¡« ¿ß»«½∞ºπÑΓß∩ «»ÑαѪáεΘá∩ ßßδ½¬á ¡á TestLoc
- (σ«Γ∩ TestLoc ¡áσ«ñ¿Γß∩ ó ßÑú¼Ñ¡ΓÑ USE32). Åα¿ φΓ«¼ «»Ñαᵿ∩
- LARGE »α¿¼Ñ¡∩ÑΓß∩ ñ½∩ Γ«ú«, τΓ«íδ ßßδ½¬á ¡á TestLoc «ßπΘÑßΓó½∩-
- ½áß∞ ß »«¼«Θ∞ε 32-í¿Γ«ó«ú« ß¼ÑΘÑ¡¿∩. üѺ »ÑαÑ«»αÑñѽѡ¿∩ LARGE
- ºñÑß∞ úÑ¡Ñα¿α«óá½áß∞ íδ «Φ¿í¬á, Γᬠ¬á¬ ÇßßѼí½Ñα »αÑñ»«½áúáÑΓ,
- τΓ« ñ½∩ «»ÑαѪáεΘÑ⌐ ßß佬¿ ó ßÑú¼Ñ¡ΓÑ CodeSeg Γ¿»á USE16 ¿ß»«½∞-
- ºπÑΓß∩ 16-αáºα∩ñ¡«Ñ ß¼ÑΘÑ¡¿Ñ.
-
- ìá ßἫ¼ ñÑ½Ñ ñÑ⌐ßΓó¿Ñ «»Ñαᵿ⌐ SMALL ¿ LARGE í«½ÑÑ Γ«¡¬«Ñ,
- τѼ »α«ßΓ«⌐ óδí«α ¼Ñªñπ 16 ¿ 32-αáºα∩ñ¡δ¼ αẼÑα«¼ ß¼ÑΘÑ¡¿∩. Ä»Ñ-
- αᵿ∩ SMALL π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ñá¡¡πε ¿¡ßΓαπ¬µ¿ε
- ¡πª¡« áßßÑ¼í½¿α«óáΓ∞ ß ¿ß»«½∞º«ó᡿Ѽ 16-αáºα∩ñ¡δσ αѪ¿¼«ó áñαÑ-
- ßᵿ¿ »α«µÑßß«αá 8086, ß »«¼«Θ∞ε ¬«Γ«αδσ ¼«ª¡« áñαÑß«óáΓ∞ß∩ Γ«½∞-
- ¬« ¬ 64è »á¼∩Γ¿. æ ñαπú«⌐ ßΓ«α«¡δ, «»Ñαᵿ∩ LARGE π¬áºδóáÑΓ Æπαí«
- ÇßßѼí½Ñαπ, τΓ« ñá¡¡πε ¿¡ßΓαπ¬µ¿ε ¡πª¡« áßßÑ¼í½¿α«óáΓ∞ ß ¿ß»«½∞-
- º«ó᡿Ѽ ¡«óδσ 32-αáºα∩ñ¡δσ αѪ¿¼«ó áñαÑßᵿ¿ (ß¼. ñá½ÑÑ αáºñѽ
- "ì«óδÑ αѪ¿¼δ áñαÑßᵿ¿"), ß »«¼«Θ∞ε ¬«Γ«αδσ ¼«ª¡« áñαÑß«óáΓ∞ß∩ ¬
-
- TASM2 #3-5/䫬 = 121 =
-
- 4 ú¿úáíá⌐Γá¼ »á¼∩Γ¿.
-
- ìá»α¿¼Ñα, ¬«ñ:
-
- .
- .
- .
- .386
- CodeSeg SEGMENT USE16
- .
- .
- .
- mov ax,[SMALL ebx+esi+1]
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
-
- áßßÑ¼í½¿απÑΓß∩ ¬ ó¿ñπ:
-
- mov ax,[bx+si+1]
-
- çñÑß∞ «»Ñαᵿ∩ SMALL π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡«
- ¿ß»«½∞º«óáΓ∞ 16-αáºα∩ñ¡δÑ αѪ¿¼δ áñαÑßᵿ¿ »α«µÑßß«αá 8086, »«φ-
- Γ«¼π ó¼ÑßΓ« EBX ¿ ESI ó áßßÑ¼í½¿απѼ«¼ ¬«ñÑ ¿ß»«½∞ºπεΓß∩ αÑú¿ßΓαδ
- BX ¿ SI. Äñ¡á¬« ¬«ñ:
-
- .
- .
- .
- .386
- CodeSeg SEGMENT USE16
- .
- .
- .
- mov ax,[SMALL eax+ecx+1]
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
-
- TASM2 #3-5/䫬 = 122 =
-
-
- áßßÑ¼í½¿α«óáΓ∞ß∩ ¡Ñ íπñÑΓ, Γᬠ¬á¬ óδαáªÑ¡¿Ñ EAX+ECX+1 ¡Ñ ∩ó½∩ÑΓ-
- ß∩ ñ«»πßΓ¿¼δ¼ 16-αáºα∩ñ¡δ¼ αѪ¿¼«¼ áñαÑßᵿ¿. (æ ñαπú«⌐ ßΓ«α«¡δ,
- ¬á¬ óδ πó¿ñ¿ΓÑ ó αáºñÑ½Ñ "ì«óδÑ αѪ¿¼δ áñαÑßᵿ¿", EAX+ECX+1
- »αÑñßΓáó½∩ÑΓ ß«í«⌐ ñ«»πßΓ¿¼δ⌐ 32-αáºα∩ñ¡δ⌐ αѪ¿¼ áñαÑßᵿ¿.)
-
- ü«½ÑÑ »«ñα«í¡« «í «»Ñαᵿ∩σ SMALL ¿ LARGE ¿ «í ¿σ óºá¿¼«-
- ñÑ⌐ßΓó¿¿ ß ßÑú¼Ñ¡ΓἿ USE16 ¿ USE32 αáß߬áºδóáÑΓß∩ ñá½ÑÑ ó αáºñÑ-
- ½Ñ "æ¼ÑΦá¡¡«Ñ ¿ß»«½∞º«óá¡¿Ñ 16- ¿ 32-αáºα∩ñ¡δσ ¿¡ßΓαπ¬µ¿⌐ ¿ ßÑú-
- ¼Ñ¡Γ«ó". é φΓ«¼ αáºñÑ½Ñ Γá¬ªÑ »«∩ß¡∩ÑΓß∩ óδí«α ßÑú¼Ñ¡Γ«ó USE16 ¿
- USE32.
-
- é ßó∩º¿ ß ¿ß»«½∞º«ó᡿Ѽ ßÑú¼Ñ¡Γ«ó USE16 ¿ USE32 󫺡¿¬áÑΓ
- «τÑ¡∞ ó᪡δ⌐ ó«»α«ß, ¬áßáεΘ¿⌐ß∩ αẼÑαá ¬«ßóÑ¡¡δσ »ÑαÑσ«ñ«ó. îδ
- ¬«ß¡Ñ¼ß∩ φΓ«ú« ó«»α«ßá ñá½ÑÑ ó αáºñÑ½Ñ "32-αáºα∩ñ¡δ⌐ π¬áºáΓѽ∞
- ¿¡ßΓαπ¬µ¿⌐".
-
- àß½¿ »α¿ «»αÑñѽѡ¿¿ ßÑú¼Ñ¡Γá ¡Ñ ºáñá¡« ¡¿ USE32, ¡¿ USE16,
- Γ« »α¿ áßßÑ¼í½¿α«óá¡¿¿ ñ½∩ 80386 óßÑúñá »«ñαáºπ¼ÑóáÑΓß∩ USE32.
-
-
-
-
- TASM2 #3-5/䫬 = 123 =
-
- ô»α«ΘÑ¡¡δÑ ßÑú¼Ñ¡Γ¡δÑ ñ¿αÑ¬Γ¿óδ ¿ Γ¿»δ ßÑú¼Ñ¡Γ«ó ñ½∩ 80386
- -----------------------------------------------------------------
-
- àß½¿ óδ ¿ß»«½∞ºπÑΓÑ ¿ ñ¿αÑ¬Γ¿óπ .386, ¿ π»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ
- «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, Γ« »« π¼«½τá¡¿ε ßÑú¼Ñ¡Γδ óδαáó¡¿óáεΓß∩ ¡á
- úαá¡¿µπ ñó«⌐¡«ú« ß½«óá (DWORD). ¥Γ« ¿¼ÑÑΓ ß¼δß½, Ñß½¿ πτÑßΓ∞, τΓ«
- ¬«¼»∞εΓÑαδ, ó ¬«Γ«αδσ ¿ß»«½∞ºπÑΓß∩ »α«µÑßß«α 80386 íδßΓαÑÑ αáí«-
- ΓáεΓ ß ñá¡¡δ¼¿, óδα«ó¡Ñ¡¡δ¼¿ ¡á úαá¡¿µπ ñó«⌐¡«ú« ß½«óá.
-
- è«úñá óδ ¿ß»«½∞ºπÑΓÑ π»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú-
- ¼Ñ¡Γ«ó, Æπαí« ÇßßѼí½Ñα úÑ¡Ñα¿απÑΓ ßÑú¼Ñ¡Γδ USE32, Ñß½¿ ñ¿αÑ¬Γ¿óá
- .386 π¬áºá¡á »ÑαÑñ ñ¿αÑ¬Γ¿ó«⌐ .MODEL, ¿ ßÑú¼Ñ¡Γδ USE16, Ñß½¿ ñ¿-
- αÑ¬Γ¿óá .386 π¬áºá¡á »«ß½Ñ ñ¿αÑ¬Γ¿óδ .MODEL. ìá»α¿¼Ñα, ó ß½Ññπε-
- ΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ß«ºñáÑΓß∩ 32-í¿Γ«óδ⌐ ¬«ñ ¿ ßÑú¼Ñ¡Γδ ñá¡-
- ¡δσ:
-
- .386
- DOSSEG
- .MODEL LARGE
- .DATA
- .
- .
- .
- .CODE
- .
- .
- .
-
- á ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ ß«ºñáεΓß∩ 16-í¿Γ«óδ⌐ ¬«ñ ¿ ßÑú¼Ñ¡Γδ:
-
- DOSSEG
- .MODEL LARGE
- .386
- .DATA
- .
- .
- .CODE
- .
- .
-
- 48-í¿Γ«óδ⌐ Γ¿» ñá¡¡δσ FWORD
- -----------------------------------------------------------------
-
- ê¡ΓÑαÑß¡δ⌐ ¼«¼Ñ¡Γ ó ¿ß»«½∞º«óá¡¿¿ ßÑú¼Ñ¡Γ«ó USE32 ß«ßΓ«¿Γ ó
-
- TASM2 #3-5/䫬 = 124 =
-
- Γ«¼, τΓ« αẼÑα π¬áºáΓѽ∩ ñá½∞¡Ñú« Γ¿»á (Γ« ÑßΓ∞ »«½¡«ú« π¬áºáΓÑ-
- ½∩ ó Σ«α¼Ñ "ßÑú¼Ñ¡Γ:ß¼ÑΘÑ¡¿Ñ") ¡á ∩τÑ⌐¬π ó ßÑú¼Ñ¡ΓÑ USE32 ºá¡¿¼á-
- ÑΓ 6 íá⌐Γ, á ¡Ñ «íδτ¡δÑ 4 íá⌐Γá, Γᬠ¬á¬ ß¼ÑΘÑ¡¿∩ ó ßÑú¼Ñ¡ΓÑ
- USE32 ¿¼ÑεΓ αẼÑα 32 í¿Γá. ìá»α¿¼Ñα, »α¿ ¿ß»«½∞º«óá¡¿¿ ó ßÑú¼Ñ¡-
- ΓÑ USE16 ñá½∞¡¿⌐ π¬áºáΓѽ∞ ¡á íπΣÑα αẼÑα«¼ 8000h íá⌐Γ«ó ºá»¿ßδ-
- óáÑΓß∩ ó 4 íá⌐Γá ¿ ºáúαπªáÑΓß∩ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .386
- .
- .
- .
- DataSeg SEGMENT USE16
- Buffer DB 8000h DUP (?)
- BufferPtr LABEL DWORD
- DW OFFSET Buffer
- DW SEG Buffer
- DataSeg ENDS
- .
- .
- .
- CodeSeg SEGMENT USE16
- ASSUME CS:CodeSeg
- mov ax,DataSeg
- mov ds,ax
- ASSUME DS:DataSeg
- les bx[BufferPtr] ; ºáúαπªáÑΓ ó ES:BX 16-
- ; í¿Γ«óδ⌐ ßÑú¼Ñ¡Γ ¿ 16-
- ; í¿Γ«ó«Ñ ß¼ÑΘÑ¡¿Ñ Buffer
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
-
- Åα¿ ¿ß»«½∞º«óá¡¿¿ ªÑ ßÑú¼Ñ¡Γá USE32 π¬áºáΓѽ∞ ñá½∞¡Ñú« Γ¿»á
- ¡á Buffer ºá»¿ßδóáÑΓß∩ ó 6 íá⌐Γ ¿ ºáúαπªáÑΓß∩ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .386
- .
- .
- .
- DataSeg SEGMENT USE32
- Buffer DB 8000h DUP (?)
-
- TASM2 #3-5/䫬 = 125 =
-
- BufferPtr LABEL FWORD
- DD OFFSET Buffer
- DW SEG Buffer
- DataSeg ENDS
- .
- .
- .
- CodeSeg SEGMENT USE32
- ASSUME CS:CodeSeg
- mov ax,DataSeg
- mov ds,ax
- ASSUME DS:DataSeg
- les ebx[BufferPtr] ; ºáúαπªáÑΓ ó ES:EBX 16-
- ; í¿Γ«óδ⌐ ßÑú¼Ñ¡Γ ¿ 32-
- ; í¿Γ«ó«Ñ ß¼ÑΘÑ¡¿Ñ Buffer
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
-
- ÄΓ¼ÑΓ¿¼ ¿ß»«½∞º«óá¡¿Ñ ¡«ó«ú« Γ¿»á ñá¡¡δσ FWORD. ç¡áτÑ¡¿Ñ Γ¿-
- »á FWORD ¿¼ÑεΓ ñ½¿¡π 6 íá⌐Γ. ǡὫú¿τ¡« «»Ñαᵿ∩¼ BYTE PTR, WORD
- PTR ¿ DWORD PTR ¼«ª¡« ¿ß»«½∞º«óáΓ∞ «»Ñαᵿε FWORD PTR.
-
- lqs esi,FWORD PTR [BufferPtr]
-
- ä½∩ «»αÑñѽѡ¿∩ 6-íá⌐Γ«óδσ »ÑαѼѡ¡δσ ¿¼ÑÑΓß∩ Γá¬ªÑ ¡«óá∩
- ñ¿αÑ¬Γ¿óá DF:
-
- .386
- .
- .
- .
- DataSeg SEGMENT USE32
- FPtr ?
- DataSeg ENDS
- .
- .
- .
- CodeSeg SEGMENT USE32
- ASSUME CS:CodeSeg
- mov ax,DataSeg
- mov ds,ax
-
- TASM2 #3-5/䫬 = 126 =
-
- ASSUME DS:DataSeg
- mov eax,OFFSET DestinationFunction
- mov DWORD PTR [FPtr+4],ax
- jmp [FPtr]
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
-
-
-
-
- TASM2 #3-5/䫬 = 127 =
-
- ì«óδÑ αÑú¿ßΓαδ
- -----------------------------------------------------------------
-
- é »α«µÑßß«αÑ 80386 «íΘ¿Ñ αÑú¿ßΓαδ, αÑú¿ßΓα Σ½áú«ó ¿ π¬áºá-
- Γѽ∞ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086 πóѽ¿τÑ¡δ »« αẼÑαπ ñ« 32 í¿Γ,
- ¬α«¼Ñ Γ«ú« ñ«íáó½Ñ¡δ ñóá ¡«óδσ ßÑú¼Ñ¡Γ¡δσ αÑú¿ßΓαá. ìá É¿ß. 10.1
- »«¬áºá¡ ¡áí«α αÑú¿ßΓα«ó »α«µÑßß«αá 80386, »α¿ φΓ«¼ αáßΦ¿αÑ¡¿∩ ñ½∩
- »α«µÑßß«αá 80386 »« ßαáó¡Ñ¡¿ε ß »α«µÑßß«α«¼ 8086 ºáΦΓα¿σ«óá¡δ.
-
-
- 31 16 15 0
- ----------------------------------------- \
- |###################| AH | AL | |
- EAX |###################|-------------------| |
- |###################| AX | |
- ----------------------------------------- |
- ----------------------------------------- |
- |###################| BH | BL | |
- EBX |###################|-------------------| |
- |###################| BX | |
- ----------------------------------------- |
- ----------------------------------------- |
- |###################| CH | CL | |
- ECX |###################|-------------------| |
- |###################| CX | |
- ----------------------------------------- |
- ----------------------------------------- |
- |###################| DH | DL | |
- EDX |###################|-------------------| | ÄíΘ¿Ñ
- |###################| DX | | αÑú¿ßΓαδ
- ----------------------------------------- |
- ----------------------------------------- |
- |###################| | |
- ESI |###################| SI | |
- |###################| | |
- ----------------------------------------- |
- ----------------------------------------- |
- |###################| | |
- EDI |###################| DI | |
- |###################| | |
- ----------------------------------------- |
- ----------------------------------------- |
- |###################| | |
- EBP |###################| BP | |
- |###################| | |
- ----------------------------------------- |
-
- TASM2 #3-5/䫬 = 128 =
-
- ----------------------------------------- |
- |###################| | |
- ESP |###################| SP | |
- |###################| | /
- -----------------------------------------
- -----------------------------------------
- |###################| | ô¬áºáΓѽ∞
- EIP |###################| IP | ¿¡ßΓαπ¬µ¿⌐
- |###################| |
- -----------------------------------------
- -----------------------------------------
- |###################| | ÉÑú¿ßΓα
- EFLAGS |###################| FLAGS | Σ½áú«ó
- |###################| |
- -----------------------------------------
- 31 16 15 0
-
- 15 0
- ---------------------
- | | \
- CS | | |
- | | |
- --------------------- |
- --------------------- |
- | | |
- DS | | |
- | | |
- --------------------- |
- --------------------- |
- | | |
- DS | | |
- | | |
- --------------------- |
- --------------------- | CÑú¼Ñ¡Γ¡δÑ
- | | | αÑú¿ßΓαδ
- ES | | |
- | | |
- --------------------- | --------------------- |
- --------------------- |
- |###################| |
- FS |###################| |
- |###################| |
- --------------------- |
- --------------------- |
- |###################| |
- GS |###################| |
-
- TASM2 #3-5/䫬 = 129 =
-
- |###################| |
- --------------------- |
- --------------------- |
- | | |
- SS | | |
- | | |
- --------------------- /
- 15 0
-
-
- É¿ß. 10.1 ÉÑú¿ßΓαδ »α«µÑßß«αá 80386.
-
- èα«¼Ñ Γ«ú« ó »α«µÑßß«αÑ 80386 ¿¼ÑÑΓß∩ ¡Ñ߬«½∞¬« ߻ѵ¿á½∞¡δσ
- αÑú¿ßΓα«ó, ¡Ñ߬«½∞¬« ¡«óδσ ¿ ¡Ñ߬«½∞¬« ß«ó¼ÑßΓ¿¼δσ ß »α«µÑßß«α«¼
- 80286, αáí«ΓáΓ∞ ß ¬«Γ«α묨 ¼«ª¡« Γ«½∞¬« ß »«¼«Θ∞ε »α¿ó¿½Ñú¿α«óá¡-
- ¡δσ ¿¡ßΓαπ¬µ¿⌐. èᬠ¿ ó »α«µÑßß«αÑ 80286, φΓ¿ αÑú¿ßΓαδ ¿ß»«½∞ºπ-
- εΓß∩ Γ«½∞¬« ß¿ßΓѼ¡δ¼ »α«úαá¼¼¡δ¼ «íÑß»ÑτÑ¡¿Ñ¼, »«φΓ«¼π ó ñá¡¡«¼
- απ¬«ó«ñßΓóÑ ¼δ « ¡¿σ ¡Ñ αáß߬áºδóáѼ.
-
-
-
-
- TASM2 #3-5/䫬 = 130 =
-
- 32-αáºα∩ñ¡δÑ «íΘ¿Ñ αÑú¿ßΓαδ
- -----------------------------------------------------------------
-
- 32-αáºα∩ñ¡δÑ αÑú¿ßΓαδ «íΘÑú« ¡áº¡áτÑ¡¿∩ ¡áºδóáεΓß∩ EAX, EBX,
- ECX, EDX, ESI, EDI, EBP ¿ ESP. î½áñΦ¿Ñ 16 í¿Γ φΓ¿σ αÑú¿ßΓα«ó «í-
- αáºπεΓ ¼¡«ªÑßΓó« 16-αáºα∩ñ¡δσ αÑú¿ßΓα«ó »α«µÑßß«αá 8086, ¬«Γ«αδÑ
- ¡á¼ πªÑ σ«α«Φ« º¡á¬«¼δ. ìá»α¿¼Ñα, ¼½áñΦ¿Ñ 16 í¿Γ αÑú¿ßΓαá EAX
- »αÑñßΓáó½∩εΓ ß«í«⌐ αÑú¿ßΓα AX. ǡὫú¿τ¡«, ¼½áñΦ¿Ñ 8 í¿Γ αÑú¿ßΓαá
- EAX »αÑñßΓáó½∩εΓ ß«í«⌐ αÑú¿ßΓα AL. é αѺπ½∞ΓáΓÑ ¬ αẽ¿τ¡δ¼ τáß-
- Γ∩¼ αÑú¿ßΓαá EAX ¼«ª¡« ΓÑ»Ñα∞ «íαáΘáΓ∞ß∩ ß »«¼«Θ∞ε τÑΓδαÑσ αáº-
- ½¿τ¡δσ ¿¼Ñ¡: 32-í¿Γ«ó«ú« αÑú¿ßΓαá EAX, 16-í¿Γ«ó«ú« αÑú¿ßΓαá AX ¿
- 8-í¿Γ«óδσ αÑú¿ßΓα«ó AH ¿ AL. Æ«ªÑ ßá¼«Ñ «Γ¡«ß¿Γß∩ ¬ αÑú¿ßΓαá¼
- EBX, ECX ¿ EDX.
-
- 32-αáºα∩ñ¡δÑ «íΘ¿Ñ αÑú¿ßΓαδ »α«µÑßß«αá 80386 ¿ß»«½∞ºπεΓß∩
- Γ«τ¡« ΓᬪÑ, ¬á¬ ¿ 16- ¿½¿ 8-αáºα∩ñ¡δÑ αÑú¿ßΓαδ. ìá»α¿¼Ñα, ó ñá¡-
- ¡«¼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ó EAX ºá»¿ßδóáÑΓß∩ 1, αÑú¿ßΓα EBX πßΓá-
- ¡áó½¿óáÑΓß∩ ó º¡áτÑ¡¿Ñ 0, ¿ º¡áτÑ¡¿Ñ αÑú¿ßΓαá EAX c¬½áñδóáÑΓß∩ ß
- EBX:
-
- .
- .
- .
- mov eax,1
- sub ebx,ebx
- add ebx,eax
- .
- .
- .
-
- 32-αáºα∩ñ¡δÑ «íΘ¿Ñ αÑú¿ßΓαδ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ Γᬿ¼ ªÑ «í-
- αẫ¼, ¬á¬ ¿ «íδτ¡δÑ 16-αáºα∩ñ¡δÑ αÑú¿ßΓαδ.
-
- Åα¿ «íαáΘÑ¡¿¿ ¬ 32-αáºα∩ñ¡δ¼ αÑú¿ßΓαá¼ ÑßΓ∞ ¿¼ÑÑΓß∩ Γ«½∞¬«
- «ñ¿¡ ¡Ñí«½∞Φ«⌐ ¡Ññ«ßΓáΓ«¬: ¡Ñ󫺼«ª¡« ¡Ñ»«ßαÑñßΓóÑ¡¡« ¿ß»«½∞º«-
- óáΓ∞ ßΓáαΦ¿Ñ 16 í¿Γ«ó 32-αáºα∩ñ¡«ú« αÑú¿ßΓαá, ¬á¬ 16-αáºα∩ñ¡δ⌐
- αÑú¿ßΓα. àß½¿ óδ σ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ ßΓáαΦ¿Ñ 8 í¿Γ αÑú¿ßΓαá AX,
- Γ« ¼«ª¡« »α«ßΓ« ߽߫áΓ∞ß∩ ¡á αÑú¿ßΓα AH, á Ñß½¿ óδ σ«Γ¿ΓÑ ¿ß»«½∞-
- º«óáΓ∞ ¼½áñΦ¿Ñ 16 í¿Γ«ó αÑú¿ßΓαá ESI, ¬á¬ αÑú¿ßΓα, Γ« ¼«ª¡« »α«ß-
- Γ« ßßδ½áΓ∞ß∩ ¡á SI. Äñ¡á¬« ¡ÑΓ φ¬ó¿óá½Ñ¡Γ¡«ú« ß»«ß«íá ßßδ½áΓ∞ß∩,
- ߬áªÑ¼, ¡á ßΓáαΦ¿Ñ 16 í¿Γ, ¡á»α¿¼Ñα, αÑú¿ßΓαá EAX. ¥Γ« ¼«ªÑΓ «¬á-
- ºáΓ∞ß∩ ¡Ñ»α¿∩Γ¡δ¼ »α¿ ß¼ÑΦá¡¡«⌐ αáí«ΓÑ ß« º¡áτÑ¡¿∩¼¿ αẼÑα«¼ ó
- ß½«ó« ¿ ñó«⌐¡«Ñ ß½«ó«, «ñ¡á¬« Γá¬πε ¡Ñ»α¿∩Γ¡«ßΓ∞ ¼«ª¡« «í«⌐Γ¿.
-
- ùΓ«íδ »«½πτ¿Γ∞ ñ«ßΓπ» ¬ ßΓáαΦ¿¼ 16 í¿Γá¼ 32-αáºα∩ñ¡«ú« αÑ-
- ú¿ßΓαá, ¼«ª¡« »α«ßΓ« óδ»«½¡¿Γ∞ µ¿¬½¿τÑ߬¿⌐ ßñó¿ú 16 í¿Γ«ó ó ½εí«¼
-
- TASM2 #3-5/䫬 = 131 =
-
- ¡á»αáó½Ñ¡¿¿, «íαáΓ¿Γ∞ß∩ ß ¼½áñΦ¿¼ 16 í¿Γá¼ αÑú¿ßΓαá ¿ ß¡«óá óδ-
- »«½¡¿Γ∞ ñ½∩ αÑú¿ßΓαá µ¿¬½¿τÑ߬¿⌐ ßñó¿ú ¡á 16. ìá»α¿¼Ñα, ó ß½Ññπε-
- ΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ó αÑú¿ßΓα AX ºáúαπªáÑΓß∩ 16-í¿Γ«ó«Ñ º¡á-
- τÑ¡¿Ñ, óδ»«½¡∩ÑΓß∩ µ¿¬½¿τÑ߬¿⌐ ßñó¿ú αÑú¿ßΓαá EDX ¡á 16 í¿Γ, τΓ«-
- íδ »ÑαÑßΓáó¿Γ∞ (»«¼Ñ¡∩Γ∞ ¼ÑßΓἿ) ßΓáαΦÑÑ ¿ ¼½áñΦÑÑ ß½«óá EDX, AX
- »«¼ÑΘáÑΓß∩ ó αÑú¿ßΓα DX, ¿ ß¡«óá óδ»«½¡∩ÑΓß∩ »ÑαÑßΓá¡«ó¬á ßΓáαΦÑ-
- ú« ¿ ¼½áñΦÑú« ß½«óá ó EDX:
-
- .
- .
- .
- mov ax,[Sample16BitValue]
- ror edx,16
- mov dx,ax
- ror edx,16
- .
- .
- .
-
- é αѺπ½∞ΓáΓÑ ¼δ »«½πτ¿¼ ß½ÑñπεΘ¿⌐ φΣΣѬΓ: º¡áτÑ¡¿Ñ, »Ñαó«¡á-
- τá½∞¡« ºáúαπªÑ¡¡«Ñ ó αÑú¿ßΓα AX, ó αѺπ½∞ΓáΓÑ »«¼ÑΘáÑΓß∩ ó ßΓáα-
- ΦÑÑ ß½«ó« EDX. ò«Γ∩ φΓ« ¿ ºáΓαπñ¡¿Γѽ∞¡á∩ »α«µÑñπαá, óδ»«½¡∩ÑΓß∩
- «¡á ¡Ñ Γᬠ¼Ññ½Ñ¡¡«, ¬á¬ ¼«ªÑΓ »«¬áºáΓ∞ß∩. ü½áú«ñáα∩ úαπ»»«ó«¼π
- ßñó¿úπ »α«µÑßß«αá 80386 ñ½∩ óδ»«½¡Ñ¡¿∩ ¬áªñ«⌐ ¿¡ßΓαπ¬µ¿¿ ROR ΓαÑ-
- íπÑΓß∩ Γ«½∞¬« 3 µ¿¬½á.
-
-
-
-
- TASM2 #3-5/䫬 = 132 =
-
-
- 32-αáºα∩ñ¡δ⌐ αÑú¿ßΓα Σ½áú«ó
- -----------------------------------------------------------------
-
- î½áñΦÑÑ ß½«ó« αÑú¿ßΓαá Σ½áú«ó »α«µÑßß«αá 80386 ¿ñÑ¡Γ¿τ¡« αÑ-
- ú¿ßΓαπ Σ½áú«ó »α«µÑßß«αá 8086. æΓáαΦ¿Ñ 16 í¿Γ αÑú¿ßΓαá Σ½áú«ó
- »α«µÑßß«αá 8086 ß«ñÑαª¿Γ ñóá ¡«óδσ Σ½áúá. Äñ¿¡ ¿º φΓ¿σ ¡«óδσ Σ½á-
- ú«ó »«¬áºδóáÑΓ, αáí«ΓáÑΓ ½¿ ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ »α«µÑßß«α 80386 ¬á¬
- ó¿αΓπá½∞¡δ⌐ »α«µÑßß«α 8086, á ñαπú«⌐ Σ½áú »αÑñ¡áº¡áτÑ¡ ñ½∩ ¿ß-
- »«½∞º«óá¡¿∩ »α¿ αáºαáí«Γ¬Ñ ßαÑñßΓó «Γ½áñ¬¿. Åਪ½áñ¡δ¼ »α«úαá¼¼-
- ¡δ¼ «íÑß»ÑτÑ¡¿Ñ¼ φΓ¿ Σ½áú¿ «íδτ¡« ¡Ñ ¿ß»«½∞ºπεΓß∩.
-
- 32-αáºα∩ñ¡δ⌐ π¬áºáΓѽ∞ ¿¡ßΓαπ¬µ¿⌐
- -----------------------------------------------------------------
-
- ô¬áºáΓѽ∞ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80386 ¿¼ÑÑΓ αẼÑα 32 í¿Γá,
- τΓ« «Γ½¿τáÑΓß∩ «Γ 16-í¿Γ«ó«ú« π¬áºáΓѽ∩ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá
- 8086. ¥Γ«Γ αáßΦ¿αÑ¡¡δ⌐ π¬áºáΓѽ∞ ¿¡ßΓαπ¬µ¿⌐ »«ññÑনóáÑΓ ßÑú¼Ñ¡Γδ
- ¬«ñá αẼÑα«¼ ñ« 4 ú¿úáíá⌐Γ.
-
- ÉáßΦ¿αÑ¡¡δ⌐ π¬áºáΓѽ∞ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80386 ß«ºñáÑΓ
- ¡Ñ¬«Γ«αδÑ ß½«ª¡«ßΓ¿ »α¿ ºáñá¡¿¿ ¬«ßóÑ¡¡δσ »ÑαÑσ«ñ«ó ó »á¼∩Γ¿.
- ìá»α¿¼Ñα, ß½ÑñπεΘ¿⌐ ¬«ñ ∩ß¡« «»αÑñѽ∩ÑΓ ¬«ßóÑ¡¡δ⌐ »ÑαÑσ«ñ ñá½∞¡Ñ-
- ú« Γ¿»á ß »«¼«Θ∞ε 16-í¿Γ«ó«ú« ßÑú¼Ñ¡Γá ¿ 32-í¿Γ«ó«ú« ß¼ÑΘÑ¡¿∩:
-
- jmp [FWORD PTR JumpVector]
-
- Éáßß¼«Γα¿¼, «ñ¡á¬«, ß½ÑñπεΘÑÑ:
-
- jmp [DWORD PTR JumpVector]
-
- ùΓ« φΓ«, 32-í¿Γ«óδ⌐ ¬«ßóÑ¡¡δ⌐ »ÑαÑσ«ñ í½¿ª¡Ñú« Γ¿»á, ¿½¿
- ¬«ßóÑ¡¡δ⌐ »ÑαÑσ«ñ ñá½∞¡Ñú« Γ¿»á ß 16-í¿Γ«óδ¼ ßÑú¼Ñ¡Γ«¼ ¿ 16-í¿Γ«-
- óδ¼ ß¼ÑΘÑ¡¿Ñ¼? æ »«¼«Θ∞ε «»Ñαá¡ñá DWORD ¼«ªÑΓ íδΓ∞ ºáñá¡ ½εí«⌐ ¿º
- φΓ¿σ ñóπσ Γ¿»«ó »ÑαÑσ«ñ«ó.
-
- çñÑß∞ ¡á »«¼«Θ∞ ¼«úπΓ »α¿⌐Γ¿ «»Ñαᵿ¿ SMALL ¿ LARGE. è«¡ß-
- Γαπ¬µ¿∩:
-
- jmp SMALL [DWORD PTR JumpVector]
-
- áßßÑ¼í½¿απÑΓß∩, ¬á¬ ¬«ßóÑ¡¡δ⌐ »ÑαÑσ«ñ ñá½∞¡Ñú« Γ¿»á »« áñαÑßπ,
- ºáñá¡¡«¼π 16-í¿Γ«óδ¼ ßÑú¼Ñ¡Γ«¼ ¿ 16-í¿Γ«óδ¼ ß¼ÑΘÑ¡¿Ñ¼, ºá»¿ßá¡¡«¼
- ó JumpVector, á
-
- jmp LARGE [DWORD PTR JumpVector]
-
- TASM2 #3-5/䫬 = 133 =
-
-
- áßßÑ¼í½¿απÑΓß∩, ¬á¬ ¬«ßóÑ¡¡δ⌐ »ÑαÑσ«ñ í½¿ª¡Ñú« Γ¿»á »« áñαÑßπ,
- ºáñá¡¡«¼π ΓѬπΘ¿¼ º¡áτÑ¡¿Ñ¼ αÑú¿ßΓαá CS ¿ 32-í¿Γ«óδ¼ ß¼ÑΘÑ¡¿Ñ¼,
- ºá»¿ßá¡¡δ¼ ó JumpVector. é »Ñαó«¼ ß½πτáÑ «»Ñαᵿ∩ SMALL π¬áºδóáÑΓ
- Æπαí« ÇßßѼí½Ñαπ, τΓ« »ÑαÑσ«ñ ¡πª¡« ¿¡ΓÑα»αÑΓ¿α«óáΓ∞, ¬á¬ »ÑαÑσ«ñ
- ¿º ßÑú¼Ñ¡Γá USE16. é ßÑú¼Ñ¡Γáσ USE16 32-í¿Γ«óδÑ ¬«ßóÑ¡¡δÑ «»Ñαá¡-
- ñδ ¿¡ßΓαπ¬µ¿¿ »ÑαÑσ«ñá ß«ßΓ«∩Γ ¿º 16-í¿Γ«ó«ú« ßÑú¼Ñ¡Γá ¿ 16-í¿Γ«-
- ó«ú« ß¼ÑΘÑ¡¿∩. é« óΓ«α«¼ ß½πτáÑ «»Ñαᵿ∩ LARGE π¬áºδóáÑΓ Æπαí«
- ÇßßѼí½Ñαπ, τΓ« »ÑαÑσ«ñ ¡πª¡« ¿¡ΓÑα»αÑΓ¿α«óáΓ∞, ¬á¬ óδ»«½¡∩εΘ¿⌐ß∩
- ó ßÑú¼Ñ¡ΓÑ USE32. é ßÑú¼Ñ¡Γáσ Γ¿»á USE32 32-í¿Γ«óδ⌐ ¬«ßóÑ¡¡δ⌐ »Ñ-
- αÑσ«ñ ß«ßΓ«¿Γ Γ«½∞¬« ¿º 16-í¿Γ«óδσ ß¼ÑΘÑ¡¿⌐.
-
- ÄΓ¼ÑΓ¿¼, τΓ« «»Ñαᵿ¿ SMALL ¿ LARGE π¬áºδóáεΓß∩ ó ñá¡¡δσ
- »α¿¼Ñαáσ ó¡Ñ ¬óáñαáΓ¡δσ ߬«í«¬: »«º¿µ¿∩ φΓ¿σ «»Ñαᵿ⌐ ¿¼ÑÑΓ º¡á-
- τÑ¡¿Ñ. è«úñá «»Ñαᵿ¿ SMALL ¿ LARGE π¬áºδóáεΓß∩ ó¡Ñ ¬óáñαáΓ¡δσ
- ߬«í«¬, «¡¿ ó½¿∩εΓ ¡á αẼÑα «»Ñαá¡ñá, ó ñá¡¡«¼ ß½πτáÑ - ¡á αáº-
- ¼Ñα »ÑαÑσ«ñá. è«úñá φΓ¿ «»Ñαᵿ¿ π¬áºδóáεΓß∩ ó¡πΓα¿ ß¬«í«¬, «¡¿
- ó½¿∩εΓ ¡á αẼÑα áñαÑßá. ìá»α¿¼Ñα, ñá¡¡δ⌐ ¬«ñ π¬áºδóáÑΓ Æπαí« Çß-
- ßѼí½Ñαπ, τΓ« ¡πª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ ßß佬¿ ¡á JumpVector 32-í¿-
- Γ«ó«Ñ ß¼ÑΘÑ¡¿Ñ, ¡« ¡Ñ ß««íΘáÑΓ Ñ¼π, ¡πª¡« ½¿ ¿¡ΓÑα»αÑΓ¿α«óáΓ∞
- º¡áτÑ¡¿Ñ, ºá»¿ßá¡¡«Ñ ó JumpVector, ¬á¬ 32-í¿Γ«ó«Ñ ß¼ÑΘÑ¡¿Ñ í½¿ª-
- ¡Ñú« Γ¿»á, ¿½¿ ¬á¬ ¬«¼í¿¡áµ¿ε 16-í¿Γ«ó«ú« ßÑú¼Ñ¡Γá ¿ 16-í¿Γ«ó«ú«
- ß¼ÑΘÑ¡¿∩ í½¿ª¡Ñú« Γ¿»á:
-
- jmp [LARGE DWORD PTR JumpVector]
-
- Å«φΓ«¼π φΓ« ¡Ñ αÑΦáÑΓ ¿ßσ«ñ¡«⌐ »α«í½Ñ¼δ «»αÑñѽѡ¿∩ Γ¿»á »Ñ-
- αÑσ«ñá.
-
- é «Γñѽ∞¡δσ óδαáªÑ¡¿∩σ «»Ñαᵿ¿ LARGE ¿ SMALL ¼«úπΓ ¿ß»«½∞-
- º«óáΓ∞ß∩ ¬á¬ ó¡πΓα¿, Γᬠ¿ ó¡Ñ ¬óáñαáΓ¡δσ ߬«í«¬. ìá»α¿¼Ñα, ß½Ñ-
- ñπεΘ¿⌐ ¬«ñ ºáñáÑΓ ¬«ßóÑ¡¡δ⌐ »ÑαÑσ«ñ ñá½∞¡Ñú« Γ¿»á »« 16-í¿Γ«ó«¼π
- ßÑú¼Ñ¡Γπ ¿ 16-í¿Γ«ó«¼π ß¼ÑΘÑ¡¿ε, ºá»¿ßá¡¡δ¼ ó »ÑαѼѡ¡«⌐
- JumpVector αẼÑα«¼ ó ñó«⌐¡«Ñ ß½«ó«, ¬«Γ«αá∩ ßá¼á áñαÑßπÑΓß∩ ß
- »«¼«Θ∞ε í½¿ª¡Ñú« 32-í¿Γ«ó«ú« ß¼ÑΘÑ¡¿∩:
-
- jmp SMALL [LARGE DWORD PTR JumpVector]
-
-
-
-
- TASM2 #3-5/䫬 = 134 =
-
- ì«óδÑ ßÑú¼Ñ¡Γ¡δÑ αÑú¿ßΓαδ
- -----------------------------------------------------------------
-
- é »α«µÑßß«αÑ 8086 ¬ τÑΓδαѼ ßÑú¼Ñ¡Γ¡δ¼ αÑú¿ßΓαá¼, »«ññÑন-
- óáÑ¼δ¼ ó »α«µÑßß«αÑ 8086 ñ«íáó½Ñ¡δ ñóá ¡«óδσ ßÑú¼Ñ¡Γ¡δσ αÑú¿ßΓαá
- - FS ¿ GS. ¥Γ¿ ñóá ¡«óδσ αÑú¿ßΓαá ¡Ñ »αÑñ¡áº¡áτÑ¡δ ñ½∩ ¬á¬«⌐-Γ«
- ¬«¡¬αÑΓ¡«⌐ Σπ¡¬µ¿¿, ¿ ¡¿¬á¬á∩ ¿¡ßΓαπ¬µ¿∩ ¿½¿ αѪ¿¼ áñαÑßᵿ¿ »«
- π¼«½τá¡¿ε ¿σ ¡Ñ ¿ß»«½∞ºπÑΓ. é ¿Γ«úÑ ¿ß»«½∞º«óá¡¿Ñ αÑú¿ßΓα«ó FS ¿
- GS ¡Ñ ∩ó½∩ÑΓß∩ «í∩ºáΓѽ∞¡δ¼, ¡« ¼«ªÑΓ «¬áºáΓ∞ß∩ πñ«í¡δ¼ »α¿ «íαá-
- ΘÑ¡¿¿ ¬ ñá¡¡δ¼ ó ¡Ñ߬«½∞¬¿σ ßÑú¼Ñ¡Γáσ ßαáºπ.
-
- ÉÑú¿ßΓαδ FS ¿ GS ¿ß»«½∞ºπεΓß∩ ΓᬪÑ, ¬á¬ ó ¡Ñ¬«Γ«αδσ ¿¡ß-
- Γαπ¬µ¿∩σ ¿ß»«½∞ºπÑΓß∩ αÑú¿ßΓα ES: ß »«¼«Θ∞ε »αÑΣ¿¬ßá »ÑαÑ«»αÑñÑ-
- ½Ñ¡¿∩ ßÑú¼Ñ¡Γá. ÅαÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩ ¼«ªÑΓ π¬áºδóáΓ∞ß∩ ∩ó¡«:
-
- .386
- .
- .
- .
- TestSeg SEGMENT USE16
- SCRATCH_LEN EQU 1000h
- Scratch DB SCRATCH_LEN DUP (?)
- TestSeg ENDS
- .
- .
- .
- CodeSeg SEGMENT USE16
- ASSUME CS:CodeSeg
- mov ax,TestSeg
- mov fs,ax
- mov bx,OFFSET Scratcn
- mov cx,Scratch_LEN
- mov al,0
- ClearScratch:
- mov fs:[bx],al
- inc bx
- loop ClearScratch
- .
- .
- .
- CodeSeg ENDS
- .
- .
-
- ¿½¿ ¡Ñ∩ó¡« ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ ASSUME:
-
-
- TASM2 #3-5/䫬 = 135 =
-
- .386
- .
- .
- .
- TestSeg SEGMENT USE16
- SCRATCH_LEN EQU 1000h
- Scratch DB SCRATCH_LEN DUP (?)
- TestSeg ENDS
- .
- .
- .
- CodeSeg SEGMENT USE16
- ASSUME CS:CodeSeg
- mov ax,TestSeg
- mov gs,ax
- ASSUME GS:TestSeg
- sub bx,bx
- mov cx,SCRATH_LEN
- mov al,0
- ClearScratch:
- mov [Scratch+bx],al
- inc bx
- loop ClearScratch
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
-
- é »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ ñ¿αÑ¬Γ¿óá ASSUME GS:TestSeg π¬áºδóáÑΓ
- Æπαí« ÇßßѼí½Ñαπ, τΓ« »α¿ ¬áªñ«¼ «íαáΘÑ¡¿¿ »« ¿¼Ñ¡¿ ¬ »ÑαѼѡ¡δ¼
- ó TestSeg ¡πª¡« áóΓ«¼áΓ¿τÑ߬¿ ó¬½ετáΓ∞ »αÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩
- (ó «Γ½¿τ¿Ñ «Γ ñ«ßΓπ»á ß »«¼«Θ∞ε αÑú¿ßΓαá-π¬áºáΓѽ∩), »«φΓ«¼π ∩ó¡«
- »αÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩ óá¼ π¬áºδóáΓ∞ ¡Ñ ¡πª¡«. Äñ¡á¬« »αÑΣ¿¬ß
- »ÑαÑ«»αÑñѽѡ¿∩ ß«ñÑনΓß∩ ó óδ»«½¡∩Ѽ«¼ ¬«ñÑ, ñ«íáó½∩∩ íá⌐Γ ¬
- ¬áªñ«⌐ ¿¡ßΓαπ¬µ¿¿, ¬«Γ«αá∩ «íαáΘáÑΓß∩ ¬ »á¼∩Γ¿ ß »«¼«Θ∞ε αÑú¿ßΓαá
- FS ¿½¿ GS. æ½Ññ«óáΓѽ∞¡«, Γá¼ úñÑ φΓ« 󫺼«ª¡«, ó¼ÑßΓ« ßÑú¼Ñ¡Γá
- FS ¿½¿ GS »αÑñ»«τΓ¿Γѽ∞¡ÑÑ ¿ß»«½∞º«óáΓ∞ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα DS
- (¿½¿ ES ó ¬áτÑßΓóÑ »α¿Ñ¼¡¿¬á ó ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿).
-
- ì«óδÑ αѪ¿¼δ áñαÑßᵿ¿
- -----------------------------------------------------------------
-
-
- TASM2 #3-5/䫬 = 136 =
-
- Åα«µÑßß«α 80386 »«ññÑনóáÑΓ óßÑ αѪ¿¼δ áñαÑßᵿ¿ »α«µÑßß«-
- α«ó 8086, 80186 ¿ 80286 ¿ »«ºó«½∩ÑΓ Γá¬ªÑ ¿ß»«½∞º«óáΓ∞ ¡«óδÑ αÑ-
- ª¿¼δ áñαÑßᵿ¿. é ¬áτÑßΓóÑ íẫó«ú« αÑú¿ßΓαá ¼«ª¡« ¿ß»«½∞º«óáΓ∞
- ½εí«⌐ ¿º ó«ß∞¼¿ 32-αáºα∩ñ¡δσ «íΘ¿σ αÑú¿ßΓα«ó, á ó ¬áτÑßΓóÑ ¿¡-
- ñѬߡ«ú« αÑú¿ßΓαá - ½εí«⌐ ¿º 8 32-αáºα∩ñ¡δσ «íΘ¿σ αÑú¿ßΓα«ó, ¬α«-
- ¼Ñ αÑú¿ßΓαá SP. (éß»«¼¡¿¼, τΓ« »α«µÑßß«α 8086 »«ºó«½∩ÑΓ ¿ß»«½∞º«-
- óáΓ∞ ó ¬áτÑßΓóÑ íẫóδσ Γ«½∞¬« αÑú¿ßΓαδ BX ¿ BP, á ó ¬áτÑßΓóÑ
- ¿¡ñѬߡδσ - Γ«½∞¬« SI ¿ DI.)
-
- ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« αÑú¿ßΓα EDI ß«ñÑαª¿Γ º¡áτÑ¡¿Ñ
- 10000h, á EAX ß«ñÑαª¿Γ 4. Æ«úñá ß½ÑñπεΘ¿⌐ ¬«ñ íπñÑΓ »αÑñßΓáó½∩Γ∞
- ß«í«⌐ ñ«»πßΓ¿¼πε ¿¡ßΓαπ¬µ¿ε ñ½∩ »α«µÑßß«αá 80386, πóѽ¿τ¿óáεΘπε
- íá⌐Γ »« ß¼ÑΘÑ¡¿ε 10006h (10000h + 4 + 2) ó ßÑú¼Ñ¡ΓÑ, ¡á ¬«Γ«αδ⌐
- π¬áºδóáÑΓ DS:
-
- inc BYTE PTR [edi+eax+2]
-
- Åα¿óÑñѼ ÑΘÑ «ñ¿¡ »α¿¼Ñα ¡«óδσ 󫺼«ª¡«ßΓÑ⌐ áñαÑßᵿ¿ ó »α«-
- µÑßß«αÑ 80386:
-
- .
- .
- .
- mov ecx,[esp+4]
- mov ebx,[esp+8]
- mov WORD PTR [exc+ebx],0
- .
- .
- .
-
- Äñ¡á¬« ß »«¼«Θ∞ε ¡«óδσ αѪ¿¼«ó áñαÑßᵿ¿ »α«µÑßß«α 80386
- ß»«ß«íÑ¡ ¡á í«½∞ΦÑÑ. Åα¿ óδτ¿ß½Ñ¡¿¿ áñαÑßá »á¼∩Γ¿ ¿¡ñѬߡδ⌐ αÑ-
- ú¿ßΓα ¼«ª¡« π¼¡«ªáΓ∞ ¡á 2, 4 ¿½¿ 8. ä½∩ φΓ«ú« »«ß½Ñ ¿¡ñѬߡ«ú«
- αÑú¿ßΓαá »α«ßΓ« »«¼ÑΘáÑΓß∩ *2, *4 ¿½¿ *8 (φΓ« ßαÑñßΓó« ¡áºδóáÑΓß∩
- ¿¡ñÑ¬ß¡δ¼ ¼áßΦΓáí¿α«ó᡿Ѽ). ìá»α¿¼Ñα, ñÑó∩Γπε ºá»¿ß∞ αẼÑα«¼ ó
- ñó«⌐¡«Ñ ß½«ó« ó Γáí½¿µÑ DwordTable ¼«ª¡« ºáúαπº¿Γ∞ ó αÑú¿ßΓα EAX
- ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .
- .
- .
- mov ebx,8
- mov eax,[DwordTable+ebx*4]
- .
- .
- .
-
- TASM2 #3-5/䫬 = 137 =
-
-
- τΓ« φ¬ó¿óá½Ñ¡Γ¡« ß½ÑñπεΘѼπ:
-
- .
- .
- .
- mov ebx,8
- shl ebx,2
- mov eax,[DwordTable+ebx]
- shr ebx,2
- .
- .
- .
-
- ê¡ñѬߡ«Ñ ¼áßΦΓáí¿α«óá¡¿Ñ ¼«ªÑΓ íδΓ∞ ταѺóδτá⌐¡« »«½Ñº¡« »α¿
- ñ«ßΓπ»Ñ ¬ φ½Ñ¼Ñ¡Γá¼, ¬á¬ ¬ ¼áßß¿óá¼ ß½«ó, ñó«⌐¡δσ ß½«ó ¿½¿ τÑΓ-
- óÑα¡δσ ß½«ó. ìá»α¿¼Ñα, αáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ,
- ¬«Γ«αá∩ ß«αΓ¿απÑΓ φ½Ñ¼Ñ¡Γδ ó ¼áßß¿óÑ ß½«ó ó ó«ºαáßΓáεΘѼ »«α∩ñ¬Ñ:
-
- .386
- .
- .
- .
- CodeSeg SEGMENT USE32
- ASSUME CS:CodeSeg
- .
- .
- .
- ;
- ; æ«αΓ¿α«ó¬á ¼áßß¿óá ß½«ó ó ó«ºαáßΓáεΘѼ »«α∩ñ¬Ñ.
- ;
- ; éó«ñ:
- ; DS:EBX - π¬áºáΓѽ∞ ¡á ¡áτὫ ß«αΓ¿απѼ«ú« ¼áßß¿óá ß½«ó.
- ; EDX - ñ½¿¡á ¼áßß¿óá (ó ß½«óáσ).
- ;
- ; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ:
- ; AX, ECX, EDX, ESI, EDI.
- ;
- SortArray PROC
- and edx,edx
- jz EndSortWordArray
- mov esi,0 ; ßαáó¡¿Γ∞ φ½Ñ¼Ñ¡Γ 0
- ; ß« óßѼ¿ ñαπú¿¼¿
- SortOnNextWord:
- dec edx ; π¼Ñ¡∞Φ¿Γ∞ ßτÑΓτ¿¬
- ; ßαáó¡¿óáѼδσ ß½«ó
-
- TASM2 #3-5/䫬 = 138 =
-
- jz EndSortWordArray
- mov ecx,edx ; τ¿ß½« φ½Ñ¼Ñ¡Γ«ó,
- ; ß ¬«Γ«α묨 ¡πª¡«
- ; ßαáó¡¿Γ∞ ñá¡¡δ⌐
- ; φ½Ñ¼Ñ¡Γ
- mov edi,esi ; ßαáó¡¿Γ∞ ñá¡¡δ⌐
- ; φ½Ñ¼Ñ¡Γ ß« óßѼ¿
- ; «ßΓáóΦ¿¼¿ß∩ φ½Ñ¼Ñ¡-
- ; ΓἿ
- CompareToAllRemainingWords:
- inc edi ; ¿¡ñÑ¬ß ß½ÑñπεΘÑú«
- ; ßαáó¡¿óáѼ«ú«
- ; φ½Ñ¼Ñ¡Γá
- mov ax,[ebx+esi*2]
- cmp ax,[ebx+edi*2] ; ΓѬπΘ¿⌐ φ½Ñ¼Ñ¡Γ
- ; ¼Ñ¡∞ΦÑ φ½Ñ¼Ñ¡Γá,
- ; ß ¬«Γ«αδ¼ «¡
- ; ßαáó¡¿óáÑΓß∩?
- jbe NoSwap ; ñá, ¼Ñ¡∩Γ∞ ¿σ
- ; ¼ÑßΓἿ ¡Ñ ¡πª¡«
- xchg ax,[ebx+edi*2] ; »«¼Ñ¡∩Γ∞ ¼ÑßΓἿ
- ; ΓѬπΘ¿⌐ ¿ ßαáó¡¿óáѼδ⌐
- ; φ½Ñ¼Ñ¡Γ
- NoSwap:
- loop CompareToAllRemainingWords
- inc esi ; ßßδ½¬á ¡á ß½ÑñπεΘ¿⌐
- ; φ½Ñ¼Ñ¡Γ, ¬«Γ«αδ⌐
- ; ¡πª¡« ßαáó¡¿Γ∞ ß«
- ; óßѼ¿ «ßΓá½∞¡δ¼¿
- ; φ½Ñ¼Ñ¡ΓἿ
- imp SortOnNextWord
- EndSortWordArray:
- ret
- SortWordArray ENDP
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
-
- Åα«µÑñπαá SortWordArray ß«σαá¡∩ÑΓ ¡«¼Ñαá φ½Ñ¼Ñ¡Γ«ó ¿½¿ ¿¡-
- ñѬßδ ΓѬπΘÑú« ¿ ßαáó¡¿óáѼ«ú« φ½Ñ¼Ñ¡Γ«ó ó αÑú¿ßΓαáσ ESI ¿ EDI.
- ¥Γ¿ º¡áτÑ¡¿∩ ¡Ñ ∩ó½∩εΓß∩ π¬áºáΓѽ∩¼¿ (ßΓѻѡ∩¼¿ τ¿ß½á 2), σ«Γ∩
- ¼áßß¿ó ¿ ∩ó½∩ÑΓß∩ ¼áßß¿ó«¼ ß½«ó. Ä¡¿ »αÑñßΓáó½∩εΓ ß«í«⌐ »α«ßΓδÑ
-
- TASM2 #3-5/䫬 = 139 =
-
- ߬á½∩α¡δÑ ¿¡ñѬßδ ¼áßß¿óá, á¡á½«ú¿τ¡« Γ«¼π, ¬á¬ n »αÑñßΓáó½∩ÑΓ
- ß«í«⌐ ¿¡ñÑ¬ß ¼áßß¿óá ó «»ÑαáΓ«αÑ ∩ºδ¬á æ¿:
-
- i = Array[n];
-
- é᪡δ⌐ ¼«¼Ñ¡Γ ó »α«µÑñπαÑ SortWordArray ß«ßΓ«¿Γ ó Γ«¼, τΓ«
- ßαÑñßΓó« ¿¡ñѬߡ«ú« ¼áßΦΓáí¿α«óá¡¿∩ »α«µÑßß«αá 80386 »«ºó«½∩ÑΓ
- óá¼ π¼¡«ªáΓ∞ ¿¡ñѬßδ ¡á 2 ó »«½Ñ áñαÑßᵿ¿ ¬ »á¼∩Γ¿, »αÑ«íαáºπ∩,
- Γᬿ¼ «íαẫ¼, ¿¡ñѬßδ ó ß¼ÑΘÑ¡¿∩ ó ¼áßß¿óÑ ß½«ó.
-
- àß½¿ ñ½∩ áñαÑßᵿ¿ ¬ »á¼∩Γ¿ ¿ß»«½∞ºπÑΓß∩ Ññ¿¡ßΓóÑ¡¡δ⌐ αÑ-
- ú¿ßΓα, Γ« φëà αÑú¿ßΓα óßÑúñá ßτ¿ΓáÑΓß∩ íẫóδ¼. àß½¿ ñ½∩ áñαÑßá-
- µ¿¿ ¬ »á¼∩Γ¿ ¿ß»«½∞ºπεΓß∩ ñóá αÑú¿ßΓαá, Γ« ßá¼δ⌐ ½Ñóδ⌐ αÑú¿ßΓα ó
- ¬óáñαáΓ¡δσ ߬«í¬áσ ßτ¿ΓáÑΓß∩ íẫóδ¼ αÑú¿ßΓα«¼, á ßá¼δ⌐ »αáóδ⌐
- αÑú¿ßΓα - ¿¡ñѬߡδ¼. àß½¿ ªÑ, «ñ¡á¬«, ß «ñ¡¿¼ ¿½¿ ñóπ¼∩ αÑú¿ßΓαá-
- ¼¿ ó ¬óáñαáΓ¡δσ ߬«í¬áσ π¬áºδóáÑΓß∩ ¼áßΦΓáí¿α«óá¡¿Ñ, Γ« ¼áßΦΓáí¿-
- απѼδ⌐ αÑú¿ßΓα óßÑúñá αáßß¼áΓα¿óáÑΓß∩, ¬á¬ ¿¡ñѬߡδ⌐ αÑú¿ßΓα.
-
- é«»α«ß « Γ«¼, ¬á¬«⌐ ¿º αÑú¿ßΓα«ó ∩ó½∩ÑΓß∩ íẫóδ¼, óáªÑ¡,
- Γᬠ¬á¬ »« π¼«½τá¡¿ε íẫóδ⌐ αÑú¿ßΓα π»αáó½∩ÑΓ ßÑú¼Ñ¡Γ«¼, ¡á ¬«-
- Γ«αδ⌐ ñѽáÑΓß∩ ßßδ½¬á »α¿ ñá¡¡«¼ «íαáΘÑ¡¿¿ ¬ »á¼∩Γ¿. ä«ßΓπ» ¬ »á-
- ¼∩Γ¿, «ßπΘÑßΓó½∩Ѽδ⌐ ß »«¼«Θ∞ε ¿ß»«½∞º«óá¡¿∩ αÑú¿ßΓα«ó EBP ¿ ESP
- ó ¬áτÑßΓóÑ íẫóδσ, »α¿ó«ñ¿Γ ¬ ßßδ½¬Ñ ¡á ßÑú¼Ñ¡Γ, ¡á ¬«Γ«αδ⌐ π¬á-
- ºδóáÑΓ αÑú¿ßΓα SS, á ñ«ßΓπ» ¬ »á¼∩Γ¿, »α¿ ¬«Γ«α«¼ ó ¬áτÑßΓóÑ íá-
- º«óδσ ¿ß»«½∞ºπεΓß∩ αÑú¿ßΓαδ EAX, EBX, ECX, EDX, ESI ¿½¿ EDI »α¿-
- ó«ñ¿Γ ¬ ßßδ½¬Ñ ¡á ßÑú¼Ñ¡Γ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα DS.
- ìá»α¿¼Ñα, ß½ÑñπεΘ¿Ñ ¿¡ßΓαπ¬µ¿¿ »α¿ó«ñ∩Γ ¬ ßßδ½¬Ñ ¡á ßÑú¼Ñ¡Γ, «»-
- αÑñѽ∩Ѽδ⌐ αÑú¿ßΓα«¼ DS:
-
- mov al,[eax]
- xchg edx,[ebx+ebp]
- shr BYTE PTR [esi+esp+2],1
- mov [ebp*2+edx],ah
- sub cx,[esi+esi*2]
-
- á ß½ÑñπεΘ¿Ñ ¿¡ßΓαπ¬µ¿¿ ßßδ½áεΓß∩ ¡á αÑú¿ßΓα, «»αÑñѽ∩Ѽδ⌐ αÑú¿ßΓ-
- α«¼ SS:
-
- rol WORD PTR [ebp],1
- dec DWORD PTR [esp+4]
- add ax,[eax*2+esp]
- mov [ebp*2],edi
-
- éδí¿αáѼδ⌐ »« π¼«½τá¡¿ε »« íẫó«¼π αÑú¿ßΓαπ ßÑú¼Ñ¡Γ ¼«ª¡«
- »ÑαÑ«»αÑñѽ¿Γ∞ ß »«¼«Θ∞ε ∩ó¡«ú« »αÑΣ¿¬ßá »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá
- ¿½¿ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ ASSUME. ìá»α¿¼Ñα:
-
- TASM2 #3-5/䫬 = 140 =
-
-
- .386
- .
- .
- .
- TestSeg SEGMENT USE32
- Array1 DW 100h DUP (0)
- TestSeg ENDS
- .
- .
- .
- CodeSeg SEGMENT USE16
- ASSUME CS:CodeSeg
- mov ax,TestSeg
- mov fs,ax
- ASSUME FS:TestSeg
- mov dx,[ebx+Array1] ; ¡Ñ∩ó¡«Ñ »ÑαÑ«»αÑñѽѡ¿Ñ
- ; ó αѺπ½∞ΓáΓÑ ASSUME
- mov esi,OFFSET Array1
- mov cx,100h
- IncLoop:
- inc WORD PTR fs:[esi] ; ∩ó¡«Ñ »ÑαÑ«»αÑñѽѡ¿Ñ
- inc esi
- inc esi
- loop IncLoop
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
-
- ì«óδÑ αѪ¿¼δ áñαÑßᵿ¿ »α«µÑßß«αá 80386 αáí«ΓáεΓ Γ«½∞¬« ß 32
- -αáºα∩ñ¡δ¼¿ αÑú¿ßΓαἿ áñαÑßᵿ¿ ¬ »á¼∩Γ¿. 16-αáºα∩ñ¡δÑ αÑú¿ßΓαδ
- ¼«ª¡« ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ñ½∩ «úαá¡¿τÑ¡¡«ú« ñ«ßΓπ»á ¬ »á¼∩Γ¿,
- ΓᬪÑ, ¬á¬ ó »α«µÑßß«αÑ 8086. ìá»α¿¼Ñα, ß½ÑñπεΘá∩ ¿¡ßΓαπ¬µ¿∩ MOV
- íπñÑΓ «Φ¿í«τ¡«⌐ ñáªÑ »α¿ ¡á½¿τ¿¿ »α«µÑßß«αá 80386:
-
- mov ax,[cx+dx+10h]
-
- ê¡ñѬߡ«Ñ ¼áßΦΓáí¿α«óá¡¿Ñ ñ½∩ 16-αáºα∩ñ¡δσ αÑú¿ßΓα«ó ΓᬪÑ
- ¡Ñ ñ«»π߬áÑΓß∩. ä½∩ áñαÑßᵿ¿ ¬ »á¼∩Γ¿ 16- ¿ 32-αáºα∩ñ¡δÑ αÑú¿ßΓ-
- αδ ¡Ñ ¼«úπΓ ß«τÑΓáΓ∞ß∩. Å«φΓ«¼π, ¡á»α¿¼Ñα, ß½ÑñπεΘÑÑ óδαáªÑ¡¿Ñ
- ¿ß»«½∞º«óáΓ∞ß∩ ¡Ñ ¼«ªÑΓ:
-
-
- TASM2 #3-5/䫬 = 141 =
-
- add dx,[bx+eax]
-
-
-
-
- TASM2 #3-5/䫬 = 142 =
-
-
- ì«óδÑ ¿¡ßΓαπ¬µ¿¿
- -----------------------------------------------------------------
-
- äáóá⌐ΓÑ αáßß¼«Γα¿¼ ¡«óδÑ ¿ αáßΦ¿αÑ¡¡δÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá
- 80386 (»«ñα«í¡ÑÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 80386 «»¿ßδóáεΓß∩ ó â½áóÑ
- 3 "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá").
-
- Åα¿¼Ñτá¡¿Ñ: ìπª¡« ¿¼ÑΓ∞ ó ó¿ñπ, τΓ« »α«µÑßß«αδ 8086,
- 80186 ¿ 80286 ¡Ñ αáß»«º¡áεΓ ¡¿ «ñ¡π ¿º ΓÑσ ¡«óδσ ¿ αáßΦ¿-
- αÑ¡¡δσ ¿¡ßΓαπ¬µ¿⌐, ¬«Γ«αδÑ ¼δ íπñÑΓ «»¿ßδóáΓ∞. é αѺπ½∞ΓáΓÑ
- ½εíá∩ »α«úαá¼¼á, ó ¬«Γ«α«⌐ ¿ß»«½∞ºπεΓß∩ ¡«óδÑ ¿½¿ αáßΦ¿αÑ¡-
- ¡δÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 80386 ¡á í«½ÑÑ αá¡¡¿σ »α«µÑßß«αáσ
- αáí«ΓáΓ∞ ¡Ñ íπñÑΓ.
-
- é »α«µÑßß«αÑ 80386 óóÑñÑ¡δ ß½ÑñπεΘ¿Ñ ¡«óδÑ ¿¡ßΓαπ¬µ¿¿:
-
- BSF BTR LFS MOVZX
- BSR BTS LGS SETxx
- BT CDQ LSS SHLD
- BTC CWDE MOVSX SHRD
-
- Åα«óÑα¬á í¿Γ
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩¼¿ »α«óÑન í¿Γ »α«µÑßß«αá 80386 ∩ó½∩εΓß∩ ¿¡ßΓαπ¬-
- µ¿¿ BT, BTC, BTR ¿ BTS. ê¡ßΓαπ¬µ¿∩ BT - φΓ« «ß¡«ó¡á∩ ¿¡ßΓαπ¬µ¿∩
- »α«óÑન í¿Γ, ¬«»¿απεΘá∩ º¡áτÑ¡¿Ñ ºáñá¡¡«ú« Γ¿»á ó« Σ½áú »ÑαÑ¡«-
- ßá. ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ »ÑαÑσ«ñ ¡á Bit3Is1
- »α«¿ßσ«ñ¿Γ Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ í¿Γ 3 αÑú¿ßΓαá EAX «Γ½¿τÑ¡
- «Γ 0:
-
- .
- .
- .
- bt eax,3
- jc Bit3Is1
- .
- .
- .
- Bit3Is1:
- .
- .
- .
-
- àß½¿ αÑú¿ßΓα EAX ß«ñÑαª¿Γ º¡áτÑ¡¿Ñ 00000008h, Γ« ó φΓ«⌐
-
- TASM2 #3-5/䫬 = 143 =
-
- »α«úαá¼¼Ñ »α«¿º«⌐ñÑΓ »ÑαÑσ«ñ ¡á ¼ÑΓ¬π Bit3Is1. àß½¿ ªÑ αÑú¿ßΓα
- EAX ß«ñÑαª¿Γ º¡áτÑ¡¿Ñ 0FFFFFF7h, Γ« »ÑαÑσ«ñ óδ»«½¡Ñ¡ ¡Ñ íπñÑΓ.
- ÅÑαóδ⌐ «»Ñαá¡ñ ¿¡ßΓαπ¬µ¿¿ BT »αÑñßΓáó½∩ÑΓ ß«í«⌐ 16- ¿½¿ 32-αáº-
- α∩ñ¡δ⌐ «íΘ¿⌐ αÑú¿ßΓα ¿½¿ ∩τÑ⌐¬π »á¼∩Γ¿, ß«ñÑαªáΘπε »α«óÑα∩Ѽδ⌐
- í¿Γ. éΓ«α«⌐ «»Ñαá¡ñ - φΓ« ¡«¼Ñα »α«óÑα∩Ѽ«ú« í¿Γá, ºáñá¡¡δ⌐
- 8-í¿Γ«óδ¼ ¡Ñ»«ßαÑñßΓóÑ¡¡δ¼ º¡áτÑ¡¿Ñ¼ ¿½¿ ß«ñÑন¼δ¼ 16- ¿½¿
- 32-αáºα∩ñ¡«ú« «íΘÑú« αÑú¿ßΓαá. àß½¿ ó ¬áτÑßΓóÑ óΓ«α«ú« «»Ñαá¡ñá
- ¿ß»«½∞ºπÑΓß∩ αÑú¿ßΓα, Γ« Ñú« αẼÑα ñ«½ªÑ¡ ß«ó»áñáΓ∞ ß αẼÑα«¼
- »Ñαó«ú« «»Ñαá¡ñá.
-
- çá¼ÑΓ¿¼, τΓ« ¡«¼Ñα »α«óÑα∩Ѽ«ú« í¿Γá ¼«ªÑΓ ºáñáóáΓ∞ß∩ ¬á¬
- αÑú¿ßΓα«¼, Γᬠ¿ ¡Ñ»«ßαÑñßΓóÑ¡¡δ¼ º¡áτÑ¡¿Ñ¼, á »«½Ñ, ó ¬«Γ«α«¼
- »α«óÑα∩ÑΓß∩ í¿Γ, ¼«ªÑΓ »αÑñßΓáó½∩Γ∞ ß«í«⌐ ¬á¬ ∩τÑ⌐¬π »á¼∩Γ¿, Γá¬
- ¿ αÑú¿ßΓα. ìá»α¿¼Ñα, πßΓá¡«ó¿Γ∞ Σ½áú »ÑαÑ¡«ßá ó ß«ßΓ«∩¡¿Ñ í¿Γá 5
- ß½«óá »« áñαÑßπ Table+ebx+esi*2 ¼«ª¡« ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .
- .
- .
- mov ax,5
- bt WORD PTR [Table+ebx+esi*2],ax
- .
- .
- .
-
- ìπª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« ¡«¼Ñαá í¿Γ«ó «Γßτ¿ΓδóáεΓß∩ ß 0
- (¼½áñΦ¿⌐ í¿Γ) ñ« ßΓáαΦÑú« (¡á¿í«½ÑÑ º¡áτáΘÑú«) í¿Γá. àß½¿ αÑú¿ßΓα
- AL ß«ñÑαª¿Γ º¡áτÑ¡¿Ñ 80h, Γ« í¿Γ 7 ó αÑú¿ßΓαÑ AL πßΓá¡«ó½Ñ¡.
-
- ê¡ßΓαπ¬µ¿∩ BTC á¡á½«ú¿τ¡á ¿¡ßΓαπ¬µ¿¿ BT, Γ«½∞¬« ¬«»¿απѼ«Ñ
- ó« Σ½áú »ÑαÑ¡«ßá º¡áτÑ¡¿Ñ »αÑñßΓáó½∩ÑΓ ß«í«⌐ ñ«»«½¡Ñ¡¿Ñ ºáñá¡¡«ú«
- í¿Γá. Æ« ÑßΓ∞ Σ½áú »ÑαÑ¡«ßá πßΓá¡áó½¿óáÑΓß∩ ó º¡áτÑ¡¿Ñ 1, Ñß½¿
- ºáñá¡¡δ⌐ í¿Γ αáóÑ¡ 0, ¿ ó º¡áτÑ¡¿Ñ 0, Ñß½¿ ºáñá¡¡δ⌐ í¿Γ αáóÑ¡ 1.
- ê¡ßΓαπ¬µ¿∩ BTC πßΓαá¡∩ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ∞ ¿ß»«½∞º«óá¡¿∩ ¿¡ßΓαπ¬µ¿¿
- CMC, ¬«úñá ΓαÑíπÑΓß∩ ºáñáΓ∞ ß«ßΓ«∩¡¿Ñ Σ½áúá »ÑαÑ¡«ßá, «íαáΓ¡«Ñ
- º¡áτÑ¡¿ε »α«óÑα∩Ѽ«ú« í¿Γá.
-
- ê¡ßΓαπ¬µ¿∩ BTR Γá¬ªÑ á¡á½«ú¿τ¡á ¿¡ßΓαπ¬µ¿¿ BT, ¡« »«ß½Ñ ¬«-
- »¿α«óá¡¿∩ »α«óÑα∩Ѽ«ú« í¿Γá ó« Σ½áú »ÑαÑ¡«ßá Ñú« º¡áτÑ¡¿Ñ ßΓá¡«-
- ó¿Γß∩ αáó¡δ¼ 0. ǡὫú¿τ¡«, ¿¡ßΓαπ¬µ¿∩ BTS πßΓá¡áó½¿óáÑΓ »α«óÑα∩-
- Ѽδ⌐ í¿Γ, ¬«»¿απѼδ⌐ ó« Σ½áú »ÑαÑ¡«ßá, ó º¡áτÑ¡¿Ñ 1. ¥Γ¿
- ¿¡ßΓαπ¬µ¿¿ »α«óÑન »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ á¡á½¿ºá ¿ πßΓá¡«ó¬¿
- ß«ßΓ«∩¡¿∩ Σ½áúá ó «ñ¡«⌐ «»Ñαᵿ¿ (»α¿ φΓ«¼ »«ñαáºπ¼ÑóáÑΓß∩, τΓ«
- ¡Ñ ¼«ªÑΓ »α«¿º«⌐Γ¿ »αÑαδóá¡¿Ñ ¼Ñªñπ »α«óÑᬫ⌐ Σ½áúá ¿ πßΓá¡«ó¬«⌐
- Ñú« ó ¡«ó«Ñ º¡áτÑ¡¿Ñ).
-
-
- TASM2 #3-5/䫬 = 144 =
-
- Åα«ß¼«Γα í¿Γ«ó
- -----------------------------------------------------------------
-
- ä½∩ ¡áσ«ªñÑ¡¿∩ »Ñαó«ú« ¿½¿ »«ß½Ññ¡Ñú« ¡Ñ¡π½Ñó«ú« í¿Γá «»Ñ-
- αá¡ñá αẼÑα«¼ ó ß½«ó« ¿½¿ ñó«⌐¡«Ñ ß½«ó« »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ¿¡-
- ßΓαπ¬µ¿¿ BSF ¿ BSR. ê¡ßΓαπ¬µ¿∩ BSF »α«ß¼áΓα¿óáÑΓ ¿ßσ«ñ¡δ⌐ «»Ñ-
- αá¡ñ, ¡áτ¿¡á∩ ß í¿Γá 0 (¼½áñΦ¿⌐ í¿Γ), «»αÑñѽ∩∩ »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐
- í¿Γ. àß½¿ óßÑ í¿Γδ «»Ñαá¡ñá-¿ßΓ«τ¡¿¬á ∩ó½∩εΓß∩ ¡π½Ñó묨, Γ« Σ½áú
- ¡π½∩ «τ¿ΘáÑΓß∩. é »α«Γ¿ó¡«¼ ß½πτáÑ Σ½áú ¡π½∩ πßΓá¡áó½¿óáÑΓß∩, á ó
- µÑ½Ñó«⌐ αÑú¿ßΓα (»α¿Ñ¼¡¿¬) ¬«»¿απÑΓß∩ ¡«¼Ñα »Ñαó«ú« ¡á⌐ñÑ¡¡«ú«
- ¡Ñ¡π½Ñó«ú« í¿Γá.
-
- é ¬áτÑßΓóÑ »α¿¼Ñαá »α¿óÑñѼ ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ,
- úñÑ ¿¡ßΓαπ¬µ¿∩ BSF ¿ß»«½∞ºπÑΓß∩, τΓ«íδ «»αÑñѽ¿Γ∞ αáß»«½«ªÑ¡¿Ñ
- »Ñαó«ú« (¼½áñΦÑú«) ¡Ñ¡π½Ñó«ú« í¿Γá ó DX. è«úñá »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐
- í¿Γ DX íπñÑΓ «í¡áαπªÑ¡ ó í¿ΓÑ 2, º¡áτÑ¡¿Ñ 2 ºáúαπªáÑΓß∩ ó αÑú¿ßΓα
- CX.
-
- .
- .
- .
- mov dx,0001101010101100b
- bsf cx,dx
- jnz AllBitsAreZero
- shr dx,cl
- .
- .
- .
- AllBitsAreZero: ; óßÑ í¿Γδ αáó¡δ ¡π½ε
- .
- .
- .
-
- CL ¿ß»«½∞ºπÑΓß∩ ºáΓѼ, ¬á¬ º¡áτÑ¡¿Ñ, ¡á ¬«Γ«α«Ñ ¡πª¡« ßñó¿-
- ¡πΓ∞ DX, ó αѺπ½∞ΓáΓÑ τÑú« º¡áτÑ¡¿Ñ CX ßñó¿úáÑΓß∩ ó»αáó« α«ó¡«
- ¡áßΓ«½∞¬«, ߬«½∞¬« ¡Ñ«íσ«ñ¿¼«, τΓ«íδ »ÑαѼÑßΓ¿Γ∞ ¼½áñΦ¿⌐ í¿Γ ó
- í¿Γ 0.
-
- éΓ«α«⌐ «»Ñαá¡ñ ¿¡ßΓαπ¬µ¿¿ BFS - φΓ« 16- ¿½¿ 32-αáºα∩ñ¡δ⌐ «í-
- Θ¿⌐ αÑú¿ßΓα ¿½¿ »α«ß¼áΓα¿óáѼá∩ ∩τÑ⌐¬á »á¼∩Γ¿, á »Ñαóδ⌐ «»Ñαá¡ñ -
- φΓ« 16- ¿½¿ 32-αáºα∩ñ¡δ⌐ «íΘ¿⌐ αÑú¿ßΓα, ó ¬«Γ«αδ⌐ íπñÑΓ ºá»¿ßδ-
- óáΓ∞ß∩ ¡«¼Ñα »Ñαó«ú« ¡Ñ¡π½Ñó«ú« í¿Γá ó »α«ß¼áΓα¿óáѼδσ ñá¡¡δσ.
- Äíá «»Ñαá¡ñá ñ«½ª¡δ ¿¼ÑΓ∞ «ñ¿¡á¬«óδ⌐ αẼÑα.
-
- ê¡ßΓαπ¬µ¿∩ BSR á¡á½«ú¿τ¡á ¿¡ßΓαπ¬µ¿¿ BFS, ¡« »α«ß¼«Γα «¡á
- ¡áτ¿¡áÑΓ ß« ßΓáαΦÑú« (¡á¿í«½ÑÑ º¡áτáΘÑú«) í¿Γá «»Ñαá¡ñá-¿ßΓ«τ¡¿¬á
-
- TASM2 #3-5/䫬 = 145 =
-
- ¬ ¼½áñΦѼπ í¿Γπ. é ß½ÑñπεΘѼ »α¿¼ÑαÑ ¿¡ñÑ¬ß ßΓáαΦÑú« ¡Ñ¡π½Ñó«ú«
- í¿Γá ó TestVar (º¡áτÑ¡¿Ñ 27) »«¼ÑΘáÑΓß∩ ó αÑú¿ßΓα EAX:
-
- .
- .
- .
- TestVar DD 0FFFFF00h
- .
- .
- .
- bsr eax,[TestVar]
- .
- .
- .
-
-
-
-
- TASM2 #3-5/䫬 = 146 =
-
- ÅÑαѼÑΘÑ¡¿Ñ ñá¡¡δσ ß αáßΦ¿αÑ¡¿Ñ¼ »« º¡á¬π ¿½¿ ¡π½ε
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿¿ MOVZX ¿ MOVSX »«ºó«½∩εΓ óá¼ ¬«»¿α«óáΓ∞ 8- ¿½¿ 16-
- αáºα∩ñ¡«Ñ º¡áτÑ¡¿Ñ ó 16- ¿½¿ 32-αáºα∩ñ¡δ⌐ «íΘ¿⌐ αÑú¿ßΓα íѺ ¡Ñ«í-
- σ«ñ¿¼«ßΓ¿ ¿ß»«½∞º«óá¡¿∩ ½¿Φ¡¿σ ¿¡ßΓαπ¬µ¿⌐ ñ½∩ αáßΦ¿αÑ¡¿∩ º¡áτÑ¡¿∩
- ñ« ºáñá¡¡«ú« αẼÑαá. ê¡ßΓαπ¬µ¿∩ MOVZX ºá»«½¡∩ÑΓ ßΓáαΦ¿Ñ í¿Γδ
- »α¿Ñ¼¡¿¬á ¡π½∩¼¿, á ¿¡ßΓαπ¬µ¿∩ MOVSX αáß»α«ßΓαá¡∩ÑΓ º¡á¬ º¡áτÑ¡¿∩
- ó ß««ΓóÑΓßΓó¿¿ ß αẼÑα«¼ »α¿Ñ¼¡¿¬á. ÄíÑ ¿¡ßΓαπ¬µ¿¿ á¡á½«ú¿τ¡δ
- ßΓá¡ñáαΓ¡«⌐ ¿¡ßΓαπ¬µ¿¿ MOV.
-
- ìá»α¿¼Ñα, αáß»«½áúá∩ ¡áí«α«¼ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086, ñ½∩
- ¬«»¿α«óá¡¿∩ íѺº¡á¬«ó«ú« º¡áτÑ¡¿∩ ó αÑú¿ßΓαÑ DL ó αÑú¿ßΓα BX ¡πª-
- ¡« í佫 íδ ßñѽáΓ∞ ß½ÑñπεΘÑÑ:
-
- .
- .
- .
- mov bl,dl
- sub bh,bh
- .
- .
- .
-
- é »α«µÑßß«αÑ 80386 ñ½∩ φΓ«ú« ñ«ßΓáΓ«τ¡« «ñ¡«⌐ ¿¡ßΓαπ¬µ¿¿:
-
- movzx bx,dl
-
- ÉáßΦ¿αÑ¡¿Ñ »« º¡á¬π ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086 óδ-
- »«½¡¿Γ∞ ÑΘÑ ß½«ª¡ÑÑ. ä½∩ ¬«»¿α«óá¡¿∩ »ÑαѼѡ¡«⌐ ó »á¼∩Γ¿ (ß« º¡á-
- ¬«¼) αẼÑα«¼ ó íá⌐Γ TestByte ó DX íѺ ¿ß»«½∞º«óá¡¿∩ ¿¡ßΓαπ¬µ¿¿
- MOVSX ¡πª¡« í佫 íδ óδ»«½¡¿Γ∞ ß½ÑñπεΘ¿Ñ ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- mov al,[TestByte]
- cwb
- mov dx,ax
- .
- .
- .
-
- ¥Γ« ªÑ ¼«ª¡« ßñѽáΓ∞ ß »«¼«Θ∞ε «ñ¡«⌐ ¿¡ßΓαπ¬µ¿¿:
-
- movsx dx,[TestByte]
-
- TASM2 #3-5/䫬 = 147 =
-
-
- ê¡ßΓαπ¬µ¿¿ MOVZX ¿ MOVSX ¼«úπΓ »ÑαѼÑΘáΓ∞ 8-í¿Γ«óδÑ º¡áτÑ¡¿∩
- ó 32-í¿Γ«óδÑ αÑú¿ßΓαδ:
-
- mov eax,al
-
-
-
-
- TASM2 #3-5/䫬 = 148 =
-
- ÅαÑ«íαẫóá¡¿Ñ ñá¡¡δσ Γ¿»á DWORD ¿½¿ QWORD
- -----------------------------------------------------------------
-
- ä½∩ »αÑ«íαẫóá¡¿∩ º¡áτÑ¡¿⌐ ß« º¡á¬«¼ αẼÑα«¼ ó íá⌐Γ ó αÑ-
- ú¿ßΓαÑ AL ó º¡áτÑ¡¿∩ ß« º¡á¬«¼ αẼÑα«¼ ó ß½«ó« ¿ º¡áτÑ¡¿⌐ ß«
- º¡á¬«¼ ó αÑú¿ßΓαÑ AL αẼÑα«¼ ó ß½«ó« ó º¡áτÑ¡¿∩ ß« º¡á¬«¼ αẼÑ-
- α«¼ ó ñó«⌐¡«Ñ ß½«ó« ó »α«µÑßß«αÑ 80386 »αÑñπß¼«ΓαÑ¡δ ß««ΓóÑΓß-
- ΓóÑ¡¡« ¿¡ßΓαπ¬µ¿¿ CBW ¿ CWD. é »α«µÑßß«α 80386 ñ«íáó½Ñ¡δ ÑΘÑ ñóÑ
- ¿¡ßΓαπ¬µ¿¿ »αÑ«íαẫóá¡¿∩, CWDE ¿ CDQ, ¬«Γ«αδÑ «í½ÑúτáεΓ αáí«Γπ ß
- 32-αáºα∩ñ¡δ¼¿ αÑú¿ßΓαἿ »α«µÑßß«αá 80386.
-
- ê¡ßΓαπ¬µ¿∩ CWDE »αÑ«íαáºπÑΓ º¡áτÑ¡¿Ñ ß« º¡á¬«¼ αẼÑα«¼ ó
- ß½«ó«, ºá»¿ßá¡¡«Ñ ó αÑú¿ßΓαÑ AX, ó º¡áτÑ¡¿Ñ ß« º¡á¬«¼ αẼÑα«¼ ó
- ñó«⌐¡«Ñ ß½«ó«, ΓᬠªÑ ¬á¬ ¿¡ßΓαπ¬µ¿∩ CWD. Éẽ¿τ¿Ñ ¼Ñªñπ φΓ¿¼¿
- ñóπ¼∩ ¿¡ßΓαπ¬µ¿∩¼¿ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ó Γ« óαѼ∩ ¬á¬ ¿¡ßΓαπ¬µ¿∩
- CWD »«¼ÑΘáÑΓ 32-αáºα∩ñ¡δ⌐ αѺπ½∞ΓáΓ ó DX:AX, ¿¡ßΓαπ¬µ¿∩ CWDE »«-
- ¼ÑΘáÑΓ »«¼ÑΘáÑΓ 32-αáºα∩ñ¡δ⌐ αѺπ½∞ΓáΓ ó αÑú¿ßΓα EAX, ¬«Γ«αδ⌐
- ¼«ª¡« ºáΓѼ ¿ß»«½∞º«óáΓ∞ ó 32-αáºα∩ñ¡δσ ¿¡ßΓαπ¬µ¿∩σ »α«µÑßß«αá
- 80386.
-
- ìá»α¿¼Ñα, ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿⌐:
-
- .
- .
- .
- mov ax,-1
- cwde
- .
- .
- .
-
- ó αÑú¿ßΓα EAX íπñÑΓ ºá»¿ßá¡« 32-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ -1.
-
- ê¡ßΓαπ¬µ¿∩ CWD »αÑ«íαáºπÑΓ º¡áτÑ¡¿Ñ ß« º¡á¬«¼ αẼÑα«¼ ó
- ñó«⌐¡«Ñ ß½«ó« ó αÑú¿ßΓαÑ EAX ó º¡áτÑ¡¿Ñ ß« º¡á¬«¼ (8-íá⌐Γ«ó«Ñ) ó
- EDX:EAX. ê¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- mov eax,-7
- cdq
- .
- .
- .
-
-
- TASM2 #3-5/䫬 = 149 =
-
- ß«σαá¡∩εΓ º¡áτÑ¡¿Ñ -7 ó 64-í¿Γ«ó«⌐ »áαÑ αÑú¿ßΓα«ó EDX:EAX. Åα¿
- φΓ«¼ ßΓáαΦÑÑ ß½«ó« αѺπ½∞ΓáΓá (0FFFFFFFh) ºá»¿ßδóáÑΓß∩ ó EDX, á
- ¼½áñΦÑÑ ß½«ó« αѺπ½∞ΓáΓá, º¡áτÑ¡¿Ñ 0FFFFFFF9h (-7) - ó αÑú¿ßΓαÑ
- EAX.
-
- æñó¿ú ¡Ñ߬«½∞¬¿σ ß½«ó
- -----------------------------------------------------------------
-
- æñó¿ú ¡Ñ߬«½∞¬¿σ ß½«ó, ¡á»α¿¼Ñα ßñó¿ú 32-í¿Γ«ó«ú« º¡áτÑ¡¿∩
- ¡á 4 í¿Γá ó½Ñó«, ñ«ßΓáó½∩ÑΓ ó »α«µÑßß«αÑ 8086 ¼¡«ú« 󽫻«Γ, »«ß-
- ¬«½∞¬π ¬áªñ«Ñ ß½«ó« ñ«½ª¡« ßñó¿úáΓ∞ß∩ »« «ñ¡«¼π í¿Γπ, »α¿ φΓ«¼
- í¿Γδ »ÑαѼÑΘáεΓß∩ »««τÑαÑñ¡« τÑαѺ Σ½áú »ÑαÑ¡«ßá ¿º «ñ¡«ú« αÑ-
- ú¿ßΓαá ó ñαπú«⌐. ê¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 80386 SHRD ¿ SHLD ¿ß»αáó-
- ½∩εΓ φΓπ ß¿Γπᵿε, «íÑß»Ñτ¿óá∩ ßñó¿ú ¡á ¡Ñ߬«½∞¬« í¿Γ«ó ñóπσ αÑ-
- ú¿ßΓα«ó ¿½¿ αÑú¿ßΓαá ¿ ∩τÑ⌐¬¿ »á¼∩Γ¿.
-
- ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« 32-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ ºá»¿ßá¡« ¡á
- »α«µÑßß«αÑ 8086 ó αÑú¿ßΓαáσ DX:AX. Æ«úñá ñ½∩ ßñó¿úá 32-í¿Γ«ó«ú«
- º¡áτÑ¡¿∩ ó½Ñó« (»« ¡á»αáó½Ñ¡¿ε ¬ ßΓáαΦѼπ í¿Γπ) ¡á 4 í¿Γá »«ΓαÑ-
- íπÑΓß∩ ß½ÑñπεΘÑÑ:
-
- .
- .
- .
- shl ax,1
- rcl dx,1
- shl ax,1
- rcl dx,1
- shl ax,1
- rcl dx,1
- shl ax,1
- rcl dx,1
- .
- .
- .
-
- é »α«µÑßß«αÑ 80386 ëà ªÑ αѺπ½∞ΓáΓ ¼«ª¡« »«½πτ¿Γ∞, ¿ß»«½∞-
- ºπ∩ óßÑú« ñóÑ ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- shld dx,ax,4
- shl ax,4
- .
-
- TASM2 #3-5/䫬 = 150 =
-
- .
- .
-
- (è«¡Ñτ¡«, óßÑ 32-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ ¼«ª¡« í佫 íδ »α«ßΓ« ºá»¿-
- ßáΓ∞ ó αÑú¿ßΓα EAX ¿ óδ»«½¡¿Γ∞ ßñó¿ú ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿:
-
- shl eax,4
-
- ¡« ñá¡¡δ⌐ »α¿¼Ñα »αÑñ¡áº¡áτÑ¡ ñ½∩ Γ«ú«, τΓ«íδ »α«¿½½εßΓα¿α«óáΓ∞
- »αÑ¿¼πΘÑßΓóá ¿ß»«½∞º«óá¡¿∩ ¿¡ßΓαπ¬µ¿¿ SHLD »« ßαáó¡Ñ¡¿ε ß ¿¡ß-
- Γαπ¬µ¿∩¼¿ »α«µÑßß«αá 8086.)
-
- ÅÑαóδ⌐ «»Ñαá¡ñ ¿¡ßΓαπ¬µ¿¿ SHLD - φΓ« 16- ¿½¿ 32-αáºα∩ñ¡δ⌐
- «íΘ¿⌐ αÑú¿ßΓα ¿½¿ ∩τÑ⌐¬á »á¼∩Γ¿, ñ½∩ ¬«Γ«αδσ ¡πª¡« óδ»«½¡¿Γ∞
- ßñó¿ú. éΓ«α«⌐ «»Ñαá¡ñ »αÑñßΓáó½∩ÑΓ ß«í«⌐ 16- ¿½¿ 32-αáºα∩ñ¡δ⌐
- αÑú¿ßΓα, ó ¬«Γ«αδ⌐ ¡πª¡« óδ»«½¡¿Γ∞ ßñó¿ú, á ΓαÑΓ¿⌐ «»Ñαá¡ñ - φΓ«
- τ¿ß½« í¿Γ, ¡á ¬«Γ«αδÑ ¡πª¡« «ßπΘÑßΓó¿Γ∞ ßñó¿ú. ÉẼÑαδ »Ñαó«ú« ¿
- óΓ«α«ú« «»Ñαá¡ñá ñ«½ª¡δ ß«ó»áñáΓ∞. ÆαÑΓ¿⌐ «»Ñαá¡ñ ñ«½ªÑ¡
- »αÑñßΓáó½∩Γ∞ ß«í«⌐ ¡Ñ»«ßαÑñßΓóÑ¡¡«Ñ º¡áτÑ¡¿Ñ ¿½¿ αÑú¿ßΓα CL. é
- »«ß½Ññ¡Ñ¼ ß½πτáÑ µÑ½Ñó«⌐ «»Ñαá¡ñ ßñó¿úáÑΓß∩ ¡á τ¿ß½« í¿Γ,
- «»αÑñѽ∩Ѽδ⌐ αÑú¿ßΓα«¼ CL.
-
- ê¡ßΓαπ¬µ¿∩ SHRD á¡á½«ú¿τ¡á ¿¡ßΓαπ¬µ¿¿ SHLD, «ñ¡á¬« «¡á óδ-
- »«½¡∩ÑΓ ßñó¿ú ¿º ¡á¿í«½ÑÑ º¡áτáΘÑú« (ßΓáαΦÑú«) í¿Γá ó ¡á»αáó½Ñ¡¿¿
- ¼½áñΦ¿σ í¿Γ«ó. é ß½ÑñπεΘѼ »α¿¼ÑαÑ 64-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ, ºá»¿ßá¡-
- ¡«Ñ ó TestQWord ßñó¿úáÑΓß∩ ó»αáó« ¡á 7 í¿Γ:
-
- .
- .
- .
- mov cl,7
- mov eax,DWORD PTR [TestQWord+4]
- shrd DWORD PTR [TestQWord],eax,cl
- shr eax,cl
- mov DWORD PTR [TestQWord+4],eax
- .
- .
- .
-
-
-
-
- TASM2 #3-5/䫬 = 151 =
-
- ôß½«ó¡á∩ πßΓá¡«ó¬á í¿Γ
- -----------------------------------------------------------------
-
- ÄíΘÑÑ »α¿¼Ñ¡Ñ¡¿Ñ ñ½∩ πß½«ó¡δσ »α«óÑ᫬ ¿ »ÑαÑσ«ñ«ó ß«ßΓ«¿Γ ó
- πßΓá¡«ó¬Ñ º¡áτÑ¡¿∩ ∩τÑ⌐¬¿ »á¼∩Γ¿, τΓ«íδ «ΓαếΓ∞ «»αÑñѽѡ¡«Ñ
- ß«ßΓ«∩¡¿Ñ. ìá»α¿¼Ñα, ¼«ªÑΓ «¬áºáΓ∞ß∩ ªÑ½áΓѽ∞¡δ¼ πßΓá¡«ó¿Γ∞ º¡á-
- τÑ¡¿Ñ ñóπσ »ÑαѼѡ¡δσ, τΓ« ñóÑ »ÑαѼѡ¡δÑ αáó¡δ, π¬áºáΓѽ∞ αáóÑ¡
- ¡π½ε, ¿½¿ ó »αÑñδñπΘÑ⌐ «»Ñαᵿ¿ íδ½ πßΓá¡«ó½Ñ¡ Σ½áú »ÑαÑ¡«ßá.
- Åα«µÑßß«α 8086 ñá½Ñ¬« ¡Ñ ¿ñÑá½Ñ¡ ñ½∩ óδ»«½¡Ñ¡¿∩ Γá¬¿σ «»Ñαᵿ⌐,
- Γᬠ¬á¬ ñ½∩ ñ½∩ πßΓá¡«ó¬¿ Σ½áú«ó, τΓ«íδ «ΓαếΓ∞ αѺπ½∞ΓáΓδ »α«-
- óÑન πß½«ó¿∩, ΓαÑíπÑΓß∩ ¡Ñ߬«½∞¬« ¿¡ßΓαπ¬µ¿⌐. é »α«µÑßß«αÑ 80386
- ñ½∩ π߬«αÑ¡¿∩ Γá¬¿σ «»Ñαᵿ⌐ »α«óÑન ¿ πßΓá¡«ó¬¿ »αÑñπß¼«ΓαÑ¡á
- ¼«Θ¡á∩ úαπ»»á ¿¡ßΓαπ¬µ¿⌐ SET.
-
- ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« óδ σ«Γ¿ΓÑ πßΓá¡«ó¿Γ∞ »ÑαѼѡ¡πε ó
- »á¼∩Γ¿ TestFlag Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ πßΓá¡«ó½Ñ¡ ßΓáαΦ¿⌐ í¿Γ
- αÑú¿ßΓαá AX. ìá »α«µÑßß«αÑ 8086 óá¼ »α¿Φ½«ß∞ íδ ßñѽáΓ∞ ß½Ñ-
- ñπεΘÑÑ:
-
- .
- .
- .
- mov [TestFlag],0 ; »αÑñ»«½«ª¿¼, τΓ«
- ; ßΓáαΦ¿⌐ í¿Γ ¡Ñ
- ; πßΓá¡«ó½Ñ¡
- test ax,80h
- jz MSBNotSet
- mov [TestFlag],1
- MSBNotSet:
- .
- .
- .
-
- é »α«µÑßß«αÑ 80386 ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ß½ÑñπεΘ¿Ñ ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- test ah,80h
- setnz [TestFlag]
- .
- .
- .
-
- Åα¿ φΓ«¼ TestFlag íπñÑΓ πßΓá¡«ó½Ñ¡á ó º¡áτÑ¡¿Ñ 1, Ñß½¿ í¿Γ 7
- αÑú¿ßΓαá AH αáóÑ¡ 1, ¿ ó º¡áτÑ¡¿Ñ 0, Ñß½¿ í¿Γ 7 αÑú¿ßΓαá AH αáóÑ¡
-
- TASM2 #3-5/䫬 = 152 =
-
- 0.
-
- Åα«óÑα¬π ó ½εí«¼ ¿º º¡á¬«¼δσ óá¼ πß½«ó¡δσ »ÑαÑσ«ñáσ ¼«ª¡«
- óδ»«½¡¿Γ∞ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ SET. ê¡ßΓαπ¬µ¿∩ SETNC πßΓá¡áó½¿óá-
- ÑΓ µÑ½Ñó«⌐ «»Ñαá¡ñ ó º¡áτÑ¡¿Ñ 1, Ñß½¿ Σ½áú »ÑαÑ¡«ßá αáóÑ¡ 0, ¿
- ßíαáßδóáÑΓ º¡áτÑ¡¿Ñ µÑ½Ñó«ú« «»Ñαá¡ñá ó 0, Ñß½¿ Σ½áú »ÑαÑ¡«ßá αá-
- óÑ¡ 1. ê¡ßΓαπ¬µ¿∩ SETS πßΓá¡áó½¿óáÑΓ »α¿Ñ¼¡¿¬, Ñß½¿ Σ½áú º¡á¬á
- αáóÑ¡ 1, ¿ ßíαáßδóáÑΓ Ñú«, Ñß½¿ Σ½áú º¡á¬á αáóÑ¡ 0 ¿ Γ. ñ. Ä»Ñ-
- αá¡ñ ¿¡ßΓαπ¬µ¿¿ SET ¼«ªÑΓ íδΓ∞ 8-í¿Γ«óδ¼ «íΘ¿¼ αÑú¿ßΓα«¼ ¿½¿
- 8-í¿Γ«ó«⌐ »ÑαѼѡ¡«⌐ ó »á¼∩Γ¿. 16- ¿ 32-αáºα∩ñ¡δÑ «»Ñαá¡ñδ ¡Ñ ñ«-
- »π߬áεΓß∩.
-
-
-
-
- TASM2 #3-5/䫬 = 153 =
-
- çáúαπº¬á αÑú¿ßΓα«ó SS, FS ¿ GS
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩ »α«µÑßß«αá 8086 LDS »«ºó«½∩ÑΓ óá¼ ºáúαπªáΓ∞ ¬á¬
- αÑú¿ßΓα DS, Γᬠ¿ «ñ¿¡ ¿º «íΘ¿σ αÑú¿ßΓα«ó ¿º »á¼∩Γ¿ ó «ñ¡«⌐ ¿¡ß-
- Γαπ¬µ¿¿, »«ºó«½∩∩, Γᬿ¼ «íαẫ¼, «τÑ¡∞ φΣΣÑ¬Γ¿ó¡« πßΓá¡áó½¿óáΓ∞
- ñá½∞¡¿Ñ π¬áºáΓѽ¿. ê¡ßΓαπ¬µ¿∩ LES «íÑß»Ñτ¿óáÑΓ á¡á½«ú¿τ¡πε ó«º-
- ¼«ª¡«ßΓ∞, ¡« ó¼ÑßΓ« DS ºáúαπªáÑΓ αÑú¿ßΓα ES. é »α«µÑßß«αÑ 80386
- ñ½∩ ºáúαπº¬¿ ñá½∞¡¿σ π¬áºáΓѽÑ⌐ ñ«íáó½Ñ¡δ ¿¡ßΓαπ¬µ¿¿ LSS, LFS ¿
- LGS, ¬«Γ«αδÑ ºáúαπªáεΓ ñá½∞¡¿Ñ π¬áºáΓѽ¿ ¡á «ß¡«óÑ ßÑú¼Ñ¡Γ¡δσ αÑ-
- ú¿ßΓα«ó SS, FS ¿ GS ß««ΓóÑΓßΓóÑ¡¡«.
-
- ìá»α¿¼Ñα, ó ß½ÑñπεΘÑ⌐ »α«úαá¼¼Ñ ó GS:BX ºáúαπªáÑΓß∩ π¬áºá-
- Γѽ∞ ñá½∞¡Ñú« Γ¿»á ¡á í¿Γ«óδ⌐ ¼áßß¿ó ó¿ñÑ«»á¼∩Γ¿ »« áñαÑßπ
- A000:0000:
-
- .
- .
- .
- DataSeg SEGMENT USE16
- ScreenPointer LABEL DWORD
- dw 0
- dw 0A000h
- DataSeg ENDS
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
- CodeSeg SEGMENT USE16
- ASSUME CS:CodeSeg,DS:DataSeg
- mov ax,DataSeg
- mov ds,ax
- .
- .
- .
- lqs bx,[ScreenPointer]
- .
- .
- .
- CodeSeg ENDS
- .
- .
- .
-
- TASM2 #3-5/䫬 = 154 =
-
-
- èᬠ¿ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿⌐ LDS ¿ LES ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿⌐
- LSS, LFS ¿ LGS ¼«ª¡« ºáúαπªáΓ∞ π¬áºáΓѽ¿ Γ¿»á SMALL ¿½¿ LARGE
- (ß¼. αáºñѽ "48-í¿Γ«óδ⌐ Γ¿» ñá¡¡δσ FWORD").
-
-
-
-
- TASM2 #3-5/䫬 = 155 =
-
-
- ÉáßΦ¿αÑ¡¡δÑ ¿¡ßΓαπ¬µ¿¿
- -----------------------------------------------------------------
-
- é »α«µÑßß«α 80386 ¡Ñ Γ«½∞¬« ñ«íáó½Ñ¡δ ¡«óδÑ ¼«Θ¡δÑ ¿¡ßΓαπ¬-
- µ¿¿ »« ßαáó¡Ñ¡¿ε ß ¡áí«α«¼ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«α«¼
- 8086/80186/80286, ¡« Γá¬ªÑ αáßΦ¿αÑ¡δ ¿¼ÑεΘ¿Ñß∩ ¿¡ßΓαπ¬µ¿¿. ¥Γ«
- ß½ÑñπεΘ¿Ñ ¿¡ßΓαπ¬µ¿¿:
-
- CMPS JC JNAE JNLE JPO OUTS
- IMUL JCXZ JNB JNO JS POPA
- INS JE JNBE JNP JZ POPF
- IRET JG JNC JNS LODS PUSHA
- JA JGE JNE JNZ LOOP PUSHF
- JAE JL JNG JO MOV SCAS
- JB JLE JNGE JP MOVS STOS
- JBE JNA JNL JPE
-
- èα«¼Ñ Γ«ú«, ó »α«µÑßß«αÑ 80386 ¼¡«ú¿Ñ ¿¡ßΓαπ¬µ¿¿ ¼«úπΓ αáí«-
- ΓáΓ∞ ß 32-αáºα∩ñ¡δ¼¿ «»Ñαá¡ñἿ, σ«Γ∩ ¿σ ¼¡Ñ¼«¡¿¬á ∩ó¡« ¡Ñ ¿º¼Ñ-
- ¡¿½áß∞.
-
- æ»Ñµ¿á½∞¡δÑ óÑαß¿¿ ¿¡ßΓαπ¬µ¿¿ MOV
- -----------------------------------------------------------------
-
- Åα«µÑßß«α 80386 »«ññÑনóáÑΓ ß»Ñµ¿á½∞¡δÑ Σ«α¼δ ¿¡ßΓαπ¬µ¿¿
- MOV, ¬«Γ«αδÑ »«ºó«½∩εΓ »α«úαá¼¼Ñ, αáí«ΓáεΘÑ⌐ ¡á πα«ó¡Ñ »α¿«α¿ΓÑΓá
- 0 (πα«óÑ¡∞ ß ¼á¬ß¿¼á½∞¡δ¼¿ »«½¡«¼«τ¿∩¼¿) »ÑαѼÑΘáΓ∞ ñá¡¡δÑ ¼Ñªñπ
- 32-αáºα∩ñ¡δ¼¿ «íΘ¿¼¿ αÑú¿ßΓαἿ ¿ ߻ѵ¿á½∞¡δ¼¿ αÑú¿ßΓαἿ »α«µÑß-
- ß«αá 80386. Æá¬¿¼ ß»«ß«í«¼ ¼«ª¡« «íαáΘáΓ∞ß∩ ¬ ß½ÑñπεΘ¿¼ αÑú¿ßΓαá¼
- »α«µÑßß«αá 80386:
-
- CR0 DR0 DR3 TR6
- CR2 DR1 DR6 TR7
- CR3 DR2 DR7
-
- ìá»α¿¼Ñα, «Γ½áñ«τ¡δ⌐ αÑú¿ßΓα DR0 ¼«ª¡« ºáúαπº¿Γ∞ áñαÑß«¼,
- ¬«Γ«αδ⌐ íπñÑΓ »ÑαÑσóáΓδóáΓ∞ß∩, ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- .386P
- .
- .
- .
-
- TASM2 #3-5/䫬 = 156 =
-
- mov eax,OFFSET FunctionEntry
- mov dr0,eax
- .
- .
- .
-
- á ß¿ßΓѼ¡δÑ π»αáó½∩εΘ¿Ñ Σ½áú¿ ¼«ª¡« ºáúαπº¿Γ∞ ¿º π»αáó½∩εΘÑú« αÑ-
- ú¿ßΓαá CR0 ó αÑú¿ßΓα EDX ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- .386P
- .
- .
- .
- mov edx,cr0
- .
- .
- .
-
- çá¼ÑΓ¿¼, τΓ« τΓ«íδ Æπαí« ÇßßѼí½Ñα ¼«ú áßßÑ¼í½¿α«óáΓ∞ ߻ѵ¿-
- á½∞¡δÑ Σ«α¼δ ¿¡ßΓαπ¬µ¿¿ MOV, ñ«½ª¡á ñÑ⌐ßΓó«óáΓ∞ ñ¿αÑ¬Γ¿óá .386É
- (Γᬠ¬á¬ «¡¿ ∩ó½∩εΓß∩ »α¿ó¿½Ñú¿α«óá¡¡δ¼¿ ¿¡ßΓαπ¬µ¿∩¼¿).
-
- é «íΘѼ ß½πτáÑ ß»Ñµ¿á½∞¡δÑ αÑú¿ßΓαδ, ¬ ¬«Γ«αδ¼ ¼«ª¡« »«½π-
- τ¿Γ∞ ñ«ßΓπ» ß »«¼«Θ∞ε ¡«óδσ Σ«α¼ ¿¡ßΓαπ¬µ¿¿ MOV, ¿ß»«½∞ºπεΓß∩
- Γ«½∞¬« ß¿ßΓѼ¡δ¼ »α«úαá¼¼¡δ¼ «íÑß»ÑτÑ¡¿Ñ¼ ¿ ¡Ñ ¿ß»«½∞ºπεΓß∩ »α¿¬-
- ½áñ¡δ¼¿ »α«úαἼἿ.
-
-
-
-
- TASM2 #3-5/䫬 = 157 =
-
-
- 32-αáºα∩ñ¡δÑ óÑαß¿¿ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086
- -----------------------------------------------------------------
-
- î¡«ú¿Ñ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 8086 αáßΦ¿αÑ¡δ Γᬿ¼ «íαẫ¼,
- τΓ«íδ ¼«ª¡« í佫 ¿ß»«½∞º«óáΓ∞ ¡«óδÑ ó«º¼«ª¡«ßΓ¿ áñαÑßᵿ¿ ¿ ¡«óδÑ
- «»Ñαá¡ñδ »α«µÑßß«αá 80386. æ½ÑñπεΘá∩ ¿¡ßΓαπ¬µ¿∩ óδ»«½¡∩ÑΓ 32-αáº-
- α∩ñ¡«Ñ óδτ¿Γá¡¿Ñ 32-í¿Γ«ó«ú« αÑú¿ßΓαá EBX ¿º 32-í¿Γ«ó«⌐ »ÑαѼѡ-
- ¡«⌐ »« áñαÑßπ EBP+EAX*8+10h. Åα¿ φΓ«¼ ñ½∩ ßß佬¿ ¡á µÑ½Ñóπε ∩τÑ⌐-
- ¬π »á¼∩Γ¿ ¿ß»«½∞ºπεΓß∩ 32-αáºα∩ñ¡δÑ αÑú¿ßΓαδ:
-
- sub DWORD PTR [ebp+eax*8+10h],ebx
-
- ä½∩ 32-αáºα∩ñ¡δσ 󫺼«ª¡«ßΓÑ⌐, ñ«íáó½Ñ¡¡δσ ó í«½∞Φ¿¡ßΓó« ¿¡-
- ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086, ¡Ñ ΓαÑíπÑΓß∩ ¡«óá∩ ¼¡Ñ¼«¡¿¬á ¿¡ßΓαπ¬-
- µ¿⌐. ìá 32-αáºα∩ñ¡δ⌐ σáαá¬ΓÑα «»Ñαᵿ¿ π¬áºδóáεΓ «íδτ¡« «»Ñαá¡ñδ
- ¿½¿ Γ¿» ßÑú¼Ñ¡Γá, ó ¬«Γ«α«¼ óδ»«½¡∩ÑΓß∩ «»Ñαᵿ∩. Äñ¡á¬« ñ½∩ ¡Ñ-
- ¬«Γ«αδσ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086 »«ΓαÑí«óá½áß∞ ¡«óá∩ ¼¡Ñ¼«¡¿¬á,
- π¬áºδóáεΘá∩, τΓ« «¡¿ αáßΦ¿αÑ¡δ ñ« 32-αáºα∩ñ¡δσ 󫺼«ª¡«ßΓÑ⌐ »α«-
- µÑßß«αá 80386. äá½ÑÑ ¼δ αáßß¼«Γα¿¼ φΓ¿ ¿¡ßΓαπ¬µ¿¿.
-
- ì«óδÑ óÑαß¿¿ ¿¡ßΓαπ¬µ¿⌐ LOOP ¿ JCXZ
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿¿ LOOP, LOOPE, LOOPNE ¿ JCXZ αáí«ΓáεΓ «íδτ¡« ß
- 16-αáºα∩ñ¡δ¼ αÑú¿ßΓα«¼ CX. Åα«µÑßß«α 8086 »αÑñπß¼áΓα¿óáÑΓ ¬á¬ 16-
- αáºα∩ñ¡πε, Γᬠ¿ 32-αáºα∩ñ¡πε óÑαß¿ε φΓ¿σ ¿¡ßΓαπ¬µ¿⌐. 32-αáºα∩ñ-
- ¡δÑ óÑαß¿¿ ó¼ÑßΓ« αÑú¿ßΓαá CX ¼«úπΓ αáí«ΓáΓ∞ ß αÑú¿ßΓα«¼ ECX.
-
- ê¡ßΓαπ¬µ¿¿ LOOP, LOOPE ¿ LOOPNE ¿ß»«½∞ºπεΓ ó ¬áτÑßΓóÑ ßτÑΓ-
- τ¿¬á µ¿¬½á αÑú¿ßΓα CX ¿½¿ ECX, ó ºáó¿ß¿¼«ßΓ¿ «Γ Γ¿»á ßÑú¼Ñ¡Γá (16
- -í¿Γ«ó«ú« ¿½¿ 32-í¿Γ«ó«ú«). àß½¿ óδ σ«Γ¿ΓÑ «íÑß»Ñτ¿Γ∞, τΓ«íδ ó
- ¬áτÑßΓóÑ αÑú¿ßΓαá π»αáó½Ñ¡¿∩ µ¿¬½«¼ óßÑúñá ¿ß»«½∞º«óá½ß∩ αÑú¿ßΓα
- CX (ñáªÑ ó 32-í¿Γ«ó«¼ ßÑú¼Ñ¡ΓÑ), Γ« ¿ß»«½∞ºπ⌐ΓÑ ß½«ó¡πε Σ«α¼π
- ñá¡¡δσ ¿¡ßΓαπ¬µ¿⌐ (LOOPW, LOOPWE ¿½¿ LOOPWNE). ǡὫú¿τ¡«, Ñß½¿
- ¡πª¡« «íÑß»Ñτ¿Γ∞ ¿ß»«½∞º«óá¡¿Ñ ó ¬áτÑßΓóÑ π»αáó½∩εΘÑú« µ¿¬½«¼ αÑ-
- ú¿ßΓαá αÑú¿ßΓα ECX, ¿ß»«½∞ºπ⌐ΓÑ ß½ÑñπεΘ¿Ñ Σ«α¼δ ¿¡ßΓαπ¬µ¿⌐:
- LOOPD, LOOPDE ¿ LOOPDNE.
-
- ê¡ßΓαπ¬µ¿∩ LOOPD π¼Ñ¡∞ΦáÑΓ ß«ñÑন¼«Ñ ECX ¿ óδ»«½¡∩ÑΓ »ÑαÑ-
- σ«ñ »« π¬áºá¡¡«¼π ß¼ÑΘÑ¡¿ε, Ñß½¿ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ «Γ½¿τ¡« «Γ
- ¡π½∩. ìá»α¿¼Ñα, ß½ÑñπεΘ¿⌐ µ¿¬½ óδ»«½¡∩ÑΓß∩ 8000000000h αáº:
-
- .
- .
- .
-
- TASM2 #3-5/䫬 = 158 =
-
- mov ecx,8000000000h
- LoopTop:
- loopd LoopTop
- .
- .
- .
-
- ê¡ßΓαπ¬µ¿∩ LOOPDE π¼Ñ¡∞ΦáÑΓ ß«ñÑন¼«Ñ ECX αÑú¿ßΓαá ¿ óδ»«½-
- ¡∩ÑΓ »ÑαÑσ«ñ ¡á µÑ½Ñó«Ñ ß¼ÑΘÑ¡¿Ñ, »«¬á Σ½áú ¡π½∩ αáóÑ¡ 1, á ECX
- ¡Ñ αáóÑ¡ 0. (LOOPDZ - φΓ« ÑΘÑ «ñ¡á Σ«α¼á Γ«⌐ ªÑ ¿¡ßΓαπ¬µ¿¿.) Ç¡á-
- ½«ú¿τ¡«, ¿¡ßΓαπ¬µ¿∩ LOOPDNE π¼Ñ¡∞ΦáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá ECX ¿ »Ñ-
- αÑσ«ñ¿Γ »« µÑ½Ñó«¼π ß¼ÑΘÑ¡¿ε, »«¬á Σ½áú ¡π½∩ αáóÑ¡ 0, á ECX ¡Ñ
- αáóÑ¡ 0. (LOOPDNZ - φΓ« φ¬ó¿óá½Ñ¡Γ¡á∩ ¿¡ßΓαπ¬µ¿∩.) ìá»α¿¼Ñα, ß½Ñ-
- ñπεΘ¿⌐ µ¿¬½ »«óΓ«α∩ÑΓß∩, »«¬á º¡áτÑ¡¿Ñ, ßτ¿ΓδóáѼ«Ñ ¿º »«αΓá óó«-
- ñá-óδó«ñá ó αÑú¿ßΓα DX ¡Ñ ßΓá¡ÑΓ αáó¡δ¼ 09h ¿½¿ »α«óÑα¬á »«αΓá ¡Ñ
- íπñÑΓ óδ»«½¡Ñ¡á 1000000000h αáº:
-
- .
- .
- .
- mov ecs,1000000000h
- LoopTop:
- in al,dx
- cmp al,09h
- loopdne LoopTop
- jnz TimeOut
- .
- .
- .
- TimeOut:
- .
- .
- .
-
- ÄΓ¼ÑΓ¿¼, τΓ« ñÑ⌐ßΓó¿Ñ ¿¡ßΓαπ¬µ¿¿ JNZ ó ñá¡¡«¼ »α¿¼ÑαÑ «Γαá-
- ªáÑΓ αѺπ½∞ΓáΓ ßαáó¡Ñ¡¿∩, á ¡Ñ ¿¡ßΓαπ¬µ¿¿ LOOPDNE, Γᬠ¬á¬ ¿¡ß-
- Γαπ¬µ¿¿ µ¿¬½á ¡Ñ ó½¿∩εΓ ¡á ß«ßΓ«∩¡¿Ñ Σ½áú«ó. ê¡ßΓαπ¬µ¿∩ JCXZ óδ-
- »«½¡∩ÑΓ »ÑαÑσ«ñ, Ñß½¿ ß«ñÑন¼«Ñ CX αáó¡« 0, á JECXZ óδ»«½¡∩ÑΓ
- »ÑαÑσ«ñ, Ñß½¿ αáó¡« ¡π½ε ß«ñÑন¼«Ñ ECX. ìá»α¿¼Ñα, ß½ÑñπεΘ¿⌐ µ¿¬½
- ¼«ªÑΓ αáí«ΓáΓ∞ ß 32-í¿Γ«ó묨 ßτÑΓτ¿¬á¼¿.
-
- .
- .
- .
- LoopTop:
- jecxz LoopEnd
-
- TASM2 #3-5/䫬 = 159 =
-
- .
- .
- .
- jmp LoopTop
- LoopEnd:
- .
- .
- .
-
-
-
-
- TASM2 #3-5/䫬 = 160 =
-
- ì«óδÑ óÑαß¿¿ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐
- -----------------------------------------------------------------
-
- é »α«µÑßß«αÑ 80386 óßÑ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ ¼«úπΓ αáí«ΓáΓ∞ ß
- íá⌐ΓἿ, ß½«óἿ ¿½¿ ñó«⌐¡δ¼¿ ß½«óἿ. éÑαß¿¿ φΓ¿σ ¿¡ßΓαπ¬µ¿⌐,
- αáí«ΓáεΘ¿Ñ ß ñó«⌐¡δ¼¿ ß½«óἿ, »α«ßΓ« ºá¬á¡τ¿óáεΓß∩ íπ¬ó«⌐ D, á
- ¡Ñ íπ¬óἿ W ¿½¿ B. ¥Γ« ß½ÑñπεΘ¿Ñ ¿¡ßΓαπ¬µ¿¿:
-
- CMPSD MOVSD SCASD
- INSD OUTSD STOSD
- LODSD
-
- èáªñá∩ ¿º φΓ¿σ ¿¡ßΓαπ¬µ¿⌐ αáí«ΓáÑΓ ßαáºπ ß 32 í¿ΓἿ ñá¡¡δσ
- ¿ πóѽ¿τ¿óáÑΓ ¿½¿ π¼Ñ¡∞ΦáÑΓ »α¿ ¬áªñ«¼ »«óΓ«αÑ¡¿¿ ß««ΓóÑΓßΓóπεΘ¿⌐
- αÑú¿ßΓα-π¬áºáΓѽ∞ ¡á 4. ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ
- ¿¡ßΓαπ¬µ¿∩ MOVSD ¿ß»«½∞ºπÑΓß∩ ñ½∩ ¬«»¿α«óá¡¿∩ ñóπσ ñó«⌐¡δσ ß½«ó,
- ¡áτ¿¡á∩ ß« ß¼ÑΘÑ¡¿∩ DwordTable ó ñóá ñó«⌐¡δσ ß½«óá, ¡áτ¿¡áεΘ¿σß∩
- ß« ß¼ÑΘÑ¡¿∩ Buffer:
-
- .
- .
- .
- cld
- mov si,OFFSET DwordTable
- mov di,OFFSET Buffer
- mov cx,2
- rep movsd
- .
- .
- .
-
- Åα¿ φΓ«¼ αѺπ½∞ΓáΓ ß««ΓóÑΓßΓóπÑΓ ß½ÑñπεΘÑ¼π ¬«ñπ, ó ¬«Γ«α«¼
- ¿ß»«½∞ºπÑΓß∩ ¿¡ßΓαπ¬µ¿∩ MOVSB.
-
- .
- .
- .
- cld
- mov si,OFFSET DwordTable
- mov di,OFFSET Buffer
- mov cx,8
-
- rep movsb
- .
- .
- .
-
- TASM2 #3-5/䫬 = 161 =
-
-
- Äñ¿¡ ¿º ß»«ß«í«ó αáßß¼«ΓαÑ¡¿∩ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ ß«ßΓ«¿Γ ó
- Γ«¼, τΓ« ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ αẼÑα«¼ ó ñó«⌐¡«Ñ ß½«ó« á¡á½«ú¿τ¡δ
- ßΓ᫬«óδ¼ ¿¡ßΓαπ¬µ¿∩¼ αẼÑα«¼ ó ß½«ó«, »«ñ«í¡« Γ«¼π, ¬á¬ ßΓ᫬«-
- óδÑ ¿¡ßΓαπ¬µ¿¿ αẼÑα«¼ ó ß½«ó« ß««ΓóÑΓßΓóπεΓ íá⌐Γ«óδ¼ ßΓ᫬«óδ¼
- ¿¡ßΓαπ¬µ¿∩¼.
-
-
-
-
- TASM2 #3-5/䫬 = 162 =
-
-
- ê¡ßΓαπ¬µ¿∩ IRETD
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩ IRETD á¡á½«ú¿τ¡á ¿¡ßΓαπ¬µ¿¿ IRET. Ä¡á ¿ºó½Ñ¬áÑΓ
- ¿º ßΓѬá EIP, á ºáΓѼ CS, ¬á¬ ñó«⌐¡«Ñ ß½«ó« («Γíαáßδóá∩ ßΓáαΦÑÑ
- ß½«ó«), »«ß½Ñ τÑú« ¿ºó½Ñ¬áÑΓ EFLAGS, ¬á¬ ñó«⌐¡«Ñ ß½«ó«.
-
-
- ê¡ßΓαπ¬µ¿¿ PUSHFD ¿ POPFD
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩ PUSHFD ºá¡«ß¿Γ ó ßΓѬ »«½¡δ⌐ 32-αáºα∩ñ¡δ⌐ αÑú¿ßΓα
- Σ½áú«ó »α«µÑßß«αá 80386. ê¡ßΓαπ¬µ¿∩ POPFD ¿ºó½Ñ¬áÑΓ ¿º ßΓÑ¬á »«½-
- ¡δ⌐ 32-αáºα∩ñ¡δ⌐ αÑú¿ßΓα Σ½áú«ó.
-
- ê¡ßΓαπ¬µ¿¿ ªÑ PUSHF ¿ POPF ºá¡«ß∩Γ ó ßΓѬ ¿ ¿ºó½Ñ¬áεΓ ¿º ¡Ñ-
- ú« Γ«½∞¬« ¼½áñΦ¿Ñ 16 í¿Γ«ó αÑú¿ßΓαá Σ½áú«ó.
-
-
- ê¡ßΓαπ¬µ¿¿ PUSHAD ¿ POPAD
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩ PUSHAD ºá¡«ß¿Γ ó ßΓѬ ó«ßѼ∞ 32-αáºα∩ñ¡δσ «íΘ¿σ
- αÑú¿ßΓα«ó ó ß½ÑñπεΘѼ »«α∩ñ¬Ñ: EAX, ECX, EDX, EBX, ESP, EBP, ESI,
- EDI. ç¡áτÑ¡¿Ñ, ºá¡«ß¿¼«Ñ ñ½∩ αÑú¿ßΓαá ESP, ß««ΓóÑΓßΓóπÑΓ º¡áτÑ¡¿ε
- αÑú¿ßΓαá ESP ó ¡áτá½Ñ ¿¡ßΓαπ¬µ¿¿ PUSHAD. ê¡ßΓαπ¬µ¿∩ POPAD ¿ºó½Ñ-
- ¬áÑΓ ¿º ßΓѬá ßѼ∞ 32-αáºα∩ñ¡δσ «íΘ¿σ αÑú¿ßΓα«ó ó ß½ÑñπεΘѼ »«-
- α∩ñ¬Ñ: EDI, ESI, EBP, EBX, EDX, ECX ¿ EAX. éßÑ φΓ¿ αÑú¿ßΓαδ
- ¼«ª¡« ß«σαá¡¿Γ∞ ó ßΓÑ¬Ñ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ PUSHAD, á ºáΓѼ
- ó«ßßΓá¡«ó¿Γ∞ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ POPAD. ÉÑú¿ßΓα ESP ¿¡ßΓαπ¬µ¿Ñ⌐
- POPAD ¡Ñ ó«ßßΓá¡áó½¿óáÑΓß∩. é¼ÑßΓ« φΓ«ú« óδ»«½¡∩ÑΓß∩ óδ»«½¡∩ÑΓß∩
- πóѽ¿τÑ¡¿Ñ ¡á 32, τΓ«íδ «Γíα«ß¿Γ∞ í½«¬ ¿º ó«ß∞¼¿ 32-αáºα∩ñ¡δσ «í-
- Θ¿σ αÑú¿ßΓα«ó, αá¡ÑÑ ß«σαá¡Ñ¡¡δ⌐ ó ßΓѬÑ. æ«σαá¡Ñ¡¡«Ñ αá¡ÑÑ º¡á-
- τÑ¡¿Ñ ESP ¿ú¡«α¿απÑΓß∩.
-
- æαáó¡¿ΓÑ ß φΓ¿¼¿ ¿¡ßΓαπ¬µ¿∩¼¿ ¿¡ßΓαπ¬µ¿¿ PUSHA ¿ POPA, ¬«Γ«-
- αδÑ ß«σαá¡∩εΓ ó ßΓÑ¬Ñ ¿ ¿ºó½Ñ¬áεΓ ¿º ¡Ñú« Γ«½∞¬« ¼½áñΦ¿Ñ 16 í¿Γ«ó
- «íΘ¿σ αÑú¿ßΓα«ó.
-
-
-
-
- TASM2 #3-5/䫬 = 163 =
-
- ì«óδÑ óÑαß¿¿ ¿¡ßΓαπ¬µ¿¿ IMUL
- -----------------------------------------------------------------
-
- ä«»«½¡¿Γѽ∞¡« ¬ Σ«α¼á¼ ¿¡ßΓαπ¬µ¿¿ IMUL, »αÑñπß¼«ΓαÑ¡¡δ¼ ñ½∩
- »α«µÑßß«α«ó 8086/80186/80286 ó »α«µÑßß«αÑ 80386 »αÑñπß¼«ΓαÑ¡á
- 󫺼«ª¡« ßá¼á∩ πñ«í¡á∩ Σ«α¼á ¿¡ßΓαπ¬µ¿¿ IMUL: ½εí«⌐ «íΘ¿⌐ αÑú¿ßΓα
- ¿½¿ ∩τÑ⌐¬π »á¼∩Γ¿ ¼«ª¡« π¼¡«ªáΓ∞ ¡á ½εí«⌐ «íΘ¿⌐ αÑú¿ßΓα, »α¿ φΓ«¼
- αѺπ½∞ΓáΓ ß¡«óá ß«σαá¡∩ÑΓß∩ ó «ñ¡«¼ ¿º ¿ßσ«ñ¡δσ αÑú¿ßΓα«ó. ìá»α¿-
- ¼Ñα, ¿¡ßΓαπ¬µ¿∩:
-
- imul ebx,[edi*4+4]
-
- π¼¡«ªáÑΓ ß«ñÑন¼«Ñ αÑú¿ßΓαá EBX ¡á º¡áτÑ¡¿Ñ αẼÑα«¼ ó ñó«⌐¡«Ñ
- ß½«ó«, σαá¡∩ΘÑÑß∩ »« áñαÑßπ »á¼∩Γ¿ edi*4+4, á αѺπ½∞ΓáΓ ß«σαá¡∩ÑΓ
- ß¡«óá ó αÑú¿ßΓαÑ EBX.
-
- èᬠ¼«ª¡« ºá¼ÑΓ¿Γ∞, »Ñαóδ⌐ «»Ñαá¡ñ ó φΓ«⌐ Σ«α¼Ñ ¿¡ßΓαπ¬µ¿¿
- IMUL »αÑñßΓáó½∩ÑΓ ß«í«⌐ µÑ½Ñó«⌐ αÑú¿ßΓα. ¥Γ«Γ «»Ñαá¡ñ ¼«ªÑΓ íδΓ∞
- ½εíδ¼ 16- ¿½¿ 32-αáºα∩ñ¡δ¼ «íΘ¿¼ αÑú¿ßΓα«¼. éΓ«α«⌐ «»Ñαá¡ñ ¼«ªÑΓ
- ºáñáóáΓ∞ß∩ ½εíδ¼ 16- ¿½¿ 32-αáºα∩ñ¡δ¼ «íΘ¿¼ αÑú¿ßΓα«¼ ¿½¿ ∩τÑ⌐¬«⌐
- »á¼∩Γ¿. ÉẼÑαδ ñóπσ «»Ñαá¡ñ«ó ñ«½ª¡δ ß«ó»áñáΓ∞. àß½¿ αѺπ½∞ΓáΓ,
- αáßß¼áΓα¿óáѼδ⌐, ¬á¬ º¡áτÑ¡¿Ñ ß« º¡á¬«¼, ß½¿Φ¬«¼ óѽ¿¬, τΓ«íδ Ñú«
- ¼«ª¡« í佫 αẼÑßΓ¿Γ∞ ó »α¿Ñ¼¡¿¬Ñ, Γ« πßΓá¡áó½¿óáεΓß∩ Σ½áú¿ »ÑαÑ-
- ¡«ßá ¿ »ÑαÑ»«½¡Ñ¡¿∩.
-
- èᬠ¼«ª¡« «ª¿ñáΓ∞, ó »α«µÑßß«αÑ 80386 ¿¼ÑεΓß∩ Γá¬ªÑ αáßΦ¿-
- αÑ¡¡δÑ Σ«α¼δ ¿¡ßΓαπ¬µ¿¿ IMUL ñ½∩ »α«µÑßß«α«ó 8086/80186/80286,
- »«ññÑনóáεΘ¿Ñ 32-αáºα∩ñ¡δÑ «»Ñαá¡ñδ. ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ ¬«ñÑ
- ECX π¼¡«ªáÑΓß∩ ¡á 1000000000h, á αѺπ½∞ΓáΓ ß«σαá¡∩ÑΓß∩ ó αÑú¿ßΓαÑ
- EBP:
-
- imul ebp,ecx,100000000h
-
- á ß½ÑñπεΘá∩ ¿¡ßΓαπ¬µ¿∩ π¼¡«ªáÑΓ ECX ¡á EBX, ºá»¿ßδóá∩ αѺπ½∞ΓáΓ ó
- EDX:EAX:
-
- imul ebx
-
-
-
-
- TASM2 #3-5/䫬 = 164 =
-
- ùÑαÑñ«óá¡¿Ñ 16-αáºα∩ñ¡δσ ¿ 32-αáºα∩ñ¡δσ ¿¡ßΓαπ¬µ¿⌐ ¿ ßÑú¼Ñ¡Γ«ó
- -----------------------------------------------------------------
-
- Äíδτ¡« óá¼ ΓαÑíπÑΓß∩ ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« 16-αáºα∩ñ¡δÑ ßÑú-
- ¼Ñ¡Γδ (USE16). ì« ñáªÑ ó φΓ«¼ ß½πτáÑ óδ ¼«ªÑΓÑ »«½∞º«óáΓ∞ß∩ ó
- áα¿Σ¼ÑΓ¿τÑ߬¿σ ¿ ½«ú¿τÑ߬¿σ «»Ñαᵿ∩σ 32-í¿Γ«ó묨 αÑú¿ßΓαἿ.
-
- éδ ¼«ªÑΓÑ Γá¬ªÑ ¿ß»«½∞º«óáΓ∞ ½εí«Ñ ß«τÑΓá¡¿Ñ 16-í¿Γ«óδσ ¿ 32
- -í¿Γ«óδσ ßÑú¼Ñ¡Γ«ó ¬«ñá ¿ ñá¡¡δσ. àß½¿ óδ ¡Ñ »¿ΦÑΓÑ »α«úαá¼¼¡«Ñ
- «íÑß»ÑτÑ¡¿Ñ ñ½∩ «»Ñαᵿ«¡¡«⌐ ß¿ßΓÑ¼δ ¿ ¡Ñ º¡áÑΓÑ ó Γ«τ¡«ßΓ¿, τΓ«
- óδ ñѽáÑΓÑ, Γ« ¡ÑΓ áíß«½εΓ¡« ¡¿¬á¬¿σ »α¿τ¿¡ ¿ß»«½∞º«óáΓ∞ 32-í¿Γ«-
- óδÑ ßÑú¼Ñ¡Γδ ¬«ñá. àß½¿ óδ ¡Ñ »α¿¼ÑΓÑ ß»Ñµ¿á½∞¡δσ ¼Ñα ñ½∩ »ÑαѬ-
- ½ετÑ¡¿∩ »α«µÑßß«αá ó αѪ¿¼, ¡Ñ«íσ«ñ¿¼δ⌐ ñ½∩ óδ»«½¡Ñ¡¿∩ 32-í¿Γ«óδσ
- ßÑú¼Ñ¡Γ«ó ¬«ñá, Γ« »«ñ π»αáó½Ñ¡¿Ñ¼ DOS «¡¿ αáí«ΓáΓ∞ ¡Ñ ß¼«úπΓ.
- ū߽ÑñπεΘ¿Ñ «»Ñαᵿ«¡¡δÑ ß¿ßΓѼδ 󫺼«ª¡« »αÑñ«ßΓáó∩Γ óá¼ ß»«ß«-
- íδ, ß »«¼«Θ∞ε ¬«Γ«αδσ ¼«ª¡« ß »«½∞º«⌐ αáí«ΓáΓ∞ ß 32-αáºα∩ñ¡δ¼¿
- ßÑú¼Ñ¡ΓἿ, ¡« »«¬á »α¿¼Ñ¡∩Γ∞ ¿σ ¡Ñ ß½ÑñπÑΓ.
-
- Äñ¡á¬« óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ 32-αáºα∩ñ¡δÑ ßÑú¼Ñ¡Γδ ñá¡¡δσ ¿
- ¿ß»«½∞º«óáΓ∞ ó ßó«Ñ⌐ »α«úαá¼¼Ñ »αÑ¿¼πΘÑßΓóá "ßó«í«ñ¡«⌐" áñαÑßá-
- µ¿¿, «íÑß»Ñτ¿óáѼ«⌐ 32-αáºα∩ñ¡δ¼¿ αÑú¿ßΓαἿ »α«µÑßß«αá 80386.
-
- äáóá⌐ΓÑ αáßß¼«Γα¿¼ «ß¡«ó¡δÑ á߻ѬΓδ ¿ß»«½∞º«óá¡¿∩ ßÑú¼Ñ¡Γ«ó
- USE16 ¿ USE32. îá¬ß¿¼á½∞¡δ⌐ αẼÑα αÑú¿ßΓα«ó USE16 ¡Ñ ¼«ªÑΓ »αÑ-
- óδΦáΓ∞ 64è, »«φΓ«¼π ¡á ½εíπε ∩τÑ⌐¬π ßÑú¼Ñ¡Γá USE16 ¼«ª¡« ßßδ½áΓ∞-
- ß∩ ß »«¼«Θ∞ε 16-αáºα∩ñ¡«ú« áñαÑßá. æ ñαπú«⌐ ßΓ«α«¡δ, ßÑú¼Ñ¡Γδ
- Γ¿»á USE32 ¼«úπΓ ¿¼ÑΓ∞ αẼÑα ñ« 4 ú¿úáíá⌐Γ, »«φΓ«¼π ñ½∩ ßß佬¿
- ¡á »α«¿ºó«½∞¡πε ∩τÑ⌐¬π Γᬫú« ßÑú¼Ñ¡Γá ΓαÑíπÑΓß∩ ¿ß»«½∞º«óáΓ∞ 32-
- αáºα∩ñ¡δ⌐ áñαÑß. (Åα¿¼Ñτá¡¿Ñ: æ ßÑú¼Ñ¡ΓἿ ¬«ñá Γ¿»á USE32 ¼«ª¡«
- αáí«ΓáΓ∞ Γ«½∞¬« ó ºáΘ¿ΘÑ¡¡«¼ αѪ¿¼Ñ.)
-
- ƒß¡«, τΓ« Ñß½¿ óá¼ ¡πªÑ¡ ßÑú¼Ñ¡Γ, αẼÑα ¬«Γ«α«ú« »αÑóδΦáÑΓ
- 64è, Γ« óδ ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ ßÑú¼Ñ¡Γ Γ¿»á USE32. Äñ¡á¬«, ¡ÑΓ
- Γᬫ⌐ ß¿Γπᵿ¿, »α¿ ¬«Γ«α«⌐ óδ «í∩ºáΓѽ∞¡« ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞
- ßÑú¼Ñ¡Γ USE16. çñÑß∞ óδ ¼«ªÑΓÑ πñ¿ó¿Γ∞ß∩ ¿ »«ñπ¼áΓ∞, »«τѼπ íδ ¡Ñ
- π»α«ßΓ¿Γ∞ ºáñáτπ ¿ ¡Ñ ¿ß»«½∞º«óáΓ∞ ßÑú¼Ñ¡Γδ USE32 óßÑ óαѼ∩.
- ÄΓóÑΓ ºá¬½ετáÑΓß∩ ó Γ«¼ ß»«ß«íÑ, ß »«¼«Θ∞ε ¬«Γ«α«ú« »α«µÑßß«α
- 80386 »«ññÑনóáÑΓ «»Ñαá¡ñδ αẼÑα«¼ ó ß½«ó« ¿ ñó«⌐¡«Ñ ß½«ó«, á
- Γá¬ªÑ 16- ¿ 32-αáºα∩ñ¡δÑ ß¼ÑΘÑ¡¿∩.
-
- Åα«µÑßß«α 80386 ∩ó½∩ÑΓß∩ αáºó¿Γ¿Ñ¼ »α«µÑßß«αá 8086, ó ¬«Γ«-
- α«¼ ñ½∩ αẽ¿τ¿∩ ¼Ñªñπ ñóπ¼∩ Ññ¿¡ßΓóÑ¡¡« 󫺼«ª¡δ¼¿ αẼÑαἿ
- «»Ñαá¡ñ«ó (8 ¿ 16 í¿Γ) ¿ß»«½∞ºπÑΓß∩ «ñ¿¡ í¿Γ. é »α«µÑßß«αÑ 8086
- ¿¼ÑÑΓß∩ «ñ¡« ¼¡«ªÑßΓó« αѪ¿¼«ó áñαÑßᵿ¿ (φΓ« πªÑ º¡á¬«¼δÑ óá¼
- αѪ¿¼δ áñαÑßᵿ¿, »α¿ ¬«Γ«αδσ ¿ß»«½∞ºπεΓß∩ αÑú¿ßΓαδ BX, SI, DI ¿
- BP), »α¿ ¬«Γ«αδσ »«ññÑনóáεΓß∩ Γ«½∞¬« 16-í¿Γ«óδÑ ß¼ÑΘÑ¡¿∩. é
-
- TASM2 #3-5/䫬 = 165 =
-
- ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ¿ß»«½∞ºπÑΓß∩ «»Ñαá¡ñ αẼÑα«¼ ó 8
- í¿Γ, á ñ½∩ áñαÑßᵿ¿ ¬ »á¼∩Γ¿ ¿ß»«½∞ºπÑΓß∩ 16-í¿Γ«óδ⌐ αѪ¿¼ áñαÑ-
- ßᵿ¿ (»α¿¡∩Γδ⌐ ó »α«µÑßß«αÑ 8086):
-
- mov al,[bx+1000h]
-
- é ßÑú¼Ñ¡Γáσ ¬«ñá USE16 »α«µÑßß«α 80386 ñ½∩ óδí«αá ¼Ñªñπ 8- ¿
- 16-αáºα∩ñ¡δ¼¿ «»Ñαá¡ñἿ ¿ß»«½∞ºπÑΓß∩ «íδτ¡« ëà ªÑ í¿Γ, τΓ« ¿ ó
- »α«µÑßß«αÑ 8086, ¿ 16-í¿Γ«ó«Ñ ß¼ÑΘÑ¡¿Ñ. Äñ¡á¬« ß »«¼«Θ∞ε »αÑΣ¿¬ßá
- αẼÑαá «»Ñαá¡ñá (066h) ½εíπε ¿¡ßΓαπ¬µ¿ε ßÑú¼Ñ¡Γá USE16 ¼«ª¡«
- »αÑ«íαẫóáΓ∞ Γᬿ¼ «íαẫ¼, τΓ« «¡á íπñÑΓ »«ññÑনóáΓ∞ 32-αáº-
- α∩ñ¡δÑ «»Ñαá¡ñδ. é φΓ«¼ ß½πτáÑ í¿Γ αẼÑαá Γᬫ⌐ ¿¡ßΓαπ¬µ¿¿ »«º-
- ó«½∩ÑΓ óδíαáΓ∞ ¼Ñªñπ 8- ¿ 32-í¿Γ«ó묨 «»Ñαá¡ñἿ, á ¡Ñ ¼Ñªñπ 8- ¿
- 16-í¿Γ«ó묨.
-
- ǡὫú¿τ¡«, ½εíπε ¿¡ßΓαπ¬µ¿ε ó ßÑú¼Ñ¡ΓÑ USE16 ¼«ª¡« »αÑ«íαá-
- º«óáΓ∞ Γᬿ¼ «íαẫ¼, τΓ« íπñπΓ ¿ß»«½∞º«óáΓ∞ß∩ 32-í¿Γ«óδÑ αѪ¿¼δ
- áñαÑßᵿ¿ »α«µÑßß«αá 80386 (í«½∞Φ«⌐ áñαÑß, ¬á¬ «»¿ßδóὫß∞ ó αáº-
- ñÑ½Ñ "ì«óδÑ αѪ¿¼δ áñαÑßᵿ¿"). ä½∩ φΓ«ú« »ÑαÑñ ¿¡ßΓαπ¬µ¿Ñ⌐ »«¼Ñ-
- ΘáÑΓß∩ »αÑΣ¿¬ß αẼÑαá áñαÑßá (067h).
-
- ìá»α¿¼Ñα, ó ¬«ñÑ, áßßÑ¼í½¿απѼ«¼ ¿º ß½ÑñπεΘÑú« ¿ßσ«ñ¡«ú«
- ΓѬßΓá:
-
- .
- .
- .
- .386
- .
- .
- .
- DataSeg SEGMENT USE16
- TestLoc DD ?
- DataSeg ENDS
- .
- .
- .
- DataSeg SEGMENT USE16
- mov ax,DataSeg
- mov ds,ax
- ASSUME DS:DataSeg
- db 66h
- mov ax,WORD PTR [TestLoc]
- .
- .
- .
-
- TASM2 #3-5/䫬 = 166 =
-
- CodeSeg ENDS
- .
- .
- .
-
- Γᬠ¬á¬ »αÑΣ¿¬ß αẼÑαá «»Ñαá¡ñá »αÑ«íαáºπÑΓ αẼÑα «»Ñαá¡ñ«ó ¿¡-
- ßΓαπ¬µ¿¿ ó 32 í¿Γá, 4 íá⌐Γá TestLoc ºáúαπªáεΓß∩ ó EAX, á ¡Ñ 2
- íá⌐Γá TestLoc ó AX.
-
- èα«¼Ñ Γ«ú«, ¿¡ßΓαπ¬µ¿¿ ßÑú¼Ñ¡Γ«ó ¬«ñá USE32 «íδτ¡« «íαáΘáεΓ-
- ß∩ ¬ 8- ¿½¿ 32-αáºα∩ñ¡δ¼ «»Ñαá¡ñá¼ ¿ 32-αáºα∩ñ¡δÑ αѪ¿¼δ áñαÑßá-
- µ¿¿ »α«µÑßß«αá 80386. Äñ¡á¬«, τΓ«íδ «Γñѽ∞¡δÑ ¿¡ßΓαπ¬µ¿¿ αáí«Γ὿
- ó 16-αáºα∩ñ¡«¼ αѪ¿¼Ñ (Γ« ÑßΓ∞ ó αѪ¿¼Ñ »α«µÑßß«αá 8086 ß «»Ñαá¡-
- ñἿ αẼÑα«¼ ó ß½«ó« ¿ ¼á½δ¼ áñαÑß«¼), ¬á¬ ó ßÑú¼Ñ¡Γáσ USE16,
- ¼«ª¡« ¿ß»«½∞º«óáΓ∞ »αÑΣ¿¬ßδ ºáñá¡¿∩ αẼÑαá «»Ñαá¡ñá ¿ αẼÑαá
- áñαÑßá.
-
- ìÑ ßΓ«¿Γ íÑß»«¬«¿Γ∞ß∩ « Γ«¼, τΓ«íδ ¿ºπτáΓ∞ »αÑΣ¿¬ßδ ºáñá¡¿∩
- αẼÑα«ó «»Ñαá¡ñ«¼ ¿ áñαÑß«ó ó »α«úαá¼¼áσ ñ½∩ »α«µÑßß«αá 80386.
- Æπαí« ÇßßѼí½Ñα óδ»«½¡∩ÑΓ úÑ¡Ñαáµ¿ε »αÑΣ¿¬ß«ó, ¡Ñ«íσ«ñ¿¼δσ ñ½∩
- ¿ß»«½∞º«óá¡¿∩ 16-αáºα∩ñ¡δσ ßαÑñßΓó ó ßÑú¼Ñ¡Γáσ USE32 ¿ 32-αáºα∩ñ-
- ¡δσ ßαÑñßΓó ó ßÑú¼Ñ¡Γáσ USE16 »α«ºαáτ¡δ¼ ñ½∩ »α«úαá¼¼¿ßΓá «íαá-
- º«¼. ìá»α¿¼Ñα, Ñß½¿ óδ ó ßÑú¼Ñ¡ΓÑ ¬«ñá USE32 ¿ß»«½∞ºπÑΓÑ ß½Ññπε-
- Θπε ¿¡ßΓαπ¬µ¿ε:
-
- mov [bx],ax
-
- Γ« Æπαí« ÇßßѼí½Ñα áóΓ«¼áΓ¿τÑ߬¿ ó¬½ετ¿Γ »ÑαÑñ ¿¡ßΓαπ¬µ¿Ñ⌐ »αÑ-
- Σ¿¬ß ºáñá¡¿∩ αẼÑαá «»Ñαá¡ñá ¿ αẼÑαá áñαÑßá. îδ »«∩ß¡∩Ѽ ºñÑß∞
- »αÑΣ¿¬ßδ π¬áºá¡¿∩ αẼÑα«ó Γ«½∞¬« ñ½∩ Γ«ú«, τΓ«íδ óδ »«¡∩½¿ «ß-
- ¡«ó¡«⌐ ¼«¼Ñ¡Γ ó óδí«αÑ ¼Ñªñπ 16- ¿ 32-í¿Γ«ó묨 αẼÑαἿ ßÑú¼Ñ¡-
- Γ«ó: ¡πª¡« ¼¿¡¿¼¿º¿α«óáΓ∞ τ¿ß½« úÑ¡Ñα¿απѼδσ »αÑΣ¿¬ß«ó ºáñá¡¿∩
- αẼÑαá.
-
- ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« óδ óδíα὿ ßÑú¼Ñ¡Γ USE16, á ºáΓѼ
- ßßδ½áÑΓÑß∞ ¡á «»Ñαá¡ñδ αẼÑα«¼ ó ñó«⌐¡«Ñ ß½«ó«, áñαÑßπѼδÑ ß »«-
- ¼«Θ∞ε 32-í¿Γ«óδσ αѪ¿¼«ó áñαÑßᵿ¿, ¡á»α¿¼Ñα:
-
- mov eax,[edx+ecx*2+1]
-
- Æπαí« ÇßßѼí½Ñαπ »α¿Φ½«ß∞ íδ úÑ¡Ñα¿α«óáΓ∞ »αÑΣ¿¬ßδ ºáñá¡¿∩
- αẼÑα«ó «»Ñαá¡ñ«ó ¿ αẼÑαá áñαÑßá »αá¬Γ¿τÑ߬¿ ñ½∩ ¬áªñ«⌐ ¿¡ß-
- Γαπ¬µ¿¿ óáΦÑ⌐ »α«úαá¼¼δ, τΓ« »α¿óѽ« íδ ¬ º¡áτ¿Γѽ∞¡«¼π πóѽ¿τÑ-
- ¡¿ε ÑÑ αẼÑαá ¿ »«ΓÑα∩¼ ó »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿. Åα¿ ¿ß»«½∞º«óá¡¿¿
- ªÑ ßÑú¼Ñ¡Γá USE32 ó Γ«⌐ ªÑ »α«úαá¼¼Ñ »αÑΣ¿¬ßδ ¿ß»«½∞º«óáΓ∞ »αá¬-
- Γ¿τÑ߬¿ ¡Ñ »«ΓαÑí«óὫß∞ íδ.
-
- TASM2 #3-5/䫬 = 167 =
-
-
- ÆÑ»Ñα∞ óδ ¼«ªÑΓÑ ó¿ñÑΓ∞, τΓ« »α«µÑßß óδí«αá ßÑú¼Ñ¡Γá ¡Ñß-
- ¬«½∞¬« í«½ÑÑ ß½«ªÑ¡, τѼ φΓ« ¼«ªÑΓ »«¬áºáΓ∞ß∩. àß½¿ óá¼ ¡πªÑ¡
- ßÑú¼Ñ¡Γ, »αÑóδΦáεΘ¿⌐ 64è, óδ ñ«½ª¡δ óδíαáΓ∞ ßÑú¼Ñ¡Γ Γ¿»á USE32.
- àß½¿ óá¼ ΓαÑíπÑΓß∩ ßÑú¼Ñ¡Γ, ¡Ñ »αÑóδΦáεΘ¿⌐ »« αẼÑαπ 64è, óá¼
- ß½ÑñπÑΓ óδíαáΓ∞ ßÑú¼Ñ¡Γ USE32, Ñß½¿ óδ τáΘÑ ¿ß»«½∞ºπÑΓÑ 32-í¿Γ«-
- óδÑ, á ¡Ñ 16-í¿Γ«óδÑ «»Ñαá¡ñδ ¿ αѪ¿¼δ áñαÑßᵿ¿. àß½¿ ªÑ óÑα¡«
- «íαáΓ¡«Ñ, Γ« ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ ßÑú¼Ñ¡Γδ Γ¿»á USE16. ìÑ óßÑúñá
- ½Ñú¬« ߬áºáΓ∞, ¬á¬«⌐ Γ¿» ßÑú¼Ñ¡Γá íπñÑΓ í«½ÑÑ φΣΣÑ¬Γ¿ó¡δ¼, ¡« óδ
- óßÑúñá ¼«ªÑΓÑ áßßÑ¼í½¿α«óáΓ∞ ßó«ε »α«úαá¼¼π ΓѼ ¿½¿ ñαπú¿¼ ß»«ß«-
- í«¼ ¿ »«ß¼«ΓαÑΓ∞, ó ¬á¬«¼ ß½πτáÑ »«½πτÑ¡¡δ⌐ ¬«ñ íπñÑΓ í«½ÑÑ ¬«¼-
- »á¬Γ¡δ¼.
-
- ÆÑ»Ñα∞ óδ ¼«ªÑΓÑ Γá¬ªÑ πó¿ñÑΓ∞, ñ½∩ τÑú« ¿¡«úñá ¡Ñ«íσ«ñ¿¼δ
- «»Ñαᵿ¿ LARGE ¿ SMALL, τΓ«íδ ¼«ª¡« í佫 áßßÑ¼í½¿α«óáΓ∞ «»ÑαѪáε-
- Θ¿Ñ ßß佬¿. ū߬«½∞¬π Γ¿» USE ßÑú¼Ñ¡ΓÑ ¬«ñá «»αÑñѽ∩ÑΓ ¿ß»«½∞ºπÑ-
- ¼δÑ »« π¼«½τá¡¿ε αẼÑαδ áñαÑß¡δσ ßß佫¬, Γ« »αÑñ»«½áúáÑΓß∩, τΓ«
- «»ÑαѪáεΘ¿Ñ ßß佬¿ ¿¼Ñεà ëà ªÑ αẼÑα, τΓ« ¿ ßÑú¼Ñ¡Γδ ¬«ñá. Ä»Ñ-
- αᵿε LARGE ¡πª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ «»ÑαѪáεΘ¿σ ßß佫¬ ¿º ßÑú¼Ñ¡-
- Γ«ó ¬«ñá USE16 ¡á ßÑú¼Ñ¡Γδ ñá¡¡δσ USE32, á «»Ñαᵿε SMALL óδ ¼«-
- ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ñ½∩ π¬áºá¡¿∩ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ¿ß»«½∞º«óá¡¿∩ ñ½∩
- «»ÑαѪáεΘ¿σ ßß佫¬ ¿º ßÑú¼Ñ¡Γá ¬«ñá USE16 16-í¿Γ«ó«⌐ áñαÑßᵿ¿.
-
- Åα¿¼Ñα Σπ¡¬µ¿¿ ñ½∩ »α«µÑßß«αá 80386
- -----------------------------------------------------------------
-
- äáóá⌐ΓÑ αáßß¼«Γα¿¼ ΓÑ»Ñα∞ »α¿¼Ñα »α«úαá¼¼δ ñ½∩ »α«µÑßß«αá
- 80386. ìÑ»½«σ« í佫 íδ αáßß¼«ΓαÑΓ∞ »«½¡πε »α«úαá¼¼π ñ½∩ »α«µÑßß«-
- αá 80386, «ñ¡á¬« »«ß¬«½∞¬π «»Ñαᵿ«¡¡δÑ ß¿ßΓѼδ, ¿ß»«½∞ºπεΘ¿Ñ
- »α«µÑßß«α 80386, ¡Ñ »«½πτ¿½¿ ÑΘÑ ñ«ßΓáΓ«τ¡« Φ¿α«¬«ú« αáß»α«ßΓαá-
- ¡Ñ¡¿∩ (»«φΓ«¼π ¼δ ¡Ñ ¼«ªÑ¼ ¿ß»«½∞º«óáΓ∞ ßΓá¡ñáαΓ¡δÑ ºá»α«ßδ ¬ »á-
- ¼∩Γ¿, ºá»α«ßδ ñ½∩ »«½πτÑ¡¿∩ ¬«ñá ¬½áó¿Φ¿, óδó«ñá ¡á φ¬αá¡ ñ¿ß»½Ñ∩
- ¿ ºáóÑαΦÑ¡¿∩ »α«úαá¼¼δ). é¼ÑßΓ« φΓ«ú« ñáóá⌐ΓÑ αáßß¼«Γα¿¼ »«½¡πε
- Σπ¡¬µ¿ε, ¡á»¿ßá¡¡πε ¡á ÇßßѼí½ÑαÑ ñ½∩ »α«µÑßß«αá 80386.
-
- é ¡áΦѼ »α¿¼ÑαÑ Σπ¡¬µ¿¿ ß ¿¼Ñ¡Ñ¼ CalcPrimes ¿ß»«½∞ºπεΓß∩
- »αÑ¿¼πΘÑßΓóá í«½∞Φ¿σ αẼÑα«¼ ßÑú¼Ñ¡Γ«ó USE32 ñ½∩ ταѺóδτá⌐¡«
- ½Ñú¬«ú« óδτ¿ß½Ñ¡¿∩ óßÑσ »α«ßΓδσ τ¿ßѽ ó ºáñá¡¡«¼ ñ¿á»áº«¡Ñ. öπ¡¬-
- µ¿∩ »α«ßΓ« óδτ¿ß½∩ÑΓ óßÑ »α«¿ºóÑñÑ¡¿∩ ó ñ¿á»áº«¡Ñ «Γ 2 ñ« ¼á¬ß¿-
- ¼á½∞¡«ú« »α«ßΓ«ú« τ¿ß½á, »«¼Ñτá∩ ¬áªñ«Ñ »α«¿ºóÑñÑ¡¿Ñ ó «ñ¡«⌐
- í«½∞Φ«⌐ Γáí½¿µÑ, ¬á¬ ¡Ñ »α«ßΓ«Ñ. Åα¿ ¿ß»«½∞º«óá¡¿¿ »α«µÑßß«αá
- 8086 ñá¡¡δ⌐ ¼ÑΓ«ñ ¼«ú íδ σ«α«Φ« αáí«ΓáΓ∞ Γ«½∞¬« ñ½∩ ¼áßß¿ó«ó, ¡Ñ
- »αÑóδΦáεΘ¿σ 64è (¼á¬ß¿¼á½∞¡δ⌐ αẼÑα ßÑú¼Ñ¡Γ«ó), ¿ «¬áºá½ß∩ íδ
- ß«óÑαΦÑ¡¡« ¡Ñαáí«Γ«ß»«ß«í¡δ¼ »α¿ ñ«ßΓ¿ªÑ¡¿¿ 1 ¼Ñúáíá⌐Γá (¼á¬ß¿-
- ¼á½∞¡δ⌐ «íΩѼ »á¼∩Γ¿, ¬ ¬«Γ«α«⌐ ¼«ªÑΓ áñαÑß«óáΓ∞ß∩ »α«µÑßß«α
-
- TASM2 #3-5/䫬 = 168 =
-
- 8086).
-
- é «Γ½¿τ¿Ñ «Γ φΓ«ú« ßÑú¼Ñ¡Γδ USE32 ¿ 32-αáºα∩ñ¡δÑ αÑú¿ßΓαδ
- »«ºó«½∩εΓ ó »α«µÑßß«αÑ 80386 ½Ñú¬« αáí«ΓáΓ∞ ß Γáí½¿µÑ⌐, αẼÑα
- ¬«Γ«α«⌐ ñ«ßΓ¿úáÑΓ 4 ú¿úáíá⌐Γ. öá¬Γ¿τÑ߬¿, »α«µÑßß«α 80386 ¼«ªÑΓ
- ñáªÑ ß »«¼«Θ∞ε ßΓαá¡¿τ¡«⌐ «αúá¡¿ºáµ¿¿ »á¼∩Γ¿ αáí«ΓáΓ∞ ß »á¼∩Γ∞ε
- «íΩѼ«¼ ó ΓÑαáíá⌐Γ (1000 ú¿úáíá⌐Γ)! è«¡Ñτ¡«, óαѼ∩ óδτ¿ß½Ñ¡¿∩
- »α«ßΓδσ τ¿ßѽ ó φΓ«¼ ß½πτáÑ «¬áºá½«ß∞ íδ »α¿ φΓ«¼ ¡Ñ»α¿Ñ¼½Ñ¼« óÑ-
- ½¿¬«, ¡« ¼δ σ«Γ¿¼ «íαáΓ¿Γ∞ ó¡¿¼á¡¿Ñ ¡á Γ«, τΓ« ó «Γ½¿τ¿Ñ «Γ »α«-
- µÑßß«α«ó 8086 ¿ 80286 áασ¿ΓѬΓπαá áñαÑßᵿ¿ ¬ »á¼∩Γ¿ »α«µÑßß«αá
- 80386 ¡Ñ ∩ó½∩ÑΓß∩ «úαá¡¿τ¿óáεΘ¿¼ Σá¬Γ«α«¼ ó »α«úαá¼¼áσ, úñÑ ΓαÑ-
- íπÑΓß∩ ¿ß»«½∞º«óáΓ∞ º¡áτ¿Γѽ∞¡δÑ «íΩÑ¼δ »á¼∩Γ¿.
-
- êßσ«ñ¡δ⌐ ΓѬßΓ Σπ¡¬µ¿¿ CalcPrimes óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «íαá-
- º«¼:
-
- ;
- ; Åα¿¼Ñα ¬«ñá ñ½∩ »α«µÑßß«αá 80386 ñ½∩ óδτ¿ß½Ñ¡¿∩ óßÑσ
- ; »α«ßΓδσ τ¿ßѽ ó ñ¿á»áº«¡Ñ «Γ 0 ñ« MAX_PRIME ó¬½ετ¿Γѽ∞¡«.
- ;
- ; éó«ñ: ÄΓßπΓßΓóπÑΓ.
- ;
- ; éδó«ñ:
- ; ES:EAX - π¬áºáΓѽ∞ ¡á PrimeFlags, ¬«Γ«αδ⌐ ß«ñÑαª¿Γ 1 ñ½∩
- ; ß¼ÑΘÑ¡¿∩ ¬áªñ«ú« τ¿ß½á, ¬«Γ«α«Ñ ∩ó½∩ÑΓß∩ »α«ßΓδ¼, ¿ 0 ñ½∩
- ; ß¼ÑΘÑ¡¿∩ ¬áªñ«ú« τ¿ß½á, ¡Ñ ∩ó½∩εΘÑú«ß∩ »α«ßΓδ¼.
- ;
- ; ìáαπΦáѼδÑ αÑú¿ßΓαδ:
- ; EAX, EBX
- ;
- ; êß»«½∞ºπÑΓß∩ á½ú«α¿Γ¼, »α¿óÑñÑ¡¡δ⌐ ùáα½∞º«¼ Åѵ«½∞ñ«¼ ó
- ; ªπα¡á½Ñ PC Magazine (Γ«¼ 7, ¡«¼Ñα 2).
- ;
- .386
- MAX_PRIMES EQU 1000000 ; óÑασ¡∩∩ úαá¡¿µá
- ; »α«óÑન »α«ßΓ«ú«
- ; τ¿ß½á
- DataSeg SEGMENT USE32
- PrimeFlags DB (MAX_PRIME + 1) DUP (?)
- DataSeg ENDS
-
- CodeSeg SEGMENT USE32
- ASSUME CS:CodeSeg
- CalcPrimes PROC
- push ds ; ß«σαá¡¿Γ∞ αÑú¿ßΓα DS óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
-
- TASM2 #3-5/䫬 = 169 =
-
- mov ax,DataSeg
- mov ds,ax
- ASSUME DS:DataSeg
- mov es,ax
- ASSUME ES:DataSeg
- ;
- ; ÅαÑñ»«½«ª¿¼, τΓ« óßÑ τ¿ß½á ó ºáñá¡¡«¼ ñ¿á»áº«¡Ñ ∩ó½∩εΓß∩
- ; »α«ßΓ묨.
- ;
- mov al,1
- mov adi,OFFSET PrimeFlags
- mov ecx,MAX_PRIME+1
- cld
- rep stosb
- ;
- ; ÆÑ»Ñα∞ ¿ß¬½ετ¿¼ óßÑ τ¿ß½á, ¡Ñ ∩ó½∩εΘ¿Ñß∩ »α«ßΓ묨, óδτ¿ß½∩∩ óßÑ
- ; »α«¿ºóÑñÑ¡¿∩ (¬α«¼Ñ »α«¿ºóÑñÑ¡¿⌐ ¡á 1), ¼Ñ¡∞Φ¿Ñ ¿½¿ αáó¡δÑ
- ; MAX_PRIMES, óßÑσ τ¿ßѽ ñ« MAX_PRIMES.
- ;
- mov eax,2 ; ¡áτ¡Ñ¼ ß 2, Γᬠ¬á¬ 0 ¿ 1
- ; ºáóÑñ«¼« »α«ßΓδ ¿ ¡Ñ ¼«úπΓ
- ; ¿ß»«½∞º«óáΓ∞ß∩ ñ½∩ ¿ß¬½ετÑ¡¿∩
- ; »α«¿ºóÑñÑ¡¿⌐
- PrimeLoop:
- mov ebx,eax ; ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ ñ½∩
- ; óδτ¿ß½Ñ¡¿∩ óßÑσ »α«¿ºóÑñÑ¡¿⌐
- MultipleLoop:
- add ebx,eax ; óδτ¿ß½¿Γ∞ ß½ÑñπεΘÑÑ »α«¿ºóÑ-
- ; ñÑ¡¿Ñ
- cmp ebx,MAX_PRIME ; ¼δ »α«óÑα¿½¿ óßÑ »α«¿ºóÑñÑ¡¿∩
- ; ñá¡¡«ú« τ¿ß½á?
- ja CheckNextBaseValue ; ñá, »ÑαÑ⌐ñѼ ¬ ß½ÑñπεΘѼπ
- ; τ¿ß½π
- mov [PrimeFlags+ebx],0 ; φΓ« τ¿ß½« ¡Ñ ∩ó½∩ÑΓß∩
- ; »α«ßΓδ¼, Γᬠ¬á¬ Ñú« ¼«ª¡«
- ; »«½πτ¿Γ∞ ó αѺπ½∞ΓáΓÑ »α«¿º-
- ; óÑñÑ¡¿∩
- jmp MultipleLoop
- CheckNextBaseValue:
- inc eax ; ßßδ½¬á ¡á ß½ÑñπεΘÑÑ ¡áτá½∞¡«Ñ
- ; º¡áτÑ¡¿Ñ (ñ½∩ óδτ¿ß½Ñ¡¿∩
- ; óßÑσ »α«¿ºóÑñÑ¡¿⌐)
- cmp eax,MAX_PRIME ; ¼δ ¿ß¬½ετ¿½¿ óßÑ »α«¿ºóÑñÑ-
- ; ¡¿∩?
- jb PrimeLoop ; ¡ÑΓ, »α«óÑα¿Γ∞ ß½ÑñπεΘÑÑ
- ; ¼¡«ªÑßΓó« »α«¿ºóÑñÑ¡¿⌐
-
- TASM2 #3-5/䫬 = 170 =
-
- ;
- ; 髺óαáΓ¿Γ∞ π¬áºáΓѽ∞ ¡á Γáí½¿µπ ßΓáΓπß«ó »α«ßΓδσ ¿ ¡Ñ »α«ßΓδσ
- ; τ¿ßѽ ó ES:EAX
- ;
- mov eax,OFFSET PrimeFlags
- pop ds ; ó«ßßΓá¡«ó¿Γ∞ DS óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
- ret
- CalcPrimes ENDP
- CodeSeg ENDS
- END
-
- ÄíαáΓ¿ΓÑ ó¡¿¼á¡¿Ñ ¡á Γ«, ¬á¬ ½Ñú¬« »α«µÑßß«α 80386 »«ºó«½∩-
- ÑΓ óá¼ «íαáíáΓδóáΓ∞ 32-í¿Γ«óδÑ µÑ½δÑ τ¿ß½á ¿ ¼áßß¿ó αẼÑα«¼
- 1000000 íá⌐Γ«ó. öá¬Γ¿τÑ߬¿ óß∩ Σπ¡¬µ¿∩ ºá¡¿¼áÑΓ Γ«½∞¬« 20 íá⌐Γ. é
- αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿∩ CalcPrimes ó«ºóαáΘáÑΓ í«½∞Φ«⌐ π¬á-
- ºáΓѽ∞ ñá½∞¡Ñú« Γ¿»á ¡á Γáí½¿µπ PrimeFlags, ó ¬«Γ«α«⌐ ß¼ÑΘÑ¡¿Ñ,
- ß««ΓóÑΓßΓóπεΘÑÑ ¬áªñ«¼π τ¿ß½π, ß«ñÑαª¿Γ 1, Ñß½¿ φΓ« τ¿ß½« »α«ß-
- Γ«Ñ, ¿ 0, Ñß½¿ τ¿ß½« ¡Ñ ∩ó½∩ÑΓß∩ »α«ßΓδ¼. ìá»α¿¼Ñα, PrimeFlag +3
- í佫 íδ αáó¡« 1, Γᬠ¬á¬ 3 - »α«ßΓ«Ñ τ¿ß½«, á PrimeFlag+4 - 0,
- Γᬠ¬á¬ 4 ¡Ñ ∩ó½∩ÑΓß∩ »α«ßΓδ¼.
-
- ÉẼÑα PrimeFlags ¿ ¼á¬ß¿¼á½∞¡«Ñ »α«óÑα∩Ѽ«Ñ τ¿ß½« «»αÑñѽ∩-
- εΓß∩ ß »«¼«Θ∞ε »α¿αáó¡Ñ¡¡«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá MAX_PRIME. ìá »αá¬Γ¿-
- ¬Ñ í佫 íδ í«½ÑÑ πñ«í¡«, Ñß½¿ íδ óδºδóáεΘá∩ »α«úαá¼¼á »ÑαÑñáóá½á
- íδ Σπ¡¬µ¿¿ CalcPrimes áñαÑß Γáí½¿µδ »α«¿ºó«½∞¡«ú« αẼÑαá, á Γá¬-
- ªÑ ¼á¬ß¿¼á½∞¡«Ñ »α«óÑα∩Ѽ«Ñ τ¿ß½« (¬«Γ«α«Ñ »αÑñßΓáó½∩ÑΓ ß«í«⌐
- ñ½¿¡π Γáí½¿µδ - 1). Æ«úñá φΓá Σπ¡¬µ¿∩ πñ«ó½ÑΓó«α∩½á íδ ½εíδ¼ »«Γ-
- αÑí¡«ßΓ∩¼ óδºδóáεΘÑ⌐ »α«úαá¼¼δ »« óδτ¿ß½Ñ¡¿ε »α«ßΓδσ τ¿ßѽ ¿ ÑÑ
- ¡Ñ ¡πª¡« í佫 íδ »ÑαÑáßßÑ¼í½¿α«óáΓ∞. é ñá¡¡«¼ »α¿¼ÑαÑ ½«¬á½∞¡á∩
- ¼ÑΓ¬á PrimeFlags ¿ß»«½∞ºπÑΓß∩ ú½áó¡δ¼ «íαẫ¼ ñ½∩ Γ«ú«, τΓ«íδ
- »α«¿½½εßΓα¿α«óáΓ∞ ¿ß»«½∞º«óá¡¿Ñ USE32.
-
- Åα¿óÑñѼ »α¿¼Ñα óÑαß¿¿ CalcPrimes, ¬«Γ«αá∩ αáí«ΓáÑΓ ß »ÑαÑ-
- ñáóáÑ¼δ¼¿ »áαá¼ÑΓαἿ (Γáí½¿µÑ⌐ ¿ ñ½¿¡«⌐ Γáí½¿µδ):
-
- ;
- ; Åα¿¼Ñα ¬«ñá ñ½∩ »α«µÑßß«αá 80386 ñ½∩ óδτ¿ß½Ñ¡¿∩ óßÑσ
- ; »α«ßΓδσ τ¿ßѽ ó ñ¿á»áº«¡Ñ «Γ 0 ñ« MAX_PRIME ó¬½ετ¿Γѽ∞¡«.
- ;
- ; éó«ñ: (»αÑñ»«½áúáÑΓß∩ ñá½∞¡¿⌐ ó맮ó Γ¿»á LARGE, »α¿ ¬«Γ«α«¼ ó
- ; ßΓÑ¬Ñ »ÑαÑñáÑΓß∩ 6 íá⌐Γ«ó):
- ;
- ; ESP+06h ¡á óσ«ñÑ (»«ß½Ññ¡¿⌐ ºá¡ÑßÑ¡¡δ⌐ ó ßΓѬ »áαá¼ÑΓα)
- ; »αÑñßΓáó½∩ÑΓ ß«í«⌐ º¡áτÑ¡¿Ñ αẼÑα«ó ó ñó«⌐¡«Ñ ß½«ó« -
- ; ¼á¬ß¿¼á½∞¡«Ñ τ¿ß½«, »α«óÑα∩Ѽ«Ñ ¡á Γ«, ∩ó½∩ÑΓß∩ ½¿ «¡«
-
- TASM2 #3-5/䫬 = 171 =
-
- ; »α«ßΓδ¼.
- ;
- ; ESP+0Ah ¡á óσ«ñÑ (»Ñαóδ⌐ ºá¡ÑßÑ¡¡δ⌐ ó ßΓѬ »áαá¼ÑΓα)
- ; »αÑñßΓáó½∩ÑΓ ß«í«⌐ π¬áºáΓѽ∞ LARGE ñá½∞¡Ñú« Γ¿»á
- ; (ß¼ÑΘÑ¡¿Ñ αẼÑα«¼ 6 íá⌐Γ«ó) ¡á Γáí½¿µπ, ¬«Γ«αá∩ ß«ñÑαª¿Γ 1
- ; ñ½∩ ß¼ÑΘÑ¡¿∩ ¬áªñ«ú« τ¿ß½á, ¬«Γ«α«Ñ ∩ó½∩ÑΓß∩ »α«ßΓδ¼, ¿ 0
- ; ñ½∩ ß¼ÑΘÑ¡¿∩ ¬áªñ«ú« τ¿ß½á, ¡Ñ ∩ó½∩εΘÑú«ß∩ »α«ßΓδ¼.
- ;
- ; éδó«ñ: ÄΓßπΓßΓóπÑΓ.
- ;
- ; ìáαπΦáѼδÑ αÑú¿ßΓαδ:
- ; EAX, EBX, EDX, EDI
- ;
- ; êß»«½∞ºπÑΓß∩ á½ú«α¿Γ¼, »α¿óÑñÑ¡¡δ⌐ ùáα½∞º«¼ Åѵ«½∞ñ«¼ ó
- ; ªπα¡á½Ñ PC Magazine (Γ«¼ 7, ¡«¼Ñα 2).
- ;
- .386
- CodeSeg SEGMENT USE32
- ASSUME CS:CodeSeg
- CalcPrimes PROC FAR
- push es ; ß«σαá¡¿Γ∞ ES
- ; óδºδóáεΘÑ⌐ »α«úαá¼¼δ
- push fs ; ß«σαá¡¿Γ∞ FS
- ; óδºδóáεΘÑ⌐ »α«úαá¼¼δ
- ;
- ; Å«½πτ¿Γ∞ »áαá¼ÑΓαδ.
- mov ecx,[esp+4+06h]
- lfs edx,[esp+4+0ah]
- ;
- ; ÅαÑñ»«½«ª¿¼, τΓ« óßÑ τ¿ß½á ó ºáñá¡¡«¼ ñ¿á»áº«¡Ñ ∩ó½∩εΓß∩
- ; »α«ßΓ묨.
- ;
- push fs
- pop es
- mov al,1 ; ES π¬áºδóáÑΓ ¡á
- ; ßÑú¼Ñ¡Γ Γáí½¿µδ
- mov adi,edx
- cld
- push ecx ; ß«σαá¡¿Γ∞ ¼á¬ß¿¼á½∞¡«Ñ
- ; »α«óÑα∩Ѽ«Ñ τ¿ß½«
- inc ecx ; ºáñáΓ∞ ¼á¬ß¿¼á½∞¡«Ñ
- ; τ¿ß½« (ó¬½ετ¿Γѽ∞¡«)
- rep stosb
- pop ecx ; »«½πτ¿Γ∞ ß¡«óá ¼á¬ß¿-
- ; ¼á½∞¡«Ñ »α«óÑα∩Ѽ«Ñ
- ; τ¿ß½«
-
- TASM2 #3-5/䫬 = 172 =
-
- ;
- ; ÆÑ»Ñα∞ ¿ß¬½ετ¿¼ óßÑ τ¿ß½á, ¡Ñ ∩ó½∩εΘ¿Ñß∩ »α«ßΓ묨, óδτ¿ß½∩∩ óßÑ
- ; »α«¿ºóÑñÑ¡¿∩ (¬α«¼Ñ »α«¿ºóÑñÑ¡¿⌐ ¡á 1), ¼Ñ¡∞Φ¿Ñ ¿½¿ αáó¡δÑ
- ; MAX_PRIMES, óßÑσ τ¿ßѽ ñ« MAX_PRIMES.
- ;
- mov eax,2 ; ¡áτ¡Ñ¼ ß 2, Γᬠ¬á¬ 0 ¿ 1
- ; ºáóÑñ«¼« »α«ßΓδ ¿ ¡Ñ ¼«úπΓ
- ; ¿ß»«½∞º«óáΓ∞ß∩ ñ½∩ ¿ß¬½ετÑ¡¿∩
- ; »α«¿ºóÑñÑ¡¿⌐
- PrimeLoop:
- mov ebx,eax ; ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ ñ½∩
- ; óδτ¿ß½Ñ¡¿∩ óßÑσ »α«¿ºóÑñÑ¡¿⌐
- MultipleLoop:
- add ebx,eax ; óδτ¿ß½¿Γ∞ ß½ÑñπεΘÑÑ »α«¿ºóÑ-
- ; ñÑ¡¿Ñ
- cmp ebx,ecx ; ¼δ »α«óÑα¿½¿ óßÑ »α«¿ºóÑñÑ¡¿∩
- ; ñá¡¡«ú« τ¿ß½á?
- ja CheckNextBaseValue ; ñá, »ÑαÑ⌐ñѼ ¬ ß½ÑñπεΘѼπ
- ; τ¿ß½π
- mov BYTE PTR fs:[edx+ebx],0 ; φΓ« τ¿ß½« ¡Ñ ∩ó½∩ÑΓß∩
- ; »α«ßΓδ¼, Γᬠ¬á¬ Ñú« ¼«ª¡«
- ; »«½πτ¿Γ∞ ó αѺπ½∞ΓáΓÑ »α«¿º-
- ; óÑñÑ¡¿∩
- jmp MultipleLoop
- CheckNextBaseValue:
- inc eax ; ßßδ½¬á ¡á ß½ÑñπεΘÑÑ ¡áτá½∞¡«Ñ
- ; º¡áτÑ¡¿Ñ (ñ½∩ óδτ¿ß½Ñ¡¿∩
- ; óßÑσ »α«¿ºóÑñÑ¡¿⌐)
- cmp eax,ecx ; ¼δ ¿ß¬½ετ¿½¿ óßÑ »α«¿ºóÑñÑ-
- ; ¡¿∩?
- jb PrimeLoop ; ¡ÑΓ, »α«óÑα¿Γ∞ ß½ÑñπεΘÑÑ
- ; ¼¡«ªÑßΓó« »α«¿ºóÑñÑ¡¿⌐
- pop fs ; ó«ßßΓá¡«ó¿Γ∞ FS óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
- pop es ; ó«ßßΓá¡«ó¿Γ∞ ES óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
- ret
- CalcPrimes ENDP
- CodeSeg ENDS
- END
-
-
-
-
- TASM2 #3-5/䫬 = 173 =
-
-
- æ«»α«µÑßß«α 80287
- -----------------------------------------------------------------
-
- ìáí«α ¿¡ßΓαπ¬µ¿⌐ áα¿Σ¼ÑΓ¿τÑ߬«ú« ß«»α«µÑßß«αá 80287 ºá «ñ-
- ¡¿¼ ¿ß¬½ετÑ¡¿Ñ¼ »«½¡«ßΓ∞ε ß«ó»áñáÑΓ ß ¡áí«α«¼ ¿¡ßΓαπ¬µ¿⌐ ß«»α«-
- µÑßß«αá 8087. ¥Γ¿¼ ¿ß¬½ετÑ¡¿Ñ¼ ∩ó½∩ÑΓß∩ ¿¡ßΓαπ¬µ¿∩ ß«»α«µÑßß«αá
- 80287 FSETMP, ¬«Γ«αá∩ »ÑαÑó«ñ¿Γ ß«»α«µÑßß«α 80287 ó ºáΘ¿ΘÑ¡¡δ⌐
- αѪ¿¼. çáΘ¿ΘÑ¡¡δ⌐ αѪ¿¼ ß«»α«µÑßß«αá 80287 ß««ΓóÑΓßΓóπÑΓ ºáΘ¿ΘÑ¡-
- ¡«¼π αѪ¿¼π »α«µÑßß«αá 80286, ß ¬«Γ«αδ¼ «íδτ¡« ß»áαÑ¡ ñá¡¡δ⌐ ß«»-
- α«µÑßß«α (σ«Γ∩ ß«»α«µÑßß«α 80287 ¼«ª¡« Γá¬ªÑ ¿ß»«½∞º«óáΓ∞ ¿ ß
- »α«µÑßß«α«¼ 80386). è«¡Ñτ¡«, ¬áªñá∩ »α«úαá¼¼á, ¬«Γ«αá∩ ¿ß»«½∞ºπÑΓ
- ¿¡ßΓαπ¬µ¿ε FSETMP ¡Ñ íπñÑΓ αáí«ΓáΓ∞ ¡á ß«»α«µÑßß«αÑ 8087, Γᬠ¬á¬
- ß«»α«µÑßß«α 8087 ¡Ñ »«ññÑনóáÑΓ ñá¡¡πε ¿¡ßΓαπ¬µ¿ε.
-
- é Æπαí« ÇßßѼí½ÑαÑ »«ññÑ᪬á ß«»α«µÑßß«αá 80287 αáºαÑΦáÑΓß∩
- »« ñ¿αÑ¬Γ¿óÑ .287. Å«ñα«í¡á∩ ¿¡Σ«α¼áµ¿∩ «í ¿¡ßΓαπ¬µ¿∩σ ß«»α«µÑß-
- ß«αá 80287 ß«ñÑনΓß∩ ó â½áóÑ 3 "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá".
-
- æ«»α«µÑßß«α 80387
- -----------------------------------------------------------------
-
- ìáí«α ¿¡ßΓαπ¬µ¿⌐ áα¿Σ¼ÑΓ¿τÑ߬«ú« ß«»α«µÑßß«αá 80387 »αÑñß-
- Γáó½∩ÑΓ ß«í«⌐ ¡áñ¼¡«ªÑßΓó« ¡áí«αá ¿¡ßΓαπ¬µ¿⌐ ß«»α«µÑßß«α«ó
- 8087/80287. é ß«»α«µÑßß«αÑ 80387 ¿¼ÑεΓß∩ ß½ÑñπεΘ¿Ñ ¡«óδÑ ¿¡ßΓαπ¬-
- 樨:
-
- FCOS FSINCOS FUCOMP
- FPREM1 FUCOM FUCOMPP
- FSIN
-
- ê¡ßΓαπ¬µ¿∩ FUCOM óδ»«½¡∩ÑΓ ¡Ñπ»«α∩ñ«τÑ¡¡«Ñ ßαáó¡Ñ¡¿Ñ ¼Ñªñπ
- αÑú¿ßΓαá ST(0) ¿ ñαπú¿σ αÑú¿ßΓα«ó ß«»α«µÑßß«αá 80387. ¥Γá ¿¡ß-
- Γαπ¬µ¿∩ á¡á½«ú¿τ¡á ¿¡ßΓαπ¬µ¿¿ FCOM, Γ«½∞¬« ß«ßΓ«∩¡¿Ñ αѺπ½∞ΓáΓá
- πßΓá¡áó½¿óáÑΓß∩ ¡Ñπ»«α∩ñ«τÑ¡¡δ¼, Ñß½¿ «ñ¿¡ ¿º αѺπ½∞ΓáΓ«ó »αÑñß-
- Γáó½∩ÑΓ ß«í«⌐ ¡Ñ τ¿ß½«, á ¡Ñ úÑ¡Ñα¿απÑΓß∩ ¿ß¬½ετ¿Γѽ∞¡á∩ ß¿Γπá-
- µ¿∩ »« ¡Ññ«»πßΓ¿¼«⌐ «»Ñαᵿ¿, ¬á¬ ó ß½πτáÑ ¿¡ßΓαπ¬µ¿¿ FCOM. ê¡ß-
- Γαπ¬µ¿∩ FUCOM óδ»«½¡∩ÑΓ ¡Ñπ»«α∩ñ«τÑ¡¡«Ñ ßαáó¡Ñ¡¿Ñ ¿ ñóáªñδ
- óδ»«½¡∩ÑΓ ¿ºó½ÑτÑ¡¿Ñ ¿º ßΓѬá.
-
- ê¡ßΓαπ¬µ¿∩ FCOS óδτ¿ß½∩ÑΓ ¬«ß¿¡πß ß«ñÑন¼«ú« αÑú¿ßΓαá
- ST(0), ¿¡ßΓαπ¬µ¿∩ FSIN óδτ¿ß½∩ÑΓ ß¿¡πß ß«ñÑন¼«ú« αÑú¿ßΓαá
- ST(0), á ¿¡ßΓαπ¬µ¿∩ FSINCOS óδτ¿ß½∩ÑΓ ß¿¡πß ¿ ¬«ß¿¡πß ß«ñÑন¼«ú«
- φΓ«ú« αÑú¿ßΓαá.
-
- ê¡ßΓαπ¬µ¿∩ FPREM1 óδτ¿ß½∩ÑΓ «ßΓáΓ«¬ «Γ ñѽѡ¿∩ ST(0) ¡á
-
- TASM2 #3-5/䫬 = 174 =
-
- ST(1) ó Σ«α¼áΓÑ, ß«ó¼ÑßΓ¿¼«¼ ß Σ«α¼áΓ«¼ IEEE.
-
- ìÑ ºáíδóá⌐ΓÑ « Γ«¼, τΓ« ½εíá∩ »α«úαá¼¼á, ¿ß»«½∞ºπεΘá∩ «ñ¡π
- ¿º φΓ¿σ ¿¡ßΓαπ¬µ¿⌐, ¡Ñ íπñÑΓ αáí«ΓáΓ∞ ¡á ß«»α«µÑßß«αÑ 8087 ¿½¿
- 80287. èα«¼Ñ Γ«ú« ¿º-ºá ¿ñÑ¡Γ¿τ¡«ú« óδ»«½¡Ñ¡¿∩ «»Ñαᵿ⌐ ó αÑá½∞-
- ¡«¼ ¿ ºáΘ¿ΘÑ¡¡«¼ αѪ¿¼Ñ ¿¡ßΓαπ¬µ¿∩ FSETMP ó ß«»α«µÑßß«αÑ 80287
- ¿ú¡«α¿απÑΓß∩.
-
- é Æπαí« ÇßßѼí½ÑαÑ »«ññÑ᪬á ß«»α«µÑßß«αá 80387 αáºαÑΦáÑΓß∩
- »« ñ¿αÑ¬Γ¿óÑ .387. Å«ñα«í¡á∩ ¿¡Σ«α¼áµ¿∩ «í ¿¡ßΓαπ¬µ¿∩σ ß«»α«µÑß-
- ß«αá 80287 ß«ñÑনΓß∩ ó â½áóÑ 3 "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá".
-
-
-
-
-
- TASM2 #3-5/䫬 = 175 =
-
- â½áóá 11. ô½πτΦÑ¡¡δ⌐ αѪ¿¼ Æπαí« ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- ä½∩ ΓÑσ, ¬Γ« »δΓáÑΓß∩ »α¿ß»«ß«í¿Γ∞ ñ½∩ ßó«¿σ µÑ½Ñ⌐ ¼á¬α«áß-
- ßѼí½Ñα MASM, φΓá ú½áóá ∩ó½∩ÑΓß∩, óÑα«∩Γ¡«, ¡á¿í«½ÑÑ ó᪡«⌐ ó
- ñá¡¡«¼ απ¬«ó«ñßΓóÑ. èα«¼Ñ «τÑ¡∞ σ«α«ΦÑ⌐ ß«ó¼ÑßΓ¿¼«ßΓ¿ ß ß¿¡Γá¬-
- ߿߫¼ MASM, Æπαí« ÇßßѼí½Ñα »«ºó«½∩ÑΓ ¡Ñ߬«½∞¬« ßú½áñ¿Γ∞ ¡Ñπñ«í-
- ßΓóá »α«úαá¼¼¿α«óá¡¿∩ ß ¿ß»«½∞º«ó᡿Ѽ MASM ß »«¼«Θ∞ε π½πτΦÑ¡¡«ú«
- (¿½¿ «»Γ¿¼á½∞¡«ú«) αѪ¿¼á.
-
- èα«¼Ñ óßÑú« »α«τÑú« π½πτΦÑ¡¡δ⌐ αѪ¿¼ (Ideal mode) »«ºó«½∩ÑΓ
- óá¼, ú½∩ñ∩ Γ«½∞¬« ¡á ¿ßσ«ñ¡δ⌐ ΓѬßΓ, «»αÑñѽ¿Γ∞, ¬á¬ íπñÑΓ óÑßΓ¿
- ßÑí∩ óδαáªÑ¡¿Ñ ¿½¿ «»Ñαá¡ñ ¿¡ßΓαπ¬µ¿¿. Åα¿ φΓ«¼ ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿
- ñÑαªáΓ∞ ó »á¼∩Γ¿ óßÑ Γ«¡¬«ßΓ¿ MASM. æ »«¼«Θ∞ε π½πτΦÑ¡¡«ú« αѪ¿¼á
- óδ »α«ßΓ« ß¼«ªÑΓÑ »¿ßáΓ∞ ∩ß¡δÑ ¿ τÑΓ¬¿Ñ óδαáªÑ¡¿∩, ¬«Γ«αδÑ íπñπΓ
- óδ»«½¡∩Γ∞ß∩ Γá¬, ¬á¬ φΓ« í佫 ºáñπ¼á¡«.
-
- ô½πτΦÑ¡¡δ⌐ αѪ¿¼ ¿ß»«½∞ºπÑΓ »«τΓ¿ óßÑ ¬½ετÑóδÑ ß½«óá, «»Ñαá-
- µ¿¿ ¿ ¬«¡ßΓαπ¬µ¿¿ ∩ºδ¬á MASM. ¥Γ« «º¡áτáÑΓ, τΓ« óδ ¼«ªÑΓÑ ¿ßß½Ñ-
- ñ«óáΓ∞ ¿ ¿ß»«½∞º«óáΓ∞ ßαÑñßΓóá π½πτΦÑ¡¡«ú« αѪ¿¼á »««τÑαÑñ¡«, ¡Ñ
- »α¿íÑúá∩ ¬ ¿ºπτÑ¡¿ε í«½∞Φ«ú« τ¿ß½á ¡«óδσ »αáó¿½ ¿½¿ ¬½ετÑóδσ
- ß½«ó. éßÑ ßαÑñßΓóá π½πτΦÑ¡¡«ú« αѪ¿¼á »αÑñßΓáó½∩εΓ ß«í«⌐ αáßΦ¿αÑ-
- ¡¿∩ ¿½¿ ¼«ñ¿Σ¿¬áµ¿ε 󫺼«ª¡«ßΓÑ⌐, ¿¼ÑεΘ¿σß∩ ó MASM.
-
- é ñá¡¡«⌐ ú½áóÑ «»¿ßδóáεΓß∩ ßαÑñßΓóá π½πτΦÑ¡¡«ú« αѪ¿¼á ¿ »«-
- ∩ß¡∩ÑΓß∩, ¬á¬ ¡«óδÑ ß¿¡Γá¬ß¿τÑ߬¿Ñ »αáó¿½á π½πτΦÑ¡¡«ú« αѪ¿¼á ¼«-
- úπΓ »«¼«τ∞ óá¼ ßφ¬«¡«¼¿Γ∞ óαѼ∩ ¿ πß¿½¿∩. îδ Γá¬ªÑ «íßπñ¿¼ »«ñ-
- α«í¡« ¡«óδÑ ó«º¼«ª¡«ßΓ¿ π½πτΦÑ¡¡«ú« αѪ¿¼á ¿ »«∩ß¡¿¼ αẽ¿τ¿∩
- ¼Ñªñπ ß¿¡Γá¬ß¿ß«¼ MASM ¿ ß¿¡Γá¬ß¿ß«¼ π½πτΦÑ¡¡«ú« αѪ¿¼á.
-
- ùΓ« Γá¬«Ñ π½πτΦÑ¡¡δ⌐ αѪ¿¼?
- -----------------------------------------------------------------
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ Æπαí« ÇßßѼí½Ñαá óóÑñÑ¡ ¡«óδ⌐ ß¿¡Γá¬ß¿ß
- óδαáªÑ¡¿⌐ ¿ «»Ñαá¡ñ«ó ¿¡ßΓαπ¬µ¿⌐. ¥Γ«Γ ¡«óδ⌐ ß¿¡Γá¬ß¿ß ¡Ñ «Γ½¿τá-
- ÑΓß∩ ßπΘÑßΓóÑ¡¡« «Γ ß¿¡Γá¬ß¿ßá MASM, ¡« ∩ó½∩ÑΓß∩ í«½ÑÑ »α«ßΓ«⌐ ¿
- »«¡∩Γ¡«⌐ αÑ὿ºáµ¿Ñ⌐ «»Ñαᵿ⌐ ¿ ¬½ετÑóδσ ß½«ó MASM. èα«¼Ñ Γ«ú« ó
- ¡Ñ¼ ¿ß»«½∞ºπεΓß∩ í«½ÑÑ «ß¼δ߽ѡ¡δÑ (ñ½∩ óáß ¿ Æπαí« ÇßßѼí½Ñαá)
- Σ«α¼δ.
-
- é π½πτΦÑ¡¡δ⌐ αѪ¿¼ ñ«íáó½Ñ¡á ßΓα«úá∩ »α«óÑα¬á Γ¿»«ó ó óδαá-
- ªÑ¡¿∩σ. ¥Γ« »«¼«úáÑΓ ßóÑßΓ¿ ¬ ¼¿¡¿¼π¼π «Φ¿í¬¿, 󫺡¿¬áεΘ¿Ñ »α¿
- »α¿ßóá¿óá¡¿¿ αÑú¿ßΓαá¼ ¿ »ÑαѼѡ¡δ¼ º¡áτÑ¡¿⌐ ¡ÑóÑα¡δσ Γ¿»«ó ¿ »α¿
- ¿ß»«½∞º«óá¡¿¿ ¬«¡ßΓαπ¬µ¿⌐, ¬«Γ«αδÑ óδú½∩ñ∩Γ ¬«ααÑ¬Γ¡δ¼¿ ó ¿ßσ«ñ-
- ¡«¼ ΓѬßΓÑ, ¡« áßßÑ¼í½¿απεΓß∩ ß«óßѼ ¡Ñ ó ëà ó¿ñ, ¬«Γ«αδ⌐ óδ
-
- TASM2 #3-5/䫬 = 176 =
-
- «ª¿ñáÑΓÑ. é¼ÑßΓ« Γ«ú«, τΓ«íδ ñѽáΓ∞ αẽ¿τ¡δÑ »αÑñ»«½«ªÑ¡¿∩ «Γ¡«-
- ß¿Γѽ∞¡« º¡áτÑ¡¿⌐ ¿ óδαáªÑ¡¿⌐, π½πτΦÑ¡¡δ⌐ αѪ¿¼ »«ºó«½∩ÑΓ óá¼ »¿-
- ßáΓ∞ ΓѬßΓ, ¿¼ÑεΘ¿⌐ ½«ú¿τÑ߬¿⌐ ¿ φßΓÑΓ¿τÑ߬¿⌐ ß¼δß½.
-
- êº-ºá ßΓα«ú«⌐ »α«óÑન Γ¿»á óδαáªÑ¡¿∩ π½πτΦÑ¡¡«ú« αѪ¿¼á
- Æπαí« ÇßßѼí½Ñαá ú«αáºñ« í«½ÑÑ »«¡∩Γ¡δ ¿ ¼Ñ¡ÑÑ ß»«ß«íßΓóπεΓ »«½π-
- τÑ¡¿ε ¡Ñ»αÑñó¿ñÑ¡¡δσ αѺπ½∞ΓáΓ«ó. é αѺπ½∞ΓáΓÑ ¼¡«ú¿Ñ ¿º »α«í½Ñ¼
- MASM, « ¬«Γ«αδσ ¼δ »αÑñπ»αѪñ὿ óáß ó »αÑñδñπΘ¿σ ú½áóáσ, ¿ßτѺá-
- εΓ »«ñ º«α¬¿¼ «¬«¼ π½πτΦÑ¡¡«ú« αѪ¿¼á.
-
- ô½πτΦÑ¡¡δ⌐ αѪ¿¼ ß«ñÑαª¿Γ Γá¬ªÑ α∩ñ ßαÑñßΓó, «í½ÑúτáεΘ¿σ
- »α«µÑßß »α«úαá¼¼¿α«óá¡¿∩ ¬á¬ ñ½∩ ¡«ó¿τ¬«ó, Γᬠ¿ ñ½∩ «»δΓ¡δσ
- »«½∞º«óáΓѽÑ⌐. é«Γ ¡Ñ¬«Γ«αδÑ ¿º Γᬿσ ßαÑñßΓó:
-
- - ñπí½¿α«óá¡¿Ñ ¿¼Ñ¡ φ½Ñ¼Ñ¡Γ«ó ó« ¼¡«ªÑßΓóÑ¡¡δσ ßΓαπ¬Γπαáσ;
- - ß½«ª¡δÑ óδαáªÑ¡¿∩ HIGH ¿ LOW;
- - »αÑñ߬áºπѼá∩ «íαáí«Γ¬á ñ¿αÑ¬Γ¿ó EQU;
- - ¬«ααÑ¬Γ¡á∩ «íαáí«Γ¬á ßúαπ»»¿α«óá¡¡δσ ßÑú¼Ñ¡Γ«ó ñá¡¡δσ;
- - π½πτΦÑ¡¡á∩ ß«ñÑαªáΓѽ∞¡«ßΓ∞ ñ¿αÑ¬Γ¿ó;
- - σ«α«Φ« ó«ß»α¿¡¿¼áѼδÑ óδαáªÑ¡¿∩, ºá¬½ετÑ¡¡δÑ ó ¬óáñαáΓ¡δÑ ß¬«í¬¿.
-
- ä½∩ τÑú« ¿ß»«½∞ºπÑΓß∩ π½πτΦÑ¡¡δ⌐ αѪ¿¼?
- -----------------------------------------------------------------
-
- àßΓ∞ ¼¡«ªÑßΓó« »α¿τ¿¡, »« ¬«Γ«αδ¼ óá¼ ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞
- π½πτΦÑ¡¡δ⌐ αѪ¿¼ Æπαí« ÇßßѼí½Ñαá. àß½¿ óδ ¿ºπτáÑΓÑ ∩ºδ¬ ÇßßѼí-
- ½Ñαá, óδ ß¼«ªÑΓÑ ½Ñú¬« ßΓα«¿Γ∞ ñ½∩ »«½πτÑ¡¿∩ ªÑ½áѼ«ú« φΣΣѬΓá
- óδαáªÑ¡¿∩ ¿ «»ÑαáΓ«αδ π½πτΦÑ¡¡«ú« αѪ¿¼á. éá¼ ¡Ñ »α¿ñÑΓß∩ σ«ñ¿Γ∞
- ó«¬απú ñá «¬«½« ¿ »α«í«óáΓ∞ αẽ¿τ¡δÑ óáα¿á¡Γδ, »«¬á óδ ¡Ñ ¿ß-
- »«½∞ºπÑΓÑ ¿¡ßΓαπ¬µ¿ε, ¬«Γ«αá∩ ñѽáÑΓ ¿¼Ñ¡¡« Γ«, τΓ« óδ σ«Γ¿ΓÑ.
- àß½¿ π óáß ¿¼ÑÑΓß∩ «»δΓ »α«úαá¼¼¿α«óá¡¿∩ ¡á ÇßßѼí½ÑαÑ, Γ« óδ ¼«-
- ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ßαÑñßΓóá π½πτΦÑ¡¡«ú« αѪ¿¼á Æπαí« ÇßßѼí½Ñαá
- ñ½∩ αáºαáí«Γ¬¿ ß½«ª¡δσ »α«úαá¼¼, ¿ß»«½∞ºπεΘ¿σ αáßΦ¿αÑ¡¿∩ ∩ºδ¬á,
- ΓᬿÑ, ¡á»α¿¼Ñα, ¬á¬ 󽫪ѡ¡δÑ ßΓαπ¬Γπαδ ¿ «íΩÑñ¿¡Ñ¡¿∩.
-
- é αѺπ½∞ΓáΓÑ í«½ÑÑ τÑΓ¬«ú« ß¿¡Γá¬ß¿ßá π½πτΦÑ¡¡δ⌐ αѪ¿¼ Æπαí«
- ÇßßѼí½Ñαá »«ºó«½∩ÑΓ áßßÑ¼í½¿α«óáΓ∞ Σá⌐½δ ¡á 30% íδßΓαÑÑ, τѼ ó
- αѪ¿¼Ñ MASM. ùѼ í«½∞ΦÑ «íΩѼ óáΦ¿σ »α«úαá¼¼ ¿ »α«úαá¼¼¡δσ ¬«¼»-
- ½Ñ¬ß«ó, ΓѼ í«½∞ΦÑ óαѼѡ¿ óδ ßφ¬«¡«¼¿ΓÑ »α¿ áßßÑ¼í½¿α«óá¡¿¿, »Ñ-
- αÑ⌐ñ∩ ó π½πτΦÑ¡¡δ⌐ αѪ¿¼.
-
- æΓα«ú¿Ñ »αáó¿½á »α«óÑન Γ¿»«ó, ¡á½áúáѼδÑ π½πτΦÑ¡¡δ¼ αѪ¿-
- ¼«¼, »«ºó«½∩εΓ Æπαí« ÇßßѼí½Ñαπ óδ∩ó½∩Γ∞ «Φ¿í¬¿, ¬«Γ«αδÑ ó »α«Γ¿-
- ó¡«¼ ß½πτáÑ óδ «í¡áαπª¿½¿ íδ Γ«½∞¬« »α¿ «Γ½áñ¬Ñ óáΦÑ⌐ »α«úαá¼¼δ
- ¿½¿ ÑÑ óδ»«½¡Ñ¡¿¿. ¥Γ« á¡á½«ú¿τ¡« Γ«¼π, ¬á¬¿¼ «íαẫ¼ ¬«¼»¿½∩Γ«αδ
-
- TASM2 #3-5/䫬 = 177 =
-
- ∩ºδ¬«ó óδß«¬«ú« πα«ó¡∩ «¬áºδóáεΓ óá¼ »«¼«Θ∞, «Γ¼Ñτá∩ ß«¼¡¿Γѽ∞¡δÑ
- ¬«¡ßΓαπ¬µ¿¿ ¿ ¡Ñß««ΓóÑΓßΓó¿Ñ αẼÑα«ó ñá¡¡δσ.
-
- ò«Γ∩ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ Æπαí« ÇßßѼí½Ñαá ó ¡Ñ¬«Γ«αδσ óδαá-
- ªÑ¡¿∩σ ¿ß»«½∞ºπÑΓß∩ ñαπú«⌐ ß¿¡Γá¬ß¿ß, óδ, ΓѼ ¡Ñ ¼Ñ¡ÑÑ, ¼«ªÑΓÑ
- »¿ßáΓ∞ »α«úαá¼¼δ, ¬«Γ«αδÑ íπñπΓ «ñ¿¡á¬«ó« σ«α«Φ« áßßÑ¼í½¿α«óáΓ∞ß∩
- ¬á¬ ó αѪ¿¼Ñ MASM, Γᬠ¿ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ. éδ ¼«ªÑΓÑ Γá¬ªÑ ó
- «ñ¡«¼ ¿ Γ«¼ ªÑ ¿ßσ«ñ¡«¼ Σá⌐½Ñ »ÑαѬ½ετáΓ∞ß∩ ¿º αѪ¿¼á MASM ó
- π½πτΦÑ¡¡δ⌐ αѪ¿¼ ¿ «íαáΓ¡« ΓᬠτáßΓ«, ¡á߬«½∞¬« φΓ« ¡Ñ«íσ«ñ¿¼«.
- ¥Γ« «ß«íÑ¡¡« »«½Ñº¡« »α¿ φ¬ß»Ñα¿¼Ñ¡Γ¿α«óá¡¿¿ ß« ßαÑñßΓóἿ π½πτ-
- ΦÑ¡¡«ú« αѪ¿¼á, ¿½¿ »α¿ »αÑ«íαẫóá¡¿¿ ¿¼ÑεΘ¿σß∩ »α«úαá¼¼, ¡á»¿-
- ßá¡¡δσ ó ß¿¡Γá¬ß¿ßÑ MASM. éδ ¼«ªÑΓÑ »ÑαѬ½ετ¿Γ∞ß∩ ó π½πτΦÑ¡¡δ⌐
- αѪ¿¼ ó ¡«óδσ τáßΓ∩σ »α«úαá¼¼δ, ñ«íáó½∩Ѽδσ ¬ ¿¼ÑεΘѼπß∩ ¿ßσ«ñ¡«-
- ¼π ¬«ñπ. Åα¿ φΓ«¼ ó «ßΓá½∞¡δσ τáßΓ∩σ »α«úαá¼¼δ ß«σαá¡¿Γß∩ »«½¡á∩
- ß«ó¼ÑßΓ¿¼«ßΓ∞ ß MASM.
-
- ÅÑαѬ½ετÑ¡¿Ñ ó π½πτΦÑ¡¡δ⌐ αѪ¿¼ ¿ óδσ«ñ ¿º ¡Ñú«
- -----------------------------------------------------------------
-
- ä½∩ »ÑαѬ½ετÑ¡¿∩ ¼Ñªñπ αѪ¿¼«¼ MASM ¿ π½πτΦÑ¡¡δ¼ αѪ¿¼«¼
- ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óδ IDEAL ¿ MASM. Æπαí« ÇßßѼí½Ñα óßÑúñá
- ¡áτ¿¡áÑΓ áßßÑ¼í½¿α«óá¡¿Ñ ¿ßσ«ñ¡«ú« Σá⌐½á ó αѪ¿¼Ñ MASM. ä½∩ »Ñ-
- αѬ½ετÑ¡¿∩ ó π½πτΦÑ¡¡δ⌐ αѪ¿¼ »ÑαÑñ ¿ß»«½∞º«ó᡿Ѽ ½εíδσ ßαÑñßΓó
- φΓ«ú« αѪ¿¼á ó ¿ßσ«ñ¡δ⌐ Σá⌐½ ¡πª¡« ó¬½ετ¿Γ∞ ñ¿αÑ¬Γ¿óπ IDEAL. æ
- φΓ«ú« ¼«¼Ñ¡Γá ¿ ñ« ß½ÑñπεΘÑ⌐ ñ¿αÑ¬Γ¿óδ MASM óßÑ «»ÑαáΓ«αδ íπñπΓ
- óÑßΓ¿ ßÑí∩ Γá¬, ¬á¬ «»¿ßδóáÑΓß∩ ó ñá¡¡«⌐ ú½áóÑ. éδ ¼«ªÑΓÑ »ÑαѬ-
- ½ετáΓ∞ß∩ ¿º αѪ¿¼á MASM ó αѪ¿¼ IDEAL ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ ßΓ«½∞¬«
- αáº, ߬«½∞¬« »«ΓαÑíπÑΓß∩ ó ó ½εí«¼ ¼ÑßΓÑ ¿ßσ«ñ¡«ú« Σá⌐½á. Åα¿óÑ-
- ñѼ »α¿¼Ñα:
-
- DATA SEGMENT ; ¡áτὫ ó αѪ¿¼Ñ MASM
- abc LABEL BYTE ; abc áñαÑßπÑΓß∩ ¬ xyz,
- ; ¬á¬ ¬ íá⌐Γπ
- xyz DW 0 ; «»αÑñѽ¿Γ∞ ß½«ó« »«
- ; ¼Ñ⪥ xyz
- DATA ENDS ; ºáóÑαΦ¿Γ∞ ßÑú¼Ñ¡Γ
- ; ñá¡¡δσ
- IDEAL ; »ÑαÑ⌐Γ¿ ó π½πτΦÑ¡¡δ⌐
- ; αѪ¿¼
- SEGMENT CODE ; ¬½ετÑó«Ñ ß½«ó« SEGMENT
- ; ΓÑ»Ñα∞ ß½ÑñπÑΓ »Ñαóδ¼
- PROC MyProc ; ¬½ετÑó«Ñ ß½«ó« PROC
- ; Γ«ªÑ ß½ÑñπÑΓ »Ñαóδ¼
- .
- . ; ºñÑß∞ ¼«ª¡« »α«úαá¼¼¿α«óáΓ∞
-
- TASM2 #3-5/䫬 = 178 =
-
- . ; ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ
- END MyProc ; »«óΓ«αÑ¡¿Ñ ¼ÑΓ¬¿ MyProc
- ; ¡Ñ«í∩ºáΓѽ∞¡«
- ENDS ; »«óΓ«αÑ¡¿Ñ ¿¼Ñ¡¿ ßÑú¼Ñ¡Γá
- ; ¡Ñ ΓαÑíπÑΓß∩
- MASM ; »ÑαѬ½ετÑ¡¿Ñ «íαáΓ¡« ó
- ; αѪ¿¼ MASM
- CODE SEGMENT ; »ÑαÑñ ¬½ετÑóδ¼ ß½«ó«¼ SEGMENT
- ; ΓÑ»Ñα∞ ΓαÑíπÑΓß∩ ¿¼∩
- Func2 PROC ; ¿¼∩ ΓÑ»Ñα∞ Γá¬ªÑ ß½ÑñπÑΓ »ÑαÑñ
- ; ¬½ετÑóδ¼ ß½«ó«¼ PROC
- .
- . ; »α«úαá¼¼¿α«óá¡¿Ñ ó αѪ¿¼Ñ
- . ; MASM
- IDEAL ; »ÑαѬ½ετÑ¡¿Ñ «íαáΓ¡« ó
- . ; π½πτΦÑ¡¡δ⌐ αѪ¿¼
- . ; »α«úαá¼¼¿α«óá¡¿Ñ ó
- . ; π½πτΦÑ¡¡«¼ αѪ¿¼Ñ
- MASM ; ó«ºóαáΘÑ¡¿Ñ ó αѪ¿¼ MASM
- Func2 ENDP ; ¿¼∩ «»∩Γ∞ ΓαÑíπÑΓß∩ π¬áºδóáΓ∞
- ; »ÑαÑñ ¬½ετÑóδ¼ ß½«ó«¼
- CODE ENDS ; ºñÑß∞ Γá¬ªÑ ΓαÑíπÑΓß∩ ¿¼∩
-
- èᬠóδ ¼«ªÑΓÑ ºá¼ÑΓ¿Γ∞, ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¬½ετÑóδÑ ß½«óá
- ñ¿αÑ¬Γ¿ó (¡á»α¿¼Ñα PROC ¿½¿ SEGMENT) π¬áºδóáεΓß∩ »ÑαÑñ ß««ΓóÑΓß-
- ΓóπεΘ¿¼¿ ¿¼Ñ¡á¼¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, Γ« ÑßΓ∞ ó »«α∩ñ¬Ñ, «íαáΓ¡«¼ Γ«-
- ¼π, ¬«Γ«αδ⌐ »α¿¡∩Γ ó MASM. èα«¼Ñ Γ«ú« ¿¼ÑÑΓß∩ 󫺼«ª¡«ßΓ∞ »«óΓ«-
- α¿Γ∞ ¿¼∩ »α«µÑñπαδ ¿½¿ ßÑú¼Ñ¡Γá »«ß½Ñ ñ¿αÑ¬Γ¿ó ENDP ¿½¿ ENDS.
- ä«íáó½Ñ¡¿Ñ φΓ«ú« ¿¼Ñ¡¿ ¿ñÑ¡Γ¿Σ¿µ¿απÑΓ ßÑú¼Ñ¡Γ ¿½¿ »α«µÑñπαπ, ¬«-
- Γ«αá∩ ºá¬á¡τ¿óáÑΓß∩, ¿ ñѽáÑΓ »α«úαá¼¼π í«½ÑÑ »«¡∩Γ¡«⌐. ¥Γ« σ«α«-
- Φ¿⌐ »αá¬Γ¿τÑ߬¿⌐ »α¿Ñ¼, «ß«íÑ¡¡« ó »α«úαá¼¼áσ, ß«ñÑαªáΘ¿σ ¡Ñß-
- ¬«½∞¬« 󽫪ѡ¡δσ »α«µÑñπα ¿ ßÑú¼Ñ¡Γ«ó. Äñ¡á¬« π¬áºδóáΓ∞ ¿¼∩ ¿ñÑ¡-
- Γ¿Σ¿¬áΓ«αá »«ß½Ñ ENDP ¿½¿ ENDS ¡Ñ«í∩ºáΓѽ∞¡«.
-
-
-
-
- TASM2 #3-5/䫬 = 179 =
-
-
- ÄΓ½¿τ¿∩ π½πτΦÑ¡¡«ú« αѪ¿¼á ¿ αѪ¿¼á MASM
- -----------------------------------------------------------------
-
- é ñá¡¡«¼ αáºñÑ½Ñ ¼δ «»¿ΦѼ «ß¡«ó¡δÑ αẽ¿τ¿∩ ¼Ñªñπ
- π½πτΦÑ¡¡δ¼ αѪ¿¼«¼ ¿ αѪ¿¼«¼ MASM. àß½¿ óδ º¡á¬«¼δ ß MASM, óδ
- ¼«ªÑΓÑ »«ªÑ½áΓ∞ »«φ¬ß»Ñα¿¼Ñ¡Γ¿α«óáΓ∞ ß «Γñѽ∞¡δ¼¿ ßαÑñßΓóἿ,
- »αÑ«íαáºπ∩ ¡Ñí«½∞Φ¿Ñ τáßΓ¿ ¿¼ÑεΘ¿σß∩ »α«úαá¼¼ ó π½πτΦÑ¡¡δ⌐ αѪ¿¼.
- ìÑ ºáíδóá⌐ΓÑ Γ«½∞¬« »α¿ φΓ«¼ ºá¬½ετáΓ∞ ¡«óδ⌐ ¿ßσ«ñ¡δ⌐ ¬«ñ ó
- ¬½ετÑóδÑ ß½«óá IDEAL ¿ MASM. æ½Ññπ∩ Γᬫ⌐ ßσÑ¼Ñ ¿ «ßóá¿óá∩
- π½πτΦÑ¡¡δ⌐ αѪ¿¼ Φáú ºá Φáú«¼, óδ ¼«ªÑΓÑ áßßÑ¼í½¿α«óáΓ∞ ΓѬπΘπε
- »α«úαá¼¼π íѺ ¡Ñ«íσ«ñ¿¼«ßΓ¿ »ÑαÑß¼áΓα¿óáΓ∞ ¬áªñπε ¿¡ßΓαπ¬µ¿ε ¿
- ¿ß»«½∞º«óá¡¿∩ ߻ѵ¿á½∞¡δσ ßαÑñßΓó π½πτΦÑ¡¡«ú« αѪ¿¼á. é
- ¬«¡µÑ-¬«¡µ«ó óδ, ¬«¡Ñτ¡«, ¼«ªÑΓÑ »α¿⌐Γ¿ ¬ αÑΦÑ¡¿ε »α«úαá¼¼¿α«óáΓ∞
- µÑ½¿¬«¼ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ. ï¿í« óδ ¼«ªÑΓÑ τÑαÑñ«óáΓ∞ ¼«ñ㫨 ó
- αѪ¿¼Ñ MASM ¿ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ. éδí«α «ßΓáÑΓß∩ ºá óἿ.
-
-
- ïѬßѼδ π½πτΦÑ¡¡«ú« αѪ¿¼á
- -----------------------------------------------------------------
-
- Æπαí« ÇßßѼí½Ñα ßτ¿ΓδóáÑΓ ¿ ó«ß»α¿¡¿¼áÑΓ óáΦπ »α«úαá¼¼π,
- αáºí¿óá∩ ΓѬßΓ ¡á «Γñѽ∞¡δÑ ß½«óá ¿½¿ ß¿¼ó«½δ, ¬«Γ«αδÑ ¡áºδóáεΓß∩
- ½Ñ¬ßѼἿ. Åα¿¼Ñαδ ½Ñ¬ßѼ ó¬½ετáεΓ ó ßÑí∩ ¼ÑΓ¬¿, Γá¬¿Ñ ¬á¬ VALUE,
- NAME ¿½¿ AGE, »½εß ñαπú¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ τ¿ß½á, τáßΓ¿ óδαáªÑ¡¿⌐ ¿
- áα¿Σ¼ÑΓ¿τÑ߬¿Ñ «»Ñαᵿ¿ (Γá¬¿Ñ ¬á¬ +, -, * ¿ /).
-
- äóá Γ¿»á ½Ñ¬ßѼ - ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ¿ τ¿ß½á ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
- - ¿¼ÑεΓ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ß½Ñú¬á αẽ¿τ¡δÑ Σ«α¼δ. èᬠ«»¿ßδóá-
- ÑΓß∩ ñá½ÑÑ, φΓ¿ ¿º¼Ñ¡Ñ¡¿∩ »«∩ß¡∩εΓ ¡Ñ¬«Γ«αδÑ ñóπß¼δ߽ѡ¡«ßΓ¿ ¿
- ¡Ñ«ñ¡«º¡áτ¡«ßΓ∞ ó ß¿¡Γá¬ß¿ßÑ MASM.
-
- ïѬßѼδ-¿ñÑ¡Γ¿Σ¿¬áΓ«αδ
- -----------------------------------------------------------------
-
- é ß½πτáÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó π½πτΦÑ¡¡«ú« αѪ¿¼á Γ«τ¬π ó ¬áτÑßΓóÑ
- φ½Ñ¼Ñ¡Γá ¿¼Ñ¡¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ¿ß»«½∞º«óáΓ∞ ¡Ñ ñ«»π߬áÑΓß∩. Æ«τ¬π
- ¼«ª¡« ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ¬á¬ «»Ñαᵿε φ½Ñ¼Ñ¡Γá ßΓαπ¬Γπαδ ¿½¿ ó
- τ¿ß½Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐.
-
- ¥½Ñ¼Ñ¡Γδ ßΓαπ¬Γπα ¿ «íΩÑñ¿¡Ñ¡¿⌐ (¡Ñ¬«Γ«αδÑ ¡áºδóáεΓ ¿σ »«½∩-
- ¼¿) ¡Ñ «»αÑñѽ∩εΓß∩, ¬á¬ ú½«íá½∞¡δÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ (Γ« ÑßΓ∞ ¬á¬
- ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ, ñ«ßΓπ»¡δÑ ¿º ½εí«⌐ τáßΓ¿ óáΦÑ⌐ »α«úαá¼¼δ). ¥½Ñ-
- ¼Ñ¡Γδ ßΓαπ¬Γπα ¿ «íΩÑñ¿¡Ñ¡¿⌐ ßπΘÑßΓóπεΓ Γ«½∞¬« ó¡πΓα¿ Γ«⌐ ßΓαπ¬-
- Γπαδ, ¬ ¬«Γ«α«⌐ «¡¿ »α¿¡áñ½ÑªáΓ. ¥Γ« »«ºó«½∩ÑΓ óá¼ ¿¼ÑΓ∞ ¡Ñ߬«½∞-
- ¬« ßΓαπ¬Γπα, ß«ñÑαªáΘ¿σ φ½Ñ¼Ñ¡Γδ ß «ñ¿¡á¬«ó묨 ¿¼Ñ¡á¼¿. é¡Ñ
-
- TASM2 #3-5/䫬 = 180 =
-
- ßΓαπ¬Γπαδ óδ Γá¬ªÑ ¼«ªÑΓÑ ñπí½¿α«óáΓ∞ φΓ¿ ¿¼Ñ¡á ñ½∩ ñαπú¿σ µÑ½Ñ⌐,
- ¡á»α¿¼Ñα:
-
- Pennies DW 0
- STRUC Heaven
- Dimes DW ?
- Nißkels DW ?
- Pennies DW ? ; ¬«¡Σ½¿¬Γá ºñÑß∞ ¡ÑΓ
- ENDS
- Take Heaven <>
-
- é φΓ«¼ »α¿¼ÑαÑ »«¬áºá¡«, ¬á¬ ß«ºñáεΓß∩ »ÑαѼѡ¡á∩ ß ΓαѼ∩
- »«½∩¼¿ (ßΓαπ¬Γπαá ß ¿¼Ñ¡Ñ¼ Heaven). Å«½∩ Dimes ¿ Nickels π¡¿¬á½∞-
- ¡δ ñ½∩ ßΓαπ¬Γπαδ. Äñ¡á¬« Pennies óßΓαÑτáÑΓß∩ ñóáªñδ - ó¡Ñ ßΓαπ¬-
- Γπαδ ¿ ó¡πΓα¿ ÑÑ.
-
- ¥Γ«Γ »α¿¼Ñα »«¬áºδóáÑΓ, τΓ« «ñ¡« ¿ Γ«ªÑ ¿¼∩ (Pennies) ¼«ªÑΓ
- óßΓαÑτáΓ∞ß∩ ¬á¬ ó¡πΓα¿ ßΓαπ¬Γπαδ, Γᬠ¿ ó¡Ñ ßΓαπ¬Γπαδ, ¿ φΓ« ¡Ñ
- »α¿ó«ñ¿Γ ¬ ¬«¡Σ½¿¬Γπ, τΓ« ó MASM ßñѽáΓ∞ í佫 ¡Ñ½∞º∩.
-
- ÅÑαѼѡ¡á∩ Pennies ó¡Ñ ßΓαπ¬Γπαδ Heaven «Γ½¿τáÑΓß∩ «Γ φ½Ñ-
- ¼Ñ¡Γá Pennies, ¬«Γ«αδ⌐ ¿ß»«½∞ºπÑΓß∩ ó¡πΓα¿ ßΓαπ¬Γπαδ. æßδ½¬á ¡á
- ñπí½¿¬áΓ ¿¼Ñ¡¿ ó¡πΓα¿ ßΓαπ¬Γπαδ ΓαÑíπÑΓ ΓαÑσ φ½Ñ¼Ñ¡Γ«ó: ¿¼Ñ¡¿
- ßΓαπ¬Γπαδ, Γ«τ¬¿, ¿ ¿¼Ñ¡¿ φ½Ñ¼Ñ¡Γá. é ñá¡¡«¼ »α¿¼ÑαÑ Take.Pennies
- αáó¡« ß¼ÑΘÑ¡¿ε »«½∩ Pennies ó¡πΓα¿ Heaven. Äñ¡á¬« Pennies αáó¡«
- ß¼ÑΘÑ¡¿ε »ÑαѼѡ¡«⌐ ó¡Ñ ßΓαπ¬Γπαδ.
-
-
-
- TASM2 #3-5/䫬 = 181 =
-
-
- äπí½¿α«óá¡¿Ñ ¿¼Ñ¡ φ½Ñ¼Ñ¡Γ«ó
- -----------------------------------------------------------------
-
- ô½πτΦÑ¡¡δ⌐ αѪ¿¼ »«ºó«½∩ÑΓ óá¼ Γá¬ªÑ ñπí½¿α«óáΓ∞ ¿¼Ñ¡á φ½Ñ-
- ¼Ñ¡Γ«ó ó αẽ¿τ¡δσ ßΓαπ¬Γπαáσ. ¥½Ñ¼Ñ¡Γδ ¼«úπΓ íδΓ∞ «ñ¡«ú« Γ¿»á
- ¿½¿ αạδσ Γ¿»«ó, ¬á¬ ó ß½ÑñπεΘ¿σ ñóπσ ßΓαπ¬Γπαáσ, úñÑ «íÑ ßΓαπ¬-
- Γπαδ ß«ñÑαªáΓ »«½∩ Size «ñ¡«ú« Γ¿»á ¿ ó «ñ¡«⌐ ¿ Γ«⌐ ªÑ »«º¿µ¿¿,
- »½εß »«½∩ Amount αạδσ Γ¿»«ó ¿ ó αẽ¿τ¡δσ »«º¿µ¿∩σ:
-
- STRUC SomeStuff
- Size DW ?
- Flag DB ?
- Amount DW ?
- ENDS
-
- STRUC OtherStuff
- Size DW ? ; ¬«¡Σ½¿¬Γá ºñÑß∞ ¡ÑΓ
- Amount DB ? ; ºñÑß∞ ΓᬪÑ
- ENDS
-
-
-
-
- TASM2 #3-5/䫬 = 182 =
-
- ïѬßѼδ, »αÑñßΓáó½∩εΘ¿Ñ ß«í«⌐ τ¿ß½á ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
- -----------------------------------------------------------------
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ Æπαí« ÇßßѼí½Ñαá ñÑß∩Γ¿τ¡δÑ τ¿ß½á ß »½á-
- óáεΘÑ⌐ Γ«τ¬«⌐ ñ«½ª¡δ óßÑúñá ó¬½ετáΓ∞ ó ßÑí∩ ß¿¼ó«½ Γ«τ¬¿ (.):
-
- FP DT 1.0e7 ; º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
- ; ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ
-
- çñÑß∞ «»αÑñѽ∩ÑΓß∩ 10-íá⌐Γ«ó«Ñ º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ß
- ¿¼Ñ¡Ñ¼ FP, αáó¡«Ñ 1.0e7. é αѪ¿¼Ñ MASM óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞
- Γá¬ªÑ ß½ÑñπεΘπε Σ«α¼π (¬«Γ«αá∩ Γá¬ªÑ ó«ß»α¿¡¿¼áÑΓß∩, ¡« ∩ó½∩ÑΓß∩
- ¼Ñ¡ÑÑ »«¡∩Γ¡«⌐):
-
- FP DT 1E7 ; º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
- ; ó αѪ¿¼Ñ MASM
-
- ÑΓ »«¬áºáΓ∞ß∩, τΓ« ºñÑß∞ ¡ÑΓ ¡¿τÑú« »½«σ«ú«, «ñ¡á¬« Ñß½¿
- óδ ó »αÑñδñπΘÑ⌐ τáßΓ¿ »α«úαá¼¼δ ó¬½ετ¿ΓÑ ñ¿αÑ¬Γ¿óπ .RADIX 16, ¬«-
- Γ«αá∩ ¿º¼Ñ¡∩ÑΓ ¿ß»«½∞ºπѼ«Ñ »« π¼«½τá¡¿ε «ß¡«óá¡¿Ñ ß ñÑß∩Γ¿τ¡«ú«
- ¡á ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ, Γ« MASM áßßÑ¼í½¿απÑΓ óáΦÑ º¡áτÑ¡¿Ñ ß »½áóá-
- εΘÑ⌐ Γ«τ¬«⌐, ¬á¬ ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ τ¿ß½« 01. ÆαÑíπ∩ «Γ óáß π¬áºá-
- ¡¿∩ ñÑß∩Γ¿τ¡«⌐ Γ«τ¬¿, π½πτΦÑ¡¡δ⌐ αѪ¿¼ π½πτΦÑ¡¡δ⌐ αѪ¿¼ ¡¿¬«úñá
- ¡Ñ »α¿óÑΓ ¬ Γᬫ⌐ »πΓá¡¿µÑ.
-
- ÆÑ¬ßΓ«óδÑ ¿ τ¿ß½«óδÑ »α¿ßóá¿óá¡¿∩ (ñ¿αÑ¬Γ¿óδ EQU ¿ =)
- -----------------------------------------------------------------
-
- Ä»αÑñѽѡ¿∩ EQU, ¬«Γ«αδÑ ¡áºδóáεΓß∩ Γá¬ªÑ »α¿αáó¡¿óá¡¿∩¼¿
- ¿½¿ »α¿ßóá¿óá¡¿∩¼¿, ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ óßÑúñá «íαáíáΓδóáεΓß∩ ¬á¬
- ΓѬßΓ. é αѪ¿¼Ñ MASM »α¿αáó¡¿óá¡¿∩ ¿¡«úñá «íαáíáΓδóáεΓß∩, ¬á¬
- ΓѬßΓ, á ó ñαπú¿σ ß½πτá∩σ - ¬á¬ τ¿ß½á. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿Ñ »α¿-
- ¼Ñαδ:
-
- ; ÄíΩ∩ó¿Γ∞ ¡Ñ߬«½∞¬« »α¿αáó¡¿óá¡¿⌐
- A = 4
- B = 5
- C EQU B + A
- B = 6
-
- ; Ä»¿ßáΓ∞ »ÑαѼѡ¡πε
- V DW C ; 9 ó αѪ¿¼Ñ MASM, 10 ó
- ; π½πτΦÑ¡¡«¼ αѪ¿¼Ñ
-
- MASM óδτ¿ß½∩ÑΓ óδαáªÑ¡¿Ñ B + A »α¿ «íαáí«Γ¬Ñ óδαáªÑ¡¿∩ EQU.
-
- TASM2 #3-5/䫬 = 183 =
-
- é φëà ¼«¼Ñ¡Γ A αáó¡« 4, á B αáó¡« 5, Γᬿ¼ «íαẫ¼, C αáó¡« 9. é
- π½πτΦÑ¡¡«¼ αѪ¿¼Ñ φΓ« ªÑ óδαáªÑ¡¿Ñ «íαáíáΓδóáÑΓß∩ »«-ñαπú«¼π, ºá-
- »¿ßδóá∩ ó ΓѬßΓ«ó«¼ ó¿ñÑ óßÑ, τΓ« ß½ÑñπÑΓ ºá ñ¿αÑ¬Γ¿ó«⌐ EQU (ó
- ñá¡¡«¼ ß½πτáÑ B + A). 黫߽ÑñßΓó¿¿ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ óδ»«½¡∩ÑΓ-
- ß∩ »«ñßΓá¡«ó¬á φΓ«⌐ ßΓ᫬¿ (¬«úñá óßΓαÑτáÑΓß∩ C). é ñá¡¡«¼ »α¿¼Ñ-
- αÑ, »«ß¬«½∞¬π óδτ¿ß½Ñ¡¿Ñ óδαáªÑ¡¿Ñ «Γ¬½áñδóáÑΓß∩ ñ« «»¿ßá¡¿∩ »Ñ-
- αѼѡ¡«⌐ V, ¿ Γᬠ¬á¬ B αá¡ÑÑ í佫 »ÑαÑ«»αÑñѽѡ«, ¬á¬ 6, Γ« ó
- π½πτΦÑ¡¡«¼ αѪ¿¼Ñ V íπñÑΓ αáó¡« 10 (6+4).
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ñ¿αÑ¬Γ¿óá EQU óßÑúñá «»αÑñѽ∩ÑΓ ßΓ᫬π.
- ç¡á¬ αáóÑ¡ßΓóá (=) óßÑúñá «»αÑñѽ∩ÑΓ óδτ¿ß½∩Ѽ«Ñ óδαáªÑ¡¿Ñ. ¥Γ«
- »αá󿽫 ½Ñú¬« πßó«¿Γ∞, Ñß½¿ óδ ºá»«¼¡¿ΓÑ, τΓ« ß¿¼ó«½ αáóÑ¡ßΓóá
- (=) »α¿ó«ñ¿Γ ¬ ¡Ñ¼Ññ½Ñ¡¡«¼π óδτ¿ß½Ñ¡¿ε óδαáªÑ¡¿⌐, á ñ¿αÑ¬Γ¿óá EQU
- «Γ¬½áñδóáÑΓ óδτ¿ß½Ñ¡¿Ñ óδαáªÑ¡¿∩ ñ« Γ«ú« ¼«¼Ñ¡Γá, ¬«úñá óßΓαÑΓ¿Γ-
- ß∩ ¿¼∩ ¬«¡ßΓá¡Γδ. ê¡«úñá φΓ« ¡áºδóáεΓ "αá¡¡¿¼" ¿ "»«ºñ¡¿¼" »α¿ß-
- óá¿ó᡿Ѽ.
-
-
- éδαáªÑ¡¿∩ ¿ «»Ñαá¡ñδ
- -----------------------------------------------------------------
-
- Äß¡«ó¡«Ñ αẽ¿τ¿Ñ ¼Ñªñπ óδαáªÑ¡¿∩¼¿ π½πτΦÑ¡¡«ú« αѪ¿¼á ¿ αÑ-
- ª¿¼á MASM ß«ßΓ«¿Γ ó Σπ¡¬µ¿¿, ¬«Γ«απε óδ»«½¡∩εΓ ¬óáñαáΓ¡δÑ ß¬«í¬¿.
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¬óáñαáΓ¡δÑ ß¬«í¬¿ óßÑúñá «Γ¡«ß∩Γß∩ ¬ ß«ñÑন-
- ¼«¼π ºá¬½ετáѼ«⌐ ó ¡¿σ óѽ¿τ¿¡δ. èóáñαáΓ¡δÑ ß¬«í¬¿ ¡¿¬«úñá ¡Ñ
- »α¿ó«ñ∩Γ ó »«ñαáºπ¼ÑóáѼ«¼π ß½«ªÑ¡¿ε. Äñ¡á¬« ¼¡«ú¿Ñ ßΓá¡ñáαΓ¡δÑ
- ¬«¡ßΓαπ¬µ¿¿ MASM ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¡Ñ ñ«»π߬áεΓß∩.
-
-
- Ä»Ñαᵿ∩ ¬óáñαáΓ¡δσ ߬«í«¬ []
- -----------------------------------------------------------------
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¬óáñαáΓ¡δÑ ß¬«í¬¿ ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ß∩
- ñ½∩ »«½πτÑ¡¿∩ ß«ñÑন¼«ú« φ½Ñ¼Ñ¡Γá. ìá»α¿¼Ñα:
-
- mov ax,wordptr
-
- »α¿ó«ñ¿Γ ¬ óδó«ñπ »αÑñπ»αѪñáεΘÑú« ß««íΘÑ¡¿∩, Ñß½¿ óδ »δΓáÑΓÑß∞
- ºáúαπº¿Γ∞ π¬áºáΓѽ∞ (wordptr) ó αÑú¿ßΓα (AX). è«ααÑ¬Γ¡«⌐ íπñÑΓ
- ß½ÑñπεΘá∩ Σ«α¼á:
-
- mov ax,[wordptr]
-
- çñÑß∞ ∩ß¡«, τΓ« óδ ºáúαπªáÑΓÑ ß«ñÑন¼«Ñ ∩τÑ⌐¬¿, áñαÑßπѼ«⌐
- ß »«¼«Θ∞ε wordptr (ó ΓѬπΘѼ ßÑú¼Ñ¡ΓÑ ñá¡¡δσ DS) ó αÑú¿ßΓα AX.
-
-
- TASM2 #3-5/䫬 = 184 =
-
- àß½¿ óδ σ«Γ¿ΓÑ ß«ß½áΓ∞ß∩ ¡á ß¼ÑΘÑ¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ó ßÑú-
- ¼Ñ¡ΓÑ, Γ« óδ ñ«½ª¡δ ∩ó¡« ¿ß»«½∞º«óáΓ∞ «»Ñαᵿε OFFSET, ¡á»α¿¼Ñα:
-
- mov ax,OFFSET wordptr
-
- Åα¿¼Ñαδ «»Ñαá¡ñ«ó
- -----------------------------------------------------------------
-
- äáóá⌐ΓÑ αáßß¼«Γα¿¼ ¡Ñ߬«½∞¬« τáßΓ« »α¿ó«ñ∩Θ¿σ ¬ »πΓá¡¿µÑ, ¡«
- ∩ó½∩εΘ¿σß∩ Γ¿»¿τ¡δ¼¿, ºá¬½ετÑ¡¡δσ ó ¬óáñαáΓ¡δÑ ß¬«í¬¿ «»Ñαá¡ñ«ó,
- ¬«Γ«αδÑ ó«ß»α¿¡¿¼áÑΓ αѪ¿¼ MASM, á ºáΓѼ ßαáó¡¿¼ φΓ¿ »α¿¼Ñαδ ß
- ¬«ααÑ¬Γ¡δ¼¿ ¿ í«½ÑÑ ½Ñú¬¿¼¿ ñ½∩ ó«ß»α¿∩Γ¿∩ Σ«α¼á¼¿, ¬«Γ«αδÑ ¿ß-
- »«½∞ºπεΓß∩ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ Æπαí« ÇßßѼí½Ñαá. èᬠóδ πó¿ñ¿ΓÑ,
- τÑΓ¬«Ñ ¿ß»«½∞º«óá¡¿Ñ ¬óáñαáΓ¡δσ ߬«í«¬ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ, ¿ß¬-
- ½ετáεΘÑÑ óß∩¬πε ñóπß¼δ߽ѡ¡«ßΓ∞, »α¿ó«ñ¿Γ ¬ »«½¡«⌐ «»αÑñѽѡ¡«ßΓ¿
- Γ«ú«, τΓ« óδ ¡á¼ÑαÑó὿ß∞ ßñѽáΓ∞.
-
- mov ax,[bx][si] ; αѪ¿¼ MASM
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ φΓ« »α¿ó«ñ¿Γ ¬ ß¿¡Γá¬ß¿τÑ߬«⌐ «Φ¿í¬Ñ.
- àß½¿ ¬óáñαáΓ¡δÑ ß¬«í¬¿ «»αÑñѽ∩εΓ ß«ñÑন¼«Ñ »á¼∩Γ¿, Γ« φΓá ¿¡ß-
- Γαπ¬µ¿∩, «τÑó¿ñ¡«, ºáúαπªáÑΓ º¡áτÑ¡¿Ñ, áñαÑßπѼ«Ñ ß »«¼«Θ∞ε αÑ-
- ú¿ßΓαá BX, »½εß º¡áτÑ¡¿Ñ, áñαÑßπѼ«Ñ ß »«¼«Θ∞ε αÑú¿ßΓαá SI. è«-
- ¡Ñτ¡«, óδ ¼«ªÑΓÑ »αÑñ»«½áúáΓ∞ ßñѽáΓ∞ ¡Ñ φΓ«. 髺¼«ª¡« óδ »αÑñ»«-
- ½áúáÑΓÑ ßñѽáΓ∞ ß½ÑñπεΘÑÑ (¿ φΓ«ú« ΓαÑíπÑΓ π½πτΦÑ¡¡δ⌐ αѪ¿¼):
-
- mov ax,[bx+si] ; π½πτΦÑ¡¡δ⌐ αѪ¿¼
-
- ÆÑ»Ñα∞ ñá¡¡á∩ ¿¡ßΓαπ¬µ¿∩ »«¡∩Γ¡á. æ«ñÑন¼«Ñ ∩τÑ⌐¬¿ »á¼∩Γ¿
- »« áñαÑßπ OFFSET BX+SI, «Γ¡«ß¿Γѽ∞¡« ΓѬπΘÑú« ßÑú¼Ñ¡Γá ñá¡¡δσ,
- áñαÑßπѼ«ú« ß »«¼«Θ∞ε αÑú¿ßΓαá DS, ºáúαπªáÑΓß∩ ó αÑú¿ßΓα AX.
- (ÉẼÑα ∩τÑ⌐¬¿ »á¼∩Γ¿ »αÑñßΓáó½∩ÑΓ ß«í«⌐ 16-í¿Γ«ó«Ñ ß½«ó«, Γá¬
- ¬á¬ AX - φΓ« 16-í¿Γ«óδ⌐ αÑú¿ßΓα. àß½¿ óδ ºá¼Ñ¡¿ΓÑ AX AL, ¿½¿ ñαπ-
- ú¿¼ 8-í¿Γ«óδ¼ αÑú¿ßΓα«¼, Γ« ∩τÑ⌐¬á »á¼∩Γ¿ íπñÑΓ ¿¼ÑΓ∞ αẼÑα ó
- íá⌐Γ.) é«Γ á¡á½«ú¿τ¡δ⌐ »α¿¼Ñα:
-
- mov ax,es:[bx][si] ; αѪ¿¼ MASM
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ φΓ« Γá¬ªÑ »α¿ó«ñ¿Γ ¬ «Φ¿í¬Ñ. ¥Γá ¿¡ß-
- Γαπ¬µ¿∩ óδú½∩ñ¿Γ Γá¬, ¬á¬ íπñΓ« ó ¡Ñ⌐ ú«ó«α¿Γß∩ ß½ÑñπεΘÑÑ: "»α¿-
- ¼Ñ¡¿Γ∞ »αÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá ES: ¬ º¡áτÑ¡¿ε, áñαÑßπÑ-
- ¼«¼π ß »«¼«Θ∞ε αÑú¿ßΓαá BX, ¿ ß½«ª¿Γ∞ óßÑ φΓ« ß ß«ñÑন¼δ¼ ∩τÑ⌐¬¿
- »á¼∩Γ¿, áñαÑßπѼ«⌐ ß »«¼«Θ∞ε SI, ºáúαπªá∩ αѺπ½∞ΓáΓ ó αÑú¿ßΓα
- AX". ¥Γ«, ¬«¡Ñτ¡«, íÑßß¼δ߽ѡ¡«, ¿ óδ, óÑα«∩Γ¡«, »«ñαáºπ¼Ñó὿
- ß½ÑñπεΘÑÑ:
-
- TASM2 #3-5/䫬 = 185 =
-
-
- mov ax,[es:bx+si] ; π½πτΦÑ¡¡δ⌐ αѪ¿¼
-
- ÅαѬαáß¡«! Åα¿ φΓ«¼ ߬½áñδóáÑΓß∩ ß«ñÑন¼«Ñ αÑú¿ßΓα«ó AX ¿
- SI, τΓ« ñáÑΓ º¡áτÑ¡¿Ñ ß¼ÑΘÑ¡¿∩ «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá ES, »ÑαÑ«»-
- αÑñѽѡ¡«ú« ¿º ¿ß»«½∞ºπѼ«ú« »« π¼«½τá¡¿ε ßÑú¼Ñ¡Γá ñá¡¡δσ DS. 16-
- í¿Γ«ó«Ñ ß«ñÑন¼«Ñ φΓ«⌐ ∩τÑ⌐¬¿ »á¼∩Γ¿ ºáúαπªáÑΓß∩ ó αÑú¿ßΓα AX.
- é«Γ ÑΘÑ «ñ¿¡ τáßΓ« óßΓαÑτáεΘ¿⌐ß∩ ó ÇßßѼí½ÑαÑ »α¿¼Ñα:
-
- mov ax,6[bx] ; αѪ¿¼ MASM
-
- îáΓѼáΓ¿¬¿ ¼«úπΓ »«ñπ¼áΓ∞, τΓ« ºñÑß∞ º¡áτÑ¡¿Ñ ∩τÑ⌐¬¿ »á¼∩Γ¿,
- áñαÑßπѼ«⌐ ß »«¼«Θ∞ε αÑú¿ßΓαá BX, π¼¡«ªáÑΓß∩ ¡á 6. 꽿 φΓ« φΓ«
- ¬á¬«⌐-Γ« ¡Ñ«»¿ßá¡¡δ⌐ ¼ÑΓ«ñ ¿¡ñѬßᵿ¿ ¼áßß¿óá? Ç ¼«ªÑΓ íδΓ∞ »α«ß-
- Γ« «»ÑτáΓ¬á? é ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿, ¬á¬ »«¬áºδóáÑΓ Σ«α¼á π½πτΦÑ¡¡«ú«
- αѪ¿¼á, φΓ« «º¡áτáÑΓ ß½ÑñπεΘÑÑ:
-
- mov ax,[bx+6] ; π½πτΦÑ¡¡δ⌐ αѪ¿¼
-
- è«¡Ñτ¡«! éδ σ«Γ¿ΓÑ ºáúαπº¿Γ∞ ó αÑú¿ßΓα AX ß«ñÑন¼«Ñ ∩τÑ⌐¬¿
- ó ΓѬπΘѼ ßÑú¼Ñ¡ΓÑ ñá¡¡δσ, «ΓßΓ«∩ΘÑ⌐ ¡á 6 íá⌐Γ«ó «Γ ß¼ÑΘÑ¡¿∩, ºá-
- ñá¡¡«ú« αÑú¿ßΓα«¼ BX. ƒß¡ÑÑ ¡Ñ ߬áªÑΦ∞. Äñ¡á¬« ó αѪ¿¼Ñ MASM óδ-
- αáªÑ¡¿∩ ¡Ñ óßÑúñá ¿¼ÑεΓ Γᬫ⌐ »«¡∩Γ¡δ⌐ ó¿ñ:
-
- mov ax,es:[bp+8][si+6] ; αѪ¿¼ MASM
-
- ÅαÑñ»«½«ª¿¼, óδ íÑαÑΓÑ º¡áτÑ¡¿Ñ, «ΓßΓ«∩ΘÑÑ ¡á 8 íá⌐Γ«ó «Γ
- BP, »α¿¼Ñ¡∩ÑΓÑ »αÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá ES:, ¿... ìÑΓ,
- »ÑαÑ«»αÑñѽѡ¿Ñ ñ«½ª¡« »α¿¼Ñ¡∩Γ∞ß∩ ¬ º¡áτÑ¡¿ε, «ΓßΓ«∩ΘѼπ ¡á 6
- íá⌐Γ«ó «Γ SI. ìÑΓ, φΓ« ¡Ñ Γá¬, óÑα«∩Γ¡« ¡πª¡« óº∩Γ∞ º¡áτÑ¡¿Ñ »«
- áñαÑßπ BP+8, ß½«ª¿Γ∞ ß ß«ñÑন¼δ¼ [SI+6], »α¿¼Ñ¡¿Γ∞ »αÑΣ¿¬ß
- »ÑαÑ«»αÑñѽѡ¿∩... Äñ¡á¬« «ßΓáó¿¼ φΓ«. ô½πτΦÑ¡¡δ⌐ αѪ¿¼ »«ºó«½∩ÑΓ
- »α«ΘÑ ºá»¿ßδóáΓ∞ ¿ τ¿ΓáΓ∞ Γá¬¿Ñ ß½«ª¡δÑ «»Ñαá¡ñδ:
-
- mov ax,[es:bp+si+14]
-
- ÄτÑó¿ñ¡«, º¡áτÑ¡¿Ñ, αáß»«½«ªÑ¡¡«Ñ »« ß¼ÑΘÑ¡¿ε BP+SI+14 ó
- ßÑú¼Ñ¡ΓÑ ES ºáúαπªáÑΓß∩ ó αÑú¿ßΓα AX. ¥Γ« »α«ßΓ« ¿ »«¡∩Γ¡«. Å«⌐-
- ñѼ ñá½∞ΦÑ:
-
- mov al,byte ptr [bx] ; αѪ¿¼ MASM
-
- MASM «τÑó¿ñ¡« »«ºó«½∩ÑΓ óá¼ ºáñáΓ∞ ß«ñÑন¼«Ñ ∩τÑѬ »á¼∩Γ¿ ß
- »«¼«Θ∞ε íá⌐Γ«óδσ π¬áºáΓѽÑ⌐, »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ó φΓ«⌐ ¿¡ßΓαπ¬µ¿¿
- óÑα«∩Γ¡« ñѽáÑΓß∩ ¿¼Ñ¡¡« φΓ«. éδ ¼«ªÑΓÑ, ¬«¡Ñτ¡«, ßßδ½áΓ∞ß∩ ¡á
- íá⌐Γδ ¿½¿ ß½«óá Γ«½∞¬« ß »«¼«Θ∞ε π¬áºáΓѽÑ⌐ (αÑú¿ßΓα«ó ¿ ¼ÑΓ«¬),
-
- TASM2 #3-5/䫬 = 186 =
-
- τΓ« ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ßΓá¡«ó¿Γß∩ ñ«ßΓáΓ«τ¡« «τÑó¿ñ¡δ¼:
-
- mov al,[byte ptr bx] ; π½πτΦÑ¡¡δ⌐ αѪ¿¼
-
- ÄτÑó¿ñ¡«, óδ π¬áºδóáΓÑ Æπαí« ÇßßѼí½Ñαπ, τΓ« BX - φΓ« íá⌐Γ«-
- óδ⌐ π¬áºáΓѽ∞, ºáúαπªá∩ ó αÑú¿ßΓα AL íá⌐Γ, «ΓßΓ«∩Θ¿⌐ ¡á BX íá⌐Γ«ó
- «Γ ¡áτá½á ΓѬπΘÑú« ßÑú¼Ñ¡Γá ñá¡¡δσ. Åα¿óÑñѼ ñ½∩ »«½¡«Γδ ¬áαΓ¿¡δ
- ÑΘÑ «ñ¿¡ »α¿¼Ñα:
-
- rep movs byte ptr [di],[si] ; αѪ¿¼ MASM
-
- MASM «τÑó¿ñ¡« »«ºó«½∩ÑΓ óá¼ »αÑ«íαẫóδóáΓ∞ ß¿¼ó«½δ, áñαÑßπ-
- ѼδÑ ß »«¼«Θ∞ε αÑú¿ßΓαá DI (¿ 󫺼«ª¡« SI?) ó íá⌐Γ«óδÑ π¬áºáΓѽ¿?
- è«¡Ñτ¡«, óδ φΓ«ú« ßñѽáΓ∞ ¡Ñ ¼«ªÑΓÑ. èᬠφΓ« ¼«ª¡« ó¿ñÑΓ∞ ó π½πτ-
- ΦÑ¡¡«¼ αѪ¿¼Ñ, φΓ« ñ«½ª¡« «º¡áτáΓ∞ ß½ÑñπεΘÑÑ:
-
- rep mov [byte ptr di],[byte ptr si] ; π½πτ-
- ; ΦÑ¡¡δ⌐ αѪ¿¼
-
- ò«Γ∩ Γá¬á∩ ºá»¿ß∞ ¿ ñ½¿¡¡ÑÑ, ∩ß¡«, τΓ« αÑú¿ßΓαδ DI ¿ SI -
- φΓ« íá⌐Γ«óδÑ π¬áºáΓѽ¿ ñ½∩ ¿¡ßΓαπ¬µ¿¿ MOVS.
-
- è«¡Ñτ¡«, φΓ¿ »α¿¼Ñαδ ¡Ñ »«½¡δÑ, ¿ óδ, óÑα«∩Γ¡«, ¡á⌐ñÑΓÑ ó
- MASM ¼¡«ú« ñαπú¿σ »α¿ó«ñ∩Θ¿σ ¬ »πΓá¡¿µÑ «»Ñαá¡ñ«ó ß ¬óáñαáΓ¡δ¼¿
- ߬«í¬á¼¿. è«úñá φΓ« »α«¿ßσ«ñ¿Γ, »«»δΓá⌐ΓÑß∞ »ÑαÑ⌐Γ¿ ó π½πτΦÑ¡¡δ⌐
- αѪ¿¼, σ«Γ∩ íδ ñ½∩ «ñ¡«⌐ ¿¡ßΓαπ¬µ¿¿. çáΓѼ ¿ß»«½∞ºπ⌐ΓÑ »α¿¼Ñαδ ¿
- »ÑαÑ»¿Φ¿ΓÑ ¿¡ßΓαπ¬µ¿ε ó Γᬫ¼ ó¿ñÑ, ¬«Γ«αδ⌐ óδ ¼«ªÑΓÑ »«¡∩Γ∞. éδ-
- »«½¡¿ó φΓ«, óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ π½πτΦÑ¡¡δ⌐ αѪ¿¼ ¡Ñ Γ«½∞¬« ñ½∩
- Γ«ú«, τΓ«íδ »¿ßáΓ∞ í«½ÑÑ »«¡∩Γ¡δÑ ¿ τ¿ΓáѼδÑ »α«úαá¼¼δ, ¡« ¿ ñ½∩
- Γ«ú«, τΓ«íδ ½πτΦÑ »«¡∩Γ∞ ¬«¡ßΓαπ¬µ¿¿, ó ¬«Γ«αδσ ¿ß»«½∞ºπεΓß∩
- ¬óáñαáΓ¡δÑ ß¬«í¬¿, ¬«Γ«αδÑ ó MASM óδú½∩ñ∩Γ óÑß∞¼á Γπ¼á¡¡«.
-
-
- Ä»Ñαᵿ¿
- -----------------------------------------------------------------
-
- 꺼ѡѡ¿∩, ó¡ÑßÑ¡¡δÑ ó «»Ñαᵿ¿ óδαáªÑ¡¿⌐ ó π½πτΦÑ¡¡«¼ αѪ¿-
- ¼Ñ, »«ºó«½∩εΓ »«óδß¿Γ∞ ¼«Θ¡«ßΓ∞ ¿ ú¿í¬«ßΓ∞ ¡Ñ¬«Γ«αδσ «»Ñαᵿ⌐,
- «ßΓáó¿ó íѺ ¿º¼Ñ¡Ñ¡¿∩ «íΘÑÑ »«óÑñÑ¡¿Ñ óδαáªÑ¡¿⌐. ä½∩ Γ«ú«, τΓ«íδ
- ß«ñÑ⌐ßΓó«óáΓ∞ ¡Ñ¬«Γ«αδ¼ ¬«¼í¿¡áµ¿∩¼ «»Ñαᵿ⌐, ¿º¼Ñ¡Ñ¡ »«α∩ñ«¬
- ßΓáαΦ¿¡ßΓóá ¡Ñ¬«Γ«αδσ «»Ñαᵿ⌐. (æ¼. â½áóπ 2 ó "æ»αáó«τ¡«¼ απ¬«-
- ó«ñßΓóÑ", úñÑ »α¿ó«ñ¿Γß∩ Γáí½¿µá ßΓáαΦ¿¡ßΓóá «»Ñαᵿ⌐ ¿ ñáÑΓß∩
- »«½¡«Ñ «»¿ßá¡¿Ñ óßÑσ «»Ñαᵿ⌐ αѪ¿¼á MASM ¿ π½πτΦÑ¡¡«ú« αѪ¿¼á.)
-
-
- Æ«τ¬¿ ó φ½Ñ¼Ñ¡Γáσ ßΓαπ¬Γπαδ
-
- TASM2 #3-5/䫬 = 187 =
-
- -----------------------------------------------------------------
-
- Ǭ¬παáΓ¡« ºáñáóá⌐ΓÑ Γ«τ¬π (.) ó φ½Ñ¼Ñ¡Γáσ ßΓαπ¬Γπαδ, ¡á ¬«-
- Γ«αδÑ óδ ßßδ½áÑΓÑß∞. Ä»Ñαᵿ∩ Γ«τ¬¿ ñ½∩ φ½Ñ¼Ñ¡Γ«ó ßΓαπ¬Γπα ó
- π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ∩ó½∩ÑΓß∩ í«½ÑÑ ßΓα«ú«⌐. éδαáªÑ¡¿Ñ ß½Ñóá «Γ Γ«τ-
- ¬¿ ñ«½ª¡« »αÑñßΓáó½∩Γ∞ ß«í«⌐ ¿¼∩ φ½Ñ¼Ñ¡Γá ßΓαπ¬Γπαδ. êß»«½∞ºπ∩
- πªÑ »α¿ó«ñ¿¼δÑ αá¡ÑÑ »α¿¼Ñαδ ßΓαπ¬Γπα SomeStuff ¿ OtherStuff,
- ºáúαπº¿¼ ΓÑ»Ñα∞ ó αÑú¿ßΓαδ º¡áτÑ¡¿∩ ¬«¡¬αÑΓ¡δσ φ½Ñ¼Ñ¡Γ«ó ßΓαπ¬-
- Γπα:
-
- ; Ä»¿ΦѼ »ÑαѼѡ¡δÑ ß »«¼«Θ∞ε ßΓαπ¬Γπα¡δσ Γ¿»«ó
- S_Stuff SomeStuff <>
- O_Stuff OtherStuff <>
- mov ax,[S_Stuff.Amount] ; ºáúαπº¿Γ∞ º¡áτÑ¡¿Ñ αẼÑα«¼ ó
- ; ß½«ó«
- mov bl,[O_Stuff.Amount] ; ºáúαπº¿Γ∞ º¡áτÑ¡¿Ñ αẼÑα«¼ ó
- ; íá⌐Γ
-
-
-
-
- TASM2 #3-5/䫬 = 188 =
-
- ô¬áºáΓѽ¿ ¡á ßΓαπ¬Γπαδ
- -----------------------------------------------------------------
-
- ùáßΓ« óá¼ ¼«ªÑΓ »«ΓαÑí«óáΓ∞ß∩ ¿ß»«½∞º«óáΓ∞ αÑú¿ßΓα, ß«ñÑαªá-
- Θ¿⌐ áñαÑß ßΓαπ¬Γπαδ, ñαπú¿¼¿ ß½«óἿ, ß¼ÑΘÑ¡¿Ñ »Ñαó«ú« íá⌐Γá
- ßΓαπ¬Γπαδ ó »á¼∩Γ¿. ï¿í« π óá¼ ¼«ªÑΓ íδΓ∞ »ÑαѼѡ¡á∩ ó »á¼∩Γ¿, ß
- »«¼«Θ∞ε ¬«Γ«α«⌐ ¼«ª¡« áñαÑß«óáΓ∞ß∩ ¬ ßΓαπ¬ΓπαÑ. é φΓ¿σ ß½πτá∩σ
- ñ½∩ ßß佬¿ ¡á ¬«¡¬αÑΓ¡δ⌐ φ½Ñ¼Ñ¡Γ ßΓαπ¬Γπαδ »« ¿¼Ñ¡¿ óδ ñ«½ª¡δ ß«-
- «íΘ¿Γ∞ Æπαí« ÇßßѼí½Ñαπ, ¡á ¬á¬πε ßΓαπ¬Γπαπ óδ ßßδ½áÑΓÑß∞:
-
- mov cx,[(SomeStuff ptr bx).Amount)
-
- ¥Γ« »«ºó«½∩ÑΓ Æπαí« ÇßßѼí½Ñαπ «»αÑñѽ¿Γ∞, τΓ« αÑú¿ßΓα BX ∩ó-
- ½∩ÑΓß∩ π¬áºáΓѽѼ ¡á SomeStaff, ¿ τΓ« óδ σ«Γ¿ΓÑ ºáúαπº¿Γ∞ ß«ñÑα-
- ª¿¼«Ñ »«½∩ Amount ¿º ßΓαπ¬Γπαδ ó αÑú¿ßΓα CX. çñÑß∞ ΓαÑíπÑΓß∩ π¬á-
- ºδóáΓ∞ ߬«í¬¿, Γᬠ¬á¬ «»Ñαᵿ∩ Γ«τ¬¿ ¿¼ÑÑΓ í«½ÑÑ óδß«¬¿⌐ »α¿«α¿-
- ΓÑΓ, τѼ «»Ñαᵿ∩ PTR. üѺ ߬«í«¬ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ñѽáÑΓß∩
- »«»δΓ¬á ßó∩ºáΓ∞ ß BX Amount, τΓ«, ¬«¡Ñτ¡«, ¡Ñ󫺼«ª¡«, Γᬠ¬á¬
- αÑú¿ßΓαδ ¡Ñ ¿¼ÑεΓ ¿¼Ñ¡ »«½Ñ⌐. ê¼Ñ¡á »«½Ñ⌐ ¿¼ÑεΓ Γ«½∞¬« ßΓαπ¬Γπαδ,
- Γᬿ¼ «íαẫ¼, óδ ñ«½ª¡δ »ÑαÑñ ßß佬«⌐ ¡á »«½∩ ßΓαπ¬Γπαδ, ¬«Γ«αδÑ
- áñαÑßπεΓß∩ ß »«¼«Θ∞ε αÑú¿ßΓα«ó, óδ ñ«½ª¡δ »αÑ«íαẫóáΓ∞ π¬áºáΓѽ¿
- ¡á ßΓαπ¬Γπαδ.
-
-
-
-
- TASM2 #3-5/䫬 = 189 =
-
-
- Ä»Ñαᵿ∩ SYMTYPE
- -----------------------------------------------------------------
-
- Æá¬ ¬á¬ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ Æπαí« ÇßßѼí½Ñαá ¿ñÑ¡Γ¿Σ¿¬áΓ«α
- ¡Ñ ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ ß Γ«τ¬¿, «»Ñαᵿ∩ .TYPE MASM »ÑαÑ¿¼Ñ¡«óá¡á ó
- π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ó SYMTYPE (ß¼. â½áóπ 1 "æ»αáó«τ¡«ú« απ¬«ó«ñß-
- Γóá"). ìÑß¼«Γα∩ ¡á φΓ« ¿º¼Ñ¡Ñ¡¿Ñ ó ¿¼Ñ¡¿, ñ¿αÑ¬Γ¿óá ó «í«¿σ αѪ¿-
- ¼áσ αáí«ΓáÑΓ «ñ¿¡á¬«ó«, ó«ºóαáΘá∩ º¡áτÑ¡¿Ñ, »«¬áºδóáεΘÑÑ Γ¿»δ
- αẽ¿τ¡δσ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó:
-
- Abyte DB 0
- Aword DW 0
- Array DD 10 DUP (8)
- Btype = SYMTYPE Abyte ; 1
- Wtype = SYMTYPE Aword ; 2
- Atype = SYMTYPE Array ; 4
-
- Ä»Ñαᵿ¿ HIGH ¿ LOW
- -----------------------------------------------------------------
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ «»Ñαᵿ¿ HIGH ¿ LOW ¿¼ÑεΓ ñóá º¡áτÑ¡¿∩.
- Äíδτ¡« «»Ñαᵿ∩ HIGH «»αÑñѽ∩ÑΓ ßΓáαΦ¿⌐ (í«½ÑÑ º¡áτáΘ¿⌐) íá⌐Γ
- ¬«¡ßΓá¡Γδ, á LOW «»αÑñѽ∩ÑΓ ¼½áñΦ¿⌐ (¼Ñ¡ÑÑ º¡áτáΘ¿⌐) íá⌐Γ, ¡á»α¿-
- ¼Ñα:
-
- MaxVal = 1234h
- mov ah, HIGH MaxVal ; ºáúαπªáÑΓ ó AH 12h
- mov ah, LOW MaxVal ; ºáúαπªáÑΓ ó AH 34h
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ «»Ñαᵿ¿ HIGH ¿ LOW ¼«ª¡« ¿ß»«½∞º«óáΓ∞
- ñ½∩ óδí«αá ßΓáαΦÑ⌐ ¿½¿ ¼½áñΦÑ⌐ τáßΓ¿ óδαáªÑ¡¿∩, úñÑ ¿¼ÑÑΓß∩ ßßδ½-
- ¬á ¡á »á¼∩Γ∞:
-
- WordVal DW 0
- DbVal DD 0
- QVal DQ 0
- mov bl, [BYTE LOW WordVal]
- mov ax, [WORD HIGH DbVal]
- mov ax, [WORD LOW QVal]
-
- ÅÑαóá∩ ¿¡ßΓαπ¬µ¿∩ MOV ºáúαπªáÑΓ ó αÑú¿ßΓα BL ¼½áñΦ¿⌐ íá⌐Γ
- ñóπσíá⌐Γ«ó«ú« ß½«óá ß ¼ÑΓ¬«⌐ WordVal. éΓ«αá∩ ¿¡ßΓαπ¬µ¿∩ MOV ºáú-
- απªáÑΓ ó AX ßΓáαΦÑÑ ß½«ó« 4-íá⌐Γ«ó«ú« º¡áτÑ¡¿∩, ºá»¿ßá¡¡«ú« ó
- DbVal. ÆαÑΓ∞∩ ¿¡ßΓαπ¬µ¿∩ MOV ºáúαπªáÑΓ ó αÑú¿ßΓα AX ¼½áñΦÑÑ ß½«ó«
- 8-íá⌐Γ«ó«ú« (τÑΓóÑα¡«Ñ ß½«ó«) º¡áτÑ¡¿∩ ó QVal. çá¼ÑΓ¿¼, τΓ« ß¿¡-
-
- TASM2 #3-5/䫬 = 190 =
-
- Γá¬ß¿ß ºñÑß∞ ëà ªÑ, τΓ« ¿ ñ½∩ «»Ñαᵿ¿ PTR: ¬½ετÑóδÑ ß½«óá BYTE
- ¿½¿ WORD π¬áºδóáεΓß∩ »ÑαÑñ «»Ñαᵿ∩¼¿ LOW ¿½¿ HIGH, »½εß óδαáªÑ-
- ¡¿Ñ ß« ßß佬«⌐ ¡á »á¼∩Γ∞.
-
- éδ ¼«ªÑΓÑ Γá¬ªÑ ¿ß»«½∞º«óáΓ∞ «»Ñαᵿ¿ LOW ¿ HIGH ß«ó¼ÑßΓ¡«
- ñ½∩ óδñѽѡ¿∩ ¡πª¡«⌐ óá¼ ¿¡Σ«α¼áµ¿¿ ¿º º¡áτÑ¡¿∩, ß«ßΓ«∩ΘÑú« ¿º
- ¡Ñ߬«½∞¬¿σ íá⌐Γ«ó:
-
- DbVal DD 12345678h
- mov al,[BYTE LOW WORD HIGH DVal] ; ºáúαπªáÑΓ
- ; 34h ó AL
-
- é ß«τÑΓá¡¿¿ ß BYTE ¿ WORD ¬½ετÑóδÑ ß½«óá LOW ¿ HIGH óδñѽ∩εΓ
- íá⌐Γδ ¿ ß½«óá ¿º ½εí«⌐ »«º¿µ¿¿ ó »ÑαѼѡ¡«⌐. çñÑß∞ DVal - φΓ«
- ñó«⌐¡«Ñ ß½«ó« 4-íá⌐Γ«ó«⌐ óѽ¿τ¿¡δ. ùΓ«íδ ½πτΦÑ »«¡∩Γ∞ ß½«ª¡δÑ
- ¬«¼í¿¡áµ¿¿, á¡á½«ú¿τ¡δÑ »α¿óÑñÑ¡¡«⌐, τ¿Γá⌐ΓÑ óδαáªÑ¡¿Ñ ß½Ñóá-¡á»-
- αáó«. é φΓ«¼ ß½πτáÑ ¿¡ßΓαπ¬µ¿∩ MOV ºáúαπªáÑΓ ó AL "¼½áñΦ¿⌐ íá⌐Γ
- (LOW BYTE) ßΓáαΦÑú« ß½«óá (WORD HIGH) º¡áτÑ¡¿∩ DVal".
-
-
- ìÑ«í∩ºáΓѽ∞¡á∩ «»Ñαᵿ∩ PTR
- -----------------------------------------------------------------
-
- é óδαáªÑ¡¿∩σ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ß«¬αáΘÑ¡¡δÑ »ÑαÑ«»αÑñѽѡ¿∩
- π¬áºáΓѽÑ⌐. ùΓ«íδ ßñѽáΓ∞ φΓ«, ¼«ª¡« «»πßΓ¿Γ∞ «»Ñαᵿε PTR. ìá»-
- α¿¼Ñα:
-
- [BYTE PTR OverTheRainbow]
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ß«¬αáΘÑ¡¿Ñ íπñÑΓ óδú½∩ñÑΓ∞ Γá¬:
-
- [BYTE OverTheRainBow]
-
- Ä»Ñαᵿ∩ SIZE
- -----------------------------------------------------------------
-
- Ä»Ñαᵿ∩ SIZE ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ß««íΘáÑΓ « ñÑ⌐ßΓó¿Γѽ∞¡«¼
- τ¿ß½Ñ íá⌐Γ, ºá¡¿¼áѼδσ φ½Ñ¼Ñ¡Γ«¼ ñá¡¡δσ. ¥Γ« »«ºó«½∩ÑΓ ½Ñú¬« «»-
- αÑñѽ∩Γ∞ ñ½¿¡π ßΓ᫬:
-
- theTitle DB "The Sun Also RIses"
- TheAuthor DB "Ernest Heminhway", 0
- titleSize = Size theTitle ; IDEAL--18, MASM--1
- authorSize = Size theAutor ; IDEAL--16, MASM--1
-
-
- TASM2 #3-5/䫬 = 191 =
-
- é ñá¡¡«¼ »α¿¼ÑαÑ theTitle ¿ theAutor - φΓ« ßΓ᫬¿. é αѪ¿¼Ñ
- MASM «»Ñαᵿ∩ SIZE »α¿ßóá¿óáÑΓ ñ½¿¡π (LENGTH) ¿¼Ñ¡¿, π¼¡«ªÑ¡¡πε
- ¡á ÑÑ Γ¿» (TYPE). 使¡á αáó¡á τ¿ß½π óδñѽѡ¡δσ φ½Ñ¼Ñ¡Γ«ó ñá¡¡δσ,
- ó ñá¡¡«¼ ß½πτáÑ 1 (σ«Γ∩ ßΓα«¬á ¿ ß«ßΓ«¿Γ ¿º ¼¡«ªÑßΓóá ß¿¼ó«½«ó,
- LENGTH ¡á «ß¡«óá¡¿¿ ñ¿αÑ¬Γ¿óδ DB αáßß¼áΓα¿óáÑΓ ßΓ᫬¿, ¬á¬ «ñ¡«-
- íá⌐Γ«óδÑ φ½Ñ¼Ñ¡Γδ). ç¡áτÑ¡¿Ñ TYPE ñ½∩ DB Γá¬ªÑ αáó¡« 1. é ¿Γ«úÑ ó
- αѪ¿¼Ñ MASM ¿ titleSize, ¿ authorSize, αáó¡δ 1, τΓ« óα∩ñ ½¿ ¼«ªÑΓ
- »«¼«τ∞ ¡á¼ óδτ¿ß½¿Γ∞ ñ½¿¡π ßΓ᫬¿.
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ «»Ñαᵿ∩ SIZE ó«ºóαáΘáÑΓ τ¿ß½« íá⌐Γ, ºá-
- ¡¿¼áѼδσ »Ñαóδ¼ φ½Ñ¼Ñ¡Γ«¼ »«ß½Ñ ñ¿αÑ¬Γ¿ó óδñѽѡ¿∩ »á¼∩Γ¿ (Γᬿσ
- ¬á¬ DB ¿½¿ DW). Å«φΓ«¼π titleSize αáó¡« τ¿ß½π ß¿¼ó«½«ó ó
- theTitle. ǡὫú¿τ¡«, º¡áτÑ¡¿Ñ autorSize αáó¡« τ¿ß½π ß¿¼ó«½«ó ó
- ßΓα«¬Ñ theAuthor. çá¼ÑΓ¿¼, «ñ¡á¬«, τΓ« theAuthor ºáóÑαΦáÑΓß∩ ¡π-
- ½Ñóδ¼ íá⌐Γ«¼, «Γ¼ÑτáεΘ¿¼ ¬«¡Ñµ ßΓ᫬¿. Ä»Ñαᵿ∩ SIZE φëà íá⌐Γ ¡Ñ
- πτ¿ΓδóáÑΓ, ó«ºóαáΘá∩ Γ«½∞¬« τ¿ß½« ß¿¼ó«½«ó ó »αÑñΦÑßΓóπεΘÑ⌐ ßΓα«-
- ¬Ñ. öá¬Γ¿τÑ߬¿, «»Ñαᵿ∩ SIZE ó«ºóαáΘáÑΓ ñ½¿¡π Γ«½∞¬« »Ñαó«ú«
- φ½Ñ¼Ñ¡Γá ó ½εí«¼ ß»¿ß¬Ñ ¿º ¼¡«ªÑßΓóá º¡áτÑ¡¿⌐. ìá»α¿¼Ñα:
-
- CountDown DB 9,8,7,6,5,4,3,2,1,"Blast off"
- TwoLines DB "First line",13,10,"Second line"
- CDsize SIZE CountDown ; 1
- TLsize SIZE TwoLines ; 10
-
- çñÑß∞ CountDown áñαÑßπÑΓß∩ ¬ 9-íá⌐Γ«óδ¼ º¡áτÑ¡¿∩¼, ß½ÑñπεΘ¿¼
- ºá ßΓ᫬«⌐ "Blast off". ìÑß¼«Γα∩ ¡á φΓ«, αẼÑα CountDown
- (CDsize) ¬á¬ ó αѪ¿¼Ñ MASM, Γᬠ¿ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ, íπñÑΓ αá-
- óÑ¡ 1, Γ« ÑßΓ∞ αẼÑαπ »Ñαó«ú« φ½Ñ¼Ñ¡Γá ó ß»¿ß¬Ñ. ä½∩ óΓ«α«ú«
- »α¿¼Ñαá, TwoLines (¬«Γ«αδ⌐ »αÑñßΓáó½∩ÑΓ ß«í«⌐ Γ¿»¿τ¡δ⌐ ß»«ß«í
- σαá¡Ñ¡¿∩ ñóπσ ßΓ᫬, ¬«Γ«αδÑ αáºñѽѡδ ß¿¼ó«½á¼¿ ó«ºóαáΓá ¬áαÑΓ¬¿
- (13) ¿ »ÑαÑó«ñá ßΓ᫬¿ (10)) φΓ« ¡Ñ Γá¬. äóÑ ßΓ᫬¿ »«¼ÑτÑ¡δ ó
- »α«úαá¼¼Ñ «ñ¡¿¼ ¿¼Ñ¡Ñ¼ TwoLines. Ä»Ñαᵿ∩ SIZE íπñÑΓ ß¡«óá ó«ºó-
- αáΘáΓ∞ αẼÑα »Ñαó«ú« φ½Ñ¼Ñ¡Γá »«ß½Ññ«óáΓѽ∞¡«ßΓ¿, ó ñá¡¡«¼ ß½π-
- τáÑ ßΓ᫬¿ "First line". é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ TLSize αáó¡« 10,
- τ¿ß½π ß¿¼ó«½«ó ó ßΓ᫬Ñ. é αѪ¿¼Ñ MASM º¡áτÑ¡¿Ñ TLSIZE αáó¡« 1,
- αẼÑαπ »Ñαó«ú« φ½Ñ¼Ñ¡Γá DB, Γ« ÑßΓ∞ «ñ¡«¼π íá⌐Γπ (ß¿¼ó«½π).
-
-
-
-
- TASM2 #3-5/䫬 = 192 =
-
-
- ä¿αÑ¬Γ¿óδ
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óδ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ αáí«ΓáεΓ á¡á½«ú¿τ¡« αѪ¿¼π MASM
- ¿ ó í«½∞Φ¿¡ßΓóÑ ß½πτáÑó ¿¼ÑεΓ ΓÑ ªÑ ¿¼Ñ¡á. Äñ¡á¬« ¼Ñªñπ á¡á½«ú¿τ-
- ¡δ¼¿ ñ¿αÑ¬Γ¿óἿ ó «í«¿σ αѪ¿¼áσ ¿¼ÑεΓß∩ ó᪡δÑ «Γ½¿τ¿∩, τΓ« ¿
- »«∩ß¡∩ÑΓß∩ ó ñá¡¡«¼ αáºñѽÑ.
-
- ô»αáó½Ñ¡¿Ñ ½¿ßΓ¿¡ú«¼
- -----------------------------------------------------------------
-
- ū߬«½∞¬π ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«α ¡Ñ ¼«ªÑΓ ¡áτ¿-
- ¡áΓ∞ß∩ ß Γ«τ¬¿, óßÑ ñ¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼ MASM ¡áτ¿¡áεΓ-
- ß∩ ß« º¡á¬á %. èα«¼Ñ Γ«ú«, τΓ«íδ í«½ÑÑ Γ«τ¡« «»¿ßδóáΓ∞ π»αáó½∩Ñ-
- ¼δÑ ñá¡¡δ¼¿ ñ¿αÑ¬Γ¿óἿ «»Ñαᵿ¿, ¿º¼Ñ¡Ñ¡« ¡Ñ߬«½∞¬« ¿¼Ñ¡.
- ä¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼ ó «í«¿σ αѪ¿¼áσ »α¿óÑñÑ¡δ ó ß½Ññπ-
- εΘ¿σ Γáí½¿µáσ.
-
- ------------------------------------------
- ÉѪ¿¼ MASM ô½πτΦÑ¡¡δ⌐ αѪ¿¼
- ------------------------------------------
- .CREF %CREF
- .LALL %MACS
- .LFCOND %CONDS
- .LIST %LIST
- .SFCOND %NOCONDS
- .XALL %NOMACS
- .XCREF %NOCREF
- .XLIST %NOLIST
- ------------------------------------------
-
- Æá¬ ¬á¬ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ óßÑ ñ¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡-
- ú«¼ ¡áτ¿¡áεΓß∩ ß ß¿¼ó«½á %, ñ¿αÑ¬Γ¿óá %OUTS αѪ¿¼á MASM »αÑ«íαá-
- º«óá¡á ó ñ¿αÑ¬Γ¿óπ DISPLAY.
-
- DISPLAY "çá»π߬ ñαá⌐óÑαá óó«ñá-óδó«ñá ÇßßѼí½Ñαá"
-
-
-
-
- TASM2 #3-5/䫬 = 193 =
-
- ä¿αÑ¬Γ¿óδ, ¡áτ¿¡áεΘ¿Ñß∩ ß Γ«τ¬¿
- -----------------------------------------------------------------
-
- äαπú¿Ñ ñ¿αÑ¬Γ¿óδ MASM, ¬«Γ«αδÑ ¡áτ¿¡áεΓß∩ ß ß¿¼ó«½á Γ«τ¬¿
- (.), ñ½∩ ∩ß¡«ßΓ¿ »ÑαÑ¿¼Ñ¡«óá¡δ. ìá»α¿¼Ñα, óßÑ ñ¿αÑ¬Γ¿óδ π»αáó½Ñ-
- ¡¿∩ »α«µÑßß«α«¼, ¡á»α¿¼Ñα .286, ¬«Γ«αδÑ óδú½∩ñ∩Γ ß¬«αÑÑ ¬á¬ τ¿ß-
- ½á, á ¡Ñ ¬á¬ ñ¿αÑ¬Γ¿óδ, ¡áτ¿¡áεΓß∩ ΓÑ»Ñα∞ ß ß¿¼ó«½á P, ¡á»α¿¼Ñα
- P286N. éßÑ ñ¿αÑ¬Γ¿óδ óδó«ñá ß««íΘÑ¡¿∩ «í «Φ¿í¬Ñ ó¿ñá .ERRxxx »Ñ-
- αÑ¿¼Ñ¡«óá¡δ ó ERRIFxxx. ìѬ«Γ«αδÑ ñαπú¿Ñ ñ¿αÑ¬Γ¿óδ ¡áºδóáεΓß∩ »«
- »αѪ¡Ñ¼π, ¡« ó ¡¿σ «ΓßπΓßΓóπÑΓ »Ñαóá∩ Γ«τ¬á.
-
- é ß½ÑñπεΘÑ⌐ Γáí½¿µÑ »α¿óÑñÑ¡ ß»¿ß«¬ óßÑσ ñ¿αÑ¬Γ¿ó, ¡áτ¿¡áε-
- Θ¿σß∩ ß Γ«τ¬¿ ó αѪ¿¼Ñ MASM, ¿ ¿σ φ¬ó¿óá½Ñ¡Γδ ó π½πτΦÑ¡¡«¼ αѪ¿-
- ¼Ñ.
-
- ---------------------------------------------
- ÉѪ¿¼ MASM ô½πτΦÑ¡¡δ⌐ αѪ¿¼
- ---------------------------------------------
- .186 P186
- .286 P286N
- .286C P286N
- .286P P286
- .287 P287
- .386 P386N
- .386C P386N
- .386P P386
- .387 P387
- .8086 P8086
- .8087 P8087
- .CODE CODESEG
- .CONST CONST
- .DATA DATASEG
- .DATA? UDATASEG
- .ERR ERR
- .ERR1 ERRIF1
- .ERR2 ERRIF2
- .ERRB ERRIFB
- .ERRDEF ERRIFDEF
- .ERRDIF ERRIFDIF
- .ERRDIFI ERRIFDIFI
- .ERRE ERRIFE
- .ERRIDN ERRIFIDN
- .ERRIDNI ERRIFIDNI
- .ERRNB ERRIFNB
- .ERRNDEF ERRIFNDEF
- .ERRNZ ERRIF
-
- TASM2 #3-5/䫬 = 194 =
-
- .FARDATA FARDATA
- .FARDATA? UFARDATA
- .MODEL MODEL
- .RADIX RADIX
- .STACK STACK
- ---------------------------------------------
-
- ÄíαáΓ¡δ⌐ »«α∩ñ«¬ ¿¼Ñ¡¿ ñ¿αÑ¬Γ¿óδ ¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá
- -----------------------------------------------------------------
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ »«α∩ñ«¬ ß¿¡Γá¬ß¿τÑ߬«ú« á¡á½¿ºá »α«ΘÑ,
- τѼ ó MASM. àß½¿ »Ñαóá∩ ½Ñ¬ßÑ¼á »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¬½ετÑó«Ñ ß½«-
- ó«, Γ« «¡á «»αÑñѽ∩ÑΓ «»Ñαᵿε, ¬«Γ«αá∩ ñ«½ª¡á óδ»«½¡∩Γ∞ß∩ ñ¿αѬ-
- Γ¿ó«⌐. àß½¿ »Ñαóá∩ ½Ñ¬ßѼá - φΓ« ¡Ñ ¬½ετÑó«Ñ ß½«ó«, Γ« «»Ñαᵿε
- «»αÑñѽ∩ÑΓ óΓ«αá∩ ½Ñ¬ßѼá.
-
- é ß««ΓóÑΓßΓó¿¿ ß φΓ¿¼ ¿º¼Ñ¡Ñ¡¿Ñ¼ ¿¼ÑεΓ «íαáΓ¡δσ »«α∩ñ«¬ ¿¼Ñ-
- ¡¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ¿ ñ¿αÑ¬Γ¿óδ. Å«ñα«í¡ÑÑ φΓ« ¼«ª¡« πó¿ñÑΓ∞ ó ß½Ñ-
- ñπεΘÑ⌐ Γáí½¿µÑ:
-
- ------------------------------------------------------
- ÉѪ¿¼ MASM ô½πτΦÑ¡¡δ⌐ αѪ¿¼
- ------------------------------------------------------
- ¿¼∩ ENDP ENDP[¿¼∩]
- ¿¼∩ ENDS ENDS[¿¼∩]
- ¿¼∩ GROUP ßÑú¼Ñ¡Γδ GROUP ¿¼∩ ßÑú¼Ñ¡Γδ
- ¿¼∩ LABEL Γ¿» LABEL ¿¼∩ Γ¿»
- ¿¼∩ MACRO áαúπ¼Ñ¡Γδ MACRO ¿¼∩ áαúπ¼Ñ¡Γδ
- ¿¼∩ PROC Γ¿» PROC ¿¼∩ Γ¿»
- ¿¼∩ RECORD áαúπ¼Ñ¡Γδ RECORD ¿¼∩ áαúπ¼Ñ¡Γδ
- ¿¼∩ SEGMENT áαúπ¼Ñ¡Γδ SEGMENT ¿¼∩ áαúπ¼Ñ¡Γδ
- ¿¼∩ STRUC STRUC ¿¼∩
- ¿¼∩ UNION UNION ¿¼∩
- ------------------------------------------------------
-
- çá¼ÑΓ¿¼, τΓ« ENDS ¿ ENDP ¡Ñ ΓαÑíπεΓ π¬áºá¡¿∩ ß««ΓóÑΓßΓóπεΘ¿σ
- ¿¼Ñ¡ »α¿ ºá¬αδΓ¿¿ «»αÑñѽѡ¿∩. àß½¿ óδ π¬áºδóáÑΓÑ ¿¼∩, ºáñáóá⌐ΓÑ
- Ñú« Γᬿ¼ ªÑ, ¬á¬ ó »αÑñΦÑßΓóπεΘÑ⌐ ñ¿αÑ¬Γ¿óÑ SEGMENT ¿½¿ PROC.
- ìѬ«Γ«αδÑ »α«úαá¼¼¿ßΓδ óßÑúñá ó¬½ετáεΓ ¿¼Ñ¡á, τΓ«íδ π½πτΦ¿Γ∞ τ¿-
- ΓáѼ«ßΓ∞ »α«úαá¼¼δ. ¥Γ« «ß«íÑ¡¡« »«½Ñº¡« »α¿ ¿ß»«½∞º«óá¡¿¿ ó½«-
- ªÑ¡¡δσ »α«µÑñπα ¿½¿ ßÑú¼Ñ¡Γ«ó. ¥Γ« «ß«íÑ¡¡« »«½Ñº¡« ñѽáΓ∞ »α¿
- ¿ß»«½∞º«óá¡¿¿ 󽫪ѡ¡δσ ßÑú¼Ñ¡Γ«ó ¿½¿ »α«µÑñπα, ¡« ¡Ñ ∩ó½∩ÑΓß∩
- «í∩ºáΓѽ∞¡δ¼.
-
- ìѬ«Γ«αδÑ ñ¿αÑ¬Γ¿óδ ó αѪ¿¼Ñ MASM ¿ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ
-
- TASM2 #3-5/䫬 = 195 =
-
- ¿ñÑ¡Γ¿τ¡δ. ìá»α¿¼Ñα, ß½ÑñπεΘ¿Ñ ñ¿αÑ¬Γ¿óδ «»αÑñѽ∩εΓ ¿ñÑ¡Γ¿Σ¿¬áΓ«-
- αδ, ¬á¬ τáßΓ∞ ß¿¡Γá¬ß¿ßá ∩ºδ¬á, ¿ Γᬿ¼ «íαẫ¼ ó «í«¿σ αѪ¿¼áσ
- ß«ó»áñáεΓ.
-
- = DD DQ
- : DF DT
- DB DP DW
- EQU
-
-
-
-
- TASM2 #3-5/䫬 = 196 =
-
- çᬽετÑ¡¡δÑ ó ¬áóδτ¬¿ ßΓ᫬¿, ∩ó½∩εΘ¿Ñß∩ áαúπ¼Ñ¡ΓἿ ñ¿αÑ¬Γ¿ó
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá INCLUDE ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ó«ß»α¿¡¿¼áÑΓ ó ¬áτÑßΓ-
- óÑ áαúπ¼Ñ¡Γá ºá¬½ετÑ¡¡«Ñ ó ¬áóδτ¬¿ ¿¼∩ Σá⌐½á:
-
- INCLUDE "MYDEFS.INC"
-
- é αѪ¿¼Ñ MASM ¬áóδτ¬¿ ¡Ñ ΓαÑí«ó὿ß∞:
-
- INCLUDE MYDEFS.INC
-
- ä¿αÑ¬Γ¿óδ %TITLE ¿ %SUBTTL Γá¬ªÑ ΓαÑíπεΓ, τΓ«íδ π¬áºδóáѼδÑ
- ó ¡¿σ ßΓ᫬¿ ºá¬½ετ὿ß∞ ó ¬áóδτ¬¿:
-
- %TITLE "îá¬α««»αÑñѽѡ¿∩" ; ¬«¼¼Ñ¡Γáα¿⌐ ¿ú¡«α¿απÑΓß∩
- %SUBTTL "ü½«¬ ßΓαπ¬Γπα¿α«óá¡¡δσ ¼á¬α«¬«¼á¡ñ" ; ¬«¼¼Ñ¡Γá-
- ; α¿⌐ ¿ú¡«α¿απÑΓß∩
-
- èᬠ»«¬áºδóáεΓ φΓ¿ »α¿¼Ñαδ, ΓαÑí«óá¡¿∩ π¬áºδóáΓ∞ ¬áóδτ¬¿, ó
- ¬«Γ«αδÑ ºá¬½ετáεΓß∩ ºáú«½«ó¬¿ ¿ »«ñºáú«½«ó¬¿, »«ºó«½∩εΓ óá¼ ñ«-
- íáó½∩Γ∞ ó ¬«¡µÑ φΓ¿σ ßΓ᫬ ¬«¼¼Ñ¡Γáα¿¿. é Σá⌐½ ½¿ßΓ¿¡úá φΓ¿ ¬«¼-
- ¼Ñ¡Γáα¿¿ ¡Ñ ó¬½ετáεΓß∩. é αѪ¿¼Ñ MASM óßÑ τΓ« ß½ÑñπÑΓ ºá ñ¿αÑ¬Γ¿-
- óἿ .TITLE ¿ .SUBTTL ßΓá¡«ó¿Γß∩ τáßΓ∞ε ßΓ᫬¿ ºáú«½«ó¬á (ó¬½ετá∩
- ½εíδÑ ¬«¼¼Ñ¡Γáα¿¿).
-
-
- æÑú¼Ñ¡Γδ ¿ úαπ»»δ
- -----------------------------------------------------------------
-
- 滫߫í, ß »«¼«Θ∞ε ¬«Γ«α«ú« Æπαí« ÇßßѼí½Ñα «íαáíáΓδóáÑΓ ó
- π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ßÑú¼Ñ¡Γδ ¿ úαπ»»δ, ¼«ªÑΓ ó¡ÑßΓ¿ í«½∞Φ«Ñ αẽ¿-
- τ¿Ñ ó Σ«α¼¿α«óá¡¿Ñ ¿ óδ»«½¡Ñ¡¿Ñ »α«úαá¼¼. èᬠ¿ í«½∞Φ¿¡ßΓóπ ½ε-
- ñÑ⌐, óá¼, óÑα«∩Γ¡«, ¡Ñ ºáσ«τÑΓß∩ ½«¼áΓ∞ ú«½«óπ ¡áñ «Φ¿í¬á¼¿, ó«º-
- ¡¿¬áεΘ¿¼¿ ¿º-ºá óºá¿¼«ñÑ⌐ßΓó¿∩ ßÑú¼Ñ¡Γ«ó ¿ úαπ»».
-
- ü«½∞Φ¿¡ßΓó« Γαπñ¡«ßΓÑ⌐ ó φΓ«¼ »α«µÑßßÑ ó«º¡¿¬áÑΓ ¿º-ºá »α«-
- ¿ºó«½∞¡«ú« σáαá¬ΓÑαá »αÑñ»«½«ªÑ¡¿⌐ ó MASM (¿ ß½Ññ«óáΓѽ∞¡« Æπαí«
- ÇßßѼí½Ñα«¼ ó αѪ¿¼Ñ MASM) « ßß佬áσ ¡á ñá¡¡δÑ ¿½¿ ¬«ñ ó úαπ»»áσ.
- è ßτáßΓ∞ε, π½πτΦÑ¡¡δ⌐ αѪ¿¼ ßú½áª¿óáÑΓ ¡Ñ¬«Γ«αδÑ ¡á¿í«½ÑÑ ∩ó¡δÑ
- »α«í½Ñ¼δ, ¬«Γ«αδÑ ¼«úπΓ óδºóáΓ∞ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ¿
- úαπ»» ó MASM. Äí φΓ«¼ ¼δ ¿ αáß߬áªÑ¼ ñá½ÑÑ.
-
- ä«ßΓπ» ¬ ñá¡¡δ¼ ó ßÑú¼Ñ¡ΓÑ, »α¿¡áñ½ÑªáΘѼ úαπ»»Ñ
- -----------------------------------------------------------------
-
- TASM2 #3-5/䫬 = 197 =
-
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ½εí«⌐ φ½Ñ¼Ñ¡Γ ñá¡¡δσ ó ßÑú¼Ñ¡ΓÑ, ∩ó½∩ε-
- ΘѼß∩ τáßΓ∞ε úαπ»»δ, αáßß¼áΓα¿óáÑΓß∩ ßΓα«ú« ¬á¬ φ½Ñ¼Ñ¡Γ úαπ»»δ,
- á ¡Ñ ßÑú¼Ñ¡Γá. é Æπαí« ÇßßѼí½ÑαÑ ñ½∩ αáß»«º¡áóá¡¿∩ φ½Ñ¼Ñ¡Γá ñá¡-
- ¡δσ, ¬á¬ φ½Ñ¼Ñ¡Γá ßÑú¼Ñ¡Γá, ¡πª¡« ¿ß»«½∞º«óáΓ∞ ∩ó¡«Ñ »ÑαÑ«»αÑñÑ-
- ½Ñ¡¿Ñ ßÑú¼Ñ¡Γá.
-
- é αѪ¿¼Ñ MASM φΓ« ¿¡ΓÑα»αÑΓ¿απÑΓß∩ »«-ñαπú«¼π. ê¡«úñá ¿ñÑ¡-
- Γ¿Σ¿¬áΓ«αδ ßτ¿ΓáÑΓß∩ τáßΓ∞ε ßÑú¼Ñ¡Γá, á ¡Ñ τáßΓ∞ε úαπ»»δ. é τáßΓ-
- ¡«ßΓ¿, ó αѪ¿¼Ñ MASM ¿ñÑ¡Γ¿Σ¿¬áΓ«α ¿¡ΓÑα»αÑΓ¿απÑΓß∩, ¬á¬ τáßΓ∞
- ßÑú¼Ñ¡Γá, ¬«úñá «¡ ¿ß»«½∞ºπÑΓß∩, ¬á¬ π¬áºáΓѽ∞ ¡á óδñѽѡ¡δÑ ñá¡-
- ¡δÑ. ¥Γ« ¼«ªÑΓ óδºóáΓ∞ »πΓá¡¿µπ, Γᬠ¬á¬ ¬«úñá óδ ¡Ñ»«ßαÑñßΓóÑ¡¡«
- «íαáΘáÑΓÑß∞ ¬ ñá¡¡δ¼ íѺ «»Ñαᵿ¿ OFFSET, MASM ¡Ñ¬«ααÑ¬Γ¡« úÑ¡Ñ-
- α¿απÑΓ ßß佬π ¡á ßÑú¼Ñ¡Γ ó¼ÑßΓ« ßß佬¿ ¡á úαπ»»π.
-
- Åα¿¼Ñα »«¼«ªÑΓ ¡á¼ »«∩ß¡¿Γ∞, ¬á¬ ½Ñú¬« ¼«ª¡« ¡áª¿Γ∞ ¡Ñ»α¿∩Γ-
- ¡«ßΓ¿ ¿º-ºá ߻ѵ¿Σ¿¬¿ áñαÑßᵿ¿ ó MASM. Éáßß¼«Γα¿¼ ß½ÑñπεΘπε ¡Ñ-
- »«½¡πε »α«úαá¼¼π MASM, ó ¬«Γ«α«⌐ «»¿ßδóáεΓß∩ Γα¿ ßÑú¼Ñ¡Γá ñá¡¡δσ:
-
- dseg1 SEGMENT para public 'data'
- v1 db 0
- dseg1 ENDS
-
- dseg2 SEGMENT para public 'data'
- v2 db 0
- dseg2 ENDS
-
- dseg3 SEGMENT para public 'data'
- v3 db 0
- dseg3 ENDS
-
- DGROUP GROUP dseg1,dseg2,dseg3
- cseg SEGMENT para public 'code'
-
- ASSUME cs:cseg,ds:DGROUP
-
- start:
- mov ax,OFFSET v1
- mov bx,OFFSET v2
- mov cx,OFFSET v3
- cseg ENDS
- END start
-
- Æα¿ ßÑú¼Ñ¡Γá dseg1, dseg2 ¿ dseg3 úαπ»»¿απεΓß∩ »«ñ «ñ¡¿¼
- ¿¼Ñ¡Ñ¼ DGROUP. é αѺπ½∞ΓáΓÑ óßÑ »ÑαѼѡ¡δÑ «Γñѽ∞¡δσ ßÑú¼Ñ¡Γ«ó
- σαá¡∩Γß∩ ó »á¼∩Γ¿ ó¼ÑßΓÑ. é ¿ßσ«ñ¡«¼ ΓѬßΓÑ »α«úαá¼¼δ ó ¬áªñ«¼ ¿º
-
- TASM2 #3-5/䫬 = 198 =
-
- «Γñѽ∞¡δσ ßÑú¼Ñ¡Γ«ó «»¿ßδóáÑΓß∩ íá⌐Γ«óá∩ »ÑαѼѡ¡á∩ (¼ÑΓ¬¿ v1, v2
- ¿ v3).
-
- é ¬«ñÑ ñá¡¡«⌐ »α«úαá¼¼δ MASM ó αÑú¿ßΓαδ AX, BX ¿ CX ºáúαπªá-
- εΓß∩ ß¼ÑΘÑ¡¿∩ áñαÑß«ó φΓ¿σ »ÑαѼѡ¡δσ. é ß««ΓóÑΓßΓó¿¿ ß »αÑñΦÑßΓ-
- óπεΘÑ⌐ ñ¿αÑ¬Γ¿óδ ASSUME ¿ ¿º-ºá Γ«ú«, τΓ« ßÑú¼Ñ¡Γδ ñá¡¡δσ ßúαπ»-
- »¿α«óá¡δ ó¼ÑßΓÑ, óδ ¼«ªÑΓÑ »«ñπ¼áΓ∞, τΓ« MASM íπñÑΓ óδτ¿ß½∩Γ∞
- ß¼ÑΘÑ¡¿∩ »ÑαѼѡ¡δσ «Γ¡«ß¿Γѽ∞¡« óßÑ⌐ úαπ»»δ, ó ¬«Γ«α«⌐ »ÑαѼѡ-
- ¡δÑ «τÑó¿ñ¡« σαá¡∩Γß∩ ó »á¼∩Γ¿.
-
- ì« »α«¿º«⌐ñÑΓ ß«óßѼ ¡Ñ φΓ«! é«»αѬ¿ óáΦ¿¼ ¡á¼ÑαÑ¡¿∩¼ MASM
- óδτ¿ß½∩ÑΓ ß¼ÑΘÑ¡¿∩ »ÑαѼѡ¡δσ «Γ¡«ß¿Γѽ∞¡« «Γñѽ∞¡δσ ßÑú¼Ñ¡Γ«ó
- dseg1, dseg2 ¿ dseg3. Ä¡ ñѽáÑΓ φΓ« ¡Ñß¼«Γα∩ ¡á Γ«, τΓ« óßÑ Γα¿
- ßÑú¼Ñ¡Γá ñá¡¡δσ ßúαπ»»¿α«óá¡δ ó »á¼∩Γ¿ ó «ñ¿¡ ßÑú¼Ñ¡Γ ñá¡¡δσ, áñ-
- αÑßπѼδ⌐ τÑαѺ αÑú¿ßΓα DS. üÑßß¼δ߽ѡ¡« «»αÑñѽ∩Γ∞ ß¼ÑΘÑ¡¿∩ »ÑαÑ-
- ¼Ñ¡¡δσ «Γ¡«ß¿Γѽ∞¡« «Γñѽ∞¡δσ ßÑú¼Ñ¡Γ«ó ó ΓѬßΓÑ »α«úαá¼¼δ, ¬«ú-
- ñá φΓ¿ ßÑú¼Ñ¡Γδ ߬«¼í¿¡¿α«óá¡δ ó »á¼∩Γ¿ ó «ñ¿¡ ßÑú¼Ñ¡Γ.
- àñ¿¡ßΓóÑ¡¡δ⌐ ß»«ß«í ßß佬¿ ¡á Γá¬¿Ñ »ÑαѼѡ¡δÑ ß«ßΓ«¿Γ ó ßß佬Ñ
- ¡á ¿σ ß¼ÑΘÑ¡¿∩ «Γ¡«ß¿Γѽ∞¡« óßÑ⌐ úαπ»»δ.
-
- ùΓ«íδ ¿ºíáó¿Γ∞ß∩ ó MASM «Γ φΓ«⌐ »α«í½Ñ¼δ, óá¼ »«ΓαÑíπÑΓß∩
- ¡áα∩ñπ ß ¬½ετÑóδ¼ ß½«ó«¼ OFFSET ºáñáóáΓ∞ ¿¼∩ úαπ»»δ:
-
- mov ax,OFFSET DGROUP:v1
- mov bx,OFFSET DGROUP:v2
- mov cx,OFFSET DGROUP:v3
-
- ò«Γ∩ ΓÑ»Ñα∞ φΓ« áßßÑ¼í½¿απÑΓß∩ ¬«ααÑ¬Γ¡« ¿ ºáúαπªáεΓß∩ ß¼Ñ-
- ΘÑ¡¿∩ »ÑαѼѡ¡δσ v1, v2 ¿ v3 «Γ¡«ß¿Γѽ∞¡« DGROUP (úñÑ ß«íαá¡δ «Γ-
- ñѽ∞¡δÑ ßÑú¼Ñ¡Γδ), óδ ¼«ªÑΓÑ ½Ñú¬« ºáíδΓ∞ ºáñáΓ∞ ¬óá½¿Σ¿¬áΓ«α
- DGROUP. àß½¿ óδ ßñѽáÑΓÑ φΓπ «Φ¿í¬π, º¡áτÑ¡¿∩ ß¼ÑΘÑ¡¿⌐ ¡Ñ »«ºó«-
- ½∩Γ ¬«ααÑ¬Γ¡« «»αÑñѽ¿Γ∞ »ÑαѼѡ¡δÑ ó »á¼∩Γ¿, ¿ óδ ¡Ñ »«½πτ¿ΓÑ ó
- MASM ¡¿¬á¬«ú« π¬áºá¡¿∩, τΓ« τΓ«-Γ« »α«¿º«Φ½« ¡Ñ Γá¬. ô½πτΦÑ¡¡δ⌐
- αѪ¿¼ »«ºó«½∩ÑΓ ¿ºíѪáΓ∞ Γᬿσ ¡Ñ»α¿∩Γ¡«ßΓÑ⌐:
-
- IDEAL
- SEGMENT dseg1 para public 'data'
- v1 db 0
- ENDS
-
- SEGMENT dseg2 para public 'data'
- v2 db 0
- ENDS
-
- SEGMENT dseg3 para public 'data'
- v3 db 0
-
- TASM2 #3-5/䫬 = 199 =
-
- ENDS
-
- GROUP DGROUP dseg1,dseg2,dseg3
- SEGMENT cseg para public 'code'
-
- ASSUME cs:cseg,ds:DGROUP
-
- start:
- mov ax,OFFSET v1
- mov bx,OFFSET v2
- mov cx,OFFSET v3
- ENDS
- END start
-
- æ¼ÑΘÑ¡¿∩ »ÑαѼѡ¡δσ v1, v2 ¿ v3 ¬«ααÑ¬Γ¡« óδτ¿ß½∩εΓß∩ «Γ¡«-
- ß¿Γѽ∞¡« úαπ»»δ, ó ¬«Γ«α«⌐ ß«íαá¡δ «Γñѽ∞¡δÑ ßÑú¼Ñ¡Γδ, ¬«Γ«αδ¼
- »α¿¡áñ½ÑªáΓ »ÑαѼѡ¡δÑ. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¬óá½¿Σ¿¬áΓ«α DGROUP
- ñ½∩ ßß佬¿ ¡á »ÑαѼѡ¡δÑ ó ßÑú¼Ñ¡Γáσ úαπ»»δ ¡Ñ ΓαÑíπÑΓß∩. é αѪ¿-
- ¼Ñ MASM φëà ¬óá½¿Σ¿¬áΓ«α Γá¬ªÑ ¡Ñ ∩ó½∩ÑΓß∩ ¡Ñ«íσ«ñ¿¼δ¼, ¡«, τΓ«
- σπªÑ óßÑú«, ¡Ñ óδñáÑΓß∩ ¡¿¬á¬¿σ »αÑñπ»αѪñÑ¡¿⌐, Ñß½¿ óδ ºáí뫨 ó
- ¬«¡¬αÑΓ¡«⌐ ßßδ½¬Ñ «»αÑñѽ¿Γ∞ ¿¼∩ úαπ»»δ.
-
- Ä»αÑñѽѡ¿Ñ ó ¬«ñÑ í½¿ª¡¿σ ¿ ñá½∞¡¿σ ¼ÑΓ«¬
- -----------------------------------------------------------------
-
- Åα¿ «»αÑñѽѡ¿¿ í½¿ª¡¿σ ¿½¿ ñá½∞¡¿σ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ó LABEL
- ¿½¿ PROC ßß佬¿ ¡á ¿ñÑ¡Γ¿Σ¿¬áΓ«α ñѽáεΓß∩ «Γ¡«ß¿Γѽ∞¡« úαπ»»δ, ó
- ¬«Γ«α«⌐ ß«ñÑনΓß∩ ßÑú¼Ñ¡Γ. àß½¿ ßÑú¼Ñ¡Γ, úñÑ ß«ñÑনΓß∩ ¿ñÑ¡Γ¿-
- Σ¿¬áΓ«α, ¡Ñ ∩ó½∩ÑΓß∩ τáßΓ∞ε úαπ»»δ, Γ« ¿ñÑ¡Γ¿Σ¿¬áΓ«α αáßß¼áΓα¿óá-
- ÑΓß∩ «Γ¡«ß¿Γѽ∞¡« ßÑú¼Ñ¡Γá. ¥Γ« «º¡áτáÑΓ, τΓ« óá¼ ¡Ñ ¡πª¡« ¿ß-
- »«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ ASSUME CS ñ½∩ ßÑú¼Ñ¡Γá, τΓ«íδ «»αÑñѽ¿Γ∞
- ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ í½¿ª¡Ñú« ¿½¿ ñá½∞¡Ñú« Γ¿»á. àß½¿ ºá»¿ßáΓ∞ Σαáú¼Ñ¡Γ
- »α«úαá¼¼δ ó αѪ¿¼Ñ MASM:
-
- CODE SEGMENT
- ASSUME CS:CODE
- XYZ PROC FAR
- .
- . ; ¬«ñ »α«µÑñπαδ MASM
- .
- XYZ ENDP
- CODE ENDS
-
- Γ« ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ «¡ »α¿¼ÑΓ ß½ÑñπεΘ¿⌐ ó¿ñ:
-
-
- TASM2 #3-5/䫬 = 200 =
-
- CODE SEGMENT
- PROC XYZ FAR
- .
- . ; ¬«ñ »α«µÑñπαδ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ
- .
- ENDP
- ENDS
-
-
- ¥Γ¿ ¿º¼Ñ¡Ñ¡¿∩ ¡Ñ ñ«íáó½∩εΓ ¡«óδσ 󫺼«ª¡«ßΓÑ⌐ »« ßαáó¡Ñ¡¿ε ß
- αѪ¿¼«¼ MASM. Äñ¡á¬« φΓ« »«ºó«½∩ÑΓ «ßó«í«ñ¿Γ∞ óáß «Γ ¡Ñ«íσ«ñ¿¼«ß-
- Γ¿ π¬áºδóáΓ∞ ÇßßѼí½Ñαπ Γ«, τΓ« π½πτΦÑ¡¡δ⌐ αѪ¿¼ ¼«ªÑΓ «»αÑñѽ¿Γ∞
- ßá¼.
-
- é¡ÑΦ¡¿Ñ, «íΘÑñ«ßΓπ»¡δÑ ¿ ú½«íá½∞¡δÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ
- -----------------------------------------------------------------
-
- éß∩¬¿⌐ αáº, ¬«úñá óδ ñ«½ª¡δ ºáñáóáΓ∞ Γ¿» (BYTE, WORD ¿
- Γ.ñ.), ¡á»α¿¼Ñα ó ñ¿αÑ¬Γ¿óáσ EXTRN ¿½¿ GLOBAL, ¼«ª¡« ¿ß»«½∞º«óáΓ∞
- ¿¼∩ ßΓαπ¬Γπαδ:
-
- STRUC MoreStuff
- HisStuff DB 0
- HerStuff DW 0
- ItsStuff DB 0
- ENDS
- EXTRN SNAME:MoreStuff
-
- ¥Γ« ßó«⌐ßΓó« ó ß«τÑΓá¡¿¿ ß «»¿ßá¡¡δ¼¿ αá¡ÑÑ π½πτΦÑ¡¿∩¼¿ ó
- «»Ñαᵿ¿ Γ«τ¬¿ »«ºó«½∩ÑΓ óá¼ ßßδ½áΓ∞ß∩ ¡á φ½Ñ¼Ñ¡Γδ ßΓαπ¬Γπα, ¬«-
- Γ«αδÑ ∩ó½∩εΓß∩ ó¡ÑΦ¡¿¼¿ »« «Γ¡«ΦÑ¡¿ε ¬ óáΦѼπ ¿ßσ«ñ¡«¼π ¼«ñπ½ε.
- ¥Γ« á¡á½«ú¿τ¡« Γ«¼π, ¬á¬ Ñß½¿ íδ óδ «»αÑñѽ¿½¿ φ½Ñ¼Ñ¡Γδ ßΓαπ¬Γπα
- ó «í«¿σ ¼«ñπ½∩σ. Ä»Ñαᵿ∩ SIZE Γá¬ªÑ ¬«ααÑ¬Γ¡« ß««íΘáÑΓ « αẼÑαÑ
- ó¡ÑΦ¡¿σ ßΓαπ¬Γπα ñá¡¡δσ. èáªñδ⌐ «íΘÑñ«ßΓπ»¡δ⌐ ß¿¼ó«½ ó π½πτΦÑ¡¡«¼
- αѪ¿¼Ñ «»αÑñѽ∩ÑΓß∩ »α¿ ºáñá¡¿¿ ñ¿αÑ¬Γ¿óδ PUBLIC. ¥Γ« »«½Ñº¡«
- Γá¬ªÑ ñ½∩ »ÑαÑ«»αÑñѽѡ¿∩ »ÑαѼѡ¡δσ. é MASM óßÑ «íΘÑñ«ßΓπ»¡δÑ
- ß¿¼ó«½δ »ÑαÑτ¿ß½∩εΓß∩ ó ¬«¡µÑ »α«úαá¼¼δ, τΓ« «úαá¡¿τ¿óáÑΓ ß»«ß«-
- íδ, ß »«¼«Θ∞ε ¬«Γ«αδσ óδ ¼«ªÑΓÑ »ÑαÑ«»αÑñѽ¿Γ∞ ß¿¼ó«½δ. ìá»α¿¼Ñα:
-
- Perfect = 0
- Public Perfect ; «íΩ∩ó¿Γ∞ Perfect «íΘÑñ«ßΓπ»¡δ¼
- Perfect = 10 ; »ÑαÑ«»αÑñѽ¿Γ∞ º¡áτÑ¡¿Ñ Perfect
-
- é αѪ¿¼Ñ MASM PUBLIC Perfect αáó¡« 8, σ«Γ∩ ó ¼«ñπ½Ñ Perfect
- »ÑαÑ«»αÑñѽ∩ÑΓß∩ »«ß½Ñ «»¿ßá¡¿∩ PUBLIC. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ, »«ß-
-
- TASM2 #3-5/䫬 = 201 =
-
- ¬«½∞¬π «íΘÑñ«ßΓπ»¡δ¼¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ßΓá¡«ó∩Γß∩ ó ¬«¡µÑ ¼«ñπ½∩,
- ñαπú«⌐ ¼«ñπ½∞, ¬«Γ«αδ⌐ ¿¼»«αΓ¿απÑΓ φëà ¿ñÑ¡Γ¿Σ¿¬áΓ«α ß »«¼«Θ∞ε
- «»¿ßá¡¿∩ EXTRN, »«½πτáÑΓ º¡áτÑ¡¿Ñ Perfect 10.
-
-
-
-
- TASM2 #3-5/䫬 = 202 =
-
-
- äαπú¿Ñ «Γ½¿τ¿∩
- -----------------------------------------------------------------
-
- é ñá¡¡«¼ αáºñÑ½Ñ «»¿ßδóáÑΓß∩ ¡Ñ߬«½∞¬« ñ«»«½¡¿Γѽ∞¡δσ «Γ½¿-
- τ¿⌐ αѪ¿¼á MASM «Γ π½πτΦÑ¡¡«ú« αѪ¿¼á.
-
- Å«ñáó½Ñ¡¿Ñ ¬«ααÑ¬Γ¿α«ó«¬
- -----------------------------------------------------------------
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ Æπαí« ÇßßѼí½Ñα ¡Ñ úÑ¡Ñα¿απÑΓ ßÑú¼Ñ¡Γ¡δσ
- ¬«ααÑ¬Γ¿α«ó«¬ ñ½∩ τáßΓ¡δσ ßÑú¼Ñ¡Γ«ó (private), ¬«Γ«αδÑ óδαáó¡¿óá-
- εΓß∩ ¡á úαá¡¿µπ ßΓαá¡¿µδ ¿½¿ »áαáúαáΣá. Æá¬ ¬á¬ ¬«¼»«¡«óΘ¿¬ ¡Ñ
- ΓαÑíπÑΓ »«ñ«í¡δσ ¬«ααÑ¬Γ¿α«ó«¬, »α¿ áßßÑ¼í½¿α«óá¡¿¿ »α«úαá¼¼ ó
- π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¼«ªÑΓ íδΓ∞ »«½πτÑ¡ «íΩÑ¬Γ¡δ⌐ ¬«ñ ¼Ñ¡∞ΦÑú« «íΩ-
- Ѽá, ¬«¼»«¡«ó¬π ¬«Γ«αδσ ¬«¼»«¡«óΘ¿¬ óδ»«½¡∩ÑΓ í«½ÑÑ íδßΓα«, τѼ
- ¬«¼»«¡«ó¬π «íΩÑ¬Γ¡δσ Σá⌐½«ó, ßúÑ¡Ñα¿α«óá¡¡δσ ó αѪ¿¼Ñ MASM. äá½ÑÑ
- »«¬áºδóáÑΓß∩, ¬á¬¿¼ «íαẫ¼ Γá¬¿Ñ ¬«ααÑ¬Γ¿α«ó¬¿ »α«¿ºó«ñ∩Γß∩ ó
- αѪ¿¼Ñ MASM (¡« ¡Ñ ó αѪ¿¼Ñ IDEAL):
-
- SEGMENT DATA PRIVATE PARA
- VAR1 DB 0
- VAR2 DW 0
- ENDS
- SEGMENT CODE
- ASSUME ds:DATA
- mov ax,VAR2 ; ¬«ααÑ¬Γ¿α«ó«¬ ¡Ñ ΓαÑíπÑΓß∩
- ENDS
-
- ¥Γ« αẽ¿τ¿Ñ ¡Ñ ó½¿∩ÑΓ ¡á ¬«ñ, ¬«Γ«αδ⌐ óδ »¿ΦÑΓÑ. çñÑß∞ «í
- φΓ«¼ π»«¼¿¡áÑΓß∩ Γ«½∞¬« ñ½∩ óáΦÑú« ßóÑñÑ¡¿∩.
-
-
- Ä»Ñαá¡ñ ¿¡ßΓαπ¬µ¿¿ BOUND
- -----------------------------------------------------------------
-
- é ¿¡ßΓαπ¬µ¿¿ BOUND ΓαÑíπÑΓß∩ π¬áºδóáΓ∞ «»Ñαá¡ñ Γ¿»á WORD
- (ß½«ó«), á ¡Ñ DWORD (ñó«⌐¡«Ñ ß½«ó«). ¥Γ« »«ºó«½∩ÑΓ óá¼ «»αÑñѽ¿Γ∞
- ¡¿ª¡εε ¿ óÑασ¡εε úαá¡¿µπ ó ó¿ñÑ ñóπσ ¬«¡ßΓá¡Γ αẼÑα«¼ ó ß½«ó«,
- τΓ« πßΓαá¡∩ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ∞ »αÑ«íαẫóá¡¿∩ «»Ñαá¡ñá ó DWORD ∩ó¡δ¼
- «íαẫ¼ (ß »«¼«Θ∞ε DWORD PTR). é αѪ¿¼Ñ MASM óδ ñ«½ª¡δ ºá»¿ßδ-
- óáΓ∞:
-
- BOUNDS DW 1,4 ; ¡¿ª¡∩∩ ¿ óÑασ¡∩∩ úαá¡¿µδ
- BOUND DWORD PTR BOUNDS ; ΓαÑíπÑΓß∩ ó αѪ¿¼Ñ MASM
-
-
- TASM2 #3-5/䫬 = 203 =
-
- Äñ¡á¬« ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ΓαÑíπÑΓß∩ Γ«½∞¬« ºá»¿ßáΓ∞:
-
- BOUNDS DW 1,4 ; ¡¿ª¡∩∩ ¿ óÑασ¡∩∩ úαá¡¿µδ
- BOUND [BOUNDS] ; ñ«»π߬áÑΓß∩ ó π½πτΦÑ¡¡«¼
- ; αѪ¿¼Ñ
-
- 諼¼Ñ¡Γáα¿¿ ó ¼á¬α«¬«¼á¡ñáσ
- -----------------------------------------------------------------
-
- é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¬«¼¼Ñ¡Γáα¿¿ ó ¼á¬α«¬«¼á¡ñáσ ¿¡ΓÑα»αÑΓ¿-
- απεΓß∩, ¬á¬ ßΓ᫬¿. ùΓ«íδ »«ñßΓáó¿Γ∞ ó ¼á¬α«¬«¼¼Ñ¡Γáα¿⌐ »πßΓ«⌐
- »áαá¼ÑΓα, óδ ñ«½ª¡δ π¬áºáΓ∞ »ÑαÑñ »áαá¼ÑΓα«¼ á¼»Ñαßá¡ñ (&):
-
- MACRO DOUBLE ARC
- SHL arg,1 ; π¼¡«ª¿Γ∞ &ARG ¡á 2
- ENDM
-
- è«úñá φΓá ¼á¬α«¬«¼á¡ñá óδºδóáÑΓß∩ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ß »«-
- ¼«Θ∞ε ó맮óá DOUBLE BX, Γ« ó Σá⌐½Ñ ½¿ßΓ¿¡úá óδóÑñÑΓß∩:
-
- SHL bx,1 ; π¼¡«ª¿Γ∞ BX ¡á 2
-
- æ ñαπú«⌐ ßΓ«α«¡δ, Ñß½¿ ¼á¬α«¬«¼á¡ñá «»αÑñѽѡá ß½ÑñπεΘ¿¼ «í-
- αẫ¼:
-
- MACRO DOUBLE ARC
- SHL arg,1 ; π¼¡«ª¿Γ∞ ARG ¡á 2
- ENDM
-
- Γ« ó Σá⌐½Ñ ½¿ßΓ¿¡úá ARG ºá¼Ñ¡Ñ¡« ¡Ñ íπñÑΓ:
-
- SHL bx,1 ; π¼¡«ª¿Γ∞ ARG ¡á 2
-
-
-
-
- TASM2 #3-5/䫬 = 204 =
-
-
- 﫬á½∞¡δÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ
- -----------------------------------------------------------------
-
- êß»«½∞º«óá¡¿Ñ ó«º¼«ª¡«ßΓÑ⌐ ½«¬á½∞¡δσ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó Æπαí«
- ÇßßѼí½Ñαá »α¿ »ÑαÑσ«ñÑ ó π½πτΦÑ¡¡δ⌐ αѪ¿¼ αáºαÑΦáÑΓß∩ áóΓ«¼áΓ¿-
- τÑ߬¿ (Γ«τ¡« ΓᬪÑ, ¬á¬ Ñß½¿ íδ óδ π¬áºá½¿ ñ¿αÑ¬Γ¿óπ LOCALS).
-
- æαáó¡Ñ¡¿Ñ »α«úαá¼¼¿α«óá¡¿∩ ó αѪ¿¼Ñ MASM ¿ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ
- -----------------------------------------------------------------
-
- ùΓ«íδ ½«ú¿τÑ߬¿ ºáóÑαΦ¿Γ∞ ñá¡¡πε ú½áóπ ¿ ñáΓ∞ óá¼ «¬«¡τá-
- Γѽ∞¡«Ñ µÑ½«ßΓ¡«Ñ »αÑñßΓáó½Ñ¡¿Ñ « αѪ¿¼Ñ MASM ¿ π½πτΦÑ¡¡«¼ αѪ¿-
- ¼Ñ ¿ αẽ¿τ¿∩σ ¼Ñªñπ ¡¿¼¿, ¼δ »α¿óÑñѼ »α¿¼Ñα «ñ¡«⌐ ¿ Γ«⌐ ªÑ
- »α«úαá¼¼δ, ¡á»¿ßá¡¡«⌐ ñ½∩ αѪ¿¼Ñ MASM ¿ ñ½∩ π½πτΦÑ¡¡«ú« αѪ¿¼á.
- êºπτ¿ó φΓ¿ »α¿¼Ñαδ ¿ »α«τ¿Γáó ¬«¼¼Ñ¡Γáα¿¿ ó ½¿ßΓ¿¡úáσ, óδ ß¼«ªÑΓÑ
- «µÑ¡¿Γ∞ »αÑ¿¼πΘÑßΓóá, »αÑñ«ßΓáó½∩ѼδÑ ß¿¡Γá¬ß¿ß«¼ π½πτΦÑ¡¡«ú« αÑ-
- ª¿¼á.
-
- ôτΓ¿ΓÑ Γ«½∞¬«, τΓ« ñá¡¡δÑ »α«úαá¼¼δ ¡Ñ ∩ó½∩εΓß∩ »α¿¼ÑαἿ
- σ«α«ΦÑú« ßΓ¿½∩ »α«úαá¼¼¿α«óá¡¿∩: ¿¡ßΓαπ¬µ¿¿ »α«ßΓ« »«¬áºδóáεΓ
- ¬«¡µÑ»µ¿¿ π½πτΦÑ¡¡«ú« αѪ¿¼á, « ¬«Γ«αδσ ú«ó«α¿½«ß∞ ó ñá¡¡«⌐ ú½á-
- óÑ, ¿ ¿ß»«½∞º«óá¡δ Γ«½∞¬« ó ¬áτÑßΓóÑ «íαẵá ñ½∩ ñѼ«¡ßΓαᵿ¿ ¡á-
- ¿í«½ÑÑ «íΘ¿σ 󫺼«ª¡«ßΓÑ⌐ π½πτΦÑ¡¡«ú« αѪ¿¼á ¿ Ñú« «Γ½¿τ¿⌐ «Γ αÑ-
- ª¿¼á MASM.
-
- Åα«úαá¼¼á ñá¡¡«ú« »α¿¼Ñαá ßτ¿ΓδóáÑΓ ßΓ᫬π ß φ¬αá¡á, »αÑ«í-
- αáºπÑΓ ΓѬßΓ ó »α«»¿ß¡δÑ íπ¬óδ (óÑασ¡¿⌐ αÑú¿ßΓα), ¿ »ÑαÑñ ΓѼ,
- ¬á¬ óÑα¡πΓ∞ß∩ ó DOS, óδó«ñ¿Γ αѺπ½∞ΓáΓ ¡á φ¬αá¡. ùΓ«íδ «Γ¼ÑΓ¿Γ∞,
- úñÑ ¿ßσ«ñ¡δ⌐ ¬«ñ ñá¡¡«⌐ »α«úαá¼¼δ αẽ¿τáÑΓß∩ ó αѪ¿¼áσ MASM ¿ ó
- π½πτΦÑ¡¡«¼ αѪ¿¼Ñ (IDEAL), ¼δ ñ«íá󿽿 ó ΓѬßΓ »α«úαá¼¼δ ¡π¼Ñα«-
- óá¡¡δÑ ¬«¼¼Ñ¡Γáα¿¿ (¬«Γ«αδÑ ¡áτ¿¡áεΓß∩ ß Γ«τ¬¿ ß ºá»∩Γ«⌐). ìá»α¿-
- ¼Ñα, ¬«¼¼Ñ¡Γáα¿⌐ ; #4 »«¬áºδóáÑΓ óá¼, τΓ« ¡πª¡« τ¿ΓáΓ∞ ß««ΓóÑΓß-
- ΓóπεΘÑÑ «»¿ßá¡¿Ñ ß ¡«¼Ñα«¼ 4, ß½ÑñπεΘÑÑ ºá ½¿ßΓ¿¡ú«¼ ó αáºñѽÑ
- "ǡ὿º αѪ¿¼á MASM ¿ π½πτΦÑ¡¡«ú« αѪ¿¼á". èα«¼Ñ Γ«ú«, ñ½∩ óδñÑ-
- ½Ñ¡¿∩ «Γ½¿τ¿⌐ π½πτΦÑ¡¡«ú« αѪ¿¼á, ¼δ ¿ß¬½ετ¿½¿ ¿º Ñú« »α¿¼Ñα«ó
- í«½∞Φ¿¡ßΓó« ¬«¼¼Ñ¡Γáα¿Ñó. ùΓ«íδ »«¡∩Γ∞, ¬á¬ αáí«ΓáÑΓ ñá¡¡δ⌐ »α¿-
- ¼Ñα, »α«τ¿Γá⌐ΓÑ »Ñαóπε »α«úαá¼¼π. ä½∩ ßαáó¡Ñ¡¿∩ ¿ óδ∩ó½Ñ¡¿∩ π½πτ-
- ΦÑ¡¿⌐ π½πτΦÑ¡¡«ú« αѪ¿¼á »α«τ¿Γá⌐ΓÑ Γá¬ªÑ óΓ«απε »α«úαá¼¼π.
- Åα¿¼Ñα »α«úαá¼¼δ ó αѪ¿¼Ñ MASM
- -----------------------------------------------------------------
-
- ; öá⌐½ <masexmpl.asm>
- ; Åα¿¼Ñα »α«úαá¼¼δ »αÑ«íαẫóá¡¿∩ ßΓ᫬¿ ó »α«»¿ß¡δÑ íπ¬óδ
- ; ó αѪ¿¼Ñ MASM
-
- TASM2 #3-5/䫬 = 205 =
-
- TITLE Example MASM Program ; φëà ¬«¼¼Ñ¡Γáα¿⌐ ó¬½ετáÑΓ-
- ; ß∩ ó ºáú«½«ó«¬
- .286
- DataSize = 128 ; αẼÑα íπΣÑα«ó óó«ñá-
- ; óδó«ñá
- dosint MACRO intmun
- mov ah,intnum ; »α¿ßó«¿Γ∞ ¡«¼Ñα FN AH
- int 21h ; óδºóáΓ∞ Σπ¡¬µ¿ε DOS
- ; &INTNUM
- ENDM
-
- stk SEGMENT STASK
- db 100h DUP (?) ; ºáαѺÑαó¿α«óáΓ∞
- ; »α«ßΓαá¡ßΓó« ó ßΓѬÑ
- stk ENDS
-
- data SEGMENT WORD
- inbuf db bufsize DUP (?) ; íπΣÑα óó«ñá
- outbuf db bufsize DUP (?) ; íπΣÑα óδó«ñá
- data ENDS
-
- DGROUP GROUP stk,data ; ßúαπ»»¿α«óáΓ∞ ßÑú¼Ñ¡Γδ
- ; ßΓÑ¬á ¿ ñá¡¡δσ
-
- code SEGMENT WORD
- ASSUME cs:code ; »«½«ª¿¼, CS - φΓ«
- ; ßÑú¼Ñ¡Γ ¬«ñá
- start:
- mov ax,DGROUP ; »α¿ßó«¿Γ∞ áñαÑß ßÑú¼Ñ¡Γá
- mov ds,ax ; DGROUP DS
- ASSUME DS:DGROUP ; »« π¼«½τá¡¿ε ßÑú¼Ñ¡Γ«¼
- ; ñá¡¡δσ íπñÑΓ DS
- mov dx,OFFSET DGROUP:inbuf ; ºáúαπº¿Γ∞ ó DX
- ; ß¼ÑΘÑ¡¿Ñ inbuf (íπΣÑα
- ; óó«ñá)
- xor bx,bx ; ßΓá¡ñáαΓ¡δ⌐ óó«ñá
- call readline ; ßτ¿ΓáΓ∞ «ñ¡π ßΓ᫬π
- mov bx,ax ; »α¿ßó«¿Γ∞ BX ñ½¿¡π
- mov inbuf[bx],0 ; ñ«íáó¿Γ∞ ºáóÑαΦáεΘ¿⌐
- ; ¡π½Ñó«⌐ ß¿¼ó«½
- push ax ; ß«σαá¡¿Γ∞ αÑú¿ßΓα AX
- ; ó ßΓѬÑ
- call mungline ; »αÑ«íαẫóáΓ∞ ßΓ᫬π
- ; ó óÑασ¡¿⌐ αÑú¿ßΓα
- pop cx ; ó«ßßΓá¡«ó¿Γ∞ ßτÑΓτ¿¬
- mov dx,OFFSET DGROUP:outbuf ; ºáúαπº¿Γ∞ ó AX
-
- TASM2 #3-5/䫬 = 206 =
-
- ; ß¼ÑΘÑ¡¿Ñ outbuf (íπΣÑα
- ; óδó«ñá)
- mov bx,1 ; ßΓá¡ñáαΓ¡δ⌐ óδó«ñ
- dosint 40h ; Σπ¡¬µ¿∩ ºá»¿ß¿ Σá⌐½á
- dosint 4ch ; óδσ«ñ ó DOS
-
- ; æτ¿ΓáΓ∞ ßΓ᫬π (dx => íπΣÑα), ó«ºóαáΓ¿Γ∞ ó AX º¡áτÑ¡¿Ñ
- ; ßτÑΓτ¿¬á
- readline PROC near
- mov cx,bufsize ; ºáñáΓ∞ αẼÑα íπΣÑαá
- dosint 3fh ; Σπ¡¬µ¿∩ τΓÑ¡¿∩ Σá⌐½á
- and ax,ax ; πßΓá¡«ó¿Γ∞ ñ½∩ ßτÑΓτ¿¬á
- ; Σ½áú ¡π½∩
- ret ; ó«ºóαáΓ ó óδºδóáεΘπε
- ; »α«úαá¼¼π
- readline ENDP
-
- ; ÅαÑ«íαẫóáΓ∞ ßΓ᫬π ó óÑασ¡¿⌐ αÑú¿ßΓα
- mungline PROC NEAR
- mov si,OFFSET DGROUP:inbuf ; áñαÑßᵿ∩ ¬ inbuf
- ; τÑαѺ SI
- mov di,0 ; ¿¡¿µ¿á½¿º¿α«óáΓ∞ DI
- @@loop:
- cmp BYTE PTR[si],0 ; ¬«¡Ñµ ΓѬßΓá?
- je @@done ; Ñß½¿ ñá, Γ« »ÑαÑ⌐Γ¿
- ; ¡á @@done
- mov al,[si] ; ¿¡áτÑ »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐
- ; ß¿¼ó«½
- and al,not 'a' - 'A' ; »αÑ«íαẫóáΓ∞ ó óÑασ¡¿⌐
- ; αÑú¿ßΓα
- mov outbuf[di],al ; ºá»¿ßáΓ∞ ó íπΣÑα óδó«ñá
- inc si ; ½πτΦÑ ¿ß»«½∞º«óáΓ∞ lodsb,
- ; stosb ...
- inc di ; φΓ« »α«ßΓ« »α¿¼Ñα!
- jmp @@loop ; »α«ñ«½ª¿Γ∞ »αÑ«íαẫóá¡¿Ñ
- ; ΓѬßΓá
- @@done: ret
- mungline ENDP ; ¬«¡Ñµ »α«µÑñπαδ
- code ENDS ; ¬«¡Ñµ ßÑú¼Ñ¡Γá
- END start ; ¬«¡Ñµ ΓѬßΓá ¿ Γ«τ¬á
- ; óσ«ñá DOS
- Åα¿¼Ñα »α«úαá¼¼δ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ
- -----------------------------------------------------------------
-
- ; öá⌐½ <masexmpl.asm>
-
- TASM2 #3-5/䫬 = 207 =
-
- ; Åα¿¼Ñα »α«úαá¼¼δ »αÑ«íαẫóá¡¿∩ ßΓ᫬¿ ó »α«»¿ß¡δÑ íπ¬óδ
- ; ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ
- IDEAL ; #1
- #TITLE Example MASM Program "»α¿¼Ñα αѪ¿¼Ñ IDEAL" ; #2
- π½πτΦÑ¡¡«¼ αѪ¿¼Ñ
- P286N ; #3
- BufSize = 128
-
- MACRO dosint intmun ; #4
- mov ah,intnum
- int 21h
- ENDM
-
- SEGMENT stk STASK ; #5
- db 100h DUP (?)
- ENDS ; #6
-
- SEGMENT DATA WORD ; #7
- inbuf db bufsize DUP (?)
- outbuf db bufsize DUP (?)
- ENDS DATA ; #8
-
- GROUP DGROUP stk,data ; #9
-
- SEGMENT CODE WORD ; #10
- ASSUME cs:code
- start:
- mov ax,DGROUP
- mov ds,ax
- ASSUME DS:DGROUP
- mov dx,OFFSET inbuf ; #11
- xor bx,bx
- call readline
- mov bx,ax
- mov [inbuf + bx],0 ; #12
- push ax
- call mungline
- pop cx
- mov dx,OFFSET outbuf ; #13
- mov bx,1
- dosint 40h
- dosint 4ch
-
- ; æτ¿ΓáΓ∞ ßΓ᫬π (dx => íπΣÑα), ó«ºóαáΓ¿Γ∞ ó AX º¡áτÑ¡¿Ñ
- ; ßτÑΓτ¿¬á
- PROC readline near ; #14
-
- TASM2 #3-5/䫬 = 208 =
-
- mov cx,bufsize
- dosint 3fh
- and ax,ax
- ret
- ENDP ; #15
-
- ; ÅαÑ«íαẫóáΓ∞ ßΓ᫬π ó óÑασ¡¿⌐ αÑú¿ßΓα
- PROC mungline NEAR ; #16
- mov si,OFFSET inbuf ; #17
- mov di,0
- @@loop:
- cmp [BYTE si],0 ; #18
- je @@done
- mov al,[si]
- and al,not 'a' - 'A'
- mov [outbuf + di],al ; #19
- inc si
- inc di
-
- ; LODSB/STOSB
- jmp @@loop
- @@done: ret
- ENDP mungline ; #20
- ENDS ; #21
- END start
-
- ǡ὿º αѪ¿¼á MASM ¿ π½πτΦÑ¡¡«ú« αѪ¿¼á
- -----------------------------------------------------------------
-
- äá½ÑÑ »«ñα«í¡« «»¿ßδóáεΓß∩ αẽ¿τ¿∩ ¼Ñªñ𠬫¡ßΓαπ¬µ¿∩¼¿, ñ¿-
- αÑ¬Γ¿óἿ ¿ «»Ñαá¡ñἿ αѪ¿¼á MASM ¿ π½πτΦÑ¡¡«ú« αѪ¿¼á ó ñóπσ
- »αÑñδñπΘ¿σ »α«úαá¼¼áσ. 쫼Ñαá «Γ¡«ß∩Γß∩ ¬ ¬«¼¼Ñ¡Γáα¿∩¼ »α«úαá¼¼δ
- ñ½∩ π½πτΦÑ¡¡«ú« αѪ¿¼á. æαáó¡¿ΓÑ «Γ¼ÑτÑ¡¡δÑ ¬«¼¼Ñ¡Γáα¿∩¼¿ ßΓ᫬á-
- ¼¿ ß αѪ¿¼«¼ MASM.
-
- 1. êß»«½∞ºπ⌐ΓÑ ñ½∩ »ÑαÑσ«ñá ó π½πτΦÑ¡¡δ⌐ αѪ¿¼ ñ¿αÑ¬Γ¿óπ
- IDEAL. Å« π¼«½τá¡¿ε Æπαí« ÇßßѼí½Ñα óßÑúñá ¡áτ¿¡áÑΓ áß-
- ßÑ¼í½¿α«óá¡¿Ñ ¿ßσ«ñ¡«ú« Σá⌐½á ó αѪ¿¼Ñ MASM. éá¼ ΓαÑíπÑΓ-
- ß∩ π¬áºδóáΓ∞ ñ¿αÑ¬Γ¿óπ MASM Γ«½∞¬« ó Γ«¼ ß½πτáÑ, ¬«úñá óδ
- σ«Γ¿ΓÑ »ÑαѬ½ετ¿Γ∞ß∩ «íαáΓ¡« ó αѪ¿¼ MASM, »ÑαÑ⌐ñ∩ αá¡ÑÑ
- ó π½πτΦÑ¡¡δ⌐ αѪ¿¼.
-
- 2. ç¡á¬ »α«µÑ¡Γá ó ñ¿αÑ¬Γ¿óÑ %TITLE ¡á»«¼¿¡áÑΓ óá¼, τΓ« φΓá
- ñ¿αÑ¬Γ¿óá ó½¿∩ÑΓ ¡á Σá⌐½ ½¿ßΓ¿¡úá (Ñß½¿ óδ αÑΦ¿½¿ ß«ºñáΓ∞
- Ñú«, π¬áºáó ¿¼∩ Σá⌐½á ½¿ßΓ¿¡úá ¿½¿ ¿ß»«½∞º«óáó »áαá¼ÑΓα
-
- TASM2 #3-5/䫬 = 209 =
-
- ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /L »α¿ áßßÑ¼í½¿α«óá¡¿¿ »α«úαá¼¼δ). é
- π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¿ß»«½∞ºπÑΓß∩ ñ¿αÑ¬Γ¿óá %TITLE, á ¡Ñ
- TITLE (íѺ º¡á¬á »α«µÑ¡Γá), ¿ ¬α«¼Ñ Γ«ú« ßΓ᫬π ºáú«½«ó¬á
- ΓαÑíπÑΓß∩ ºá¬½ετáΓ∞ ó ¬áóδτ¬¿ (""). ¥Γ« »«ºó«½∩ÑΓ óá¼
- π¬áºáΓ∞ ¡á ñá¡¡«⌐ ßΓα«¬Ñ ¬«¼¼Ñ¡Γáα¿⌐, ¬«Γ«αδ⌐ ó αѪ¿¼Ñ
- MASM ßΓá½ íδ τáßΓ∞ε ºáú«½«ó¬á.
-
- 3. ä¿αÑ¬Γ¿óá .286 αѪ¿¼á MASM ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ »α¿¡¿¼áÑΓ
- ó¿ñ P286N. Æá¬ ¬á¬ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ¡Ñ
- ¼«úπΓ ¡áτ¿¡áΓ∞ß∩ ß Γ«τ¬¿, óßÑ ñ¿αÑ¬Γ¿óδ ¡áº¡áτÑ¡¿∩ »α«-
- µÑßß«αá MASM ¿ ñαπú¿Ñ ñ¿αÑ¬Γ¿óδ, ¡áτ¿¡áεΘ¿Ñß∩ ß Γ«τ¬¿,
- ¿º¼Ñ¡Ñ¡δ. ¥Γ«Γ «»ÑαáΓ«α ó ½¿ßΓ¿¡úÑ ¡Ñ ¡ÑßÑΓ ¡¿¬á¬«ú« »«-
- ½Ñº¡«ú« ß¼δß½á, «¡ ß½πª¿Γ Γ«½∞¬« ñ½∩ Γ«ú«, τΓ«íδ »«¬áºáΓ∞
- αẽ¿τ¿∩ ¼Ñªñπ αѪ¿¼«¼ MASM ¿ π½πτΦÑ¡¡δ¼ αѪ¿¼«¼. é ñá¡-
- ¡«⌐ »α«úαá¼¼Ñ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 80286 ¡Ñ ¿ß»«½∞ºπεΓ-
- ß∩.
-
- 4. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¿¼∩ ¼á¬α«¬«¼á¡ñδ ß½ÑñπÑΓ »«ß½Ñ ñ¿αѬ-
- Γ¿óδ MACRO, á ¡Ñ »ÑαÑñ ¡Ñ⌐, ¬á¬ ó αѪ¿¼Ñ MASM.
-
- 5. ê¼∩ ßÑú¼Ñ¡Γá ó ñ¿αÑ¬Γ¿óÑ SEGMENT ß½ÑñπÑΓ ó π½πτΦÑ¡¡«¼ αÑ-
- ª¿¼Ñ ºá ñ¿αÑ¬Γ¿ó«⌐.
-
- 6. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ »α¿ ¿ß»«½∞º«óá¡¿¿ ñ½∩ ºá¬αδΓ¿∩ ßÑú-
- ¼Ñ¡Γá ENDS óá¼ ¡Ñ ¡πª¡« π¬áºδóáΓ∞ ß««ΓóÑΓßΓóπεΘÑÑ ¿¼∩
- ßÑú¼Ñ¡Γá, ¬á¬ φΓ« ΓαÑí«óὫß∞ ó αѪ¿¼Ñ MASM. àß½¿ óδ σ«-
- Γ¿ΓÑ, ¿¼∩ ¼«ª¡« πñ὿Γ∞ (DATA).
-
- 7. Æ« ªÑ, τΓ« ¿ ó 5. ÅÑαÑñ ¿¼Ñ¡Ñ¼ Γá¬ªÑ π¬áºδóáÑΓß∩ ¬½ετÑó«Ñ
- ß½«ó« SEGMENT.
-
- 8. àß½¿ óδ π¬áºδóáÑΓÑ ó ñ¿αÑ¬Γ¿óÑ ENDS ß««ΓóÑΓßΓóπεΘÑÑ ¿¼∩
- ßÑú¼Ñ¡Γá, Γ« φΓ« ¿¼∩ ß½ÑñπÑΓ »«ß½Ñ ñ¿αÑ¬Γ¿óδ, á ¡Ñ »ÑαÑñ
- ¡Ñ⌐, ¬á¬ ó αѪ¿¼Ñ MASM.
-
- 9. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ñ¿αÑ¬Γ¿óá GROUP »αÑñΦÑßΓóπÑΓ ¿¼Ñ¡¿ ó
- úαπ»»Ñ ßÑú¼Ñ¡Γ«ó ñá¡¡δσ (DGROUP). äá½ÑÑ ß½ÑñπÑΓ ß»¿ß«¬
- ßÑú¼Ñ¡Γ«ó ñá¡¡δσ, ¬«Γ«αδÑ óδ «íΩÑñ¿¡∩ÑΓÑ »«ñ ñá¡¡δ¼ ¿¼Ñ-
- ¡Ñ¼. é MASM GROUP ¿ ¿¼∩ ºáαѺÑαó¿α«óá¡δ.
-
- 10. ǡὫú¿τ¡« »π¡¬Γπ 5. è½ετÑó«Ñ ß½«ó« SEGMENT »αÑñΦÑßΓóπÑΓ
- ¿¼Ñ¡¿.
-
- 11. çñÑß∞ ó «»Ñαᵿ¿ OFFSET ¡Ñ ¡πª¡« ¿ß»«½∞º«óáΓ∞ ¬óá½¿Σ¿¬á-
- Γ«α úαπ»»δ. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ INBUF αáßß¼áΓα¿óáÑΓß∩
- «Γ¡«ß¿Γѽ∞¡« ¡áτá½á DGROUP, Γᬠ¬á¬ INBUF ¡áσ«ñ¿Γß∩ ó «ñ-
-
- TASM2 #3-5/䫬 = 210 =
-
- ¡«¼ ¿º ßÑú¼Ñ¡Γ«ó, «íΩÑñ¿¡Ñ¡¡δσ »«ñ ñá¡¡δ¼ ¿¼Ñ¡Ñ¼ úαπ»»δ.
- é MASM, τΓ«íδ ¬«ααÑ¬Γ¡« «»αÑñѽ¿Γ∞ ß¼ÑΘÑ¡¿∩ »ÑαѼѡ¡δσ ó
- ßÑú¼Ñ¡Γáσ úαπ»»δ, óá¼ ¡πª¡« í佫 ¡Ñ ºáíδóáΓ∞ π¬áºδóáΓ∞
- DGROUP:inbuf.
-
- 12. Ä»Ñαá¡ñ [INBUF+BX] ñ«»πßΓ¿¼ ó «í«¿σ αѪ¿¼áσ, «ñ¡á¬« ßΓα«-
- ¬π INBUF[BX] αѪ¿¼á MASM ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ¿ß»«½∞º«óáΓ∞
- ¡Ñ ñ«»π߬áÑΓß∩. é φΓ«¼ αѪ¿¼Ñ óßÑ «»Ñαá¡ñδ ß« ßß佬«⌐ ¡á
- »á¼∩Γ∞ ñ«½ª¡δ ºá¬½ετáΓ∞ß∩ ó ¬óáñαáΓ¡δÑ ß¬«í¬¿.
-
- 13. ǡὫú¿τ¡« »π¡¬Γπ 11. çñÑß∞ óá¼ Γá¬ªÑ ¡Ñ ¡πª¡« ºáñáóáΓ∞
- ¿¼∩ úαπ»»δ, τΓ«íδ ºáαѺÑαó¿α«óáΓ∞ »ÑαѼѡ¡πε ó ßÑú¼Ñ¡ΓÑ
- úαπ»»δ. é MASM, τΓ«íδ »«½πτ¿Γ∞ ¬«ααÑ¬Γ¡«Ñ ß¼ÑΘÑ¡¿Ñ
- OUTBUF, ¡πª¡« í佫 ºá»¿ßδóáΓ∞: DGROUP:outbuf. àß½¿ ºáíδΓ∞
- « ¬óá½¿Σ¿¬áΓ«αÑ DGROUP, Γ« ó »α¿¼ÑαÑ óδó«ñ íδ½ íδ ºá»¿ßá¡
- ó ßΓѬ, »α¿ φΓ«¼ MASM ¡Ñ óδñá½ íδ ¡¿¬á¬¿σ »αÑñπ»αѪñÑ¡¿⌐
- « ¡Ñ»αáó¿½∞¡«⌐ αáí«ΓÑ.
-
- 14. ê¼∩ »α«µÑñπαδ ó ñ¿αÑ¬Γ¿óÑ PROC ß½ÑñπÑΓ »«ß½Ñ ñ¿αÑ¬Γ¿óδ, á
- ¡Ñ »ÑαÑñ ¡Ñ⌐, ¬á¬ ó αѪ¿¼Ñ MASM.
-
- 15. è«úñá óδ ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ ñ½∩ ºáóÑαΦÑ¡¿∩ »α«µÑñπαδ ¿ß-
- »«½∞ºπÑΓÑ ENDP, óá¼ ¡Ñ ¡πª¡« π¬áºδóáΓ∞ ¿¼∩ ß««ΓóÑΓßΓóπε-
- ΘÑ⌐ »α«µÑñπαδ, ¬á¬ φΓ« ¡πª¡« í佫 ñѽáΓ∞ ó αѪ¿¼Ñ MASM.
-
- 16. ǡὫú¿τ¡« »π¡¬Γπ 14. ä¿αÑ¬Γ¿óá PROC »αÑñΦÑßΓóπÑΓ ¿¼Ñ¡¿
- »α«µÑñπαδ.
-
- 17. ǡὫú¿τ¡« »π¡¬Γπ 11. çñÑß∞ óá¼ Γá¬ªÑ ¡Ñ ¡πª¡« ºá»¿ßδóáΓ∞
- DGROUP:inbuf, ¬á¬ ó MASM.
-
- 18. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ »α¿ πßΓá¡«ó¬Ñ αẼÑαá óδαáªÑ¡¿∩ óδ
- ¼«ªÑΓÑ «»π߬áΓ∞ o»Ñαᵿε PTR. éδαáªÑ¡¿Ñ αѪ¿¼á MASM BYTE
- PTR ABC ¿ñÑ¡Γ¿τ¡« óδαáªÑ¡¿ε BYTE ABC ó π½πτΦÑ¡¡«¼ αѪ¿¼Ñ.
-
- 19. ǡὫú¿τ¡« »π¡¬Γπ 12. é π½πτΦÑ¡¡«¼ αѪ¿¼Ñ »α¿ ßßδ½¬Ñ ¡á
- ß«ñÑন¼«Ñ »á¼∩Γ¿ ¡πª¡« óßÑúñá ºá¬½ετáΓ∞ Γá¬«Ñ óδαáªÑ¡¿Ñ
- ó ¬óáñαáΓ¡δÑ ß¬«í¬¿.
-
- 20. ê¼∩ »α«µÑñπαδ ¼«ª¡« (¡Ñ«í∩ºáΓѽ∞¡«) π¬áºδóáΓ∞ »«ß½Ñ ñ¿-
- αÑ¬Γ¿óδ ENDP, á ¡Ñ »ÑαÑñ ¡Ñ⌐, ¬á¬ ó αѪ¿¼Ñ MASM.
-
- 21. ǡὫú¿τ¡« »π¡¬Γπ 6. é ñ¿αÑ¬Γ¿óÑ ENDS ¡Ñ ΓαÑíπÑΓß∩ π¬áºδ-
- óáΓ∞ ¿¼∩ ß««ΓóÑΓßΓóπεΘÑú« ßÑú¼Ñ¡Γá, σ«Γ∩ »α¿ ªÑ½á¡¿¿ óδ
- ¼«ªÑΓÑ ñ«íáó¿Γ∞ φΓ« ¿¼∩.
-
-
- TASM2 #3-5/䫬 = 211 =
-
- ï¿ΓÑαáΓπαá
- -----------------------------------------------------------------
-
- CrawWord, John H., Patrick P. Gelsinger. Programming the 80386.
- Alamedis: Sybex, Inc., 1987. (è¡¿úá »« »α«úαá¼¼¿α«óá¡¿ε ñ½∩ »α«-
- µÑßß«αá 80386).
-
- Duncan, Ray. Advanced MS-DOS. Redmond: Microsoft Press, 1986.
- (Éáºó¿Γ«Ñ »α«úαá¼¼¿α«óá¡¿Ñ ñ½∩ MS-DOS).
-
- Lafore, Robert. Assembly Language Primer for the IBM PC & XT, New
- York: The Waite Group, 1984. (ôτÑí¡¿¬ »« ∩ºδ¬π ÇßßѼí½Ñαá ñ½∩
- ¬«¼»∞εΓÑα«ó IBM PC ¿ XT).
-
- Murray, William H., Chris Pappas. 80386/80286 Assembly Language
- Programming. Berkeley: Osborne/McGraw-Hill, 1986. (Éπ¬«ó«ñßΓó« »«
- »α«úαá¼¼¿α«óá¡¿ε ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ñ½∩ »α«µÑßß«α«ó
- 80286/80386).
-
- Norton, Peter, John Socha. Peter Norton's Assembly Lánguage Book
- for the IBM PC. New York: Brady Communications, 1986. (Éπ¬«ó«ñß-
- Γóá ì«αΓ«¡á »« »α«úαá¼¼¿α«óá¡¿ε ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá).
-
- Rector, Russel, George Alexy, The 8086 Book. Berkeley:
- Osborne/McGraw-Hill, 1980. (Éπ¬«ó«ñßΓó« »« »α«µÑßß«απ 8086).
-
- Sargent, Thomas P. An Introduction to Assembly Language
- Programming for the 8086 Family. New York: John Willey & Sons,
- Inc., 1985. (éóÑñÑ¡¿Ñ ó ∩ºδ¬ ÇßßѼí½Ñαá ñ½∩ »α«µÑßß«α«ó ßÑα¿¿
- 8086).
-
- Turley, James L. Advanced 80386 Programming Techniques. Berkeley:
- Osborne/McGraw Hill, 1988. (Éáºó¿ΓδÑ ¼ÑΓ«ñδ »α«úαá¼¼¿α«óá¡¿∩ ¡á
- ÇßßѼí½ÑαÑ ñ½∩ »α«µÑßß«αá 80386).
-
- Wilton, Richard. Programmer's Guide to PC and PS/2 Video Systems.
- Redmond: Microsoft Press, 1987. (Éπ¬«ó«ñßΓó« »α«úαá¼¼¿ßΓá »« ó¿-
- ñѫ߿ßΓѼἠ¬«¼»∞εΓÑα«ó PC ¿ PS/2).
-
-
-
-
- TASM2 #3-5/䫬 = 212 =
-
- Åα¿½«ªÑ¡¿Ñ A. ê¡ΓÑαΣÑ⌐ß Æπαí« ÇßßѼí½Ñαá ¿ Æπαí« üÑ⌐ß¿¬á
- -----------------------------------------------------------------
-
- Åα«úαá¼¼¿ßΓá¼, αáí«ΓáεΘ¿¼ ß Æπαí« üÑ⌐ß¿¬«¼, º¡áτ¿Γѽ∞¡« «í-
- ½ÑúτáÑΓ ª¿º¡∞ ß«ó¼ÑßΓ¿¼«ßΓ∞ (ß¡¿ºπ óóÑασ) Æπαí« ÇßßѼí½Ñαá ß
- îá¬α«áßßѼí½Ñα«¼ Σ¿α¼δ Microsoft. é ñá¡¡«⌐ ú½áóÑ ¼δ »α¿óÑñѼ ¡Ñ-
- ¬«Γ«αδÑ »α¿¼Ñαδ (¬á¬ ß«ñÑαªáΘ¿Ñß∩ ó απ¬«ó«ñßΓóÑ »« Æπαí« üÑ⌐ß¿¬π,
- Γᬠ¿ ñαπú¿Ñ) ¿ »«¬áªÑ¼, ¬á¬ Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ αáßΦ¿α¿Γ∞ ßó«¿
- 󫺼«ª¡«ßΓ¿ ß »«¼«Θ∞ε Æπαí« üÑ⌐ß¿¬á.
-
- Åα¿¼Ñτá¡¿Ñ: è«úñá ¼δ ú«ó«α¿¼ « Æπαí« üÑ⌐ß¿¬Ñ, φΓ« «º-
- ¡áτáÑΓ, τΓ« αÑτ∞ ¿ñÑΓ « óÑαß¿¿ 1.0 ¿ óδΦÑ.
-
- é Æπαí« üÑ⌐ß¿¬Ñ »αÑñπß¼«ΓαÑ¡« Γα¿ ß»«ß«íá ó맮óá »«ñ»α«úαá¼-
- ¼δ ¡á ÇßßѼí½ÑαÑ:
-
- 1. ä½∩ ó맮óá »α«µÑñπαδ, ß«ñÑαªáΘÑ⌐ óßΓα«Ñ¡¡δ⌐ ¬«ñ, óδ ¼«-
- ªÑΓÑ ¿ß»«½∞º«óáΓ∞ «»ÑαáΓ«α CALL.
-
- 2. ä½∩ ¬«¡¬αÑΓ¡«⌐ áñαÑßᵿ¿ ¬ »á¼∩Γ¿ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ óδ-
- º«ó CALL ABSOLUTE:.
-
- 3. ä½∩ «íαáí«Γ¬¿ »αÑαδóá¡¿∩ »α«µÑßß«αá ¿ »ÑαÑσ«ñá ¡á »«ñ-
- »α«úαá¼¼δ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ó맮ó CALL INTERRUPT ¿
- óßΓα«Ñ¡¡πε »«ññÑ᪬π Æπαí« üÑ⌐ß¿¬á.
-
- Åα¿ óδí«αÑ Γ«ú« ¿½¿ ¿¡«ú« ¼ÑΓ«ñá ¡πª¡« «íÑß»Ñτ¿Γ∞ ß«σαá¡Ñ¡¿Ñ
- «»αÑñѽѡ¡δσ αÑú¿ßΓα«ó. é맮ó CALL INTERRUPT «Γ½¿τáÑΓß∩ ¡á¿¼Ñ¡∞-
- ΦÑ⌐ ΓαÑí«óáΓѽ∞¡«ßΓ∞ε ó φΓ«¼ »½á¡Ñ: ¡πª¡« «íÑß»Ñτ¿óáΓ∞ ß«σαá¡Ñ¡¿Ñ
- Γ«½∞¬« αÑú¿ßΓα«ó SS (ßÑú¼Ñ¡Γ ßΓѬá) ¿ SP (π¬áºáΓѽ∞ ßΓѬá). Åα¿
- ¿ß»«½∞º«óá¡¿¿ ñαπú¿σ ñóπσ ¼ÑΓ«ñ«ó ¡πª¡« ß«σαá¡∩Γ∞ Γá¬ªÑ αÑú¿ßΓαδ
- DS (ßÑú¼Ñ¡Γ ñá¡¡δσ) ¿ BP (π¬áºáΓѽ∞ íáºδ).
-
- æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó (ºñÑß∞ ¿ ó »αÑñδñπΘѼ ΓѬßΓÑ ΓÑନ¡
- "ß«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó" «º¡áτáÑΓ ¡á ßἫ¼ ñÑ½Ñ "ß«σαá¡Ñ¡¿Ñ αÑú¿ßΓ-
- α«ó »ÑαÑñ óδº«ó«¼ («íδτ¡« ó ßΓѬÑ) ¿ ó«ßßΓá¡«ó½Ñ¡¿Ñ ¿σ ß«ñÑন¼«-
- ú« »«ß½Ñ ó맮óá »«ñ»α«úαá¼¼δ ¿½¿ »α¿ ÑÑ ºáóÑαΦÑ¡¿¿") ¡Ñ «í∩ºá-
- Γѽ∞¡« «º¡áτáÑΓ, τΓ« óδ ñ«½ª¡δ ºá¡«ß¿Γ∞ óßÑ αÑú¿ßΓαδ ó ßΓѬ, σ«Γ∩
- φΓ« ¡á¿í«½ÑÑ «íΘÑ»α¿¡∩Γδ⌐ ß»«ß«í «íÑß»ÑτÑ¡¿∩ ß«σαá¡¡«ßΓ¿ ¿σ ß«-
- ñÑন¼«ú«. Åα«ßΓδÑ »«ñ»α«úαá¼¼δ ¼«úπΓ ¡Ñ ¿º¼Ñ¡∩Γ∞ ¡¿¬á¬¿σ αÑú¿ßΓ-
- α«ó. é φΓ«¼ ß½πτáÑ ¡Ñ ¡πª¡« »α¿¡¿¼áΓ∞ ¡¿¬á¬¿σ ¼Ñα »αÑñ«ßë᫪¡«ß-
- Γ¿.
-
- îδ ú«ó«α¿¼ "¼«úπΓ" »«Γ«¼π τΓ« ½πτΦÑ ¡Ñ ñѽáΓ∞ ¡¿¬á¬¿σ »αÑñ-
- »«½«ªÑ¡¿⌐, «ß«íÑ¡¡« ¬«úñá ñѽ« ¬áßáÑΓß∩ »α«úαá¼¼¿α«óá¡¿∩ ¡á Çß-
- ßѼí½ÑαÑ. ò«Γ∩ ó óáΦѼ απ¬«ó«ñßΓóÑ »« MS-DOS ¼«ªÑΓ ß»Ñµ¿á½∞¡«
-
- TASM2 #3-5/䫬 = 213 =
-
- «ú«óáα¿óáΓ∞ß∩, τΓ« ¬«¡¬αÑΓ¡«Ñ »αÑαδóá¡¿Ñ ¡Ñ ¿º¼Ñ¡∩ÑΓ ß«ñÑন¼«ú«
- π¬áºáΓѽ∩ ßΓÑ¬á ¿½¿ π¬áºáΓѽ∩ íáºδ (¿½¿ ½εí«ú« ñαπú«ú« αÑú¿ßΓαá),
- φΓ« ¡Ñ óßÑúñá ¼«ªÑΓ ¿¼ÑΓ∞ ¼ÑßΓ«. MS-DOS ñѽáÑΓ Γá¬¿Ñ ¿º¼Ñ¡Ñ¡¿∩, ¿
- ¡Ñ¬«Γ«αδÑ ß«τÑΓá¡¿∩ »αÑαδóá¡¿⌐ »α«Γ¿ó«αÑτáΓ ¿¡Σ«α¼áµ¿¿, »α¿ó«ñ¿-
- ¼«⌐ ó απ¬«ó«ñßΓóÑ »« DOS. Å«φΓ«¼π ½πτΦÑ »αÑñ«σαá¡¿Γ∞ ßÑí∩ «Γ ó«º-
- ¼«ª¡δσ ¡Ñ»α¿∩Γ¡«ßΓÑ⌐. æ«σαá¡Ñ¡¿Ñ ¡Ñ«íσ«ñ¿¼δσ αÑú¿ßΓα«ó ¡Ñ πσπñΦ¿Γ
- ßπΘÑßΓóÑ¡¡« »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿ »α«úαá¼¼δ. Åα¿ φΓ«¼ óδ ¼Ñ¡∞ΦÑ α¿ß-
- ¬πÑΓÑ ¿ ¬α«¼Ñ Γ«ú« π½πτΦ¿ΓÑ »ÑαÑ¡«ß¿¼«ßΓ∞ óáΦÑ⌐ »α«úαá¼¼δ ¡á ¡«-
- óδÑ óÑαß¿¿ MS-DOS.
-
- ÅÑαÑñáτá »áαá¼ÑΓα«ó
- -----------------------------------------------------------------
-
- Æπαí« üÑ⌐ß¿¬ »ÑαÑñáÑΓ »áαá¼ÑΓαδ »«ñ»α«úαἼἠ¡á ÇßßѼí½ÑαÑ
- ó ßΓѬÑ. éßÑ Γá¬¿Ñ ó맮óδ ¿¼ÑεΓ ñá½∞¡¿⌐ Γ¿» (FAR): »«ß½Ññ¡¿Ñ 4
- íá⌐Γá ó ßΓÑ¬Ñ »αÑñßΓáó½∩εΓ ß«í«⌐ áñαÑß ó«ºóαáΓá, ¿ß»«½∞ºπѼδ⌐
- Æπαí« üÑ⌐ß¿¬«¼ »α¿ ºáóÑαΦÑ¡¿¿ αáí«Γδ »«ñ»α«úαá¼¼δ. ÇñαÑß«¼ »Ñαó«-
- ú« »ÑαÑñáóáѼ«ú« »«ñ»α«úαá¼¼Ñ »áαá¼ÑΓαá íπñÑΓ [SP+4]. ä½∩ ¬áªñ«ú«
- ºá¡«ß¿¼«ú« ó ßΓѬ αÑú¿ßΓαá ¬ φΓ«¼π º¡áτÑ¡¿ε ¡πª¡« ñ«íáó¿Γ∞ ñóá.
- Å«¼¡¿ΓÑ « Γ«¼, τΓ« ßΓѬ πóѽ¿τ¿óáÑΓß∩ ó ßΓ«α«¡π ¼½áñΦ¿σ áñαÑß«ó
- (󡿺).
-
- ïεíá∩ »α«ßΓá∩ »ÑαѼѡ¡á∩ («Γ½¿τ¡á∩ «Γ ¼áßß¿óá), »ÑαÑñáóáѼá∩
- ó ßΓѬÑ, »α¿óÑñÑΓ ¬ πóѽ¿τÑ¡¿ε ßΓÑ¬á ¡á 4 íá⌐Γá. Æπαí« üÑ⌐ß¿¬ »Ñ-
- αÑñáÑΓ ¬á¬ ßÑú¼Ñ¡Γ (2 íá⌐Γá), Γᬠ¿ ß¼ÑΘÑ¡¿Ñ (2 íá⌐Γá) Γᬿσ »Ñ-
- αѼѡ¡δσ. èᬠóδ πó¿ñ¿ΓÑ ñá½ÑÑ, φΓ« ñáÑΓ ó᪡δÑ »αÑ¿¼πΘÑßΓóá.
-
- Åáαá¼ÑΓαδ, »ÑαÑñáóáѼδÑ »« º¡áτÑ¡¿ε (Γá¬¿Ñ ¬á¬ ¬«¡ßΓá¡Γδ ¿
- óδαáªÑ¡¿∩), Γá¬ªÑ ºá¡¿¼áεΓ ó ßΓÑ¬Ñ 4 íá⌐Γá. é φΓ«¼ ß½πτáÑ º¡áτÑ-
- ¡¿Ñ ó ßΓÑ¬Ñ ¡Ñ ∩ó½∩ÑΓß∩ º¡áτÑ¡¿Ñ¼ óδαáªÑ¡¿∩: φΓ« áñαÑß Γ«⌐ ∩τÑ⌐¬¿
- ó »á¼∩Γ¿, úñÑ º¡áτÑ¡¿Ñ σαá¡¿Γß∩. ¥Γ« ¼«ªÑΓ »«¬áºáΓ∞ß∩ πß½«ª¡Ñ¡-
- ¡δ¼, ¡« ñáÑΓ ñóá ßπΘÑßΓóÑ¡¡δσ »αÑ¿¼πΘÑßΓóá. é«-»Ñαóδσ, óßÑ »«ñ-
- »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ ¼«úπΓ «íαáíáΓδóáΓ∞ »ÑαÑñáóáѼδÑ º¡áτÑ¡¿∩
- «ñ¿¡á¬«ó«. é«-óΓ«αδσ, »«ñ»α«úαá¼¼á, ¬«Γ«αá∩ «Φ¿í«τ¡« ¼«ñ¿Σ¿µ¿απÑΓ
- º¡áτÑ¡¿Ñ »áαá¼ÑΓαá, »ÑαÑñáóáѼ«ú« »« º¡áτÑ¡¿ε ¿½¿ »« ßß佬Ñ, ¡Ñ
- ¼«ªÑΓ ¿º¼Ñ¡¿Γ∞ ó᪡πε «í½áßΓ∞ »á¼∩Γ¿.
-
- Æá¬¿¼ «íαẫ¼, ¿ß»«½∞º«óá¡¿Ñ ßΓÑ¬á ¼«ªÑΓ π½πτΦ¿Γ∞ ßΓá¡ñáαΓ¿-
- ºáµ¿ε óáΦ¿σ »α«úαá¼¼. æ½ÑñπεΘ¿⌐ »α¿¼Ñα »«¬áºδóáÑΓ, ó τѼ ß«ßΓ«¿Γ
- φΓ« »αÑ¿¼πΘÑßΓó«. ÅαÑñ»«½«ª¿¼, º¡áτÑ¡¿Ñ µÑ½«⌐ »ÑαѼѡ¡«⌐ %x αáó¡«
- 4, ¿ π óáß ¿¼ÑÑΓß∩ »«ñ»α«úαá¼¼á ¡á ÇßßѼí½ÑαÑ MYROUTINE, ¬«Γ«αá∩
- ó«ß»α¿¡¿¼áÑΓ »ÑαÑñáóáѼ«Ñ µÑ½«Ñ º¡áτÑ¡¿Ñ. ¥Γá »«ñ»α«úαá¼¼á íπñÑΓ
- αáí«ΓáΓ∞ «ñ¿¡á¬«ó«, Ñß½¿ óδ ó맮óÑΓÑ ÑÑ ¿ «»ÑαáΓ«α«¼ CALL MYROU-
- TINE(%x), ¿ «»ÑαáΓ«α«¼ CALL MYROUTINE(4). àß½¿ »«ñ»α«úαá¼¼á íδ½á
- óδºóá¡á ß »«¼«Θ∞ε CALL SUBROUTINE(4%) ¿ »δΓáÑΓß∩ ¼«ñ¿Σ¿µ¿α«óáΓ∞
-
- TASM2 #3-5/䫬 = 214 =
-
- º¡áτÑ¡¿Ñ »ÑαÑñá¡¡«ú« »áαá¼ÑΓαá, Γ« «¡á íѺ óß∩¬«ú« πΘÑαíá ¼«ñ¿Σ¿-
- µ¿α«óá½á íδ «í½áßΓ∞ »á¼∩Γ¿, úñÑ óαѼѡ¡« σαá¡¿Γß∩ µÑ½«Ñ º¡áτÑ¡¿Ñ
- 4.
-
- çá¼ÑΓ¿¼, τΓ« ó« óΓ«α«¼ ß½πτáÑ Γ¿» íδ½ π¬áºá¡ ∩ó¡« (%4). ¥Γ«
- ¡Ñ ∩ó½∩ÑΓß∩ áíß«½εΓ¡« ¡Ñ«íσ«ñ¿¼δ¼, σ«Γ∩ ñѽáΓ∞ φΓ« ¡Ñ»½«σ«. àß½¿
- íδ Æπαí« üÑ⌐ß¿¬ »αÑñ»«½«ª¿½, τΓ« º¡áτÑ¡¿Ñ 4 - φΓ« τ¿ß½« ß «ñ¿¡áα-
- ¡«⌐ Γ«τ¡«ßΓ∞ε, Γ« óáΦá »«ñ»α«úαá¼¼á ¿ß»«½∞º«óá½á íδ ¡ÑóÑα¡«Ñ º¡á-
- τÑ¡¿Ñ (ñóá íá⌐Γá ¿º 4-íá⌐Γ«ó«ú« τ¿ß½á ß «ñ¿¡áα¡«⌐ Γ«τ¡«ßΓ∞ε) ¿
- óδ»«½¡∩½áß∞ íδ ¡Ñ¬«ααÑ¬Γ¡«. ùΓ«íδ úáαá¡Γ¿α«óáΓ∞ »ÑαÑñáτπ º¡áτÑ¡¿∩
- ¬«ααÑ¬Γ¡«ú« Γ¿»á, ½πτΦÑ »α¿ ¬áªñ«¼ ó맮óÑ »«ñ»α«úαá¼¼δ π¬áºδóáΓ∞
- Γ¿» »ÑαѼѡ¡δσ.
-
- àß½¿ óδ »ÑαÑñáÑΓÑ »«ñ»α«úαá¼¼Ñ ¼áßß¿ó, Γ« ßΓѬ πóѽ¿τ¿Γß∩ ¡á
- 60 íá⌐Γ (»α¿ φΓ«¼ í«½∞Φá∩ τáßΓ∞ »ÑαÑñá¡¡«⌐ óá¼ ¿¡Σ«α¼áµ¿¿ 󫺼«ª-
- ¡« ¬ ñѽπ ¡Ñ «Γ¡«ß¿Γß∩). é απ¬«ó«ñßΓóÑ »« Æπαí« üÑ⌐ß¿¬π αѬ«¼Ñ¡-
- ñπÑΓß∩ »ÑαÑñáóáΓ∞ »áαá¼ÑΓαδ Γ¿»á ¼áßß¿óá, ¬á¬ µÑ½δÑ º¡áτÑ¡¿∩, á
- ¡Ñ »ÑαÑñáóáΓ∞ ¼áßß¿ó µÑ½¿¬«¼. ÅÑαÑñáτá ó¼ÑßΓ« óßÑú« ¼áßß¿óá ¡Ñß-
- ¬«½∞¬¿σ óδíαá¡¡δσ »áαá¼ÑΓα«ó »«ºó«½¿Γ ßφ¬«¡«¼¿Γ∞ ¼ÑßΓ« ¡á ñ¿ß¬Ñ,
- π¼Ñ¡∞Φ¿Γ∞ óαѼ∩, ¡Ñ«íσ«ñ¿¼«Ñ ñ½∩ óδ»«½¡Ñ¡¿∩ óáΦÑ⌐ »α«úαá¼¼δ, ¿
- «íÑß»Ñτ¿Γ∞ »ÑαÑ¡«ß¿¼«ßΓ∞ óáΦÑ⌐ »α«úαá¼¼δ ñ½∩ αáí«Γδ ß »«ß½ÑñπεΘ¿-
- ¼¿ óÑαß¿∩¼¿ Æπαí« üÑ⌐ß¿¬á.
-
- ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« π óáß ÑßΓ∞ »α«ßΓá∩ »«ñ»α«úαá¼¼á,
- ¬«Γ«α«⌐ ΓαÑíπÑΓß∩ ºá¡ÑßΓ¿ ó ßΓѬ Γ«½∞¬« π¬áºáΓѽ∞ íáºδ BP. é φΓ«¼
- ß½πτáÑ º¡áτÑ¡¿Ñ¼ ¿½¿ áñαÑß«¼ »Ñαó«ú« »áαá¼ÑΓαá íπñÑΓ [SP+6]. àß½¿
- íδ óδ ºá¡Ñß½¿ ó ßΓѬ ñóá αÑú¿ßΓαá, Γ« º¡áτÑ¡¿Ñ¼ ¿½¿ áñαÑß«¼ »Ñα-
- ó«ú« »áαá¼ÑΓαá í佫 íδ [SP+8].
-
- äáóá⌐ΓÑ »αÑñ»«½«ª¿¼, τΓ« »Ñαóδ⌐ »áαá¼ÑΓα »αÑñßΓáó½∩ÑΓ ß«í«⌐
- µÑ½«Ñ º¡áτÑ¡¿Ñ ¿ »ÑαÑñáÑΓß∩ »«ñ»α«úαá¼¼Ñ ¡á ÇßßѼí½ÑαÑ »« º¡áτÑ-
- ¡¿ε. é φΓ«¼ ß½πτáÑ óδ ¼«ªÑΓÑ »«¼ÑßΓ¿Γ∞ µÑ½«Ñ º¡áτÑ¡¿Ñ ó αÑú¿ßΓα
- CX ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿⌐:
-
- push bp ; ß«σαá¡¿Γ∞ π¬áºáΓѽ∞ íáºδ
- mov bp,sp ; »α¿αáó¡∩Γ∞ π¬áºáΓѽ∞ íáºδ ¬
- ; π¬áºáΓѽε ßΓѬá
- les di,[bp+6] ; ES ß«ñÑαª¿Γ º¡áτÑ¡¿Ñ ßÑú¼Ñ¡Γá,
- ; DI - ß¼ÑΘÑ¡¿Ñ º¡áτÑ¡¿∩
- mov cx,ES:[DI] ; »«¼ÑßΓ¿Γ∞ º¡áτÑ¡¿Ñ ó CX
-
- Åα¿¼Ñτá¡¿Ñ: ç¡áτÑ¡¿Ñ ¡Ñ íπñÑΓ ¡áσ«ñ¿Γ∞ß∩ ó Γ«¼ ªÑ
- ßÑú¼Ñ¡ΓÑ, τΓ« ¿ «íδτ¡δÑ »ÑαѼѡ¡δÑ. éδ ñ«½ª¡δ »«ºáí«Γ¿Γ∞ß∩
- « Γ«¼, τΓ«íδ ñ½∩ ñ«ßΓπ»á ¬ º¡áτÑ¡¿ε ¿ß»«½∞º«óáΓ∞ ¬«ααѬΓ-
- ¡δ⌐ ¿ »«½¡δ⌐ áñαÑß. äá½ÑÑ ¼δ αáß߬áªÑ¼ « »ÑαѼѡ¡δσ, ¬«Γ«-
- αδÑ ¡Ñ ¡áσ«ñ∩Γß∩ ó ΓѬπΘѼ ßÑú¼Ñ¡ΓÑ ñá¡¡δσ, í«½ÑÑ »«ñα«í-
-
- TASM2 #3-5/䫬 = 215 =
-
- ¡«.
-
- æ ñαπú«⌐ ßΓ«α«¡δ, Ñß½¿ íδ óδ º¡á½¿, τΓ« µÑ½«τ¿ß½Ñ¡¡á∩ »ÑαÑ-
- ¼Ñ¡¡á∩ »ÑαÑñá¡á »« ßß佬Ñ, á ¡Ñ »« º¡áτÑ¡¿ε, Γ« [BP+6] ß«ñÑαªá½
- íδ áñαÑß ß¼ÑΘÑ¡¿∩ »ÑαѼѡ¡«⌐ ó ÑÑ ßÑú¼Ñ¡ΓÑ ñá¡¡δσ. ùΓ«íδ »«¼Ñß-
- Γ¿Γ∞ φΓ« µÑ½«Ñ º¡áτÑ¡¿Ñ ó αÑú¿ßΓα CX, ¼«ª¡« í佫 íδ ºá»¿ßáΓ∞:
-
- push bp ; ß«σαá¡¿Γ∞ π¬áºáΓѽ∞ íáºδ
- mov bp,sp ; »α¿αáó¡∩Γ∞ π¬áºáΓѽ∞ íáºδ
- ; ¬ π¬áºáΓѽε ßΓѬá
- mov bx,[bp+6] ; »«¼ÑßΓ¿Γ∞ áñαÑß º¡áτÑ¡¿∩ ó BX
- mov cx,[bx] ; »«¼ÑßΓ¿Γ∞ »ÑαÑñá¡¡«Ñ º¡áτÑ¡¿Ñ
- ; ó CX
-
- é ñá¡¡«⌐ »α«úαá¼¼Ñ »αÑñ»«½áúáÑΓß∩, τΓ« »ÑαѼѡ¡á∩ ¡áσ«ñ¿Γß∩
- ó ΓѬπΘѼ ßÑú¼Ñ¡ΓÑ ñá¡¡δσ, ¿ ñ½∩ ¿º¼Ñ¡Ñ¡¿∩ º¡áτÑ¡¿∩ »ÑαѼѡ¡«⌐
- ¡Ñ«íσ«ñ¿¼« Γ«½∞¬« ß¼ÑΘÑ¡¿Ñ »ÑαѼѡ¡«⌐ ó φΓ«¼ ßÑú¼Ñ¡ΓÑ.
-
- ìáñѪ¡ÑÑ »ÑαÑñáóáΓ∞ »áαá¼ÑΓαδ, Ñß½¿ óδ óßÑúñá íπñÑΓÑ »αÑñ»«-
- ½áúáΓ∞, τΓ« »ÑαÑñáτá «ßπΘÑßΓó½∩ÑΓß∩ »« º¡áτÑ¡¿ε. àß½¿ º¡áτÑ¡¿Ñ ¡á
- ßἫ¼ ñÑ½Ñ »ÑαÑñáÑΓß∩ »« ßß佬Ñ, óδ ¡¿τÑú« ¡Ñ »«ΓÑα∩ÑΓÑ: »«½¡δ⌐
- áñαÑß »ÑαѼѡ¡«⌐ íπñÑΓ ó¬½ετáΓ∞ ó ßÑí∩ ΓѬπΘ¿⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ. æ
- ñαπú«⌐ ßΓ«α«¡δ, Ñß½¿ ó óáΦÑ⌐ »«ñ»α«úαá¼¼Ñ »αÑñ»«½áúáÑΓß∩, τΓ« »Ñ-
- αѼѡ¡á∩ »ÑαÑñáóá½áß∞ »« ßß佬Ñ, á φΓ« ¡Ñ Γá¬, Γ« »«½πτÑ¡¡δ⌐ óἿ
- áñαÑß ¡Ñ íπñÑΓ ß«ñÑαªáΓ∞ ¬«ααÑ¬Γ¡«Ñ º¡áτÑ¡¿Ñ »«½¡«ú« áñαÑßá, Γá¬
- ¬á¬ ßÑú¼Ñ¡Γ íπñÑΓ ¡Ñ»αáó¿½∞¡δ¼. Æá¬¿¼ «íαẫ¼, »«ñ»α«úαá¼¼á íπñÑΓ
- ½¿í« ¿ºó½Ñ¬áΓ∞ ¡Ñ»αáó¿½∞¡«Ñ º¡áτÑ¡¿Ñ, ½¿í« (Ñß½¿ óδ »δΓáÑΓÑß∞ ¿º-
- ¼Ñ¡¿Γ∞ º¡áτÑ¡¿Ñ »ÑαÑñáóáѼ«⌐ »ÑαѼѡ«⌐) íπñÑΓ ¿º¼Ñ¡∩Γ∞ ¡ÑóÑα¡πε
- «í½áßΓ∞ »á¼∩Γ¿ ß ¡Ñ»αÑñ߬áºπÑ¼δ¼¿ αѺπ½∞ΓáΓἿ.
-
- ÅÑαÑñáτá »áαá¼ÑΓα«ó »« ßßδ½¬Ñ º¡áτ¿Γѽ∞¡« »α«ΘÑ ñ½∩ Γᬿσ
- »ÑαѼѡ¡δσ, ¬á¬ ßΓ᫬¿, ¼áßß¿óδ ¿ τ¿ß½á ß »½áóáεΘÑ⌐ Γ«τ¬«⌐. ¥Γ¿
- »ÑαѼѡ¡δÑ ¼«úπΓ íδΓ∞ ñ«ßΓáΓ«τ¡« ñ½¿¡¡δ¼¿, τΓ« óδºδóὫ íδ »α«í-
- ½Ñ¼δ, Ñß½¿ íδ «¡¿ ñÑ⌐ßΓó¿Γѽ∞¡« »ÑαÑñáó὿ß∞ ó ßΓѬÑ. çáΓαáΓδ ¡á
- ¿ºó½ÑτÑ¡¿Ñ ñ½¿¡¡«⌐ »ÑαѼѡ¡«⌐ ¿º ßΓÑ¬á »α¿¼Ñα¡« φ¬ó¿óá½Ñ¡Γ¡δ ºáΓ-
- αáΓá¼ ¡á ßτ¿Γδóá¡¿Ñ ¿º ßΓѬá ÑÑ áñαÑßá ¿ αáí«Γπ ß »ÑαѼѡ¡«⌐ ó
- «í½áßΓ¿ »á¼∩Γ¿. ä½∩ ßΓ᫬«óδσ »ÑαѼѡ¡δσ (Ñß½¿, ¬«¡Ñτ¡«, ßΓ᫬á
- ¡Ñ ß½¿Φ¬«¼ ¬«α«Γ¬á∩) ¼á½«óÑα«∩Γ¡«, τΓ« «¬áªÑΓß∩ ñ«ßΓáΓ«τ¡«Ñ ñ½∩
- «íαáí«Γ¬¿ ßΓ᫬¿ ¼ÑßΓ« ó αÑú¿ßΓαáσ íѺ óδ»«½¡Ñ¡¿∩ ñ«ßΓπ»á ¬ »á¼∩-
- Γ¿.
-
-
-
-
- TASM2 #3-5/䫬 = 216 =
-
- ÅÑαѼѡ¡δÑ, ¡áσ«ñ∩Θ¿Ñß∩ ó¡Ñ ΓѬπΘÑú« ßÑú¼Ñ¡Γá ñá¡¡δσ
- -----------------------------------------------------------------
-
- àß½¿ »ÑαÑñáóáѼδÑ »ÑαѼѡ¡δÑ ¡Ñ ¡áσ«ñ∩Γß∩ ó ΓѬπΘѼ ßÑú¼Ñ¡ΓÑ
- ñá¡¡δσ, Γ« ñ½∩ ñ«ßΓπ»á ¬ º¡áτÑ¡¿ε »ÑαѼѡ¡«⌐ ó »α«úαá¼¼Ñ ¡á Çß-
- ßѼí½ÑαÑ óá¼ »«ΓαÑíπÑΓß∩ ¬á¬ ßÑú¼Ñ¡Γ, Γᬠ¿ ß¼ÑΘÑ¡¿Ñ »ÑαѼѡ¡«⌐.
- Æπαí« üÑ⌐ß¿¬ óßÑúñá »ÑαÑñáÑΓ ó ßΓÑ¬Ñ ñ½∩ ¬áªñ«⌐ »ÑαѼѡ¡«⌐ ¿ ßÑú-
- ¼Ñ¡Γ, ¿ ß¼ÑΘÑ¡¿Ñ. Æá¬¿¼ «íαẫ¼, »α«úαá¼¼¿ßΓπ óßÑúñá ñ«ßΓπ»Ñ¡
- »«½¡δ⌐ áñαÑß ¬áªñ«⌐ »ÑαѼѡ¡«⌐.
-
- ùáßΓ∞ áñαÑßá, «»αÑñѽ∩εΘá∩ ßÑú¼Ñ¡Γ, ß«ñÑনΓß∩ ó 2 íá⌐Γáσ,
- ¡Ñ»«ßαÑñßΓóÑ¡¡«⌐ ß½ÑñπεΘ¿σ ºá ß¼ÑΘÑ¡¿Ñ¼ »áαá¼ÑΓαá. ìá¿í«½ÑÑ πñ«í-
- ¡δ⌐ ß»«ß«í ¿ß»«½∞º«óá¡¿∩ φΓ«⌐ ¿¡Σ«α¼áµ¿¿ ó óáΦÑ⌐ »α«úαá¼¼Ñ ¡á Çß-
- ßѼí½ÑαÑ - φΓ« ¿ß»«½∞º«óá¡¿Ñ ¿¡ßΓαπ¬µ¿¿ LES.
-
- ê¡ßΓαπ¬µ¿∩ LES ºáúαπº¿Γ ó π¬áºá¡¡δ⌐ αÑú¿ßΓα º¡áτÑ¡¿Ñ ß¼ÑΘÑ-
- ¡¿∩ »ÑαѼѡ¡«⌐, á αÑú¿ßΓα ES - τáßΓ∞ áñαÑßá, »αÑñßΓáó½∩εΘπε ß«í«⌐
- ßÑú¼Ñ¡Γ. ¥Γ« «íÑß»Ñτ¿Γ óá¼ »«½¡πε áñαÑßáµ¿ε ¬ ½εí«⌐ »ÑαѼѡ-
- ¡«⌐, ¡Ñºáó¿ß¿¼« «Γ Γ«ú«, ó ¬á¬«¼ ßÑú¼Ñ¡ΓÑ ñá¡¡δσ «¡á ¡áσ«ñ¿Γß∩.
-
- ÅαÑñ»«½«ª¿¼ «»∩Γ∞, τΓ« ó óáΦÑ⌐ »«ñ»α«úαá¼¼Ñ ¡πª¡« ºá»¿ßáΓ∞
- º¡áτÑ¡¿Ñ µÑ½«τ¿ß½Ñ¡¡«⌐ »ÑαѼѡ¡«⌐ ó αÑú¿ßΓα CX. ū߬«½∞¬π αÑú¿ßΓα
- ES ß«σαá¡∩Γ∞ ¡Ñ ¡πª¡«, óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬µ¿ε LES:
-
- push bp ; ß«σαá¡¿Γ∞ π¬áºáΓѽ∞ íáºδ
- mov bp,sp ; »α¿αáó¡∩Γ∞ π¬áºáΓѽ∞ íáºδ ¬
- ; π¬áºáΓѽε ßΓѬá
- les di,[bp+6] ; ES ß«ñÑαª¿Γ ßÑú¼Ñ¡Γ, DI -
- ; ß¼ÑΘÑ¡¿Ñ
- mov cx,ES:[DI] ; »«¼ÑßΓ¿Γ∞ º¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐
- ; ó CX
-
- æ »«¼«Θ∞ε »ÑαÑñáτ¿ »«½¡«ú« áñαÑßá ¬áªñ«⌐ »ÑαѼѡ¡«⌐ Æπαí«
- üÑ⌐ß¿¬ »«ºó«½∩ÑΓ »α«úαá¼¼¿ßΓπ, αáí«ΓáεΘѼπ ¡á ÇßßѼí½ÑαÑ, »¿ßáΓ∞
- »«ñ»α«úαá¼¼δ, ¡Ñºáó¿ß¿¼δÑ «Γ Γ«ú«, úñÑ σαá¡∩Γß∩ ñá¡¡δÑ. àß½¿ óδ
- »ÑαÑ»¿ΦÑΓÑ ßó«ε »α«úαá¼¼π ¿ »«¼ÑßΓ¿ΓÑ »ÑαѼѡ¡δÑ ¿½¿ ¼áßß¿óδ ó
- ñαπú¿Ñ ßÑú¼Ñ¡Γδ ñá¡¡δσ, Γ« ó ß½πτáÑ ¿ß»«½∞º«óá¡¿∩ »«½¡«ú« áñαÑßá
- »ÑαѼѡ¡«⌐ ¿ ¿¡ßΓαπ¬µ¿¿ LES óá¼ ¡Ñ »α¿ñÑΓß∩ »ÑαÑ»¿ßδóáΓ∞ »«ñ»α«ú-
- αá¼¼δ, αÑ὿º«óá¡¡δÑ ¡á ÇßßѼí½ÑαÑ.
-
- Æ¿» «»ÑαáΓ«αá CALL
- -----------------------------------------------------------------
-
- æπΘÑßΓóπÑΓ ñóá Γ¿»á «»ÑαáΓ«αá CALL - í½¿ª¡¿⌐ (near) ¿ ñá½∞-
- ¡¿⌐ (far). äá½∞¡¿⌐ «»ÑαáΓ«α CALL óδσ«ñ¿Γ ºá úαá¡¿µδ ΓѬπΘÑú« ßÑú-
-
- TASM2 #3-5/䫬 = 217 =
-
- ¼Ñ¡Γá ¬«ñá, á í½¿ª¡¿⌐ - ¡ÑΓ.
-
- é Æπαí« üÑ⌐ß¿¬Ñ »α¿óÑßΓ¿ ¬ ¡Ñ¬«Γ«αδ¼ »α«í½Ñ¼á¼ ¼«ªÑΓ Γ«½∞¬«
- «»ÑαáΓ«α CALL ABSOLUTE, »«ß¬«½∞¬π Ñú« µÑ½Ñó«⌐ áñαÑß ¼«ªÑΓ αáß»«-
- ½áúáΓ∞ß∩ ó ½εí«¼ ¼ÑßΓÑ »á¼∩Γ¿. Æá¬¿¼ «íαẫ¼, ó Æπαí« üÑ⌐ß¿¬Ñ
- ΓαÑíπÑΓß∩, τΓ«íδ »«ñ»α«úαá¼¼δ, óδºδóáѼδÑ «»ÑαáΓ«α«¼ CALL ABSO-
- LUTE, ºáóÑαΦ὿ óδ»«½¡Ñ¡¿Ñ ß »«¼«Θ∞ε ñá½∞¡Ñú« ó«ºóαáΓá ¿ áóΓ«¼á-
- Γ¿τÑ߬¿ úÑ¡Ñα¿α«ó὿ «»ÑαáΓ«α CALL ñá½∞¡Ñú« Γ¿»á »α¿ »ÑαÑñáτÑ π»-
- αáó½Ñ¡¿∩ Γᬿ¼ »«ñ»α«úαá¼¼á¼.
-
- é맮ó CALL INTERRUPT ¼«ªÑΓ ¡Ñ∩ó¡« úÑ¡Ñα¿α«óáΓ∞ ó맮ó ñá½∞¡Ñ-
- ú« Γ¿»á, ¡« Æπαí« üÑ⌐ß¿¬ «íαáíáΓδóáÑΓ φΓ« ó¡πΓαÑ¡¡¿¼ «íαẫ¼.
- àß½¿ óδ »¿ΦÑΓÑ ßó«¿ ß«íßΓóÑ¡¡δÑ «íαáí«Γτ¿¬¿ »αÑαδóá¡¿⌐, óá¼ ¡πª¡«
- Γ«½∞¬« ñ½∩ »ÑαÑñáτ¿ π»αáó½Ñ¡¿∩ «íαáΓ¡« ó »α«úαá¼¼π Æπαí« üÑ⌐ß¿¬á
- ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬µ¿ε IRET (ó«ºóαáΓ ¿º »αÑαδóá¡¿∩).
-
- éßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ó¬½ετáÑΓß∩ ó »α«úαá¼¼π »α¿ ÑÑ ¬«¼»¿½∩-
- µ¿¿. é «íΘѼ ß½πτáÑ ¬«ñ íπñÑΓ ¡áσ«ñ¿Γ∞ß∩ ó ΓѬπΘѼ ßÑú¼Ñ¡ΓÑ ¬«ñá,
- ¡« Æπαí« üÑ⌐ß¿¬ ¡Ñ »«ñαáºπ¼ÑóáÑΓ φΓ«ú«, ¿ Γá¬¿Ñ »«ñ»α«úαá¼¼δ Γá¬-
- ªÑ ºáóÑαΦáεΓß∩ ñá½∞¡¿¼ ó«ºóαáΓ«¼. Æπαí« üÑ⌐ß¿¬ íπñÑΓ áóΓ«¼áΓ¿τÑß-
- ¬¿ úÑ¡Ñα¿α«óáΓ∞ óδº«ó ¿ ó«ºóαáΓ, »«φΓ«¼π óá¼ ¡Ñ ¡πª¡« ¿ß»«½∞º«-
- óáΓ∞ ó ßó«Ñ¼ ¬«ñÑ ¿¡ßΓαπ¬µ¿ε RET. àß½¿ óδ σ«Γ¿ΓÑ ºáóÑαΦ¿Γ∞ »«ñ-
- »α«úαá¼¼π ñ« ¬«¡µá ¬«ñá, Γ« ¡πª¡« »α«ßΓ« »ÑαÑ⌐Γ¿ ¡á ¼ÑΓ¬π ó ¬«¡µÑ
- ¬«ñá.
-
- Åα¿¼Ñτá¡¿Ñ: ū߬«½∞¬π Æπαí« üÑ⌐ß¿¬ ¡Ñ ¿ß»«½∞ºπÑΓ
- »α«úαá¼¼π-¬«¼»«¡«óΘ¿¬ DOS LINK, óá¼ ¼«ª¡« ¡Ñ íÑß»«¬«¿Γ∞ß∩
- « Γ«¼, τΓ«íδ «íΩ∩ó½∩Γ∞ óáΦ¿ »«ñ»α«úαá¼¼δ «íΘÑñ«ßΓπ»¡δ¼¿
- (PUBLIC), ¿½¿ «»¿ßδóáΓ∞ ¿σ ó ßó«¿σ »α«úαá¼¼áσ, ¬á¬ ó¡ÑΦ-
- ¡¿Ñ.
-
-
- êºó½ÑτÑ¡¿Ñ ¿º ßΓѬá
- -----------------------------------------------------------------
-
- ÅÑαÑñ ºáóÑαΦÑ¡¿Ñ¼ »«ñ»α«úαá¼¼δ óδ ñ«½ª¡δ πíÑñ¿Γ∞ß∩ ó Γ«¼,
- τΓ« óßÑ ºá¡ÑßÑ¡¡δÑ ó ßΓѬ αÑú¿ßΓαδ ¿ºó½ÑτÑ¡δ ¿º ßΓѬá. çñÑß∞ ½Ñú-
- ¬« ßñѽáΓ∞ «Φ¿í¬π, «ß«íÑ¡¡« Ñß½¿ ó óáΦÑ⌐ »«ñ»α«úαá¼¼Ñ ¿ß»«½∞ºπÑΓ-
- ß∩ πß½«ó¡«Ñ ºá¡ÑßÑ¡¿Ñ ó ßΓѬ ¿ ¿ºó½ÑτÑ¡¿Ñ ¿º ¡Ñú« αÑú¿ßΓα«ó.
-
- àß½¿ óδ ¿ºó½ÑτÑΓÑ ß½¿Φ¬«¼ ¼á½« αÑú¿ßΓα«ó, Γ« óáΦá »α«úαá¼¼á
- »«ß½Ñ ó맮óá 󫺼«ª¡« ¡¿¬«úñá ¡Ñ ó«ºóαáΓ¿Γ π»αáó½Ñ¡¿Ñ, Γᬠ¬á¬
- Æπαí« üÑ⌐ß¿¬ »«ñαáºπ¼ÑóáÑΓ, τΓ« »«ß½Ññ¡∩∩ ºá»¿ß∞ ó ßΓÑ¬Ñ - φΓ«
- áñαÑß ó«ºóαáΓá. àß½¿ óδ ¿ºó½ÑτÑΓÑ ß½¿Φ¬«¼ ¼¡«ú« αÑú¿ßΓα«ó, Γ« ¼«-
- ªÑΓ ¡áí½εñáΓ∞ß∩ ëà ªÑ φΣΣѬΓ.
-
-
- TASM2 #3-5/䫬 = 218 =
-
- ìÑ óδ»«½¡∩⌐ΓÑ «»Ñαáµ¿ε ºáúαπº¬¿ ¿ ¿ºó½ÑτÑ¡¿∩ ¡Ñ¡πª¡δσ º¡áτÑ-
- ¡¿⌐ ¿º ßÑú¼Ñ¡Γ¡δσ αÑú¿ßΓα«ó, Γᬠ¬á¬ φΓ« ¼«ªÑΓ »α¿óÑßΓ¿ ¬ ¡Ñß«ó-
- ¼ÑßΓ¿¼«ßΓ¿ óáΦÑú« ¿ßσ«ñ¡«ú« ¬«ñá ß »«ß½ÑñπεΘ¿¼¿ óÑαß¿∩¼¿ DOS
- (¡á»α¿¼Ñα, «»Ñαᵿ«¡¡«⌐ ß¿ßΓѼ«⌐ OS/2).
-
-
-
-
- TASM2 #3-5/䫬 = 219 =
-
- 櫺ñá¡¿Ñ »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ ñ½∩ Æπαí« üÑ⌐ß¿¬á
- -----------------------------------------------------------------
-
- àß½¿ óδ ß«ºñ὿ »α«úαá¼¼π ¡á ÇßßѼí½ÑαÑ ¿ σ«Γ¿ΓÑ »αÑ«íαẫ-
- óáΓ∞ ÑÑ ó Σ«α¼áΓ .COM, ¿ß»«½∞ºπѼδ⌐ ó »α«úαá¼¼Ñ Æπαí« üÑ⌐ß¿¬á, Γ«
- ¼«ª¡« ¿ß»«½∞º«óáΓ∞ »α¿¼Ñα ¬«¼á¡ñ¡«ú« Σá⌐½á ¿º απ¬«ó«ñßΓóá »« Æπα-
- í« üÑ⌐ß¿¬π:
-
- TASM %1;
- TLINK /t %1;
-
- 鬽ετáΓ∞ ßÑú¼Ñ¡Γ ßΓÑ¬á ¡Ñ ¡πª¡«, Γᬠ¬á¬ »α«úαá¼¼á ¡á ÇßßѼ-
- í½ÑαÑ »α¿ ºá»π᪥ íπñÑΓ ¿ß»«½∞º«óáΓ∞ ßΓѬ, ß ¬«Γ«αδ¼ ºáóÑαΦ¿½ αá-
- í«Γπ Æπαí« üÑ⌐ß¿¬.
-
- àß½¿ óδ ¡Ñ ¿ß»«½∞ºπÑΓÑ ó ¡áτá½Ñ »α«úαá¼¼δ «»ÑαáΓ«α ORG 100h,
- Γ« Æπαí« ÇßßѼí½Ñα íπñÑΓ »« π¼«½τá¡¿ε ¡áτ¿¡áΓ∞ óδ»«½¡Ñ¡¿Ñ ß áñαÑ-
- ßá 100h. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ ½πτΦÑ π¬áºáΓ∞ «»ÑαáΓ«α ORG ∩ó¡« (ñ½∩ »«ß½Ñ-
- ñπεΘÑ⌐ 󫺼«ª¡«⌐ ¼«ñ¿Σ¿¬áµ¿¿).
-
- àß½¿ óáΦá »α«úαá¼¼á »αÑñ¡áº¡áτÑ¡á ñ½∩ αáí«Γδ ¡á »α«µÑßß«αáσ
- 80186, 80286 ¿½¿ 80286, Γ« ó ¡áτá½Ñ ¬«ñá ÇßßѼí½Ñαá ¼«ª¡« π¬áºáΓ∞
- ¿¡ßΓαπ¬µ¿¿ .186, .286 ¿ .386. Æ«úñá Æπαí« ÇßßѼí½Ñα »«ºó«½¿Γ óá¼
- ¿ß»«½∞º«óáΓ∞ ¬«ñδ «»Ñαᵿ⌐, ñ«ßΓπ»¡δÑ ñ½∩ φΓ¿σ »α«µÑßß«α«ó. èá¬
- óδ πó¿ñ¿ΓÑ, φΓ« ¼«ªÑΓ ñáΓ∞ ßπΘÑßΓóÑ¡¡δÑ »αÑ¿¼πΘÑßΓóá.
-
- é맮ó óßΓα«Ñ¡¡«⌐ »α«µÑñπαδ ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- ÅαÑñ»«½«ª¿¼, óδ ß«ºñ὿ »«ñ»α«úαá¼¼π ¡á ÇßßѼí½ÑαÑ ¿ »αÑ«í-
- αẫó὿ ÑÑ ß »«¼«Θ∞ε Æπαí« ÇßßѼí½Ñαá ó Σ«α¼áΓ .COM. ¥Γ«Γ αÑ-
- ºπ½∞ΓáΓ ó »α«úαá¼¼Ñ Æπαí« üÑ⌐ß¿¬á ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñóπ¼∩ ß»«ß«-
- íἿ: ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ $INLINE COM ¿½¿ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ
- $INCLUDE.
-
- ìá¿í«½ÑÑ »α∩¼«⌐ ¼ÑΓ«ñ ß«ßΓ«¿Γ ó ¿ß»«½∞º«óá¡¿¿ ñ¿αÑ¬Γ¿óδ
- $INLINE COM ¿¼∩_Σá⌐½á. Åα¿ φΓ«¼ Æπαí« üÑ⌐ß¿¬ ó¬½ετ¿Γ Σá⌐½ .COM ó
- π¬áºá¡¡«¼ óἿ ¼ÑßΓÑ. ¥Γ«Γ ¼ÑΓ«ñ «Γ¡«ß¿Γѽ∞¡« »α«ßΓ« αÑ὿º«óáΓ∞,
- ¡« π ¡Ñú« ¿¼ÑÑΓß∩ αẠ¡Ññ«ßΓáΓ¬«ó:
-
- 1. Æπαí« üÑ⌐ß¿¬ ¿¼ÑÑΓ «úαá¡¿τÑ¡¿Ñ: ñ«»π߬áÑΓß∩ ¡Ñ í«½ÑÑ 16
- ñ¿αÑ¬Γ¿ó $INLINE ¡á »α«µÑñπαπ. ¥Γ« ¼«ªÑΓ »α¿óÑßΓ¿ ¬
- »α«í½Ñ¼á¼, Ñß½¿ óδ ñѽáÑΓÑ τΓ«-Γ« «τÑ¡∞ ß½«ª¡«Ñ (¡« φΓ«
- ¼á½«óÑα«∩Γ¡«).
-
-
- TASM2 #3-5/䫬 = 220 =
-
- 2. ü«½ÑÑ ßÑα∞Ѻ¡á∩ »α«í½Ñ¼á »α«¿ßΓѬáÑΓ ¿º Γ«ú« Σá¬Γá, τΓ«
- Σá⌐½δ .æÄî ¡Ñ ó¬½ετáεΓ ó ßÑí∩ ñ«¬π¼Ñ¡Γᵿε (¬«¼¼Ñ¡Γá-
- α¿¿). éδ, ¬«¡Ñτ¡«, ¼«ªÑΓÑ ó¬½ετ¿Γ∞ »α¿¼Ñτá¡¿∩ ó óδºδóáε-
- Θπε »α«úαá¼¼π, ¡« í佫 íδ ½πτΦÑ, Ñß½¿ íδ ßἿ Σá⌐½δ .æÄî
- í뫨 ñ«¬π¼Ñ¡Γ¿α«óá¡δ.
-
- 3. êß»«½∞º«óá¡¿Ñ ñ¿αÑ¬Γ¿óδ $INLINE .COM ¼«ªÑΓ «¬áºáΓ∞ß∩
- »½«ñ«Γó«α¡δ¼. ÉẼÑΘÑ¡¿Ñ ¡Ñ߬«½∞¬¿σ Γᬿσ Σá⌐½«ó ó «ñ¡«¼
- Σá⌐½Ñ í佫 íδ »«½Ñº¡« «ß«íÑ¡¡« ó Γ«¼ ß½πτáÑ, Ñß½¿ óδ ¿ß-
- »«½∞ºπÑΓÑ ¡Ñ¬«Γ«α«Ñ τ¿ß½« Γᬿσ Σá⌐½«ó ó¼ÑßΓÑ. (é φΓ«¼
- ºá¬½ετáÑΓß∩ «ñ¿¡ ¿º ñ«ó«ñ«ó ó »«½∞ºπ ¿ß»«½∞º«óá¡¿∩ í¿í-
- ½¿«ΓѬ »α«úαá¼¼ ¡á ÇßßѼí½ÑαÑ. è ß«ªá½Ñ¡¿ε, ß«ºñáΓ∞ í¿í-
- ½¿«ΓѬπ Σá⌐½«ó .æÄî ¡Ñ Γᬠ»α«ßΓ«.)
-
- 4. ìᬫ¡Ñµ, Σá⌐½δ $INLINE .COM ñ«½ª¡δ ¼«ñ¿Σ¿µ¿α«óáΓ∞ß∩ ¿
- »ÑαÑáßßÑ¼í½¿α«óáΓ∞ß∩, Ñß½¿ óδ ¿σ ¿º¼Ñ¡∩ÑΓÑ. àß½¿ ¿º¼Ñ¡Ñ-
- ¡¿∩ «Γ¡«ß¿Γѽ∞¡« ¡Ñóѽ¿¬¿, Γ« φΓ« ¡Ñ óßÑúñá ªÑ½áΓѽ∞¡«.
-
- é ß««ΓóÑΓßΓó¿Ñ ß σáαá¬ΓÑα«¼ αáí«Γδ ñ¿αÑ¬Γ¿óδ $INCLUDE COM óδ
- ¼«ªÑΓÑ ºáσ«ΓÑΓ∞ »αÑ«íαẫóáΓ∞ Σá⌐½δ .COM ó »«ß½Ññ«óáΓѽ∞¡«ßΓ∞
- ΦÑßΓ¡áñµáΓ¿α¿τ¡δσ µ¿Σα, ¬«Γ«αδÑ óδ ¼«ªÑΓÑ ó¬½ετ¿Γ∞ ó »α«úαá¼¼δ »«
- ñ¿αÑ¬Γ¿óÑ $INCLUDE. Æá¬¿Ñ »α«úαá¼¼δ Γá¬ªÑ ¼«úπΓ ßτ¿ΓδóáΓ∞ß∩ ß
- ñ¿ß¬á ¬«¼á¡ñ«⌐ αÑñá¬Γ«αá Æπαí« üÑ⌐ß¿¬á Read File (τΓÑ¡¿Ñ Σá⌐½á) -
- Ctrl-K R. Æá¬¿¼ «íαẫ¼, óδ íπñÑΓÑ ∩ó¡« ó¿ñÑΓ∞, τΓ« ó¬½ετáÑΓß∩ ó
- óáΦ ¿ßσ«ñ¡δ⌐ Σá⌐½. ä½∩ »α«úαá¼¼¿ßΓá, αáí«ΓáεΘÑú« ¡á Æπαí« üÑ⌐ß¿-
- ¬Ñ, φΓ« ßπΘÑßΓóÑ¡¡«Ñ »αÑ¿¼πΘÑßΓó«.
-
- Æá¬ ¬á¬ αÑñá¬Γ¿απѼδ⌐ ΓѬßΓ »αÑñßΓáó½∩ÑΓ ß«í«⌐ ΦÑßΓ¡áñµáΓ¿-
- α¿τ¡δÑ ¬«ñδ, óδ ¼«ªÑΓÑ ó¬½ετáΓ∞ ¿½¿ ñ«íáó½∩Γ∞ ¬«¼¼Ñ¡Γáα¿¿. ¡«
- Γá¬ªÑ ¿ß»«½∞º«óáΓ∞ αÑñá¬Γ«α Æπαí« üÑ⌐ß¿¬á ñ½∩ Γ«ú«, τΓ«íδ ó¡ÑßΓ¿
- ó« óßΓα«Ñ¡¡δ⌐ ¬«ñ ¼¿¡¿¼á½∞¡δÑ ¿º¼Ñ¡Ñ¡¿∩ íѺ ¡Ñ«íσ«ñ¿¼«ßΓ¿ Ñú« »Ñ-
- αÑáßßÑ¼í½¿α«óá¡¿∩, ¿ »«¼ÑßΓ¿Γ∞ ¡Ñ߬«½∞¬« »«ñ»α«úαá¼¼ ó «ñ¿¡ Σá⌐½.
- æ«τÑΓá∩ φΓ¿ ¼ÑΓ«ñδ, ¼«ª¡« φΣΣÑ¬Γ¿ó¡« ß«ºñáóáΓ∞ í¿í½¿«ΓÑ¬π »«ñ-
- »α«úαá¼¼ ¡á ÇßßѼí½ÑαÑ, ¿ß»«½∞ºπεΘ¿σß∩ ß «»αÑñѽѡ¡δ¼ ßѼÑ⌐ßΓó«¼
- »α«úαá¼¼. Äíß½πª¿óáΓ∞ Γá¬πε í¿í½¿«ΓѬπ »α«ΘÑ, τѼ Ñß½¿ íδ óδ
- »«½∞º«ó὿ß∞ ßΓá¡ñáαΓ¡δ¼ í¿í½¿«ΓѬáαѼ.
-
- àß½¿ »α«úαá¼¼á ß½¿Φ¬«¼ ñ½¿¡¡á∩, Γ« ΦÑßΓ¡áñµáΓ¿α¿τ¡δ⌐ Σá⌐½
- íπñÑΓ «τÑ¡∞ í«½∞Φ¿¼, ¿ αÑñá¬Γ¿α«óáΓ∞ ¿ßσ«ñ¡δ⌐ Σá⌐½ ¼«ªÑΓ «¬áºáΓ∞-
- ß∩ ¡Ñπñ«í¡δ¼. ìá αÑñá¬Γ¿α«óá¡¿Ñ Σá⌐½á (¬á¬ «ñ¡«ú« í½«¬á) ßπΘÑßΓ-
- óπÑΓ «úαá¡¿τÑ¡¿Ñ 64è. àß½¿ φΓ« ßΓá¡«ó¿Γß∩ »α«í½Ñ¼«⌐, óδ ¼«ªÑΓÑ
- «íΩÑñ¿¡¿Γ∞ ΦÑßΓ¡áñµáΓ¿α¿τ¡δ⌐ Σá⌐½ ß óáΦÑ⌐ »α«úαá¼¼«⌐, ¬á¬ Σá⌐½
- $INCLUDE. (ê¡«úñá Γᬫ⌐ αẼÑα ¼«ªÑΓ ßñѽáΓ∞ óáΦπ »α«úαá¼¼π óÑß∞-
- ¼á Γαπñ¡«⌐ ñ½∩ τΓÑ¡¿∩.)
-
- Åα¿óÑñѼ »α¿¼Ñα »α«ßΓ«⌐ »α«úαá¼¼δ ¡á Æπαí« üÑ⌐ß¿¬Ñ, »αÑ«íαá-
-
- TASM2 #3-5/䫬 = 221 =
-
- ºπεΘÑ⌐ Σá⌐½δ .COM ó ΦÑßΓ¡áñµáΓ¿α¿τ¡δÑ Σá⌐½δ:
-
- 'COM2INC.BAS
- 'äá¡¡á∩ »α«úαá¼¼á »αÑ«íαáºπÑΓ Σá⌐½δ æÄî ó Σá⌐½δ $INCLUDE
- 'ß »«¼«Θ∞ε ¼ÑΓᬫ¼á¡ñδ üÑ⌐ß¿¬á $INLINE (ñ½∩ «íÑß»ÑτÑ¡¿∩
- '»α«ßΓ«ú« ó¬½ετÑ¡¿∩ ó »α«úαá¼¼δ ¡á üÑ⌐ß¿¬Ñ).
- DEFINT A-Z
- 'éßÑ »ÑαѼѡ¡δÑ íπñπΓ µÑ½«τ¿ß½Ñ¡¡δ¼¿.
- F$=COMMANDS
- 'Åα«óÑα¿Γ∞, Ñß½¿ ½¿ ¬«¼á¡ñ¡á∩ ßΓ᫬á.
- WHILE F$=""
- PRINT"¥Γá »α«úαá¼¼á »αÑ«íαáºπÑΓ Σá⌐½δ æÄî ó $INCLUDE"
- PRINT"ñ½∩ ¿ß»«½∞º«óá¡¿∩ ó Æπαí« üÑ⌐ß¿¬Ñ. Å« π¼«½τá¡¿ε"
- PRINT"¿ßσ«ñ¡δÑ Σá⌐½δ ¿¼ÑεΓ Γ¿» æÄî. éδσ«ñ¡δÑ Σá⌐½δ"
- PRINT"»« π¼«½τá¡¿ε íπñπΓ ¿¼ÑΓ∞ Γ¿» INC. éδ ¼«ªÑΓÑ"
- PRINT"»ÑαÑ«»αÑñѽ¿Γ∞ φΓ¿ Γ¿»δ, óóÑñ∩ ¬«¡¬αÑΓ¡πε"
- PRINT"߻ѵ¿Σ¿¬áµ¿ε Γ¿»á. àß½¿ óδ ¡Ñ óóÑñÑΓÑ ¿¼∩"
- PRINT"óδσ«ñ¡«ú« Σá⌐½á, «¡ íπñÑΓ ¿¼ÑΓ∞ Γ« ªÑ ¿¼∩,"
- PRINT"τΓ« ¿ óσ«ñ¡«⌐ Σá⌐½, ¡« ߻ѵ¿Σ¿¬áµ¿ε Γ¿»á"
- PRINT"INC."
- LINE INPUT"éóÑñ¿ΓÑ ¿¼∩ »αÑ«íαáºπѼ«ú« Σá⌐½á: ";F$
- WEND
-
- IF COMMAND$="" THEN
- LINE INPUT"éóÑñ¿ΓÑ ¿¼∩ óδσ«ñ¡«ú« Σá⌐½á: ";O$
- END IF
-
- IF INSTR(F$,".")=0 THEN F$=F$+".COM" '߻ѵ¿Σ¿¬áµ¿∩ óó«ñá
- IF O$="" THEN
- O$=LEFT$(F$,INSTR(F$,"."))+"INC" '߻ѵ¿Σ¿¬áµ¿∩ óδó«ñá
- ELSE
- IF INSTR(O$,".")=0 THEN O$=O$+".INC" ' «íÑ
- END IF
-
- OPEN"R",#1,F$,1 'ßτ¿ΓδóáΓ∞ »« «ñ¡«¼π íá⌐Γπ ¿º óσ«ñ¡«ú«
- FIELD #1,1 AS A$ 'Σá⌐½á ó A$
-
- LASTBYTE&=LOF(1) '¬«¡Ñµ Σá⌐½á
- OPEN"O",2,O$ 'óδσ«ñ¡«⌐ Σá⌐½ «Γ¬αδΓ
- FOR I&=1 TO LASTBYTE&-1
- GET 1,I&
- X%=ASC(A$)
- IF ((I&-1) MOD 5=0) THEN PRINT #2,"":PRINT #2,"$INLINE";
- PRINT #2,"&H";HEX$(X%);
- IF ((I&-1) MOD 5<>4) THEN PRINT #2,",";
- NEXT I&
-
- TASM2 #3-5/䫬 = 222 =
-
- GET 1,LASTBYTE&
- PRINT #2,"&H";HEX$(ASC(A$))
- PRINT"ÅαÑ«íαẫóá¡¿Ñ óδ»«½¡Ñ¡«. ";"æτ¿Γá¡« ";LASTBYTE&;"íá⌐Γ."
- PRINT O$;" ß«ñÑαª¿Γ ";LOF(2);" íá⌐Γ."
- CLOSE
- END
-
- ¥Γá »α«úαá¼¼á óδóÑñÑΓ Σá⌐½, ¡á ßΓα«¬Ñ ¬«Γ«α«ú« íπñÑΓ ß«ñÑα-
- ªáΓ∞ß∩ ñ« »∩Γ¿ ΦÑßΓ¡áñµáΓ¿α¿τ¡δσ ¬«ñ«ó. èáªñá∩ ßΓ᫬á íπñÑΓ ¡áτ¿-
- ¡áΓ∞ß∩ ß ñ¿αÑ¬Γ¿óδ $INLINE, á αѺπ½∞Γ¿απεΘ¿⌐ Σá⌐½ ñ«½ªÑ¡ ß«ñÑα-
- ªáΓ∞ ñ«ßΓáΓ«τ¡« ¼ÑßΓá ñ½∩ ¬«¼¼Ñ¡Γáα¿Ñ¼, ¬«Γ«αδÑ óδ, 󫺼«ª¡«, ºá-
- σ«Γ¿ΓÑ ñ«íáó¿Γ∞. àß½¿ óδ σ«Γ¿ΓÑ »«¼ÑßΓ¿Γ∞ ¡á «ñ¡π ßΓ᫬π í«½∞ΦÑ
- ¿½¿ ¼Ñ¡∞ΦÑ ΦÑßΓ¡áñµáΓ¿α¿τ¡δσ ¬«ñ«ó, Γ« óá¼ »«ΓαÑíπÑΓß∩ Γ«½∞¬« ºá-
- ¼Ñ¡¿Γ∞ MOD 5 ¡á MOD N, úñÑ N í«½∞ΦÑ ¿½¿ ¼Ñ¡∞ΦÑ 5.
-
-
-
-
- TASM2 #3-5/䫬 = 223 =
-
- ÉẼÑΘÑ¡¿Ñ »«ñ»α«úαá¼¼δ Æπαí« üÑ⌐ß¿¬á ó »á¼∩Γ¿
- -----------------------------------------------------------------
-
- é «íΘѼ ß½πτáÑ ¿¼ÑÑΓß∩ ñóá ß»«ß«íá ñ½∩ «»αÑñѽѡ¿∩ αáß»«½«-
- ªÑ¡¿∩ »«ñ»α«úαá¼¼δ ó »á¼∩Γ¿:
-
- 1. éáΦá »«ñ»α«úαá¼¼á ßá¼á ¼«ªÑΓ ó«ºóαáΘáΓ∞ ßó«⌐ áñαÑß.
-
- 2. éδ ¼«ªÑΓÑ ßúαπ»»¿α«óáΓ∞ α∩ñ »«ñ»α«úαá¼¼ ó¼ÑßΓÑ, τΓ«íδ
- «ñ¡á »α«úαá¼¼á ó«ºóαáΘá½á áñαÑß, «Γ¡«ß∩Θ¿⌐ß∩ ¬« óßѼ
- »«ñ»α«úαá¼¼á¼.
-
- 3. ¡« ¿ß¬áΓ∞ ó »á¼∩Γ¿ ¬«¼»∞εΓÑαá «»αÑñѽѡ¡πε »«ß½Ññ«óá-
- Γѽ∞¡«ßΓ∞ íá⌐Γ.
-
- ùΓ«íδ ß«ºñáΓ∞ »α«úαá¼¼π, ó«ºóαáΘáεΘπε ßó«⌐ áñαÑß, óδ ¼«ªÑΓÑ
- ¿ß»«½∞º«óáΓ∞ ¬«ñ, á¡á½«ú¿τ¡δ⌐ ß½ÑñπεΘѼπ:
-
- xy: mov ax,cs ; »ÑαѼÑßΓ¿Γ∞ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα
- ; ¬«ñá ó AX
- push bp ; ß«σαá¡¿Γ∞ π¬áºáΓѽ∞ íáºδ
- mov bp,sp ; ¿ ߬«»¿α«óáΓ∞ π¬áºáΓѽ∞ ßΓѬá
- ; ó BP
- les di,[bp+6] ; ES ß«ñÑαª¿Γ ßÑú¼Ñ¡Γ, DI -
- ; ß¼ÑΘÑ¡¿Ñ
- mov ES:[DI],AX ; ß«σαá¡¿Γ∞ º¡áτÑ¡¿Ñ CS ó
- ; »Ñαó«¼ »áαá¼ÑΓαÑ
- mov dx,offset xy ; »«½πτ¿Γ∞ ΓѬπΘÑÑ ß¼ÑΘÑ¡¿Ñ
- les di,[bp+0ah] ; áñαÑß óΓ«α«ú« »áαá¼ÑΓαá
- mov ES:[DI],DX ; ß«σαá¡¿Γ∞ º¡áτÑ¡¿Ñ ß¼ÑΘÑ¡¿∩
- ; ó« óΓ«α«¼ »áαá¼ÑΓαÑ
- jmp fin ; »α«»πßΓ¿Γ∞ "αÑá½∞¡δ⌐" ¬«ñ
- ; "αÑá½∞¡δ⌐" ¬«ñ ß«ñÑনΓß∩
- ; ºñÑß∞
- fin: pop bp ; ó«ßßΓá¡«ó¿Γ∞ BP ¿ óδ»«½¡¿Γ∞
- ; ó«ºóαáΓ
-
- ä½∩ »ÑαѼѡ¡δσ φΓ«⌐ »«ñ»α«úαá¼¼δ óá¼ ¡πª¡« »ÑαÑñáΓ∞ ñóá µÑ-
- ½δσ º¡áτÑ¡¿∩. é »Ñαó«¼ «¡á ó«ºóαáΓ¿Γ ßÑú¼Ñ¡Γ ¬«ñá, ó ó« óΓ«α«¼ -
- ß¼ÑΘÑ¡¿Ñ. Åα«í½Ñ¼á ºñÑß∞ ß«ßΓ«¿Γ ó Γ«¼, τΓ« óÑß∞ φëà ¬«ñ íÑß»«-
- ½ÑºÑ¡ »«ß½Ñ Γ«ú«, ¬á¬ «¡ íπñÑΓ «ñ¿¡ αẠ¿ß»«½∞º«óá¡. öá¬Γ¿τÑ߬¿,
- φΓ« σπªÑ τѼ íÑß»«½Ñº¡«ßΓ∞, Γᬠ¬á¬ φëà ¬«ñ ¡πª¡« πñ὿Γ∞, »αѪ-
- ñÑ τѼ »α«úαá¼¼á ß¼«ªÑΓ ¡«α¼á½∞¡« αáí«ΓáΓ∞.
-
- Å«¬á óáΦá »α«úαá¼¼á ß¼«ªÑΓ »α¿«íαÑßΓ¿ í½áú«ñáα∩ ¼«ñ¿Σ¿¬áµ¿∩¼
- ßπΘÑßΓóÑ¡¡δ⌐ óδ¿úαδΦ ó ߬«α«ßΓ¿, óÑß∞¼á óÑα«∩Γ¡«, τΓ« ¡á ¿º¼Ñ¡Ñ-
-
- TASM2 #3-5/䫬 = 224 =
-
- ¡¿∩ π óáß π⌐ñÑΓ í«½∞ΦÑ óαѼѡ¿, τѼ óδ óδ¿úαáÑΓÑ. î«ñ¿Σ¿¬áµ¿∩
- ñ«½ª¡á íδΓ∞ αáºπ¼¡«⌐: Ñß½¿ óáΦá »α«úαá¼¼á ¡Ñ ∩ó½∩ÑΓß∩ »«½¡«ßΓ∞ε
- »ÑαѼÑΘáѼ«⌐, αáí«τÑ¼π ¬«ñπ ñ«½ª¡« »αÑñΦÑßΓó«óáΓ∞ í«½∞Φ«Ñ τ¿ß½«
- «»Ñαᵿ⌐ NOP.
-
- ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ óδ ¼«ªÑΓÑ «»αÑñѽ¿Γ∞ áñαÑß »«ñ»α«úαá¼¼δ. àß½¿
- óδ úαπ»»¿απÑΓÑ ó¼ÑßΓÑ ¡Ñ߬«½∞¬« »α«úαá¼¼ ¿ »«¼ÑΘáÑΓÑ ¼ÑΓ¬¿ ó
- »α«úαá¼¼π Æπαí« üÑ⌐ß¿¬á (í½áú«ñáα∩ τѼπ óδ ¼«ªÑΓÑ óδºδóáΓ∞ ¡πª¡πε
- »«ñ»α«úαá¼¼π), ¡Ñ½∞º∩ ½¿ αẼÑßΓ¿Γ∞ ßαÑñ¿ φΓ¿σ »«ñ»α«úαá¼¼ »«ñ-
- »α«úαá¼¼π ß««íΘÑ¡¿∩ áñαÑßá?
-
- ÄΓóÑΓ ºñÑß∞ «Γα¿µáΓѽ∞¡δ⌐. àß½¿ óδ »«¼¡¿ΓÑ, Æπαí« üÑ⌐ß¿¬ «í-
- αáíáΓδóáÑΓ ºá óáß ¿¡ßΓαπ¬µ¿¿ RET. Æá¬ ¬á¬ »«ñ»α«úαá¼¼δ ¿¼ÑεΓ αáº-
- ¡δÑ ¿¼Ñ¡á, Æπαí« üÑ⌐ß¿¬ »«ñαáºπ¼ÑóáÑΓ, τΓ« ¬áªñá∩ ß«ñÑαª¿Γ »ÑαÑ-
- ¼ÑΘáѼδ⌐ ¬«ñ. Åα¿ φΓ«¼ ¡ÑΓ úáαá¡Γ¿¿, τΓ« ó ¬«¡Ñτ¡«¼ Σá⌐½Ñ .EXE
- «Γñѽ∞¡δÑ »«ñ»α«úαá¼¼δ íπñπΓ ¡áσ«ñ¿Γ∞ß∩ ó «ñ¡«⌐ ¿ Γ«⌐ ªÑ «í½áßΓ¿
- »á¼∩Γ¿. äáªÑ Ñß½¿ »«ñ»α«úαá¼¼δ ¡áσ«ñ∩Γß∩ ó «ñ¡«⌐ «í½áßΓ¿ »á¼∩Γ¿ ¿
- ß½ÑñπεΓ ó Γ«¼ ªÑ »«α∩ñ¬Ñ, óδ ¡Ñ íπñÑΓÑ º¡áΓ∞, ߬«½∞¬« íá⌐Γ Æπαí«
- üÑ⌐ß¿¬ »«¼ÑΘáÑΓ ¼Ñªñπ ¡¿¼¿, ¿ »«φΓ«¼π ¡Ñ ß¼«ªÑΓÑ πº¡áΓ∞, ¬πñá
- ¡πª¡« »ÑαÑ⌐Γ¿, τΓ«íδ ßñѽáΓ∞ ¡πª¡δÑ ¿º¼Ñ¡Ñ¡¿∩.
-
- ÆαÑΓ¿⌐ ¼ÑΓ«ñ «»αÑñѽѡ¿∩ áñαÑßá »«ñ»α«úαá¼¼δ - φΓ« ¼ÑΓ«ñ
- ß¿ú¡áΓπαδ. ùΓ«íδ Ñú« ¿ß»«½∞º«óáΓ∞, ¡πª¡« ¡á⌐Γ¿ ó »á¼∩Γ¿ ¬«¼»∞εΓÑ-
- αá ¼ÑßΓ«, úñÑ ß«ñÑনΓß∩ «»αÑñѽѡ¡á∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ íá⌐Γ,
- ¿ñÑ¡Γ¿Σ¿µ¿απεΘá∩ »«ñ»α«úαá¼¼π, ¬«Γ«απε óδ σ«Γ¿ΓÑ ¿º¼Ñ¡¿Γ∞.
-
- é ¼ÑΓ«ñÑ ß¿ú¡áΓπαδ Γá¬ªÑ ßπΘÑßΓóπε ßó«¿ »α«í½Ñ¼δ. ÅÑαóá∩
- ß«ßΓ«¿Γ ó Γ«¼, τΓ« ñ½∩ »«¿ß¬á ΓαÑíπÑΓß∩ ¼¡«ú« óαѼѡ¿. éΓ«αá∩
- ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ« ¡ÑΓ úáαá¡Γ¿¿ (ñáªÑ Ñß½¿ óδ ¡áΦ½¿ ß¿ú¡áΓπ-
- απ) τΓ« óδ ¡áσ«ñ¿ΓÑß∞ ó ¡πª¡«⌐ »«ñ»α«úαá¼¼Ñ. é ΓαÑΓ∞¿σ, ¬áªñá∩
- »«ñ»α«úαá¼¼á ñ«½ª¡á ß«ñÑαªáΓ∞ ßó«ε ß¿ú¡áΓπαπ. ä½∩ φΓ«ú« ΓαÑíπÑΓß∩
- ñ«»«½¡¿Γѽ∞¡«Ñ ¼ÑßΓ« ¿ ½¿Φ¡ÑÑ óαѼ∩, ¡Ñ«íσ«ñ¿¼«Ñ ñ½∩ ¼«ñ¿Σ¿¬áµ¿¿
- »α«úαá¼¼.
-
- ùΓ«íδ ß«ºñáóáΓ∞ »«ñ»α«úαá¼¼δ, ¬«Γ«αδÑ ¼«ª¡« ¼«ñ¿Σ¿µ¿α«óáΓ∞,
- óá¼ »«ΓαÑíπÑΓß∩ ½πτΦ¿⌐ ¼ÑΓ«ñ «»αÑñѽѡ¿∩ áñαÑßá »«ñ»α«úαá¼¼δ ¿
- í«½ÑÑ ½Ñú¬¿⌐ ß»«ß«í ¿º¼Ñ¡Ñ¡¿∩ ÑÑ ¿¡ßΓαπ¬µ¿⌐.
-
- ùΓ«íδ αÑΦ¿Γ∞ φΓ¿ »α«í½Ñ¼δ, »α«τ¿Γá⌐ΓÑ ß½ÑñπεΘ¿⌐ αáºñѽ, úñÑ
- αáßß¼áΓα¿óáÑΓß∩ ߻ѵ¿á½∞¡δ⌐ ß»«ß«í ¿ß»«½∞º«óá¡¿∩ »«ñ»α«úαá¼¼, ¬«-
- Γ«αδÑ ¼«ª¡« ¼«ñ¿Σ¿µ¿α«óáΓ∞ ¿º »α«úαá¼¼δ ¡á Æπαí« üÑ⌐ß¿¬Ñ.
-
- "æ¬αδΓδÑ" ßΓ᫬¿
- -----------------------------------------------------------------
-
-
- TASM2 #3-5/䫬 = 225 =
-
- Æπαí« üÑ⌐ß¿¬ »«ºó«½∩ÑΓ ¿ß»«½∞º«óáΓ∞ ñ½∩ ßΓ᫬«ó«ú« »α«ßΓαá¡-
- ßΓóá ¼á¬ß¿¼π¼ 64è. ê¡«úñá óá¼ íπñÑΓ ¡πªÑ¡ ¬áªñδ⌐ íá⌐Γ φΓ«ú«
- »α«ßΓαá¡ßΓóá, á ºá¬½ετÑ¡¡δÑ ó ¬áóδτ¬¿ ßΓ᫬«óδÑ ¬«¡ßΓá¡Γδ (ΓᬿÑ,
- ¬á¬¿Ñ ¿ß»«½∞ºπεΓß∩ ñ½∩ ¼Ñ¡ε ¿ »«ñ߬ẫ¬) Γá¬ªÑ ºá¡¿¼áεΓ ßΓ᫬«ó«Ñ
- »α«ßΓαá¡ßΓó«.
-
- Åα«ßΓαá¡ßΓó« ¬«ñá, «ñ¡á¬«, «úαá¡¿τÑ¡« Γ«½∞¬« 16 ßÑú¼Ñ¡ΓἿ
- (¬áªñδ⌐ ñ« 64è). 忺¡∞ íδ º¡áτ¿Γѽ∞¡« «í½Ñúτ¿½áß∞, Ñß½¿ íδ ¡Ñ¬«-
- Γ«αδÑ ¿º Γᬿσ ßΓ᫬«óδσ ¬«¡ßΓá¡Γ ¼«ª¡« í佫 íδ σαá¡¿Γ∞ ó »α«ßΓ-
- αá¡ßΓóÑ ¬«ñá, úñÑ «¡¿ ¡Ñ íπñπΓ π¼Ñ¡∞ΦáΓ∞ «í½áßΓ∞, ñ«ßΓπ»¡πε ñ½∩
- ñ¿¡á¼¿τÑ߬¿σ ßΓ᫬«óδσ ñá¡¡δσ. è ßτáßΓ∞ε, φΓ« ¡Ñ ß½¿Φ¬«¼ Γαπñ¡«
- ßñѽáΓ∞.
-
- Éáßß¼«Γα¿¼ ß½ÑñπεΘπε »α«úαá¼¼π:
-
- ; äá¡¡á∩ »α«úαá¼¼á ¿¼ÑÑΓ ñóá µÑ½δσ »áαá¼ÑΓαá ¿ ó«ºóαáΘáÑΓ
- ; ßÑú¼Ñ¡Γ ¿ ß¼ÑΘÑ¡¿Ñ ΓѬßΓá ó ΓÑ½Ñ »α«úαá¼¼δ
- ;
-
- push sp
- mov bp,sp
- mov dx,offset show ; ¼ÑßΓ«, úñÑ ¡áσ«ñ¿Γß∩
- ; ßΓ᫬á
- mov ax,cs ; ßÑú¼Ñ¡Γ ¬«ñá á AX
- les di,[bp+6] ; ES:DI π¬áºδóáÑΓ ¡á
- ; »áαá¼ÑΓα
- mov ES:[DI],DX ; ß««íΘ¿Γ∞ « ¼ÑßΓÑ
- ; ßΓ᫬¿
- mov di,[bp+0ah] ; ß½ÑñπεΘ¿⌐ »áαá¼ÑΓα
- mov ES:[DI],AX ; ß««íΘ¿Γ∞ « ßÑú¼Ñ¡ΓÑ
- ; ¬«ñá
- jmp fini ; ¿ »ÑαÑ⌐Γ¿ ¡áºáñ
- DB 'çñÑß∞ ¼«ª¡« αẼÑßΓ¿Γ∞ ½εí«⌐ ΓѬßΓ'
- DB '¿ ó ½εí«¼ «íΩѼÑ, ºáóÑαΦáεΘ¿⌐ß∩'
- DB '½εíδ¼ ß¿¼ó«½«¼ (ºñÑß∞ φΓ« 0).',0
- fini pop bp
-
- ¥ΣΣÑ¬Γ ñá¡¡«⌐ »«ñ»α«úαá¼¼δ ¡Ñ߬«½∞¬« «Γ½¿τáÑΓß∩ «Γ Γ«ú«, ¬«-
- Γ«αδ⌐ ¼δ »αÑñ½áú὿ αá¡ÑÑ ñ½∩ »α«úαá¼¼¡«-¼«ñ¿Σ¿µ¿απѼ«ú« óßΓα«Ñ¡-
- ¡«ú« ¬«ñá. Äñ¡á¬«, óδ ¡Ñ ºá»¿ßδóáÑΓÑ ¬«ñ (σ«Γ∩ Æπαí« üÑ⌐ß¿¬ íπñÑΓ
- «íαáíáΓδóáΓ∞ »«½πτÑ¡¡δ⌐ ó αѺπ½∞ΓáΓÑ Σá⌐½ .COM, ¬á¬ ß«ßΓ«∩Θ¿⌐ µÑ-
- ½¿¬«¼ ¿º ¬«ñá). é¼ÑßΓ« φΓ«ú« óδ σαá¡¿ΓÑ ñá¡¡δÑ.
-
- Å«ñ»α«úαá¼¼á ó«ºóαáΘáÑΓ ΓѬπΘ¿⌐ áñαÑß σαá¡∩Θ¿σß∩ ó ¡Ñ⌐ ñá¡-
- ¡δσ. àß½¿ óδ σ«Γ¿ΓÑ º¡áΓ∞ ñ½¿¡π ñá¡¡δσ, óδ ¼«ªÑΓÑ ß«ºñáΓ∞ »α«ú-
- αá¼¼π, ¬«Γ«αá∩ ß««íΘáÑΓ ¿ «í φΓ«¼, σ«Γ∩ ñ½∩ φΓ«ú« »«ΓαÑíπÑΓß∩ »Ñ-
-
- TASM2 #3-5/䫬 = 226 =
-
- αÑñáóáΓ∞ ΓαÑΓ¿⌐ »áαá¼ÑΓα.
-
- Æá¬ ¬á¬ óδ º¡áÑΓÑ, úñÑ ¡áσ«ñ¿Γß∩ ΓѬßΓ ó »á¼∩Γ¿, ñ½∩ τΓÑ¡¿∩
- ßΓ᫬«óδσ ñá¡¡δσ ó ßΓ᫬«ó«Ñ »α«ßΓαá¡ßΓó« ¬áªñδ⌐ αáº, ¬«úñá óδ
- σ«Γ¿ΓÑ ¡á»ÑτáΓáΓ∞ ß««íΘÑ¡¿Ñ, óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬µ¿ε
- PEEK. è«úñá óδ ºáóÑαΦ¿ΓÑ »ÑτáΓ∞ ß««íΘÑ¡¿∩, óδ ¼«ªÑΓÑ «Γíα«ß¿Γ∞
- ¡Ñ¡πª¡πε ßΓ᫬π. àß½¿ «¡á óá¼ »«ΓαÑíπÑΓß∩ ß¡«óá, «¡á íπñÑΓ ñ«ß-
- Γπ»¡á ó ßÑú¼Ñ¡ΓÑ ¬«ñá.
-
- éδ ¼«ªÑΓÑ «»αÑñѽ¿Γ∞ τ¿ß½« ñ«ßΓπ»¡δσ ó φΓ«⌐ »«ñ»α«úαá¼¼Ñ
- íá⌐Γ. é τáßΓ¡«ßΓ¿, óδ ¼«ªÑΓÑ «»αÑñѽ¿Γ∞ τ¿ß½« íá⌐Γ, »αÑñΦÑßΓóπε-
- Θ¿σ ΓѬßΓπ. çá¼Ñ¡¿ΓÑ »α«ßΓ« óßÑ, ¬α«¼Ñ ¬«¡Ñτ¡«⌐ ¿¡ßΓαπ¬µ¿¿ óáΦ¿¼
- ß«íßΓóÑ¡¡δ¼ ¬«ñ«¼: Γᬠ¬á¬ óδ º¡áÑΓÑ, úñÑ ¡áσ«ñ¿Γß∩ »«ñ»α«úαá¼¼á
- ¿ ¬á¬ «¡á óѽ¿¬á, ñ½∩ ÑÑ »ÑαѺỿ߿ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ BLOAD. ùΓ«
- ¬áßáÑΓß∩ Σá⌐½á .EXE Æπαí« üÑ⌐ß¿¬á, Γ« ¡¿τÑú« ¼Ñ¡∩Γ∞ ¡Ñ »α¿ñÑΓß∩,
- σ«Γ∩ óß∩ »α«úαá¼¼á íπñÑΓ ΓÑ»Ñα∞ ñαπú«⌐.
-
- Äíδτ¡« φëà ¼ÑΓ«ñ ¡Ñ ∩ó½∩ÑΓß∩ ¡Ñ«íσ«ñ¿¼δ¼. æ«σαá¡Ñ¡¿Ñ ßΓ᫬
- ó »α«ßΓαá¡ßΓóÑ ¬«ñá ¿¡«úñá »«½Ñº¡«, ¡« ºá¼Ñ¡π µÑ½¿¬«¼ «ñ¡«⌐ »«ñ-
- »α«úαá¼¼δ ñαπú«⌐ ½πτΦÑ «ßπΘÑßΓó½∩Γ∞ ß »«¼«Θ∞ε CALL ABSOLUTE.
-
-
-
- TASM2 #3-5/䫬 = 227 =
-
- Ä»ÑαáΓ«α CALL ABSOLUTE
- -----------------------------------------------------------------
-
- Å« ¡Ñ¬«Γ«αδ¼ »α¿τ¿¡á¼ ó απ¬«ó«ñßΓóÑ »« Æπαí« üÑ⌐ß¿¬π «í «»Ñ-
- αáΓ«αÑ CALL ABSOLUTE αáß߬áºδóáÑΓß∩ ñ«ó«½∞¡« ¬αáΓ¬«. ÅÑαóá∩ ¿º
- ¡¿σ ß«ßΓ«¿Γ ó Γ«¼, τΓ« Æπαí« üÑ⌐ß¿¬ ¡Ñ ¿¼ÑÑΓ ßπΘÑßΓóÑ¡¡«ú« π»αáó-
- ½Ñ¡¿∩ Γᬿ¼¿ »«ñ»α«úαἼἿ. é«-óΓ«αδσ, Γá¬¿Ñ »«ñ»α«úαá¼¼δ «íδτ¡«
- ¿ß»«½∞ºπεΓß∩, »«Γ«¼π τΓ« «¡¿ í뫨 ¡á»¿ßá¡δ ñ½∩ ¿¡ΓÑα»αÑΓáΓ«αá
- üÑ⌐ß¿¬á. Æπαí« üÑ⌐ß¿¬ ¡áßΓ«½∞¬« ßπΘÑßΓóÑ¡¡« «Γ½¿τáÑΓß∩ «Γ ¿¡ΓÑ-
- α»αÑΓáΓ«αá üÑ⌐ß¿¬á, τΓ« Γá¬¿Ñ »α«úαá¼¼δ ¼«úπΓ ó ¡Ñ¼ ¡Ñ αáí«ΓáΓ∞.
- é-ΓαÑΓ∞¿σ, íπñπΘ¿Ñ «»Ñαᵿ«¡¡δÑ ß¿ßΓÑ¼δ ¼«úπΓ ¡Ñ ñ«»π߬áΓ∞ ¿ß-
- »«½∞º«óá¡¿∩ »«ñ»α«úαá¼¼ CALL ABSOLUTE. é τáßΓ¡«ßΓ¿, «»Ñαᵿ«¡¡δÑ
- ß¿ßΓѼδ, úñÑ τÑΓ¬« αẽ¿τáÑΓß∩ »α«ßΓαá¡ßΓó« ¬«ñá ¿ ñá¡¡δσ, ¼«úπΓ
- ¡Ñ »«ºó«½∩Γ∞ »α«µÑßß«απ óδ»«½¡∩Γ∞ ¿¡ßΓαπ¬µ¿¿, ¡áσ«ñ∩Θ¿Ñß∩ ó
- »α«ßΓαá¡ßΓóÑ ñá¡¡δσ. é-τÑΓóÑαΓδσ, »«ñ»α«úαá¼¼δ, óδºδóáѼδÑ ß »«-
- ¼«Θ∞ε CALL ABSOLUTE, ¼«úπΓ ó«ß»α¿¡¿¼áΓ∞ Γ«½∞¬« »α«ßΓδÑ µÑ½«τ¿ß-
- ½Ñ¡¡δÑ »áαá¼ÑΓαδ-»ÑαѼѡ¡δÑ. ¥Γ« ¡Ñ Γá¬«Ñ πª ßÑα∞Ѻ¡«Ñ «úαá¡¿τÑ-
- ¡¿Ñ, ¬á¬ ¬áªÑΓß∩, óÑß∞ »α«ßΓδÑ µÑ½δÑ »ÑαѼѡ¡δÑ ¼«úπΓ ß«ñÑαªáΓ∞
- ßÑú¼Ñ¡Γ ¿ ß¼ÑΘÑ¡¿Ñ »ÑαѼѡ¡«⌐ ½εí«ú« Γ¿»á. Äñ¡á¬«, »α¿ φΓ«¼ »ÑαÑ-
- ñáτá »áαá¼ÑΓα«ó ¼«ªÑΓ »«ΓαÑí«óáΓ∞ ¡Ñ߬«½∞¬« í«½∞ΦÑ óαѼѡ¿.
-
- Å« φΓ«⌐ »α¿τ¿¡Ñ ¼δ íπñѼ »αÑñ»«½áúáΓ∞, τΓ« óδ ¿ß»«½∞ºπÑΓÑ
- «»Ñαᵿ«¡¡πε ß¿ßΓѼπ MS-DOS óÑαß¿¿ 2.0 ¿½¿ ßΓáαΦÑ ¿ τΓ« φΓá «»Ñ-
- αᵿ«¡¡á∩ ß¿ßΓѼá ñ«»π߬áÑΓ óδ»«½¡Ñ¡¿Ñ »α«µÑßß«α«¼ ¿¡ßΓαπ¬µ¿⌐,
- ¡áσ«ñ∩Θ¿σß∩ ó ½εí«¼ ¼ÑßΓÑ »á¼∩Γ¿.
-
-
-
-
- TASM2 #3-5/䫬 = 228 =
-
- ÄíαáΘÑ¡¿Ñ CALL ABSOLUTE ¬ Σ¿¬ß¿α«óá¡¡δ¼ áñαÑßá¼ »á¼∩Γ¿
- -----------------------------------------------------------------
-
- àß½¿ π óáß ¿¼ÑÑΓß∩ ßѼÑ⌐ßΓó« »α«úαá¼¼, ¬«Γ«αδÑ ß«ó¼ÑßΓ¡« ¿ß-
- »«½∞ºπεΓ «ñ¿¡ ¿ ëà ªÑ ¡áí«α »«ñ»α«úαá¼¼, Γ« ¿¼ÑÑΓ ß¼δß½ αẼÑß-
- Γ¿Γ∞ φΓ¿ »«ñ»α«úαá¼¼δ »« Σ¿¬ß¿α«óá¡¡«¼π áñαÑßπ »á¼∩Γ¿. Æπαí« üÑ⌐-
- ß¿¬ »«ºó«½∩ÑΓ óá¼ ñ½∩ φΓ«⌐ µÑ½¿ ºáαѺÑαó¿α«óáΓ∞ áñαÑßá »á¼∩Γ¿ (ó
- «í½áßΓ¿ ßΓáαΦ¿σ áñαÑß«ó) ß »«¼«Θ∞ε ¬«¼á¡ñδ MEMSET.
-
- é¼ÑßΓÑ ß ¬«¼á¡ñ«⌐ MEMSET τáßΓ« ¿ß»«½∞ºπÑΓß∩ ENDMEM. ENDMEM
- ó«ºóαáΓ¿Γ ñ½¿¡¡«Ñ µÑ½«Ñ, »αÑñßΓáó½∩εΘÑÑ ß«í«⌐ »«ß½Ññ¡εε ∩τÑ⌐¬π
- »á¼∩Γ¿, ¬«Γ«απε ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ ߬«¼»¿½¿α«óá¡¡á∩ »α«úαá¼¼á
- Æπαí« üÑ⌐ß¿¬á. Å«ñ»α«úαá¼¼δ «íδτ¡« αẼÑΘáεΓß∩ ó ßΓáαΦ¿σ áñαÑßáσ
- »á¼∩Γ¿ »« ¡Ñ¬«Γ«α«¼π Σ¿¬ß¿α«óá¡¡«¼π áñαÑßπ, ¡áτ¿¡á∩ ß áñαÑßá,
- αáß»«½«ªÑ¡¡«ú« ¡¿ªÑ φΓ«ú« »αÑñѽá.
-
- àß½¿ π óáß ÑßΓ∞ Γᬫ⌐ ¡áí«α »«ñ»α«úαá¼¼, Γ« óδºδóáΓ∞ ¿σ ¡πª-
- ¡« íπñÑΓ ß »«¼«Θ∞ε ó맮óá CALL ABSOLUTE. ùΓ«íδ »«¼ÑßΓ¿Γ∞ »«ñ»α«ú-
- αá¼¼δ ó ßΓáαΦ¿Ñ áñαÑßá »á¼∩Γ¿, ¿ß»«½∞ºπ⌐ΓÑ ¬«¼á¡ñπ BLOAD. ùΓ«íδ
- ºáñáΓ∞ áñαÑß ßÑú¼Ñ¡Γá, »« ¬«Γ«α«¼π ñ«½ª¡á ºáúαπªáΓ∞ß∩ »«ñ»α«úαá¼-
- ¼á, ¿ß»«½∞ºπ⌐ΓÑ «»αÑñѽѡ¿Ñ DEF SEG ¿ ∩ó¡« π¬áª¿ΓÑ áñαÑß ß¼ÑΘÑ-
- ¡¿∩, »« ¬«Γ«α«¼π ÑÑ ¡πª¡« ºáúαπº¿Γ∞.
-
- è«úñá óδ ß«ºñáÑΓÑ φΓ¿ »«ñ»α«úαá¼¼δ ß »«¼«Θ∞ε Æπαí« ÇßßѼí½Ñ-
- αá, ¡πª¡« ß«í½εñáΓ∞ ß½ÑñπεΘ¿Ñ »αáó¿½á:
-
- 1. àß½¿ óáΦá »α«úαá¼¼á ¡Ñ »αÑñ¡áº¡áτÑ¡á ñ½∩ ºá»πß¬á »« «ñ-
- ¡«¼π (¿ Γ«½∞¬« »« «ñ¡«¼π) áñαÑßπ, óßÑ »ÑαÑñáτ¿ π»αáó½Ñ-
- ¡¿∩ ó »α«úαá¼¼Ñ (JMP ¿ CALL) ñ«½ª¡δ íδΓ∞ »«½¡«ßΓ∞ε »ÑαÑ-
- ¼ÑΘáѼδ. (Å«½¡«Ñ «íßπªñÑ¡¿Ñ »ÑαѼÑΘáѼ«ú« ¬«ñá óδσ«ñ¿Γ
- ºá αἬ¿ ñá¡¡«⌐ ú½áóδ.)
-
- 2. àß½¿ óáΦá »α«úαá¼¼á »αÑñ¡áº¡áτÑ¡á ñ½∩ ºá»π߬á Γ«½∞¬« »«
- «ñ¡«¼π áñαÑßπ, óδ ñ«½ª¡δ π¬áºáΓ∞ φëà áñαÑß ó ñ¿αÑ¬Γ¿óÑ
- ORG ¿ßσ«ñ¡«ú« ¬«ñá ÇßßѼí½Ñαá.
-
-
-
-
- TASM2 #3-5/䫬 = 229 =
-
- ÄíαáΘÑ¡¿Ñ CALL ABSOLUTE ¬ ñαπú¿¼ áñαÑßá¼ »á¼∩Γ¿
- -----------------------------------------------------------------
-
- Æπαí« üÑ⌐ß¿¬ »«ºó«½¿Γ óá¼ ¿ß»«½∞º«óáΓ∞ «íαáΘÑ¡¿Ñ CALL ABSO-
- LUTE ¬ ∩τÑ⌐¬á¼ »á¼∩Γ¿, ¬«Γ«αδÑ »α¿ ¬áªñ«¼ ºá»π᪥ »α«úαá¼¼δ ¼«úπΓ
- íδΓ∞ αẽ¿τ¡δ¼¿. Æ¿»¿τ¡δ⌐ ß»«ß«í ßñѽáΓ∞ φΓ« ºá¬½ετáÑΓß∩ ó ºáú-
- απº¬Ñ »«ñ»α«úαá¼¼δ ÇßßѼí½Ñαá ó ¼áßß¿ó, αáß»«½«ªÑ¡¡δ⌐ ó¡Ñ «íδτ¡«-
- ú« »α«ßΓαá¡ßΓóá ñá¡¡δσ.
-
- Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
-
- DEFINT A-Z
- $DYNAMIC '¼áßß¿óδ íπñπΓ ñ¿¡á¼¿τÑ߬¿¼¿
- DIM ROUTINEARRAY(10000) 'óδñѽѡ« 20002 íá⌐Γ
- 'ºñÑß∞ ß«ñÑনΓß∩ αẽ¿τ¡δ⌐ ¬«ñ
- WHERESEG%=VARSEG(ROUTINEARRAY(0)) 'áñαÑß ßÑú¼Ñ¡Γá
- WHEREOFFSET%=VARPTR(ROUTINEARRAY(0)) 'áñαÑß ß¼ÑΘÑ¡¿∩
- DEF SEG=WHERESEG% 'ºáñáΓ∞ ßÑú¼Ñ¡Γ »« π¼«½τá¡¿ε
- BLOAD"COMFILE",WHEREOFFSET% 'ßτ¿ΓáΓ∞ »α«úαá¼¼π
- CALL ABSOLUTE WHEREOFFSET%(PARAMETER%) 'óδºóáΓ∞ »«ñ»α«úαá¼¼π
- DEF SEG 'óÑα¡πΓ∞ß∩ ¬ º¡áτÑ¡¿ε »«
- 'π¼«½τá¡¿ε
-
- àß½¿ óδ σ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ ¡Ñ߬«½∞¬« »α«úαá¼¼, Γ« ¼«ª¡« »«
- «τÑαÑñ¿ ºáúαπªáΓ∞ ¬áªñπε ¿º ¡¿σ ó «ñ¿¡ ¿ ëà ªÑ ¼áßß¿ó. ìᬫ¡Ñµ,
- Ñß½¿ óδ σ«Γ¿ΓÑ ¿º¼Ñ¡¿Γ∞ τáßΓ∞ ¼áßß¿óá, φΓ« ¼«ª¡« ßñѽáΓ∞, »α«ßΓ«
- ¿º¼Ñ¡¿ó º¡áτÑ¡¿∩ óδíαá¡¡δσ φ½Ñ¼Ñ¡Γ«ó ¼áßß¿óá.
-
- èᬠóδ ¼«ªÑΓÑ ó¿ñÑΓ∞, »«ñ»α«úαá¼¼δ, ß«ºñá¡¡δÑ ñ½∩ ó맮óá ß
- »«¼«Θ∞ε CALL ABSOLUTE, ¼«ª¡« º¡áτ¿Γѽ∞¡« »α«ΘÑ ¡áσ«ñ¿Γ∞ ¿ ¼«ñ¿Σ¿-
- µ¿α«óáΓ∞, τѼ ΓÑ, ñ½∩ ¬«Γ«αδσ ¿ß»«½∞ºπÑΓß∩ ñ¿αÑ¬Γ¿óá $INLINE.
- Æαπñ¡«ßΓ∞ ß«ßΓ«¿Γ Γ«½∞¬« ó Γ«¼, τΓ« Γá¬¿Ñ »«ñ»α«úαá¼¼δ ñ«½ª¡δ
- íδΓ∞ »«½¡«ßΓ∞ε »ÑαѼÑΘáÑ¼δ¼¿. ä½∩ ¡Ñí«½∞Φ¿σ »«ñ»α«úαá¼¼ φΓ« ¼«ªÑΓ
- ¡Ñ »αÑñßΓáó½∩Γ∞ ß«í«⌐ »α«í½Ñ¼π. ä½∩ ß½«ª¡δσ ªÑ »«ñ»α«úαá¼¼ »¿ßáΓ∞
- »«½¡«ßΓ∞ε »ÑαѼÑΘáѼδ⌐ ¬«ñ ¼«ªÑΓ «¬áºáΓ∞ß∩ ñѽ«¼ ¡Ñ»α«ßΓδ¼.
-
- éδ ¼«ªÑΓÑ Γá¬ªÑ ¿ß»«½∞º«óáΓ∞ BLOAD ñ½∩ ºáúαπº¬¿ »«ñ»α«úαá¼¼
- ó ßΓ᫬«óδÑ »ÑαѼѡ¡δÑ. çñÑß∞ ¡πª¡« ß«í½εñáΓ∞ «ß«íπε «ßë᫪-
- ¡«ßΓ∞. àß½¿ óδ »δΓáÑΓÑß∞ ºáúαπº¿Γ∞ »α«úαá¼¼π, ñ½¿¡á ¬«Γ«α«⌐ »αÑ-
- óδΦáÑΓ ñ½¿¡π ßΓ᫬«ó«⌐ »ÑαѼѡ¡«⌐, Γ« óδ ºá»«αΓ¿ΓÑ ¬á¬πε-Γ« ñαπ-
- úπε ßΓ᫬π. àß½¿ φΓá ßΓα«¬á ¼«ñ¿Σ¿µ¿απÑΓß∩, τáßΓ∞ óáΦÑ⌐ ºáúαπªÑ¡-
- ¡«⌐ »α«úαá¼¼δ Γá¬ªÑ ¼«ªÑΓ ¼«ñ¿Σ¿µ¿α«óáΓ∞ß∩.
-
- æΓ᫬«óδÑ »ÑαѼѡ¡δÑ Γá¬ªÑ ¼«ª¡« »ÑαѼÑΘáΓ∞. äáªÑ Ñß½¿ »«ñ-
- »α«úαá¼¼á ºáúαπªÑ¡á ó ßΓ᫬𠬫ααÑ¬Γ¡«, óá¼ ß½ÑñπÑΓ »«ºáí«Γ¿Γ∞ß∩
- «í ¿ß»«½∞º«óá¡¿¿ VARSEG ¿ VARPTR ñ½∩ Γ«ú«, τΓ«íδ πßΓá¡«ó¿Γ∞ áñαÑß
-
- TASM2 #3-5/䫬 = 230 =
-
- ßΓ᫬¿ ¡Ñ»«ßαÑñßΓóÑ¡¡« »ÑαÑñ »«»δΓ¬«⌐ ó맮óá φΓ«⌐ »«ñ»α«úαá¼¼δ.
-
- æΓ᫬¿ Æπαí« üÑ⌐ß¿¬á σαá¡∩Γß∩ ¡Ñ Γá¬, ¬á¬ τ¿ß½Ñ¡¡δÑ »ÑαѼѡ-
- ¡δÑ. àß½¿ óδ óδ»«½¡∩ÑΓÑ «»ÑαáΓ«α VARPTR(A%), Γ« »«½πτ¿ΓÑ áñαÑß
- µÑ½«⌐ »ÑαѼѡ¡«⌐ A%. VARPTR(A$) ñáßΓ áñαÑß «»¿ßáΓѽ∩ ßΓ᫬¿ ñ½∩
- A$. ƒτÑ⌐¬á »á¼∩Γ¿, «ΓßΓ«∩Θá∩ ¡á 2 íá⌐Γá, íπñÑΓ ß«ñÑαªáΓ∞ ñÑ⌐ßΓó¿-
- Γѽ∞¡δ⌐ áñαÑß ßΓ᫬¿ ó ßΓ᫬«ó«¼ »α«ßΓαá¡ßΓóÑ. ùΓ«íδ »«½πτ¿Γ∞ Γ«Γ
- ªÑ αѺπ½∞ΓáΓ, τΓ« ¿ ß VARPTR(A%), óá¼ »α¿Φ½«ß∞ íδ ßñѽáΓ∞ τΓ«-Γ«
- óα«ñÑ ß½ÑñπεΘÑú«:
-
- A%=VARPTR(A$)
- A%=A%+2
- STRINGADDRESS=CVI(CHR$(PEEK(A%)+CHR$(PEEK(A%+1)))
-
- ÉẼÑΘÑ¡¿Ñ »«ñ»α«úαá¼¼ ÇßßѼí½Ñαá ó ß¿¼ó«½∞¡δσ ßΓ᫬áσ »«½∞-
- ºπÑΓß∩ »«»π½∩α¡«ßΓ∞ε, óÑñ∞ ¡á ßἫ¼ ñÑ½Ñ ÑßΓ∞ «»áß¡«ßΓ∞, τΓ« µÑ-
- ½«τ¿ß½Ñ¡¡δÑ ¼áßß¿óδ ¼«úπΓ íδΓ∞ ¿¡ñѬ߿α«óá¡δ ¿ ßΓÑαΓδ. ì« ñ½∩
- »«ñ»α«úαá¼¼, óδºδóáѼδσ ß »«¼«Θ∞ε CALL ABSOLUTE, ½πτΦÑ ¿ß»«½∞º«-
- óáΓ∞ µÑ½«τ¿ß½Ñ¡¡δÑ ¼áßß¿óδ, τΓ« »«¼«ªÑΓ ¿ºíѪáΓ∞ Γαπñ¡«ßΓÑ⌐ »α¿
- ñ«ßΓπ»Ñ ¬ »«ßΓ«∩¡¡« »ÑαѼÑΘáÑ¼δ¼ ßΓ᫬«óδ¼ ñá¡¡δ¼.
-
- àß½¿ óδ σ«Γ¿ΓÑ ¿ºíѪáΓ∞ ¿ß»«½∞º«óá¡¿∩ BLOAD, Γ« ¼«ª¡« ΓᬪÑ
- ºáúαπº¿Γ∞ Σá⌐½δ .COM ó ßΓ᫬¿ ß »«¼«Θ∞ε óó«ñá-óδó«ñá ñó«¿τ¡«ú«
- Σá⌐½á, Γ« ÑßΓ∞, «Γ¬αδΓ¿∩ Σá⌐½á .COM, ¬á¬ ñó«¿τ¡«ú« Σá⌐½á, ¿ ßτ¿-
- Γδóá¡¿∩ ó ßΓ᫬𠬫ααÑ¬Γ¡«ú« τ¿ß½á íá⌐Γ. Æ«Γ ªÑ »«ñσ«ñ ¼«ª¡« ¿ß-
- »«½∞º«óáΓ∞ ñ½∩ ßτ¿Γδóá¡¿∩ ñá¡¡δσ ó µÑ½«τ¿ß½Ñ¡¡δ⌐ ¼áßß¿ó. Äñ¡á¬«
- BLOAD óδ»«½¡∩ÑΓß∩ íδßΓαÑÑ ¿ »«½∞º«óáΓ∞ß∩ φΓ«⌐ ¬«¼á¡ñ«⌐ »α«ΘÑ.
-
-
-
-
- TASM2 #3-5/䫬 = 231 =
-
- äαπú¿Ñ »α«í½Ñ¼δ, 󫺡¿¬áεΘ¿Ñ »α¿ ¿ß»«½∞º«óá¡¿¿ CALL ABSOLUTE
- -----------------------------------------------------------------
-
- æτ¿Γδóá¡¿Ñ ¬«ñá ß ñ¿ß¬á ß »«¼«Θ∞ε CALL ABSOLUTE ßó∩ºá¡« ß
- ¡Ñ߬«½∞¬¿¼¿ ßπΘÑßΓóÑ¡¡δ¼¿ ¡Ññ«ßΓáΓ¬á¼¿, ¡á¿í«½ÑÑ ßπΘÑßΓóÑ¡¡δ⌐ ¿º
- ¬«Γ«αδσ «Γ¡«ß¿Γß∩ ¬ ΓαÑí«óá¡¿ε »ÑαѼÑßΓ¿¼«ßΓ¿ (¬á¬ ¼δ πªÑ «Γ¼Ñτá-
- ½¿ αá¡ÑÑ).
-
- äαπú¿Ñ ßÑα∞Ѻ¡δÑ »α«í½Ñ¼δ ºá¬½ετáεΓß∩ ó Γ«¼, »«ñ»α«úαá¼¼δ
- ñ«½ª¡δ ßτ¿ΓδóáΓ∞ß∩ ß ñ¿ß¬á «Γñѽ∞¡« «Γ «ß¡«ó¡«⌐ »α«úαá¼¼δ (»α¿
- φΓ«¼ »«∩ó½∩εΓß∩ ñ«»«½¡¿Γѽ∞¡δÑ ó«º¼«ª¡«ßΓ¿ 󫺡¿¬¡«óÑ¡¿∩ «Φ¿í«¬).
- ÆαÑíπѼδ⌐ ¬«ñ ¼«ªÑΓ «ΓßπΓßΓó«óáΓ∞ ¡á ñ¿ß¬Ñ, ¿½¿ ¼«ªÑΓ íδΓ∞ »«ó-
- αѪñÑ¡ (ºá»«ατÑ¡).
-
- ÆαÑΓ∞∩ »α«í½Ñ¼á ß«ßΓ«¿Γ ó Γ«¼, τΓ« óαѼ∩, ¡Ñ«íσ«ñ¿¼«Ñ ñ½∩
- ßτ¿Γδóá¡¿Ñ ¬«ñá ß ñ¿ß¬á, ¼«ªÑΓ ßóÑßΓ¿ ¡á ¡ÑΓ ßá¼π »α¿τ¿¡π ¿ß»«½∞-
- º«óá¡¿Ñ »«ñ»α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ ó¼ÑßΓ« Æπαí« üÑ⌐ß¿¬á.
-
- é«»αѬ¿ φΓ¿¼ ¬á¼¡∩¼ »αÑΓ¬¡«óÑ¡¿∩ ú¿í¬«ßΓ∞, ¬«Γ«απε ¼«ª¡« »«-
- ½πτ¿Γ∞ »α¿ ßτ¿Γδóá¡¿¿ αẽ¿τ¡δσ »«ñ»α«úαá¼¼ ¿½¿ ¡á½¿τ¿Ñ ¬«ñá, ¬«-
- Γ«αδ⌐ ¼«ª¡« ¼«ñ¿Σ¿µ¿α«óáΓ∞ »«ñ π»αáó½Ñ¡¿Ñ¼ »α«úαá¼¼δ, á ΓᬪÑ
- π¼Ñ¡∞ΦÑ¡¿Ñ «íΩÑ¼á ¬«ñá, ¬«Γ«αδ⌐ ñ«½ªÑ¡ »α¿ßπΓßΓó«óáΓ∞ ó »á¼∩Γ¿ -
- φΓ« ñ«ßΓáΓ«τ¡« óÑ߬¿Ñ ñ«ó«ñδ ó »«½∞ºπ »α¿¼Ñ¡Ñ¡¿∩ ¬«¡ßΓαπ¬µ¿¿ CALL
- ABSOLUTE.
-
- CALL INTERRUPT
- -----------------------------------------------------------------
-
- ÆαÑΓ¿⌐ ¿ »«ß½Ññ¡¿⌐ ß»«ß«í «íαáΘÑ¡¿∩ ¬ »«ñ»α«úαἼἠ¡á Çß-
- ßѼí½ÑαÑ ¿º Æπαí« üÑ⌐ß¿¬á - φΓ« 󫺼«ª¡« ßá¼δ⌐ ß½«ª¡δ⌐ ¼ÑΓ«ñ ¿ß-
- »«½∞º«óá¡¿∩ ÇßßѼí½Ñαá ¿ «ñ¡«óαѼѡ¡« ßá¼δ⌐ »α«ßΓ«⌐ ß»«ß«í Ñú«
- ¿ß»«½∞º«óá¡¿∩ ¿ºíѪáΓ∞.
-
- ü«½∞Φ¿¡ßΓó« »α«úαá¼¼¿ßΓ«ó ¿ß»«½∞ºπεΓ CALL INTERRUPT ñ½∩ ñ«ß-
- Γπ»á ¬ «íδτ¡δ¼ «íß½πª¿óáεΘ¿σ ßαÑñßΓó MS-DOS. é φΓ«⌐ ß¿Γπᵿ¿ «í
- áßßÑ¼í½¿α«óá¡¿¿ ¼«ª¡« ¡Ñ íÑß»«¬«¿Γ∞ß∩. ì« ¡Ñ«íσ«ñ¿¼« »«¼¡¿Γ∞ ß½Ñ-
- ñπεΘÑÑ:
-
- -----------------------------------------
- ìáºóá¡¿Ñ ÉÑú¿ßΓα
- -----------------------------------------
- REG0 ö½áú¿
- REG1 AX
- REG2 BX
- REG3 CX
-
- TASM2 #3-5/䫬 = 232 =
-
- REG4 DX
- REG5 SI
- REG6 DI
- REG7 BP
- REG8 DS
- REG9 ES
- -----------------------------------------
-
- ùΓ«íδ ºáñáΓ∞ º¡áτÑ¡¿Ñ αÑú¿ßΓαá, ¿ß»«½∞ºπ⌐ΓÑ «»ÑαáΓ«α REG:
-
- REG 3,&H0F01
-
- ¥Γ«Γ «»ÑαáΓ«α πßΓá¡«ó¿Γ αÑú¿ßΓα CX ó ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ º¡á-
- τÑ¡¿Ñ 0F01. ÉÑú¿ßΓα CH »«½πτ¿Γ ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ º¡áτÑ¡¿Ñ 0F, á
- αÑú¿ßΓα CL - 01.
-
- ùΓ«íδ ßτ¿ΓáΓ∞ º¡áτÑ¡¿Ñ αÑú¿ßΓαá, ¿ß»«½∞ºπ⌐ΓÑ Σπ¡¬µ¿ε REG:
-
- A%=REG(3)
-
- ¥Γ«Γ «»ÑαáΓ«α »α¿ßó«¿Γ »ÑαѼѡ¡«⌐ A% ΓѬπΘÑÑ º¡áτÑ¡¿Ñ αÑ-
- ú¿ßΓαá CX.
-
- æ½ÑñπεΘ¿⌐ »α¿¼Ñα »α¿óÑñÑΓ ¬ «íαáΓ¡«⌐ »α«¬απ⪥ ¿º«íαáªÑ¡¿∩
- ¡á φ¬αá¡Ñ (ß« ßΓ᫬¿ 1 ñ« ßΓ᫬¿ 24):
-
- REG 3,0 'ßΓ᫬á 0, »«º¿µ¿∩ 0 ("óÑαΦ¿¡á")
- REG 4,&H175F 'ßΓ᫬á 23, »«º¿µ¿∩ 79 ("ñ¡«")
- REG 2,&H70 'µóÑΓ 7,0
- REG 1,&H0701 'Σπ¡¬µ¿∩ BIOS 7, ßñó¿¡πΓ∞ ¡á 1 ßΓ᫬π
- CALL INTERRUPT &H10 'ó¿ñÑ«»αÑαδóá¡¿Ñ 10h
-
- ìỿßáΓ∞ φ¬ó¿óá½Ñ¡Γ¡πε »α«úαá¼¼π ¡á ÇßßѼí½ÑαÑ ú«αáºñ« Γαπñ-
- ¡ÑÑ, ¬ Γ«¼π ªÑ «¡á ½πτΦÑ αáí«ΓáΓ∞ ¡Ñ íπñÑΓ.
-
- éß∩ »α«µÑñπαá «íδτ¡« «τÑ¡∞ »α«ßΓá. Äñ¡á¬« í«½ÑÑ ¬óá½¿Σ¿µ¿α«-
- óá¡¡δÑ »α«úαá¼¼¿ßΓδ »αÑαδóá¡¿∩ ñ½∩ ñαπú¿σ µÑ½Ñ⌐, á ¡Ñ Γ«½∞¬« ñ½∩
- ó맮óá «íδτ¡δσ «íß½πª¿óáεΘ¿σ ßαÑñßΓó MS-DOS.
-
- ÅαÑαδóá¡¿∩ τáßΓ« ¿ß»«½∞ºπεΓß∩ ñ½∩ π»αáó½Ñ¡¿∩ πßΓα«⌐ßΓóἿ
- (¡á»α¿¼Ñα, ñáΓτ¿¬á¼¿ ¿º¼ÑαÑ¡¿∩ ΓѼ»ÑαáΓπαδ, πñá½Ñ¡¡δ¼¿ ºá»¿ßδóáε-
- Θ¿¼¿ πßΓα«⌐ßΓóἿ, Γá⌐¼ÑαἿ ¿ Γ.ñ.). ùΓ«íδ ¿ß»«½∞º«óáΓ∞ ΓᬫÑ
- »αÑαδóá¡¿Ñ, óδ ñ«½ª¡δ ¡á⌐Γ¿ ¡Ñ¿ß»«½∞ºπѼ«Ñ »αÑαδóá¡¿Ñ. (î¡«ú¿Ñ ¿º
- ¡¿σ ¿ß»«½∞ºπεΓ MS-DOS, á ñαπú¿Ñ ¼«úπΓ ¿ß»«½∞º«óáΓ∞ Γá¬¿Ñ πßΓα«⌐ß-
- Γóá, ¬á¬ ¡á¬«»¿Γѽ¿ ¡á ¼áú¡¿Γ¡«⌐ ½Ñ¡ΓÑ ¿½¿ πßΓα«⌐ßΓó« »á¼∩Γ¿ Γ¿»á
- "∩Θ¿¬á üÑα¡π½½¿").
-
- TASM2 #3-5/䫬 = 233 =
-
-
- é »α«úαá¼¼Ñ Æπαí« üÑ⌐ß¿¬á ¡πª¡« ßñѽáΓ∞ Γá¬, τΓ«íδ óÑ¬Γ«α
- »αÑαδóá¡¿⌐ π¬áºδóá½ ¡á »α«úαá¼¼π, ¡á»¿ßá¡¡πε ¡á Æπαí« ÇßßѼí½ÑαÑ.
- èᬠ«Γ¼ÑτÑ¡« ó απ¬«ó«ñßΓóÑ »« Æπαí« üÑ⌐ß¿¬π, »«ñ»α«úαá¼¼á «íß½π-
- ª¿óá¡¿∩ »αÑαδóá¡¿∩ ñ«½ª¡á ß«σαá¡∩Γ∞ º¡áτÑ¡¿∩ αÑú¿ßΓα«ó SS ¿ SP
- (½εí«⌐ ñαπú«⌐ αÑú¿ßΓα ¼«ªÑΓ ¼«ñ¿Σ¿µ¿α«óáΓ∞ß∩). é ¬«¡µÑ »«ñ»α«ú-
- αá¼¼δ π»αáó½Ñ¡¿Ñ τÑαѺ ¿¡ßΓαπ¬µ¿ε IRET »ÑαÑñáÑΓß∩ «íαáΓ¡« Æπαí«
- üÑ⌐ß¿¬π.
-
- ä½∩ «»αÑñѽѡ¿∩ áñαÑßá »«ñ»α«úαá¼¼δ ¿ ºá¡ÑßÑ¡¿∩ Ñú« ó óÑ¬Γ«α
- »αÑαδóá¡¿⌐ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ πªÑ «»¿ßá¡¡δÑ óδΦÑ ¼ÑΓ«ñδ, ¡« ½πτΦÑ
- »«¼ÑΘáΓ∞ »«ñ»α«úαá¼¼δ «íß½πª¿óá¡¿∩ »αÑαδóá¡¿⌐ ó ßΓáαΦ¿Ñ áñαÑßá
- »á¼∩Γ¿ ¿½¿ ºáúαπªáΓ∞ ¿σ (ß »«¼«Θ∞ε BLOAD), ¬á¬ »«ñ»α«úαá¼¼δ ñ½∩
- CALL ABSOLUTE.
-
- Å«ñ»α«úαá¼¼δ «íß½πª¿óá¡¿∩ »αÑαδóá¡¿⌐, ó¬½ετÑ¡¡δÑ ó óáΦπ
- »α«úαá¼¼π ß »«¼«Θ∞ε ¬«¼á¡ñδ $INLINE, ñ«½ª¡δ íδΓ∞ ¬á¬¿¼-Γ« «íαẫ¼
- ½«¬á½¿º«óá¡δ. Å«ñ»α«úαá¼¼δ, ºáúαπªÑ¡¡δÑ ß »«¼«Θ∞ε BLOAD ¿ ºá»¿-
- ßá¡¡δÑ ó µÑ½«τ¿ß½Ñ¡¡δÑ ¼áßß¿óδ ñ«½ª¡δ ¡áσ«ñ¿Γ∞ß∩ »« «»αÑñѽѡ¡«¼π
- áñαÑßπ, ¡« «¡ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ñ«½ªÑ¡ íδΓ∞ ¿ºóÑßΓÑ¡. Äñ¡á¬«, αáº-
- ¼ÑΘÑ¡¿Ñ «íαáí«Γτ¿¬«ó »αÑαδóá¡¿⌐ ó Γᬿσ ¼áßß¿óáσ «º¡áτáÑΓ, τΓ«
- ¬«ñ »«ñ»α«úαá¼¼δ «íß½πª¿óá¡¿∩ »αÑαδóá¡¿∩ ñ«½ªÑ¡ íδΓ∞ »«½¡«ßΓ∞ε
- »ÑαѼÑßΓ¿¼δ¼.
-
- Å« φΓ«⌐ »α¿τ¿¡Ñ »«ñ»α«úαá¼¼δ «íß½πª¿óá¡¿∩ »αÑαδóá¡¿⌐ »«¼ÑΘá-
- εΓß∩ «íδτ¡« ó Σ¿¬ß¿α«óá¡¡δÑ áñαÑßá (ßΓáαΦ¿Ñ áñαÑßá »á¼∩Γ¿). àß½¿
- óδ αÑΦ¿½¿ ¿ß»«½∞º«óáΓ∞ Γᬫ⌐ »«ñσ«ñ, πíÑñ¿ΓÑß∞, τΓ« óδ ¡Ñ ºáí뫨
- ó¬½ετ¿Γ∞ ó ¿ßσ«ñ¡δ⌐ ¬«ñ Æπαí« ÇßßѼí½Ñαá ¿¡ßΓαπ¬µ¿ε ORG.
-
-
-
-
- TASM2 #3-5/䫬 = 234 =
-
- Åα¿¼Ñα »α«úαá¼¼δ
- -----------------------------------------------------------------
-
- FILLIT2$ = CHR$(&HFC)+CHR$(&HF3)+CHR$(&HAB)+CHR(&HCB)
- ' cld rep stow ret
- DIM a%(100) 'µÑ½«τ¿ß½Ñ¡¡δ⌐ ¼áßß¿ó ß ¡π½Ñó묨
- 'φ½Ñ¼Ñ¡ΓἿ
- WHERE%=VARPTR(FILLIT2$) 'ó φΓ«⌐ ∩τÑ⌐¬Ñ σαá¡¿Γß∩ ñ½¿¡á
- WHERE%=WHERE%+2 'á φΓ« Γ« ¼ÑßΓ«, úñÑ ¡áσ«ñ¿Γß∩
- 'áñαÑß ßΓ᫬¿
- CLS:PRINT PEEK(WHERE%),PEEK(WHERE%+1)
- HERE%=PEEK(WHERE%)+256*PEEK(WHERE%+1) '¼ÑßΓ«, úñÑ ¡áσ«ñ¿Γß∩
- 'ßΓ᫬á
-
- DEF SEG '¡Ñ ∩ó½∩ÑΓß∩ ºñÑß∞ ¡Ñ«íσ«ñ¿¼δ¼,
- '¡« φΓ« σ«α«Φ¿⌐ ßΓ¿½∞ »α«úαá¼¼¿-
- 'α«óá¡¿∩
-
- WHERE%=PEEK(0)+256*PEEK(1)
- DEF SEG=WHERE% 'ßÑú¼Ñ¡Γ ßΓ᫬¿ - »Ñαó«Ñ ß½«ó«
- '(»« π¼«½τá¡¿ε - DS)
- REGES%=VARSEG(a%(0))
- REGSI%=VARPTR(a%(0))
- REG 1,5% '»«¼ÑßΓ¿Γ∞ ó AX º¡áτÑ¡¿Ñ-
- 'ºá»«½¡¿Γѽ∞
- REG 3,101% 'τ¿ß½« ºá»«½¡∩Ѽδσ φ½Ñ¼Ñ¡Γ«ó
- '(«Γ 1 ñ« 100) - ó CX
- REG 9,REGES% 'ßÑú¼Ñ¡Γ ºá»«½¡∩Ѽ«ú« ¼áßß¿óá
- ' -> ó ES
- REG 6,REGSI% 'ß¼ÑΘÑ¡¿Ñ »Ñαó«ú« φ½Ñ¼Ñ¡Γá
- '¼áßß¿óá -> ó SI
- CALL ABSOLUTE HERE% 'ºá»«½¡¿Γ∞ ¼áßß¿ó º¡áτÑ¡¿Ñ¼ 5
-
- DEF SEG
- FOR i%=0 TO 100:PRINT a%(i%);:HEXT i%
- PRINT
- PRINT REG(1),REG(3),REG(9),REG(6):STOP
-
- CALL FILLIT(a%(0),-1%,101%) 'ºá»«½¡¿Γ∞ ¼áßß¿ó º¡áτÑ¡¿Ñ¼
- '-1
- FOR i%=0 TO 100:PRINT a%(i%);:NEXT i%
- PRINT
- END
-
- SUB FILLIT INLINE
- $INLINE &H55,&H88,&HD,&H7E
-
- TASM2 #3-5/䫬 = 235 =
-
- $INLINE &HE,&H26,&H8B,&HD,&HC4
- $INLINE &H7E,&HA,&H26,&H8B,&H5
- $INLINE &HC4,&H7E,&H6,&HFC,&HF3
- $INLINE &HAB,&H5D
- END SUB
-
- ;Å«ñ»α«úαá¼¼á ñ½∩ »ÑαÑß佬¿ »α«¿ºó«½∞¡«ú« τ¿ß½á φ½Ñ¼Ñ¡Γ«ó
- ;ß »α«¿ºó«½∞¡δ¼ º¡áτÑ¡¿Ñ¼ ó µÑ½«τ¿ß½Ñ¡¡δ⌐ ¼áßß¿ó ñ½∩
- ;call absolute. æ¿¡Γá¬ß¿ß ó맮óá ß½ÑñπεΘ¿⌐:
- ;REG 1,FILLVALUE% 'AX - º¡áτÑ¡¿Ñ-ºá»«½¡¿Γѽ∞
- ;REG 3,FILLCOUNT% 'CX - τ¿ß½« ºá»«½¡∩Ѽδσ
- ; 'φ½Ñ¼Ñ¡Γ«ó
- ;REG 9,VARSEG(ARRAY(0)) 'ES ß«ñÑαª¿Γ ßÑú¼Ñ¡Γ ¼áßß¿óá
- ;REG 6,VARPTR(ARRAY(0)) 'DI - ß¼ÑΘÑ¡¿Ñ »Ñαó«ú« φ½Ñ¼Ñ¡Γá
- ; '¼áßß¿óá
- ;CALL ABSOLUTE FILLIT2
- ;FILLIT2 - áñαÑß áíß«½εΓ¡«⌐ »«ñ»α«úαá¼¼δ, á DEG SEG íπñÑΓ
- ;»« π¼«½τá¡¿ε πßΓá¡áó½¿óáΓ∞ ßÑú¼Ñ¡Γ »α«úαá¼¼δ »ÑαÑñ ó맮ó«¼
- ;CALL ABSOLUTE ó ß««ΓóÑΓßΓó¿¿ ß FILLIT2.
-
- PROGRAM SEGMENT
- START PROC FAR ; ñá½∞¡¿⌐ Γ¿» ó맮óá
- ASSUME cs:PROGRAM
- push bp ; ß«σαá¡¿Γ∞ π¬áºáΓѽ∞ íáºδ
- cld ; «τ¿ßΓ¿Γ∞ Σ½áú ¡á»αáó½Ñ¡¿∩
- rep ; ß½ÑñπεΘá∩ ¿¡ßΓαπ¬µ¿∩ »«óΓ«α∩-
- ; ÑΓß∩, »«¬á CX ¡Ñ ßΓá¡ÑΓ αáó¡δ¼
- ; 0
- stosw ; ºá»¿ßáΓ∞ AX ó ES:DI ¿ πóѽ¿τ¿Γ∞
- ; DI ¡á 2
- pop bp ; ó«ßßΓá¡«ó¿Γ∞ π¬áºáΓѽ∞ íáºδ
- ret ; ¼ÑªßÑú¼Ñ¡Γ¡δ⌐ (ñá½∞¡¿⌐) ó«ºóαáΓ
- START ENDP
- PROGRAM ENDS
- END
-
- ;Å«ñ»α«úαá¼¼á ñ½∩ »ÑαÑß佬¿ »α«¿ºó«½∞¡«ú« τ¿ß½á φ½Ñ¼Ñ¡Γ«ó
- ;ß »α«¿ºó«½∞¡δ¼ º¡áτÑ¡¿Ñ¼ ó µÑ½«τ¿ß½Ñ¡¡δ⌐ ¼áßß¿ó æ¿¡Γá¬ß¿ß
- ;ó맮óá ß½ÑñπεΘ¿⌐:
- ;CALL FILLIT(ARRAY(0),FILLVALUE,NUMTIMES)
-
- ORG 100h
- PROGRAM SEGMENT
- ASSUME cs:PROGRAM
- push bp ; ß«σαá¡¿Γ∞ π¬áºáΓѽ∞ íáºδ
- mov bp,sp ; »ÑαѼÑßΓ¿Γ∞ π¬áºáΓѽ∞ ßΓѬá
-
- TASM2 #3-5/䫬 = 236 =
-
- ; ó BP
- les di,[bp+0eh] ; »«½πτ¿Γ∞ ß¼ÑΘÑ¡¿Ñ áñαÑßá τ¿ß½á
- ; φ½Ñ¼Ñ¡Γ«ó ñ½∩ ºá»«½¡Ñ¡¿∩
- mov ax,es:[di] ; »«¼ÑßΓ¿Γ∞ ó AX º¡áτÑ¡¿Ñ-
- ; ºá»«½¡¿Γѽ∞
- les di,[bp+6] ; ß¼ÑΘÑ¡¿Ñ áñαÑßá ºá»«½¡∩Ѽ«ú«
- ; ¼áßß¿óá
- cld ; «τ¿ßΓ¿Γ∞ Σ½áú ¡á»αáó½Ñ¡¿∩
- rep ; ß½ÑñπεΘá∩ ¿¡ßΓαπ¬µ¿∩ »«óΓ«α∩ÑΓß∩,
- ; »«¬á CX ¡Ñ íπñÑΓ = 0
- stow ; ºá»¿ßáΓ∞ AX ó ES:DI ¿ πóѽ¿τ¿Γ∞
- ; DI ¡á 2
- pop bp ; ó«ßßΓá¡«ó¿Γ∞ π¬áºáΓѽ∞ íáºδ
- PROGRAM ENDS ; ¬«¡Ñµ ßÑú¼Ñ¡Γá - ¿¡ßΓαπ¬µ¿∩ RET
- ; ¡Ñ ¡πª¡á
- END
-
-
-
-
-
- TASM2 #3-5/䫬 = 237 =
-
-
- Åα¿½«ªÑ¡¿Ñ B. ê¡ΓÑαΣÑ⌐ß Æπαí« ÇßßѼí½Ñαá ß Æπαí« Åα«½«ú«¼
- -----------------------------------------------------------------
-
- Æπαí« Åα«½«ú »αÑñ½áúáÑΓ »α«úαá¼¼¿ßΓπ í«½∞Φ«Ñ ¬«½¿τÑßΓó« »αÑ-
- ñ¿¬áΓ«ó, «íÑß»Ñτ¿óáεΘ¿σ αáßΦ¿αÑ¡¡δ⌐ ¡áí«α Σπ¡¬µ¿⌐ óδß«¬«ú« πα«ó-
- ¡∩, «Γ π»αáó½Ñ¡¿∩ «¬¡á¼¿ φ¬αá¡á ñ« π»αáó½Ñ¡¿∩ íáºá¼¿ ñá¡¡δσ. Æπα-
- í« ÇßßѼí½Ñα »«ºó«½∩ÑΓ ñ«íáó¿Γ∞ ¬ Æπαí« Åα«½«úπ ßαÑñßΓóá »α«úαá¼-
- ¼¿α«óá¡¿∩ ¡¿ª¡Ñú« πα«ó¡∩.
-
- é ñá¡¡«⌐ ú½áóÑ ¼δ αáßß¼«Γα¿¼ ß¡áτá½á ¿¡ΓÑαΣÑ⌐ß Æπαí« Åα«½«úá
- ß Æπαí« ÇßßѼí½Ñα«¼, ºáΓѼ »α¿óÑñѼ ¡Ñ¬«Γ«αδÑ »α«ßΓδÑ »α¿¼Ñαδ «α-
- úá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá »«ñ»α«úαá¼¼ ÇßßѼí½Ñαá ß Æπαí« Åα«½«ú«¼. ìá-
- ¬«¡Ñµ, ¼δ «íßπñ¿¼ ó맮ó »αÑñ¿¬áΓ«ó Æπαí« Åα«½«úá ¿º ¬«ñá ÇßßѼ-
- í½Ñαá, ¿ß»«½∞º«óá¡¿Ñ í¿í½¿«ΓÑτ¡δσ ó맮ó«ó Æπαí« Åα«½«úá ¿ »ÑαÑñá-
- τπ ß½«ª¡δσ ßΓαπ¬Γπα.
-
- Åα¿¼Ñτá¡¿Ñ: è«úñá ¼δ ú«ó«α¿¼ « Æπαí« Åα«½«úÑ, Γ« αÑτ∞
- ¿ñÑΓ « óÑαß¿¿ 1.0 ¿½¿ í«½ÑÑ ßΓáαΦÑ⌐.
-
-
- ÄíΩ∩ó½Ñ¡¿Ñ ó¡ÑΦ¡¿σ »αÑñ¿¬áΓ«ó
- -----------------------------------------------------------------
-
- Æπαí« Åα«½«ú »«ºó«½∩ÑΓ «αúá¡¿º«óáΓ∞ ¿¡ΓÑαΣÑ⌐ß ß ñαπú¿¼¿ ∩ºδ-
- ¬á¼¿ ß »«¼«Θ∞ε «»¿ßá¡¿⌐ ú½«íá½∞¡δσ »αÑñ¿¬áΓ«ó. é «»¿ßá¡¿¿ π¬áºδ-
- óáÑΓß∩ ߻ѵ¿Σ¿¬áµ¿∩ ∩ºδ¬á, í½áú«ñáα∩ ¬«Γ«α«⌐ Æπαí« Åα«½«ú ¼«ªÑΓ
- «»αÑñѽ¿Γ∞, τΓ« ú½«íá½∞¡δ⌐ »αÑñ¿¬áΓ αÑ὿º«óá¡ ¡á ñαπú«¼ ∩ºδ¬Ñ:
-
- global pridicate
- add(integer,integer,integer) - (i,i,o) language asm
- scanner(string,token) - (i,o) language Pascal
-
- é Æπαí« Åα«½«úÑ ß««ΓóÑΓßΓóπεΘ¿⌐ ∩ºδ¬ π¬áºδóáÑΓß∩ ∩ó¡«, τΓ«íδ
- π»α«ßΓ¿Γ∞ »α«í½Ñ¼δ ß ºá»¿ß∞ε á¬Γ¿óᵿ¿ ¿ Σ«α¼áΓ«¼ »áαá¼ÑΓα«ó,
- ß«ú½áΦÑ¡¿∩¼¿ »« ó맮óπ ¿ ó«ºóαáΓπ π»αáó½Ñ¡¿∩, «»αÑñѽѡ¿∩¼¿ ßÑú-
- ¼Ñ¡Γ«ó ¿ ¿¡¿µ¿á½¿ºáµ¿Ñ⌐.
-
- æ«ú½áΦÑ¡¿∩ »« ó맮óπ ¿ »áαá¼ÑΓαδ
- -----------------------------------------------------------------
-
- æÑ¼Ñ⌐ßΓó« »α«µÑßß«α«ó 8086 »αÑñ«ßΓáó½∩ÑΓ »α«úαá¼¼¿ßΓπ óδí«α
- ¼Ñªñπ í½¿ª¡¿¼ (near) ¿ ñá½∞¡¿¼ (far) óδº«ó«¼ »«ñ»α«úαá¼¼. Æπαí«
- Åα«½«ú ß«ºñáÑΓ »α«úαá¼¼δ ß í«½∞Φ«⌐ ¼«ñѽ∞ε »á¼∩Γ¿ ¿ ΓαÑíπÑΓ, τΓ«-
- íδ óßÑ ó맮óδ ¿ ó«ºóαáΓδ π»αáó½Ñ¡¿∩ ¿¼Ñ½¿ ñá½∞¡¿⌐ Γ¿».
-
-
- TASM2 #3-5/䫬 = 238 =
-
- Æπαí« Åα«½«ú »«ññÑনóáÑΓ α∩ñ ß«ú½áΦÑ¡¿⌐ »« ó맮óá¼: ß«ú½á-
- ΦÑ¡¿∩ æ¿, Åá߬á½∩ ¿ ÇßßѼí½Ñαá. Åα¿ «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá ß »«ñ-
- »α«úαá¼¼«⌐, ¡á»¿ßá¡¡«⌐ ß ¿ß»«½∞º«ó᡿Ѽ ß«ú½áΦÑ¡¿⌐ »« ó맮óá¼,
- »α¿¡∩Γδσ ó ∩ºδ¬Ñ æ¿, »áαá¼ÑΓαδ ºá¡«ß∩Γß∩ ó ßΓѬ ó «íαáΓ¡«¼ »«α∩ñ-
- ¬Ñ ¿ »«ß½Ñ ó«ºóαáΓá π»αáó½Ñ¡¿∩ π¬áºáΓѽ∞ ßΓѬá áóΓ«¼áΓ¿τÑ߬¿ óδ-
- αáó¡¿óáÑΓß∩. Åα¿ «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá ß ñαπú¿¼¿ ∩ºδ¬á¼¿ »áαá-
- ¼ÑΓαδ ºá¡«ß∩Γß∩ ó ßΓѬ ó «íδτ¡«¼ »«α∩ñ¬Ñ, á «ΓóÑΓßΓóÑ¡¡«ßΓ∞ ºá
- ¿ºó½ÑτÑ¡¿Ñ »áαá¼ÑΓα«ó ¿º ßΓѬá 󫺽áúáÑΓß∩ ¡á óδºδóáѼπε Σπ¡¬µ¿ε.
-
- é« ¼¡«ú¿σ ¬«¼»¿½∩Γ«αáσ ∩ºδ¬«ó, »αÑñ¡áº¡áτÑ¡¡δσ ñ½∩ αáí«Γδ ¡á
- »α«µÑßß«αáσ ßÑα¿¿ 8086, ÑßΓ∞ óδí«α ¼Ñªñπ 16-αáºα∩ñ¡δ¼¿ ¿
- 32-αáºα∩ñ¡δ¼¿ π¬áºáΓѽ∩¼¿ (úñÑ 16-αáºα∩ñ¡δÑ π¬áºáΓѽ¿ ßßδ½áεΓß∩
- ¡á ¿ß»«½∞ºπѼδ⌐ »« π¼«½τá¡¿ε ßÑú¼Ñ¡Γ). Æπαí« Åα«½«ú ñ½∩ ñ«ßΓπ»á
- ¬« óßÑ⌐ »á¼∩Γ¿ óßÑúñá ¿ß»«½∞ºπÑΓ 32-αáºα∩ñ¡δÑ π¬áºáΓѽ¿.
-
- Æ¿»δ Æπαí« Åα«½«úá αÑ὿º«óá¡δ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- integer (µÑ½δ⌐) 2 íá⌐Γá
- real (óÑΘÑßΓóÑ¡¡δ⌐) 8 íá⌐Γ (Σ«α¼áΓ IEEE)
- char (ß¿¼ó«½∞¡δ⌐) 1 íá⌐Γ (ñóá íá⌐Γá »α¿ ºá¡ÑßÑ¡¿¿
- ó ßΓѬ)
- string (ßΓ᫬«óδ⌐) 4-íá⌐Γ«óδ⌐ π¬áºáΓѽ∞ (ñó«⌐¡«Ñ
- ß½«ó«) ¡á ºáóÑαΦáεΘπεß∩ ¡π½Ñ¼
- ßΓ᫬π
- symbol (¿ñÑ¡Γ¿Σ¿¬áΓ«α) 4-íá⌐Γ«óδ⌐ π¬áºáΓѽ∞ (ñó«⌐¡«Ñ
- ß½«ó«) ¡á ºáóÑαΦáεΘπεß∩ ¡π½Ñ¼
- ßΓ᫬π
- compound (ß½«ª¡δ⌐) 4-íá⌐Γ«óδ⌐ π¬áºáΓѽ∞ (ñó«⌐¡«Ñ
- ß½«ó«) ¡á ºá»¿ß∞
-
- éδσ«ñ¡«⌐ »áαá¼ÑΓα ºá¡«ß¿Γß∩ ó ßΓѬ, ¬á¬ 32-í¿Γ«óδ⌐ π¬áºáΓѽ∞
- ¡á ∩τÑ⌐¬π, ¬«Γ«α«⌐ ñ«½ª¡« íδΓ∞ »α¿ßó«Ñ¡« ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
- ä½∩ óσ«ñ¡δσ »áαá¼ÑΓα«ó º¡áτÑ¡¿Ñ ºá¡«ß¿Γß∩ ó ßΓѬ ¡Ñ»«ßαÑñßΓóÑ¡¡«,
- á αẼÑα »áαá¼ÑΓαá ºáó¿ß¿Γ «Γ Ñú« Γ¿»á.
-
-
-
-
- TASM2 #3-5/䫬 = 239 =
-
- æ«ú½áΦÑ¡¿∩ »« ¿¼Ñ¡á¼
- -----------------------------------------------------------------
-
- Äñ¿¡ ¿ ëà ªÑ »αÑñ¿¬áΓ ó Æπαí« Åα«½«úÑ ¼«ªÑΓ ¿¼ÑΓ∞ ¡Ñ߬«½∞¬«
- óáα¿á¡Γ«ó ß αẽ¿τ¡δ¼¿ Γ¿»á¼¿ ¿ »«Γ«¬á¼¿ óó«ñá-óδó«ñá. èáªñ«¼π
- Γᬫ¼π óáα¿á¡Γπ ñ«½ª¡á ß««ΓóÑΓßΓó«óáΓ∞ Ñú« ß«íßΓóÑ¡¡á∩ »α«µÑñπαá,
- ¬«Γ«α«⌐ »α¿ßóá¿óáÑΓß∩ π¡¿¬á½∞¡«Ñ ¿¼∩. ¥Γ« «ßπΘÑßΓó½∩ÑΓß∩ ß »«-
- ¼«Θ∞ε ¡π¼Ñαᵿ¿ αẽ¿τ¡δσ »α«µÑñπα ó »αÑñ¿¬áΓÑ (¡áτ¿¡á∩ ß 0).
- ìá»α¿¼Ñα, Ñß½¿ π ¡áß ÑßΓ∞ «»¿ßá¡¿Ñ:
-
- global predicates
- add(integer,integer,integer) - (i,i,0),(i,i,i) language asm
-
- Γ« »Ñαóδ⌐ óáα¿á¡Γ (ß »«Γ«¬«¼ óó«ñá-óδó«ñá (i,i,o)) »«½πτ¿Γ ¿¼∩
- add_0, ó óΓ«α«⌐ (ß »«Γ«¬«¼ óó«ñá-óδó«ñá (i,i,i)) - add_1.
-
- Æπαí« Åα«½«ú »«ºó«½∩ÑΓ Γá¬ªÑ »α«úαá¼¼¿ßΓπ «íΩ∩ó½∩Γ∞ ∩ó¡«Ñ
- ¿¼∩ ú½«íá½∞¡«ú« »αÑñ¿¬áΓá. ¥Γ« ñѽáÑΓß∩ ß »«¼«Θ∞ε π¬áºá¡¿∩ ºá
- «»¿ß᡿Ѽ "as «íΘÑñ«ßΓπ»¡«Ñ_¿¼∩". é ß½ÑñπεΘѼ »α¿¼ÑαÑ ú½«íá½∞¡δ⌐
- »αÑñ¿¬áΓ pred »«½πτ¿Γ ¿¼∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá my_pred, á ¡Ñ pred_0.
-
- global predicates
- pred(integer,integer) - (i,o) language asm as "my_pred"
-
- äá¡¡δ⌐ ¼ÑΓ«ñ σ«α«Φ, ¬«úñá óδ »α¿ßóá¿óáÑΓÑ »αÑñ¿¬áΓπ ¿¼∩, ¿ π
- óáß ÑßΓ∞ Γ«½∞¬« «ñ¿¡ »«Γ«¬ óó«ñá-óδó«ñá. àß½¿ ¿¼ÑÑΓß∩ ñóá ¿ í«½ÑÑ
- »«Γ«¬á óó«ñá-óδó«ñá, Γ« óá¼ »α¿ñÑΓß∩ »αÑñπß¼«ΓαÑΓ∞ ¿¼∩ ñ½∩ ¬áªñ«-
- ú« óáα¿á¡Γá. àß½¿ ¿ß»«½∞º«óáΓ∞ »αÑñ¿¬áΓ add ¿º »αÑñδñπΘÑú« »α¿¼Ñ-
- αá, Γ« «»αÑñѽѡ¿Ñ »αÑñ¿¬áΓá íπñÑΓ óδú½∩ñÑΓ∞ Γá¬:
-
- global predicates
- add(integer,integer,integer)-(i,i,0) language asm as "doadd"
- add(integer,integer,integer)-(i,i,i) language asm as "addcheck"
-
- ÅÑαóδ⌐ óáα¿á¡Γ (ß »Ñαóδ¼ »«Γ«¬«¼ óó«ñá-óδó«ñá (i,i,o)) »«½π-
- τáÑΓ ¿¼∩ doadd, á óΓ«α«⌐ (ß »«Γ«¬«¼ óó«ñá-óδó«ñá (i,i,i)) - ¿¼∩
- add_check. çá¼ÑΓ¿¼, τΓ« φëà ¼ÑΓ«ñ ΓαÑíπÑΓ «Γñѽ∞¡«ú« «»¿ßá¡¿∩
- ñ½∩ ¬áªñ«ú« óáα¿á¡Γá.
-
-
-
-
- TASM2 #3-5/䫬 = 240 =
-
- Éáºαáí«Γ¬á »αÑñ¿¬áΓ«ó ¡á ÇßßѼí½ÑαÑ
- -----------------------------------------------------------------
-
- 髺¼«ª¡«, »α«ßΓÑ⌐Φ¿Ñ »αÑñ¿¬áΓδ - φΓ« ΓÑ, ¬«Γ«αδÑ ¿¼ÑεΓ Γ«½∞-
- ¬« »«Γ«¬ óó«ñá. ÅαÑñ»«½«ª¿¼, óδ σ«Γ¿ΓÑ óδ»«½¡¿Γ∞ ú«α¿º«¡Γá½∞¡πε
- »α«¬απΓ¬π ß«ñÑন¼«ú« ΓѬπΘÑú« «¬¡á Æπαí« Åα«½«úá. ¡« ¡á»¿ßáΓ∞
- »αÑñ¿¬áΓ scroll_left, ¬«Γ«αδ⌐ »α«¬απτ¿óáÑΓ «í½áßΓ∞ ¡á φ¬αá¡Ñ ¡á
- «ñ¡π »«º¿µ¿ε ó½Ñó«. é »α¿¼ÑαÑ SCROLLH.PRO scroll_left ¿¼ÑÑΓ τÑΓδ-
- αÑ µÑ½δσ áαúπ¼Ñ¡Γá ¿ «ñ¿¡ »«Γ«¬ óó«ñá-óδó«ñá.
-
- î«ñπ½∞ Æπαí« Åα«½«úá SCROLLH.PRO ß«ñÑαª¿Γ «»¿ßá¡¿Ñ ú½«íá½∞-
- ¡«ú« »αÑñ¿¬áΓá ñ½∩ »αÑñ¿¬áΓá scroll_left. ÅαÑñ¿¬áΓ scroll_left
- «»αÑñѽѡ, ¬á¬ »αÑñ¿¬áΓ ÇßßѼí½Ñαá.
-
- /* SCROLLH.PRO */
-
- global predicates
- scroll_left(integer,integer,integer,integer) - (i,i,i,i)
- language asm
-
- predicates
- scrollh
-
- clauses
- scrollh :-
- makewindow(_,_,_,Row,Col,Nrows,Ncols),
- scroll_laft(Row,Col,Nrows,Ncols),
- readchar(C),
- char_int(C,CI),
- not(CI = 27),
- scrollh.
-
- goal
- makewindow(1,7,7," æ««íΘÑ¡¿Ñ ñ½∩ »α«¬απΓ¬¿ ",10,20,4,60),
- write("¥Γ« ß««íΘÑ¡¿Ñ íπñÑΓ »α«¬απτÑ¡« ó «¬¡Ñ"),nl,
- write("éºú½∩¡¿ΓÑ ¡á ¡Ñú«!"),
- readchar(_),
- scrollh,
- readchar(_).
-
- æ½ÑñπεΘ¿⌐ ¿ßσ«ñ¡δ⌐ ¬«ñ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá »αÑñßΓáó½∩ÑΓ ß«-
- í«⌐ αÑ὿ºáµ¿ε »αÑñ¿¬áΓá scroll_left. çá¼ÑΓ¿¼, τΓ« φΓ«¼π »αÑñ¿¬á-
- Γπ ñáÑΓß∩ ¿¼∩ SCROLL_LEFT_0, τΓ« ß««ΓóÑΓßΓóπÑΓ «»¿ßá¡¡δ¼ αá¡ÑÑ
- ß«ú½áΦÑ¡¿∩¼ »« ¿¼Ñ¡á¼.
-
- ; SCROL.ASM
-
- TASM2 #3-5/䫬 = 241 =
-
- ;
- name scrol
- ; scroll_left(integer,integer,integer,integer) - (i,i,i,i)
- ; language asm
- SCROL_TEXT SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS:SCROL_TEXT
- PUBLIC SCROLL_LEFT_0
-
- SCROLL_LEFT_0 PROC FAR
- ;
- ; »áαá¼ÑΓαδ
- arg NCOLS:WORD, NROWS:WORD, COL:WORD, ROW:WORD = ARGLEN
- ;
- ; ½«¬á½∞¡á∩ »ÑαѼѡ¡á∩
- local SSEG : WORD = LSIZE
- push bp
- mov bp,sp
- sub sp,lsize ; »α«ßΓαá¡ßΓó« ñ½∩ ½«¬á½∞¡δσ
- ; »ÑαѼѡ¡δσ
- push si
- push di
- mov SSEG, 0B800h
- sub NCOLS,3 ; NCOLS = NCOLS - 3
- mov ax,ROW ; DEST = ROW*160 + (COL + 1)*2
- mov dx,160
- mul dx
- mov dx,COL
- inc dx ; ß½«ª¿½¿
- shl dx,1
- add dx,ax
- push ds
- push es
- mov bx,NROWS ; µ¿¬½ NROWS αẠ(BX ¿ß»«½∞ºπÑΓß∩,
- ; ¬á¬ ßτÑΓτ¿¬)
- dec bx ; NROWS = NROWS - 2
- dec bx
- Top: cmp bx,0
- je Done
- add dx,160 ; »α¿Ñ¼¡¿¬ = »α¿Ñ¼¡¿¬ + 160
- mov ax,NCOLS ; »«ß½_ß¿¼ó«½ = »α¿Ñ¼¡¿¬ + NCOLS*2
- shl ax,1
- add ax,dx
- push ax ; ºá¡ÑßΓ¿ ó ßΓѬ ß¼ÑΘÑ¡¿Ñ
- ; »«ß½Ññ¡Ñú« ß¿¼ó«½á
- mov ax,SSEG ; ºáúαπº¿Γ∞ ßÑú¼Ñ¡Γ φ¬αá¡á ó ES, DS
- mov es,ax
-
- TASM2 #3-5/䫬 = 242 =
-
- mov ds,ax
- mov di,dx ; πßΓá¡«ó¿Γ∞ º¡áτÑ¡¿∩ SI ¿ DI ñ½∩
- ; ¿¡ßΓαπ¬µ¿⌐ mov
- mov si,di
- add si,2
- mov ax,[di] ; ß«σαá¡¿Γ∞ ß¿¼ó«½ »«º¿µ¿¿ 0 ó AX
- mov cx,NCOLS ; »ÑαѼÑßΓ¿Γ∞ NCOLS ß½«ó
- cld
- rep movsw
- pop di ; ¿ºó½Ñτ∞ ó DI ß¼ÑΘÑ¡¿Ñ »«ß½Ññ¡Ñú«
- ; ß¿¼ó«½á
- mov [di],ax ; »«¼ÑßΓ¿Γ∞ ß¿¼ó«½ ó AX ó »«ß½Ññ¡εε
- ; »«º¿µ¿ε
- dec bx
- jmp TOP
- Done: pop es
- pop ds
- pop di
- pop si
- mov sp,bp
- pop bp
- ret ARGLEN
- SCROLL_LEFT_0 ENDP
- SCROL_TEXT ENDS
- END
-
- ùΓ«íδ ß«ºñáΓ∞ ¿º Σá⌐½«ó SCROLLH.PRO ¿ SCROL.ASM óδ»«½¡∩Ѽδ⌐
- Σá⌐½, ¡πª¡« ß¡áτá½á ߬«¼»¿½¿α«óáΓ∞ Σá⌐½ Æπαí« Åα«½«úá ó Σá⌐½ .OBJ
- (ß »«¼«Θ∞ε Æπαí« Åα«½«úá). (è«úñá Æπαí« Åα«½«ú ¬«¼»¿½¿απÑΓ ¼«-
- ñπ½∞, «¡ ß«ºñáÑΓ Σá⌐½ .OBJ ¿ Σá⌐½ .SYM.) çáΓѼ ß »«¼«Θ∞ε Æπαí«
- ÇßßѼí½Ñαá ¡πª¡« áßßÑ¼í½¿α«óáΓ∞ Σá⌐½ SCROL.ASM ó Σá⌐½ .OBJ, »«ß½Ñ
- τÑú« ߬«¼»«¡«óáΓ∞ ¼«ñπ½¿ ß »«¼«Θ∞ε ß½ÑñπεΘÑ⌐ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿
- πΓ¿½¿Γδ TLINK:
-
- TLINK init scrollh scrol scrollh.sym,scroll,,prolog
-
- Å«½πτÑ¡¡δ⌐ ó αѺπ½∞ΓáΓÑ óδ»«½¡∩Ѽδ⌐ Σá⌐½ íπñÑΓ ¡áºδóáΓ∞ß∩
- SCROLL.EXE.
-
-
-
-
- TASM2 #3-5/䫬 = 243 =
-
- ÉÑ὿ºáµ¿∩ »αÑñ¿¬áΓá double
- -----------------------------------------------------------------
-
- ÅαÑñ»«½«ª¿¼, »«ñ»α«úαá¼¼á ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá óδºδóáÑΓß∩ ß
- »«¼«Θ∞ε «»ÑαáΓ«αá:
-
- double(MyInVar,MyOutVar)
-
- úñÑ MyInVar »ÑαÑñ óδº«ó«¼ ßó∩ºδóáÑΓß∩ ß µÑ½δ¼ º¡áτÑ¡¿Ñ¼, á »«ß½Ñ
- ó맮óá MyOutVar «¬áºδóáÑΓß∩ ßó∩ºá¡¡«⌐ ß πñó«Ñ¡¡«⌐ óѽ¿τ¿¡«⌐ ñá¡-
- ¡«ú« º¡áτÑ¡¿∩.
-
- çỿß∞ á¬Γ¿óᵿ¿, »«¼ÑΘáѼá∩ ó ßΓѬ »α¿ á¬Γ¿ó¿ºáµ¿¿ double,
- ¿¼ÑÑΓ ó¿ñ, »αÑñßΓáó½Ñ¡¡δ⌐ ¡á É¿ß. 9.1:
-
- ------------- ---------------------------------------------
- | [BP] + 10 |------>| ç¡áτÑ¡¿Ñ, ß ¬«Γ«αδ¼ ßó∩ºá¡á MyInVar. |
- | | | SIZE = 2 íá⌐Γá (αẼÑα) |
- | | |-------------------------------------------|
- | [BP] + 6 |------>| ÇñαÑß, »« ¬«Γ«α«¼π ¡πª¡« αẼÑßΓ¿Γ∞ º¡á- |
- | | | τÑ¡¿Ñ ñ½∩ MyOutVar. SIZE = 4 íá⌐Γá |
- | | |-------------------------------------------|
- | [BP] + 2 |------>| ÇñαÑß, ß ¬«Γ«α«ú« ñ«½ª¡« »α«ñ«½ªáΓ∞ß∩ óδ- |
- | | | »«½¡Ñ¡¿Ñ »«ß½Ñ ºáóÑαΦÑ¡¿∩ αáí«Γδ double. |
- | | | SIZE = 4 íá⌐Γá |
- | | |-------------------------------------------|
- | [BP] + 0 |------>| Éá¡ÑÑ πßΓá¡«ó½Ñ¡¡«Ñ º¡áτÑ¡¿Ñ BP (ñ« ¡áτá- |
- | | | ½á óδ»«½¡Ñ¡¿∩ double). |
- | | | SIZE = 2 íá⌐Γá |
- ------------- ---------------------------------------------
-
- É¿ß. 9.1. çỿß∞ á¬Γ¿óᵿ¿ ñ½∩ double.
-
- ÅαÑñ¿¬áΓ double αÑ὿ºπÑΓ ß½ÑñπεΘá∩ Σπ¡¬µ¿∩ ¡á ∩ºδ¬Ñ ÇßßѼ-
- í½Ñαá:
-
- ;
- ; MYASM.ASM
- ;
- A_PROC SEGMENT BYTE
- ASSUME CS:a_prog
- PUBLIC double_0
- double_0 PROC FAR
- push bp
- mov bp,sp
- mov ax,[bp]+6 ; »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ, ß
-
- TASM2 #3-5/䫬 = 244 =
-
- ; ¬«Γ«αδ¼ ßó∩ºá¡á MyInVar
- add ax,ax ; πñó«¿Γ∞ φΓ« º¡áτÑ¡¿Ñ
- lds si,DWORD PTR [bp]+10
- mov [si],ax ; ß«σαá¡¿Γ∞ º¡áτÑ¡¿Ñ, ß
- ; ¬«Γ«αδ¼ ñ«½ª¡« íδΓ∞
- ; ßó∩ºá¡« MyOutVar »«
- ; ß««ΓóÑΓßΓóπεΘѼπ áñαÑßπ
- pop bp
- mov sp,bp
- ret 6
- double_0 ENDP
- A_PROC ENDS
-
- Åα«úαá¼¼á Æπαí« Åα«½«úá, ß«ñÑαªáΘá∩ «íαáΘÑ¡¿Ñ ¬ double,
- ñ«½ª¡á ß«ñÑαªáΓ∞ Γá¬ªÑ ß½ÑñπεΘÑÑ «»¿ßá¡¿Ñ ú½«íá½∞¡«ú« »αÑñ¿¬áΓá:
-
- global predicates
- double(integer,integer) - (i,o) language asm
-
- é« óßѼ «ßΓá½∞¡«¼ »α«úαá¼¼á φΓá Æπαí« Åα«½«úá ¡Ñ íπñÑΓ «Γ½¿-
- τáΓ∞ß∩ «Γ ½εí«⌐ ñαπú«⌐ »α«úαá¼¼δ.
-
- ÅαÑñ¿¬áΓ double ¿ß»«½∞ºπÑΓß∩ ó ß½ÑñπεΘÑ⌐ »α«úαá¼¼Ñ:
-
- /* MYPROLOG.PRO */
-
- global predicates
- double(integer,integer) - (i,o) language asm
- goal
- write("éóÑñ¿ΓÑ µÑ½«Ñ º¡áτÑ¡¿Ñ "),
- readint(I),
- double(I,Y),
- write(I," πñó«Ñ¡¡«Ñ º¡áτÑ¡¿Ñ = ",Y).
-
- Åα«úαá¼¼á ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá áßßÑ¼í½¿απÑΓß∩ ó Σá⌐½
- MYASM.OBJ, á óδºδóáεΘá∩ »α«úαá¼¼á ¡á Æπαí« Åα«½«úÑ Γαá¡ß½¿απÑΓß∩
- ó ¼«ñπ½∞ MYPROLOG.OBJ. çáΓѼ φΓ¿ ñóá ¼«ñπ½∩ ¬«¼»«¡πεΓß∩ ß »«¼«Θ∞ε
- ¬«¼á¡ñ¡«⌐ ßΓ᫬¿:
-
- TLINK init myprolog myasm myprolog.sym,double,,prolog
-
- Åα¿ φΓ«¼ ß«ºñáÑΓß∩ óδ»«½¡∩Ѽá∩ áóΓ«¡«¼¡á∩ »α«úαá¼¼á
- DOUBLE.EXE (ñ½∩ τÑú« ¿ß»«½∞ºπÑΓß∩ í¿í½¿«ΓÑ¬á Æπαí« Åα«½«úá
- PROLOG.LIB). é᪡«, τΓ« MYPROLOG.SYM π¬áºδóá½ß∩ ó ¬«¼á¡ñÑ TLINK ó
- ¬áτÑßΓóÑ »«ß½Ññ¡Ñú« ¿¼Ñ¡¿ Σá⌐½á »ÑαÑñ »Ñαó«⌐ ºá»∩Γ«⌐.
-
-
- TASM2 #3-5/䫬 = 245 =
-
- é «íΘѼ ß½πτáÑ Σ«α¼áΓ ºá»¿ß¿ á¬Γ¿óᵿ¿ íπñÑΓ ºáó¿ßÑΓ∞ «Γ
- τ¿ß½á »áαá¼ÑΓα«ó »αÑñ¿¬áΓá Æπαí« Åα«½«úá ¿ Γ¿»«ó ñ«¼Ñ¡«ó, ß««Γ-
- óÑΓßΓóπεΘ¿σ φΓ¿¼ »áαá¼ÑΓαá¼. ìá»α¿¼Ñα, Ñß½¿ óδ σ«Γ¿ΓÑ «»αÑñѽ¿Γ∞:
-
- add(Val1,Val2,Sum)
-
- úñÑ Val1, Val2 ¿ Sum »α¿¡áñ½ÑªáΓ µÑ½δ¼ (integer) ñ«¼Ñ¡á¼, Γ« ºá-
- »¿ß∞ á¬Γ¿óᵿ¿ óδú½∩ñѽá íδ Γá¬, ¬á¬ »«¬áºá¡« ¡á É¿ß. 9.2:
-
- ------------- ---------------------------------------------
- | [BP] + 10 |------>| ÇñαÑß, »« ¬«Γ«α«¼π ñ«½ª¡« íδΓ∞ ºá»¿ßá¡« |
- | | | º¡áτÑ¡¿Ñ Sum. |
- | | | SIZE = 4 íá⌐Γá (αẼÑα) |
- | | |-------------------------------------------|
- | [BP] + 8 |------>| ç¡áτÑ¡¿Ñ, ß ¬«Γ«αδ¼ ßó∩ºá¡á Val2. |
- | | | SIZE = 2 íá⌐Γá |
- | | |-------------------------------------------|
- | [BP] + 6 |------>| ç¡áτÑ¡¿Ñ, ß ¬«Γ«αδ¼ ßó∩ºá¡á Val1. |
- | | | SIZE = 2 íá⌐Γá |
- | | |-------------------------------------------|
- | [BP] + 2 |------>| ÇñαÑß, ß ¬«Γ«α«ú« ñ«½ª¡« »α«ñ«½ªáΓ∞ß∩ óδ- |
- | | | »«½¡Ñ¡¿Ñ »«ß½Ñ ºáóÑαΦÑ¡¿∩ αáí«Γδ add. |
- | | | SIZE = 4 íá⌐Γá |
- | | |-------------------------------------------|
- | [BP] + 0 |------>| Éá¡ÑÑ πßΓá¡«ó½Ñ¡¡«Ñ º¡áτÑ¡¿Ñ BP (ñ« ¡áτá- |
- | | | ½á óδ»«½¡Ñ¡¿∩ add). |
- | | | SIZE = 2 íá⌐Γá |
- ------------- ---------------------------------------------
-
- É¿ß. 9.2. çỿß∞ á¬Γ¿óᵿ¿ ñ½∩ »αÑñ¿¬áΓá add.
-
- ÄΓ¼ÑΓ¿¼, τΓ« ¬áªñδ⌐ »áαá¼ÑΓα ºá¡¿¼áÑΓ ß««ΓóÑΓßΓóπεΘÑÑ τ¿ß½«
- íá⌐Γ. ä½∩ óδσ«ñ¡δσ »áαá¼ÑΓα«ó αẼÑα (SIZE) óßÑúñá αáóÑ¡ 4 íá⌐Γá¼
- (¬«Γ«αδÑ ¿ß»«½∞ºπεΓß∩ ñ½∩ áñαÑßá ßÑú¼Ñ¡Γá ¿ ß¼ÑΘÑ¡¿∩). ä½∩ óσ«ñ-
- ¡δσ »áαá¼ÑΓα«ó αẼÑα «»αÑñѽ∩ÑΓß∩ º¡áτÑ¡¿Ñ¼, ¬«Γ«α«Ñ ñÑ⌐ßΓó¿-
- Γѽ∞¡« ºá¡«ß¿Γß∩ ó ßΓѬ, »«φΓ«¼π «¡« ºáó¿ß¿Γ «Γ ß««ΓóÑΓßΓóπεΘÑú«
- ñ«¼Ñ¡á.
-
- Val1 ¿ Val2 »α¿¡áñ½ÑªáΓ ¬ ñ«¼Ñ¡π µÑ½δσ ¿ «íá ºá¡¿¼áεΓ 2 íá⌐-
- Γá (ñ½∩ ¡¿σ ¿ß»«½∞ºπÑΓß∩ π¬áºáΓѽ∞ »«Γ«¬á óó«ñá-óδó«ñá (i) -
- óó«ñ). Åáαá¼ÑΓα Sum ºá¡¿¼áÑΓ 4 íá⌐Γá (ñ½∩ ¡Ñú« ¿ß»«½∞ºπÑΓß∩ π¬á-
- ºáΓѽ∞ »«Γ«¬á óó«ñá-óδó«ñá (o) - óδó«ñ).
-
- çá¼ÑΓ¿¼ ΓᬪÑ, τΓ« »α¿ ¿ß»«½∞º«óá¡¿¿ ¬«¼»¿½∩Γ«αá Æπαí« Åα«-
- ½«úá «íαáΘÑ¡¿Ñ ¬ ó¡ÑΦ¡Ñ¼π »αÑñ¿¬áΓπ ¿¼ÑÑΓ ó¿ñ:
-
-
- TASM2 #3-5/䫬 = 246 =
-
- mov ax,SEGMENT data
- mov ds,ax
- call FAR PTR external_predicate_inplementation
-
- »«φΓ«¼π ßÑú¼Ñ¡Γ ñá¡¡δσ, áñαÑßπѼδ⌐ ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ »α«µÑñπαδ
- ¿½¿ ó¡ÑΦ¡Ñú« »αÑñ¿¬áΓá, ¡áºδóáÑΓß∩ DATA.
-
-
-
-
- TASM2 #3-5/䫬 = 247 =
-
- ÉÑ὿ºáµ¿∩ »αÑñ¿¬áΓ«ó ß ¡Ñ߬«½∞¬¿¼¿ »«Γ«¬á¼¿ óó«ñá-óδó«ñá
- -----------------------------------------------------------------
-
- Åα¿ αÑ὿ºáµ¿¿ »αÑñ¿¬áΓ«ó ß ¡Ñ߬«½∞¬¿¼¿ »«Γ«¬á¼¿ óó«ñá-óδó«-
- ñá ¡πª¡« ó¡¿¼áΓѽ∞¡« ß«í½εñáΓ∞ ñ½∩ Σπ¡¬µ¿⌐ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá
- »α¿¡∩ΓδÑ ó Æπαí« Åα«½«úÑ ß«ú½áΦÑ¡¿∩ »« ¿¼Ñ¡á¼. ÅαÑñ»«½«ª¿¼, ¡á»-
- α¿¼Ñα, τΓ« óδ σ«Γ¿ΓÑ αÑ὿º«óáΓ∞ »αÑñ¿¬áΓ add, 𠬫ëα«ú« ¿¼ÑÑΓß∩
- ¡Ñ߬«½∞¬« »«Γ«¬«ó óó«ñá-óδó«ñá. Åα¿ ¬áªñ«¼ «íαáΘÑ¡¿¿ ¬ add «¡ íπ-
- ñÑΓ ¡áσ«ñ¿Γ∞ »α«»πΘÑ¡¡«Ñ º¡áτÑ¡¿Ñ ó παáó¡Ñ¡¿¿ X + Y = Z, úñÑ ñóá
- ¿º ΓαÑσ áαúπ¼Ñ¡Γ«ó »α¿ «íαáΘÑ¡¿¿ ¬ add ∩ó½∩εΓß∩ ßó∩ºá¡¡δ¼¿.
-
- ⽫íá½∞¡δ⌐ »αÑñ¿¬áΓ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá «íΩ∩ó½∩ÑΓß∩ ó »α«ú-
- αá¼¼Ñ ¡á Æπαí« Åα«½«úÑ ADDPRO.PRO. çá¼ÑΓ¿¼, τΓ« »αÑñ¿¬áΓ add ¿¼Ñ-
- ÑΓ Γα¿ ó«º¼«ª¡δσ »«Γ«¬á óó«ñá-óδó«ñá: (i,i,o), (i,o,i) ¿ (o,i,i).
-
- /* ADDPRO.PRO */
-
- global predicates
- add(integer,integer,integer) - (i,i,0),(i,0,i),(o,i,i)
- language asm
- goal
- add(2,3,X), write("2 + 3 = ",X),nl,
- add(2,Y,5), write("5 - 2 = ",Y),nl,
- add(2,3,5), write("5 - 3 = ",Z),nl.
-
- æ½ÑñπεΘá∩ »α«úαá¼¼á ¡á ÇßßѼí½ÑαÑ ADD.ASM ß«ñÑαª¿Γ ¬«ñ αÑá-
- ½¿ºáµ¿¿ »αÑñ¿¬áΓá add. ADD_0 ß««ΓóÑΓßΓóπÑΓ »«Γ«¬π óó«ñá-óδó«ñá
- (i,i,o), ADD_1 ß««ΓóÑΓßΓóπÑΓ »«Γ«¬π (i,o,i), á ADD_2 - (o,i,i).
-
- name add
- ADD_TEXT SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS:ADD_TEXT
- PUBLIC ADD_0 ; »«Γ«¬ (i,i,o)
- ADD_0 PROC FAR
- arg 2:dWORD, Y:WPRD, X:WORD = ARGLEN1
- push bp
- mov bp,sp
- mov ax,X
- add ax,Y
- les bx,Z
- mov WORD PTR ES:[BX],ax
- pop bp
- ret ARGLEN1
- ADD_0 ENDP
-
- PUBLIC ADD_1 ; »«Γ«¬ (i,o,i)
-
- TASM2 #3-5/䫬 = 248 =
-
- ADD_1 PROC FAR
- arg 2:WORD, Y:WORD, X:WORD = ARGLEN2
- push bp
- mov bp,sp
- mov ax,Z
- sub ax,X
- les bx,Y
- mov WORD PTR ES:[BX],AX
- pop bp
- ret ARGLEN2
- ADD_1 ENDP
-
- PUBLIC ADD_2 ; »«Γ«¬ (o,i,i)
- ADD_2 PROC FAR
- arg Z:WORD, Y:WORD, X:WORD = ARGLEN3
- push bp
- mov bp,sp
- mov ax,Z
- sub ax,X
- les bx,Y
- mov WORD PTR ES:[BX],AX
- pop bp
- ret ARGLEN3
- ADD_2 ENDP
-
- ADD_TEXT ENDS
- END
-
- Å«ß½Ñ Γ«ú«, ¬á¬ ¿ßσ«ñ¡δÑ Σá⌐½δ ADDPRO.PRO ¿ ADD.ASM íπñπΓ
- «ΓΓαá¡ß½¿α«óá¡δ ó Σá⌐½δ .OBJ, óδ ¼«ªÑΓÑ ß »«¼«Θ∞ε ¬«¼á¡ñ¡«⌐ ßΓα«-
- ¬¿:
-
- TLINK init addpro add addpro.sym,addpro,,prolog
-
- ß«ºñáΓ∞ óδ»«½¡∩Ѽδ⌐ Σá⌐½ .EXE.
-
-
-
-
- TASM2 #3-5/䫬 = 249 =
-
- é맮ó »αÑñ¿¬áΓ«ó Æπαí« Åα«½«úá ¿º Σπ¡¬µ¿⌐ ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- ÆÑ»Ñα∞, ¬«úñá ¼δ «íßπñ¿½¿ ó맮ó Σπ¡¬µ¿⌐ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá
- ¿º Æπαí« Åα«½«úá, ñáóá⌐ΓÑ «íßπñ¿¼ «íαáΓ¡πε »α«í½Ñ¼π: ó맮ó »αÑñ¿-
- ¬áΓ«ó Æπαí« Åα«½«úá ¿º ∩ºδ¬á ÇßßѼí½Ñαá.
-
- è«úñá »αÑñ¿¬áΓ «íΩ∩ó½∩ÑΓß∩ ú½«íá½∞¡δ¼, óáα¿á¡Γδ »αÑñ¿¬áΓá
- ßΓá¡«ó∩Γß∩ ú½«íá½∞¡δ¼¿ Σπ¡¬µ¿∩¼¿, ¬«Γ«αδÑ ¼«úπΓ óδºδóáΓ∞ß∩ ½εíδ¼
- ñαπú¿¼ ¼«ñπ½Ñ¼. æ«ú½áΦÑ¡¿∩ »« ¿¼Ñ¡á¼¿ ¿ ß«ú½áΦÑ¡¿∩ »« ó맮óá¼ «ß-
- ΓáεΓß∩ ΓѼ¿ ªÑ, τΓ« ¿ ñ½∩ »αÑñ¿¬áΓ«ó, «»αÑñѽѡ¡δσ ó ∩ºδ¬Ñ ÇßßѼ-
- í½Ñαá.
-
- æ½ÑñπεΘ¿⌐ ¼«ñπ½∞ Æπαí« Åα«½«úá «»αÑñѽ∩ÑΓ ñóá ú½«íá½∞¡δσ
- »αÑñ¿¬áΓá: popmessage ¿ from_asm.popmessage, ¬«Γ«αδÑ «íΩ∩ó½∩εΓß∩,
- ¬á¬ »αÑñ¿¬áΓδ ¡á ∩ºδ¬Ñ æ¿, ¿ »αÑñ¿¬áΓ from_asm, ¬«Γ«αδ⌐ «íΩ∩ó½∩-
- ÑΓß∩, ¬á¬ »αÑñ¿¬áΓ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá.
-
- ùΓ«íδ ßΣ«α¼¿α«óáΓ∞ »α«úαá¼¼π SHOWMESS, ߬«¼»¿½¿απ⌐ΓÑ ¿º ¿¡-
- ΓÑαá¬Γ¿ó¡«⌐ ßαÑñδ αáºαáí«Γ¬¿ »α«úαá¼¼ Æπαí« Åα«½«úá Σá⌐½
- SHOWMESS.PRO ó Σá⌐½ .OBJ. çáΓѼ ß »«¼«Θ∞ε ¬«¼á¡ñδ:
-
- tasm from_asm
-
- áßßÑ¼í½¿απ⌐ΓÑ Σá⌐½ FORM_ASM.ASM ¿ óδ»«½¡¿ΓÑ ¬«¼»«¡«ó¬π:
-
- TLINK init showmess fromsm showmess.sym,showmess,,prolog
-
- êßσ«ñ¡δ⌐ ΓѬßΓ SHOWMESS ¿¼ÑÑΓ ó¿ñ:
-
- /* SHOWMESS */
- global predicates
- popmessage(string) - (i) language c /* »αÑñ¿¬áΓ óδºδóáÑΓß∩
- ¿º »α«µÑñπαδ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá */
- from_asm - language asm /* »α«µÑñπαá ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá */
-
- clauses
- popmessage(S) :- /* ¼«ªÑΓ óδºδóáΓ∞ß∩ ¿º Σπ¡¬µ¿¿ æ¿
- ß ¿¼Ñ¡Ñ¼ popmessage_0 */
- str_len(S,L),
- LL = L + 4,
- makewindow(13,7,7,"",10,10,3,LL),
- write(S),
- readchar(_),
- removewindow.
- goal
-
- TASM2 #3-5/䫬 = 250 =
-
- form_asm. /* external */
-
- æ½ÑñπεΘ¿⌐ ¬«ñ ¡á ÇßßѼí½ÑαÑ αÑ὿ºπÑΓ from_asm ¿ óδºδóáÑΓ
- popmessage:
-
- EXTRN PopMessage_0:FAR
- DGROUP GROUP _DATA
- ASSUME CS:SENDMESS_TEXT,DS:DGROUP
- _DATA SEGMENT WORD PUBLIC 'DATA'
- messl DB "Report: Condition Red",0
- _DATA ENDS
-
- SENDMESS_TEXT SEGMENT BYTE PUBLIC 'CODE'
- PUBLIC FROM_ASM_0
- FROM_ASM_0 PROC FAR
- push ds
- mov ax,OFFSET DGROUP:messl
- push ax
- call FAR PTR PopMessage_0
- pop cx
- pop cx
- ret
- FROM_ASM_0 ENDP
- SENDMESS_TEXT ENDS
- END
-
- æ½ÑñπεΘá∩ »α«úαá¼¼á ñ½∩ »«ßΓα«Ñ¡¿∩ Γ«⌐ ªÑ óδ»«½¡∩Ѽ«⌐ »α«ú-
- αá¼¼δ ¿ß»«½∞ºπÑΓ αáßΦ¿αÑ¡¿∩ óδß«¬«ú« πα«ó¡∩ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá.
- ùΓ«íδ »«ßΓα«¿Γ∞ ÑÑ, ߬«¼»¿½¿απ⌐ΓÑ ¿º ¿¡ΓÑαá¬Γ¿ó¡«⌐ ßαÑñδ Æπαí«
- Åα«½«úá »α«úαá¼¼π SHOWNEW.PRO (»«½πτ¿ó Σá⌐½ .OBJ), ºáΓѼ áßßѼ-
- í½¿απ⌐ΓÑ FROM_ASM.ASM, ¿ß»«½∞ºπ∩ ¬«¼á¡ñπ:
-
- tasm /jmasm51 /jquirks from_new
-
- Å«ß½Ñ φΓ«ú« óδ»«½¡¿ΓÑ ¬«¼»«¡«ó¬π:
-
- TLINK init shownew fromew shownew.sym,show2,,prolog
-
- Åα«úαá¼¼á SHOWNEW ¿¼ÑÑΓ ó¿ñ:
-
- /* SHOWNEW.PRO */
-
- global predicates
- popmessage(string) - (i) language c /* »αÑñ¿¬áΓ óδºδóáÑΓß∩
- ¿º »α«µÑñπαδ ¡á ÇßßѼí½ÑαÑ */
- prom_asm - language c as "_from_asm" /* «»αÑñѽ¿Γ∞ «íΘÑ-
-
- TASM2 #3-5/䫬 = 251 =
-
- ñ«ßΓπ»¡«Ñ ¿¼∩ »α«µÑñπαδ ¡á ∩ºδ¬Ñ
- ÇßßѼí½Ñαá */
- clauses
- popmessage(S) :-
- str_len(S,L),
- LL=L+4,
- makewindow(13,7,7,"Ĭ¡«",10,10,3,LL),
- write(S),
- readchar(_),
- removewindow.
-
- goal
- from_asm. /* óδºóáΓ∞ »α«µÑñπαπ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá */
-
- æ½ÑñπεΘ¿⌐ ¿ßσ«ñ¡δ⌐ ¬«ñ ÇßßѼí½Ñαá αÑ὿ºπÑΓ from_asm ¿ «íαá-
- ΘáÑΓß∩ ¬ popmessage (¬á¬ ¿ ó »αÑñδñπΘѼ »α¿¼ÑαÑ).
-
- ; FORM_NEW.ASM
- extrn PopMessage_0:FAR
- .MODEL LARGE,C
- .CODE
-
- FROM_ASM proc
- push ds
- mov ax,OFFSET DGROUP:messl
- push ax
- call FAR PTR PopMessage_0
- pop cx
- pop cx
- ret
- FROM_ASM ENDP
-
- .DATA
- messl DB "Report: Condition Red",0
- END
-
-
-
-
- TASM2 #3-5/䫬 = 252 =
-
- 滿߬¿ ¿ Σπ¡¬Γ«αδ
- -----------------------------------------------------------------
-
- é ñá¡¡«¼ αáºñÑ½Ñ ¼δ «íßπñ¿¼ ¼ÑΓ«ñ, ¿ß»«½∞ºπѼδ⌐ ñ½∩ »ÑαÑñáτ¿
- ó »α«µÑñπαδ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ß»¿ß¬«ó ¿ Σπ¡¬Γ«α«ó. èᬠπªÑ π»«-
- ¼¿¡á½«ß∞ αá¡ÑÑ, ß½«ª¡δÑ «íΩѬΓδ Æπαí« Åα«½«úá ¡Ñ »ÑαÑñáεΓß∩ ¡Ñ-
- »«ßαÑñßΓóÑ¡¡«. é¼ÑßΓ« φΓ«ú« Æπαí« Åα«½«ú »ÑαÑñáÑΓ 4-íá⌐Γ«óδ⌐ π¬á-
- ºáΓѽ∞ ¡á ßΓαπ¬Γπαπ.
-
- æΓαπ¬Γπαá ºá»¿ß¿, ¬«Γ«αá∩ ¿ß»«½∞ºπÑΓß∩ ñ½∩ ß»¿ß¬«ó ¿ Σπ¡¬Γ«-
- α«ó, »α«ßΓá ¿ »«¡∩Γ¡á. ÅαÑñ»«½«ª¿¼, ¿¼ÑεΓß∩ ß½ÑñπεΘ¿Ñ ñ«¼Ñ¡δ Æπα-
- í« Åα«½«úá:
-
- domains
- ilist = integer*
- ifunc = int(integer)
-
- æ««ΓóÑΓßΓóπεΘá∩ ßΓαπ¬Γπαá ñ½∩ πº½á ß»¿ß¬á ñ«¼Ñ¡á ilist ¿¼Ñ½á
- íδ ß½ÑñπεΘ¿⌐ ó¿ñ:
-
- STRUCT ILIST
- NodeType DB ?
- Value DW ?
- NexNode DD ?
- ENDS
-
- èᬠ¼«ª¡« ó¿ñÑΓ∞ ¿º φΓ«⌐ ßΓαπ¬Γπαδ, πºÑ½ ß»¿ß¬á ß«ñÑαª¿Γ Γα¿
- τáßΓ¿:
-
- - Γ¿» πº½á (íá⌐Γ);
- - º¡áτÑ¡¿Ñ πº½á (ºáó¿ß¿Γ «Γ Γ¿»á);
- - π¬áºáΓѽ∞ ¡á ß½ÑñπεΘ¿⌐ πºÑ½ (4 íá⌐Γá).
-
- Æ¿» πº½á ß«ñÑαª¿Γ ñóá ¿¼ÑεΘ¿σ «»αÑñѽѡ¡δ⌐ ß¼δß½ º¡áτÑ¡¿Ñ:
- Value 1 «º¡áτáÑΓ, τΓ« πºÑ½ »αÑñßΓáó½∩ÑΓ ß«í«⌐ πºÑ½ ß»¿ß¬á, á
- Value 2 «º¡áτáÑΓ, τΓ« πºÑ½ - φΓ« πºÑ½ ¬«¡µá ß»¿ß¬á (¬«Γ«αδ⌐ ¡Ñ
- ß«ñÑαª¿Γ ñαπú«⌐ º¡áτáΘÑ⌐ ¿¡Σ«α¼áµ¿¿). ç¡áτÑ¡¿Ñ πº½á ¼«ªÑΓ «Γ¡«-
- ß¿Γ∞ß∩ ¬ ½εí«¼π ñ«¼Ñ¡π Æπαí« Åα«½«úá.
-
- æ««ΓóÑΓßΓóπεΘá∩ ßΓαπ¬Γπαá ñ½∩ Σπ¡¬Γ«αá ifunc íδ½á íδ ß½Ññπε-
- 饩:
-
- STRUC IFUNC
- FuncType DB ?
- Value DW ?
- ENDS
-
- TASM2 #3-5/䫬 = 253 =
-
-
- æΓαπ¬Γπαá Σπ¡¬Γ«αá ß«ßΓ«¿Γ ¿º ñóπσ τáßΓÑ⌐: Γ¿»á Σπ¡¬Γ«αá ¿
- ºá»¿ß¿ Σπ¡¬Γ«αá. Æ¿» Σπ¡¬Γ«αá - φΓ« µÑ½«Ñ, ßó∩ºá¡¡«Ñ ß »«º¿µ¿Ñ⌐
- óáα¿á¡Γá Σπ¡¬Γ«αá ó ß»¿ß¬Ñ á½∞ΓÑα¡áΓ¿ó. ÅÑαóá∩ á½∞ΓÑα¡áΓ¿óá ¿¼ÑÑΓ
- Γ¿» 1, óΓ«αá∩ - Γ¿» 2 ¿ Γ.ñ.
-
- é ß½ÑñπεΘ¿σ ¼«ñπ½∩σ Æπαí« Åα«½«úá ¿ Æπαí« ÇßßѼí½Ñαá ¼δ αÑá-
- ½¿º«ó὿ »αÑñ¿¬áΓ ¿ ó«ºóαáΓ¿½¿ Σπ¡¬Γ«α Æπαí« Åα«½«úπ.
-
- î«ñπ½∞ Æπαí« Åα«½«úá ¿¼ÑÑΓ ó¿ñ:
-
- /* FUNC.PRO */
-
- domains
- ifunc = int(integer)
-
- global predicates
- makefunk(integer,ifunc) - (i,o) language c
-
- goal
- makefunc(4,H),
- write(H).
-
- î«ñπ½∞ Æπαí« ÇßßѼí½Ñαá ¿¼ÑÑΓ ß½ÑñπεΘ¿⌐ ó¿ñ:
-
- ;
- ; IFUNC.ASM
- ;
- EXTRN _alloc_qstask:FAR ; _alloc_qstack ó«ºóαáΘáÑΓ
- ; π¬áºáΓѽ∞ ¡á í½«¬ »á¼∩Γ¿
-
- STRUCT IFUNC
- FuncType DB ?
- Value DW ?
- ENDS
-
- IFUNC_TEXT SEGMENT WORD PUBLIC 'CODE'
- ASSUME CS:IFUNC_TEXT
-
- PUBLIC Makeifunc_0
- Makefunc_0 PROC FAR
- arc __inval:WORD, __outp:dWORD
- push bp
- mov bp,sp
- mov ax,3 ; óδñѽ¿Γ∞ 3 íá⌐Γá
- push ax
-
- TASM2 #3-5/䫬 = 254 =
-
- call FAR PTR_alloc_qstack
- pop cx
- les bx,__outp
- mov [WORD PTR ES:BX+2],DX
- mov [WORD PTR ES:BX],AX
- mov ax,__inval
- ;; les bx,__outp
- les bx,[DWORD PTR ES:BX]
- mov [(IFUNC PTR ES:BX).VALUE],AX
- ; º¡áτÑ¡¿Ñ = __inval
- mov [(IFUNC PTR ES:BX).FUNCTYPE],1
- ; Γ¿» = 1
- pop bp
- ret
- Makeifunc_0 ENDP
- IFUNC_TEXT ENDS
- END
-
- é ñá¡¡«¼ »α¿¼ÑαÑ ñ½∩ ifunc ¿ß»«½∞ºπÑΓß∩ Γ«½∞¬« «ñ¿¡ Γ¿»
- Σπ¡¬Γ«αá. àß½¿ íδ óδ «íΩ∩󿽿 ñαπú«⌐ Σπ¡¬Γ«α, Γ¿»á:
-
- myfunc = int(integer); char(char); r(real); d2(integer,real)
-
- Γ« ßΓαπ¬Γπαá íδ½á íδ í«½ÑÑ ß½«ª¡«⌐. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ ßΓαπ¬Γπαá ΓᬪÑ
- ¿¼Ñ½á íδ ñóÑ τáßΓ¿, Γ«½∞¬« óΓ«αá∩ τáßΓ∞ íδ½á íδ «íΩÑñ¿¡Ñ¡¿Ñ¼
- ßΓαπ¬Γπα ñá¡¡δσ, ¡Ñ«íσ«ñ¿¼δσ ñ½∩ «»αÑñѽѡ¿∩ óßÑσ óáα¿á¡Γ«ó
- myfunc. æ½ÑñπεΘá∩ ßΓαπ¬Γπαá »αÑñßΓáó½∩ÑΓ ß«í«⌐ 󫺼«ª¡πε αÑ὿ºá-
- µ¿ε myfunc ¡á Æπαí« ÇßßѼí½ÑαÑ:
-
- STRUCT MyFunc
- FuncType DB ?
- UNION
- STRUC
- _int DW ?
- ENDS
- STRUC
- _char DB ?
- ENDS
- STRUC
- _real DQ ?
- ENDS
- STRUC
- v1 DW ?
- v2 DQ ?
- ENDS
- ENDS
-
- TASM2 #3-5/䫬 = 255 =
-
- ENDS
-
- Æ¿»á¼¿, ßó∩ºá¡¡δ¼¿ ß á½∞ΓÑα¡áΓ¿óἿ Σπ¡¬Γ«αá í뫨 íδ ß½Ññπε-
- Θ¿Ñ Γ¿»δ:
-
- int(integer) 1
- char(char) 2
- r(real) 3
- d2(integer,real) 4
-
- ùΓ«íδ ½πτΦÑ »«¡∩Γ∞ ß»¿ß¬¿ ¿ Σπ¡¬Γ«αδ, óºú½∩¡¿ΓÑ ¡á í«½ÑÑ αá-
- ¡ÑÑ «»¿ßá¡¿Ñ ñ«¼Ñ¡«ó ñ½∩ ilist. Å«τѼπ ñ«»πßΓ¿¼δ Γ¿»δ πº½á 1 ¿ 2?
- Å«Γ«¼π τΓ« Æπαí« Åα«½«ú ¿¡ΓÑα»αÑΓ¿απÑΓ ilist, ¬á¬ ßΓαπ¬Γπαπ, ¬«-
- Γ«απε ¼«ª¡« í佫 íδ «»¿ßáΓ∞ »α«ßΓ« ¬á¬:
-
- ilist = listnode(integer,listnode); end_of_list.
-
- ê¼Ñ⌐ΓÑ ó ó¿ñπ, τΓ« ¬«úñá óδ »ÑαÑñáÑΓÑ ß½«ª¡δÑ «íΩѬΓδ, óδ
- »ÑαÑñáÑΓÑ π¬áºáΓѽ∞ ¡á ßΓαπ¬Γπαπ. ü«½ÑÑ ¬«¡¬αÑΓ¡«: ó« óσ«ñ¡«¼ »«-
- Γ«¬Ñ ß»¿ß«¬ ¿½¿ Σπ¡¬Γ«α »ÑαÑñáÑΓß∩ »« ßß佬Ñ, ó óδσ«ñ¡«¼ »«Γ«¬Ñ
- ß»¿ß«¬ ¿½¿ Σπ¡¬Γ«α »ÑαÑñáÑΓß∩, ¬á¬ π¬áºáΓѽ∞ ¡á ßß佬π ¡á ßΓαπ¬-
- Γπαπ. (Æπαí« Åα«½«ú »ÑαÑñáÑΓ áñαÑß π¬áºáΓѽ∩ ¡á ó«ºóαáΘáѼπε
- ßΓαπ¬Γπαπ.) éßÑ ßΓαπ¬Γπαδ, ó«ºóαáΘáѼδÑ Æπαí« Åα«½«úπ, ñ«½ª¡δ ¿ß-
- »«½∞º«óáΓ∞ »á¼∩Γ∞, óδñѽѡ¡πε ß »«¼«Θ∞ε Σπ¡¬µ¿⌐ αáß»αÑñѽѡ¿∩ »á-
- ¼∩Γ¿ Æπαí« Åα«½«úá. (æ¼. "Éπ¬«ó«ñßΓó« »«½∞º«óáΓѽ∩ »« Æπαí« Åα«-
- ½«úπ" ¿ "æ»αáó«τ¡«Ñ απ¬«ó«ñßΓó« »« Æπαí« Åα«½«úπ".)
-
-
-
-
-
- TASM2 #3-5/䫬 = 256 =
-
- Åα¿½«ªÑ¡¿Ñ C. ÄΓóÑΓδ ¡á «íΘ¿Ñ ó«»α«ßδ
- -----------------------------------------------------------------
-
- Åα¿óÑñÑ¡¡δÑ ñá½ÑÑ αѬ«¼Ñ¡ñᵿ¿ ¿ ºá¼Ñτá¡¿∩ ¼«úπΓ íδΓ∞ óá¼
- »«½Ñº¡δ »α¿ ¿ß»«½∞º«óá¡¿¿ Æπαí« ÇßßѼí½Ñαá.
-
- é«»α«ß: èᬠπßΓá¡«ó¿Γ∞ Æπαí« ÇßßѼí½Ñα ó ß¿ßΓѼÑ?
-
- ÄΓóÑΓ: çá»πßΓ¿ΓÑ »α«úαá¼¼π πßΓá¡«ó¬¿ INSTALL ß πßΓá¡«ó«τ¡«ú«
- ñ¿ßΓα¿íπΓ¿ó¡«ú« ñ¿ß¬á Æπαí« ÇßßѼí½Ñαá. ùΓ«íδ ¡áτáΓ∞ πßΓá¡«ó¬π,
- ¿º¼Ñ¡¿ΓÑ ΓѬπΘ¿⌐ ñ¿ß¬ ¡á Γ«Γ, úñÑ ß«ñÑαªáΓß∩ »α«úαá¼¼δ πßΓá¡«ó¬¿,
- ¿ óóÑñ¿ΓÑ INSTALL. é αá¼¬Ñ ó ¡¿ª¡Ñ⌐ τáßΓ¿ φ¬αá¡á óá¼ íπñπΓ óδó«-
- ñ¿Γ∞ß∩ ¿¡ßΓαπ¬µ¿¿. ìá»α¿¼Ñα, Ñß½¿ óδ óδ»«½¡∩ÑΓÑ πßΓá¡«ó¬π ß ñ¿ß¬á
- A:, óóÑñ¿ΓÑ:
-
- A:
- INSTALL
-
- Å«ß½Ñ φΓ«ú« »α«úαá¼¼á INSTALL óδóÑñÑΓ ¼Ñ¡ε óδí«αá ¿ «»¿ßá-
- ¡¿∩, ¬«Γ«αδÑ »«¼«úπΓ óá¼ óδ»«½¡¿Γ∞ »α«µÑßß πßΓá¡«ó¬¿.
-
- é«»α«ß: è«úñá ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ αẽ¿τ¡δÑ αѪ¿¼δ áßßѼí-
- ½¿α«óá¡¿∩, »αÑñπß¼«ΓαÑ¡¡δÑ ñ½∩ »«ßΓáó½∩Ѽδσ ¡á ñ¿ß¬Ñ »α«úαá¼¼?
-
- ÄΓóÑΓ:
-
- ÉѪ¿¼ ôß½«ó¿∩ ¿ß»«½∞º«óá¡¿∩
- -------------------------------------------------------------
- Äíδτ¡δ⌐(MASM) - Åα«úαá¼¼δ áßßÑ¼í½¿απεΓß∩ »«ñ óÑαß¿Ñ⌐
- MASM 4.00 ¿½¿ MASM 5.00.
- Quirks - Åα«úαá¼¼δ áßßÑ¼í½¿απεΓß∩ »«ñ óÑαß¿Ñ⌐
- MASM 4.00 ¿½¿ MASM 5.00, ¡« ¡Ñ íπñπΓ
- áßßÑ¼í½¿α«óáΓ∞ß∩ ó TASM íѺ π¬áºá¡¿∩
- ñ¿αÑ¬Γ¿ó MASM51 ¿½¿ QUIRKS.
- Masm51 - Åα«úαá¼¼δ ΓαÑíπεΓ ñ½∩ áßßÑ¼í½¿α«óá¡¿∩
- MASM óÑαß¿¿ 5.1.
- Masm51 ¿ Quirks - Åα«úαá¼¼δ ΓαÑíπεΓ ñ½∩ áßßÑ¼í½¿α«óá¡¿∩
- MASM 5.1, ¡« ¡Ñ íπñπΓ áßßÑ¼í½¿α«óáΓ∞ß∩
- ó TASM, ¬«úñá ºáñá¡« Γ«½∞¬« MASM51.
-
- é«»α«ß: ìπª¡« ½¿ ¿ß»«½∞º«óáΓ∞ MASM51 ñ½∩ áßßÑ¼í½¿α«óá¡¿∩
- Σá⌐½«ó, ¡á»¿ßá¡¡δσ ñ½∩ MASM óÑαß¿¿ 5.1?
-
- ÄΓóÑΓ: ü«½∞Φ¿¡ßΓó« Σá⌐½«ó íπñπΓ áßßÑ¼í½¿α«óáΓ∞ß∩ ñáªÑ íѺ
- ¿ß»«½∞º«óá¡¿∩ ñ¿αÑ¬Γ¿óδ MASM51. Äñ¡á¬«, Ñß½¿ óδ áßßÑ¼í½¿απÑΓÑ ¿ß-
- σ«ñ¡δ⌐ ¬«ñ, ó ¬«Γ«α«¼ ¿ß»«½∞ºπεΓß∩ ßαÑñßΓóá, »α¿¼Ñ¡∩ѼδÑ Γ«½∞¬« ó
-
- TASM2 #3-5/䫬 = 257 =
-
- MASM óÑαß¿¿ 5.1, óá¼ »«ΓαÑíπÑΓß∩ ¿ß»«½∞º«óáΓ∞ αѪ¿¼ MASM51.
-
- ùΓ«íδ «»αÑñѽ¿Γ∞, ¬á¬¿Ñ ßαÑñßΓóá φ¼π½∩µ¿¿ MASM51 αáºαÑΦÑ¡δ
- »α¿ ß«τÑΓá¡¿¿ αѪ¿¼«ó MASM51 ¿ QUIRKS, »α«óÑα∞ΓÑ ß½ÑñπεΘπε ñá½ÑÑ
- Γáí½¿µπ.
-
- é«»α«ß: èá¬¿Ñ φ½Ñ¼Ñ¡Γδ π»αáó½∩εΓß∩ ß »«¼«Θ∞ε αѪ¿¼«ó QUIRKS
- ¿ MASM51?
-
- ÄΓóÑΓ: é ß½ÑñπεΘÑ⌐ Γáí½¿µÑ π¬áºδóáÑΓß∩, τΓ« ñѽáεΓ αẽ¿τ¡δÑ
- ß«τÑΓá¡¿∩ αѪ¿¼«ó QUIRKS ¿ MASM51:
-
- ÉѪ¿¼ Ä»Ñαᵿ¿
- -------------------------------------------------------------
- Quirks - àß½¿ φΓ« ñ«»π߬áÑΓ CS, αáºαÑΦáÑΓ úÑ¡Ñ-
- αáµ¿ε »ÑαÑσ«ñ«ó Γ¿»á FAR, ¬á¬ NEAR ¿½¿
- SHORT.
- - ä«»π߬áÑΓ, τΓ«íδ ¿¡ßΓαπ¬µ¿¿ óßÑσ αá-
- º«»αÑñѽ∩½¿ß∞ ó ñó«¿τ¡«⌐ «»Ñαᵿ¿
- Γ«½∞¬« αÑú¿ßΓα«¼ (Ñß½¿ «¡ ¿¼ÑÑΓß∩).
- - ÄΓ¼Ñ¡∩ÑΓ OFFSET, »ÑαÑ«»αÑñѽѡ¿Ñ ßÑú-
- Γ«ó ¿ Γ.ñ. ê¡Σ«α¼áµ¿ε »« '=' ¿½¿ τ¿ß-
- ½«óδ¼ »α¿ßóá¿óá¡¿∩¼ 'EQU'.
- - Åα¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« »α¿ßóá¿óá¡¿∩ EQU
- ñ½∩ óδαáªÑ¡¿⌐, ß«ñÑαªáΘ¿σ "PTR" ¿½¿
- ":", íπñπΓ ΓѬßΓ«ó묨.
-
- Masm51 - Instr, Catstr, Substr, Sizestr, ¿
- "\" (»α«ñ«½ªÑ¡¿Ñ ßΓ᫬¿) αáºαÑΦáεΓß∩.
- - EQU ñ½∩ ¬½ετÑóδσ ß½«ó íπñπΓ TEXT, á ¡Ñ
- ALIAS.
- - é %textmacro ó áαúπ¼Ñ¡Γáσ ¼á¬α«¬«¼á¡ñδ
- »αÑñΦÑßΓóπεΘ¿Ñ »α«íÑ½δ ¡Ñ «ΓíαáßδóáεΓ-
- ß∩.
-
- Masm51 ¿ Quirks - éßÑ, τΓ« π¬áºá¡« αá¡ÑÑ ñ½∩ QUIRKS.
- - éßÑ, τΓ« π¬áºá¡« αá¡ÑÑ ñ½∩ MASM51.
- - αáºαÑΦáεΓß∩ ½«¬á½∞¡δÑ ¼ÑΓ¬¿ @@,
- @F, ¿ @B.
- - é αáßΦ¿αÑ¡¡δσ ¼«ñѽ∩σ ¿¼Ñ¡á »α«µÑñπα
- áóΓ«¼áΓ¿τÑ߬¿ ßΓá¡«ó∩Γß∩ «íΘÑñ«ßΓπ»¡δ-
- ¼¿.
- - ü½¿ª¡¿Ñ ¼ÑΓ¬¿ »α«µÑñπα ¼«úπΓ »ÑαÑ«»αÑ-
- ñѽ∩Γ∞ß∩ ó ñαπú¿σ »α«µÑñπαáσ.
- - ä½∩ «»αÑñѽѡ¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá, ¬«Γ«-
- αδ⌐ ñ«ßΓ¿ª¿¼ ó¡Ñ ΓѬπΘÑ⌐ »α«µÑñπαδ,
-
- TASM2 #3-5/䫬 = 258 =
-
- αáºαÑΦÑ¡á «»Ñαᵿ∩ "::".
-
- Masm51 ¿ Ideal - Å«ññÑনóáÑΓß∩ ß¿¡Γá¬ß¿ß π½πτΦÑ¡¡«ú«
- αѪ¿¼á ¿ ΓѬßΓ«óδÑ ¼á¬α«ñ¿αÑ¬Γ¿óδ
- Masm51 (Γ« ÑßΓ∞ Instr, Catstr, Substr,
- ¿ Sizestr).
-
- é«»α«ß: è«úñá ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óδ DOSSEG ¿½¿
- .STACK?
-
- ÄΓóÑΓ: è«úñá óδ αáºαáíáΓδóáÑΓÑ ¼«ñ㫨 Æπαí« ÇßßѼí½Ñαá,
- »αÑñ¡áº¡áτÑ¡¡δÑ ñ½∩ ¬«¼»«¡«ó¬¿ ß ∩ºδ¬á¼¿ óδß«¬«ú« πα«ó¡∩ (Γ¿»á
- Æπαí« æ¿ ¿½¿ Æπαí« Åá߬á½∩), Γ« ñ¿αÑ¬Γ¿óδ DOSSEG ¿½¿ .STACK ¡Ñ
- ΓαÑíπεΓß∩, Γᬠ¬á¬ »«α∩ñ«¬ ßÑú¼Ñ¡Γ«ó ¿ ßΓѬ «»αÑñѽ∩εΓß∩ ¬«¼»¿½∩-
- Γ«αἿ φΓ¿σ ∩ºδ¬«ó. ¥Γ¿ ñ¿αÑ¬Γ¿óδ «»αÑñѽ∩εΓ ¿¼Ñ¡á ¿ »«α∩ñ«¬ ßÑú-
- ¼Ñ¡Γ«ó, ¬«Γ«αδÑ ¼«úπΓ »α¿óÑßΓ¿ ¬ ¬«¡Σ½¿¬Γπ ¼ ñαπú¿¼ ∩ºδ¬«¼ óδß«-
- ¬«ú« πα«ó¡∩. Äñ¡á¬«, ¿σ ß½ÑñπÑΓ ºáñáΓ∞ («ñ¿¡ αáº) ó ¬á¬«¼-½¿í« ¿º
- ¼«ñπ½Ñ⌐ áóΓ«¡«¼¡«⌐ »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ. ä¿αÑ¬Γ¿óá DOSSEG ¡Ñ-
- «íσ«ñ¿¼á Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ óδ σ«Γ¿ΓÑ, τΓ«íδ óáΦ¿ ßÑú¼Ñ¡Γδ
- π»«α∩ñ«τ¿ó὿ß∞ ó ß««ΓóÑΓßΓó¿¿ ß ß«ú½áΦÑ¡¿∩¼¿ Σ¿α¼δ Microsoft. éδ
- ¼«ªÑΓÑ ºáñáΓ∞ ß«íßΓóÑ¡¡δ⌐ »«α∩ñ«¬ ßÑú¼Ñ¡Γ«ó, «íÑß»Ñτ¿ó, τΓ« óáΦ¿
- ßÑú¼Ñ¡Γδ íπñπΓ «í¡áαπªÑ¡δ πΓ¿½¿Γ«⌐ TLINK ó Γ«¼ »«α∩ñ¬Ñ, ¬«Γ«αδ⌐
- óδ σ«Γ¿ΓÑ. Å«½¡«Ñ «»¿ßá¡¿Ñ φΓ«ú« »α«µÑßßá ß«ñÑনΓß∩ ó αáºñѽáσ
- απ¬«ó«ñßΓóá, ¬áßáεΘ¿σß∩ πΓ¿½¿Γδ TLINK.
-
- é«»α«ß: èá¬¿Ñ »áαá¼ÑΓαδ ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ ñ½∩ áßßÑ¼í½¿α«-
- óá¡¿∩ ß »«¼«Θ∞ε Æπαí« ÇßßѼí½Ñαá Σá⌐½«ó, »«ßΓáó½∩Ѽδσ ß ¬«¼»¿½∩-
- Γ«α«¼ ∩ºδ¬á æ¿ Σ¿α¼δ Microsoft.
-
- ÄΓóÑΓ: Åα¿ ¬«¼»¿½∩µ¿¿ Γá¬¿σ ¼«ñπ½Ñ⌐ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ¡πª-
- ¡« πíÑñ¿Γ∞ß∩, τΓ« ¿ß»«½∞ºπεΓß∩ αѪ¿¼δ MASM51 ¿ QUIRKS. ìá»α¿¼Ñα:
-
- tasm /jmasm51 /jquirks filename
-
- é«»α«ß: èᬠ¼«ª¡« ß«ºñáΓ∞ Σá⌐½ .COM?
-
- ÄΓóÑΓ: êßσ«ñ¡δ⌐ ¬«ñ áßßѼí½Ñαá ¡πª¡« ¬«¼»¿½¿α«óáΓ∞ ß ¿ß»«½∞-
- º«ó᡿Ѽ ßóÑασ¼á½«⌐ ¼«ñѽ¿ »á¼∩Γ¿ (.MODEL TINY), á ºá ßÑú¼Ñ¡Γ«¼
- ¬«ñá ó »α«úαá¼¼π ¡πª¡« ó¬½ετ¿Γ∞ ORG 100h, ¡á»α¿¼Ñα:
-
- .MODEL TINY
- .CODE
- ORG 100h
- start:
- .... ; Γѽ« »α«úαá¼¼δ
- ENDS start ; «»αÑñѽ∩ÑΓ Γ«τ¬π óσ«ñá »α¿
-
- TASM2 #3-5/䫬 = 259 =
-
- ; ºá»π߬Ñ
- END
-
- é »α«úαá¼¼π, ¬«Γ«αá∩ ¿ß»«½∞ºπÑΓß∩ ñ½∩ Σ«α¼¿α«óá¡¿∩ Σá⌐½á
- .COM, ¡Ñ ß½ÑñπÑΓ ó¬½ετáΓ∞ ñ¿αÑ¬Γ¿óπ .STACK.
-
- ôΓ¿½¿Γá TLINK íπñÑΓ ß«ºñáóáΓ∞ ó¼ÑßΓ« Σá⌐½á .EXE Σá⌐½ .COM,
- Ñß½¿ ºáñá¡ »áαá¼ÑΓα /t, ¡á»α¿¼Ñα, ¬«¼á¡ñá:
-
- tlink -t SHOW87
-
- íπñÑΓ ó¼ÑßΓ« Σá⌐½á SHOW87.EXE ß«ºñáóáΓ∞ Σá⌐½ SHOW87.COM.
-
- Åα¿ »αÑ«íαẫóá¡¿¿ Σá⌐½á .EXE ó Σá⌐½ .COM ¿¼ÑεΓß∩ ¡Ñ¬«Γ«αδÑ
- «úαá¡¿τÑ¡¿∩. ¥Γ¿ «úαá¡¿τÑ¡¿∩ «»¿ßá¡δ ó απ¬«ó«ñßΓóÑ »« «»Ñαᵿ«¡-
- ¡«⌐ ß¿ßΓÑ¼Ñ DOS Σ¿α¼δ IBM (EXE2BIN).
-
- é«»α«ß: èá¬ ß »«¼«Θ∞ε Æπαí« ÇßßѼí½Ñαá ¼«ª¡« áßßÑ¼í½¿α«óáΓ∞
- ¡Ñ߬«½∞¬« Σá⌐½«ó?
-
- ÄΓóÑΓ: ¥Γ« ¼«ª¡« ßñѽáΓ∞, ¿ß»«½∞ºπ∩ ó ¿¼Ñ¡¿ Σá⌐½á ΓαáΣáαÑΓ-
- ¡δÑ ß¿¼ó«½δ ¿½¿ αáºñѽ¿ó ºáñáóáѼδÑ ó ¬«¼á¡ñÑ ¿¼Ñ¡á Σá⌐½«ó º¡á¬«¼
- "»½εß" (+). ìá»α¿¼Ñα, ó ß½ÑñπεΘÑ⌐ ¬«¼á¡ñÑ:
-
- tasm filt + o*
-
- íπñÑΓ áßßÑ¼í½¿α«óáΓ∞ß∩ Σá⌐½ FILT.ASM, á Γá¬ªÑ Σá⌐½δ .ASM, ¬«Γ«αδÑ
- ¡áτ¿¡áεΓß∩ ß íπ¬óδ 'o'.
-
- é«»α«ß: èᬠ¼«ª¡« áßßÑ¼í½¿α«óáΓ∞ ¡Ñ߬«½∞¬« Σá⌐½«ó, ¿ß»«½∞ºπ∩
- ñ½∩ ¡¿σ αạδÑ »áαá¼ÑΓαδ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿?
-
- ÄΓóÑΓ: é ¬áτÑßΓóÑ αáºñѽ¿Γѽ∩ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ Æπαí« Çß-
- ßѼí½Ñαá ¿ß»«½∞ºπÑΓß∩ Γ«τ¬á ß ºá»∩Γ«⌐ (;). Å«φΓ«¼π ó «ñ¡«⌐ ¬«-
- ¼á¡ñ¡«⌐ ßΓα«¬Ñ DOS óδ ¼«ªÑΓÑ ó ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ ºáñáΓ∞ ¡Ñ߬«½∞¬«
- ¬«¼á¡ñ áßßÑ¼í½¿α«óá¡¿∩. ìá»α¿¼Ñα, ß½ÑñπεΘá∩ ¬«¼á¡ñ¡á∩ ßΓ᫬á:
-
- tasm /zi filt; o*
-
- íπñÑΓ áßßÑ¼í½¿α«óáΓ∞ Σá⌐½ FILT.ASM ß ó¬½ετÑ¡¿Ñ¼ ó ¡Ñú« ¿¡Σ«α¼áµ¿¿
- ñ½∩ «Γ½áñ¬¿, á ºáΓѼ áßßÑ¼í½¿α«óáΓ∞ óßÑ Σá⌐½δ .ASM, ¡áτ¿¡áεΘ¿Ñß∩
- ß íπ¬óδ 'o, íѺ ó¬½ετÑ¡¿∩ ¿¡Σ«α¼áµ¿¿ ñ½∩ «Γ½áñ¬¿.
-
- é«»α«ß: îá¬α«áßßѼí½Ñα Σ¿α¼δ Microsoft »«ºó«½∩ÑΓ «»αÑñѽ∩Γ∞
- »ÑαѼѡ¡δÑ «»Ñαᵿ«¡¡«⌐ ßαÑñδ, »«φΓ«¼π ¿σ ¡Ñ ¡πª¡« óó«ñ¿Γ∞ ¡á
- ¬áªñ«⌐ ¬«¼á¡ñ¡«⌐ ßΓ᫬Ñ. ¡« ½¿ φΓ« ßñѽáΓ∞ »α¿ αáí«ΓÑ ß Æπαí«
-
- TASM2 #3-5/䫬 = 260 =
-
- ÇßßѼí½Ñα«¼?
-
- ÄΓóÑΓ: ìÑΓ, «ñ¡á¬«, τΓ«íδ ¿ºíѪáΓ∞ óó«ñá »áαá¼ÑΓα«ó »α¿ ¬áª-
- ñ«¼ ¡áí«αÑ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿, ó Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«ΓαÑ¡ ÑΘÑ
- í«½ÑÑ ú¿í¬¿⌐ ß»«ß«í. èáªñδ⌐ αẠ»α¿ ºá»π᪥ Æπαí« ÇßßѼí½Ñαá «¡
- ¿ΘÑΓ ó ΓѬπΘѼ ¬áΓὫúÑ, á ºáΓѼ ó Γ«¼ ¬áΓὫúÑ, ¿º ¬«Γ«α«ú« «¡
- ºá»π߬áÑΓß∩, (ó DOS óÑαß¿¿ 3.σ ¿ ßΓáαΦÑ) ߻ѵ¿á½∞¡δ⌐ Σá⌐½ ß ¿¼Ñ-
- ¡Ñ¼ TASM.CFG. ¥Γ«Γ Σá⌐½ ¼«ªÑΓ ß«ñÑαªáΓ∞ ½εíπε ¿¡Σ«α¼áµ¿ε, ¬«Γ«αá∩
- ß«ñÑনΓß∩ ó ¬«¼á¡ñ¡«⌐ ßΓ᫬Ñ. Ä¡ «íαáíáΓδóáÑΓß∩ »Ñαóδ¼, »«ß½Ñ
- τÑú« «íαáíáΓδóáÑΓß∩ ¬«¼á¡ñ¡á∩ ßΓ᫬á, »«φΓ«¼π »áαá¼ÑΓαδ ¬«¼á¡ñ¡«⌐
- ßΓ᫬¿ ¿¼ÑεΓ í«½ÑÑ óδß«¬¿⌐ »α¿«α¿ΓÑΓ »« ßαáó¡Ñ¡¿ε ß »áαá¼ÑΓαἿ,
- ¬«Γ«αδÑ ß«ñÑαªáΓß∩ ó Σá⌐½Ñ ¬«¡Σ¿úπαᵿ¿ TASM.CFG. ìá»α¿¼Ñα, Ñß½¿
- ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ óδ óßÑúñá ¿ß»«½∞ºπÑΓÑ »áαá¼ÑΓαδ:
-
- /t /ml /zi /jJUMPS /jLOCALS
-
- Γ« ß½ÑñπÑΓ ß«ºñáΓ∞ Σá⌐½ TASM.CFG, ß«ñÑαªáΘ¿⌐ ß½ÑñπεΘ¿Ñ ßΓ᫬¿:
-
- /t
- /ml
- /zi
- /jJUMPS
- /jLOCALS
-
- çá¼ÑΓ¿¼, τΓ« »α¿ ¬áªñ«¼ ºá»π᪥ Æπαí« ÇßßѼí½Ñαá φΓ¿ »áαá-
- ¼ÑΓαδ íπñπΓ ¿ß»«½∞º«óáΓ∞ß∩ »« π¼«½τá¡¿ε. ¥Γ« «º¡áτáÑΓ, τΓ« Ñß½¿
- φΓ« ¡Ñ«íσ«ñ¿¼«, óδ ¼«ªÑΓÑ ñ½∩ ¬áªñ«ú« ¿º ßó«¿σ »α«Ñ¬Γ«ó ¿¼ÑΓ∞
- αẽ¿τ¡δÑ Σá⌐½δ TASM.CFG. àß½¿ π óáß ¿¼ÑÑΓß∩ ¡Ñ߬«½∞¬« »α«Ñ¬Γ«ó
- (»α«úαá¼¼), ß«ñÑαªáΘ¿σß∩ ó «ñ¡«¼ »«ñ¬áΓὫúÑ, Γ« óδ ¼«ªÑΓÑ ñ½∩
- ¬áªñ«ú« ¿º ¡¿σ ß«ºñáΓ∞ «Γñѽ∞¡δ⌐ Σá⌐½ ¬«¡Σ¿úπαᵿ¿ ¿ ¿ß»«½∞º«óáΓ∞
- ¿σ, ¬á¬ ¬«ßóÑ¡¡δÑ ¬«¼á¡ñ¡δÑ Σá⌐½δ Æπαí« ÇßßѼí½Ñαá.
-
- é«»α«ß: ùΓ« »αÑñßΓáó½∩εΓ ß«í«⌐ ¬«ßóÑ¡¡δÑ ¬«¼á¡ñ¡δÑ Σá⌐½δ
- Æπαí« ÇßßѼí½Ñαá?
-
- ÄΓóÑΓ: ¥Γ« Σá⌐½δ, ¬«Γ«αδÑ ß«ñÑαªáΓ τáßΓ¿τ¡δÑ ¿½¿ »«½¡δÑ ¬«-
- ¼á¡ñ¡δÑ ßΓ᫬¿ Æπαí« ÇßßѼí½Ñαá, ¿ »ÑαÑñ ¬«Γ«α묨 π¬áºδóáÑΓß∩
- º¡á¬ @. ìá»α¿¼Ñα, Ñß½¿ π óáß ¿¼ÑÑΓß∩ Σá⌐½ ß ¿¼Ñ¡Ñ¼ "FILE.CMD",
- ¬«Γ«αδ⌐ ß«ñÑαª¿Γ ß½ÑñπεΘÑÑ:
-
- /t
- /ml
- /zi
- /jJUMPS
- /jLOCALS
- file1 +
-
- TASM2 #3-5/䫬 = 261 =
-
- file2 +
- file3 +
- file4
-
- Γ« óáß ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ ¬«¼á¡ñ¡πε ßΓ᫬π:
-
- tasm @FILE.CMD
-
- á ¡Ñ ¬«¼á¡ñ¡πε ßΓ᫬π:
-
- tasm /t /ml /zi /jJUMPS /jLOCALS file1+file2+file3+file4
-
- çá¼ÑΓ¿¼, τΓ« ß¿¼ó«½ @ ó ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ ¡Ñ ∩ó½∩ÑΓß∩ τáßΓ∞ε
- ¿¼Ñ¡¿ Σá⌐½á. öá¬Γ¿τÑ߬¿, Ñß½¿ óδ »α¿ßó«¿ΓÑ Σá⌐½π ¿¼∩, ¬«Γ«α«Ñ ¡á-
- τ¿¡áÑΓß∩ ß ß¿¼ó«½á @, Γ« Æπαí« ÇßßѼí½Ñα íπñÑΓ «íαáíáΓδóáΓ∞ Ñú«,
- ¬á¬ ¬«ßóÑ¡¡δ⌐ ¬«¼á¡ñ¡δ⌐ Σá⌐½.
-
- é«»α«ß: ƒ óδ»«½¡∩ε ¬«¼»«¡«ó¬π ßó«¿σ Σπ¡¬µ¿⌐ ¡á ∩ºδ¬Ñ ÇßßѼí-
- ½Ñαá ß Æπαí« æ¿. Å«τÑ¼π ¬«¼»«¡«óΘ¿¬ ß««íΘáÑΓ, τΓ« óßÑ ¼«¿ Σπ¡¬µ¿¿
- ¡Ñ«»αÑñѽѡδ?
-
- ÄΓóÑΓ: ôíÑñ¿ΓÑß∞, τΓ« »ÑαÑñ óßѼ¿ ¿¼Ñ¡á¼¿ Σπ¡¬µ¿⌐, αÑ὿º«-
- óá¡¡δσ ¡á ÇßßѼí½ÑαÑ ¿ óδºδóáѼδσ ó Æπαí« æ¿, óδ π¬áºá½¿ ß¿¼ó«½
- »«ñτÑનóá¡¿∩ (_). àß½¿ óδ ¿ß»«½∞ºπÑΓÑ π»α«ΘÑ¡¡δÑ «»αÑñѽѡ¿∩
- ßÑú¼Ñ¡Γ«ó ¿ ó¬½ετáÑΓÑ ó ñ¿αÑ¬Γ¿óπ .MODEL ߻ѵ¿Σ¿¬áΓ«α ∩ºδ¬á æ¿,
- Γ« Æπαí« ÇßßѼí½Ñα íπñÑΓ ñ«íáó½∩Γ∞ φΓ¿ ß¿¼ó«½δ áóΓ«¼áΓ¿τÑ߬¿. éá-
- Φá »α«úαá¼¼á ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ñ«½ª¡á áßßÑ¼í½¿α«óáΓ∞ß∩ ß αẽ¿-
- τ¿Ñ¼ ó íπ¬óáσ óÑασ¡Ñú« ¿ ¡¿ª¡Ñú« αÑú¿ßΓα«ó (»áαá¼ÑΓαδ /ML ¿½¿
- /MX). Å«ñα«í¡«ßΓ¿ ¼«ª¡« πº¡áΓ∞ ó â½áóÑ 6 "Äαúá¡¿ºáµ¿∩ ¿¡ΓÑαΣÑ⌐ßá
- Æπαí« ÇßßѼí½Ñαá ¿ Æπαí« æ¿".
-
- é«»α«ß: ¡« ½¿ ó ¬áτÑßΓóÑ ß»Ñµ¿Σ¿¬áΓ«αá »áαá¼ÑΓαá π¬áºδ-
- óáΓ∞ ¡Ñ »α∩¼πε (/), á «íαáΓ¡πε ¬«ßπε τÑαΓπ (\)?
-
- ÄΓóÑΓ: ìÑΓ. Æπαí« ÇßßѼí½Ñα (¿ MASM) íπñπΓ «íαáíáΓδóáΓ∞ φΓ«,
- ¬á¬ ¿¼∩ Σá⌐½á, ¬«Γ«αδ⌐ ¡áσ«ñ¿Γß∩ ó ¬«α¡Ñó«¼ ¬áΓὫúÑ ¡á ¿ß»«½∞ºπ-
- Ѽ«¼ »« π¼«½τá¡¿ε ñ¿ß¬Ñ. Æá¬ ¬á¬ «íá áßßѼí½Ñαá «íαáíáΓδóáεΓ ß¿¼-
- ó«½ »α«íÑ½á ¿ñÑ¡Γ¿τ¡« ºá»∩Γ«⌐, φΓ« ¼«ªÑΓ »α¿óÑßΓ¿ ¬ »«ΓÑαÑ Σá⌐-
- ½«ó. àß½¿ óδ ß½πτá⌐¡« ºáñáñ¿ΓÑ ß½ÑñπεΘπε ¬«¼á¡ñ¡πε ßΓ᫬π:
-
- tasm \zi prid&joy.asm
-
- Γ« Æπαí« ÇßßѼí½Ñα (¿ MASM) ó«ß»α¿¡∩½¿ íδ φΓ𠬫¼á¡ñ¡πε ßΓ᫬π,
- ¬á¬ π¬áºá¡¿Ñ áßßÑ¼í½¿α«óáΓ∞ Σá⌐½ ß ¿¼Ñ¡Ñ¼ ZI.ASM, ¬«Γ«αδ⌐ ¼«ª¡«
- ¡á⌐Γ¿ ó ¬«α¡Ñó«¼ ¬áΓὫúÑ, ¿ ß«ºñáΓ∞ óδσ«ñ¡«⌐ Σá⌐½ (ó ΓѬπΘѼ ¬á-
- ΓὫúÑ) ß ¿¼Ñ¡Ñ¼ PRID&JOY.ASM. (çá¼ÑΓ¿¼, τΓ« ¿ß»«½∞ºπѼ«Ñ »«
-
- TASM2 #3-5/䫬 = 262 =
-
- π¼«½τá¡¿ε αáßΦ¿αÑ¡¿Ñ «íΩÑ¬Γ¡«ú« Σá⌐½á .OBJ ∩ó¡« »ÑαÑ«»αÑñѽѡ« ó
- .ASM.) öá⌐½ PRID&JOY.ASM íπñÑΓ »ÑαѺỿßá¡ «íΩÑ¬Γ¡δ¼ Σá⌐½«¼, ½¿í«
- íπñÑΓ πñá½Ñ¡, Ñß½¿ Σá⌐½ \ZI.ASM ¡Ñ󫺼«ª¡« ¡á⌐Γ¿ ¿ πß»ÑΦ¡« áß-
- ßÑ¼í½¿α«óáΓ∞. é ½εí«⌐ ß½πτáÑ ¿ßσ«ñ¡«Ñ ß«ñÑন¼«Ñ Σá⌐½á
- PRID&JOY.ASM íπñÑΓ »«ΓÑα∩¡«.
-
-