home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-02-25 | 408.3 KB | 10,494 lines |
-
- â½áóá 6. ü«½ÑÑ »«ñα«í¡« « »α«úαá¼¼¿α«óá¡¿¿ ¡á Æπαí« ÇßßѼí½ÑαÑ
- -----------------------------------------------------------------
-
- Åα«τ¿Γáó »«ß½Ññ¡¿Ñ ñóÑ ú½áóδ, óδ, ¬«¡Ñτ¡«, «τÑ¡∞ ¼¡«ú« πº¡á-
- ½¿ « ∩ºδ¬Ñ ÇßßѼí½Ñαá, ¡« «ßΓáÑΓß∩ πº¡áΓ∞ ÑΘÑ ¡á¼¡«ú« í«½∞ΦÑ. é
- ñá¡¡«⌐ ú½áóÑ ¼δ ¬«ß¡Ñ¼ß∩ ¡Ñ¬«Γ«αδσ ñ«ó«½∞¡« αáºó¿Γδσ, ¡« óÑß∞¼á
- »«½Ñº¡δσ áß»Ñ¬Γ«ó Æπαí« ÇßßѼí½Ñαá ¿ »α«úαá¼¼¿α«óá¡¿∩ ¡á ∩ºδ¬Ñ
- ÇßßѼí½Ñαá.
-
- îδ «íßπñ¿¼ ó τáßΓ¡«ßΓ¿ ß½ÑñπεΘ¿Ñ ΓѼδ:
-
- - ä¿αÑ¬Γ¿óδ Æπαí« ÇßßѼí½Ñαá EQU ¿ =, ¬«Γ«αδÑ »«ºó«½∩Γ óá¼
- »α¿ßóá¿óáΓ∞ ¿¼Ñ¡á¼ º¡áτÑ¡¿∩ ¿ ΓѬßΓ«óδÑ ßΓ᫬¿.
-
- - î«Θ¡δÑ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ Æπαí« ÇßßѼí½Ñαá.
-
- - 髺¼«ª¡«ßΓ∞ áßßÑ¼í½¿α«óá¡¿∩ ß »«¼«Θ∞ε Æπαí« ÇßßѼí½Ñαá
- ¡Ñ߬«½∞¬¿σ ¿ßσ«ñ¡δσ Σá⌐½«ó ¿ »«ß½ÑñπεΘÑú« ¿ß»«½∞º«óá¡¿∩ πΓ¿½¿Γδ
- TLINK ñ½∩ ¬«¼»«¡«ó¬¿ ¿σ ó «ñ¡π »α«úαá¼¼π.
-
- - 髺¼«ª¡«ßΓ∞ Æπαí« ÇßßѼí½Ñαá ó¬½ετáΓ∞ «Γñѽ∞¡δÑ Σá⌐½δ ¿ß-
- σ«ñ¡«ú« ¬«ñá ó ½εíπε »α«úαá¼¼π ¡á ÇßßѼí½ÑαÑ.
-
- - êßτÑα»δóáεΘ¿Ñ Σá⌐½δ ½¿ßΓ¿¡ú«ó ¿ßσ«ñ¡«ú« ¬«ñá Æπαí« ÇßßѼ-
- í½Ñαá.
-
- ê¼ÑÑΓß∩ 󫺼«ª¡«ßΓ∞ »¿ßáΓ∞ »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ Γᬿ¼ «í-
- αẫ¼, τΓ« «¡¿ íπñπΓ áßßÑ¼í½¿α«óáΓ∞ß∩ »«-αạ«¼π »α¿ αẽ¿τ¡δσ
- «íßΓ«∩Γѽ∞ßΓóáσ. îδ αáßß¼«Γα¿¼, »«τѼπ φΓ« ¼«ªÑΓ «¬áºáΓ∞ß∩ »«½Ñº-
- ¡δ¼, ¿ ñ¿αÑ¬Γ¿óδ, ñѽáεΘ¿Ñ φΓ« 󫺼«ª¡δ¼. ìᬫ¡Ñµ, ¼δ αáßß¼«Γα¿¼
- ¡Ñ¬«Γ«αδÑ ¡á¿í«½ÑÑ «íΘ¿Ñ «Φ¿í¬¿, ¬«Γ«αδÑ «íδτ¡« ñѽáεΓ »α«úαá¼-
- ¼¿ßΓδ, αáí«ΓáεΘ¿Ñ ¡á ÇßßѼí½ÑαÑ.
-
- éá¼ ß½ÑñπÑΓ «í∩ºáΓѽ∞¡« »α«ß¼«ΓαÑΓ∞ ñá¡¡πε ú½áóπ, 󫺼«ª¡«,
- ñáªÑ ¡Ñ 󡿬á∩ ú½πí«¬« ó ÑÑ ß«ñÑαªá¡¿Ñ. æÑú«ñ¡∩ φΓá ¿¡Σ«α¼áµ¿∩
- ¼«ªÑΓ óá¼ ¡Ñ »«ΓαÑí«óáΓ∞ß∩, ¡« ºáóΓαá, ¬«úñá ó ¡Ñ⌐ »«∩ó¿Γß∩ ¡Ñ«í-
- σ«ñ¿¼«ßΓ∞, óδ íπñÑΓÑ º¡áΓ∞, úñÑ ÑÑ ¿ß¬áΓ∞.
-
-
- êß»«½∞º«óá¡¿Ñ ñ¿αÑ¬Γ¿ó »α¿ßóá¿óá¡¿∩
- -----------------------------------------------------------------
-
- äáóá⌐ΓÑ ¡áτ¡Ñ¼ ß αáßß¼«ΓαÑ¡¿∩ ñ¿αÑ¬Γ¿ó EQU ¿ = ñ½∩ »α¿ßóá¿-
- óá¡¿∩ ¼ÑΓ«¬ º¡áτÑ¡¿∩¼ ¿ ΓѬßΓ«óδ¼ ßΓ᫬á¼. ¥Γ« «τÑ¡∞ »«½Ñº¡«Ñ
- ßαÑñßΓó«, »«ºó«½∩εΘÑÑ ßñѽáΓ∞ »α«úαá¼¼π ¡á ÇßßѼí½ÑαÑ í«½ÑÑ »«-
- ¡∩Γ¡«⌐ ¿ ½Ñú¬« «íß½πª¿óáѼ«⌐.
-
- ä¿αÑ¬Γ¿óá EQU
- -----------------------------------------------------------------
-
- Åα¿τ¿¡á ¿ß»«½∞º«óá¡¿∩ ¼ÑΓ«¬ ñ½∩ ¿¼Ñ¡ »ÑαѼѡ¡δσ, »«ñ»α«úαá¼¼
- ¿ ¬«¡¬αÑΓ¡δσ ¿¡ßΓαπ¬µ¿⌐ «τÑó¿ñ¡á. éÑñ∞ ó »α«Γ¿ó¡«¼ ß½πτáÑ ¼δ ¡Ñ
- ¼«ú½¿ íδ ßßδ½áΓ∞ß∩ »« ¿¼Ñ¡á¼ ¡á φΓ¿ φ½Ñ¼Ñ¡Γδ »α«úαá¼¼. é αáó¡«⌐
- ßΓѻѡ¿ ó᪡á, ¡« ¼Ñ¡ÑÑ «τÑó¿ñ¡á, ¡Ñ«íσ«ñ¿¼«ßΓ∞ »α¿ßóá¿óáΓ∞ ¼ÑΓ-
- ¬á¼ º¡áτÑ¡¿∩ ¿ ΓѬßΓ«óδÑ ßΓ᫬¿.
-
- Åα¿ßó«¿Γ∞ ¼Ñ⪥ τ¿ß½«ó«Ñ º¡áτÑ¡¿Ñ ¿½¿ ΓѬßΓ«óπε ßΓ᫬𠻫º-
- ó«½∩ÑΓ ñ¿αÑ¬Γ¿óá EQU. æßδ½¬á ¡á ¼ÑΓ¬π ñ¿αÑ¬Γ¿óδ EQU Γαá¡ß½¿απÑΓß∩
- ó ½¿ΓÑαá½∞¡«Ñ »α¿αáó¡¿óá¡¿Ñ. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«ú-
- αá¼¼δ:
-
- .
- .
- .
- END_OF_DATA EQU '!' ; "¬«¡Ñµ ñá¡¡δσ"
- STORAGE_BUFFER_SIZE EQU 1000 ; αẼÑα íπΣÑαá
- .DATA
- StorageBuffer DB STORAGE_BUFFER_SIZE DUP (?)
- .
- .
- .
- .CODE
- mov ax,@Data
- mov ds,ax
- sub di,di ; πßΓá¡«ó¿Γ∞ π¬áºáΓѽ∞
- ; íπΣÑαá ó º¡áτÑ¡¿Ñ 0
- StorageLoop:
- mov ah,1
- int 21h ; »«½πτ¿Γ∞ ß½ÑñπεΘπε
- ; ¡áªáΓπε ¬½áó¿Φπ
- mov [StarageBuffer+di],al ; ß«σαá¡¿Γ∞ ß½ÑñπεΘπε
- ; ¡áªáΓπε ¬½áó¿Φπ
- cmp al,END_OF_DATA ; φΓ« ¬½áó¿Φá "¬«¡Ñµ
- ; ñá¡¡δσ"?
- je DataAckquired ; ñá, »ÑαÑ⌐Γ¿ ¬
- ; «íαáí«Γ¬Ñ ñá¡¡δσ
- inc di ; »«ñßτ¿ΓáΓ∞ φΓ«
- ; ¡áªáΓ¿Ñ ¬½áó¿Φ¿
- cmp di,STORAGE_BUFFER_SIZE ; ¼δ »ÑαÑ»«½¡¿½¿
- ; íπΣÑα?
- jb StorageLoop ; ¡ÑΓ, »«½πτ¿Γ∞
- ; ß½ÑñπεΘπε ¬½áó¿Φπ
- ; üπΣÑα »ÑαÑ»«½¡Ñ¡...
-
- .
- .
- .
- ; îδ »«½πτ¿½¿ ñá¡¡δÑ
- DataAcquired:
- .
- .
- .
-
- çñÑß∞ ñ¿αÑ¬Γ¿óá EQU ¿ß»«½∞ºπÑΓß∩ ñ½∩ «»αÑñѽѡ¿∩ ñóπσ ¼Ñ-
- Γ«¬: STORAGE_BUFFER_SIZE ¿ END_OF_DATA. îÑΓ¬á END_OF_DATA »α¿αáó-
- ¡¿óáÑΓß∩ ¬ ß¿¼ó«½π "!" ¿ ßαáó¡Ñ¡¿Ñ ß ¡Ñ⌐ óδ»«½¡∩ÑΓß∩ »α¿ ¬áªñ«¼
- ¡áªáΓ¿¿ ¬½áó¿Φ¿, τΓ«íδ «»αÑñѽ¿Γ∞, ¡Ñ óßΓαÑΓ¿½¿ ½¿ ¼δ ¬«¡Ñµ ñá¡-
- ¡δσ. ¥Γ« »«¬áºδóáÑΓ «ñ¡« ¿º ßπΘÑßΓóÑ¡¡δσ »αÑ¿¼πΘÑßΓó ¿ß»«½∞º«óá-
- ¡¿∩ ñ¿αÑ¬Γ¿óδ »α¿αáó¡¿óá¡¿∩ (EQU), óÑñ∞ ¼ÑΓ¬¿ º¡áτ¿Γѽ∞¡« í«½ÑÑ
- ¿¡Σ«α¼áΓ¿ó¡δ, τѼ º¡áτÑ¡¿∩-¬«¡ßΓá¡Γδ. èα«¼Ñ Γ«ú«, ¡áº¡áτÑ¡¿Ñ
- ¿¡ßΓαπ¬µ¿¿:
-
- cmp al,END_OF_DATA
-
- «»αÑñѽѡ¡« »«¡∩Γ¡Ñ⌐, τѼ ¡áº¡áτÑ¡¿Ñ ¿¡ßΓαπ¬µ¿¿:
-
- cmp al,'!'
-
- (END_OF_DATA «º¡áτáÑΓ "èÄìàû_äÇìì¢ò").
-
- êß»«½∞º«óá¡¿Ñ ¼ÑΓ¬¿ STORAGE_BUFFER_SIZE ¿½½εßΓα¿απÑΓ ÑΘÑ
- «ñ¿¡ ñ«ó«ñ ó »«½∞ºπ »α¿¼Ñ¡Ñ¡¿∩ »α¿αáó¡¿óá¡¿∩ (»α¿ßóá¿óá¡¿∩).
- STORAGE_BUFFER_SIZE, ñ½∩ ¬«Γ«α«ú« πßΓá¡áó½¿óáÑΓß∩ º¡áτÑ¡¿Ñ 1000,
- ¿ß»«½∞ºπÑΓß∩ ¬á¬ ñ½∩ ß«ºñá¡¿∩ íπΣÑαá ó »á¼∩Γ¿ αẼÑα«¼ ó 1000
- íá⌐Γ, Γᬠ¿ ñ½∩ »α«óÑન φΓ«ú« íπΣÑαá ¡á »ÑαÑ»«½¡Ñ¡¿Ñ. é «í«¿σ
- ß½πτá∩σ ¼«ª¡« í佫 íδ ¿ß»«½∞º«óáΓ∞ ¬«¡ßΓá¡Γπ 1000, ¡« φΓ« ú«αáºñ«
- ¼Ñ¡ÑÑ ¿¡Σ«α¼áΓ¿ó¡«, τѼ ¼ÑΓ¬á STORAGE_BUFFER_SIZE ("ÉÇçîàÉ_üôöàÉÇ
- _é_ÅÇîƒÆê").
-
- ÅαÑñ»«½«ª¿¼ ΓÑ»Ñα∞, τΓ« óδ σ«ñ¿ΓÑ ¿º¼Ñ¡¿Γ∞ αẼÑα íπΣÑαá ó
- »á¼∩Γ¿. ä½∩ φΓ«ú« óá¼ »α¿ñÑΓß∩ ¿º¼Ñ¡¿Γ∞ «»Ñαá¡ñ Γ«½∞¬« ó «ñ¡«⌐
- ñ¿αÑ¬Γ¿óÑ EQU, φΓ¿¼ ßá¼δ¼ óδ ó¡ÑßÑΓÑ ¿º¼Ñ¡Ñ¡¿∩ »« óßѼπ ΓѬßΓπ
- »α«úαá¼¼δ. è«¡Ñτ¡«, ó »α«Γ¿ó¡«¼ ß½πτáÑ ¿º¼Ñ¡¿Γ∞ ñóÑ ¬«¡ßΓá¡Γδ ó
- »α«úαá¼¼Ñ í佫 íδ ¡ÑΓαπñ¡«, ¡« ñá¡¡á∩ ¬«¡ßΓá¡Γá ¼«ú½á íδ ¿ß»«½∞-
- º«óáΓ∞ß∩ ó ñÑß∩Γ¬áσ ¿½¿ ß«Γ¡∩σ ¼ÑßΓ. Ç ó φΓ«¼ ß½πτáÑ ú«αáºñ« ½Ñú-
- τÑ (¿ »α¿ φΓ«¼ ¼Ñ¡∞ΦÑ óÑα«∩Γ¡«ßΓ∞ ó¡ÑßÑ¡¿∩ ó »α«úαá¼¼π «Φ¿í¬¿)
- ¿º¼Ñ¡¿Γ∞ «ñ¡« »α¿αáó¡¿óá¡¿Ñ, τѼ ñÑß∩Γ¬¿ ¿½¿ ß«Γ¡¿ ¬«¡ßΓá¡Γ.
-
- Ä»Ñαá¡ñ ó ñ¿αÑ¬Γ¿óÑ »α¿αáó¡¿óá¡¿∩ ¼ÑΓ¬¿ ¼«ªÑΓ ßá¼ ß«ñÑαªáΓ∞
- ¼ÑΓ¬¿, »α¿ßóá¿óá¡¿Ñ ñ½∩ ¬«Γ«αδσ óδ»«½¡∩ÑΓß∩ ó ñαπú¿σ ¼ÑßΓáσ. ìá»-
- α¿¼Ñα:
-
- .
- .
- .
- TABLE_OFFSET EQU 1000h
- INDEX_START EQU (TABLE_OFFSET+2)
- DICT_START EQU (TABLE_OFFSET+100h)
- .
- .
- .
- mov ax,WORD PTR ]bx+INDEX_START] ; »«½πτ¿Γ∞
- ; »Ñαóπε ¿¡ñѬߡπε ºá»¿ß∞
- .
- .
- .
- lea si,[bx+DICT_START] ; π¬áºáΓѽ∞ ¡á »Ñαóπε
- ; ºá»¿ß∞ ß½«óáα∩
- .
- .
- .
-
- τΓ« φ¬ó¿óá½Ñ¡Γ¡« ß½ÑñπεΘѼπ:
-
- .
- .
- .
- mov ax,WORD PTR [bx+1000h+2]
- lea si,[bx+1000h+100h]
- .
- .
- .
-
- Åα¿αáó¡Ñ¡¡δÑ ¼ÑΓ¬¿ πñ«í¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ »α¿ßóá¿óá¡¿∩ αáº-
- ½¿τ¡δ¼ »αÑαδóá¡¿∩¼, »«αΓá¼ ¿ ∩τÑ⌐¬á¼ »á¼∩Γ¿ ¬«¼»∞εΓÑαá Éæ »«¡∩Γ-
- ¡δσ ¿¼Ñ¡. Åα«¿½½εßΓα¿απѼ ¡Ñ¬«Γ«αδÑ ß½πτá¿ Γᬫú« ¿ß»«½∞º«óá¡¿∩
- ñ¿αÑ¬Γ¿óδ EQU ¡á ß½ÑñπεΘѼ »α¿¼ÑαÑ:
-
- .
- .
- .
- DOS_INT EQU 21h ; »αÑαδóá¡¿∩ »« ó맮óπ
- ; Σπ¡¬µ¿¿ DOS
- CGA_STATUS EQU 3dah ; »«αΓ ß«ßΓ«∩¡¿∩ áñá»ΓÑαá
- ; CGA
- VSYNC_MASK EQU 00001000b ; óδñѽ¿Γ∞ í¿Γ ó ß«ßΓ«∩¡¿¿
- ; »«αΓá CGA, π¬áºδóáεΘ¿⌐,
- ; ¬«úñá óδ ¼«ªÑΓÑ ¿º¼Ñ¡∩Γ∞
- ; ¿º¼Ñ¡∩Γ∞ φ¬αá¡, ¡Ñ óδºδóá∩
- ; »«¼Ñσ ("ߡѪ¡δσ 󽫻∞Ñó")
- BIAS_SEGMENT EQU 40h ; ßÑú¼Ñ¡Γ BIOS, ó ¬«Γ«α«¼
- ; σαá¡∩Γß∩ ñá¡¡δÑ
- EQUIPMENT_FLAG EQU 10h ; ß¼ÑΘÑ¡¿Ñ ó ßÑú¼Ñ¡ΓÑ BIOS
- ; »ÑαѼѡ¡«⌐ Σ½áúá á»»áαáΓ-
- ; ¡«ú« «íÑß»ÑτÑ¡¿∩
- .
- .
- .
- mov ah,2
- mov di,'Z'
- int DOS_Int ; ¡á»ÑτáΓáΓ∞ ß¿¼ó«½ "Z"
- .
- .
- .
- ; Å«ñ«ªñáΓ∞, »«¬á ¼«ª¡« íπñÑΓ «í¡«ó¿Γ∞ φ¬αá¡, ¡Ñ óδºδóá∩
- ; »«¼Ñσ
- mov dx,CGA_STATUS
- WaitForVerticalSync:
- in al,dx ; »«½πτ¿Γ∞ ßΓáΓπß CGA
- and al,VSYNC_MASK ; ¿ñÑΓ óÑαΓ¿¬á½∞¡á∩
- ; ß¿¡σα«¡¿ºáµ¿∩?
- jz WaitForVerticalSync ; ¡ÑΓ, ºáóÑαΦ¿Γ∞
- ; «ª¿ñá¡¿Ñ
- .
- .
- .
- mov ax,BIOS_SEGMENT
- mov ds,ax ; DS π¬áºδóáÑΓ ¡á ßÑú¼Ñ¡Γ
- ; ñá¡¡δσ BIOS
- mov bx,EQUIPMENT_FLAG ; ßßδ½¬á ¡á Σ½áú
- ; á»»áαáΓ¡«ú« «íÑß»ÑτÑ¡¿∩
- and BYTE PTR [bx],NOT 30h
- or BYTE PTR [bx],20h ; πßΓá¡«ó¿Γ∞ Σ½áú
- ; á»»áαáΓ¡«ú« «íÑß»ÑτÑ¡¿∩
- ; Γá¬, τΓ«íδ íδ½ óδíαá¡
- ; µóÑΓ¡«⌐ αѪ¿¼ ß 80
- ; »«º¿µ¿∩¼¿ ó ßΓ᫬Ñ
- .
- .
- .
-
- Åα¿αáó¡Ñ¡¡δÑ ¼ÑΓ¬¿, ó ¬«Γ«αδσ ¿ß»«½∞ºπεΓß∩ ñαπú¿Ñ »α¿αáó¡Ñ¡-
- ¡δÑ ¼ÑΓ¬¿, αáßΦ¿α∩εΓ »α¿¡µ¿» ¿ß»«½∞º«óá¡¿∩ »α¿ßóá¿óá¡¿⌐ ñ½∩ «í-
- ½ÑúτÑ¡¿∩ ¿º¼Ñ¡Ñ¡¿∩ óáΦ¿σ »α«úαá¼¼. ìá»α¿¼Ñα, Ñß½¿ ó »αÑñδñπΘѼ
- »α¿¼ÑαÑ óδ »ÑαѼÑßΓ¿ΓÑ óßÑ ßß佬¿ ó Γáí½¿µÑ ¡á 10 íá⌐Γ í½¿ªÑ ¬
- BX, óá¼ »α¿ñÑΓß∩ ¿º¼Ñ¡¿Γ∞ Γ«½∞¬« »α¿ßóá¿óá¡¿Ñ ñ½∩ TABLE_OFFSET
- ¡á:
-
- TABLE_OFFSET EQU (1000h - 10)
-
- Å«ß½Ñ óδ»«½¡Ñ¡¿∩ áßßÑ¼í½¿α«óá¡¿∩ INDEX_START ¿ DICT_START
- íπñπΓ ¡áßΓα«Ñ¡δ ó ß««ΓóÑΓßΓó¿¿ ß TABLE_OFFSET, Γᬠ¬á¬ ¿σ º¡áτÑ-
- ¡¿∩ «ß¡«óδóáεΓß∩ ¡á TABLE_OFFSET.
-
- èßΓáΓ¿, ߬«í¬¿ ó ¬«Γ«αδÑ ºá¬½ετÑ¡ «»Ñαá¡ñ ñ¿αÑ¬Γ¿óδ EQU,
- ∩ó½∩εΓß∩ ¡Ñ«í∩ºáΓѽ∞¡δ¼¿, ¡« «¡¿ ¡Ñ »«¼ÑΦáεΓ, »«ß¬«½∞¬π »«¼«úáεΓ
- ó¿ºπá½∞¡« óδñѽ¿Γ∞ «»Ñαá¡ñ.
-
- ä¿αÑ¬Γ¿óπ EQU ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ »α¿ßóá¿óá¡¿∩ ¼Ñ⪥ ΓѬ-
- ßΓ«ó«⌐ ßΓ᫬¿ ¿½¿ º¡áτÑ¡¿∩. ìá»α¿¼Ñα, ñá½ÑÑ ¼ÑΓ¬á ¿ß»«½∞ºπÑΓß∩
- ñ½∩ σαá¡Ñ¡¿∩ óδó«ñ¿¼«⌐ ¡á »ÑτáΓ∞ ΓѬßΓ«ó«⌐ ßΓ᫬¿:
-
- .
- .
- .
- EQUATED_STRING EQU 'Åα¿¼Ñα ΓѬßΓ«ó«⌐ ßΓ᫬¿'
- .
- .
- .
- TextMessage DB EQUATED_STRING
- .
- .
- .
- mov dx,OFFSET TextMessage
- mov ah,9
- int 21h ; ¡á»ÑτáΓáΓ∞ TextMessage
- .
- .
- .
-
- îÑΓ¬¿, »α¿αáó¡Ñ¡¡δÑ ¬ ΓÑßΓ«óδ¼ ßΓ᫬á¼, ¼«úπΓ ¿ß»«½∞º«óáΓ∞ß∩
- ó ¬áτÑßΓóÑ «»Ñαá¡ñ«ó. ìá»α¿¼Ñα:
- .
- .
- .
- REGISTER_BX EQU BX
- .
- .
- .
- mov ax,REGISTER_BX
- .
- .
- .
-
- ¥Γ« áßßÑ¼í½¿απÑΓß∩ ó ¿¡ßΓαπ¬µ¿ε:
-
- mov ax,bx
-
- Äíδτ¡« ¡Ñ 󫺡¿¬áÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ »α¿αáó¡¿óáΓ∞ ¼ÑΓ¬π ¬ αÑ-
- ú¿ßΓαπ, ¡« óδ ¼«ªÑΓÑ, ¡á»α¿¼Ñα, ¿ß»«½∞º«óáΓ∞ »α¿αáó¡Ñ¡¡δÑ ¼ÑΓ¬¿
- ¿½¿ ARG ñ½∩ »α¿ßóá¿óá¡¿∩ ¿¼Ñ¡¿ »ÑαÑñáóáÑ¼δ¼ ó ßΓÑ¬Ñ »áαá¼ÑΓαá¼ ¿
- óδñѽ∩Ѽ«⌐ ó ßΓÑ¬Ñ ñ¿¡á¼¿τÑ߬«⌐ »á¼∩Γ¿:
-
- ;
- ; éδºδóáѼá∩ ¿º æ¿ (¼«ñѽ∞ NEAR) »«ñ»α«úαá¼¼á, óδ»«½¡∩εΘá∩
- ; ß½«ªÑ¡¿Ñ ΓαÑσ µÑ½δσ »áαá¼ÑΓα«ó ¿ ó«ºóαáΘáεΘá∩ µÑ½δ⌐
- ; αѺπ½∞ΓáΓ. Åα«Γ«Γ¿» Σπ¡¬µ¿¿:
- ;
- ; int AddThree(int I, int J, int K)
- ;
- Temp EQU [bp-2]
- I EQU [bp+4]
- J EQU [bp+6]
- K EQU [bp+8]
- ;
- _AddThree PROC
- push bp ; ß«σαá¡¿Γ∞ BP óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
- mov bp,sp ; ßßδ½¬á ¡á αἬπ ßΓѬá
- sub sp,2 ; óδñѽ¿Γ∞ ¼ÑßΓ« ñ½∩ Temp
- mov ax,I ; »«½πτ¿Γ∞ I
- add ax,J ; óδτ¿ß½¿Γ∞ I + J
- mov ax,K ; »«½πτ¿Γ∞ K
- mov Temp,ax ; óδτ¿ß½¿Γ∞ I + J + K
- mov sp,bp ; «ßó«í«ñ¿Γ∞ óδñѽѡ¡«Ñ
- ; ñ½∩ Temp »α«ßΓαá¡ßΓó«
- pop bp ; ó«ßßΓá¡«ó¿Γ∞ º¡áτÑ¡¿Ñ BP
- ; óδºδóáεΘÑ⌐ »α«úαá¼¼δ
- ret
- _AddThree ENDP
-
- éδ ¼«ªÑΓÑ »α¿¼Ñ¡∩Γ∞ ñ¿αÑ¬Γ¿óπ EQU ñ½∩ »α¿ßóá¿óá¡¿∩ ¿¼Ñ¡¿ ½ε-
- í«⌐ ΓѬßΓ«ó«⌐ ßΓ᫬Ñ, ¬«Γ«αá∩ ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ó ¬áτÑßΓóÑ
- «»Ñαá¡ñá. é ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ »α¿αáó¡Ñ¡¡δÑ
- ¼ÑΓ¬¿ ó »«½Ñ ¿¡ßΓαπ¬µ¿¿ ¿½¿ ñ¿αÑ¬Γ¿óδ, á ¡Ñ Γ«½∞¬« ó »«½Ñ «»Ñαá¡-
- ñá, σ«Γ∩ Γαπñ¡« »αÑñßΓáó¿Γ∞, ñ½∩ τÑú« φΓ« ¼«ªÑΓ »«¡áñ«í¿Γ∞ß∩.
-
- ùΓ«íδ «»Ñαá¡ñ ñ¿αÑ¬Γ¿óδ EQU αáßß¼áΓα¿óá½ß∩, ¬á¬ ΓѬßΓ«óá∩
- ßΓ᫬á, á ¡Ñ ¬á¬ óδαáªÑ¡¿Ñ, ¼«ª¡« ¿ß»«½∞º«óáΓ∞ πú½«óδÑ ß¬«í¬¿ (<
- ¿ >). ìá»α¿¼Ñα:
-
- TABLE_OFFSET EQU 1
- INDEX_START EQU <TABLE_OFFSET+2>
-
- çñÑß∞ ¼Ñ⪥ INDEX_START »α¿ßóá¿óáÑΓß∩ ΓѬßΓ«óá∩ ßΓ᫬á
- "TABLE_OFFSET+2", ó Γ« óαѼ∩ ¬á¬ ó ñ¿αÑ¬Γ¿óáσ:
-
- TABLE_OFFSET EQU 1
- INDEX_START EQU TABLE_OFFSET+2
-
- ¼Ñ⪥ INDEX_START »α¿ßóá¿óáÑΓß∩ º¡áτÑ¡¿Ñ 3 (αѺπ½∞ΓáΓ ß½«ªÑ¡¿∩ 1
- + 2). é «íΘѼ ß½πτáÑ »«½Ñº¡« óßÑúñá ºá¬½ετáΓ∞ ó ñ¿αÑ¬Γ¿óÑ EQU
- «»Ñαá¡ñδ, »αÑñßΓáó½∩εΘ¿Ñ ß«í«⌐ ΓѬßΓ«óδÑ ßΓ᫬¿, ó πú½«óδÑ ß¬«í-
- ¬¿. ¥Γ¿¼ íπñÑΓ «íÑß»ÑτÑ¡«, τΓ« Γá¬¿Ñ «»Ñαá¡ñδ ß½πτá⌐¡« ¡Ñ íπñπΓ
- óδτ¿ß½Ñ¡δ, ¬á¬ óδαáªÑ¡¿∩.
-
- àß½¿ ó ñá¡¡«¼ ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EQU ¼ÑΓ¬á
- »α¿αáó¡¿óáÑΓß∩ ¬ º¡áτÑ¡¿ε ¿½¿ ΓѬßΓ«ó«⌐ ßΓ᫬Ñ, «¡á ¡Ñ ¼«ªÑΓ íδΓ∞
- »ÑαÑ«»αÑñѽѡá ó ñá¡¡«¼ ¼«ñπ½Ñ. ìá»α¿¼Ñα, ß½ÑñπεΘ¿⌐ ¬«ñ »α¿óÑñÑΓ
- ¬ «Φ¿í¬Ñ:
-
- .
- .
- .
- X EQU 1
- .
- .
- .
- X EQU 101
- .
- .
- .
-
- àß½¿ óá¼ ΓαÑíπÑΓß∩ »ÑαÑ«»αÑñѽ∩Γ∞ ó »α«úαá¼¼Ñ »α¿αáó¡Ñ¡¡δÑ
- ¼ÑΓ¬¿ (¿ ñ½∩ φΓ«ú« ÑßΓ∞ ¬á¬á∩-Γ« óÑß«¼á∩ »α¿τ¿¡á), Γ« óá¼ ¡πª¡«
- íπñÑΓ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ = (¼δ «íßπñ¿¼ ÑÑ »«ºñ¡ÑÑ).
-
-
-
- ÅαÑñ«»αÑñѽѡ¡δ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α $
- -----------------------------------------------------------------
-
- éß»«¼¡¿¼, τΓ« ó Æπαí« ÇßßѼí½ÑαÑ ¿¼ÑÑΓß∩ ¡Ñ߬«½∞¬« »αÑñ«»αÑ-
- ñѽѡ¡δσ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó (¡á»α¿¼Ñα, @data). àΘÑ «ñ¿¡ »α«ßΓ«⌐, ¡«
- πñ¿ó¿Γѽ∞¡« »«½Ñº¡δ⌐ »αÑñ«»αÑñѽѡ¡δ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α - φΓ« ¿ñÑ¡Γ¿-
- Σ¿¬áΓ«α $, ¬«Γ«αδ⌐ óßÑúñá πßΓá¡«ó½Ñ¡ ó ΓѬπΘÑÑ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á
- áñαÑßá. äαπú¿¼¿ ß½«óἿ, ¿ñÑ¡Γ¿Σ¿¬áΓ«α $ óßÑúñá αáóÑ¡ ΓѬπΘѼπ
- ß¼ÑΘÑ¡¿ε ó ßÑú¼Ñ¡ΓÑ, ó ¬«Γ«α«¼ Æπαí« ÇßßѼí½Ñα ó ñá¡¡δ¼ ¼«¼Ñ¡Γ
- óδ»«½¡∩ÑΓ áßßÑ¼í½¿α«óá¡¿Ñ. $ »αÑñßΓáó½∩ÑΓ ß«í«⌐ »«ßΓ«∩¡¡«Ñ º¡áτÑ-
- ¡¿Ñ ß¼ÑΘÑ¡¿∩, á¡á½«ú¿τ¡«Ñ OFFSET MemVar. ¥Γ« »«ºó«½∩ÑΓ ¿ß»«½∞º«-
- óáΓ∞ $ ó óδαáªÑ¡¿∩σ ¿½¿ ó ½εí«¼ ¼ÑßΓÑ, úñÑ ñ«»π߬áÑΓß∩ ¿ß»«½∞º«-
- óá¡¿Ñ ¬«¡ßΓá¡Γδ.
-
- êñÑ¡Γ¿Σ¿¬áΓ«α $ «τÑ¡∞ πñ«í¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ óδτ¿ß½Ñ¡¿∩
- ñ½¿¡δ ñá¡¡δσ ¿ ¬«ñá. ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« óδ σ«Γ¿ΓÑ »α¿αáó-
- ¡∩Γ∞ ¿ñÑ¡Γ¿Σ¿¬áΓ«α STRING_LENGTH ¬ ñ½¿¡Ñ ßΓ᫬¿ ó íá⌐Γáσ. üѺ
- »αÑñ«»αÑñѽѡ¡«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá $ óá¼ »α¿ñÑΓß∩ ßñѽáΓ∞ ß½Ññπε-
- ΘÑÑ:
-
- .
- .
- .
- StringStart LABEL BYTE
- db 0dh,0ah,'ÆÑ¬ßΓ«óá∩ ßΓ᫬á'odh,0ah
- StringEnd LABEL BYTE
- STRING_LENGTH EQU (StringEnd-StringStart)
- .
- .
- .
-
- á ß »«¼«Θ∞ε ¿ñÑ¡Γ¿Σ¿¬áΓ«αá $ óδ ¼«ªÑΓÑ ºá»¿ßáΓ∞:
-
- .
- .
- .
- StringStart LABEL BYTE
- db 0dh,0ah,'ÆÑ¬ßΓ«óá∩ ßΓ᫬á'odh,0ah
- STRING_LENGTH EQU ($-StringStart)
- .
- .
- .
-
- 使¡π (ó ß½«óáσ) ¼áßß¿óá ß½«ó ¼«ª¡« óδτ¿ß½¿Γ∞ ß½ÑñπεΘ¿¼ «í-
- αẫ¼:
-
- .
- .
- .
- WordArray DW 90h, 25h, 0, 16h, 23h
- WORD_ARRAY_LENGTH EQU (($-WordArray)/2)
- .
- .
- .
-
- éδ, ¬«¡Ñτ¡«, ¼«ªÑΓÑ ß«ßτ¿ΓáΓ∞ «Γñѽ∞¡δÑ φ½Ñ¼Ñ¡Γδ óαπτ¡πε, ¡«
- ñ½∩ í«½∞Φ¿σ ¼áßß¿ó«ó ¿ ßΓ᫬ φΓ« ñ«ó«½∞¡« ºáΓαπñ¡¿Γѽ∞¡«.
-
- Æα¿ ñαπú¿Ñ »«½Ñº¡δÑ »αÑñ«»αÑñѽѡ¡δÑ »ÑαѼѡ¡δÑ - φΓ«
- ??DATA, ??TIME ¿ ??FILENAME. ??DATE ß«ñÑαª¿Γ ñáΓπ áßßÑ¼í½¿α«óá-
- ¡¿∩ ó ó¿ñÑ ΓѬßΓ«ó«⌐ ßΓ᫬¿ ó Σ«α¼áΓÑ 01/02/88. ??TIME ß«ñÑনΓ
- óαѼ∩ áßßÑ¼í½¿α«óá¡¿∩ ó ó¿ñÑ 13:45:06, á ??FILENAME - ¿¼∩ áßßѼ-
- í½¿απѼ«ú« Σá⌐½á ó ó¿ñÑ ºá¬½ετÑ¡¡«⌐ ó ¬áóδτ¬¿ ßΓ᫬¿ ¿º 8 ß¿¼ó«-
- ½«ó (¡á»α¿¼Ñα, "TEST.ASM").
-
-
-
- ä¿αÑ¬Γ¿óá =
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá = á¡á½«ú¿τ¡á ñ¿αÑ¬Γ¿óÑ EQU ó« óßÑσ «Γ¡«ΦÑ¡¿∩σ,
- ¬α«¼Ñ «ñ¡«ú«: ó Γ« óαѼ∩ ¬á¬ ¼ÑΓ¬¿, «»αÑñѽѡ¡δÑ ß »«¼«Θ∞ε ñ¿αѬ-
- Γ¿óδ EQU, »ÑαÑ«»αÑñѽ∩Γ∞ ¡Ñ ñ«»π߬áÑΓß∩ (ó φΓ«¼ ß½πτáÑ »α«¿ßσ«ñ¿Γ
- «Φ¿í¬á), ¼ÑΓ¬π, «»αÑñѽѡ¡πε ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ =, ¼«ª¡« ßó«í«ñ-
- ¡« »ÑαÑ«»αÑñѽ∩Γ∞.
-
- ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ ñ¿αÑ¬Γ¿óá = ¿ß»«½∞ºπÑΓß∩ ñ½∩
- úÑ¡Ñαᵿ¿ Γáí½¿µδ »Ñαóδσ 100 »α«¿ºóÑñÑ¡¿⌐ τ¿ß½á 10:
-
- .
- .
- .
- .DATA
- MultipleOf10 LABEL WORD
- TEMP = 0
- REPT 100
- DW TEMP
- TEMP = TEMP+10
- ENDM
- .
- .
- .
- shl bx,1 ; BX - τ¿ß½«, ¬«Γ«α«Ñ ¡πª¡«
- ; π¼¡«ª¿Γ∞ ¡á 10
- ; ßñó¿ú ó½Ñó« ñ½∩ π¼¡«ªÑ¡¿∩
- ; ¡á 2 (ñ½∩ Σ«α¼¿α«óá¡¿∩
- ; Γáí½¿µδ ß½«ó)
- mov ax,[MultipleOf10+bx] ; »«½πτ¿Γ∞ τ¿ß½«
- ; * 10
- .
- .
- .
-
- Åα¿ óδτ¿ß½Ñ¡¿¿ óßÑσ «»Ñαá¡ñ«ó ñ¿αÑ¬Γ¿óδ = ñ«½ª¡« »«½πτáΓ∞ß∩
- τ¿ß½«ó«Ñ º¡áτÑ¡¿Ñ - ó «Γ½¿τ¿Ñ «Γ ñ¿αÑ¬Γ¿óδ EQU ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿-
- óδ = ¼ÑΓ¬á¼ ¡Ñ½∞º∩ »α¿ßóá¿óáΓ∞ ΓѬßΓ«óδÑ ßΓ᫬¿.
-
-
-
-
- æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿
- -----------------------------------------------------------------
-
- ÆÑ»Ñα∞ ¼δ »«ñ«Φ½¿ ¬ αáßß¼«ΓαÑ¡¿ε ¡á¿í«½ÑÑ ¼«Θ¡δσ ¿ ¡Ñ«íδτ¡δσ
- ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086 - ¿¡ßΓαπ¬µ¿⌐ ñ½∩ αáí«Γδ ß« ßΓα«¬á¼¿.
- æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ «Γ½¿τáεΓß∩ «Γ »α«τ¿σ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá
- 8086. Ä¡¿ ¼«úπΓ (ó «ñ¡«⌐ ¿¡ßΓαπ¬µ¿¿) «íαáΘáΓ∞ß∩ ¬ »á¼∩Γ¿ ¿ πóѽ¿-
- τ¿óáΓ∞ ¿½¿ π¼Ñ¡∞ΦáΓ∞ αÑú¿ßΓα-π¬áºáΓѽ∞. Äñ¡á ßΓ᫬«óá∩ ¿¡ßΓαπ¬µ¿∩
- ¼«ªÑΓ «íαáΘáΓ∞ß∩ ¬ »á¼∩Γ¿ 130000 αáº.
-
- èᬠ∩ß¡« ¿º ¿σ ¡áºóá¡¿∩, ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ «ß«íÑ¡¡« »«-
- ½Ñº¡δ »α¿ αáí«ΓÑ ß ΓѬßΓ«ó묨 ßΓα«¬á¼¿. êσ ¼«ª¡« Γá¬ªÑ ¿ß»«½∞º«-
- óáΓ∞ »α¿ αáí«ΓÑ ß ¼áßß¿óἿ, íπΣÑαἿ ñá¡¡δσ ¿ ½εí묨 Γ¿»á¼¿
- ßΓ᫬ íá⌐Γ ¿½¿ ß½«ó. æΓ᫬«ó묨 ¿¡ßΓαπ¬µ¿∩¼¿ ß½ÑñπÑΓ »«½∞º«óáΓ∞ß∩
- Γá¼, úñÑ Γ«½∞¬« φΓ« 󫺼«ª¡«, »«ß¬«½∞¬π «¡¿, ¬á¬ »αá󿽫, ¬«α«τÑ
- ¿ αáí«ΓáεΓ íδßΓαÑÑ, τѼ φ¬ó¿óá½Ñ¡Γ¡á∩ ¿¼ ¬«¼í¿¡áµ¿∩ «íδτ¡δσ ¿¡ß-
- Γαπ¬µ¿⌐ »α«µÑßß«αá 8086, Γᬿσ, ¬á¬ MOV, INC ¿ LOOP.
-
- îδ αáßß¼«Γα¿¼ ñóÑ αẽ¿τ¡δÑ »« Σπ¡¬µ¿«¡á½∞¡«¼π ¡áº¡áτÑ¡¿ε
- úαπ»»δ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐: ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ ñ½∩ »ÑαѼÑΘÑ¡¿∩
- ñá¡¡δσ (LODS, STOS ¿ MOVS) ¿ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿, ¿ß»«½∞ºπѼδÑ
- ñ½∩ »«¿ß¬á ¿ ßαáó¡Ñ¡¿∩ ñá¡¡δσ (SCAS ¿ CMPS).
-
-
- æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ »ÑαѼÑΘÑ¡¿∩ ñá¡¡δσ
- -----------------------------------------------------------------
-
- æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ »ÑαѼÑΘÑ¡¿∩ ñá¡¡δσ ó« ¼¡«ú«¼ á¡á½«ú¿τ¡δ
- ¿¡ßΓαπ¬µ¿¿ MOV, ¡« ¼«úπΓ óδ»«½¡∩Γ∞ í«½∞ΦÑ Σπ¡¬µ¿⌐, τѼ ¿¡ßΓαπ¬µ¿∩
- MOV ¿ αáí«ΓáεΓ íδßΓαÑÑ. îδ αáßß¼«Γα¿¼ ß¡áτá½á ¿¡ßΓαπ¬µ¿ε LODS.
- çá¼ÑΓ¿¼, τΓ« ó« óßÑσ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ Σ½áú π¬áºá¡¿∩ ¡á»αáó-
- ½Ñ¡¿∩ ºáñáÑΓ ¡á»αáó½Ñ¡¿Ñ, ó ¬«Γ«α«¼ ¿º¼Ñ¡∩εΓß∩ αÑú¿ßΓαδ-π¬áºáΓÑ-
- ½¿.
-
- ê¡ßΓαπ¬µ¿∩ LODS
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩ LODS, ¬«Γ«αá∩ ºáúαπªáÑΓ íá⌐Γ ¿½¿ ß½«ó« ¿º »á¼∩Γ¿
- ó ᬬπ¼π½∩Γ«α (¡á¬«»¿Γѽ∞), »«ñαáºñѽ∩ÑΓß∩ ¡á ñóÑ ¿¡ßΓαπ¬µ¿¿ -
- LODSB ¿ LODSW. ê¡ßΓαπ¬µ¿∩ LODSB ºáúαπªáÑΓ íá⌐Γ, áñαÑßπѼδ⌐ ß »«-
- ¼«Θ∞ε »áαδ αÑú¿ßΓα«ó DS:SI, ó αÑú¿ßΓα AL ¿ π¼Ñ¡∞ΦáÑΓ ¿½¿
- πóѽ¿τ¿óáÑΓ αÑú¿ßΓα SI (ó ºáó¿ß¿¼«ßΓ¿ «Γ ß«ßΓ«∩¡¿∩ Σ½áúá ¡á»αáó-
- ½Ñ¡¿∩). àß½¿ Σ½áú ¡á»αáó½Ñ¡¿∩ αáóÑ¡ 0 (πßΓá¡«ó½Ñ¡ ß »«¼«Θ∞ε ¿¡ßΓ-
- απ¬µ¿¿ CLD), Γ« αÑú¿ßΓα SI πóѽ¿τ¿óáÑΓß∩, á Ñß½¿ Σ½áú ¡á»αáó½Ñ¡¿∩
- αáóÑ¡ 1 (πßΓá¡«ó½Ñ¡ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ STD), Γ« αÑú¿ßΓα SI
- π¼Ñ¡∞ΦáÑΓß∩. ê φΓ« óÑα¡« ¡Ñ Γ«½∞¬« ñ½∩ ¿¡ßΓαπ¬µ¿¿ LODSB, Σ½áú
- ¡á»αáó½Ñ¡¿∩ π»αáó½∩ÑΓ ¡á»αáó½Ñ¡¿Ñ¼, ó ¬«Γ«α«¼ ¿º¼Ñ¡∩εΓß∩ óßÑ αÑ-
- ú¿ßΓαδ-π¬áºáΓѽ¿ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐.
-
- ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ:
-
- .
- .
- .
- cld
- mov si,0
- lodsb
- .
- .
- .
-
- ¿¡ßΓαπ¬µ¿∩ LODSB ºáúαπªáÑΓ αÑú¿ßΓα AL ß«ñÑন¼δ¼ íá⌐Γá ß« ß¼ÑΘÑ-
- ¡¿Ñ¼ 0 ó ßÑú¼Ñ¡ΓÑ ñá¡¡δσ ¿ πóѽ¿τ¿óáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá SI ¡á 1.
- ¥Γ« φ¬ó¿óá½Ñ¡Γ¡« óδ»«½¡Ñ¡¿ε ß½ÑñπεΘ¿σ ¿¡ßΓαπ¬µ¿⌐:
-
- .
- .
- .
- mov si,0
- mov al,[si]
- inc si
- .
- .
- .
-
- «ñ¡á¬« ¿¡ßΓαπ¬µ¿∩ LODSB αáí«ΓáÑΓ ßπΘÑßΓóÑ¡¡« íδßΓαÑÑ (¿ ºá¡¿¼áÑΓ
- ¡á ñóá íá⌐Γá ¼Ñ¡∞ΦÑ), τѼ ¿¡ßΓαπ¬µ¿¿:
-
- mov al,[si]
- inc si
-
- ê¡ßΓαπ¬µ¿∩ LODSW á¡á½«ú¿τ¡á ¿¡ßΓαπ¬µ¿¿ LODSB. Ä¡á ß«σαá¡∩ÑΓ
- ó αÑú¿ßΓαÑ AX ß½«ó«, áñαÑßπѼ«Ñ »áα«⌐ αÑú¿ßΓα«ó DS:SI, á º¡áτÑ¡¿Ñ
- αÑú¿ßΓαá SI π¼Ñ¡∞ΦáÑΓß∩ ¿½¿ πóѽ¿τ¿óáÑΓß∩ ¡á 2, á ¡Ñ ¡á 1. ìá»α¿-
- ¼Ñα, ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- std
- mov si,0
- lodsw
- .
- .
- .
-
- ºáúαπªáεΓ ß½«ó« ß« ß¼ÑΘÑ¡¿Ñ¼ 10 ó ßÑú¼Ñ¡ΓÑ ñá¡¡δσ ó αÑú¿ßΓα RU, á
- ºáΓѼ º¡áτÑ¡¿Ñ SI π¼Ñ¡∞ΦáÑΓß∩ ¡á 2.
-
- ê¡ßΓαπ¬µ¿∩ STOS
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩ STOS - φΓ« ñ«»«½¡Ñ¡¿Ñ ¿¡ßΓαπ¬µ¿¿ LODS. Ä¡á ºá»¿-
- ßδóáÑΓ º¡áτÑ¡¿Ñ αẼÑα«¼ ó íá⌐Γ ¿½¿ ß½«ó« ¿º ᬬπ¼π½∩Γ«αá ó ∩τÑ⌐-
- ¬π »á¼∩Γ¿, ¡á ¬«Γ«απε π¬áºδóáÑΓ »áαá αÑú¿ßΓα«ó ES:DI, á ºáΓѼ
- πóѽ¿τ¿óáÑΓ ¿½¿ π¼Ñ¡∞ΦáÑΓ DI. ê¡ßΓαπ¬µ¿∩ STOSB ºá»¿ßδóáÑΓ íá⌐Γ,
- ß«ñÑαªáΘ¿⌐ß∩ ó αÑú¿ßΓαÑ AL, ó ∩τÑ⌐¬π »á¼∩Γ¿ »« áñαÑßπ ES:DI, á
- ºáΓѼ πóѽ¿τ¿óáÑΓ ¿½¿ π¼Ñ¡∞ΦáÑΓ αÑú¿ßΓα DI, ó ºáó¿ß¿¼«ßΓ¿ «Γ Σ½áúá
- ¡á»αáó½Ñ¡¿∩. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- std
- mov di,0ffffh
- mov al,55h
- stosb
- .
- .
- .
-
- ºá»¿ßδóáεΓ º¡áτÑ¡¿Ñ 55h ó íá⌐Γ ß« ß¼ÑΘÑ¡¿Ñ¼ 0FFFFh ó ßÑú¼Ñ¡ΓÑ, ¡á
- ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα ES, á ºáΓѼ π¼Ñ¡∞ΦáÑΓ DI ñ« º¡áτÑ¡¿∩
- 0FFFEh.
-
- ê¡ßΓαπ¬µ¿∩ STOSW αáí«ΓáÑΓ á¡á½«ú¿τ¡«, ºá»¿ßδóá∩ º¡áτÑ¡¿Ñ
- αẼÑα«¼ ó ß½«ó«, ß«ñÑαªáΘÑÑß∩ ó αÑú¿ßΓαÑ AX, »« áñαÑßπ ES:DI, á
- ºáΓѼ πóѽ¿τ¿óáÑΓ ¿½¿ π¼Ñ¡∞ΦáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DI ¡á 2. ìá»α¿-
- ¼Ñα, ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- cld
- mov di,0ffeh
- mov al,102h
- stosw
- .
- .
- .
-
- ºá»¿ßδóáεΓ º¡áτÑ¡¿Ñ 102h αẼÑα«¼ ó ß½«ó«, ºá»¿ßá¡¡«Ñ ó αÑú¿ßΓαÑ
- AX, »« ß¼ÑΘÑ¡¿ε 0FFEh ó ßÑú¼Ñ¡ΓÑ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα
- ES, á ºáΓѼ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DI πóѽ¿τ¿óáÑΓß∩ ñ« 1000h.
-
- ê¡ßΓαπ¬µ¿¿ LODS ¿ STOS ¼«ª¡« »αѬαáß¡« ¿ß»«½∞º«óáΓ∞ ó¼ÑßΓÑ
- ñ½∩ ¬«»¿α«óá¡¿∩ íπΣÑα«ó. ìá»α¿¼Ñα, ß½ÑñπεΘá∩ »«ñ»α«úαá¼¼á ¬«»¿απ-
- ÑΓ ºáóÑαΦáεΘπεß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼ ßΓ᫬π, ºá»¿ßá¡¡πε »« áñαÑßπ
- DS:SI, ó ßΓ᫬𠻫 áñαÑßπ ES:DI:
-
- ;
- ; Å«ñ»α«úαá¼¼á ñ½∩ ¬«»¿α«óá¡¿∩ ºáóÑαΦáεΘÑ⌐ß∩ ¡π½Ñ¼ ßΓ᫬¿
- ; ó ñαπúπε ßΓ᫬π
- ;
- ; éó«ñ:
- ; DS:SI - ßΓ᫬á, ¿º ¬«Γ«α«⌐ óδ»«½¡∩ÑΓß∩ ¬«»¿α«óá¡¿Ñ
- ; ES:DI - ßΓ᫬á, ó ¬«Γ«απε óδ»«½¡∩ÑΓß∩ ¬«»¿α«óá¡¿Ñ
- ;
- ; éδó«ñ: ¡ÑΓ
- ;
- ; 꺼ѡ∩ѼδÑ αÑú¿ßΓαδ: AL, SI, DI
- ;
- CopyString PROC
- cld ; «íÑß»Ñτ¿Γ∞ πóѽ¿τÑ¡¿Ñ SI ¿
- ; DI ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ
- CopyStringLoop:
- lodsb ; »«½πτ¿Γ∞ ß¿¼ó«½ ¿ßσ«ñ¡«⌐
- ; ßΓ᫬¿
- stosb ; ºá»¿ßáΓ∞ ß¿¼ó«½ ó óδσ«ñ¡πε
- ; ßΓ᫬π
- cmp al,0 ; »«ß½Ññ¡¿¼ ß¿¼ó«½«¼ ßΓ᫬¿
- ; íδ½ 0?
- jnz CopyStringLoop ; ¡ÑΓ, «íαáí«ΓáΓ∞ ß½Ññπε-
- ; Θ¿⌐ ß¿¼ó«½
- ret ; ñá, óδ»«½¡Ñ¡«
- CopyString ENDP
-
- ǡὫú¿τ¡« óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬µ¿¿ LODS ¿ STOS ñ½∩
- ¬«»¿α«óá¡¿∩ í½«¬á íá⌐Γ, ¬«Γ«αδÑ ¡Ñ ºáóÑαΦáεΓß∩ ¡π½Ñ¼, ¿ß»«½∞ºπ∩
- ñ½∩ φΓ«ú« µ¿¬½:
-
- .
- .
- .
- mov cx,ARRAY_LENGTH_IN_WORDS ; αẼÑα ¼áßß¿óá
- mov si,OFFSET SourceArray ; ¿ßσ«ñ¡δ⌐ ¼áßß¿ó
- mov ax,SEG SourceArray
- mov dx,ax
- mov di,OFFSET DestArray ; µÑ½Ñó«⌐ ¼áßß¿ó
- mov ax,SEG DestArray
- mov es,ax
- cld
- CopyLoop:
- lodsw
- stosw
- loop CopyLoop
- .
- .
- .
-
- Äñ¡á¬« ñ½∩ »ÑαѼÑΘÑ¡¿∩ íá⌐Γá ¿½¿ ß½«óá ¿º «ñ¡«ú« ¼ÑßΓá ó »á-
- ¼∩Γ¿ ó ñαπú«Ñ ÑßΓ∞ ÑΘÑ í«½ÑÑ ½πτΦ¿⌐ ß»«ß«í. ¥Γ« ¿¡ßΓαπ¬µ¿∩ MOVS.
-
-
-
- ê¡ßΓαπ¬µ¿∩ MOVS
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩ MOVS á¡á½«ú¿τ¡á ¿¡ßΓαπ¬µ¿∩¼ LODS ¿ STOS, Ñß½¿ ¿σ
- «íΩÑñ¿¡¿Γ∞ ó «ñ¡π ¿¡ßΓαπ¬µ¿ε. ¥Γá ¿¡ßΓαπ¬µ¿∩ ßτ¿ΓδóáÑΓ íá⌐Γ ¿½¿
- ß½«ó«, ºá»¿ßá¡¡«Ñ »« áñαÑßπ DS:SI, á ºáΓѼ ºá»¿ßδóáÑΓ φΓ« º¡áτÑ-
- ¡¿Ñ »« áñαÑßπ, «»αÑñѽ∩Ѽ«¼π »áα«⌐ αÑú¿ßΓα«ó ES:DI. æ½«ó« ¿½¿
- íá⌐Γ ¡Ñ »ÑαÑñáÑΓß∩ »α¿ φΓ«¼ τÑαѺ αÑú¿ßΓαδ, »«φΓ«¼π ß«ñÑন¼«Ñ
- αÑú¿ßΓαá AX ¡Ñ ¿º¼Ñ¡∩ÑΓß∩. ê¡ßΓαπ¬µ¿∩ MOVSB ¿¼ÑÑΓ ¼¿¡¿¼á½∞¡« ó«º-
- ¼«ª¡πε ñ½∩ ¿¡ßΓαπ¬µ¿¿ ñ½¿¡π. Ä¡á ºá¡¿¼áÑΓ Γ«½∞¬« «ñ¿¡ íá⌐Γ, á αá-
- í«ΓáÑΓ ÑΘÑ íδßΓαÑÑ, τѼ ¬«¼í¿¡áµ¿∩ ¿¡ßΓαπ¬µ¿⌐ LODS ¿ STOS. æ »α¿-
- ¼Ñ¡Ñ¡¿Ñ¼ ¿¡ßΓαπ¬µ¿¿ MOVS »«ß½Ññ¡¿⌐ »α¿¼Ñα »α¿«íαÑΓáÑΓ ó¿ñ:
-
- .
- .
- .
- mov cx,ARRAY_LENGTH_IN_WORDS
- mov si,OFFSET SourceArray
- mov ax,SEG SourceArray
- mov ds,ax
- mov di,OFFSET DestArray
- mov ax,SEG DestArray
- mov es,ax
- cld
- CopyLoop:
- movsw
- loop CopyLoop
- .
- .
- .
-
- Å«óΓ«αÑ¡¿Ñ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿
- -----------------------------------------------------------------
-
- ò«Γ∩ ó »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ ¬«ñ óδú½∩ñ¿Γ ñ«ó«½∞¡« φΣΣÑ¬Γ¿ó¡δ¼,
- ¡Ñ»½«σ« í佫 íδ ¿ºíáó¿Γ∞ß∩ «Γ ¿¡ßΓαπ¬µ¿¿ LOOP ¿ »ÑαѼÑΘáΓ∞ óÑß∞
- ¼áßß¿ó ß »«¼«Θ∞ε «ñ¡«⌐ ¿¡ßΓαπ¬µ¿¿. ê¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 8086
- »αÑñ«ßΓáó½∩εΓ Γá¬πε 󫺼«ª¡«ßΓ∞. ¥Γ« Σ«α¼á ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ ß
- »αÑΣ¿¬ß«¼ REP.
-
- ÅαÑΣ¿¬ß »«óΓ«αÑ¡¿∩ REP - φΓ« ¡Ñ ¿¡ßΓαπ¬µ¿∩, á »αÑΣ¿¬ß ¿¡ß-
- Γαπ¬µ¿¿. ÅαÑΣ¿¬ß ¿¡ßΓαπ¬µ¿¿ ¿º¼Ñ¡∩ÑΓ αáí«Γπ »«ß½ÑñπεΘÑ⌐ ¿¡ßΓαπ¬-
- µ¿¿. ÅαÑΣ¿¬ß REP ñѽáÑΓ ß½ÑñπεΘÑÑ: «¡ π¬áºδóáÑΓ, τΓ« »«ß½ÑñπεΘπε
- ¿¡ßΓαπ¬µ¿ε ¡πª¡« »«óΓ«α¡« óδ»«½¡∩Γ∞ ñ« ΓÑσ »«α, »«¬á ß«ñÑন¼«Ñ
- αÑú¿ßΓαá CX ¡Ñ ßΓá¡ÑΓ αáó¡δ¼ 0. (àß½¿ αÑú¿ßΓα CX αáóÑ¡ 0 ó ¡áτá½Ñ
- óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿, Γ« ¿¡ßΓαπ¬µ¿∩ óδ»«½¡∩ÑΓß∩ 0 αáº, ñαπú¿¼¿
- ß½«óἿ, ¡¿¬á¬¿σ ñÑ⌐ßΓó¿⌐ ¡Ñ »α«¿ºó«ñ¿Γß∩.)
-
- êß»«½∞ºπ∩ »αÑΣ¿¬ß REP, ¼«ª¡« ºá¼Ñ¡¿Γ∞ ó »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ
- ¿¡ßΓαπ¬µ¿¿:
-
- CopyLoop:
- movsw
- loop CopyLoop
-
- ¡á ¿¡ßΓαπ¬µ¿ε:
-
- rep movsb
-
- ¥Γá ¿¡ßΓαπ¬µ¿∩ íπñÑΓ »ÑαѼÑΘáΓ∞ í½«¬ ¿º 65535 ß½«ó (0FFFFh)
- ¿º »á¼∩Γ¿, ¡áτ¿¡áεΘÑ⌐ß∩ ß áñαÑßá DS:SI ó »á¼∩Γ∞, ¡áτ¿¡áεΘπεß∩ ß
- áñαÑßá, «»αÑñѽ∩Ѽ«ú« αÑú¿ßΓαἿ ES:DI.
-
- è«¡Ñτ¡«, ñ½∩ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿ 65535 αẠ»«ΓαÑíπÑΓß∩ ú«-
- αáºñ« í«½∞ΦÑ óαѼѡ¿, τѼ ñ½∩ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿ «ñ¿¡ αáº,
- óÑñ∞ ñ½∩ «íαáΘÑ¡¿∩ ¬« óßÑ⌐ φΓ«⌐ »á¼∩Γ¿ ΓαÑíπÑΓß∩ óαѼ∩. Äñ¡á¬«
- ¬áªñ«Ñ »«óΓ«αÑ¡¿Ñ (ß »«¼«Θ∞ε »αÑΣ¿¬ßá) ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ óδ-
- »«½¡∩ÑΓß∩ íδßΓαÑÑ, τѼ óδ»«½¡Ñ¡¿Ñ «ñ¡«⌐ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿. ¥Γ«
- »«ºó«½∩ÑΓ »«½πτ¿Γ∞ «τÑ¡∞ íδßΓαδ⌐ ß»«ß«í τΓÑ¡¿∩ ¿º »á¼∩Γ¿, ºá»¿ß¿
- ó »á¼∩Γ∞ ¿ ¬«»¿α«óá¡¿∩.
-
- ÅαÑΣ¿¬ß REP ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ¡Ñ Γ«½∞¬« ß ¿¡ßΓαπ¬µ¿Ñ⌐ MOVS,
- ¡« Γá¬ªÑ ¿ ß ¿¡ßΓαπ¬µ¿∩¼¿ LODS ¿ STOS (¿ ¿¡ßΓαπ¬µ¿∩¼¿ SCAS ¿ CMPS
- - φΓ« ¼δ «íßπñ¿¼ »«ºñ¡ÑÑ). ê¡ßΓαπ¬µ¿ε STOS ¼«ª¡« ß πß»Ñσ«¼ »«óΓ«-
- α∩Γ∞ ñ½∩ «τ¿ßΓ¬¿ ¿½¿ ºá»«½¡Ñ¡¿∩ í½«¬«ó »á¼∩Γ¿, ¡á»α¿¼Ñα:
-
- .
- .
- .
- cld
- mov ax,SEG WordArray
- mov es,ax
- mov di,OFFSET WordArray
- sub ax,ax
- mov cx,WORD_ARRAY_LENGTH
- rep stosw
- .
- .
- .
-
- çñÑß∞ ¼áßß¿ó WordArray ºá»«½¡∩ÑΓß∩ ¡π½∩¼¿. ä½∩ »«óΓ«αÑ¡¿∩
- ¿¡ßΓαπ¬µ¿¿ LODS ß««ΓóÑΓßΓóπεΘÑÑ »«½Ñº¡«Ñ »α¿½«ªÑ¡¿Ñ »α¿ñπ¼áΓ∞
- Γαπñ¡«.
-
- ÅαÑΣ¿¬ß REP óδºδóáÑΓ »«óΓ«αÑ¡¿Ñ Γ«½∞¬« ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿.
- ê¡ßΓαπ¬µ¿∩ Γ¿»á:
-
- rep mov ax,[bx]
-
- ¡Ñ ¿¼ÑÑΓ ß¼δß½á. é φΓ«¼ ß½πτáÑ »αÑΣ¿¬ß REP ¿ú¡«α¿απÑΓß∩ ¿ óδ»«½-
- ¡∩ÑΓß∩ ¿¡ßΓαπ¬µ¿∩:
-
- mov ax,[bx]
-
-
-
-
- éδσ«ñ π¬áºáΓѽ∩ ºá úαá¡¿µδ ßΓ᫬¿
- -----------------------------------------------------------------
-
- çá¼ÑΓ¿¼, τΓ« »α¿ óδ»«½¡Ñ¡¿¿ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ πóѽ¿τÑ¡¿Ñ
- ¿½¿ π¼Ñ¡∞ΦÑ¡¿Ñ αÑú¿ßΓα«ó SI ¿ DI óδ»«½¡∩ÑΓß∩ »«ß½Ñ «íαáΘÑ¡¿∩ ¬
- »á¼∩Γ¿. ¥Γ« «º¡áτáÑΓ, τΓ« »«ß½Ñ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿ αÑú¿ßΓαδ ¡Ñ
- π¬áºδóáεΓ ¡á Γπ ∩τÑ⌐¬π, ¬ ¬«Γ«α«⌐ Γ«½∞¬« τΓ« óδ»«½¡∩½«ß∞ «íαáΘÑ-
- ¡¿Ñ, «¡¿ π¬áºδóáεΓ ¡á ß½ÑñπεΘπε ∩τÑ⌐¬π, ¬ ¬«Γ«α«⌐ ¡πª¡« «íαáΓ¿Γ∞-
- ß∩. é ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ φΓ« «τÑ¡∞ πñ«í¡«, »«ß¬«½∞¬π »«ºó«½∩ÑΓ óá¼
- φΣΣÑ¬Γ¿ó¡« «αúá¡¿º«óδóáΓ∞ µ¿¬½δ, á¡á½«ú¿τ¡δÑ ΓѼ, ¬«Γ«αδÑ »α¿óÑ-
- ñÑ¡δ ó »α¿¼Ñαáσ »«ß½Ññ¡Ñú« αáºñѽá. Äñ¡á¬« ¿¡«úñá φΓ« ¼«ªÑΓ »α¿-
- ó«ñ¿Γ∞ ¬ »πΓá¡¿µÑ, «ß«íÑ¡¡« ¬«úñá ß »«¼«Θ∞ε ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿
- óδ»«½¡∩ÑΓß∩ »«¿ß¬ ñá¡¡δσ.
-
-
- Å«¿ß¬ ñá¡¡δσ ß »«¼«Θ∞ε ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿
- -----------------------------------------------------------------
-
- èᬠαáí«ΓáεΓ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ »ÑαѼÑΘÑ¡¿∩ ñá¡¡δσ, óδ πªÑ
- ó¿ñѽ¿. ÆÑ»Ñα∞ ¼δ αáßß¼«Γα¿¼ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ »α«ß¼«Γαá ¿
- ßαáó¡Ñ¡¿∩ - SCAS ¿ CMPS. ¥Γ¿ ¿¡ßΓαπ¬µ¿¿ ¿ß»«½∞ºπεΓß∩ ñ½∩ »α«ß¼«Γ-
- αá ¿ ßαáó¡Ñ¡¿∩ í½«¬«ó »á¼∩Γ¿.
-
- ê¡ßΓαπ¬µ¿∩ SCAS
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩ SCAS ¿ß»«½∞ºπÑΓß∩ ñ½∩ »α«ß¼«Γαá »á¼∩Γ¿ ¿ »«¿ß¬á
- ß«ó»áñÑ¡¿∩ ¿½¿ ¡Ñß«ó»áñÑ¡¿∩ ß ¬«¡¬αÑΓ¡δ¼ º¡áτÑ¡¿Ñ¼ αẼÑα«¼ ó
- íá⌐Γ ¿½¿ ß½«ó«. èᬠ¿ óßÑ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿, ¿¡ßΓαπ¬µ¿∩ SCAS
- ¿¼ÑÑΓ ñóÑ Σ«α¼δ - SCASB ¿ SCASW.
-
- ê¡ßΓαπ¬µ¿∩ SCASB ßαáó¡¿óáÑΓ ß«ñÑন¼«Ñ αÑú¿ßΓαá AL ß íá⌐Γ«-
- óδ¼ º¡áτÑ¡¿Ñ¼ »« áñαÑßπ ES:DI, πßΓá¡áó½¿óá∩ »α¿ φΓ«¼ Σ½áú¿, «Γαá-
- ªáεΘ¿Ñ αѺπ½∞ΓáΓ ßαáó¡Ñ¡¿∩ (¬á¬ »α¿ óδ»«½¡Ñ¡¿¿ ¿¡ßΓαπ¬µ¿¿ CMP).
- èᬠ¿ »α¿ óδ»«½¡Ñ¡¿¿ ¿¡ßΓαπ¬µ¿¿ STOSB, »α¿ óδ»«½¡Ñ¡¿¿ ¿¡ßΓαπ¬µ¿¿
- SCASB πóѽ¿τ¿óáÑΓß∩ ¿½¿ π¼Ñ¡∞ΦáÑΓß∩ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DI. ìá»α¿-
- ¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ¡áσ«ñ¿Γß∩ »Ñαó«Ñ t (ßΓα«τ¡á∩
- íπ¬óá) ó ßΓα«¬Ñ TextString:
-
- .
- .
- .
- .DATA
- TextString DB 'Test text',0
- TEXT_STRING_LENGTH EQU ($-TextString) ; ñ½¿¡á ßΓ᫬¿
- .
- .
- .
- .CODE
- .
- .
- .
- mov ax,@Data
- mov es,ax
- mov di,OFFSET TextString ; ES:DI π¬áºδóáÑΓ
- ; ¡á ¡áτὫ ßΓ᫬¿
- ; TextString
- mov al,'t' ; ¿ß¬«¼δ⌐ ß¿¼ó«½
- mov cx,TEXT_STRING_LENGTH ; ñ½¿¡á »α«ß¼áΓα¿-
- ; óáѼ«⌐ ßΓ᫬¿
- cld ; πóѽ¿τ¿óáΓ∞ DI
- ; »α¿ »α«ß¼«ΓαÑ
- Scan_For_t_Loop:
- csasb ; ES:DI ß«ó»áñáÑΓ
- ; c AL?
- je Found_t ; ñá, ¼δ ¡áΦ½¿ "t"
- loop Scan_For_t_Loop ; ¡ÑΓ, á¡á½¿º¿α«óáΓ∞
- ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- ; æ¿¼ó«½ "t" ¡Ñ ¡á⌐ñÑ¡
- .
- .
- .
- ; æ¿¼ó«½ "t" ¡á⌐ñÑ¡
- Fount_t:
- dec di ; ßßδ½¬á «íαáΓ¡« ¡á
- ; ß¼ÑΘÑ¡¿Ñ "t"
- .
- .
- .
-
- çá¼ÑΓ¿¼, τΓ« ó ñá¡¡«¼ »α¿¼ÑαÑ »«ß½Ñ Γ«ú«, ¬á¬ ¡á⌐ñÑ¡ ß¿¼ó«½
- t, αÑú¿ßΓα DI πóѽ¿τÑ¡, τΓ« «ΓαáªáÑΓ óδσ«ñ π¬áºáΓѽ∩ ºá úαá¡¿µδ
- ßΓ᫬¿ (¬á¬ ¼δ πªÑ «íßπªñ὿ φΓ« αá¡ÑÑ). è«úñá ó ñá¡¡«⌐ »α«úαá¼¼Ñ
- πß»ÑΦ¡« óδ»«½¡∩ÑΓß∩ »«ß½Ññ¡∩∩ ¿¡ßΓαπ¬µ¿∩ SCASB, »«ß½Ñ ßαáó¡Ñ¡¿∩
- DI πóѽ¿τ¿óáÑΓß∩, »«ß¬«½∞¬π »«ß½Ññ¡ÑÑ ñÑ⌐ßΓó¿Ñ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬-
- µ¿¿ ß«ßΓ«¿Γ ó πóѽ¿τÑ¡¿¿ π¬áºáΓѽ∩ (π¬áºáΓѽÑ⌐). é αѺπ½∞ΓáΓÑ αÑ-
- ú¿ßΓα DI π¬áºδóáÑΓ ¡á íá⌐Γ »«ß½Ñ ß¿¼ó«½á t ¿ Ñú« ¡πª¡« óδα«ó¡∩Γ∞,
- τΓ«íδ ¬«¼»Ñ¡ß¿α«óáΓ∞ φëà óδσ«ñ ºá »αÑñÑ½δ ¡á⌐ñÑ¡¡«ú« ß¿¼ó«½á ¿
- ßñѽáΓ∞ Γá¬, τΓ«íδ «¡ π¬áºδóá½ ¡á t.
-
- ïπτΦÑ »«¡∩Γ∞ ñÑ⌐ßΓó¿Ñ ¿¡ßΓαπ¬µ¿¿ SCAS óá¼ »«¼«ªÑΓ ßαáó¡Ñ¡¿Ñ
- »«ß½Ññ¡Ñú« »α¿¼Ñα ß á¡á½«ú¿τ¡δ¼ Σαáú¼Ñ¡Γ«¼ »α«úαá¼¼δ, ¡« íѺ ¿ß-
- »«½∞º«óá¡¿∩ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐:
-
- .
- .
- .
- Scan_For_t_Loop:
- cmp es:[di],al ; ES:DI ß«ó»áñáÑΓ ß AL?
- je Found_t ; ñá, ¼δ ¡áΦ½¿ "t"
- inc di
- loop Scan_For_t_Loop ; ¡ÑΓ, á¡á½¿º¿α«óáΓ∞
- ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- .
- .
- .
-
- ū߽Ññ¡¿⌐ »α¿¼Ñα ¡Ñ ß«ó»áñáÑΓ ó Γ«τ¡«ßΓ¿ ß »α¿¼Ñα«¼, ó ¬«Γ«-
- α«¼ ¿ß»«½∞ºπÑΓß∩ ¿¡ßΓαπ¬µ¿∩ SCASB, Γᬠ¬á¬ SCASB πóѽ¿τ¿óáÑΓ DI
- ßαáºπ, á ó »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ DI πóѽ¿τ¿óáÑΓß∩ »«ß½Ñ ¿¡ßΓαπ¬µ¿¿
- JE, τΓ«íδ ¿ºíѪáΓ∞ ¿º¼Ñ¡Ñ¡¿∩ Σ½áú«ó, πßΓá¡«ó½Ñ¡¡δσ ¿¡ßΓαπ¬µ¿Ñ⌐
- CMP.
-
- ¥Γ« »«ºó«½∩ÑΓ ßñѽáΓ∞ ó᪡«Ñ ºá¼Ñτá¡¿Ñ, ¬áßáεΘÑÑß∩ ßΓ᫬«óδσ
- ¿¡ßΓαπ¬µ¿⌐ ó µÑ½«¼. æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ ¡¿¬«úñá ¡Ñ πßΓá¡áó½¿óáεΓ
- Σ½áú¿ Γᬿ¼ «íαẫ¼, τΓ«íδ «¡¿ «Γαáªá½¿ ¿º¼Ñ¡Ñ¡¿∩ º¡áτÑ¡¿⌐ αÑ-
- ú¿ßΓα«ó SI, DI ¿/¿½¿ CX. ê¡ßΓαπ¬µ¿¿ STOS ¿ MOVS ó««íΘÑ ¡Ñ ¿º¼Ñ¡∩-
- εΓ ¡¿¬á¬¿σ Σ½áú«ó, á ¿¡ßΓαπ¬µ¿¿ SCAS ¿ CMPS ¿º¼Ñ¡∩εΓ Σ½áú¿ Γ«½∞¬«
- ó ß««ΓóÑΓßΓó¿¿ ß αѺπ½∞ΓáΓ«¼ óδ»«½¡∩Ѽ«ú« ¿¼¿ ßαáó¡Ñ¡¿∩.
-
- Ä»αÑñѽѡ¡«, í佫 íδ πñ«í¡« ßóÑßΓ¿ ó »αÑñδñπΘѼ »α¿¼ÑαÑ óÑß∞
- µ¿¬½ ¬ «ñ¡«⌐ ¿¡ßΓαπ¬µ¿¿. èᬠóδ πªÑ 󫺼«ª¡« ñ«úáñ὿ß∞, φΓ« »«º-
- ó«½∩ÑΓ ßñѽáΓ∞ ¿¡ßΓαπ¬µ¿∩ REP. Äñ¡á¬«, ¼«ªÑΓ «¬áºáΓ∞ß∩ ªÑ½áΓѽ∞-
- ¡δ¼ »αѬαáΓ¿Γ∞ óδ»«½¡Ñ¡¿Ñ µ¿¬½á ó ß½πτáÑ ß«ó»áñÑ¡¿∩ ¿½¿ ¡Ñß«ó»á-
- ñÑ¡¿∩. ä½∩ φΓ«ú« ßπΘÑßΓóπÑΓ ñóÑ Σ«α¼δ »αÑΣ¿¬ßá REP, ¬«Γ«αδÑ ¼«ª¡«
- ¿ß»«½∞º«óáΓ∞ ß ¿¡ßΓαπ¬µ¿Ñ⌐ SCAS (¿ ß CMPS) - REPE ¿ REPNE.
-
- ÅαÑΣ¿¬ß REPE (¬«Γ«αδ⌐ Γá¬ªÑ ¡áºδóáÑΓß∩ »αÑΣ¿¬ß«¼ REPZ) π¬á-
- ºδóáÑΓ »α«µÑßß«απ 8086, τΓ« ¿¡ßΓαπ¬µ¿ε SCAS (¿½¿ CMPS) ¡πª¡« »«ó-
- Γ«α∩Γ∞ ñ« ΓÑσ »«α, »«¬á αÑú¿ßΓα CX ¡Ñ ßΓá¡ÑΓ αáó¡δ¼ ¡π½ε, ¿½¿
- »«¬á ¡Ñ »α«¿º«⌐ñÑΓ ¡Ñß«ó»áñÑ¡¿Ñ. ÅαÑΣ¿¬ß REPE ¼«ª¡« αáßß¼áΓα¿-
- óáΓ∞, ¬á¬ »αÑΣ¿¬ß, «º¡áτáεΘ¿⌐ "»«óΓ«α∩Γ∞, »«¬á αáó¡«". ǡὫú¿τ-
- ¡«, »αÑΣ¿¬ß REPNE (REPNZ) π¬áºδóáÑΓ »α«µÑßß«απ 8086, τΓ« ¿¡ßΓαπ¬-
- µ¿ε SCAS (CMPS) ¡πª¡« »«óΓ«α∩Γ∞, »«¬á CX ¡Ñ ßΓá¡ÑΓ αáó¡δ¼ ¡π½ε
- ¿½¿ »«¬á ¡Ñ »α«¿º«⌐ñÑΓ ß«ó»áñÑ¡¿∩. ÅαÑΣ¿¬ß REPNE ¼«ª¡« αáßß¼áΓα¿-
- óáΓ∞, ¬á¬ »αÑΣ¿¬ß "»«óΓ«α∩Γ∞, »«¬á ¡Ñ αáó¡«".
-
- Åα¿óÑñѼ »α¿¼Ñα Σαáú¼Ñ¡Γá »α«úαá¼¼δ, ó ¬«Γ«α«¼ ñ½∩ »«¿ß¬á ó
- ßΓα«¬Ñ TextString ß¿¼ó«½á t ¿ß»«½∞ºπÑΓß∩ «ñ¡á ¿¡ßΓαπ¬µ¿∩ SCASB:
-
- .
- .
- .
- .DATA
- TextString DB 'Test text',0
- TEXT_STRING_LENGTH EQU ($-TextString) ; ñ½¿¡á ßΓ᫬¿
- .
- .
- .
- .CODE
- .
- .
- .
- mov ax,@Data
- mov es,ax
- mov di,OFFSET TextString ; ES:DI π¬áºδóáÑΓ
- ; ¡á ¡áτὫ ßΓ᫬¿
- ; TextString
- mov al,'t' ; ¿ß¬«¼δ⌐ ß¿¼ó«½
- mov cx,TEXT_STRING_LENGTH ; ñ½¿¡á »α«ß¼áΓα¿-
- ; óáѼ«⌐ ßΓ᫬¿
- cld ; πóѽ¿τ¿óáΓ∞ DI
- ; »α¿ »α«ß¼«ΓαÑ
- repne csasb ; ¿ß¬áΓ∞ ó« óßÑ⌐
- ; ßΓα«¬Ñ ß¿¼ó«½ "t"
- je Found_t ; ñá, ¼δ ¡áΦ½¿ "t"
- loop Scan_For_t_Loop ; ¡ÑΓ, á¡á½¿º¿α«óáΓ∞
- ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- ; æ¿¼ó«½ "t" ¡Ñ ¡á⌐ñÑ¡
- .
- .
- .
- ; æ¿¼ó«½ "t" ¡á⌐ñÑ¡
- Fount_t:
- dec di ; ßßδ½¬á «íαáΓ¡« ¡á
- ; ß¼ÑΘÑ¡¿Ñ "t"
- .
- .
- .
-
- èᬠ¿ óßÑ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿, ¿¡ßΓαπ¬µ¿∩ SCAS πóѽ¿τ¿óáÑΓ
- αÑú¿ßΓα-π¬áºáΓѽ∞ DI, Ñß½¿ Σ½áú ¡á»αáó½Ñ¡¿∩ αáóÑ¡ 0 («τ¿ΘÑ¡ ß »«-
- ¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ CLD), ¿ πóѽ¿τ¿óáÑΓ DI, Ñß½¿ Σ½áú ¡á»αáó½Ñ¡¿∩
- αáóÑ¡ 1 (πßΓá¡«ó½Ñ¡ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ STD).
-
- ê¡ßΓαπ¬µ¿∩ SCASW - φΓ« Σ«α¼á ¿¡ßΓαπ¬µ¿¿ SCASB ñ½∩ αáí«Γδ ß«
- ß½«ó«¼. Ä¡á ßαáó¡¿óáÑΓ ß«ñÑন¼«Ñ αÑú¿ßΓαá AX ß ß«ñÑন¼δ¼ »á¼∩Γ¿
- »« áñαÑßπ ES:DI ¿ πóѽ¿τ¿óáÑΓ ¿½¿ π¼Ñ¡∞ΦáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DI
- ó ¬«¡µÑ ¬áªñ«ú« óδ»«½¡Ñ¡¿∩ ¡á 2, á ¡Ñ ¡á 1. é ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ
- »α«úαá¼¼δ ¿¡ßΓαπ¬µ¿∩ REPE SCASW ¿ß»«½∞ºπÑΓß∩, τΓ«íδ ¡á⌐Γ¿ »«ß½Ññ-
- ¡εε ¡Ñ¡π½Ñóπε ºá»¿ß∞ ó ¼áßß¿óÑ µÑ½δσ τ¿ßѽ αẼÑα«¼ ó ß½«ó«:
-
- .
- .
- .
- mov ax,SEG ShortIntArray
- mov es,ax
- mov di,OFFSET
- ShortIntArray+(ARRAY_LEN_IN_WORDS-1)*2)
- ; ES:DI π¬áºδóáÑΓ ¡á
- ; ¬«¡Ñµ
- ; ¼áßß¿óá ShortIntArray
- mov cx,ARRAY_LEN_IN_WORDS ; ñ½¿¡á ¼áßß¿óá ó ß½«óáσ
- sub ax,ax ; »«¿ß¬ ¡á ¡Ñß«ó»áñÑ¡¿Ñ
- ; ß ¡π½Ñ¼
- std ; »«¿ß¬ ó «íαáΓ¡«¼
- ; ¡á»αáó½Ñ¡¿¿, DI
- ; π¼Ñ¡∞ΦáÑΓß∩
- repe scasw ; óδ»«½¡∩Γ∞ »«¿ß¬, »«¬á
- ; ¼δ ¡Ñ óßΓαÑΓ¿¼ ¡Ñ¡π½Ñ-
- ; ó«Ñ ß½«ó« ¿½¿ ¡Ñ óδ⌐-
- ; ñѼ ºá úαá¡¿µδ ¼áßß¿óá
- jne FondNonZero
- ; éÑß∞ ¼áßß¿ó ºá»«½¡Ñ¡ ¡π½∩¼¿.
- .
- .
- .
- ; îδ ¡áΦ½¿ ¡Ñ¡π½Ñó«⌐ φ½Ñ¼Ñ¡Γ - ¡áßΓα«¿Γ∞ DI, τΓ«íδ «¡
- ; π¬áºδóá½ ¡á φëà φ½Ñ¼Ñ¡Γ.
- inc di
- inc di
- .
- .
- .
-
-
-
- ê¡ßΓαπ¬µ¿∩ CMPS
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩ CMPS »«ºó«½∩ÑΓ óδ»«½¡∩Γ∞ ßαáó¡Ñ¡¿Ñ ñóπσ íá⌐Γ ¿½¿
- ß½«ó. Åα¿ «ñ¡«¼ óδ»«½¡Ñ¡¿¿ ¿¡ßΓαπ¬µ¿¿ CMPS ßαáó¡¿óáεΓß∩ ñóÑ ∩τÑ⌐-
- ¬¿ »á¼∩Γ¿, á ºáΓѼ πóѽ¿τ¿óáεΓß∩ αÑú¿ßΓαδ SI ¿ DI. ê¡ßΓαπ¬µ¿ε
- CMPS ¼«ª¡« αáßß¼áΓα¿óáΓ∞, ¬á¬ á¡á½«ú ¿¡ßΓαπ¬µ¿¿ MOVS, ¬«Γ«αδ⌐
- ó¼ÑßΓ« ¬«»¿α«óá¡¿∩ «ñ¡«⌐ ∩τÑ⌐¬¿ »á¼∩Γ¿ ó ñαπúπε ßαáó¡¿óáÑΓ ñóÑ
- ∩τÑ⌐¬¿ »á¼∩Γ¿.
-
- ê¡ßΓαπ¬µ¿∩ CMPSB ßαáó¡¿óáÑΓ íá⌐Γ »« áñαÑßπ DS:SI ß íá⌐Γ«¼ »«
- áñαÑßπ ES:DI, πßΓá¡áó½¿óá∩ ß««ΓóÑΓßΓóπεΘ¿¼ «íαẫ¼ Σ½áú¿ ¿ πóѽ¿-
- τ¿óá∩ ¿½¿ π¼Ñ¡∞Φá∩ αÑú¿ßΓαδ SI ¿ DI (ó ºáó¿ß¿¼«ßΓ¿ «Γ Σ½áúá ¡á»-
- αáó½Ñ¡¿∩). ÉÑú¿ßΓα AX »α¿ φΓ«¼ ¡Ñ ¿º¼Ñ¡∩ÑΓß∩.
-
- èᬠ¿ óßÑ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿, ¿¡ßΓαπ¬µ¿∩ CMPS ¿¼ÑÑΓ ñóÑ
- Σ«α¼δ (ñ½∩ αáí«Γδ ß íá⌐ΓἿ ¿ ñ½∩ αáí«Γδ ß« ß½«óἿ), ¼«ªÑΓ πóÑ-
- ½¿τ¿óáΓ∞ ¿½¿ π¼Ñ¡∞ΦáΓ∞ αÑú¿ßΓαδ SI ¿ DI ¿ íπñÑΓ »«óΓ«α∩Γ∞ß∩ »α¿
- ¡á½¿τ¿¿ »αÑΣ¿¬ßá REP. Åα¿óÑñѼ »α¿¼Ñα Σαáú¼Ñ¡Γá »α«úαá¼¼δ, ó ¬«-
- Γ«α«¼ »α«óÑα∩ÑΓß∩ ¿ñÑ¡Γ¿τ¡«ßΓ∞ »Ñαóδσ 50 φ½Ñ¼Ñ¡Γ«ó ñóπσ ¼áßß¿ó«ó
- φ½Ñ¼Ñ¡Γ«ó αẼÑα«¼ ó ß½«ó«, ¿ ñ½∩ φΓ«ú« ¿ß»«½∞ºπÑΓß∩ ¿¡ßΓαπ¬µ¿∩
- CMPSW:
-
- .
- .
- .
- mov si,OFFSET Array1
- mov ax,SEG Array1
- mov ds,ax
- mov di,OFFSET Array2
- mov ax,SEG Array2
- mov es,ax
- mov cx,50 ; ßαáó¡¿Γ∞ »ÑαóδÑ 50
- ; φ½Ñ¼Ñ¡Γ«ó
- cd
- repe cmpsw
- jne ArraysAreDifferent ; ¼áßß¿óδ αẽ¿τ¡δ
- ; ÅÑαóδÑ 50 φ½Ñ¼Ñ¡Γ«ó ß«ó»áñáεΓ.
- .
- .
- .
- ; é ¼áßß¿óáσ «Γ½¿τáεΓß∩ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ñóá φ½Ñ¼Ñ¡Γá.
- ArraysAreDifferent:
- dec si
- dec si ; «íÑß»Ñτ¿Γ∞, τΓ«íδ
- dec di ; SI ¿ DI π¬áºδó὿ ¡á
- dec di ; «Γ½¿τáεΘ¿Ñß∩
- ; φ½Ñ¼Ñ¡Γδ
- .
- .
- .
-
-
-
- êß»«½∞º«óá¡¿Ñ ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ «»Ñαá¡ñ«ó
- -----------------------------------------------------------------
-
- îδ Γ«½∞¬« τΓ« αáßß¼«Γαѽ¿ ∩ó¡δÑ Σ«α¼δ (ñ½∩ αáí«Γδ ß íá⌐ΓἿ
- ¿ ß« ß½«óἿ) ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐. äαπú¿¼¿ ß½«óἿ, ¼δ πó¿ñѽ¿,
- ¬á¬ αáí«ΓáεΓ ¿¡ßΓαπ¬µ¿¿ LODSB ¿ LODSW, ¡« ¡Ñ ¿ß»«½∞º«ó὿ ¿¡ßΓ-
- απ¬µ¿ε LODS. ä«»π߬áÑΓß∩ Γá¬ªÑ ¿ß»«½∞º«óá¡¿Ñ Γᬿσ Σ«α¼ ßΓ᫬«óδσ
- ¿¡ßΓαπ¬µ¿⌐, úñÑ αẼÑα «»Ñαá¡ñá ∩ó¡« ¡Ñ π¬áºδóáÑΓß∩. Åα¿ φΓ«¼
- ¡πª¡« «íÑß»Ñτ¿Γ∞ ºáñá¡¿Ñ «»Ñαá¡ñ«ó Γᬿ¼ «íαẫ¼, τΓ«íδ Æπαí« Çß-
- ßѼí½Ñα º¡á½, αáí«ΓáÑΓ «¡ ß íá⌐ΓἿ ¿½¿ ß« ß½«óἿ.
-
- ¡« »α¿óÑßΓ¿ ß½ÑñπεΘ¿⌐ »α¿¼Ñα, φ¬ó¿óá½Ñ¡Γ¡δ⌐ ¿ß»«½∞º«óá¡¿ε
- ¿¡ßΓαπ¬µ¿¿ MOVSB:
-
- .
- .
- .
- .DATA
- String1 LABEL BYTE
- db 'abcdefghi'
- STRING1_LENGTH EQU ($-String1)
- String2 DB 50 DUP (?)
- .
- .
- .
- .CODE
- mov ax,@Data
- mov ds,ax
- mov es,ax
- mov si,OFFSET String1
- mov di,OFFSET String2
- mov cx,STRING1_LENGTH
- cld
- rep movs es:[String2],[String2]
- .
- .
- .
-
- Å«ß½Ñ Γ«ú«, ¬á¬ óδ ó ¬áτÑßΓóÑ «»Ñαá¡ñ«ó ¿¡ßΓαπ¬µ¿¿ MOVS ºá-
- ñáñ¿ΓÑ String1 ¿ String2, Æπαí« ÇßßѼí½Ñα ¿ß»«½∞ºπÑΓ ó ¬áτÑßΓóÑ
- αẼÑαá ñá¡¡δσ αẼÑα «»Ñαá¡ñ«ó (ó ñá¡¡«¼ ß½πτáÑ íá⌐Γ).
-
- Äñ¡á¬« ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ ¿ß»«½∞º«óá¡¿Ñ «»Ñαá¡ñ«ó ¿¼Ñ-
- ÑΓ «ß«íδ⌐ ß¼δß½. Ä»Ñαá¡ñδ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ - φΓ« "¡Ñ ¡áßΓ«∩-
- Θ¿Ñ" «»Ñαá¡ñδ ó Γ«¼ ß¼δß½Ñ, τΓ« «¡¿ óßΓα«Ñ¡δ ó ¿¡ßΓαπ¬µ¿ε, á
- ßΓ᫬«óá∩ ¿¡ßΓαπ¬µ¿∩ αáí«ΓáÑΓ ó ß««ΓóÑΓßΓó¿¿ ß π¬áºáΓѽ∩¼¿ SI
- ¿/¿½¿ DI. Ä»Ñαá¡ñδ ¿ß»«½∞ºπεΓß∩ Γ«½∞¬« ñ½∩ ºáñá¡¿∩ αẼÑαá ñá¡-
- ¡δσ, á ¡Ñ ñ½∩ ñÑ⌐ßΓó¿Γѽ∞¡«⌐ ºáúαπº¬¿ π¬áºáΓѽÑ⌐. éºú½∩¡Ñ¼ ¡á φΓ«
- Γá¬: ¬«úñá óδ ¿ß»«½∞ºπÑΓÑ ¿¡ßΓαπ¬µ¿ε Γ¿»á:
-
- mov al,[String1]
-
- ß¼ÑΘÑ¡¿Ñ String1 "óßΓαá¿óáÑΓß∩" »α∩¼« ó ¿¡ßΓαπ¬µ¿ε ¡á ¼áΦ¿¡¡«¼
- ∩ºδ¬Ñ, ß««ΓóÑΓßΓóπεΘπε ¿¡ßΓαπ¬µ¿¿ MOV. Äñ¡á¬«, ¬«úñá óδ ¿ß»«½∞ºπ-
- ÑΓÑ ¿¡ßΓαπ¬µ¿ε:
-
- lods [String1]
-
- ¿¡ßΓαπ¬µ¿∩ ¡á ¼áΦ¿¡¡«¼ ∩ºδ¬Ñ íπñÑΓ ºá¡¿¼áΓ∞ 1 íá⌐Γ ¿ ß««ΓóÑΓßΓó«-
- óáΓ∞ ¿¡ßΓαπ¬µ¿¿ LODSB: Stirng1 ó ¿¡ßΓαπ¬µ¿ε ¡Ñ óßΓαá¿óáÑΓß∩. é
- φΓ«¼ ß½πτáÑ óδ ñ«½ª¡δ «íÑß»Ñτ¿Γ∞, τΓ«íδ αÑú¿ßΓαδ DS:SI π¬áºδó὿
- ¡á ¡áτὫ String1.
-
- Ä»Ñαá¡ñδ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ á¡á½«ú¿τ¡δ ΓѼ «»Ñαá¡ñá¼, ¬«-
- Γ«αδÑ ¿ß»«½∞ºπεΓß∩ ó ñ¿αÑ¬Γ¿óÑ ASSUME ó ¬áτÑßΓóÑ ßÑú¼Ñ¡Γ«ó. ä¿-
- αÑ¬Γ¿óá ASSUME ¡Ñ πßΓá¡áó½¿óáÑΓ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα, «¡á »α«ßΓ«
- ß««íΘáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« óδ πßΓᡫ󿽿 ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα,
- »«φΓ«¼π Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ óδ»«½¡¿Γ∞ ñ½∩ óáß »α«óÑα¬π ¡á ¡á½¿-
- τ¿Ñ «Φ¿í«¬. ǡὫú¿τ¡«, «»Ñαá¡ñδ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ ¡Ñ πßΓá¡áó-
- ½¿óáεΓ αÑú¿ßΓαδ, «¡¿ »α«ßΓ« π¬áºδóáεΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« óδ
- πßΓᡫ󿽿 SI ¿/¿½¿ DI, í½áú«ñáα∩ τѼπ Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ «»-
- αÑñѽ¿Γ∞ αẼÑα «»Ñαá¡ñá ¿ óδ»«½¡¿Γ∞ »α«óÑα¬π ¡á ¡á½¿τ¿Ñ «Φ¿í«¬.
- äá½∞¡Ñ⌐ΦÑÑ «íßπªñÑ¡¿Ñ «»Ñαá¡ñ«ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ »α¿óÑñÑ¡« ó
- αáºñÑ½Ñ "Ä»Ñαá¡ñδ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐".
-
- é αáºñÑ½Ñ "ÄΦ¿í¬¿ »α¿ αáí«ΓÑ ß« ßΓ᫬«ó묨 ¿¡ßΓαπ¬µ¿∩¼¿" ¼δ
- «íßπñ¿¼ ¡Ñ¬«Γ«αδÑ ¼«¼Ñ¡Γδ, ¬áßáεΘ¿Ñß∩ ¿ß»«½∞º«óá¡¿∩ ßΓ᫬«óδσ
- ¿¡ßΓαπ¬µ¿⌐.
-
-
-
- Åα«úαá¼¼δ, ß«ßΓ«∩Θ¿Ñ ¿º ¡Ñ߬«½∞¬¿σ ¼«ñπ½Ñ⌐
- -----------------------------------------------------------------
-
- Éá¡« ¿½¿ »«ºñ¡« óδ »«ñ«⌐ñÑΓÑ ¬ Γ«¼π, τΓ« σαá¡¿Γ∞ ¿ßσ«ñ¡δ⌐
- ΓѬßΓ ¬áªñ«⌐ »α«úαá¼¼δ ßΓá¡ÑΓ ºáΓαπñ¡¿Γѽ∞¡«. êß»«½∞º«óá¡¿Ñ ñ½∩
- ¿ßσ«ñ¡«ú« ¬«ñá »α«úαá¼¼δ «ñ¡«ú« Σá⌐½á »αѬαáß¡« »«ñσ«ñ¿Γ ñ½∩ ¡Ñ-
- í«½∞Φ¿σ »α«úαá¼¼, Γᬿσ, ¬á¬ »α¿¼Ñαδ ñá¡¡«ú« απ¬«ó«ñßΓóá, ¡« ñáªÑ
- »α«úαá¼¼δ ßαÑñ¡Ñú« αẼÑαá »α¿σ«ñ¿Γß∩ αáºí¿óáΓ∞ ¡á ¡Ñ߬«½∞¬« Σá⌐-
- ½«ó ¿½¿ ¼«ñπ½Ñ⌐, ¬«Γ«αδÑ áßßÑ¼í½¿απεΓß∩ «Γñѽ∞¡« ¿ ¬«¼»«¡πεΓß∩
- ó¼ÑßΓÑ. Äß¡«ó¡«Ñ »αÑ¿¼πΘÑßΓó« »α«úαá¼¼, ß«ßΓ«∩Θ¿σ ¿º ¡Ñ߬«½∞¬¿σ
- ¼«ñπ½Ñ⌐, ß«ßΓ«¿Γ ó Γ«¼, τΓ« »«ß½Ñ Γ«ú«, ¬á¬ óδ «ΓαÑñá¬Γ¿απÑΓÑ ¿ß-
- σ«ñ¡δ⌐ ¬«ñ, óá¼ »«ΓαÑíπÑΓß∩ »ÑαÑáßßÑ¼í½¿α«óáΓ∞ Γ«½∞¬« ΓÑ ¼«ñπ½¿,
- ¬«Γ«αδÑ óδ ¿º¼Ñ¡¿½¿, ¡Ñ ºáΓαáú¿óá∩ «ßΓá½∞¡δσ ¼«ñπ½Ñ⌐ »α«úαá¼¼δ.
- è Γ«¼π ªÑ ú«αáºñ« »α«ΘÑ «α¿Ñ¡Γ¿α«óáΓ∞ß∩ ßαÑñ¿ ¡Ñ߬«½∞¬¿σ ßΓ᫬,
- τѼ ó «ñ¡«¼ í«½∞Φ«¼ Σá⌐½Ñ.
-
- 櫺ñáΓ∞ »α«úαá¼¼π, ß«ßΓ«∩Θπε ¿º ¡Ñ߬«½∞¬¿σ ¼«ñπ½Ñ⌐, «τÑ¡∞
- ½Ñú¬«. ä½∩ «íÑß»ÑτÑ¡¿∩ Γᬿσ »α«úαá¼¼ Æπαí« ÇßßѼí½Ñα »αÑñπß¼áΓ-
- α¿óáÑΓ Γα¿ ñ¿αÑ¬Γ¿óδ: PUBLIC, EXTRN ¿ GLOBAL. îδ αáßß¼«Γα¿¼ ¿σ
- »««τÑαÑñ¡«, ¡« ß¡áτá½á ¼δ »α«á¡á½¿º¿απѼ »α¿¼Ñα »α«úαá¼¼δ, ß«ßΓ«-
- ∩ΘÑ⌐ ¿º ñóπσ ¼«ñπ½Ñ⌐, »«ß½Ñ τÑú« óá¼ íπñÑΓ ∩ßÑ¡ ¬«¡ΓѬßΓ, ó ¬«Γ«-
- α«¼ ¼δ íπñÑΓ «íßπªñáΓ∞ π¬áºá¡¡δÑ óδΦÑ ñ¿αÑ¬Γ¿óδ. Äß¡«ó¡á∩ »α«ú-
- αá¼¼á MAIN.ASM ¿¼ÑÑΓ ß½ÑñπεΘ¿⌐ ó¿ñ:
-
- DOSSEG
- .MODEL SMALL
- .STACK 200h
- .DATA
- String1 DB 'ä«íαδ⌐ ',0
- String2 DB 'ñÑ¡∞!',0dh,0ah,'$',0
- GLOBEL FinalString:BYTE
- FinalString DB 50 DUP (?)
- .CODE
- EXTRN ConcatenateStrings:PROC
- ProgramStart:
- mov ax,@Data
- mov ds,ax
- mov ax,OFFSET String1
- mov bx,OFFSET String2
- call ConcatenateStrings ; «íΩÑñ¿¡Ñ¡¿Ñ ñóπσ
- ; ßΓ᫬ ó «ñ¡π ßΓ᫬π
- mov ah,9
- mov dx,OFFSET FinalString
- int 21h ; »ÑτáΓ∞ ßΓ᫬¿-
- ; αѺπ½∞ΓáΓá
- mov ax,4ch
- int 21h ; óδ»«½¡¿Γ∞
- END ProgramStart
-
- Ç ó«Γ ñαπú«⌐ ¼«ñπ½∞ »α«úαá¼¼δ, SUB1.ASM:
-
- DOSSEG
- .MODEL SMALL
- .DATA
- GLOBAL FinalString:BYTE
- .CODE
- ;
- ; Å«ñ»α«úαá¼¼á ¬«»¿απÑΓ ß¡áτá½á «ñ¡π ßΓ᫬π,
- ; ºáΓѼ ñαπúπε, ó ßΓ᫬π FinalString
- ;
- ; éó«ñ:
- ; DS:AX = π¬áºáΓѽ∞ ¡á »Ñαóπε ¬«»¿απѼπε ßΓ᫬π
- ; DS:BX = π¬áºáΓѽ∞ ¡á óΓ«απε ¬«»¿απѼπε ßΓ᫬π
- ;
- ; éδó«ñ: «ΓßπΓßΓóπÑΓ
- ;
- ; 꺼ѡ∩ѼδÑ αÑú¿ßΓαδ: AL, SI, DI, ES
- ;
- PUBLIC ConcatenateStrings
- ConcatenateStrings PROC
- cld ; «ΓßτÑΓ ó »α∩¼«¼
- ; ¡á»αáó½Ñ¡¿¿
- mov di,SEG FinelString
- mov es,di
- mov di,OFFSET FinelString ; ES:DI π¬áºδóáÑΓ
- ; ¡á µÑ½Ñóπε ßΓ᫬π
- mov si,ax ; »Ñαóá∩ ßΓ᫬á ñ½∩
- ; ¬«»¿α«óá¡¿∩ ó StringLoop
- lodsb ; »«½πτ¿Γ∞ ß¿¼ó«½ ßΓ᫬¿ 1
- and al,al ; φΓ« 0?
- jz DoString2 ; ñá, ß« ßΓ᫬«⌐ 1 »«¬«¡τÑ¡«
- stosb ; ß«σαá¡¿Γ∞ ß¿¼ó«½ ßΓ«¬¿ 1
- jmp StringLoop
- DoString2:
- mov si,bx ; óΓ«αá∩ ßΓ᫬á ñ½∩ ¬«»¿α«-
- ; óá¡¿∩ ó µ¿¬½Ñ String2Loop
- lodsb ; »«½πτ¿Γ∞ ß¿¼ó«½ ßΓ᫬¿ 2
- stosb ; ß«σαá¡¿Γ∞ ß¿¼ó«½ ßΓ᫬¿ 2
- ; (ó¬½ετá∩ 0, ¬«úñá ¼δ
- ; Ñú« óßΓαÑΓ¿¼)
- and al,al ; φΓ« 0?
- jnz String2Loop ; ¡ÑΓ, «íαáí«ΓáΓ∞ ß½ÑñπεΘ¿⌐
- ; ß¿¼ó«½
- ret ; óδ»«½¡Ñ¡«
- ConcatenateString ENDP
- END
-
- ¥Γ¿ ñóá ¼«ñπ½∩ ¼«ª¡« áßßÑ¼í½¿α«óáΓ∞ «Γñѽ∞¡« ß »«¼«Θ∞ε ¬«-
- ¼á¡ñ:
-
- TASM main
- ¿
- TASM sub1
-
- á ºáΓѼ ߬«¼»«¡«óáΓ∞ ¿σ ó »α«úαá¼¼π MAIN.EXE ß »«¼«Θ∞ε ¬«¼á¡ñδ:
-
- TLINK main+sib1
-
- Åα¿ ºá»π᪥ ¬«¼á¡ñ«⌐:
-
- main
-
- »α«úαá¼¼á MAIN.EXE, ¬á¬ ¼«ª¡« ñ«úáñáΓ∞ß∩, óδó«ñ¿Γ ¡á φ¬αá¡ ßΓα«-
- ¬π:
-
- ä«íαδ⌐ ñÑ¡∞!
-
- ÆÑ»Ñα∞, ¬«úñá óδ πó¿ñѽ¿ »α«úαá¼¼π, ß«ßΓ«∩Θπε ¿º ¡Ñ߬«½∞¬¿σ
- ¼«ñπ½Ñ⌐, ó ñÑ⌐ßΓó¿¿, ñáóá⌐ΓÑ αáßß¼«Γα¿¼ Γα¿ ñ¿αÑ¬Γ¿óδ, «íÑß»Ñτ¿-
- óáεΘ¿Ñ Γá¬«Ñ »α«úαá¼¼¿α«óá¡¿Ñ.
-
-
-
- ä¿αÑ¬Γ¿óá PUBLIC
- -----------------------------------------------------------------
-
- äÑ⌐ßΓó¿Ñ ñ¿αÑ¬Γ¿óδ PUBLIC ñ«ßΓáΓ«τ¡« »α«ßΓ«. Ä¡á π¬áºδóáÑΓ
- Æπαí« ÇßßѼí½Ñαπ, τΓ« ß««ΓóÑΓßΓóπεΘπε ¼ÑΓ¬π ¿½¿ ¼ÑΓ¬¿ ¡πª¡« ßñÑ-
- ½áΓ∞ ñ«ßΓπ»¡δ¼¿ ñ½∩ ñαπú¿σ ¼«ñπ½Ñ⌐. çñÑß∞ ¼«ª¡« ¿ß»«½∞º«óáΓ∞
- »αá¬Γ¿τÑ߬¿ ½εíδÑ ¼ÑΓ¬¿, ó¬½ετá∩ ¿¼Ñ¡á »α«µÑñπα ¿ »ÑαѼѡ¡δσ »á-
- ¼∩Γ¿, á Γá¬ªÑ »α¿αáó¡Ñ¡¡δÑ ¼ÑΓ¬¿. ä¿αÑ¬Γ¿óá PUBLIC «íÑß»Ñτ¿óáÑΓ
- ñ«ßΓπ»¡«ßΓ∞ φΓ¿σ ¼ÑΓ«¬ ñαπú¿¼ ¼«ñπ½∩¼. ìá»α¿¼Ñα:
-
- .
- .
- .
- .DATA
- PUBLIC MemVar, Array1, ARRAY_LENGTH
- ARRAY_LENGTH EQU 100
- MemVar DW 10
- Array1 DB ARRAY_LENGTH DUP (?)
- .
- .
- .
- .CODE
- PUBLIC NearProc, FarProc
- NearProc PROC NEAR
- .
- .
- .
- NearProc ENDP ; í½¿ª¡∩∩ »α«µÑñπαá
- .
- .
- .
- FarProc LABEL PROC ; ñá½∞¡∩∩ »α«µÑñπαá
- .
- .
- .
- END
-
- çñÑß∞ ¿¼Ñ¡á »α¿αáó¡Ñ¡¡«⌐ ¼ÑΓ¬¿, »ÑαѼѡ¡«⌐ αẼÑα«¼ ó ß½«ó«,
- ¼áßß¿óá ¿ »α«µÑñπαδ ß í½¿ª¡Ñ¼ Γ¿»«¼ «íαáΘÑ¡¿∩ ñ«ßΓπ»¡δ ñαπú«¼π
- ¼«ñπ½ε, ¬«Γ«αδ⌐ íπñÑΓ ¬«¼»«¡«óáΓ∞ß∩ ß ñá¡¡δ¼ ¼«ñπ½Ñ¼.
-
- Äñ¡á¬« ¿¼ÑÑΓß∩ «ñ¿¡ Γ¿» ¼ÑΓ«¬, ¬«Γ«αδÑ ¡Ñ½∞º∩ ßñѽáΓ∞ «íΘÑ-
- ñ«ßΓπ»¡δ¼¿. ¥Γ« »α¿αáó¡Ñ¡¡δÑ ¼ÑΓ¬¿, ¬«Γ«αδÑ αáó¡δ º¡áτÑ¡¿∩¼-¬«¡ß-
- Γá¡Γá¼ ß αẼÑαἿ, «Γ½¿τ¡δ¼¿ «Γ 1 ¿½¿ 2 íá⌐Γ. ìá»α¿¼Ñα, ß½Ññπε-
- Θ¿Ñ ¼ÑΓ¬¿ «íΘÑñ«ßΓπ»¡δ¼¿ ßñѽáΓ∞ ¡Ñ½∞º∩:
-
- LONG_VALUE EQU 1000h
- TEXT_SYMBOL EQU <TextString>
-
- Åα¿ áßßÑ¼í½¿α«óá¡¿¿ Æπαí« ÇßßѼí½Ñα «íδτ¡« ¿ú¡«α¿απÑΓ αÑ-
- ú¿ßΓα íπ¬óδ, »«φΓ«¼π óßÑ «íΘÑñ«ßΓπ»¡δÑ ¼ÑΓ¬¿ »αÑ«íαáºπεΓß∩ ó »α«-
- »¿ß¡δÑ ß¿¼ó«½δ (óÑασ¡¿⌐ αÑú¿ßΓα). àß½¿ óδ σ«Γ¿ΓÑ, τΓ«íδ ó «íΘÑ-
- ñ«ßΓπ»¡δσ ¼ÑΓ¬áσ αẽ¿τ὿ß∞ íπ¬óδ óÑασ¡Ñú« ¿ ¡¿ª¡Ñú« αÑú¿ßΓα«ó,
- Γ« »α¿ áßßÑ¼í½¿α«óá¡¿¿ óßÑσ ¼«ñπ½Ñ⌐, ß«ñÑαªáΘ¿σ ßß佬¿ ¡á «íΘÑ-
- ñ«ßΓπ»¡δÑ ¼ÑΓ¬¿, ¡πª¡« ¿ß»«½∞º«óáΓ∞ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ Æπαí« Çß-
- ßѼí½Ñαá »áαá¼ÑΓα /ML ¿½¿ /MX.
-
- ìá»α¿¼Ñα, íѺ »áαá¼ÑΓαá /MX ¿½¿ /ML ó ñαπú¿σ ¼«ñπ½∩σ ß½Ññπε-
- Θ¿Ñ ñóÑ ¼ÑΓ¬¿ íπñπΓ φ¬ó¿óá½Ñ¡Γ¡δ¼¿:
-
- PUBLIC Symbol1, SYMBOL1
-
- Åα¿ ¿ß»«½∞º«óá¡¿¿ ñ½∩ «íÑß»ÑτÑ¡¿∩ αẽ¿τ¿¼«ßΓ¿ ßΓα«τ¡δσ ¿
- »α«»¿ß¡δσ íπ¬ó ó «íΘÑñ«ßΓπ»¡δσ ¿ ó¡ÑΦ¡¿σ ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ »áαá¼ÑΓ-
- αá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /MX ¡πª¡« ó¡¿¼áΓѽ∞¡« π¬áºδóáΓ∞ íπ¬óδ óÑασ¡Ñ-
- ú« ¿½¿ ¡¿ª¡Ñú« αÑú¿ßΓα«ó ó ñ¿αÑ¬Γ¿óáσ PUBLIC ¿½¿ EXTRN. Æπαí« Çß-
- ßѼí½Ñα ñѽáÑΓ ñ«ßΓπ»¡δ¼ ñ½∩ ñαπú¿σ ¼«ñπ½Ñ⌐ ëà ¿ñÑ¡Γ¿Σ¿¬áΓ«α,
- ¬«Γ«αδ⌐ π¬áºδóáÑΓ ó ñ¿αÑ¬Γ¿óÑ PUBLIC ¿½¿ EXTRN, á ¡Ñ Γ«Γ ¡á ¬«Γ«-
- αδ⌐ ñѽáÑΓß∩ ßßδ½¬á ¿½¿ ¬«Γ«αδ⌐ »ÑαÑ«»αÑñѽ∩ÑΓß∩ ó¡πΓα¿ ¼«ñπ½∩.
- ìá»α¿¼Ñα, ñ¿αÑ¬Γ¿óá:
-
- PUBLIC Abc
- abC Dw
-
- »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« «íΘÑñ«ßΓπ»¡δ¼ íπñÑΓ ¿¼∩ Abc, á ¡Ñ abC.
-
- ä½∩ ¬áªñ«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ó ñ¿αÑ¬Γ¿óÑ PUBLIC ¼«ª¡« ΓᬪÑ
- ºáñáΓ∞ ∩ºδ¬: C, FORTRAN, PASCAL, BASIC, PROLOG ¿ NOLANGUAGE (¡ÑΓ
- ∩ºδ¬á). ¥Γ« »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« ¬ ¿¼Ñ¡¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ñ« Γ«ú«,
- ¬á¬ «ñ¡« ó «íΩÑ¬Γ¡«¼ Σá⌐½Ñ ßΓá¡ÑΓ «íΘÑñ«ßΓπ»¡δ¼, áóΓ«¼áΓ¿τÑ߬¿
- »α¿¼Ñ¡∩εΓß∩ »αáó¿½á ¬«¡¬αÑΓ¡«ú« ∩ºδ¬á. ìá»α¿¼Ñα, Ñß½¿ óδ «»¿ß὿:
-
- PUBLIC C myprog
-
- Γ« ¿ñÑ¡Γ¿Σ¿¬áΓ«α myprog ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ ßΓá¡ÑΓ «íΘÑñ«ßΓπ»¡δ¼,
- ¬á¬ _myproc, »«ß¬«½∞¬π »« ß«ú½áΦÑ¡¿∩¼ ∩ºδ¬á æ¿ »ÑαÑñ ¿¼Ñ¡á¼¿
- ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ß½ÑñπÑΓ ß¿¼ó«½ »«ñτÑનóá¡¿∩. êß»«½∞º«óá¡¿Ñ ¿ñÑ¡-
- Γ¿Σ¿¬áΓ«αá ∩ºδ¬á ó ñ¿αÑ¬Γ¿óÑ PUBLIC óαѼѡ¡« «Γ¼Ñ¡∩ÑΓ ΓѬπΘÑÑ ºá-
- ñá¡¿Ñ ∩ºδ¬á (¿ß»«½∞ºπѼ«Ñ »« π¼«½τá¡¿ε ¿½¿ ºáñá¡¡«Ñ ó ñ¿αÑ¬Γ¿óÑ .
- MODEL). (ùΓ«íδ αáí«ΓὫ ñá¡¡«Ñ ßαÑñßΓó«, ¡Ñ «í∩ºáΓѽ∞¡« ñ«½ª¡á
- ñÑ⌐ßΓó«óáΓ∞ ñ¿αÑ¬Γ¿óá .MODEL.)
-
- ä¿αÑ¬Γ¿óá EXTRN
- -----------------------------------------------------------------
-
- é »«ß½Ññ¡Ñ¼ αáºñѽÑ, τΓ«íδ ßñѽáΓ∞ ¼ÑΓ¬¿ MemVar, Array1,
- ARRAY_LENGTH, NearProc ¿ FarProc ñ«ßΓπ»¡δ¼¿ ñ½∩ ñαπú¿σ ¼«ñπ½Ñ⌐,
- ¼δ ¿ß»«½∞º«ó὿ ñ¿αÑ¬Γ¿óπ PUBLIC. ìá ñá½ÑÑ ó«º¡¿¬áÑΓ ó«»α«ß, ¬á-
- ¬¿¼ «íαẫ¼ ñαπú¿Ñ ¼«ñ㫨 ¼«úπΓ ßßδ½áΓ∞ß∩ ¡á φΓ¿ ¼ÑΓ¬¿?
-
- ä½∩ Γ«ú«, τΓ«íδ ßñѽáΓ∞ ¼ÑΓ¬¿ ¿º ñαπú«ú« ¼«ñπ½∩ ñ«ßΓπ»¡δ¼¿ ó
- ñá¡¡«¼ ¼«ñπ½Ñ, ¿ß»«½∞ºπÑΓß∩ ñ¿αÑ¬Γ¿óá EXTRN. Å«ß½Ñ Γ«ú«, ¬á¬ ñ¿-
- αÑ¬Γ¿óá EXTRN íπñÑΓ ¿ß»«½∞º«óá¡á, τΓ«íδ ßñѽáΓ∞ ñ«ßΓπ»¡δ¼ ó ñá¡-
- ¡«¼ ¼«ñπ½Ñ ¼ÑΓ¬π ¿º ñαπú«ú« ¼«ñπ½∩, φΓπ ¼ÑΓ¬π ¼«ª¡« ¿ß»«½∞º«óáΓ∞
- ΓᬪÑ, ¬á¬ Ñß½¿ íδ «¡á íδ½á «»αÑñѽѡá ó ΓѬπΘѼ ¼«ñπ½Ñ. Åα¿óÑ-
- ñѼ »α¿¼Ñα ñαπú«ú« ¼«ñπ½∩, ó ¬«Γ«α«¼ ñ¿αÑ¬Γ¿óá EXTERN ¿ß»«½∞ºπÑΓ-
- ß∩ ñ½∩ ßß佫¬ ¡á «íΘÑñ«ßΓπ»¡δÑ ¼ÑΓ¬¿, «»¿ßá¡¡δÑ ó »«ß½Ññ¡Ñ¼ αáº-
- ñѽÑ:
-
- .
- .
- .
- .DATA
- EXTRN MemVar:WORD,Array1:BYTE,ARRAY_LENGTH:ABS
- .
- .
- .
- .CODE
- EXTRN NearProc:NEAR,FarProc:FAR
- .
- .
- .
- mov ax,[MemVar]
- mov bx,OFFSET Array1
- mov cx,ARRAY_LENGTH
- .
- .
- .
- call NearProc
- .
- .
- .
- call FarProc
- .
- .
- .
-
- çá¼ÑΓ¿¼, τΓ« óßÑ »∩Γ∞ ¼ÑΓ«¬ ¿ß»«½∞ºπεΓß∩ ¬á¬ «íδτ¡«. àñ¿¡ßΓ-
- óÑ¡¡«Ñ «Γ½¿τ¿Ñ «Γ »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ, ß«ßΓ«∩ΘÑ⌐ ¿º «ñ¡«ú«
- ¼«ñπ½∩, ∩ó½∩ÑΓß∩ ñ¿αÑ¬Γ¿óá EXTRN.
-
- çá ¬áªñ«⌐ ¼ÑΓ¬«⌐, «íΩ∩ó½Ñ¡¡«⌐ ó ñ¿αÑ¬Γ¿óÑ EXTRN, ß½ÑñπÑΓ
- ñó«ÑΓ«τ¿Ñ ¿ Γ¿». Æ¿» ¡Ñ«íσ«ñ¿¼« π¬áºδóáΓ∞, ¿¡áτÑ Æπαí« ÇßßѼí½Ñα
- ¡Ñ íπñÑΓ º¡áΓ∞ ¬á¬πε ¿¼Ñ¡¡« ¼ÑΓ¬π óδ «íΩ∩ó½∩ÑΓÑ ß »«¼«Θ∞ε ñ¿αѬ-
- Γ¿óδ EXTRN. çá «ñ¡¿¼ ¿ß¬½ετÑ¡¿Ñ¼ ¿ß»«½∞ºπѼδÑ ñ½∩ ó¡ÑΦ¡¿σ
- (external) ¼ÑΓ«¬ Γ¿»δ ß«ó»áñáεΓ ß Γ¿»á¼¿, ¬«Γ«αδÑ ¼«úπΓ ¿ß»«½∞º«-
- óáΓ∞ß∩ ó ñ¿αÑ¬Γ¿óÑ LABEL. ä«»πßΓ¿¼δ ß½ÑñπεΘ¿Ñ Γ¿»δ:
-
- ABS - áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ;
- BYTE - »ÑαѼѡ¡á∩ (ñá¡¡δÑ) αẼÑα«¼ ó íá⌐Γ;
- DWORD - »ÑαѼѡ¡á∩ (ñá¡¡δÑ) αẼÑα«¼ ó ñó«⌐¡«Ñ
- ß½«ó« (4 íá⌐Γá);
- DATAPTR - π¬áºáΓѽ∞ ¡á ñá¡¡δÑ í½¿ª¡Ñú« ¿½¿ ñá½∞¡Ñú« Γ¿-
- »á, ó ºáó¿ß¿¼«ßΓ¿ «Γ ¼«ñѽ¿ »á¼∩Γ¿;
-
- FAR - ¼ÑΓ¬á ¬«ñá ß ñá½∞¡¿¼ Γ¿»«¼ «íαáΘÑ¡¿∩
- (»ÑαÑσ«ñ «ßπΘÑßΓó½∩ÑΓß∩ ºáúαπº¬«⌐
- αÑú¿ßΓα«ó CS:IP);
- FWORD - 6-íá⌐Γ«óá∩ »ÑαѼѡ¡á∩ (ñá¡¡δÑ);
- NEAR - ¼ÑΓ¬á ¬«ñá ß í½¿ª¡¿¼ Γ¿»«¼ «íαáΘÑ¡¿∩
- (»α¿ »ÑαÑσ«ñÑ ºáúαπªáÑΓß∩ Γ«½∞¬«
- αÑú¿ßΓα IP);
- PROC - ¼ÑΓ¬á »α«µÑñπαδ (NEAR ¿½¿ FAR, ó
- ß««ΓóÑΓßΓó¿¿ ß ñ¿αÑ¬Γ¿ó«⌐ .MODEL);
- QWORD - »ÑαѼѡ¡á∩ (ñá¡¡δÑ) αẼÑα«¼ ó
- τÑΓóÑα¡«Ñ ß½«ó« (8 íá⌐Γ);
- ê¼∩ ßΓαπ¬Γπαδ - ¿¼∩ «»αÑñѽѡ¡«ú« »«½∞º«óáΓѽѼ Γ¿»á STRUC;
- TBYTE - 10-íá⌐Γ«óá∩ »ÑαѼѡ¡á∩ (ñá¡¡δÑ);
- UNKNOWN - ¡Ñ¿ºóÑßΓ¡δ⌐ Γ¿»;
- WORD - »ÑαѼѡ¡á∩ (ñá¡¡δÑ) αẼÑα«¼ ó ß½«ó«
- (2 íá⌐Γá).
-
- àñ¿¡ßΓóÑ¡¡δ¼ ¡Ñº¡á¬«¼δ¼ Γ¿»«¼ ó¡ÑΦ¡¿σ ñá¡¡δσ ∩ó½∩ÑΓß∩ Γ¿»
- ABS, ¬«Γ«αδ⌐ ¿ß»«½∞ºπÑΓß∩ ñ½∩ «íΩ∩ó½Ñ¡¿∩ ¼ÑΓ¬¿, «»αÑñѽѡ¡«⌐ ó ÑÑ
- ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EQU ¿½¿ =. äαπú¿¼¿ ß½«óἿ,
- φΓ« ¼ÑΓ¬á, ¬«Γ«αá∩ »α«ßΓ« »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¿¼∩ ¬«¡ßΓá¡Γδ ¿ ¡Ñ
- ßó∩ºá¡á ß áñαÑßἿ ¬«ñá ¿½¿ ñá¡¡δσ.
-
- ÄτÑ¡∞ ó᪡«, τΓ«íδ ñ½∩ ó¡ÑΦ¡¿σ ¼ÑΓ«¬ óδ ºáñáó὿ ¬«ααÑ¬Γ¡δ⌐
- Γ¿» ñá¡¡δσ, Γᬠ¬á¬ Æπαí« ÇßßѼí½Ñα íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ ¬«ñ ¡á «ß-
- ¡«óÑ ºáñá¡¡δσ óἿ Γ¿»«ó ñá¡¡δσ, ¿ π ¡Ñú« ¡ÑΓ ñαπú«ú« ß»«ß«íá «»-
- αÑñѽ¿Γ∞, τΓ« óáΦá ߻ѵ¿Σ¿¬áµ¿∩ ¡Ñ¬«ααÑ¬Γ¡á. ìá»α¿¼Ñα, Ñß½¿ óδ
- ß½πτá⌐¡« óóѽ¿:
-
- .
- .
- .
- .CODE
- EXTRN FarProc:NEAR
- .
- .
- .
- call FarProc
- .
- .
- .
-
- á ó ñαπú«¼ ¼«ñπ½Ñ ß«ñÑনΓß∩:
-
- .
- .
- .
- PUBLIC FarProc
- FARPROC PROC FAR
- .
- .
- .
- ret
- FarProc ENDP
- .
- .
- .
-
- Γ« Æπαí« ÇßßѼí½Ñα ó ß««ΓóÑΓßΓó¿Ñ ß Γ¿»«¼ ñá¡¡δσ, ºáñá¡¡δ¼ óἿ ó
- ñ¿αÑ¬Γ¿óÑ EXTRN, ßúÑ¡Ñα¿απÑΓ í½¿ª¡ÑÑ «íαáΘÑ¡¿Ñ ¬ »α«µÑñπαÑ
- FarProc. ¡« ß «»αÑñѽѡ¡«ßΓ∞ε ߬áºáΓ∞, τΓ« Γá¬á∩ »α«úαá¼¼á
- ¬«ααÑ¬Γ¡« αáí«ΓáΓ∞ ¡Ñ íπñÑΓ, »«ß¬«½∞¬π FarProc ¡á ßἫ¼ ñÑ½Ñ ∩ó-
- ½∩ÑΓß∩ »α«µÑñπα«⌐ ß ñá½∞¡¿¼ Γ¿»«¼ «íαáΘÑ¡¿∩ ¿ ºáóÑαΦáÑΓß∩ ß««Γ-
- óÑΓßΓóπεΘÑ⌐ ¿¡ßΓαπ¬µ¿Ñ⌐ RET.
-
- èᬠπªÑ «»¿ßδóὫß∞ ó »«ß½Ññ¡Ñ¼ αáºñѽÑ, Æπαí« ÇßßѼí½Ñα
- «íδτ¡« (»« π¼«½τá¡¿ε) ¡Ñ αẽ¿τáÑΓ óÑασ¡¿⌐ ¿ ¡¿ª¡¿⌐ αÑú¿ßΓαδ
- íπ¬ó, »«φΓ«¼π «íΘÑñ«ßΓπ»¡δÑ ¼ÑΓ¬¿ »αÑ«íαáºπεΓß∩ ó óÑασ¡¿⌐ αÑ-
- ú¿ßΓα. ¥Γ« «º¡áτáÑΓ, τΓ« ó «íδτ¡«¼ ß«ßΓ«∩¡¿¿ ó¡ÑΦ¡¿Ñ ¼ÑΓ¬¿ íπñπΓ
- ¿¡ΓÑα»αÑΓ¿α«óáΓ∞ß∩ ó óÑασ¡Ñ¼ αÑú¿ßΓαÑ. àß½¿ óδ σ«ñ¿ΓÑ, τΓ«íδ ó«
- ó¡ÑΦ¡¿σ ¼ÑΓ¬áσ αÑú¿ßΓαδ íπ¬ó αẽ¿τ὿ß∞, ¿ß»«½∞ºπ⌐ΓÑ »áαá¼ÑΓαδ
- ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /ML ¿½¿ /MX.
-
- ä½∩ ¬áªñ«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ó ñ¿αÑ¬Γ¿óÑ EXTRN óδ ¼«ªÑΓÑ ΓᬪÑ
- ºáñáΓ∞ ∩ºδ¬: C, PASCAL, BASIC, FORTRAN, PROLOG ¿½¿ NOLANGUAGE
- (ó »«ß½Ññ¡Ñ¼ ß½πτáÑ ∩ºδ¬ ¡Ñ ¿ß»«½∞ºπÑΓß∩). ¥Γ« »α¿ó«ñ¿Γ ¬ Γ«¼π,
- τΓ« »ÑαÑñ ΓѼ,¬á¬ ¿¼∩ ßΓá¡ÑΓ ó «íΩÑ¬Γ¡«¼ Σá⌐½Ñ «íΘÑñ«ßΓπ»¡δ¼, ¬
- ¡Ñ¼π áóΓ«¼áΓ¿τÑ߬¿ »α¿¼Ñ¡∩εΓß∩ »αáó¿½á π¬áºá¡¡«ú« ∩ºδ¬á. ìá»α¿-
- ¼Ñα, Ñß½¿ óδ «»¿ß὿:
-
- EXTRN C myprog:NEAR
-
- Γ« ¿ñÑ¡Γ¿Σ¿¬áΓ«α myprog ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ »αÑ«íαáºπÑΓß∩ ó« ó¡ÑΦ¡¿⌐
- ¿ñÑ¡Γ¿Σ¿¬áΓ«α _myprog. êß»«½∞º«óá¡¿Ñ ß»Ñµ¿Σ¿¬áΓ«αá ∩ºδ¬á ó ñ¿αѬ-
- Γ¿óÑ EXTRN óαѼѡ¡« «Γ¼Ñ¡∩ÑΓ ΓѬπΘÑÑ ºáñá¡¿Ñ ∩ºδ¬á (¬«Γ«αδ⌐ ¿ß-
- »«½∞ºπÑΓß∩ »« π¼«½τá¡¿ε ¿½¿ ºáñá¡ ó ñ¿αÑ¬Γ¿óÑ .MODEL). (ùΓ«íδ
- αáí«ΓὫ ñá¡¡«Ñ ßαÑñßΓó«, ñ¿αÑ¬Γ¿óá .MODEL ¡Ñ «í∩ºáΓѽ∞¡« ñ«½ª¡á
- ñÑ⌐ßΓó«óáΓ∞.)
-
-
-
- ä¿αÑ¬Γ¿óá GLOBAL
- -----------------------------------------------------------------
-
- Åα«τ¿Γáó »«ß½Ññ¡¿Ñ αáºñѽδ, óδ ¼«ªÑΓÑ πñ¿ó¿Γ∞ß∩, ºáτѼ ñ½∩
- óδ»«½¡Ñ¡¿∩ «ñ¡«⌐ αáí«Γδ («íÑß»ÑτÑ¡¿∩ ß«ó¼ÑßΓ¡«ú« ¿ß»«½∞º«óá¡¿∩
- ¼ÑΓ«¬ αáº¡δ¼¿ ¼«ñπ½∩¼¿) ¡πª¡δ ñóÑ ñ¿αÑ¬Γ¿óδ - PUBLIC ¿ EXTRN? é
- ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ Ññ¿¡ßΓóÑ¡¡á∩ »α¿τ¿¡á ¿ß»«½∞º«óá¡¿∩ ñóπσ ñ¿αÑ¬Γ¿ó
- ºá¬½ετáÑΓß∩ ó ¡Ñ«íσ«ñ¿¼«ßΓ¿ «íÑß»Ñτ¿Γ∞ ß«ó¼ÑßΓ¿¼«ßΓ∞ ß í«½ÑÑ αá¡-
- ¡¿¼¿ áßßѼí½ÑαἿ. é Æπαí« ÇßßѼí½ÑαÑ ¿¼ÑÑΓß∩ ñ¿αÑ¬Γ¿óá GLOBAL,
- ¬«Γ«αá∩ ñѽáÑΓ óßÑ Γ«, τΓ« ñѽáεΓ ñ¿αÑ¬Γ¿óδ PUBLIC ¿ EXTRN.
-
- àß½¿ ß »«¼«Θ∞ε ñá¡¡«⌐ ñ¿αÑ¬Γ¿óδ óδ «íΩ∩ó¿ΓÑ ¼ÑΓ¬π ú½«íá½∞-
- ¡«⌐, á ºáΓѼ «»αÑñѽ¿ΓÑ ÑÑ (ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿ó DB, DW, PROC,
- LABEL ¿½¿ ñαπú¿σ »«ñ«í¡δσ ñ¿αÑ¬Γ¿ó), Γ« ¼ÑΓ¬á ßΓá¡ÑΓ ñ«ßΓπ»¡«⌐
- ñαπú¿¼ ¼«ñπ½∩¼ á¡á½«ú¿τ¡« Γ«¼π, ¬á¬ Ñß½¿ íδ óδ ó¼ÑßΓ« ñ¿αÑ¬Γ¿óδ
- GLOBAL ¿ß»«½∞º«ó὿ ñ¿αÑ¬Γ¿óπ PUBLIC. àß½¿ ªÑ óδ, ß ñαπú«⌐ ßΓ«α«-
- ¡δ, «íΩ∩ó½∩ÑΓÑ ¼ÑΓ¬π ú½«íá½∞¡«, á ºáΓѼ ¿ß»«½∞ºπÑΓÑ ÑÑ íѺ «»αÑ-
- ñѽѡ¿∩, Γ« φΓá ¼ÑΓ¬á ¿¡ΓÑα»αÑΓ¿απÑΓß∩, ¬á¬ ó¡ÑΦ¡∩∩ ¼ÑΓ¬á, á¡á½«-
- ú¿τ¡« Γ«¼π, ¬á¬ Ñß½¿ íδ óδ «íΩ∩󿽿 ÑÑ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EXTRN.
-
- Éáßß¼«Γα¿¼, ¡á»α¿¼Ñα, ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ:
-
- .
- .
- .
- .DATA
- GLOBAL FinalCount:WORD,PromptString:BYTE
- FinalCount DW ?
- .
- .
- .
- .CODE
- GLOBAL DoReport:NEAR,TallyUp:FAR
- TallyUp PROC FAR
- .
- .
- .
- call DoReport
- .
- .
- .
-
- çñÑß∞ ¼ÑΓ¬¿ FinalCount ¿ TallyUp «»αÑñѽѡδ, »«φΓ«¼π «¡¿
- ßΓá¡«ó∩Γß∩ «íΘÑñ«ßΓπ»¡δ¼¿ (ñ½∩ ñαπú¿σ ¼«ñπ½Ñ⌐) ¼ÑΓ¬á¼¿ (public).
- îÑΓ¬¿ PromptString ¿ DoReport ¡Ñ «»αÑñѽѡδ, »«φΓ«¼π »«ñαáºπ¼Ñóá-
- ÑΓß∩, τΓ« φΓ« ó¡ÑΦ¡¿Ñ (external) ¼ÑΓ¬¿, ¬«Γ«αδÑ «íΩ∩ó½Ñ¡δ «íΘÑ-
- ñ«ßΓπ»¡δ¼¿ ó ñαπú¿σ ¼«ñπ½∩σ.
-
- ä¿αÑ¬Γ¿óπ GLOBAL «τÑ¡∞ πñ«í¡« ¿ß»«½∞º«óáΓ∞, ¡á»α¿¼Ñα, ó«
- ó¬½ετáѼδσ Σá⌐½áσ (φΓ¿ Σá⌐½δ ¼δ «íßπñ¿¼ ó ß½ÑñπεΘѼ αáºñѽÑ).
- ÅαÑñ»«½«ª¿¼, π óáß ÑßΓ∞ ¼¡«ªÑßΓó« ¼ÑΓ«¬, ¬«Γ«αδÑ óδ σ«Γ¿ΓÑ ßñÑ-
- ½áΓ∞ ñ«ßΓπ»¡δ¼¿ ó »α«úαá¼¼Ñ (ß«ßΓ«∩ΘÑ⌐ ¿º ¡Ñ߬«½∞¬¿σ ¼«ñπ½Ñ⌐) ñ½∩
- ñαπú¿σ ¼«ñπ½Ñ⌐. ìÑ»½«σ« í佫 íδ, Ñß½¿ íδ ¼δ ß¼«ú½¿ «»αÑñѽ¿Γ∞ óßÑ
- φΓ¿ ¼ÑΓ¬¿ ó« ó¬½ετáѼ«¼ Σá⌐½Ñ, á ºáΓѼ ó¬½ετ¿Γ∞ φëà Σá⌐½ ó ¬áª-
- ñδ⌐ ¼«ñπ½∞. è ß«ªá½Ñ¡¿ε, ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿ó PUBLIC ¿ EXTRN φΓ«
- ¡Ñ󫺼«ª¡«, Γᬠ¬á¬ ñ¿αÑ¬Γ¿óá EXTRN ¡Ñ íπñÑΓ αáí«ΓáΓ∞ ó Γ«¼ ¼«ñπ-
- ½Ñ, ó ¬«Γ«α«¼ «»αÑñѽѡá ñá¡¡á∩ ¼ÑΓ¬á, á ñ¿αÑ¬Γ¿óá PUBLIC íπñÑΓ
- αáí«ΓáΓ∞ Γ«½∞¬« ó Γ«¼ ¼«ñπ½Ñ, ó ¬«Γ«α«¼ ñá¡¡á∩ ¼ÑΓ¬á «»αÑñѽѡá.
- Äñ¡á¬« ñ¿αÑ¬Γ¿óá GLOBAL ñ«»πßΓ¿¼á ó« óßÑσ ¼«ñπ½∩σ, »«φΓ«¼π óδ ¼«-
- ªÑΓÑ ßΣ«α¼¿α«óáΓ∞ ó¬½ετáѼδ⌐ Σá⌐½, úñÑ óßÑ ¡πª¡δÑ ¼ÑΓ¬¿ «íΩ∩ó½Ñ¡δ
- ú½«íá½∞¡δ¼¿, á ºáΓѼ ó¬½ετ¿Γ∞ ñá¡¡δ⌐ Σá⌐½ ó« óßÑ óáΦ¿ ¼«ñπ½¿.
-
- ä½∩ ¬áªñ«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ó ñ¿αÑ¬Γ¿óÑ GLOBAL, ¬á¬ ¿ ñ½∩ ñ¿-
- αÑ¬Γ¿ó PUBLIC ¿½¿ EXTRN, ¼«ª¡« Γá¬ªÑ ºáñáΓ∞ ∩ºδ¬: C, FORTRAN,
- PASCAL, BASIC, PROLOG ¿ NOLANGUAGE (¡ÑΓ ∩ºδ¬á). ¥Γ« »α¿ó«ñ¿Γ ¬
- Γ«¼π, τΓ« ¬ ¿¼Ñ¡¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ñ« Γ«ú«, ¬á¬ «ñ¡« ó «íΩÑ¬Γ¡«¼
- Σá⌐½Ñ ßΓá¡ÑΓ «íΘÑñ«ßΓπ»¡δ¼, áóΓ«¼áΓ¿τÑ߬¿ »α¿¼Ñ¡∩εΓß∩ »αáó¿½á
- ¬«¡¬αÑΓ¡«ú« ∩ºδ¬á. ìá»α¿¼Ñα, Ñß½¿ óδ «»¿ß὿:
-
- GLOBAL C myprog
-
- Γ« ¿ñÑ¡Γ¿Σ¿¬áΓ«α myprog ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ ßΓá¡ÑΓ «íΘÑñ«ßΓπ»¡δ¼,
- ¬á¬ _myproc, »«ß¬«½∞¬π »« ß«ú½áΦÑ¡¿∩¼ ∩ºδ¬á æ¿ »ÑαÑñ ¿¼Ñ¡á¼¿
- ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ß½ÑñπÑΓ ß¿¼ó«½ »«ñτÑનóá¡¿∩. êß»«½∞º«óá¡¿Ñ ¿ñÑ¡-
- Γ¿Σ¿¬áΓ«αá ∩ºδ¬á ó ñ¿αÑ¬Γ¿óÑ PUBLIC óαѼѡ¡« «Γ¼Ñ¡∩ÑΓ ΓѬπΘÑÑ ºá-
- ñá¡¿Ñ ∩ºδ¬á (¿ß»«½∞ºπѼ«Ñ »« π¼«½τá¡¿ε ¿½¿ ºáñá¡¡«Ñ ó ñ¿αÑ¬Γ¿óÑ
- .MODEL). (ùΓ«íδ αáí«ΓὫ ñá¡¡«Ñ ßαÑñßΓó«, ¡Ñ «í∩ºáΓѽ∞¡« ñ«½ª¡á
- ñÑ⌐ßΓó«óáΓ∞ ñ¿αÑ¬Γ¿óá .MODEL.)
-
-
-
- 鬽ετáѼδÑ Σá⌐½δ
- -----------------------------------------------------------------
-
- ùáßΓ« «¬áºδóáÑΓß∩ ªÑ½áΓѽ∞¡δ¼ ó¬½ετ¿Γ∞ «ñ¿¡ ¿ ëà ªÑ í½«¬
- ¿ßσ«ñ¡«ú« ¬«ñá ÇßßѼí½Ñαá ó ¡Ñ߬«½∞¬« ¿ßσ«ñ¡δσ ¼«ñπ½Ñ⌐. éδ ¼«ªÑΓÑ
- ºáσ«ΓÑΓ∞ ¿ß»«½∞º«óáΓ∞ ó αẽ¿τ¡δσ ¼«ñπ½∩σ «ñ¡«⌐ »α«úαá¼¼δ ¬á-
- ¬¿Ñ-½¿í« »α¿ßóá¿óá¡¿∩ ¿½¿ ¼á¬α«¬«¼á¡ñδ, ¿½¿ ¿ß»«½∞º«óáΓ∞ ¿σ ó
- αạδσ »α«úαá¼¼áσ. Åα¿ φΓ«¼ »α¿Φ½«ß∞ íδ ¡á»¿ßáΓ∞ ñ½¿¡¡πε »α«úαá¼-
- ¼π, ¬«Γ«απε ¡ÑªÑ½áΓѽ∞¡« αáºí¿óáΓ∞ ¡á ¡Ñ߬«½∞¬« ¬«¼»«¡πѼδσ ¼«ñπ-
- ½Ñ⌐ (¡á»α¿¼Ñα, »α«úαá¼¼π, ¬«Γ«αá∩ ñ«½ª¡á ºá»¿ßδóáΓ∞ß∩ ó Åçô), ¡«
- Γá¬á∩ »α«úαá¼¼á ß½¿Φ¬«¼ óѽ¿¬á ¿ ÑÑ ¡Ñπñ«í¡« íπñÑΓ σαá¡¿Γ∞ ó «ñ-
- ¡«¼ Σá⌐½Ñ. é φΓ«¼ ß½πτáÑ ταѺóδτá⌐¡« πñ«í¡«⌐ «¬áºδóáÑΓß∩ ñ¿αÑ¬Γ¿-
- óá INCLUDE.
-
- è«úñá Æπαí« ÇßßѼí½Ñα óßΓαÑτáÑΓ ñ¿αÑ¬Γ¿óπ INCLUDE (ó¬½ε-
- τ¿Γ∞), «¡ »«¼ÑτáÑΓ φΓ« ¼ÑßΓ« ó ΓѬπΘѼ ¼«ñπ½Ñ ÇßßѼí½Ñαá, «íαáΘá-
- ÑΓß∩ ¬ ñ¿ß¬π ¿ ¡áσ«ñ¿Γ π¬áºá¡¡δ⌐ ó¬½ετáѼδ⌐ Σá⌐½ ¿ ¡áτ¿¡áÑΓ áß-
- ßÑ¼í½¿α«óá¡¿Ñ φΓ«ú« Σá⌐½á, ¬á¬ Ñß½¿ íδ óßÑ ßΓ᫬¿ ó¬½ετáѼ«ú«
- Σá⌐½á í뫨 ºá»¿ßá¡δ »α∩¼« ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ. Åα¿ ñ«ßΓ¿ªÑ¡¿¿ ¬«¡µá
- ó¬½ετáѼ«ú« Σá⌐½á Æπαí« ÇßßѼí½Ñα ó«ºóαáΘáÑΓß∩ ¬ ßΓ᫬Ñ, ß½Ññπε-
- ΘÑ⌐ ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ ºá ñ¿αÑ¬Γ¿ó«⌐ INCLUDE, ¿ ó«º«í¡«ó½∩ÑΓ áß-
- ßÑ¼í½¿α«óá¡¿Ñ ß φΓ«⌐ Γ«τ¬¿. Æá¬¿¼ «íαẫ¼, Γá¼, úñÑ óßΓαÑτáÑΓß∩
- ñ¿αÑ¬Γ¿óá INCLUDE, ΓѬßΓ ó¬½ετáѼ«ú« Σá⌐½á ó¬½ετáÑΓß∩ ó áßßÑ¼í½¿-
- α«óá¡¿Ñ ΓѬπΘÑú« ¿ßσ«ñ¡«ú« ¼«ñπ½∩ ÇßßѼí½Ñαá.
-
- ìá»α¿¼Ñα, Ñß½¿ Σá⌐½ MAINPROG.ASM ß«ñÑনΓ:
-
- .
- .
- .
- .CODE
- mov ax,1
- INCLUDE INCPROG.ASM
- push ax
- .
- .
- .
-
- á Σá⌐½ INCPROG.ASM ß«ñÑনΓ:
-
- mov bx,5
- add ax,bx
-
- Γ« αѺπ½∞ΓáΓ áßßÑ¼í½¿α«óá¡¿∩ Σá⌐½á MAINPROG.ASM íπñÑΓ ó Γ«τ¡«ßΓ¿
- φ¬ó¿óá½Ñ¡ΓÑ¡ áßßÑ¼í½¿α«óá¡¿ε ¬«ñá:
-
- .
- .
- .
- .CODE
- mov ax,1
- mov bx,5
- add ax,bx
- push ax
- .
- .
- .
-
- ä«»π߬áÑΓß∩ 󽫪ѡ¡«ßΓ∞ ó¬½ετáѼδσ Σá⌐½«ó ¡á »α«¿ºó«½∞¡πε
- ú½πí¿¡π, ñαπú¿¼¿ ß½«óἿ, ó¬½ετáѼδÑ Σá⌐½δ Γá¬ªÑ ¼«úπΓ ß«ñÑαªáΓ∞
- ñ¿αÑ¬Γ¿óδ INCLUDE (ó¬½ετáΓ∞ ñαπú¿Ñ Σá⌐½δ). 鬽ετÑ¡¡δÑ ßΓ᫬¿ ¼«ª-
- ¡« ½Ñú¬« «í¡áαπª¿Γ∞ ó Σá⌐½Ñ ½¿ßΓ¿¡úá, Γᬠ¬á¬ Æπαí« ÇßßѼí½Ñα
- ß½Ñóá «Γ ¬áªñ«⌐ ó¬½ετÑ¡¡«⌐ ßΓ᫬¿ »«¼ÑΘáÑΓ ¡«¼Ñα, π¬áºδóáεΘ¿⌐
- ú½πí¿¡π 󽫪ѡ¡«ßΓ¿ Σá⌐½«ó ¼«ñπ½Ñ⌐ (ó¬½ετáѼδÑ Σá⌐½δ ¼«úπΓ ¿¼ÑΓ∞
- »α«¿ºó«½∞¡πε 󽫪ѡ¡«ßΓ∞).
-
- ÄΓ¬πñá Æπαí« ÇßßѼí½Ñα º¡áÑΓ, úñÑ ¿ß¬áΓ∞ ó¬½ετáѼδÑ Σá⌐½δ?
- àß½¿ ó «»Ñαá¡ñÑ ñ¿αÑ¬Γ¿óδ INCLUDE, «»αÑñѽ∩εΘ¿¼ ¿¼∩ ó¬½ετáѼ«ú«
- Σá⌐½á, π¬áªÑΓÑ ñ¿ß¬ ¿½¿ ¼áαΦαπΓ ñ«ßΓπ»á ¬ Σá⌐½π, Γ« Æπαí« ÇßßѼí-
- ½Ñα íπñÑΓ ¿ß¬áΓ∞ Σá⌐½ Γ«½∞¬« ó π¬áºá¡¡«¼ óἿ ¼ÑßΓÑ. àß½¿ ªÑ óδ
- ºáñáñ¿ΓÑ ¿¼∩ Σá⌐½á íѺ π¬áºá¡¿∩ ¼áαΦαπΓá ¿ ñ¿ß¬á, Γ« Æπαí« Çß-
- ßѼí½Ñα ß¡áτá½á ¿ΘÑΓ Σá⌐½ ó ΓѬπΘѼ ¬áΓὫúÑ. àß½¿ «¡ ¡Ñ ¼«ªÑΓ
- ¡á⌐Γ¿ ºáñá¡¡δ⌐ Σá⌐½ ó ΓѬπΘѼ ¬áΓὫúÑ, Γ« »«¿ß¬ »α«ñ«½ªáÑΓß∩ ó
- ¬áΓὫúáσ, ºáñá¡¡δσ ó »áαá¼ÑΓαÑ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ -I (Ñß½¿ «¡ π¬á-
- ºδóáÑΓß∩). ìá»α¿¼Ñα, »α¿ ºáñá¡¿¿ ¬«¼á¡ñδ:
-
- TASM -ic:\include testprog
-
- ¿ ßΓ᫬¿:
-
- INCLUDE MYMACROS.ASM
-
- (ó Σá⌐½Ñ TESTPROG.ASM) Æπαí« ÇßßѼí½Ñα íπñÑΓ ß¡áτá½á ¿ß¬áΓ∞ ó ΓÑ-
- ¬πΘѼ ¬áΓὫúÑ Σá⌐½ MYMACROS.ASM, á ¡Ñ ¡á⌐ñ∩ Ñú«, óδ»«½¡¿Γ »«¿ß¬
- ó ¬áΓὫúÑ C:\INCLUDE. àß½¿ Σá⌐½ MYMACROS.ASM ¡Ñ íπñÑΓ ¡á⌐ñÑ¡ ¿
- Γá¼, Γ« Æπαí« ÇßßѼí½Ñα óδóÑñÑΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ.
-
- èßΓáΓ¿, ó ߻ѵ¿Σ¿¬áµ¿¿ ¼áαΦαπΓá ó ñ¿αÑ¬Γ¿óÑ INCLUDE ¼«ª¡«
- π¬áºδóáΓ∞ «íαáΓ¡πε ¬«ßπε τÑαΓπ (\). ¥Γ« «íÑß»Ñτ¿óáÑΓ ß«ó¼ÑßΓ¿-
- ¼«ßΓ∞ ß MASM.
-
- 鬽ετáѼδÑ Σá⌐½δ »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ «íÑß»ÑτÑ¡¿∩ ñ«ß-
- Γπ»¡«ßΓ¿ óáΦ¿σ í¿í½¿«ΓѬ ¿ ¼á¬α«¬«¼á¡ñ ó ßá¼δσ αẽ¿τ¡δσ ¼«ñπ½∩σ
- ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá. 鬽ετáѼδÑ Σá⌐½δ Γá¬ªÑ «¬áºδóáεΓß∩ «τÑ¡∞ »«-
- ½Ñº¡δ¼¿ »α¿ ß«ó¼ÑßΓ¡«¼ ¿ß»«½∞º«óá¡¿¿ ó αẽ¿τ¡δσ ¼«ñπ½∩σ »α«úαá¼-
- ¼δ ßΓ᫬«óδσ »α¿ßóá¿óá¡¿⌐, «íΩ∩ó½Ñ¡¿⌐ ú½«íá½∞¡δσ ¼ÑΓ«¬ ¿ ßÑú¼Ñ¡-
- Γ«ó ñá¡¡δσ. é« ó¬½ετáѼδσ Σá⌐½áσ ¿ßσ«ñ¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ¿ß»«½∞-
- ºπÑΓß∩ αÑñ¬«, »«ß¬«½∞¬π «Γñѽ∞¡δÑ ¼«ñ㫨 ¿ßσ«ñ¡«ú« ¬«ñá ¼«ª¡«
- »α«ßΓ« ¬«¼»«¡«óáΓ∞ ó¼ÑßΓÑ, ¡« ó« ó¬½ετáѼδσ Σá⌐½áσ 󻫽¡Ñ ñ«»πß-
- Γ¿¼« ¿ß»«½∞º«óáΓ∞ ßΓ᫬¿ ¿ßσ«ñ¡«ú« ¬«ñá (½εíδÑ ñ«»πßΓ¿¼δÑ ßΓ᫬¿
- ÇßßѼí½Ñαá).
-
-
-
- öá⌐½δ ½¿ßΓ¿¡úá
- -----------------------------------------------------------------
-
- Äíδτ¡« Æπαí« ÇßßѼí½Ñα ß«ºñáÑΓ ó αѺπ½∞ΓáΓÑ áßßÑ¼í½¿α«óá¡¿∩
- Γ«½∞¬« «íΩÑ¬Γ¡δ⌐ Σá⌐½ (Σá⌐½ ß αáßΦ¿αÑ¡¿Ñ¼ .OBJ), ¿¼∩ ¬«Γ«α«ú«
- ß«ó»áñáÑΓ ß ¿¼Ñ¡Ñ¼ ¿ßσ«ñ¡«ú« (.ASM) Σá⌐½á.
-
- àß½¿ óδ σ«Γ¿ΓÑ, ¼«ª¡« Γá¬ªÑ π¬áºáΓ∞ Æπαí« ÇßßѼí½Ñαπ, τΓ«
- ¡πª¡« ß«ºñáΓ∞ Σá⌐½ ½¿ßΓ¿¡úá (ß αáßΦ¿αÑ¡¿Ñ¼ .LST). ä½∩ φΓ«ú« ó ¬«-
- ¼á¡ñ¡«⌐ ßΓα«¬Ñ »α«ßΓ« óó«ñ∩Γß∩ ñóÑ ñ«»«½¡¿Γѽ∞¡δÑ ºá»∩ΓδÑ (¿½¿
- ¿¼Ñ¡¿ Σá⌐½á). ìá»α¿¼Ñα, Ñß½¿ ¬«¼á¡ñá:
-
- TASM hello
-
- áßßÑ¼í½¿απÑΓ Σá⌐½ HELLO.ASM ¿ ß«ºñáÑΓ «íΩÑ¬Γ¡δ⌐ Σá⌐½ HELLO.OBJ,
- Γ« ¬«¼á¡ñ¡á∩ ßΓ᫬á:
-
-
- TASM hello,,
-
- úÑ¡Ñα¿απÑΓ Σá⌐½ ½¿ßΓ¿¡úá HELLO.LST. é¼ÑßΓ« »«ß½Ññ¡Ñ⌐ ¬«¼á¡ñ¡«⌐
- ßΓ᫬¿ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ß½ÑñπεΘ¿Ñ φ¬ó¿óá½Ñ¡Γ¡δÑ ¬«¼á¡ñδ:
-
- TASM hello,hello,hello
- ¿
- TASM /L hello
-
- ÉѺπ½∞ΓáΓ »α¿ φΓ«¼ íπñÑà ëà ªÑ.
-
- ê¼Ñ¡á «íΩÑ¬Γ¡«ú« Σá⌐½á ¿/¿½¿ Σá⌐½á ½¿ßΓ¿¡úá ¡Ñ «í∩ºáΓѽ∞¡«
- ñ«½ª¡δ ß«ó»áñáΓ∞ ß ¿¼Ñ¡Ñ¼ ¿ßσ«ñ¡«ú« Σá⌐½á, «ñ¡á¬« ñ«ó«½∞¡« αÑñ¬«
- 󫺡¿¬áÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ∞ ºáñáóáΓ∞ ñ½∩ ¡¿σ αạδÑ ¿¼Ñ¡á.
-
- Äß¡«óπ ß«ñÑαªá¡¿∩ Σá⌐½á ½¿ßΓ¿¡úá ß«ßΓáó½∩ÑΓ ß«ñÑαªá¡¿Ñ ¿ß-
- σ«ñ¡«ú« Σá⌐½á, ñ«»«½¡Ñ¡¡«ú« αẽ¿τ¡«⌐ ¿¡Σ«α¼áµ¿Ñ⌐ « αѺπ½∞ΓáΓáσ
- áßßÑ¼í½¿α«óá¡¿∩. ä½∩ ¬áªñ«⌐ ¿ßσ«ñ¡«⌐ ßΓ᫬¿ Æπαí« ÇßßѼí½Ñα
- ó¬½ετáÑΓ ó ½¿ßΓ¿¡ú ß««ΓóÑΓßΓóπεΘπε ¿¡ßΓαπ¬µ¿ε ¼áΦ¿¡¡«ú« ¬«ñá ¿
- ß¼ÑΘÑ¡¿Ñ ¬áªñ«⌐ ßΓ᫬¿ ¼áΦ¿¡¡«ú« ¬«ñá ó ΓѬπΘѼ ßÑú¼Ñ¡ΓÑ. èα«¼Ñ
- Γ«ú«, Æπαí« ÇßßѼí½Ñα óδó«ñ¿Γ ó Σá⌐½Ñ ½¿ßΓ¿¡úá Γáí½¿µδ, úñÑ ß«-
- ñÑনΓß∩ ¿¡Σ«α¼áµ¿∩ « ¼ÑΓ¬áσ ¿ ßÑú¼Ñ¡Γáσ, ¿ß»«½∞ºπѼδσ ó »α«úαá¼-
- ¼Ñ, ó¬½ετá∩ º¡áτÑ¡¿Ñ ¿ Γ¿» ¬áªñ«⌐ ¼ÑΓ¬¿ ¿ áΓα¿íπΓδ ¬áªñ«ú« ßÑú-
- ¼Ñ¡Γá.
-
- Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ Γá¬ªÑ (»« ºá»α«ßπ) úÑ¡Ñα¿α«óáΓ∞ ñ½∩
- óßÑσ ¼ÑΓ«¬ ¿ßσ«ñ¡«ú« Σá⌐½á Γáí½¿µπ »ÑαѬαÑßΓ¡δσ ßß佫¬, ó ¬«Γ«α«⌐
- π¬áºδóáÑΓß∩, úñÑ íδ½á «»αÑñÑ½Ñ¡á ¬áªñá∩ ¼ÑΓ¬á ¿ úñÑ ¡á ¡ÑÑ ÑßΓ∞
- ßß佬á (ß¼. «»¿ßá¡¿Ñ »áαá¼ÑΓαá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /C ó â½áóÑ 3).
-
- Éáßß¼«Γα¿¼ ß¡áτá½á «ß¡«ó¡δÑ φ½Ñ¼Ñ¡Γδ ½¿ßΓ¿¡úá - áßßÑ¼í½¿α«-
- óá¡¡δ⌐ ¼áΦ¿¡¡δ⌐ ¬«ñ ¿ ß¼ÑΘÑ¡¿Ñ ¬áªñ«⌐ ¿¡ßΓαπ¬µ¿¿.
-
-
-
- Åα¿¼Ñα Σá⌐½á ½¿ßΓ¿¡úá
- -----------------------------------------------------------------
-
- Åα¿óÑñѼ ½¿ßΓ¿¡ú »α¿¼Ñαá »α«úαá¼¼δ HELLO.ASM.
-
- Turbo Assembler Version 2.0 06-29-90 16:21:27 Page 1
-
- Hello.ASM
-
- 1 DOSSEG
- 2 0000 .MODEL SMALL
- 3 0000 .STACK 100h
- 4 0100 .DATA
- 5 0000 48 65 6C 6C 6F 2C 20 + Message DB 'Hello, word',13,10,12
- 6 77 6F 72 6C 64 0D 0A +
- 7 0C
- 8 = 000F HELLO_MESSAGE_LENGTH EQU $-Message
- 9 000F .CODE
- 10 0000 B8 0000s mov ax,@Data
- 11 0003 8E D8 mov ds,ax ; πßΓá¡«ó¿Γ∞ DS ó º¡áτÑ¡¿Ñ
- 12 ; ßÑú¼Ñ¡Γá ñá¡¡δσ
- 13 0005 B4 40 mov ah,40h ; Σπ¡¬µ¿∩ DOS óδó«ñá ¡á
- 14 ; πßΓα«⌐ßΓó«
- 15 0007 BB 0001 mov bx,1 ; ßΓá¡ñáαΓ¡δ⌐ π¬áºáΓѽ∞
- 16 ; óδó«ñá
- 17 000A B9 000F mov cx,HELLO_MESSAGE_LENGTH ; τ¿ß½«
- 18 ; óδó«ñ¿¼δσ ß¿¼ó«½«ó
- 19 000D BA 000F mov dx,OFFSET Message ; óδó«ñ¿¼á∩
- 20 ; ßΓ᫬á
- 21 001D CD 21 int 21h ; óδóÑßΓ¿ "Hello"
- 22 0012 B4 4C mov ah,4ch ; Σπ¡¬µ¿∩ DOS ºáóÑαΦÑ¡¿∩
- 23 ; »α«úαá¼¼δ
- 24 END
-
- Turbo Assembler Version 2.0 06-29-90 16:21:27 Page 2
-
- Symbol Table
-
- Symbol Name Type Value
-
- ??DATE Text "06-29-88"
- ??FILENAME Text "HELLO "
- ??TIME Text "16:21:26"
- ??VERSION Number 004A
- @CODE Text _TEXT
- @CODESIZE Text 0
- @CPU Text 0101H
- @CURSEG Text _TEXT
- @DATA Text DGROUP
- @DATASIZE Text 0
- @FILENAME Text HELLO
- @WODRSIZE Text 2
- MESSAGE Byte DGROUP:0000
- HELLO_MESSAGE_LENGTH Number 000F
-
- Groups & Segments Bit Size Align Combine Class
-
- DGROUP Group
- STASK 16 0100 Para Stack STASK
- _DATA 16 000F Word Public DATA
- _TEXT 16 0016 Word Public CODE
-
- é óÑασ¡Ñ⌐ τáßΓ¿ ¬áªñ«⌐ ßΓαá¡¿µδ ½¿ßΓ¿¡úá óδó«ñ¿Γß∩ ºáú«½«-
- ó«¬, ß«ßΓ«∩Θ¿⌐ ¿º óÑαß¿¿ Æπαí« ÇßßѼí½Ñαá (ß »«¼«Θ∞ε ¬«Γ«α«ú« óδ-
- »«½¡Ñ¡« áßßÑ¼í½¿α«óá¡¿Ñ Σá⌐½á), ñáΓδ ¿ óαѼѡ¿ áßßÑ¼í½¿α«óá¡¿∩ ¿
- ¡«¼Ñαá ßΓαá¡¿µδ ½¿ßΓ¿¡úá.
-
- ï¿ßΓ¿¡ú ß«ßΓ«¿Γ ¿º ñóπσ τáßΓÑ⌐: αáßΦ¿αÑ¡¡«ú« ¿ßσ«ñ¡«ú« ¬«ñá
- ¿ Γáí½¿µδ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó (Symbol Table). æ¡áτá½á óδó«ñ¿Γß∩ ¿ß-
- σ«ñ¡δ⌐ ¬«ñ ÇßßѼí½Ñαá, ß ºáú«½«ó¬«¼ ¿ ¿¼∩ Σá⌐½á, ó ¬«Γ«α«¼ ¡áσ«-
- ñ¿Γß∩ ¿ßσ«ñ¡δ⌐ ¬«ñ. êßσ«ñ¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ß«»α«ó«ªñáÑΓß∩ ¿¡Σ«α-
- ¼áµ¿Ñ⌐ « ¼áΦ¿¡¡«¼ ¬«ñÑ ¿¡ßΓαπ¬µ¿⌐, ¿º ¬«Γ«αδσ Æπαí« ÇßßѼí½Ñα óδ-
- »«½¡¿½ Γαá¡ß½∩µ¿ε. éßÑ «Φ¿í¬¿ ¿ »αÑñπ»αѪñÑ¡¿∩, «í¡áαπªÑ¡¡δÑ »α¿
- áßßÑ¼í½¿α«óá¡¿¿, ó¬½ετáεΓß∩ ó ½¿ßΓ¿¡ú ¡Ñ»«ßαÑñßΓóÑ¡¡« ºá Γ«⌐
- ßΓ᫬«⌐, úñÑ «¡¿ óßΓαÑΓ¿½¿ß∞.
-
- æΓ᫬¿ ¬«ñá ó ½¿ßΓ¿¡úÑ ¿¼ÑεΓ ß½ÑñπεΘ¿⌐ Σ«α¼áΓ:
-
- <ú½πí¿¡á> <¡«¼Ñα_ßΓ᫬¿> <ß¼ÑΘÑ¡¿Ñ> <¼áΦ¿¡¡δ⌐_¬«ñ> <¿ßσ«ñ¡δ⌐_¬«ñ>
-
- "â½πí¿¡á" π¬áºδóáÑΓ πα«óÑ¡∞ 󽫪ѡ¡«ßΓ¿ ó¬½ετáѼδσ Σá⌐½«ó ¿
- ¼á¬α«¬«¼á¡ñ ó óáΦѼ Σá⌐½Ñ ½¿ßΓ¿¡úá.
-
- "쫼Ñα_ßΓ᫬¿" »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¡«¼Ñα ßΓ᫬¿ Σá⌐½á ½¿ßΓ¿¡-
- úá (¿ß¬½ετá∩ ßΓ᫬¿ ºáú«½«ó¬á ¿ Γ¿Γπ½∞¡δÑ ßΓ᫬¿). 쫼Ñαá ßΓ᫬
- «ß«íÑ¡¡« »«½Ñº¡δ »α¿ ¿ß»«½∞º«óá¡¿¿ ßαÑñßΓóá Æπαí« ÇßßѼí½Ñαá úÑ-
- ¡Ñαᵿ¿ »ÑαѬαÑßΓ¡δσ ßß佫¬, úñÑ ó ßß佬áσ π¬áºδóáεΓß∩ ¡«¼Ñαá
- ßΓ᫬. é Σá⌐½Ñ HELLO.LST ñ¿αÑ¬Γ¿óá DOSSEG ß«ñÑনΓß∩ ¡á ßΓα«¬Ñ 1
- Σá⌐½á ½¿ßΓ¿¡úá, ñ¿αÑ¬Γ¿óá .MODEL - ¡á ßΓα«¬Ñ 2 ¿ Γ.ñ.
-
- ôτΓ¿ΓÑ, τΓ« ¡«¼Ñαá ßΓ᫬¿ ó »«½Ñ "¡«¼Ñα_ßΓ᫬¿" - φΓ« ¡Ñ ¡«-
- ¼Ñαá ßΓ᫬ ¿ßσ«ñ¡«ú« ¼«ñπ½∩. ìá»α¿¼Ñα, »α¿ αáßΦ¿αÑ¡¿¿ ¼á¬α«¬«¼á¡-
- ñδ ¿½¿ ó¬½ετÑ¡¿¿ Σá⌐½á «ΓßτÑΓ ßΓ᫬ »α«ñ«½ªáÑΓß∩, σ«Γ∩ ΓѬπΘá∩
- ßΓ᫬á ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ «ßΓáÑΓß∩ Γ«⌐ ªÑ. ùΓ«íδ »ÑαÑóÑßΓ¿ ¡«¼Ñα
- ßΓ᫬¿ (ßúÑ¡Ñα¿α«óá¡¡δ⌐, ¡á»α¿¼Ñα, »α¿ ß«ºñá¡¿¿ »ÑαѬαÑßΓ¡δσ ßßδ-
- ½«¬), óδ ñ«½ª¡δ ¡á⌐Γ¿ ß««ΓóÑΓßΓóπεΘπε ßΓ᫬π ó ½¿ßΓ¿¡úÑ, á ºáΓѼ
- (»« ¡«¼Ñαπ ¿½¿ ¡á ú½áº) ¡á⌐Γ¿ ÑÑ ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ.
-
- "æ¼ÑΘÑ¡¿Ñ" - φΓ« ß¼ÑΘÑ¡¿Ñ ó ΓѬπΘѼ ßÑú¼Ñ¡ΓÑ («Γ ¡áτá½á) ¼á-
- Φ¿¡¡«ú« ¬«ñá, úÑ¡Ñα¿απѼ«ú« ß««ΓóÑΓßΓóπεΘÑ⌐ ßΓ᫬«⌐ ¿ßσ«ñ¡«ú«
- ¬«ñá. ìá»α¿¼Ñα, Message ¡áτ¿¡áÑΓß∩ ß« ß¼ÑΘÑ¡¿∩ 0 ó ßÑú¼Ñ¡ΓÑ ñá¡-
- ¡δσ.
-
- "îáΦ¿¡¡δ⌐_¬«ñ" »αÑñßΓáó½∩ÑΓ ß«í«⌐ ñÑ⌐ßΓó¿Γѽ∞¡πε »«ß½Ññ«óá-
- Γѽ∞¡«ßΓ∞ ΦÑßΓ¡áñµáΓ¿α¿τ¡«ú« º¡áτÑ¡¿∩ íá⌐Γ ¿ ß½«ó, ¬«Γ«αδÑ áß-
- ßÑ¼í½¿απεΓß∩ ¿º ß««ΓóÑΓßΓóπεΘÑ⌐ ¿ßσ«ñ¡«⌐ ßΓ᫬¿ ÇßßѼí½Ñαá. ìá»-
- α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩ MOV AX,@Data ¡áτ¿¡áÑΓß∩ »« ß¼ÑΘÑ¡¿ε 0 ó ßÑú¼Ñ¡-
- ΓÑ ¬«ñá. ê¡Σ«α¼áµ¿∩ ß»αáóá «Γ ñá¡¡«⌐ ¿¡ßΓαπ¬µ¿¿ - φΓ« ¼áΦ¿¡¡δ⌐
- ¬«ñ, ó ¬«Γ«αδ⌐ áßßÑ¼í½¿απÑΓß∩ ¿¡ßΓαπ¬µ¿∩, Γ« ÑßΓ∞ ¿¡ßΓαπ¬µ¿∩ MOV
- AX,@Data áßßÑ¼í½¿απÑΓß∩ ó B8 0000s (ó ΦÑßΓ¡áñµáΓ¿α¿τ¡«¼ »αÑñßΓáó-
- ½Ñ¡¿¿). 0B8h - φΓ« ¿¡ßΓαπ¬µ¿∩ ¡á ¼áΦ¿¡¡«¼ ∩ºδ¬Ñ, ºáúαπªáεΘá∩ ó
- αÑú¿ßΓα AX º¡áτÑ¡¿Ñ-¬«¡ßΓá¡Γπ, á 0000s - φΓ« »«ßΓ«∩¡¡«Ñ º¡áτÑ¡¿Ñ
- @Data, ¬«Γ«α«Ñ ºáúαπªáÑΓß∩ ó AX. éß∩ ¿¡ßΓαπ¬µ¿∩ MOV AX,@Data áß-
- ßÑ¼í½¿απÑΓß∩ ó Γα¿ íá⌐Γá ¼áΦ¿¡¡«ú« ¬«ñá.
-
- çá¼ÑΓ¿¼, τΓ« ó Σá⌐½Ñ ½¿ßΓ¿¡úá π¬áºá¡«, τΓ« ß½ÑñπεΘá∩ ºá MOV
- AX,@Data ¿¡ßΓαπ¬µ¿∩ (¬«Γ«α«⌐ ∩ó½∩ÑΓß∩ ¿¡ßΓαπ¬µ¿∩ MOV DS,AX) ¡áτ¿-
- ¡áÑΓß∩ ß« ß¼ÑΘÑ¡¿∩ 3 ó ßÑú¼Ñ¡ΓÑ ¬«ñá. ê φΓ« ¿¼ÑÑΓ ß«óÑαΦÑ¡¡« τÑΓ-
- ¬¿⌐ ß¼δß½, »«ß¬«½∞¬π ¿¡ßΓαπ¬µ¿∩ MOV AX,@Data ¡áτ¿¡áÑΓß∩ ß« ß¼ÑΘÑ-
- ¡¿∩ 0 ¿ ¿¼ÑÑΓ ñ½¿¡π 3 íá⌐Γá. îáΦ¿¡¡δÑ ¬«ñ, »«½πτáεΘ¿⌐ß∩ ó
- αѺπ½∞ΓáΓÑ áßßÑ¼í½¿α«óá¡¿∩ ¿¡ßΓαπ¬µ¿¿ (8 D8) ¿¼ÑÑΓ ñ½¿¡π 2 íá⌐Γá,
- »«φΓ«¼π ß½ÑñπεΘá∩ ¿¡ßΓαπ¬µ¿∩ ¡áτ¿¡áÑΓß∩ ß« ß¼ÑΘÑ¡¿∩ 5. éºú½∩¡πó
- ¡á Σá⌐½ ½¿ßΓ¿¡úá, ¼δ ¼«ªÑ¼ πíÑñ¿Γ∞ß∩, τΓ« φΓ« ¿¼Ñ¡¡« Γá¬.
-
- èᬠóδ ¼«ªÑΓÑ ºá¼ÑΓ¿Γ∞, ó Σá⌐½Ñ ½¿ßΓ¿¡úá ºá »«¬áºá¡δ Γ«½∞¬«
- »ÑαóδÑ 7 íá⌐Γ ¼áΦ¿¡¡«ú« ¬«ñá (ºá ¬«Γ«α묨 ß½ÑñπÑΓ ß¿¼ó«½ +), úÑ-
- ¡Ñα¿απѼδÑ ßΓ᫬«⌐:
-
- Message DB 'Hello, word',13,10,'$'
-
- Å«½∩ ¼áΦ¿¡¡«ú« ¬«ñá, ¬«Γ«αδÑ ¿¼ÑεΓ ß½¿Φ¬«¼ í«½∞Φπε ñ½¿¡π,
- τΓ«íδ π¼ÑßΓ¿Γ∞ß∩ ó »«½Ñ "¼áΦ¿¡¡δ⌐_¬«ñ", «íδτ¡« πßѬáεΓß∩ ¿ ºáóÑα-
- ΦáεΓß∩ ß¿¼ó«½«¼ +, τΓ« ú«ó«α¿Γ « Γ«¼, áßßÑ¼í½¿α«óá¡δ ñ«»«½¡¿Γѽ∞-
- ¡δÑ íá⌐Γδ, ¡« «¡¿ ¡Ñ π¬áºá¡δ. àß½¿ óá¼ ¡Ñ«íσ«ñ¿¼« πó¿ñÑΓ∞ óßÑ
- íá⌐Γδ ¼áΦ¿¡¡«ú« ¬«ñá, ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ %NOTHING («
- ¡Ñ⌐ ¼δ αáß߬áªÑ¼ ñá½∞ΦÑ). Åα¿ π¬áºá¡¿¿ ñá¡¡«⌐ ñ¿αÑ¬Γ¿óδ ¡Ñ ó¼Ñß-
- Γ¿óΦ¿⌐ß∩ ¬«ñ íπñÑΓ »ÑαÑ¡«ß¿Γ∞ß∩ ¡á ß½ÑñπεΘ¿Ñ ßΓ᫬¿.
-
- ìᬫ¡Ñµ,»«½Ñ "¿ßσ«ñ¡δ⌐_¬«ñ" - φΓ« »α«ßΓ« ¿ßσ«ñ¡á∩ ßΓ᫬á Çß-
- ßѼí½Ñαá (ó¼ÑßΓÑ ß ¬«¼¼Ñ¡Γáα¿∩¼¿). ìѬ«Γ«αδÑ ßΓ᫬¿ ¡á ÇßßѼí½Ñ-
- αÑ (¡á»α¿¼Ñα, ßΓ᫬¿, ß«ñÑαªáΘ¿Ñ Γ«½∞¬« ¬«¼¼Ñ¡Γáα¿¿) ¡Ñ úÑ¡Ñα¿απ-
- εΓ ¡¿¬á¬«ú« ¼áΦ¿¡¡«ú« ¬«ñá, ¿ »«½∩ "ß¼ÑΘÑ¡¿Ñ" ¿ "¼áΦ¿¡¡δ⌐_¬«ñ" ó
- Γᬿσ ßΓ᫬áσ «ΓßπΓßΓóπεΓ. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ ¡«¼Ñα ßΓ᫬¿ ¿¼ »α¿ßóá¿-
- óáÑΓß∩.
-
- ç¡áτÑ¡¿Ñ 0000s, ß««ΓóÑΓßΓóπεΘÑÑ @Data, φΓ« Γ«½∞¬« "ºá¼ÑßΓ¿-
- ΓÑΓ∞" ñ½∩ ñÑ⌐ßΓó¿Γѽ∞¡«ú« º¡áτÑ¡¿∩ ¿¡ßΓαπ¬µ¿¿:
-
- mov ax,@Data
-
- ¥Γ« »α«¿ßσ«ñ¿Γ »«Γ«¼π, τΓ« º¡áτÑ¡¿∩ ßÑú¼Ñ¡Γ«ó »α¿ßóá¿óáεΓß∩
- ¬«¼»«¡«óΘ¿¬«¼, á ¡Ñ Æπαí« ÇßßѼí½Ñα«¼, »«φΓ«¼π Æπαí« ÇßßѼí½Ñα ¡Ñ
- ¼«ªÑΓ ºá¡ÑßΓ¿ ßεñá ¬«ααÑ¬Γ¡«Ñ º¡áτÑ¡¿Ñ. éßÑ, τΓ« ¼«ªÑΓ ßñѽáΓ∞
- Æπαí« ÇßßѼí½Ñα - φΓ« ñáΓ∞ óá¼ »«¡∩Γ∞, τΓ« ñá¡¡«Ñ º¡áτÑ¡¿Ñ ∩ó½∩-
- ÑΓß∩ º¡áτÑ¡¿Ñ¼ ßÑú¼Ñ¡Γá, ¬«Γ«α«Ñ íπñÑΓ óδτ¿ß½Ñ¡« ¬«¼»«¡«óΘ¿¬«¼.
- Äí φΓ«¼ ú«ó«α¿Γ íπ¬óδ s ó ¬«¡µÑ úÑ¡Ñα¿απѼ«ú« ñá¡¡«⌐ ¿¡ßΓαπ¬µ¿Ñ⌐
- ¼áΦ¿¡¡«ú« ¬«ñá.
-
- ǡὫú¿τ¡«, ß¼ÑΘÑ¡¿Ñ ó ¼áΦ¿¡¡«¼ ¬«ñÑ, »«½πτÑ¡¡«¼ ¿º ¿¡ßΓαπ¬-
- 樨:
-
- mov dx,OFFSET Message
-
- ºáóÑαΦáÑΓß∩ íπ¬ó«⌐ r, ¬«Γ«αá∩ π¬áºδóáÑΓ, τΓ« ß¼ÑΘÑ¡¿Ñ ¼«ªÑΓ íδΓ∞
- »ÑαѼÑΘáÑ¼δ¼ ó¡πΓα¿ ßÑú¼Ñ¡Γá »α¿ ¬«¼í¿¡¿α«óá¡¿¿ Ñú« ¬«¼»«¡«óΘ¿¬«¼
- ß ñαπú¿¼¿ ßÑú¼Ñ¡ΓἿ.
-
- Åα¿óÑñѼ »«½¡δ⌐ ß»¿ß«¬ «í«º¡áτÑ¡¿⌐, ¿ß»«½∞ºπѼδσ Æπαí« Çß-
- ßѼí½Ñα«¼ ñ½∩ π¬áºá¡¿∩ σáαá¬ΓÑα¿ßΓ¿¬ áßßÑ¼í½¿α«óá¡¿∩ (Γᬿσ, ¬á¬
- »ÑαѼÑßΓ¿¼«ßΓ∞):
-
- -----------------------------------------------------------------
- Äí«º¡áτÑ¡¿Ñ ç¡áτÑ¡¿Ñ
- -----------------------------------------------------------------
- r ô¬áºδóáÑΓ Γ¿» ¬«ααѬµ¿¿ ß¼ÑΘÑ¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó
- ó ¼«ñπ½Ñ.
-
- s ô¬áºδóáÑΓ Γ¿» ¬«ααѬµ¿¿ ßÑú¼Ñ¡Γ«ó ñ½∩ ¿ñÑ¡Γ¿Σ¿¬á-
- Γ«α«ó ó ¼«ñπ½Ñ.
-
- sr ô¬áºδóáÑΓ Γ¿» ¬«ααѬµ¿¿ ß¼ÑΘÑ¡¿⌐ ¿ ßÑú¼Ñ¡Γ«ó ñ½∩
- ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ó ¼«ñπ½Ñ.
-
- e Å«¬áºδóáÑΓ ¬«ααѬµ¿ε ß¼ÑΘÑ¡¿∩ ñ½∩ ó¡ÑΦ¡¿σ ¿ñÑ¡Γ¿-
- Σ¿¬áΓ«α«ó.
-
- se Å«¬áºδóáÑΓ ¬«ααѬµ¿ε π¬áºáΓѽ∩ ñ½∩ ó¡ÑΦ¡¿σ ¿ñÑ¡-
- Γ¿Σ¿¬áΓ«α«ó.
-
- so Å«¬áºδóáÑΓ ¬«ααѬµ¿ε Γ«½∞¬« ßÑú¼Ñ¡Γá.
-
- + Å«¬áºδóáÑΓ, τΓ« «íΩÑ¬Γ¡δ⌐ ¬«ñ πßÑτÑ¡.
- -----------------------------------------------------------------
-
- é ½¿ßΓ¿¡úÑ «íΩÑ¬Γ¡«ú« ¬«ñá «í«º¡áτÑ¡¿∩ r, s ¿ sr ¿ß»«½∞ºπεΓ-
- ß∩ ñ½∩ «í«º¡áτÑ¡¿∩ Γ¿»á ¬«ααѬµ¿¿ ß¼ÑΘÑ¡¿∩, ßÑú¼Ñ¡Γá ¿ π¬áºáΓѽ∩
- (ßÑú¼Ñ¡Γá ¿ ß¼ÑΘÑ¡¿∩) ñ½∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ¼«ñπ½∩. Äí«º¡áτÑ¡¿Ñ e
- »«¬áºδóáÑΓ ¬«ααѬµ¿ε ß¼ÑΘÑ¡¿∩ ñ½∩ ó¡ÑΦ¡¿σ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, á ¡e
- π¬áºδóáÑΓ ¬«ααѬµ¿ε π¬áºáΓѽ∩ ó¡ÑΦ¡Ñú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá. è«ααѬµ¿∩
- ßÑú¼Ñ¡Γ«ó ñ½∩ ó¡ÑΦ¡¿σ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó («í«º¡áτáѼá∩, ¬á¬ s) á¡á-
- ½«ú¿τ¡á ½«¬á½∞¡δ¼ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá¼. ÄíΩÑ¬Γ¡δ⌐ ¬«ñ ¼«ªÑΓ Γá¬ªÑ ß«-
- ñÑαªáΓ∞ ó »«ß½Ññ¡Ñ¼ ßΓ«½íµÑ ß¿¼ó«½ +, π¬áºδóáεΘ¿⌐, τΓ« ¿¼ÑÑΓß∩
- ñ«»«½¡¿Γѽ∞¡δ⌐ «íΩÑ¬Γ¡δ⌐ ¬«ñ, ¬«Γ«αδ⌐ ¡πª¡« óδóÑßΓ¿, ¡« «¡ πßÑ-
- 祭.
-
- æá¼«Ñ ½Ñó«Ñ »«½Ñ ½¿ßΓ¿¡úá »αÑñßΓáó½∩ÑΓ ß«í«⌐ ßτÑΓτ¿¬ πα«ó¡∩.
- Åα¿ áßßÑ¼í½¿α«óá¡¿¿ ¿º «ß¡«ó¡«ú« Σá⌐½á φΓ« »«½Ñ «ßΓáÑΓß∩ »πßΓδ¼.
- Åα¿ áßßÑ¼í½¿α«óá¡¿¿ ¿º ó¬½ετáѼδσ Σá⌐½«ó φΓ« »«½Ñ »α¿¡¿¼áÑΓ º¡á-
- τÑ¡¿Ñ 1 ¿½¿ 2, 3 ¿ Γ.ñ., ó ºáó¿ß¿¼«ßΓ¿ «Γ πα«ó¡∩ 󽫪ѡ¡«ßΓ¿ ¬áª-
- ñ«ú« ó¬½ετáѼ«ú« Σá⌐½á. Æ«ªÑ ßá¼«Ñ »α«¿ßσ«ñ¿Γ »α¿ αáßΦ¿αÑ¡¿¿ ¼á¬-
- ᫬«¼á¡ñ.
-
- èᬠóδ ¼«ªÑΓÑ ºá¼ÑΓ¿Γ∞, ó Σá⌐½Ñ ½¿ßΓ¿¡úá ¡Ñ¬«Γ«αδÑ ºá»¿ß¿ ó
- ¼áΦ¿¡¡«¼ ¬«ñÑ »«¬áºá¡δ, ¬á¬ íá⌐Γ«óδÑ º¡áτÑ¡¿∩ (ñóÑ ΦÑßΓ¡áñµáΓ¿-
- α¿τ¡δÑ µ¿Σαδ), á ñαπú¿Ñ - ¬á¬ º¡áτÑ¡¿∩, αẼÑα«ó ó ß½«ó«. é φΓ«¼
- ÑßΓ∞ «»αÑñѽѡ¡á∩ ½«ú¿¬á: ¬«úñá Æπαí« ÇßßѼí½Ñα Γαá¡ß½¿απÑΓ ¼á-
- Φ¿¡¡δ⌐ ¬«ñ, »αÑñßΓáó½∩εΘ¿⌐ ß«í«⌐ º¡áτÑ¡¿Ñ αẼÑα«¼ ó ß½«ó« (¡á»-
- α¿¼Ñα, OFFSET Message, »αÑñßΓáó½∩εΘÑÑ ß«í«⌐ 16-í¿Γ«ó«Ñ ß¼ÑΘÑ¡¿Ñ),
- Γ« φΓ« ß¼ÑΘÑ¡¿Ñ »«¬áºδóáÑΓß∩, ¬á¬ º¡áτÑ¡¿Ñ αẼÑα«¼ ó ß½«ó«. ¥Γ«
- íδóáÑΓ «τÑ¡∞ »«½Ñº¡«, »«ß¬«½∞¬π ó »α«Γ¿ó¡«¼ ß½πτáÑ ¿ß»«½∞ºπεΘ¿⌐ß∩
- ó »α«µÑßß«αÑ 8086 ñ½∩ σαá¡Ñ¡¿∩ ß½«ó ¼Ñσá¡¿º¼ "¼½áñΦ¿⌐ íá⌐Γ »Ñα-
- óδ¼" »α¿ó«ñ¿½ íδ ¬ Γ«¼π, τΓ« »«α∩ñ«¬ íá⌐Γ ó ß½«óáσ íδ½ íδ ¿º¼Ñ¡Ñ¡
- ¡á «íαáΓ¡δ⌐.
-
- ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩:
-
- mov ax,1234h
-
- áßßÑ¼í½¿απÑΓß∩ ó 3 íá⌐Γá ¼áΦ¿¡¡«ú« ¬«ñá: 0B8h, 034Hh ¿ 012h (á
- Γᬫ¼ »«α∩ñ¬Ñ). àß½¿ Æπαí« ÇßßѼí½Ñα óδóÑñÑΓ φΓπ ¿¡ßΓαπ¬µ¿ε ó
- ó¿ñÑ ΓαÑσ íá⌐Γ, Γ« «¡á íπñÑΓ »«¬áºá¡á, ¬á¬:
-
- B8 34 12
-
- Åα¿ φΓ«¼ íá⌐Γδ º¡áτÑ¡¿∩ αẼÑα«¼ ó ß½«ó« íπñÑΓ »ÑαÑßΓáó½Ñ¡δ.
- Æπαí« ÇßßѼí½Ñα óδó«ñ¿Γ Γᬫ⌐ ¼áΦ¿¡¡δ⌐ ¬«ñ, ¬á¬:
-
- B8 1234
-
- τΓ« «»αÑñѽѡ¡« ½ÑúτÑ τ¿ΓáÑΓß∩.
-
- è«úñá ¼δ αáß߬áºδó὿ « »«½Ñ "ß¼ÑΘÑ¡¿Ñ", ¼δ πªÑ ú«ó«α¿½¿ «
- ß¼ÑΘÑ¡¿¿ ó ΓѬπΘѼ ßÑú¼Ñ¡ΓÑ ¼ÑΓ«¬ ¿ ßΓ᫬ »α«úαá¼¼δ. ÄΓ¬πñá ªÑ ¼δ
- ¼«ªÑ¼ πº¡áΓ∞, ó ¬á¬«¼ ¿¼Ñ¡¡« ßÑú¼Ñ¡ΓÑ ¡áσ«ñ¿Γß∩ ¼ÑΓ¬á? ä½∩ φΓ«ú«
- ß½πªáΓ Γáí½¿µδ ½¿ßΓ¿¡ú«ó, « ¬«Γ«αδσ ¼δ ñá½ÑÑ αáß߬áªÑ¼.
-
-
-
-
- Æáí½¿µδ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ½¿ßΓ¿¡úá
- -----------------------------------------------------------------
-
- éΓ«αá∩ τáßΓ∞ Σá⌐½á ½¿ßΓ¿¡úá ¡áτ¿¡áÑΓß∩ ß ºáú«½«ó¬á "Symbol
- Table" (Γáí½¿µá ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó). ¥Γá τáßΓ∞ ß«ßΓ«¿Γ ¿º ñóπσ Γáí-
- ½¿µ, ó «ñ¡«⌐ ¿º ¬«Γ«αδσ «»¿ßδóáεΓß∩ ¿ß»«½∞ºπѼδÑ ó ¿ßσ«ñ¡«¼ ¬«ñÑ
- ¼ÑΓ¬¿, á ó ñαπú«⌐ »ÑαÑτ¿ß½∩εΓß∩ ¿ß»«½∞ºπѼδÑ ßÑú¼Ñ¡Γδ.
-
- èßΓáΓ¿, Ñß½¿ óδ ¡Ñ σ«Γ¿ΓÑ, τΓ«íδ ó ½¿ßΓ¿¡úÑ úÑ¡Ñα¿α«óá½áß∞
- Γáí½¿µá ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, óδ ¼«ªÑΓÑ π¬áºáΓ∞ Æπαí« ÇßßѼí½Ñαπ, τΓ«
- ¡πª¡« úÑ¡Ñα¿α«óáΓ∞ Γ«½∞¬« αáßΦ¿αÑ¡¡δ⌐ ½¿ßΓ¿¡ú ¬«ñá (φΓ« ¼«ª¡«
- ßñѽáΓ∞ ß »«¼«Θ∞ε »áαá¼ÑΓαá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /N).
-
-
-
- Æáí½¿µá ¼ÑΓ«¬
- -----------------------------------------------------------------
-
- é »Ñαó«⌐ Γáí½¿µÑ, ¬«Γ«απε ¼δ ¡áºδóáѼ Γáí½¿µÑ⌐ ¼ÑΓ«¬, »α¿óÑ-
- ñÑ¡ ß»¿ß«¬ óßÑσ ¼ÑΓ«¬ ¿ßσ«ñ¡«ú« ¬«ñá (ó á½Σáó¿Γ¡«¼ »«α∩ñ¬Ñ), á
- Γá¬ªÑ Γá¬ªÑ ¿σ Γ¿»δ ¿ º¡áτÑ¡¿∩. ìá»α¿¼Ñα, Σá⌐½ ½¿ßΓ¿¡úá HELLO.LST
- ß«ñÑαª¿Γ ß½ÑñπεΘπε ºá»¿ß∞:
-
- MESSAGE BYTE DGROUP:0000
-
- çñÑß∞ MESSAGE - φΓ« ¿¼∩ ¼ÑΓ¬¿ ¿½¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«α. Ä¡« π¬áºδ-
- óáÑΓß∩ »α«»¿ß¡δ¼¿ íπ¬óἿ, Γᬠ¬á¬ Ñß½¿ óδ ¡Ñ π¬áºδóáÑΓÑ »áαá¼ÑΓ-
- αδ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /MX ¿½¿ /ML, Æπαí« ÇßßѼí½Ñα »αÑ«íαáºπÑΓ óßÑ
- ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ó óÑασ¡¿⌐ αÑú¿ßΓα. BYTE π¬áºδóáÑΓ αẼÑα ñá¡¡δσ
- ñ½∩ Γ«ú« φ½Ñ¼Ñ¡Γá ñá¡¡δσ, ¡á ¬«Γ«αδ⌐ ßßδ½áÑΓß∩ ¿¼∩ Message
- (íá⌐Γ). DGROUP:0000 - φΓ« º¡áτÑ¡¿Ñ ¼ÑΓ¬¿ Message, «º¡áτáεΘÑÑ, τΓ«
- φΓá ¼ÑΓ¬á ¡áτ¿¡áÑΓß∩ ß« ß¼ÑΘÑ¡¿∩ 0 ó ßÑú¼Ñ¡ΓÑ ñá¡¡δσ DGROUP.
- (Å«¼¡¿ΓÑ, «ñ¡á¬«, τΓ« ßßδ½¬á ¡á Message ó »«ß½Ññ¡Ñ¼ αáºñÑ½Ñ »«¼Ñ-
- τÑ¡á ß¿¼ó«½«¼ r. ¥Γ« «º¡áτáÑΓ, τΓ« ¼ÑΓ¬á ¼«ªÑΓ íδΓ∞ »ÑαѼÑΘÑ¡á
- ¬«¼»«¡«óΘ¿¬«¼ »« ñαπú«¼π ß¼ÑΘÑ¡¿ε, ¬«úñá ó »α«úαá¼¼Ñ óδ»«½¡∩ÑΓß∩
- ¬«¼»«¡«ó¬á ñαπú¿σ ßÑú¼Ñ¡Γ«ó DGROUP. ê¡Σ«α¼áµ¿∩ « »ÑαѼÑΘÑ¡¿∩σ
- ßÑú¼Ñ¡Γ«ó ß«ñÑনΓß∩ ó Σá⌐½Ñ ¬áαΓδ »á¼∩Γ¿, ß«ºñáóáѼ«¼ ¬«¼»«¡«ó-
- Θ¿¬«¼.)
-
- ǡὫú¿τ¡«, ProgramStart »«¬áºá¡á, ¬á¬ ¼ÑΓ¬á í½¿ª¡Ñú« Γ¿»á
- ß« º¡áτÑ¡¿Ñ¼ _TEXT:0000. _TEXT »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¿¼∩ ßÑú¼Ñ¡Γá,
- «»αÑñѽѡ¡«ú« ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ .CODE, »«φΓ«¼π ProgramStart
- αáß»«½«ªÑ¡á »« »Ñαó«¼π áñαÑßπ ó ßÑú¼Ñ¡ΓÑ ¬«ñá. îδ «ΓóÑΓ¿½¿ ¡á
- 󫺡¿¬áóΦ¿⌐ αá¡ÑÑ ó«»α«ß « Γ«¼, ¬á¬ ¼«ª¡« «»αÑñѽ¿Γ∞, ó ¬á¬«¼
- ßÑú¼Ñ¡ΓÑ ¡áσ«ñ¿Γß∩ ¬áªñá∩ ¼ÑΓ¬á, Γᬠ¬á¬ φΓ« π¬áºδóáÑΓß∩ º¡áτÑ¡¿-
- Ѽ ß««ΓóÑΓßΓóπεΘÑú« »«½∩ Γáí½¿µδ ¼ÑΓ«¬ (»«½∩ Value).
-
- äαπú¿Ñ »ÑαÑτ¿ß½Ñ¡¡δÑ ó ½¿ßΓ¿¡úÑ Σá⌐½á HELLO.ASM ¼ÑΓ¬¿ - φΓ«
- ¼ÑΓ¬¿, »αÑñ«»αÑñѽѡ¡δÑ Æπαí« ÇßßѼí½Ñα«¼ »α¿ ¿ß»«½∞º«óá¡¿¿ π»α«-
- ΘÑ¡¡δσ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó. éßÑ φΓ¿ ¼ÑΓ¬¿ πßΓá¡áó½¿óá-
- εΓß∩ ó º¡áτÑ¡¿∩, ß««ΓóÑΓßΓóπεΘ¿Ñ ΓѬßΓ«óδ¼ ßΓ᫬á¼, ¿ ß«ñÑαªáΓ
- Γá¬¿Ñ º¡áτÑ¡¿∩, ¬á¬ _TEXT ¿ DGROUP (»«½Ñ Value Γáí½¿µδ Symbol
- Table).
-
- îÑΓ¬¿ ¼«úπΓ ¿¼ÑΓ∞ «ñ¿¡ ¿º ß½ÑñπεΘ¿σ Γ¿»«ó ñá¡¡δσ (ß¼. »«½Ñ
- Type):
-
- ABS DWORD NUMBER TBYTE
- ALIAS FAR QWORD TEXT
- BYTE NEAR STRUCT WORD
-
- èᬠ¼δ «íßπªñ὿ ó ¡áτá½Ñ ñá¡¡«⌐ ú½áóδ, ß »«¼«Θ∞ε »α¿ßóá¿óá-
- ¡¿∩ ¼ÑΓ¬¿ ¼«ª¡« »α¿αáó¡∩Γ∞ ¬ ½εí«¼π »«ßΓ«∩¡¡«¼π º¡áτÑ¡¿ε ¿½¿ ΓѬ-
- ßΓ«ó«⌐ ßΓ᫬Ñ. é »«½Ñ º¡áτÑ¡¿∩ (Value) Γáí½¿µδ ¼ÑΓ«¬ π¬áºδóáεΓß∩
- ΓÑ º¡áτÑ¡¿∩ ¼ÑΓ«¬, ¬«Γ«αδÑ óδ ºáñ὿. ä½∩ ¼ÑΓ«¬, ßó∩ºá¡¡δσ ß áñ-
- αÑßἿ »á¼∩Γ¿ (Γᬿσ, ¬á¬ Message), ó »«½Ñ º¡áτÑ¡¿∩ π¬áºδóáÑΓß∩
- áñαÑß ¼ÑΓ¬¿.
-
- Æáí½¿µá ¼ÑΓ«¬ - φΓ« Γ« ¼ÑßΓ« ó ½¿ßΓ¿¡úÑ, úñÑ ¼«ª¡« ¡á⌐Γ¿ ¿¡-
- Σ«α¼áµ¿ε « Γ¿»Ñ ¿ º¡áτÑ¡¿¿ ¬áªñ«⌐ ¼ÑΓ¬¿, ¿ß»«½∞º«óá¡¡«⌐ ó ¿ßσ«ñ-
- ¡«¼ ¬«ñÑ.
-
-
-
- Æáí½¿µá ßÑú¼Ñ¡Γ«ó ¿ úαπ»»
- -----------------------------------------------------------------
-
- äαπú«⌐ Γáí½¿µÑ⌐ ó φΓ«⌐ τáßΓ¿ ½¿ßΓ¿¡úá ∩ó½∩ÑΓß∩ Γáí½¿µá ßÑú-
- ¼Ñ¡Γ«ó ¿ úαπ»» (Groups & Segments). âαπ»»δ ßÑú¼Ñ¡Γ«ó, ΓᬿÑ, ¬á¬
- DGROUP, »α«ßΓ« π¬áºδóáεΓß∩ ºñÑß∞, ¬á¬ úαπ»»δ, »«ß¬«½∞¬π úαπ»»δ
- ßÑú¼Ñ¡Γ«ó ßἿ ¡Ñ ¿¼ÑεΓ áΓα¿íπΓ«ó, á ß«ßΓ«∩Γ ¿º «ñ¡«ú« ¿½¿ í«½ÑÑ
- ßÑú¼Ñ¡Γ«ó. æÑú¼Ñ¡Γδ, «íαáºπεΘ¿Ñ ó ñá¡¡«¼ ¼«ñπ½Ñ úαπ»»π, π¬áºδóá-
- εΓß∩ ó Γáí½¿µÑ ßÑú¼Ñ¡Γ«ó ¿ úαπ»» ¡Ñ»«ßαÑñßΓóÑ¡¡« »«ñ ¿¼Ñ¡Ñ¼ úαπ»-
- »δ, »α¿ φΓ«¼ ñóá »αÑñΦÑßΓóπεΘ¿σ »α«íÑ½á »«¬áºδóáεΓ ¿σ »α¿¡áñ½Ñª-
- ¡«ßΓ∞ ¬ úαπ»»Ñ. é Σá⌐½Ñ HELLO.LST ßÑú¼Ñ¡Γδ STACK ¿ _DATA ∩ó½∩εΓß∩
- τ½Ñ¡á¼¿ úαπ»»δ ßÑú¼Ñ¡Γ«ó DGROUP.
-
- æÑú¼Ñ¡Γδ ¿¼ÑεΓ áΓα¿íπΓδ, ¿ ó Γáí½¿µÑ ßÑú¼Ñ¡Γ«ó ¿ úαπ»» ñ½∩
- ¬áªñ«ú« ßÑú¼Ñ¡Γá »α¿óÑñÑ¡ ß»¿ß«¬ ¿º 5 áΓα¿íπΓ«ó. àß½¿ τ¿ΓáΓ∞ ß½Ñ-
- óá, Γ« ó Γáí½¿µÑ π¬áºδóáεΓß∩ ß½ÑñπεΘ¿Ñ áΓα¿íπΓδ: αẼÑα ñá¡¡δσ
- (Bit), «íΘ¿⌐ αẼÑα (Size), óδαáó¡¿óá¡¿Ñ (Align), Γ¿» ¬«¼í¿¡¿α«-
- óá¡¿∩ (Combine) ¿ ¬½áßß (Class). Éáßß¼«Γα¿¼ ¬áªñδ⌐ ¿º ¡¿σ ó «Γ-
- ñѽ∞¡«ßΓ¿.
-
- ÉẼÑα ñá¡¡δσ óßÑúñá αáóÑ¡ 16 (ºá ¿ß¬½ετÑ¡¿Ñ¼ ßÑú¼Ñ¡Γ«ó, áß-
- ßÑ¼í½¿απѼδσ ß ñ¿αÑ¬Γ¿ó«⌐ USE32 ñ½∩ »α«µÑßß«αá 80386; «í φΓ«¼
- αáß߬áºδóáÑΓß∩ ó â½áóÑ 9).
-
- ÉẼÑα ßÑú¼Ñ¡Γá ºáñáÑΓß∩ ó ó¿ñÑ τÑΓδαÑσ ΦÑßΓ¡áñµáΓ¿α¿τ¡δσ
- µ¿Σα. ìá»α¿¼Ñα, ßÑú¼Ñ¡Γ STACK ¿¼ÑÑΓ αẼÑα 0200h íá⌐Γ (512 ó ñÑ-
- ß∩Γ¿τ¡«¼ ó¿ñÑ).
-
- Æ¿» óδαáó¡¿óá¡¿∩ «»¿ßδóáÑΓ, ¡á ¬á¬«⌐ úαá¡¿µÑ »á¼∩Γ¿ ¼«ªÑΓ
- ¡áτ¿¡áΓ∞ß∩ ßÑú¼Ñ¡Γ. ê¼ÑεΓß∩ ß½ÑñπεΘ¿Ñ Γ¿»δ óδαáó¡¿óá¡¿∩:
-
- BYTE - ßÑú¼Ñ¡Γ ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ ß ½εí«ú« áñαÑßá;
- DWORD - ßÑú¼Ñ¡Γ ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ ß ½εí«ú« áñαÑßá,
- ¬αáΓ¡«ú« 4;
- PAGE - ßÑú¼Ñ¡Γ ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ ß ½εí«ú« áñαÑßá,
- ¬αáΓ¡«ú« 256;
- PARA - ßÑú¼Ñ¡Γ ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ ß ½εí«ú« áñαÑßá,
- ¬αáΓ¡«ú« 16 (óδαáó¡¿óáÑΓß∩ ¡á úαá¡¿µπ ß½«óá);
- WORD - ßÑú¼Ñ¡Γ ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ ß ½εí«ú« τÑΓ¡«ú«
- áñαÑßá.
-
- é Σá⌐½Ñ HELLO.LST ßÑú¼Ñ¡Γ STACK ¡áτ¿¡áÑΓß∩ ¡á úαá¡¿µÑ »áαáú-
- αáΣá, á ßÑú¼Ñ¡Γδ _DATA ¿ _TEXT óδαáó¡¿óáεΓß∩ ¡á úαá¡¿µπ ß½«óá
- (í«½ÑÑ »«ñα«í¡á∩ ¿¡Σ«α¼áµ¿∩ « óδαáó¡¿óá¡¿¿ »α¿óÑñÑ¡á ó â½áóÑ 9).
-
- Æ¿» ¬«¼í¿¡¿α«óá¡¿∩ «»αÑñѽ∩ÑΓ, ¬á¬ ßÑú¼Ñ¡Γδ ß Γᬿ¼ ªÑ ¿¼Ñ-
- ¡Ñ¼ íπñπΓ ¬«¼í¿¡¿α«óáΓ∞ß∩ ß ñá¡¡δ¼ ßÑú¼Ñ¡Γ«¼. ìá»α¿¼Ñα, ßÑú¼Ñ¡Γδ
- ß ¿ñÑ¡Γ¿τ¡δ¼¿ ¿¼Ñ¡á¼¿ ß Γ¿»«¼ ¬«¼í¿¡¿α«óá¡¿∩ PUBLIC «íΩÑñ¿¡∩εΓß∩
- (¬«¡¬áΓÑ¡¿απεΓß∩) ó «ñ¿¡ ßÑú¼Ñ¡Γ í«½∞ΦÑú« αẼÑαá, á Ñß½¿ φΓ¿
- ßÑú¼Ñ¡Γδ íπñπΓ ¿¼ÑΓ∞ Γ¿» ¬«¼í¿¡¿α«óá¡¿∩ COMMON, Γ« «¡¿ íπñπΓ ß½¿-
- óáΓ∞ß∩ ó «ñ¿¡ «íΘ¿⌐ ßÑú¼Ñ¡Γ (»ÑαѬαδΓ¿Ñ). ü«½ÑÑ »«ñα«í¡« « ¬«¼í¿-
- ¡¿α«óá¡¿¿ Γ¿»«ó ¿ ¬½áßß«ó ßÑú¼Ñ¡Γ«ó αáß߬áºδóáÑΓß∩ ó â½áóÑ 9.
-
- ìᬫ¡Ñµ, ¬½áßß ßÑú¼Ñ¡Γá «»αÑñѽ∩ÑΓ «íΘ¿⌐ ¬½áßß, ¬ ¬«Γ«α«¼π
- »α¿¡áñ½Ñª¿Γ ßÑú¼Ñ¡Γ (¡á»α¿¼Ñα, CODE, DATA ¿½¿ STACK). 諼»«¡«óΘ¿¬
- ¿ß»«½∞ºπÑΓ φΓπ ¿¡Σ«α¼áµ¿ε ñ½∩ π»«α∩ñ«τ¿óá¡¿∩ ßÑú¼Ñ¡Γ«ó »α¿ ¬«¼»«-
- ¡«ó¬¿ ¿σ ó »α«úαá¼¼π (ß¼. â½áóπ 9).
-
-
-
- Æáí½¿µá »ÑαѬαÑßΓ¡δσ ßß佫¬
- -----------------------------------------------------------------
-
- é Γáí½¿µÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó Σá⌐½á ½¿ßΓ¿¡úá »α¿ó«ñ¿Γß∩ ¼áßßá
- ¿¡Σ«α¼áµ¿¿ « ¼ÑΓ¬áσ, úαπ»»áσ ¿ ßÑú¼Ñ¡Γáσ, ¡« ¿¼ÑÑΓß∩ 2 óÑΘ¿, ¬«-
- Γ«αδÑ ºñÑß∞ ¡Ñ π¬áºá¡δ: úñÑ «»αÑñÑ½Ñ¡δ ¼ÑΓ¬¿, úαπ»»δ ¿ ßÑú¼Ñ¡Γδ ¿
- úñÑ «¡¿ ¿ß»«½∞ºπεΓß∩. äαπú¿¼¿ ß½«óἿ, ó Γáí½¿µÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó
- «ΓßπΓßΓóπεΓ »ÑαѬαÑßΓ¡δÑ ßß佬¿ ñ½∩ ¼ÑΓ«¬, úαπ»» ¿ ßÑú¼Ñ¡Γ«ó. ê¡-
- Σ«α¼áµ¿∩ « »ÑαѬαÑßΓ¡δσ ßß佬áσ «í½ÑúτáÑΓ ¡áσ«ªñÑ¡¿Ñ ¼ÑΓ«¬ ¿ «Γ-
- ߽Ѫ¿óá¡¿Ñ »«φΓỡ«ú« óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ »α¿ ÑÑ «Γ½áñ¬Ñ.
-
- æπΘÑßΓóπÑΓ ñóá ß»«ß«íá π¬áºá¡¿∩ Æπαí« ÇßßѼí½Ñαπ ¡á ¡Ñ«íσ«-
- ñ¿¼«ßΓ∞ úÑ¡Ñαᵿ¿ ó ¬«¡µÑ Σá⌐½á ½¿ßΓ¿¡úá ¿¡Σ«α¼áµ¿¿ « »ÑαѬαÑßΓ-
- ¡δσ ßß佬áσ. Äñ¡¿¼ ¿º ¡¿σ ∩ó½∩ÑΓß∩ »áαá¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /C,
- ¡á»α¿¼Ñα:
-
- TASM /c hello,,
-
- Åα¿ φΓ«¼ ó Σá⌐½Ñ ½¿ßΓ¿¡úá HELLO.LST íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ß∩ ¿¡-
- Σ«α¼áµ¿∩ « »ÑαѬαÑßΓ¡δσ ßß佬áσ. çá¼ÑΓ¿¼, «ñ¡á¬«, τΓ« ßá¼ »áαá-
- ¼ÑΓα /C ¡Ññ«ßΓáΓ«τÑ¡ ñ½∩ úÑ¡Ñαᵿ¿ ¿¡Σ«α¼áµ¿¿ « »ÑαѬαÑßΓ¡δσ
- ßß佬áσ. éδ ñ«½ª¡δ Γá¬ªÑ π¬áºáΓ∞ Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡« ß«º-
- ñáóáΓ∞ Σá⌐½ ½¿ßΓ¿¡úá, ó ¬«Γ«αδ⌐ φΓá ¿¡Σ«α¼áµ¿∩ íπñÑΓ »«¼ÑΘÑ¡á.
-
- çá»α«ß¿Γ∞ π Æπαí« ÇßßѼí½Ñαá ¡Ñ«íσ«ñ¿¼«ßΓ∞ úÑ¡Ñαᵿ¿ ¿¡Σ«α-
- ¼áµ¿¿ á »ÑαѬαÑßΓ¡δσ ßß佬áσ ¼«ª¡« Γá¬ªÑ ß »«¼«Θ∞ε ñ«íáó½Ñ¡¿∩ ó
- ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ τÑΓóÑαΓ«ú« »«½∩, ¡á»α¿¼Ñα:
-
- TASM hello,hello,hello,hello
- ¿½¿
- TASM hello,,,
-
- ÅαÑñ»«½«ª¿¼, óδ áßßÑ¼í½¿απÑΓÑ Σá⌐½ REVERSE.ASM (ß¼. óΓ«απε
- »α«úαá¼¼π ó â½áóÑ 5), π¬áºδóá∩ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ »áαá¼ÑΓα /C:
-
- TASM /C reverse,,
-
- Æπαí« ÇßßѼí½Ñα ß«ºñáÑΓ ß½ÑñπεΘ¿⌐ Σá⌐½ ½¿ßΓ¿¡úá (ß ¿¼Ñ¡Ñ¼
- REVERSE.LST):
-
- 1 DOSSEG
- 2 .MODEL SMALL
- 3 .STACK 100h
- 4 .DATA
- 5 = 03EB MAXIMUM_STRING_LENGTH EQU 1000
- 6 0000 03EB*(??) StringToReverse DB MAXIMUM_STRING_LENGTH DUP
- (?)
- 7 03E8 03E8*(??) ReverseString DB MAXIMUM_STRING_LENGTH DUP
- (?)
- 8 .CODE
- 9 ProgramStart:
- 10 0000 B8 0000s mov ax,@Data
- 11 0003 8E D8 mov dx,ax ; πßΓá¡«ó¿Γ∞ αÑú¿ßΓα
- DS Γᬿ¼ «íαẫ¼,
- τΓ«íδ «¡ π¬áºδóá½
- ¡á ßÑú¼Ñ¡Γ ñá¡¡δσ
- 13 0005 B4 3F mov ah,3fh ; Σπ¡¬µ¿∩ DOS τΓÑ¡¿∩
- óó«ñá
- 14 0007 àà 0000 mov bx,0 ; «»¿ßáΓѽ∞ ßΓá¡ñáαΓ-
- ¡«ú« óó«ñá
- 15 000A B9 03E8 mov cx,MAXIMUM_STRING_LENGTH ; ßτ¿Γá¡« ñ«
- 16 ; ¼á¬ß¿¼á½∞¡«ú«
- τ¿ß½á ß¿¼ó«½«ó
- 17 000D BA 0000r mov dx,OFFSET StringToReverse ; ß«σαá¡¿Γ∞
- 18 ; ßΓ᫬π
- 19 0010 OD 21 int 21h ; »«½πτ¿Γ∞ ßΓ᫬π
- 20 0012 23 C0 and ax,ax ; í뫨 ßτ¿Γá¡δ
- ß¿¼ó«½δ?
- 21 0014 74 1F jz Done ; ¡ÑΓ, ¬«¡Ñµ
- 22 0016 8B C8 mov cx,ax ; »«¼ÑßΓ¿Γ∞ ñ½¿¡π
- 23 ; ßΓ᫬¿ ó αÑú¿ßΓα
- æò, ¬«Γ«αδ⌐
- ¼«ª¡« ¿ß»«½∞º«óáΓ∞,
- ¬á¬ ßτÑΓτ¿¬
- 24 0018 51 push cx ; ß«σαá¡¿Γ∞ ó ßΓѬÑ
- ñ½¿¡π ßΓ᫬¿
- 25 0019 BB 0000r mov bx,OFFSET StringToReverse
- 26 001C BE 03E8r mov si,OFFSET ReverseString
- 27 001F 03 F1 add si,cx
- 28 0021 4E dec si ; π¬áºδóáÑΓ ¡á ¬«¡Ñµ
- 29 ; íπΣÑαá ßΓ᫬¿
- 30 ReverseLoop:
- 31 0022 8A 07 mov al,[bx] ; »«½πτ¿Γ∞ ß½Ññπ-
- εΘ¿⌐ ß¿¼ó«½
- 32 0024 88 04 mov [si],al ; ß«σαá¡¿Γ∞ ß¿¼ó«½δ
- ó «íαáΓ¡«¼
- »«α∩ñ¬Ñ
- 33 0026 43 inc bx ; π¬áºáΓѽ∞ ¡á
- ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- 34 0027 4E dec si ; π¬áºáΓѽ∞ ¡á
- 35 ; »αÑñδñπΘπε ∩τÑ⌐¬π
- buffer
- 36 0028 E2 F8 loop ReverseLoop ; »ÑαѼÑßΓ¿Γ∞
- ß½ÑñπεΘ¿⌐ ß¿¼ó«½,
- Ñß½¿ «¡ ¿¼ÑÑΓß∩
- 37 002ä 59 pop cx ; ¿ºó½Ñτ∞ ñ½¿¡π
- ßΓ᫬¿
- 38 002à à4 40 mov ax,40h ; Σπ¡¬µ¿∩ ºá»¿ß¿
- DOS
- 39 002D BB 0001 mov bx,1 ; «»¿ßáΓѽ∞
- ßΓá¡ñáαΓ¡«ú«
- óδó«ñá
- 40 00030 àä 03ç8π mov dx,OFFSET ReverseString ; ¡á»ÑτáΓáΓ∞
- ßΓ᫬π
- 41 0037 àå 21 ¬»σ 21⌐ ; ¡á»ÑτáΓáΓ∞ ßΓ᫬π
- 42 Done:
- 43 0035 B4 4C mov ah,4ch ; Σπ¡¬µ¿∩ DOS
- ºáóÑαΦÑ¡¿∩
- »α«úαá¼¼δ
- 44 0037 àå 21 int 21h ; ºáóÑαΦ¿Γ∞
- »α«úαá¼¼π
- 45 END
-
- Symbol Table
-
- Symbol Name Type Value Cref defined at #
-
- @Code Text _TEXT #2 #8
- @Curseg Text _TEXT #2 #3 #4 #8
- DONE Near _TEXT:0035 21 #42
- MAXIMUM_STRING_LENGTH Number 03E8 #5 6 7 15
- PROGRAMSTART Near _TEXT:0000 #9 45
- REVERSELOOP Near _Text:0022 #30 36
- REVERSESTRING Byte DGROUP:03E8 #7 26 40
- STRINGTOREVERSE Byte DGROUP:0000 #6 17 25
-
- Groups & Segments Bit Size Align Combine Class Cref defined at
-
- DGROUP Group #2 2 10
- STASK 16 0200 Para Stack STASK #3
- _DATA 16 07D0 Word Public DATA #2 #4
- _TEXT 16 0039 Word Public CODE #2 2 #8 8
-
- ¥Γ«Γ Σá⌐½ ½¿ßΓ¿¡úá Γá¬ªÑ ß«ñÑαª¿Γ αáßΦ¿αÑ¡¡δ⌐ ¿ßσ«ñ¡δ⌐ ¬«ñ ¿
- Γáí½¿µδ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó. Äñ¡á¬« ó Γáí½¿µÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó »«∩ó¿-
- ½«ß∞ ¡«ó«Ñ »«½Ñ - »«½Ñ »ÑαѬαÑßΓ¡δσ ßß佫¬ (»«½Ñ ß ¡áºó᡿Ѽ
- "Cref defined at").
-
- é »«½Ñ »ÑαѬαÑßΓ¡δσ ßß佫¬ π¬áºδóáεΓß∩ ñ½∩ ¬áªñ«ú« ¿ñÑ¡Γ¿Σ¿-
- ¬áΓ«αá (¼ÑΓ¬¿, úαπ»»δ ¿½¿ ßÑú¼Ñ¡Γá) ¡«¼Ñαá óßÑσ ΓÑσ ßΓ᫬ ó »α«ú-
- αá¼¼Ñ, úñÑ ¿¼ÑÑΓß∩ ßßδ½¬á ¡á ñá¡¡δ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α. ÅÑαÑñ ßΓ᫬á-
- ¼¿, ¡á ¬«Γ«αδσ íδ½ «»αÑñѽѡ ¿ñÑ¡Γ¿Σ¿¬áΓ«α, π¬áºδóáÑΓß∩ ß¿¼ó«½ #.
-
- ìá»α¿¼Ñα, ñáóá⌐ΓÑ ¡á⌐ñѼ, úñÑ «»αÑñѽ∩ÑΓß∩ ¿ ¿ß»«½∞ºπÑΓß∩
- ¼ÑΓ¬á MAXIMUM_STRING_LENGTH. é Σá⌐½Ñ ½¿ßΓ¿¡úá π¬áºδóáÑΓß∩, τΓ«
- «¡á íδ½á «»αÑñÑ½Ñ¡á ¡á ßΓα«¬Ñ 5. àß½¿ óδ »«ß¼«Γα¿ΓÑ ¡á ½¿ßΓ¿¡ú
- ¿ßσ«ñ¡«ú« ¬«ñá, Γ« πíÑñ¿ΓÑß∞, τΓ« φΓ« ¿¼Ñ¡¡« Γá¬. (ÄΓ¼ÑΓ¿¼, ¬ßΓá-
- Γ¿, τΓ« ó Γáí½¿µÑ ¼ÑΓ«¬ π¬áºδóáÑΓß∩, τΓ« º¡áτÑ¡¿Ñ
- MAXIMUM_STRING_LENGTH »αÑñßΓáó½∩ÑΓ ß«í«⌐ τ¿ß½« 03à8h, ñÑß∩Γ¿τ¡«Ñ
- º¡áτÑ¡¿Ñ ¬«Γ«α«ú« 1000.)
-
- é »«½Ñ »ÑαѬαÑßΓ¡δσ ßß佫¬ ñ½∩ ¼ÑΓ¬¿ MAXIMUM_STRING_LENGTH
- Γá¬ªÑ π¬áºδóáÑΓß∩, τΓ« ßß佬¿ ¡á φΓπ ¼ÑΓ¬π (¡« ¡Ñ «»αÑñѽѡ¿∩
- ¼ÑΓ¬¿) ¿¼ÑεΓß∩ ¡á ßΓ᫬áσ 6, 7 ¿ 15. àß½¿ óºú½∩¡πΓ∞ ¡« »Ñαóπε
- τáßΓ∞ ½¿ßΓ¿¡úá, Γ« ¼«ª¡« πó¿ñÑΓ∞, τΓ« φΓ« Γá¬.
-
- ìπª¡« ¿¼ÑΓ∞ ó ó¿ñπ, τΓ« ¼Ñªñπ Γáí½¿µÑ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ß »Ñ-
- αѬαÑßΓ¡δ¼¿ ßßδ½¬á¼¿ ¿ Γáí½¿µÑ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó íѺ »ÑαѬαÑßΓ¡δσ
- ßß佫¬ ßπΘÑßΓóπÑΓ «ñ¡« «Γ½¿τ¿Ñ. êñÑ¡Γ¿Σ¿¬áΓ«α, ¬«Γ«αδ⌐ íδ½ «»αÑ-
- ñѽѡ, ¡« ¡á ¬«Γ«αδÑ ¡ÑΓ ßß佫¬ ó »α«úαá¼¼Ñ, ó Γáí½¿µÑ ¼ÑΓ«¬ ß
- »ÑαѬαÑßΓ¡δ¼¿ ßßδ½¬á¼¿ »«¬áºá¡ ¡Ñ íπñÑΓ, »«ß¬«½∞¬π »ÑαѬαÑßΓ¡δÑ
- ßß佬¿ ¡á ¡Ñú« «ΓßπΓßΓóπεΓ. Äñ¡á¬« Γᬫ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α π¬áºδóáÑΓ-
- ß∩ ó «íδτ¡«⌐ Γáí½¿µÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó (íѺ »ÑαѬαÑßΓ¡δσ ßß佫¬).
-
- ÉáºαÑΦ¿Γ∞ úÑ¡Ñαáµ¿ε »ÑαѬαÑßΓ¡δσ ßß佫¬ ñ½∩ óßÑú« Σá⌐½á ¼«ª-
- ¡« ß »«¼«Θ∞ε »áαá¼ÑΓαá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /C. ¡« ß πóÑαÑ¡¡«ßΓ∞ε
- ߬áºáΓ∞, τΓ« óδ ¡Ñ ºáσ«Γ¿ΓÑ »«½πτáΓ∞ ½¿ßΓ¿¡ú »ÑαѬαÑßΓ¡δσ ßß佫¬
- ñ½∩ ¬áªñ«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá. ä½∩ í«½∞Φ¿σ ¿ßσ«ñ¡δσ Σá⌐½«ó ΓᬿÑ
- ½¿ßΓ¿¡ú¿ íπñπΓ ¿¼ÑΓ∞ «úα«¼¡δÑ αẼÑαδ. é Æπαí« ÇßßѼí½ÑαÑ »αÑñπß-
- ¼«ΓαÑ¡δ ñ¿αÑ¬Γ¿óδ, »«ºó«½∩εΘ¿Ñ óá¼ αáºαÑΦáΓ∞ ¿ ºá»αÑΘáΓ∞ »ÑαѬ-
- αÑßΓ¡δÑ ßß佬¿ ñ½∩ óδíαá¡¡δσ τáßΓÑ⌐ ¿ßσ«ñ¡«ú« Σá⌐½á.
-
- ä¿αÑ¬Γ¿óá %CREF αáºαÑΦáÑΓ αáºαÑΦáÑΓ úÑ¡Ñαᵿε ñ½∩ »«ß½Ññπε-
- Θ¿σ ßΓ᫬ ΓѬßΓá »ÑαѬαÑßΓ¡δσ ßß佫¬. ä¿αÑ¬Γ¿óδ %NOCREF ºá»αÑΘáÑΓ
- ¿σ úÑ¡Ñαᵿε. ïεíá∩ ¿º φΓ¿σ ñ¿αÑ¬Γ¿ó «Γ¼Ñ¡∩ÑΓ ñÑ⌐ßΓó¿Ñ, π¬áºá¡¡«Ñ
- ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ ß »«¼«Θ∞ε »áαá¼ÑΓαá /C. àß½¿ »ÑαѬαÑßΓ¡δÑ
- ßß佬¿ αáºαÑΦÑ¡δ úñÑ-½¿í« ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ, Γ« ó Γáí½¿µÑ ¿ñÑ¡Γ¿-
- Σ¿¬áΓ«α«ó π¬áºδóáεΓß∩ ßΓ᫬¿, ¡á ¬«Γ«αδσ í뫨 «»αÑñѽѡδ óßÑ ßÑú-
- ¼Ñ¡Γδ, úαπ»»δ ¿ ¼ÑΓ¬¿. Äñ¡á¬« ó ºá»¿ß¿ « »ÑαѬαÑßΓ¡δσ ßß佬áσ
- »α¿ó«ñ∩Γß∩ Γ«½∞¬« ΓÑ ßΓ᫬¿, ¡á ¬«Γ«αδσ ¿¼ÑεΓß∩ ßß佬¿ ¡á ß««Γ-
- óÑΓßΓóπεΘ¿Ñ ßÑú¼Ñ¡Γδ, úαπ»»δ ¿ ¼ÑΓ¬¿ ¿ ñ½∩ ¬«Γ«αδσ ó ¿ßσ«ñ¡«¼
- Σá⌐½Ñ αáºαÑΦÑ¡á úÑ¡Ñαᵿ∩ »ÑαѬαÑßΓ¡δσ ßß佫¬.
-
- Éáßß¼«Γα¿¼, ¡á»α¿¼Ñα, ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
-
- .
- .
- .
- #NOCREF
- ProgrammStart PROC ; ßΓ᫬á 1
- .
- .
- .
- jmp LoopTop ; ßΓ᫬á 2
- .
- .
- .
- #CREF
- LoopTop: ; ßΓ᫬á 3
- .
- .
- .
- loop LoopTop ; ßΓ᫬á 4
- #NOCREF
- mov ax,OFFSET ProgramStart ; ßΓ᫬á 5
- .
- .
- .
-
- ä½∩ ¼ÑΓ¬¿ ProgramStart ßΓ᫬á 1 íπñÑΓ π¬áºá¡á, ¬á¬ ßΓ᫬á
- «»αÑñѽѡ¿∩ (ß ß¿¼ó«½«¼ #), σ«Γ∩ «¡á ¿ ¡áσ«ñ¿Γß∩ ó «í½áßΓ¿, úÑ¡Ñ-
- αᵿ∩ »ÑαѬαÑßΓ¡δσ ßß佫¬ "ó䬽ετÑ¡á". ¥Γ« »α«¿ßσ«ñ¿Γ »«Γ«¼π, τΓ«
- Ñß½¿ úñÑ-½¿í« ó ¼«ñπ½Ñ úÑ¡Ñαᵿ∩ »ÑαѬαÑßΓ¡δσ ßß佫¬ ºáñáÑΓß∩, Γ«
- ó »ÑαѬαÑßΓ¡δσ ßß佬áσ π¬áºδóáεΓß∩ óßÑ ßΓ᫬¿ «»αÑñѽѡ¿∩ ¼ÑΓ«¬.
- ǡὫú¿τ¡«, ßΓ᫬á 3 íπñÑΓ π¬áºá¡á, ¬á¬ ßΓα«¬á «»αÑñѽѡ¿∩ ¼ÑΓ¬¿
- LoopTop.
-
- æΓ᫬á 4 íπñÑΓ π¬áºá¡á ó »ÑαѬαÑßΓ¡δσ ßß佬áσ ñ½∩ LoopTop,
- Γᬠ¬á¬ «¡á ¡áσ«ñ¿Γß∩ »«ß½Ñ ñ¿αÑ¬Γ¿óδ %CREF ¿ »ÑαÑñ ñ¿αÑ¬Γ¿ó«⌐
- %NOCREF. Äñ¡á¬«, ßΓ᫬á 2 ó »ÑαѬαÑßΓ¡δσ ßß佬áσ ñ½∩ LoopTop π¬á-
- ºá¡á ¡Ñ íπñÑΓ, »«Γ«¼π τΓ« «¡á ¡áσ«ñ¿Γß∩ ó º«¡Ñ ºá»αÑΘÑ¡¿∩ úÑ¡Ñαá-
- µ¿¿ »ÑαѬαÑßΓ¡δσ ßß佫¬. Å« Γ«⌐ ªÑ »α¿τ¿¡Ñ ó »ÑαѬαÑßΓ¡δσ ßß佬áσ
- ñ½∩ ProgramStart ¡Ñ íπñÑΓ π¬áºá¡á ßΓ᫬á 5.
-
- ä½∩ ß«ó¼ÑßΓ¿¼«ßΓ¿ ß ñαπú¿¼¿ áßßѼí½ÑαἿ ó Æπαí« ÇßßѼí½ÑαÑ
- »αÑñπß¼«ΓαÑ¡δ ñ¿αÑ¬Γ¿óδ .CREF ¿ .XCREF, π»αáó½∩εΘ¿Ñ úÑ¡ÑαᵿÑ⌐
- »ÑαѬαÑßΓ¡δσ ßß佫¬ á¡á½«ú¿τ¡« ñ¿αÑ¬Γ¿óá¼ %CREF ¿ %NOCREF.
-
-
-
-
- ô»αáó½Ñ¡¿Ñ ß«ñÑন¼δ¼ ¿ Σ«α¼áΓ«¼ ½¿ßΓ¿¡ú«ó
- -----------------------------------------------------------------
-
- Æπαí« ÇßßѼí½Ñα »αÑñ«ßΓáó½∩ÑΓ óá¼ Φ¿α«¬¿Ñ 󫺼«ª¡«ßΓ¿ »« π»-
- αáó½Ñ¡¿ε óδó«ñ«¼ ó ½¿ßΓ¿¡úáσ ßΓ᫬ ¿ßσ«ñ¡«ú« ¬«ñá ¿ Σ«α¼áΓ«¼ ½¿ß-
- Γ¿¡úá ó µÑ½«¼. ä¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼ ¼«ª¡« αáºñѽ¿Γ∞ ¡á
- ñóÑ ¬áΓÑú«α¿¿: ñ¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ß«ñÑন¼δ¼ ½¿ßΓ¿¡úá, ß »«-
- ¼«Θ∞ε ¬«Γ«αδσ óδí¿αáÑΓß∩ ó¬½ετáѼá∩ ó Σá⌐½ ½¿ßΓ¿¡úá ¿¡Σ«α¼áµ¿∩, ¿
- ñ¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼ ½¿ßΓ¿¡úá, «»αÑñѽ∩εΘ¿Ñ Σ«α¼áΓ Σá⌐-
- ½«ó ½¿ßΓ¿¡úá.
-
-
- ä¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ß«ñÑন¼δ¼ ½¿ßΓ¿¡úá
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ß«ñÑন¼δ¼ ½¿ßΓ¿¡úá αáºαÑΦáεΓ ¿½¿ ºá»-
- αÑΘáεΓ ó¬½ετÑ¡¿Ñ ó Σá⌐½ ½¿ßΓ¿¡úá «Γñѽ∞¡δσ ßΓ᫬. é «íΘѼ ß½πτáÑ
- φΓ¿ ñ¿αÑ¬Γ¿óδ »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ »«ñáó½Ñ¡¿∩ óδó«ñá ó Σá⌐½
- ½¿ßΓ¿¡úá Γ«⌐ ¿¡Σ«α¼áµ¿¿, ¬«Γ«αá∩ óáß ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ ¡Ñ ¿¡ΓÑαÑßπ-
- ÑΓ, τΓ« »«ºó«½∩ÑΓ π¼Ñ¡∞Φ¿Γ∞ «íΩѼ Σá⌐½á ½¿ßΓ¿¡úá ¿ π»α«ßΓ¿Γ∞ αá-
- í«Γπ ß ¡¿¼.
-
- ä¿αÑ¬Γ¿óδ %LIST ¿ %NOLIST
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óδ %LIST ¿ %NOLIST - φΓ« «ß¡«ó¡δÑ ñ¿αÑ¬Γ¿óδ, π»αáó½∩-
- εΘ¿Ñ óδó«ñ«¼ ßΓ᫬ ½¿ßΓ¿¡úá. Ä¡¿ αáºαÑΦáεΓ (ñ¿αÑ¬Γ¿óá %LIST) ¿½¿
- ºá»αÑΘáεΓ (ñ¿αÑ¬Γ¿óá %NOLIST) ó¬½ετÑ¡¿Ñ »«ß½ÑñπεΘ¿σ ßΓ᫬ ½¿ßΓ¿¡-
- úá ó Σá⌐½ ½¿ßΓ¿¡úá. ìá»α¿¼Ñα, »α¿ π¬áºá¡¿¿ ñ¿αÑ¬Γ¿ó:
-
- .
- .
- .
- %NOLIST
- mov ax,1
- %LIST
- mov bx,2
- %NOLIST
- add ax,bx
- .
- .
- .
-
- ó Σá⌐½ ½¿ßΓ¿¡úá íπñÑΓ ó¬½ετÑ¡á Γ«½∞¬« ßαÑñ¡∩∩ ßΓ᫬á mov bx,2. Å«
- π¼«½τá¡¿ε óδí¿αáÑΓß∩ ñ¿αÑ¬Γ¿óá %LIST.
-
- ä¿αÑ¬Γ¿óδ %COND ¿ %NOCOND
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óδ %COND ¿ %NOCOND »«ºó«½∩εΓ óá¼ αáºαÑΦáΓ∞ (ñ¿αÑ¬Γ¿óá
- %COND) ¿½¿ ºá»αÑΘáΓ∞ (ñ¿αÑ¬Γ¿óá %NOCOND) ó¬½ετÑ¡¿Ñ ó ½¿ßΓ¿¡ú í½«-
- ¬«ó πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩ ß ¡Ñπñ«ó½ÑΓó«αÑ¡¡δ¼ πß½«ó¿Ñ¼. ï¿ß-
- Γ¿¡ú Γᬿσ í½«¬«ó «íδτ¡« (»« π¼«½τá¡¿ε) »«ñáó½∩ÑΓß∩. ìá»α¿¼Ñα,
- »α¿ ¡á½¿τ¿¿ ñ¿αÑ¬Γ¿ó:
-
- .
- .
- .
- %CONDS
- IFE IS8086
- shl ax,7
- ELSE
- mov cl,7
- shl ax,cl
- ENDIF
- .
- .
- .
-
- ó Σá⌐½ ½¿ßΓ¿¡úá íπñπΓ »«¼ÑΘÑ¡δ «íá πß½«ó¡δσ í½«¬á ó¼ÑßΓÑ ñ¿αѬ-
- Γ¿óἿ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩, á ¡Ñ Γ«½∞¬« Γ«Γ í½«¬ πß½«ó¡«ú«
- áßßÑ¼í½¿α«óá¡¿∩, ¬«Γ«αδ⌐ ó« óαѼ∩ Γαá¡ß½∩µ¿¿ ¿¼ÑÑΓ ¿ßΓ¿¡¡«Ñ º¡á-
- τÑ¡¿Ñ.
-
-
- ä¿αÑ¬Γ¿óδ %INCL ¿ %NOINCL
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óδ %INCL ¿ %NOINCL »«ºó«½∩εΓ óá¼ αáºαÑΦáΓ∞ (ñ¿αÑ¬Γ¿óá
- %INCL) ¿½¿ ºá»αÑΘáΓ∞ (%NOINCL) óδó«ñ ó ½¿ßΓ¿¡úÑ ßΓ᫬, ó¬½ετáѼδσ
- ¿º ñαπú¿σ Σá⌐½«ó »« ñ¿αÑ¬Γ¿óÑ INCLUDE. Å« π¼«½τá¡¿ε óδó«ñ ó ½¿ß-
- Γ¿¡úÑ ó¬½ετáѼ«ú« ΓѬßΓá αáºαÑΦÑ¡. ìá»α¿¼Ñα, »« ñ¿αÑ¬Γ¿óá¼:
-
- .
- .
- .
- %NOINCL
- INCLUDE HEADER.ASM
- %INCL
- INCLUDE INIT.ASM
- .
- .
- .
-
- ßΓ᫬¿, ó¬½ετáѼδÑ ¿º Σá⌐½á HEADER.ASM, ¡Ñ íπñπΓ »«¼ÑΘÑ¡δ ó Σá⌐½
- ½¿ßΓ¿¡úá, á ßΓ᫬¿ ¿º Σá⌐½á INIT.ASM - íπñπΓ («ñ¡á¬« ó ½¿ßΓ¿¡úÑ
- íπñπΓ π¬áºá¡δ «íÑ ñ¿αÑ¬Γ¿óδ INCLUDE).
-
- ä¿αÑ¬Γ¿óδ %MACS ¿ %NOMACS
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óδ %MACS ¿ %NOMACS »«ºó«½∩εΓ óá¼ αáºαÑΦ¿Γ∞ (ñ¿αÑ¬Γ¿óá
- %MACS) ¿½¿ ºá»αÑΓ¿Γ∞ (ñ¿αÑ¬Γ¿óá %NOMACS) ó¬½ετÑ¡¿Ñ ó ½¿ßΓ¿¡ú
- ΓѬßΓá ¼á¬α«αáßΦ¿αÑ¡¿⌐. ï¿ßΓ¿¡ú ¼á¬α«αáßΦ¿αÑ¡¿⌐ «íδτ¡« »«ñáó½∩ÑΓ-
- ß∩. ìá»α¿¼Ñα, ó αѺπ½∞ΓáΓÑ áßßÑ¼í½¿α«óá¡¿∩ ¿ßσ«ñ¡«ú« ¬«ñá:
-
- .
- .
- .
- MAKE_BYTE MACRO VALUE
- DB VALUE
- ENDM
- .
- .
- .
- %NOMACS
- MAKE_BYTE 1
- %MACS
- MAKE_BYTE 1
- .
- .
- .
-
- ΓѬßΓ, úÑ¡Ñα¿απѼδ⌐ »Ñαóδ¼ ¼á¬α«αáßΦ¿αÑ¡¿Ñ¼ ¼á¬α«¬«¼á¡ñδ
- MAKE_BYTE, DB 1, ó Σá⌐½ ½¿ßΓ¿¡úá ó¬½ετÑ¡ ¡Ñ íπñÑΓ («ñ¡á¬« «íÑ
- ñ¿αÑ¬Γ¿óδ MACRO íπñπΓ ó¬½ετÑ¡δ ó Σá⌐½ ½¿ßΓ¿¡úá).
-
- ä¿αÑ¬Γ¿óδ %CTLS ¿ %NOCTLS
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óδ %CTLS ¿ %NOCTLS »«ºó«½∩εΓ óá¼ αáºαÑΦ¿Γ∞ (%CTLS)
- ¿½¿ ºá»αÑΓ¿Γ∞ (ñ¿αÑ¬Γ¿óá %NOCTLS) ó¬½ετÑ¡¿Ñ ó ½¿ßΓ¿¡ú ßἿσ π»-
- αáó½∩εΘ¿σ ñ¿αÑ¬Γ¿ó. Å« π¼«½τá¡¿ε ó¬½ετÑ¡¿Ñ ó ½¿ßΓ¿¡ú π»αáó½∩εΘ¿σ
- ñ¿αÑ¬Γ¿ó ºá»αÑΘÑ¡«. ìá»α¿¼Ñα, ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ ñ¿αÑ¬Γ¿ó:
-
- .
- .
- .
- %NOCTLS
- %NOINCL
- %CTLS
- %NOMACS
- .
- .
- .
-
- ñ¿αÑ¬Γ¿óá π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼ %NOINCL ó ½¿ßΓ¿¡ú ó¬½ετÑ¡á ¡á íπ-
- ñÑΓ, á ñ¿αÑ¬Γ¿óá %NOMACS - íπñÑΓ.
-
- ä¿αÑ¬Γ¿óδ %UREF ¿ %NOUREF »«ºó«½∩εΓ óá¼ αáºαÑΦáΓ∞ ¿½¿ ºá»αÑ-
- ΘáΓ∞ ó¬½ετÑ¡¿Ñ ó Γáí½¿µπ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ½¿ßΓ¿¡úá ¿ñÑ¡Γ¿Σ¿¬áΓ«-
- α«ó, ¡á ¬«Γ«αδÑ ¡ÑΓ ßß佫¬ (ñαπú¿¼¿ ß½«óἿ, ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, ¬«-
- Γ«αδÑ «»αÑñѽ∩εΓß∩, ¡« ¡Ñ ¿ß»«½∞ºπεΓß∩). Å« π¼«½τá¡¿ε ó¬½ετÑ¡¿Ñ ó
- ½¿ßΓ¿¡ú Γᬿσ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó αáºαÑΦÑ¡«. ùΓ«íδ φΓ¿ ñ¿αÑ¬Γ¿óδ ñÑ⌐-
- ßΓó«ó὿, ¡πª¡« ºáñáΓ∞ ß«ºñá¡¿Ñ ½¿ßΓ¿¡úá »ÑαѬαÑßΓ¡δσ ßß佫¬.
-
- ä¿αÑ¬Γ¿óδ %SYMS ¿ %NOSYMS »«ºó«½∩εΓ óá¼ αáºαÑΦáΓ∞ ¿½¿ ºá»αÑ-
- ΘáΓ∞ ó¬½ετÑ¡¿Ñ ó Σá⌐½ ½¿ßΓ¿¡úá Γáí½¿µδ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó. Å« π¼«½-
- τá¡¿ε ó¬½ετÑ¡¿Ñ ó ½¿ßΓ¿¡ú Γᬫ⌐ Γáí½¿µδ (¬á¬ óδ πªÑ ¡áóÑα¡«Ñ ºá-
- ¼ÑΓ¿½¿) αáºαÑΦÑ¡«.
-
-
-
- ä¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼ ½¿ßΓ¿¡úá
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼ ½¿ßΓ¿¡úá ¿º¼Ñ¡∩εΓ Σ«α¼áΓ Σá⌐½á
- ½¿ßΓ¿¡úá. ¥Γ¿ ñ¿αÑ¬Γ¿óδ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ úÑ¡Ñαᵿ¿ Σá⌐½á
- ½¿ßΓ¿¡úá Γᬫú« Σ«α¼áΓá, ¬«Γ«αδ⌐ óáß í«½∞ΦÑ πßΓαá¿óáÑΓ.
-
- ä¿αÑ¬Γ¿óá %TITLE ºáñáÑΓ ºáú«½«ó«¬, óδó«ñ¿¼δ⌐ ó óÑασ¡Ñ⌐ τáßΓ¿
- ¬áªñ«⌐ ßΓαá¡¿µδ αáßΦ¿αÑ¡¡«ú« ½¿ßΓ¿¡úá ¿ßσ«ñ¡«ú« ¬«ñá. ä½∩ ¬áªñ«⌐
- »α«úαá¼¼δ ¼«ª¡« ºáñáΓ∞ Γ«½∞¬« «ñ¿¡ ºáú«½«ó«¬. ä¿αÑ¬Γ¿óá %SUBTTL
- ºáñáÑΓ »«ñºáú«½«ó«¬, ¬«Γ«αδ⌐ ñ«½ªÑ¡ óδó«ñ¿Γ∞ß∩ »«ñ ºáú«½«ó¬«¼ ¡á
- ¬áªñ«⌐ ßΓαá¡¿µÑ ½¿ßΓ¿¡úá. é »α«úαá¼¼Ñ τ¿ß½« »«ñºáú«½«ó¬«¼ ¼«ªÑΓ
- íδΓ∞ ½εíδ¼. ìá»α¿¼Ñα, Ñß½¿ ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ SPACEWAR.ASM ß«ñÑα-
- ªáΓß∩ ñ¿αÑ¬Γ¿óδ:
-
- .
- .
- .
- %TITLE 'Åα«úαá¼¼á ¿úαδ ç ó Ñ º ñ ¡ δ Ñ ó « ⌐ ¡ δ'
- %SUBTTL 'Å«ñ»α«úαá¼¼δ úαáó¿Γᵿ«¡¡δσ φΣΣÑ¬Γ«ó'
- .
- .
- .
-
- Γ« ¡á ¬áªñ«⌐ ßΓαá¡¿µÑ αáßΦ¿αÑ¡¡«ú« ½¿ßΓ¿¡úá ¿ßσ«ñ¡«ú« ¬«ñá íπñπΓ
- ß«ñÑαªáΓ∞ß∩ ß½ÑñπεΘ¿Ñ ßΓ᫬¿:
-
- Turbo Assembler Version 2.0 06-29-90 16:21:27 Page 1
- SPACEWAR.ASM
- Åα«úαá¼¼á ¿úαδ ç ó Ñ º ñ ¡ δ Ñ ó « ⌐ ¡ δ
- Å«ñ»α«úαá¼¼δ úαáó¿Γᵿ«¡¡δσ φΣΣÑ¬Γ«ó
-
- ä¿αÑ¬Γ¿óá %NEWPAGE π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ó Σá⌐½Ñ
- ½¿ßΓ¿¡úá ¡πª¡« ¡áτáΓ∞ ¡«óπε ßΓαá¡¿µπ.
-
- ä¿αÑ¬Γ¿óá %TRUNC π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡« πßÑ-
- ¬áΓ∞ »«½∩, »αÑóδΦáεΘ¿Ñ ¼á¬ß¿¼á½∞¡πε ñ½¿¡π. ä¿αÑ¬Γ¿óá %NOTRUNC
- π¬áºδóáÑΓ, τΓ« Γá¬¿Ñ »«½∩ ¡πª¡« »ÑαÑ¡«ß¿Γ∞ ¡á ß½ÑñπεΘπε ßΓ᫬π.
- Å« π¼«½τá¡¿ε φΓ¿ »«½∩ πßѬáεΓß∩.
-
- ä¿αÑ¬Γ¿óá %PAGESIZE ºáñáÑΓ óÑαΓ¿¬á½∞¡δ⌐ (τ¿ß½« ßΓ᫬) ¿ ú«-
- ਧ«¡Γá½∞¡δ⌐ (τ¿ß½« »«º¿µ¿⌐) αẼÑα ßΓαá¡¿µ ½¿ßΓ¿¡úá, úÑ¡Ñα¿απÑ-
- ¼δσ Æπαí« ÇßßѼí½Ñα«¼. ìá»α¿¼Ñα, ñ¿αÑ¬Γ¿óá:
-
- %PAGESIZE 66,132
-
- π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡« ß«ºñáóáΓ∞ ßΓαá¡¿µδ ½¿ßΓ¿¡úá
- ß αẼÑα«¼ 66 ßΓ᫬ ¡á ßΓαá¡¿µπ ¿ 132 »«º¿µ¿¿ ó ßΓ᫬Ñ. ÄΓ¼ÑΓ¿¼,
- τΓ« ñ¿αÑ¬Γ¿óá %PAGESIZE ¡Ñ »«ßδ½áÑΓ ¡á »α¿¡ΓÑα ¬«¼á¡ñδ ºáñá¡¿∩
- αẼÑαá ßΓαá¡¿µδ, »«φΓ«¼π »ÑαÑñ »ÑτáΓ∞ε ½¿ßΓ¿¡úá óδ ñ«½ª¡δ ßἿ
- πßΓá¡«ó¿Γ∞ »áαá¼ÑΓαδ »α¿¡ΓÑαá, ºáΓѼ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ
- %PAGESIZE ñ½∩ úÑ¡Ñαᵿ¿ Æπαí« ÇßßѼí½Ñα«¼ ßΓαá¡¿µ, αẼÑα ¬«Γ«αδσ
- ß«ó»áñáÑΓ ß ΓѼ¿ αẼÑαἿ, ¬«Γ«αδÑ óδ πßΓᡫ󿽿 ¡á »α¿¡ΓÑαÑ.
-
-
-
-
- ä¿αÑ¬Γ¿óδ ºáñá¡¿∩ αẼÑαá »«½Ñ⌐
- -----------------------------------------------------------------
-
- ÉẼÑα«¼ »∩Γ¿ »«½Ñ⌐ αáßΦ¿αÑ¡¡«ú« ½¿ßΓ¿¡úá ¿ßσ«ñ¡«ú« ¬«ñá π»-
- αáó½∩εΓ »∩Γ∞ ñ¿αÑ¬Γ¿ó. Å«½¡δ⌐ Σ«α¼áΓ ßΓ᫬¿ ñá¡¡«⌐ τáßΓ¿ ½¿ßΓ¿¡úá
- ¿¼ÑÑΓ ó¿ñ:
-
- <ú½πí¿¡á> <¡«¼Ñα_ßΓ᫬¿> <ß¼ÑΘÑ¡¿Ñ> <¼áΦ¿¡¡δ⌐_¬«ñ> <¿ßσ«ñ¡δ⌐_¬«ñ>
-
- ùÑΓδαÑ ¿º φΓ¿σ »«½Ñ⌐ ¼δ «»¿ßδó὿ αá¡ÑÑ, »∩Γδ¼ »«½Ñ¼ ∩ó½∩-
- ÑΓß∩ »«½Ñ "ú½πí¿¡á", ¬«Γ«α«Ñ π¬áºδóáÑΓ, ¬á¬«óá ñ½∩ ΓѬπΘÑ⌐ ßΓ᫬¿
- ú½πí¿¡á 󽫪ѡ¡«ßΓ¿ ¼á¬α«¬«¼á¡ñ ¿½¿ ó¬½ετáѼδσ Σá⌐½«ó. ìá»α¿¼Ñα,
- Ñß½¿ ñá¡¡á∩ ßΓ᫬á úÑ¡Ñα¿απÑΓß∩ ¼á¬α«¬«¼á¡ñ«⌐, ¬«Γ«αá∩ ßá¼á óδºδ-
- óáÑΓß∩ ¿º ñαπú«⌐ ¼á¬α«¬«¼á¡ñδ, Γ« »«½Ñ "ú½πí¿¡á" íπñÑΓ ¿¼ÑΓ∞ º¡á-
- τÑ¡¿Ñ 2.
-
- ÉẼÑα ó ß¿¼ó«½áσ »«½∩ "ú½πí¿¡á" ºáñáÑΓ ñ¿αÑ¬Γ¿óá %DEPTH.
- ä¿αÑ¬Γ¿óá %LINUM ºáñáÑΓ ñ½¿¡π ó ß¿¼ó«½áσ »«½∩ "¡«¼Ñα_ßΓ᫬¿".
- ä¿αÑ¬Γ¿óá %PCNT «»αÑñѽ∩ÑΓ αẼÑα »«½∩ "ß¼ÑΘÑ¡¿Ñ". ä¿αÑ¬Γ¿óá %BIN
- «»αÑñѽ∩ÑΓ óѽ¿τ¿¡π »«½∩ "¼áΦ¿¡¡δ⌐_¬«ñ". ìᬫ¡Ñµ, ñ¿αÑ¬Γ¿óá %TEXT
- ºáñáÑΓ ñ½¿¡π »«½∩ ¬«¼¼Ñ¡Γáα¿∩.
-
- ä¿αÑ¬Γ¿óδ %PUSHLCTL ¿ %POPLCTL
- -----------------------------------------------------------------
-
- ê¡«úñá óá¼, 󫺼«ª¡«, »«ΓαÑíπÑΓß∩ ¿º¼Ñ¡¿Γ∞ ¡á óαѼ∩ ΓѬπΘÑÑ
- ß«ßΓ«∩¡¿Ñ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼, á ºáΓѼ ó«ßßΓá¡«ó¿Γ∞ Ñú«. 髺¼«ª-
- ¡«, τΓ«íδ ó¬½ετ¿Γ∞ ó ½¿ßΓ¿¡ú ¬áªñδ⌐ íá⌐Γ Γáí½¿µδ ñá¡¡δσ, óá¼ »«Γ-
- αÑíπÑΓß∩ αáºαÑΦ¿Γ∞ »ÑαÑ¡«ß ¡á ñαπúπε ßΓப㠨 ¿º¼Ñ¡¿Γ∞ αẼÑαδ
- »«½Ñ⌐, ¿½¿ ªÑ óδ ºáσ«Γ¿ΓÑ ó µÑ½∩σ «Γ½áñ¬¿ αáºαÑΦ¿Γ∞ ó¬½ετÑ¡¿Ñ ó
- ½¿ßΓ¿¡ú óßÑσ Γ¿»«ó ßΓ᫬. Å«ß½Ñ Γ«ú«, ¬á¬ óδ ¿º¼Ñ¡¿ΓÑ ß«ßΓ«∩¡¿Ñ
- π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼, í佫 íδ «τÑ¡∞ ¡Ñ»½«σ« ¿¼ÑΓ∞ 󫺼«ª¡«ßΓ∞
- ßαáºπ ó«ßßΓá¡«ó¿Γ∞ π»αáó½∩εΘ¿Ñ »áαá¼ÑΓαδ ó ¿σ «»αÑñѽѡ¡δÑ αá¡ÑÑ
- º¡áτÑ¡¿∩, «ß«íÑ¡¡«, Ñß½¿ φΓ¿ º¡áτÑ¡¿∩ ºáñáεΓß∩ ó« ó¬½ετáѼ«¼ Σá⌐-
- ½Ñ ¿½¿ ó ¬á¬«⌐-¡¿íπñ∞ ñá½∞¡Ñ⌐ τáßΓ¿ ¿ßσ«ñ¡«ú« ¼«ñπ½∩.
-
- ä½∩ π»αáó½Ñ¡¿∩ Γᬫ⌐ ß¿ΓπᵿÑ⌐ ó Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«Γ-
- αÑ¡δ ñ¿αÑ¬Γ¿óδ %PUSHLCTL ¿ %POPLCTL. ä¿αÑ¬Γ¿óá %PUSHLCTL ºá¡«ß¿Γ
- ΓѬπΘÑÑ ß«ßΓ«∩¡¿Ñ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼ ó« ó¡πΓαÑ¡¡¿⌐ ßΓѬ, á ñ¿-
- αÑ¬Γ¿óá %POPLCTL ¿ºó½Ñ¬áÑΓ Ñú« ¿º ßΓѬá («íÑ ñ¿αÑ¬Γ¿óδ ¿¼ÑεΓ ¼á¬-
- ß¿¼π¼ 16 πα«ó¡Ñ⌐). ¥Γ¿ ñ¿αÑ¬Γ¿óδ Γ«½∞¬« ß«σαá¡∩εΓ ¿ ó«ßßΓá¡áó½¿-
- óáεΓ ß«ßΓ«∩¡¿Ñ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼, ¬«Γ«αδ⌐ ¼«ªÑΓ íδΓ∞ αáºαÑΦÑ¡
- ¿½¿ ºá»αÑΘÑ¡ (á¡á½«ú¿τ¡« ñ¿αÑ¬Γ¿óá¼ %TRUNC ¿ %NOTRUNC), ¿ ¡Ñ ΓαÑ-
- íπεΓ τ¿ß½«óδσ áαúπ¼Ñ¡Γ«ó. ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ ¿ßσ«ñ¡«¼ ¬«ñÑ
- ß«ßΓ«∩¡¿Ñ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼ »«ß½Ñ óδ»«½¡Ñ¡¿∩ ñ¿αÑ¬Γ¿óδ
- %POPLCTL Γ« ªÑ, τΓ« ¿ »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ ñ¿αÑ¬Γ¿óδ %PUCHLCTL:
-
- .
- .
- .
- %LIST
- %TRUNC
- %PUSHLCTL
- %NOLIST
- %NOTRUNC
- %NEWPAGE
- .
- .
- .
- %POPLCTL
- .
- .
- .
-
-
- äαπú¿Ñ ñ¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼
- -----------------------------------------------------------------
-
- ùΓ«íδ «íÑß»Ñτ¿Γ∞ ß«ó¼ÑßΓ¿¼«ßΓ∞ ß ñαπú¿¼¿ áßßѼí½ÑαἿ, ó
- Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«ΓαÑ¡δ ¡Ñ¬«Γ«αδÑ ñαπú¿Ñ ñ¿αÑ¬Γ¿óδ π»αáó-
- ½Ñ¡¿∩ ½¿ßΓ¿¡úἿ. Ä¡¿ ó¬½ετáεΓ ó ßÑí∩ ñ¿αÑ¬Γ¿óδ TITLT, SUBTTTL,
- PAGE, .LST, .XLST, .LFCOND, .SFCOND, .TFCOND, .LALL, .SALL ¿
- .XALL. (Å«ñα«í¡«Ñ «»¿ßá¡¿Ñ ñá¡¡δσ ñ¿αÑ¬Γ¿ó »α¿óÑñÑ¡« ó â½áóÑ 2
- "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá").
-
-
-
- éδó«ñ ß««íΘÑ¡¿∩ ó« óαѼ∩ áßßÑ¼í½¿α«óá¡¿∩
- -----------------------------------------------------------------
-
- é Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«ΓαÑ¡δ ñóÑ ñ¿αÑ¬Γ¿óδ, »«ºó«½∩εΘ¿Ñ
- óδó«ñ¿Γ∞ ßΓ᫬π ¡á φ¬αá¡ ñ¿ß»½Ñ∩ ó« óαѼ∩ áßßÑ¼í½¿α«óá¡¿∩ (Γαá¡-
- ß½∩µ¿¿). ¥Γ¿ ñ¿αÑ¬Γ¿óδ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ óδó«ñá ¿¡Σ«α¼áµ¿¿ «
- σ«ñÑ áßßÑ¼í½¿α«óá¡¿∩, τΓ«íδ óδ ¼«ú½¿ «»αÑñѽ¿Γ∞, ¬á¬á∩ τáßΓ∞
- »α«úαá¼¼δ πªÑ «ΓΓαá¡ß½¿α«óá¡á ¿½¿ « Γ«¼, τΓ« ÇßßѼí½Ñα ñ«ßΓ¿ú «»-
- αÑñѽѡ¡«⌐ τáßΓ¿ ¿ßσ«ñ¡«ú« ¬«ñá.
-
- ä¿αÑ¬Γ¿óá DISPLAY óδó«ñ¿Γ ºá¬½ετÑ¡¡πε ó ¬áóδτ¬¿ ßΓ᫬π ¡á
- φ¬αá¡. ä¿αÑ¬Γ¿óá %OUT óδó«ñ¿Γ ¡á φ¬αá¡ ßΓ᫬π, ¡Ñ ºá¬½ετÑ¡¡πε ó
- ¬áóδτ¬¿. ìá»α¿¼Ñα, ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ ß½ÑñπεΘ¿σ ñ¿αÑ¬Γ¿ó:
-
- .
- .
- .
- DISPLAY 'éδóÑñÑ¡« »« ñ¿αÑ¬Γ¿óÑ DISPLAY'
- %OUT éδóÑñÑ¡« »« ñ¿αÑ¬Γ¿óÑ OUT
- .
- .
- .
-
- ¡á φ¬αá¡ óδóÑñπΓß∩ ß««íΘÑ¡¿∩:
-
- éδóÑñÑ¡« »« ñ¿αÑ¬Γ¿óÑ DISPLAY
- éδóÑñÑ¡« »« ñ¿αÑ¬Γ¿óÑ OUT
-
- ôß½«ó¡«Ñ áßßÑ¼í½¿α«óá¡¿Ñ ¿ßσ«ñ¡«ú« ¬«ñá
- -----------------------------------------------------------------
-
- ìáßΓá¡ÑΓ ¼«¼Ñ¡Γ, ¬«úñá óδ »«⌐¼ÑΓÑ, τΓ« ταѺóδτá⌐¡« πñ«í¡«
- ¿¼ÑΓ∞ «ñ¿¡ ¿ßσ«ñ¡δ⌐ ¼«ñπ½∞ ¡á ÇßßѼí½ÑαÑ, ó αѺπ½∞ΓáΓÑ Γαá¡ß½∩µ¿¿
- ¬«Γ«α«ú« »«½πτáÑΓß∩ ¡Ñ߬«½∞¬« αẽ¿τ¡δσ óÑαß¿⌐ »α«úαá¼¼δ. ìá»α¿-
- ¼Ñα, ñ½∩ «ñ¡«⌐ »α«úαá¼¼δ ¿¡«úñá ªÑ½áΓѽ∞¡« ¿¼ÑΓ∞ ñóÑ óÑαß¿¿, «ñ¡á
- ¿º ¬«Γ«αδσ ¿ß»«½∞ºπÑΓ ßΓá¡ñáαΓ¡δÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 8086, á
- ñαπúá∩ - αáßΦ¿αÑ¡¡δ⌐ ¡áí«α ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«α«ó 80186 (80286).
- (è«¡Ñτ¡«, ó φΓ«¼ ß½πτáÑ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñóá ¿ßσ«ñ¡δσ ¼«ñπ½∩
- (ñ½∩ ¬áªñ«⌐ óÑαß¿¿ ßó«⌐), ¡« ó¡«ß¿Γ∞ ó ¡¿σ, ¡á»α¿¼Ñα, ¿º¼Ñ¡Ñ¡¿∩,
- ó φΓ«¼ ß½πτáÑ í佫 íδ «τÑ¡∞ ¡Ñπñ«í¡«).
-
- Æπαí« ÇßßѼí½Ñα »αÑñ«ßΓáó½∩ÑΓ óá¼ Γá¬πε 󫺼«ª¡«ßΓ∞ (¿ ñáªÑ
- í«½ÑÑ). Éáßß¼«Γα¿¼, ¡á»α¿¼Ñα, ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
-
- .
- .
- .
- IF IS8086
- mov ax,3dah
- push ax
- ELSE
- push 3dah
- ENDIF
- call GetAdapterStatus
- .
- .
- .
-
- àß½¿ º¡áτÑ¡¿Ñ ¼ÑΓ¬¿ IS8086 íπñÑΓ ¡Ñ¡π½Ñóδ¼, Γ« º¡áτÑ¡¿Ñ »á-
- αá¼ÑΓαá 3dah ºá¡«ß¿Γß∩ ó ßΓѬ »«φΓỡ« (ºá ñóá Φáúá), ¬á¬ φΓ«
- ΓαÑíπÑΓß∩ ó »α«µÑßß«αÑ 8086. àß½¿ ªÑ, «ñ¡á¬«, IS8086 ¿¼ÑÑΓ ¡π½Ñ-
- ó«Ñ º¡áτÑ¡¿Ñ, Γ« º¡áτÑ¡¿Ñ »áαá¼ÑΓαá ºá¡«ß¿Γß∩ ó ßΓѬ ¡Ñ»«ßαÑñßΓ-
- óÑ¡¡«, ß »«¼«Θ∞ε ߻ѵ¿á½∞¡«⌐ Σ«α¼δ ¿¡ßΓαπ¬µ¿¿ PUSH, ¬«Γ«απε ¼«ª¡«
- ¿ß»«½∞º«óáΓ∞ »α¿ αáí«ΓÑ ¡á »α«µÑßß«αáσ 80186 ¿ 80286 (¡« ¡Ñ ó
- »α«µÑßß«αÑ 8086).
-
- Æπαí« ÇßßѼí½Ñα »«ññÑনóáÑΓ ¼¡«ªÑßΓó« ñ¿αÑ¬Γ¿ó πß½«ó¡«ú«
- áßßÑ¼í½¿α«óá¡¿∩, á Γá¬ªÑ ñáÑΓ óἠ󫺼«ª¡«ßΓ∞ ¡Ñ߬«½∞¬¿¼¿ ß»«ß«-
- íἿ úÑ¡Ñα¿α«óáΓ∞ «Φ¿í¬¿ áßßÑ¼í½¿α«óá¡¿∩. äáóá⌐ΓÑ αáßß¼«Γα¿¼ ß¡á-
- τá½á ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩.
-
-
- ä¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩
- -----------------------------------------------------------------
-
- Åα«ßΓÑ⌐Φ¿¼¿ ¿ ßá¼δ¼¿ »«½Ñº¡δ¼¿ ñ¿αÑ¬Γ¿óἿ πß½«ó¡«ú« áßßѼí-
- ½¿α«óá¡¿∩ ∩ó½∩εΓß∩ ñ¿αÑ¬Γ¿óδ IF ¿ ENDIF, ¬«Γ«αδÑ ¿ß»«½∞ºπεΓß∩
- ß«ó¼ÑßΓ¡« ß ñ¿αÑ¬Γ¿óἿ ENDIF ¿ (¡Ñ«í∩ºáΓѽ∞¡«) ELSE. ùáßΓ« ΓᬪÑ
- ¿ß»«½∞ºπεΓß∩ ñ¿αÑ¬Γ¿óδ IFDEF ¿ IFNDEF, á ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áß-
- ßÑ¼í½¿α«óá¡¿∩ IFB, IFNB, IFIDN, IFDIF, IF1 ¿ IF2 »«½Ñº¡δ Γ«½∞¬« ó
- «Γñѽ∞¡δσ ß½πτá∩σ.
-
-
-
- ä¿αÑ¬Γ¿óδ IF ¿ IFE
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩ IF »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ«
- »«ß½ÑñπεΘ¿⌐ í½«¬ ¿ßσ«ñ¡«ú« ¬«ñá (ñ« ß««ΓóÑΓßΓóπεΘÑ⌐ ñ¿αÑ¬Γ¿óδ
- ELSE ¿½¿ ENDIF) íπñÑΓ áßßÑ¼í½¿α«óáΓ∞ß∩ Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿
- º¡áτÑ¡¿Ñ «»Ñαá¡ñá íπñÑΓ ¡Ñ¡π½Ñóδ¼. Ä»Ñαá¡ñ ¼«ªÑΓ »αÑñßΓáó½∩Γ∞ ß«-
- í«⌐ ¬«¡ßΓá¡Γπ ¿½¿ óδαáªÑ¡¿Ñ, »α¿ óδτ¿ß½Ñ¡¿¿ ¬«Γ«α«ú« »«½πτáÑΓß∩
- ¬«¡ßΓá¡Γá. ìá»α¿¼Ñα, ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ ñ¿αÑ¬Γ¿ó:
-
- .
- .
- .
- IF REPORT_ASSEMBLY_STATUS
- DISPLAY 'ÇßßÑ¼í½¿α«óá¡¿Ñ ñ«ßΓ¿ú½« ¬«¡Γα«½∞¡«⌐ Γ«τ¬¿ 1'
- ENDIF
- .
- .
- .
-
- ó Γ«¼ ß½πτáÑ, Ñß½¿ REPORT_ASSEMBLY_STATUS ¿¼ÑÑΓ »α¿ ñ«ßΓ¿ªÑ¡¿¿
- ñ¿αÑ¬Γ¿óδ IF ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, ¡á φ¬αá¡ óδó«ñ¿Γß∩ ß««íΘÑ¡¿Ñ:
-
- ÇßßÑ¼í½¿α«óá¡¿Ñ ñ«ßΓ¿ú½« ¬«¡Γα«½∞¡«⌐ Γ«τ¬¿ 1
-
- ôß½«ó¿Ñ IF (Ñß½¿) ¼«ªÑΓ ºáóÑαΦáΓ∞ß∩ ñ¿αÑ¬Γ¿óἿ ENDIF (¬«¡Ñµ
- í½«¬á) ¿½¿ ELSE (¿¡áτÑ). àß½¿ πß½«ó¿Ñ IF ºáóÑαΦáÑΓß∩ ñ¿αÑ¬Γ¿ó«⌐
- ELSE, Γ« ß½ÑñπεΘ¿⌐ ºá ELSE ¿ßσ«ñ¡δ⌐ ¬«ñ áßßÑ¼í½¿απÑΓß∩ Γ«½∞¬« ó
- Γ«¼ ß½πτáÑ, Ñß½¿ «»Ñαá¡ñ ß««ΓóÑΓßΓóπεΘÑ⌐ ñ¿αÑ¬Γ¿óδ IF íδ½ ¡π½Ñ-
- óδ¼. ü½«¬ ¬«ñá, ß½ÑñπεΘÑú« ºá ñ¿αÑ¬Γ¿ó«⌐ ELSE, ñ«½ªÑ¡ ºáóÑαΦáΓ∞ß∩
- ñ¿αÑ¬Γ¿ó«⌐ ENDIF. ôß½«ó¿∩ IF ¼«úπΓ íδΓ∞ 󽫪ѡ¡δ¼¿, ¡á»α¿¼Ñα, ó
- »α«úαá¼¼Ñ:
-
- .
- .
- .
- ; Åα«óÑα¿Γ∞, ¡πª¡« ½¿ «»αÑñѽ∩Γ∞ ¼áßß¿óδ (ó »α«Γ¿ó¡«¼ ß½πτáÑ
- ; «¡¿ αáß»αÑñѽ∩εΓß∩ ñ¿¡á¼¿τÑ߬¿).
- IF DEFINE_ARRAY
- ; ôíÑñ¿Γ∞ß∩, τΓ« ¼áßß¿ó ¡Ñ ß½¿Φ¬«¼ ñ½¿¡¡δ⌐
- IF (ARRAY_LENGTH GT MAX_ARRAY_LENGTH)
- ARRAY_LENGTH = MAX_ARRAY_LENGTH
- ENDIF
- ; àß½¿ φΓ« π¬áºá¡«, πßΓá¡«ó¿Γ∞ ¼áßß¿ó ó ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ
- IF INITIALIZE_ARRAY
- Array DB ARRAY_LENGTH DUP (?)
- ENDIF
- ENDIF
- .
- .
- .
-
- ñ¿αÑ¬Γ¿óδ IF ¿ IF...ELSE 󽫪ѡδ ó¡πΓα¿ ñαπú«ú« í½«¬á IF.
-
- ä¿αÑ¬Γ¿óá IFE á¡á½«ú¿τ¡á ñ¿αÑ¬Γ¿óÑ IF, ¡« »«ß½ÑñπεΘ¿⌐ ¬«ñ
- áßßÑ¼í½¿απÑΓß∩ ó Γ«¼ ß½πτáÑ, Ñß½¿ «»Ñαá¡ñ ¡π½Ñó«⌐. é ß½ÑñπεΘѼ
- »α¿¼ÑαÑ ¿ßσ«ñ¡δ⌐ ¬«ñ »«ß½Ñ ñ¿αÑ¬Γ¿óδ IFE áßßÑ¼í½¿απÑΓß∩ óßÑúñá:
-
- .
- .
- .
- IF 0
- .
- .
- .
- ENDIF
- .
- .
- .
-
- èᬠ¿ ñ¿αÑ¬Γ¿óá IF, ñ¿αÑ¬Γ¿óá IFE ¼«ªÑΓ ¿¼ÑΓ∞ ß««ΓóÑΓßΓóπε-
- Θπε ñ¿αÑ¬Γ¿óπ ELSE.
-
- ìÑ«íσ«ñ¿¼« »«¡¿¼áΓ∞, τΓ« ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩
- αáí«ΓáεΓ Γ«½∞¬« ó« óαѼ∩ áßßÑ¼í½¿α«óá¡¿∩, á ¡Ñ ó« óαѼ∩ óδ»«½¡Ñ-
- ¡¿∩ »α«úαá¼¼δ. ¥Γ« ¡Ñ Γ« ªÑ ßἫÑ, τΓ« «»ÑαáΓ«αδ ó ∩ºδ¬Ñ æ¿, óδ-
- »«½¡∩εΘ¿Ñ αẽ¿τ¡δ⌐ ¬«ñ ó ºáó¿ß¿¼«ßΓ¿ «Γ αẽ¿τ¡δσ πß½«ó¿⌐ φΓá»á
- óδ»«½¡Ñ¡¿∩. ä¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩ «íÑß»Ñτ¿óáεΓ
- Γαá¡ß½∩µ¿ε αẽ¿τ¡«ú« ¬«ñá ó ºáó¿ß¿¼«ßΓ¿ «Γ πß½«ó¿⌐ áßßÑ¼í½¿α«óá-
- ¡¿∩.
-
-
-
- ä¿αÑ¬Γ¿óδ IFDEF ¿ IFNDEF
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩ IFDEF ¿ IFNDEF - φΓ« óáΦ
- «ß¡«ó¡«⌐ ¿¡ßΓαπ¼Ñ¡Γ ñ½∩ »«ßΓα«Ñ¡¿∩ »α«úαá¼¼, »α¿ áßßÑ¼í½¿α«óá¡¿¿
- ¬«Γ«αδσ »«½πτáÑΓß∩ ¡Ñ߬«½∞¬« óÑαß¿⌐. ä¿αÑ¬Γ¿óδ IFDEF ¿ IFNDEF ó
- φΓ«¼ ß½πτáÑ ταѺóδτá⌐¡« »«½Ñº¡δ.
-
- ü½«¬ ¿ßσ«ñ¡«ú« ¬«ñá, ºá¬½ετÑ¡¡δ⌐ ¼Ñªñπ ñ¿αÑ¬Γ¿ó«⌐ IFDEF ¿
- ß««ΓóÑΓßΓóπεΘÑ⌐ Ñ⌐ ñ¿αÑ¬Γ¿ó«⌐ ENDIF, áßßÑ¼í½¿απÑΓß∩ Γ«½∞¬« ó Γ«¼
- ß½πτáÑ, Ñß½¿ ¼ÑΓ¬á, ∩ó½∩εΘá∩ß∩ «»Ñαá¡ñ«¼ ñ¿αÑ¬Γ¿óδ IFDEF, ßπΘÑßΓ-
- óπÑΓ (ñαπú¿¼¿ ß½«óἿ, Ñß½¿ »α¿ óδ»«½¡Ñ¡¿¿ ñ¿αÑ¬Γ¿óδ IFDEF ¼ÑΓ¬á
- πªÑ «»αÑñѽѡá). ìá»α¿¼Ñα, »α¿ Γαá¡ß½∩µ¿¿ ¿ßσ«ñ¡«ú« ¬«ñá:
-
- .
- .
- .
- DEFINED_LABEL EQU 0
- .
- .
- .
- IFDEF DEFINED_LABEL
- DB 0
- ENDIF
- .
- .
- .
-
- íπñÑΓ áßßÑ¼í½¿α«óáΓ∞ß∩ ñ¿αÑ¬Γ¿óá DB. àß½¿ ªÑ óδ πñ὿ΓÑ ñ¿αÑ¬Γ¿óπ
- EQU, ¬«Γ«αá∩ πßΓá¡áó½¿óáÑΓ º¡áτÑ¡¿Ñ ñ½∩ DEFINED_LABEL (¿ ó »αÑñ-
- »«½«ªÑ¡¿¿, τΓ« φΓá ¼ÑΓ¬á ¡¿úñÑ í«½∞ΦÑ ó »α«úαá¼¼Ñ ¡Ñ «»αÑñѽ∩ÑΓ-
- ß∩), Γ« ñ¿αÑ¬Γ¿óá DB áßßÑ¼í½¿α«óáΓ∞ß∩ ¡Ñ íπñÑΓ. çá¼ÑΓ¿¼, τΓ« º¡á-
- τÑ¡¿Ñ ¼ÑΓ¬¿ DEFINED_LABEL ñ½∩ ñ¿αÑ¬Γ¿óδ IFDEF ¡Ñ ó᪡«.
-
- äÑ⌐ßΓó¿Ñ ñ¿αÑ¬Γ¿óδ IFNDEF «íαáΓ¡« ñÑ⌐ßΓó¿ε ñ¿αÑ¬Γ¿óδ IFDEF.
- æ««ΓóÑΓßΓóπεΘ¿⌐ ¬«ñ áßßÑ¼í½¿απÑΓß∩ Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ ∩ó-
- ½∩εΘá∩ß∩ «»Ñαá¡ñ«¼ ¼ÑΓ¬á ¡Ñ «»αÑñѽѡá.
-
- ô óáß ¼«ªÑΓ ó«º¡¿¬¡πΓ∞ ó«»α«ß, ñ½∩ τÑú« ¿ß»«½∞ºπεΓß∩ ñ¿αѬ-
- Γ¿óδ IFDEF ¿ IFNDEF? Äñ¡¿¼ ¿º »α¿¼Ñ¡Ñ¡¿⌐ ∩ó½∩ÑΓß∩ »αÑñ«σαá¡Ñ¡¿Ñ
- «Γ »«óΓ«α¡«ú« «»αÑñѽѡ¿∩ ¼ÑΓ¬¿ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EQU ó ß½«ª¡«⌐
- »α«úαá¼¼Ñ: Ñß½¿ ¼ÑΓ¬á πªÑ «»αÑñѽѡá, Γ« τΓ«íδ ¿ºíѪáΓ∞ ÑÑ »«ó-
- Γ«α¡«ú« «»αÑñѽѡ¿∩ (τΓ« ó맮óÑΓ «Φ¿í¬π), óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞
- ñ¿αÑ¬Γ¿óπ IFDEF. äαπú«Ñ ¿ß»«½∞º«óá¡¿Ñ ñá¡¡«⌐ ñ¿αÑ¬Γ¿óδ - φΓ« óδ-
- í«α óÑαß¿¿ áßßÑ¼í½¿απѼ«⌐ »α«úαá¼¼δ (á¡á½«ú¿τ¡« Γ«¼π, ¬á¬ φΓ« ñÑ-
- ½á½«ß∞ αá¡ÑÑ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ IF). é¼ÑßΓ« Γ«ú«, τΓ«íδ »α«óÑ-
- α∩Γ∞, ߬áªÑ¼, ∩ó½∩ÑΓß∩ ½¿ ¼áßß¿ó INITIALIZE_ARRAYS ¡π½Ñóδ¼ ¿½¿
- ¡Ñ¡π½Ñóδ¼, óδ ¼«ªÑΓÑ »α«ßΓ« »α«óÑα¿Γ∞, «»αÑñѽѡ ½¿ «¡ ó««íΘÑ.
-
- ôñ«í¡δ⌐ ß»«ß«í óδí«αá óÑαß¿¿ »α«úαá¼¼δ »αÑñ«ßΓáó½∩ÑΓ »áαá-
- ¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ Æπαí« ÇßßѼí½Ñαá /D. Åáαá¼ÑΓα /D «»αÑñѽ∩ÑΓ
- ß««ΓóÑΓßΓóπεΘπε ½«¬á½∞¡πε ¼ÑΓ¬π ¿ (󫺼«ª¡«) »α¿ßóá¿óáÑΓ φΓ«⌐
- ¼Ñ⪥ º¡áτÑ¡¿Ñ. Å«φΓ«¼π óδ, ¡á»α¿¼Ñα, ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ß½Ññπε-
- Θπε ¬«¼á¡ñπ:
-
- TASM /dINITIALIZE_ARRAYS=1 test
-
- Åα¿ φΓ«¼ »α¿ áßßÑ¼í½¿α«óá¡¿¿ »α«úαá¼¼δ TEST.ASM ¼ÑΓ¬á
- INITIALIZE_ARRAYS íπñÑΓ πßΓá¡«ó½Ñ¡á ó º¡áτÑ¡¿Ñ 1.
-
- ò«Γ∩ φΓ« «»αÑñѽѡ¡« »«½Ñº¡«, ºñÑß∞ ¼«úπΓ ó«º¡¿¬¡πΓ∞ αẽ¿τ-
- ¡δÑ »α«í½Ñ¼δ. ùΓ« íπñÑΓ ó Γ«¼ ß½πτáÑ, Ñß½¿ óδ íπñÑΓÑ »«½áúáΓ∞ß∩
- ¡á «»αÑñѽѡ¿Ñ INITIALIZE_ARRAYS ó ¬«¼á¡ñ¡«⌐ ßΓ᫬Ñ, ¡« ºáíπñÑΓÑ
- π¬áºáΓ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ »áαá¼ÑΓα /D? ÅαÑñ»«½«ª¿¼ ΓᬪÑ, τΓ« óδ
- σ«Γ¿ΓÑ ¿¡¿µ¿á½¿º¿α«óáΓ∞ ¼áßß¿óδ ó «ß«í«¼ ß½πτáÑ ¿ ¡Ñ σ«Γ¿ΓÑ ó
- ñαπú¿σ ß½πτá∩σ óó«ñ¿Γ∞ /dINITIALIZE_ARRAYS.
-
- é φΓ«¼ ß½πτáÑ óá¼ ¡á óδαπτ¬π »α¿ñÑΓ ñ¿αÑ¬Γ¿óδ IFNDEF. éδ ¼«-
- ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ÑÑ ñ½∩ »α«óÑન Γ«ú«, τΓ« ¼ÑΓ¬á
- INITIALIZE_ARRAYS πªÑ «»αÑñѽѡá (ó ¬«¼á¡ñ¡«⌐ ßΓ᫬Ñ), á ºáΓѼ
- ¿¡¿µ¿á½¿º¿α«óáΓ∞ ÑÑ Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ ÑÑ º¡áτÑ¡¿Ñ ÑΘÑ ¡Ñ
- ºáñá¡«. Æá¬¿¼ «íαẫ¼, «»αÑñѽѡ¿Ñ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ ¿¼ÑÑΓ »αÑ¿-
- ¼πΘÑßΓó« (ßΓáαΦ¿¡ßΓó«), ¡« Ñß½¿ «»αÑñѽѡ¿Ñ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ ¡Ñ
- ºáñá¡«, Γ« ñ½∩ ¼ÑΓ¬¿ ¿¼ÑÑΓß∩ ß«ßΓ«∩¡¿Ñ, ¿ß»«½∞ºπѼ«Ñ »« π¼«½τá-
- ¡¿ε. Åα¿óÑñѼ »α¿¼Ñα »α«úαá¼¼δ, ó ¬«Γ«α«⌐ ¼áßß¿ó
- INITIALIZE_ARRAYS «»αÑñѽ∩ÑΓß∩ Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ «¡ ÑΘÑ
- ¡Ñ «»αÑñѽѡ:
-
- .
- .
- .
- IFNDEF INITIALIZE__ARRAYS
- INITIALIZE__ARRAYS EQU 0 ; »« π¼«½τá¡¿ε ¡Ñ ¿¡¿µ¿á½¿º¿απÑΓß∩
- ENDIF
- .
- .
- .
-
- è«úñá óδ Γᬿ¼ «íαẫ¼ ¿ß»«½∞ºπÑΓÑ ñ¿αÑ¬Γ¿óπ IFNDEF ñ½∩ «»-
- αÑñѽѡ¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá, ¬«Γ«αδ⌐ ÑΘÑ ¡Ñ íδ½ «»αÑñѽѡ, óδ »«½π-
- τ¿ΓÑ »αÑñπ»αѪñáεΘÑÑ ß««íΘÑ¡¿Ñ, »«¬áºδóáεΘÑÑ, τΓ« óδ ¿ß»«½∞ºπÑΓÑ
- ¬«¡ßΓαπ¬µ¿ε, ºáó¿ß∩Θπε «Γ »α«σ«ñá. àß½¿ óδ »α«ßΓ« «»αÑñѽ∩ÑΓÑ
- ó¡πΓα¿ πß½«ó¡«ú« í½«¬á IFNDEF ¿ñÑ¡Γ¿Σ¿¬áΓ«α, Γ« φΓ« ß««íΘÑ¡¿Ñ
- ¼«ª¡« ¿ú¡«α¿α«óáΓ∞. äá¡¡«Ñ ß««íΘÑ¡¿Ñ óδó«ñ¿Γß∩ »«Γ«¼π, τΓ« Æπαí«
- ÇßßѼí½Ñα ¡Ñ ¼«ªÑΓ ß««íΘ¿Γ∞ óá¼, τΓ« óδ ß«í¿αáÑΓÑß∞ »«¼ÑßΓ¿Γ∞ ó
- í½«¬ ñ¿αÑ¬Γ¿óδ ¿½¿ ¿¡ßΓαπ¬µ¿¿. àß½¿ óδ ñѽáÑΓÑ ó í½«¬Ñ τΓ«-Γ«
- ÑΘÑ, á ¡Ñ »α«ßΓ« «»αÑñѽ∩ÑΓÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α, Γ« óδ ñ«½ª¡δ ß »«-
- ¼«Θ∞ε »áαá¼ÑΓαá /m αáºαÑΦ¿Γ∞ óδ»«½¡Ñ¡¿Ñ ¡Ñ߬«½∞¬¿σ »α«σ«ñ«ó. àß½¿
- óδ Γ«½∞¬« «»αÑñѽ∩ÑΓÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α, Γ« αáºαÑΦÑ¡¿Ñ óδ»«½¡Ñ¡¿∩
- ¡Ñ߬«½∞¬¿σ »α«σ«ñ«ó ¡Ñ »α¿óÑñÑΓ ¬ óδó«ñπ »αÑñπ»αѪñáεΘÑú« ß««íΘÑ-
- ¡¿∩.
-
-
-
- äαπú¿Ñ ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩
- -----------------------------------------------------------------
-
- ä½∩ »α«óÑન »áαá¼ÑΓα«ó, »ÑαÑñáóáѼδσ ó ¼á¬α«¬«¼á¡ñδ, ¿ß-
- »«½∞ºπεΓß∩ ñ¿αÑ¬Γ¿óδ IFB, IFNB, IFIDN ¿ IFDIF. (Ä ¼á¬α«¬«¼á¡ñáσ
- αáß߬áºδóáÑΓß∩ ó â½áóÑ 9 "Éáºó¿Γ«Ñ »α«úαá¼¼¿α«óá¡¿Ñ ¡á Æπαí« Çß-
- ßѼí½ÑαÑ"). ä¿αÑ¬Γ¿óá IFB »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« ß««ΓóÑΓßΓóπεΘ¿⌐
- ¿ßσ«ñ¡δ⌐ ¬«ñ íπñÑΓ áßßÑ¼í½¿α«óá¡ ó Γ«¼ ß½πτáÑ, Ñß½¿ »áαá¼ÑΓα, ∩ó-
- ½∩εΘ¿⌐ß∩ «»Ñαá¡ñ«¼ ñ¿αÑ¬Γ¿óδ, »πßΓ«⌐ (»α«íѽ). Å« ñ¿αÑ¬Γ¿óÑ IFNB
- ¿ßσ«ñ¡δ⌐ ¬«ñ íπñÑΓ áßßÑ¼í½¿α«óáΓ∞ß∩, Ñß½¿ »áαá¼ÑΓα ¡Ñ »πßΓ (¡Ñ
- ∩ó½∩ÑΓß∩ »α«íѽ«¼). ä¿αÑ¬Γ¿óδ IFNB ¿ IFB - φΓ« ßó«Ñú« α«ñá φ¬ó¿-
- óá½Ñ¡Γ ñ¿αÑ¬Γ¿ó IFNDEF ¿ IFDEF ñ½∩ »áαá¼ÑΓα«ó ¼á¬α«¬«¼á¡ñ.
-
- Éáßß¼«Γα¿¼ ó ¬áτÑßΓóÑ »α¿¼Ñαá ß½ÑñπεΘπε ¼á¬α«¬«¼á¡ñπ TEST,
- ¬«Γ«αá∩ «»αÑñѽѡá ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- ;
- ; îá¬α«¬«¼á¡ñá ñ½∩ «»αÑñѽѡ¿∩ íá⌐Γá ¿½¿ ß½«óá
- ;
- ; éó«ñ:
- ; VALUE = º¡áτÑ¡¿Ñ íá⌐Γá ¿½¿ ß½«óá
- ; DEFINE_WIRD = 1 ñ½∩ «»αÑñѽѡ¿∩ ß½«óá ¿ 0 ñ½∩ «»αÑñѽѡ¿∩
- ; íá⌐Γá
- ;
- ; Åα¿¼Ñτá¡¿Ñ: àß½¿ »áαá¼ÑΓα PARM2 ¡Ñ ºáñá¡, Γ« «»αÑñѽ∩ÑΓß∩ íá⌐Γ.
-
- ;
- TEST MACRO VALUE, DEFINE_WORD
- IFB <DEFINE_WORD>
- DB VALUE ; «»αÑñѽ¿Γ∞ íá⌐Γ, Ñß½¿ PARM2 - »α«íѽ, ¿¡áτÑ
- IF DEFINE_WORD
- DW VALUE ; «»αÑñѽ¿Γ∞ ß½«óá, Ñß½¿ PARM2 ¡Ñ = 0
- ELSE
- DB VALUE ; «»αÑñѽ¿Γ∞ íá⌐Γ, Ñß½¿ PARM2 = 0
- ENDIF
- ENDIF
- ENDM
-
- àß½¿ ¼á¬α«¬«¼á¡ñá TEST óδºδóáÑΓß∩ «»ÑαáΓ«α«¼:
-
- TEST 19
-
- Γ« «»αÑñѽ∩ÑΓß∩ íá⌐Γ ß« º¡áτÑ¡¿Ñ¼ 19, á Ñß½¿ ¼á¬α«¬«¼á¡ñá óδºδóá-
- ÑΓß∩ ß »«¼«Θ∞ε «»ÑαáΓ«αá:
-
- TEST 19,1
-
- Γ« «»αÑñѽ∩ÑΓß∩ ß½«ó« ß« º¡áτÑ¡¿Ñ¼ 19.
-
- Å« ñ¿αÑ¬Γ¿óÑ IFIDN ß««ΓóÑΓßΓóπεΘ¿⌐ ¿ßσ«ñ¡δ⌐ ¬«ñ íπñÑΓ áßßѼ-
- í½¿α«óáΓ∞ß∩ ó Γ«¼ ß½πτáÑ, Ñß½¿ ñóá ÑÑ »áαá¼ÑΓαá ß«ó»áñáεΓ, á »«
- ñ¿αÑ¬Γ¿óÑ IFDIF - Ñß½¿ »áαá¼ÑΓαδ αẽ¿τ¡δ. ìá»α¿¼Ñα, ß½ÑñπεΘá∩
- ¼á¬α«¬«¼á¡ñá, »αÑ«íαáºπεΘá∩ íá⌐Γ ß« º¡á¬«¼ ó ß½«ó« ß« º¡á¬«¼ ó
- αÑú¿ßΓαÑ AX, ¡Ñ ¬«»¿απÑΓ ¿ßσ«ñ¡δ⌐ «»Ñαá¡ñ, Ñß½¿ «¡ ¡áσ«ñ¿Γß∩ ó
- αÑú¿ßΓαÑ AL:
-
- ;
- ; îá¬α«¬«¼á¡ñá ñ½∩ »αÑ«íαẫóá¡¿∩ íá⌐Γá ß« º¡á¬«¼ ó 8-í¿Γ«ó«¼
- ; αÑú¿ßΓαÑ ¿½¿ ∩τÑ⌐¬Ñ »á¼∩Γ¿ ó ß½«ó« ß« º¡á¬«¼ ó αÑú¿ßΓαÑ AX.
- ;
- ; éó«ñ:
- ; SIGNED_BYTE - ¿¼∩ αÑú¿ßΓαá ¿½¿ ∩τÑ⌐¬¿ »á¼∩Γ¿,
- ; ó ¬«Γ«α«⌐ ß«ñÑনΓß∩ íá⌐Γ ß« º¡á¬«¼,
- ; »αÑ«íαáºπѼδ⌐ ó ß½«ó« ß« º¡á¬«¼.
- ;
- MAKE_SIGNED_WORD MACRO SIGNED_BYTE
- IFDIFI <AL>,<SIGNED_BYTE> ; πíÑñ¿Γ∞ß∩, τΓ« «»Ñαá¡ñ«¼
- ; ¡Ñ ∩ó½∩ÑΓß∩ αÑú¿ßΓα AL
- mov al,SIGNED_BYTE
- ENDIF
- cwb
- ENDM
-
- é áαúπ¼Ñ¡Γáσ ñ¿αÑ¬Γ¿ó IFDIF ¿ IFIDN ßΓα«τ¡δÑ ¿ »α«»¿ß¡δÑ
- íπ¬óδ αẽ¿τáεΓß∩. ùΓ«íδ ¿¡ΓÑα»αÑΓ¿α«óáΓ∞ φΓ¿ íπ¬óδ, ¬á¬ ß«ó»áñá-
- εΘ¿Ñ, ¿¼ÑεΓß∩ ñóÑ ñαπú¿Ñ φ¬ó¿óá½Ñ¡Γ¡δÑ ñ¿αÑ¬Γ¿óδ - IFINDI ¿
- IFDIFI.
-
- çá¼ÑΓ¿¼, τΓ« óßÑ «»Ñαá¡ñδ ñ¿αÑ¬Γ¿ó IFB, IFNB, IFIDN ¿ IFDIF
- ΓαÑíπÑΓß∩ ºá¬½ετáΓ∞ ó πú½«óδÑ ß¬«í¬¿.
-
- àß½¿ óδ ¡Ñ π¬áºδóáÑΓÑ ñ½∩ αáºαÑΦÑ¡¿∩ óδ»«½¡Ñ¡¿∩ ¡Ñ߬«½∞¬¿σ
- »α«σoñ«ó »áαá¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /m, Γ« πß½«ó¿Ñ IF1 óßÑúñá »α¿-
- ¡¿¼áÑΓ ¿ßΓ¿¡¡«Ñ º¡áτÑ¡¿Ñ, á IF2 - ½«ª¡«Ñ (Γᬠ¬á¬ óΓ«α«⌐ »α«σ«ñ
- ¡Ñ óδ»«½¡∩ÑΓß∩). àß½¿ Æπαí« ÇßßѼí½Ñα óßΓαÑτáÑΓ ñ¿αÑ¬Γ¿óπ IF1 ¿½¿
- IF2, Γ« óδó«ñ¿Γß∩ »αÑñπ»αѪñáεΘÑÑ ß««íΘÑ¡¿Ñ:
-
- "Pass dependent construction encountered"
- («í¡áαπªÑ¡á ¬«¡ßΓαπ¬µ¿∩, ºáó¿ß∩Θá∩ «Γ »α«σ«ñá)
-
- Eß½¿ óδ ¿ß»«½∞ºπÑΓÑ »áαá¼ÑΓα /m, Γ« Ñß½¿ ó ¼«ñπ½Ñ ß«ñÑαªáΓß∩
- ñ¿αÑ¬Γ¿óδ IF1 ¿½¿ IF2, áóΓ«¼áΓ¿τÑ߬¿ óδ»«½¡∩ÑΓß∩ ñóá »α«σ«ñá. é
- φΓ«¼ ß½πτáÑ ñ¿αÑ¬Γ¿óá IF1 »α¿¡¿¼áÑΓ ¿ßΓ¿¡¡«Ñ º¡áτÑ¡¿Ñ ¡á »Ñαó«¼
- »α«σ«ñÑ, á IF2 - ¡á óΓ«α«¼. Åα¿ φΓ«¼ Γá¬ªÑ óδó«ñ¿Γß∩ »αÑñπ»αѪñá-
- εΘÑÑ ß««íΘÑ¡¿Ñ:
-
- "Module is pass dependent - compatibility pass was done"
- (¼«ñπ½∞ ºáó¿ß¿Γ «Γ »α«σ«ñá - óδ»«½¡Ñ¡ »α«σ«ñ ñ½∩ ß«ó¼ÑßΓ¿-
- ¼«ßΓ¿)
-
-
-
- æÑ¼Ñ⌐ßΓó« ñ¿αÑ¬Γ¿ó ELSEIF
- -----------------------------------------------------------------
-
- èáªñá∩ ¿º ñ¿αÑ¬Γ¿ó IF (IF, IFB, IFIDN ¿ Γ.ñ.) ¿¼ÑÑΓ ß««Γ-
- óÑΓßΓóπεΘπε ñ¿αÑ¬Γ¿óπ ßѼÑ⌐ßΓóá ELSEIF (¡á»α¿¼Ñα, ELSEIF, ELSE-
- IFB, ELSEIFIDN). Ä¡¿ αáí«ΓáεΓ, ¬á¬ ß«τÑΓá¡¿Ñ ñ¿αÑ¬Γ¿óδ ELSE ß «ñ-
- ¡«⌐ ¿º ñ¿αÑ¬Γ¿ó IF. éδ ¼«ªÑΓÑ ¿σ ¿ß»«½∞º«óáΓ∞, τΓ«íδ «íÑß»Ñτ¿Γ∞
- ½πτΦπε τ¿ΓáѼ«ßΓ∞ ¿ßσ«ñ¡«ú« ¬«ñá, ¬«úñá ΓαÑíπÑΓß∩ »α«óÑα∩Γ∞ ¼¡«-
- ªÑßΓó« πß½«ó¿⌐ ¿½¿ º¡áτÑ¡¿⌐ ¿ áßßÑ¼í½¿α«óáΓ∞ Γ«½∞¬« «Γñѽ∞¡δ⌐
- í½«¬ ¬«ñá. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
-
- IF BUFLENGHT GT 1000
- CALL DOBIGBUF ; í«½∞Φ«⌐ íπΣÑα
- ELSE
- IF BUFLENGTH GT 100 ; ßαÑñ¡¿⌐ íπΣÑα
- CALL MEDIUMBUF
- ELSE
- IF BUFLENGTH GT 10 ; ¡Ñí«½∞Φ«⌐ íπΣÑα
- CALL SMALLBUF
- ELSE
- CALL TINYBUFP ; ¼á½Ñ¡∞¬¿⌐ íπΣÑα
- ENDIF
- ENDIF
- ENDIF
-
- ùΓ«íδ π½πτΦ¿Γ∞ τ¿ΓáѼ«ßΓ∞ ¬«ñá, óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ñ¿-
- αÑ¬Γ¿óπ ELSEIF:
-
- IF BUFLENGHT GT 1000
- CALL DOBIGBUF ; í«½∞Φ«⌐ íπΣÑα
- ELSE
- ELSEIF BUFLENGTH GT 100 ; ßαÑñ¡¿⌐ íπΣÑα
- CALL MEDIUMBUF
- ELSEIF BUFLENGTH GT 10 ; ¡Ñí«½∞Φ«⌐ íπΣÑα
- CALL SMALLBUF
- ELSE
- CALL TINYBUFP ; ¼á½Ñ¡∞¬¿⌐ íπΣÑα
- ENDIF
-
- ¥Γ« »α¿í½¿º¿Γѽ∞¡« ß««ΓóÑΓßΓóπÑΓ «»ÑαáΓ«αá¼ case ¿½¿ switch
- ó Åá߬á½Ñ ¿ æ¿. Äñ¡á¬«, Γá¬á∩ ¬«¡ßΓαπ¬µ¿∩ ∩ó½∩ÑΓß∩ ú«αáºñ« í«½ÑÑ
- «íΘÑ⌐, »«ß¬«½∞¬π ó« óßѼ í½«¬Ñ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩ óá¼ ¡Ñ
- ΓαÑíπÑΓß∩ ¿ß»«½∞º«óáΓ∞ «ñ¿¡ ¿ ëà ªÑ ó¿ñ »α«óÑ᫬ ELSEIF. ä«»πß-
- Γ¿¼«, ¡á»α¿¼Ñα, ß½ÑñπεΘÑÑ:
-
- PUSHREG MACRO ARG
- IFIDN <ARG>,<INDEX>
- PUSH SI
- PUSH DI
- ELSEIFB <ARG>
- PUSH AX
- ENDIF
- ENDM
-
-
-
- ôß½«ó¡δÑ ñ¿αÑ¬Γ¿óδ óδó«ñá ß««íΘÑ¡¿⌐ «í «Φ¿í¬áσ
- -----------------------------------------------------------------
-
- Æπαí« ÇßßѼí½Ñα »«ºó«½∩ÑΓ óá¼ óδ»«½¡∩Γ∞ πß½«ó¡πε (»« óδ»«½-
- ¡Ñ¡¿ε ¿½¿ ¡Ñóδ»«½¡Ñ¡¿ε «»αÑñѽѡ¡«ú« πß½«ó¿∩) úÑ¡Ñαáµ¿ε «Φ¿í«¬
- áßßÑ¼í½¿α«óá¡¿∩. ä½∩ φΓ«ú« ¿ß»«½∞ºπεΓß∩ πß½«ó¡δÑ ñ¿αÑ¬Γ¿óδ óδó«ñá
- ß««íΘÑ¡¿⌐ «í «Φ¿í¬áσ .ERR, .ERR1, ERR2, .ERRDEF, .ERRNDEF, .ERRB,
- .ERRNB, .ERRIDN, .ERRIDNI, .ERRDIFI, .ERRE, .ERRNZ ¿ .ERRDIF. ä½∩
- τÑú« ¡πª¡« »αÑñ¡á¼ÑαÑ¡¡« úÑ¡Ñα¿α«óáΓ∞ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ áßßѼí-
- ½¿α«óá¡¿∩? ôß½«ó¡δÑ ñ¿αÑ¬Γ¿óδ óδó«ñá ß««íΘÑ¡¿⌐ «í «Φ¿í¬áσ »«ºó«-
- ½∩εΓ óá¼ »ÑαÑσóáΓδóáΓ∞ ó »α«úαá¼¼áσ ¼¡«ªÑßΓó« «Φ¿í«¬, ¡á»α¿¼Ñα,
- »α¿ßóá¿óá¡¿Ñ ¼ÑΓ¬á¼ ß½¿Φ¬«¼ í«½∞Φ¿σ ¿½¿ ¼á½δσ º¡áτÑ¡¿⌐, ¿ß»«½∞º«-
- óá¡¿Ñ ¡Ñ«»αÑñѽѡ¡δσ ¼ÑΓ«¬ ¿ »α«»π߬ áαúπ¼Ñ¡Γ«ó ¼á¬α«¬«¼á¡ñ.
-
- àß½¿ óú½∩¡πΓ∞ ¡á »ÑαÑτÑ¡∞ πß½«ó¡δσ ñ¿αÑ¬Γ¿ó óδó«ñá ß««íΘÑ¡¿⌐
- «í «Φ¿í¬áσ, Γ« ¼«ª¡« ºá¼ÑΓ¿Γ∞, τΓ« φΓ¿ ñ¿αÑ¬Γ¿óδ «τÑ¡∞ »«σ«ª¿ ¡á
- ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩. ê φΓ« ¡Ñ ß½πτá⌐¡«Ñ ß«ó»áñÑ-
- ¡¿Ñ, »«ß¬«½∞¬π í«½∞Φ¿¡ßΓó« πß½«ó¡δσ ñ¿αÑ¬Γ¿ó óδó«ñá ß««íΘÑ¡¿⌐ «í
- «Φ¿í¬áσ »α«óÑα∩εΓ ΓÑ ªÑ πß½«ó¿∩. ìá»α¿¼Ñα, ñ¿αÑ¬Γ¿óá .ERRNDEF úÑ-
- ¡Ñα¿απÑΓ «Φ¿í¬π ó Γ«¼ ß½πτáÑ, Ñß½¿ ¼ÑΓ¬á, ∩ó½∩εΘá∩ß∩ ÑÑ «»Ñαá¡-
- ñ«¼, ¡Ñ «»αÑñѽѡá, ΓᬠªÑ ¬á¬ ñ¿αÑ¬Γ¿óá IFNDEF áßßÑ¼í½¿απÑΓ ß«-
- «ΓóÑΓßΓóπεΘ¿⌐ ¬«ñ ó Γ«¼ ß½πτáÑ, Ñß½¿ ¼ÑΓ¬á ¡Ñ «»αÑñѽѡá.
-
-
-
- ä¿αÑ¬Γ¿óδ .ERR, .ERR1 ¿ .ERR2
- -----------------------------------------------------------------
-
- è«úñá Æπαí« ÇßßѼí½Ñα «í¡áαπª¿óáÑΓ ñ¿αÑ¬Γ¿óπ .ERR, Γ« úÑ¡Ñ-
- α¿απÑΓß∩ «Φ¿í¬á. æá¼« »« ßÑíÑ φΓ« ¡Ñ ∩ó½∩ÑΓß∩ »«½Ñº¡«⌐ Σπ¡¬µ¿Ñ⌐,
- «ñ¡á¬« ñ¿αÑ¬Γ¿óπ .ERR »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ó ß«τÑΓá¡¿¿ ß ñ¿αÑ¬Γ¿-
- ó«⌐ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩.
-
- ìá»α¿¼Ñα, »αÑñ»«½«ª¿¼, óδ σ«Γ¿ΓÑ σ«Γ¿ΓÑ ßúÑ¡Ñα¿α«óáΓ∞ «Φ¿í¬π
- ó Γ«¼ ß½πτáÑ, Ñß½¿ ó »α¿ßóá¿óá¡¿¿ ñ½¿¡δ ñ½∩ ñá¡¡«ú« ¼áßß¿óá πßΓá-
- ¡áó½¿óáÑΓß∩ ß½¿Φ¬«¼ í«½∞Φ«Ñ º¡áτÑ¡¿Ñ. ¥Γ« ¼«ª¡« ßñѽáΓ∞ ß½ÑñπεΘ¿¼
- «íαẫ¼:
-
- IF (ARRAY_LENGTH GT MAX_ARRAY_LENGTH)
- .ERR
- ENDIF
-
- àß½¿ ¼áßß¿ó ¡Ñ ∩ó½∩ÑΓß∩ ñ«ßΓáΓ«τ¡« ñ½¿¡¡δ¼ (ñ½¿¡á ¼áßß¿óá
- ARRAY_LENGTH ¡Ñ »αÑó«ßσ«ñ¿Γ ¼á¬ß¿¼á½∞¡«ú« º¡áτÑ¡¿∩ ñ½¿¡δ ¼áßß¿óá
- MAX_ARRAY_LENGTH), Γ« Æπαí« ÇßßѼí½Ñα ¡Ñ íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ ¬«ñ
- ó¡πΓα¿ í½«¬á IF ¿ «Φ¿í¬á úÑ¡Ñα¿α«óáΓ∞ß∩ ¡Ñ íπñÑΓ.
-
- ä¿αÑ¬Γ¿óδ .ERR1 ¿ .ERR2 αáí«ΓáεΓ Γ«τ¡« ΓᬪÑ, ¬á¬ ñ¿αÑ¬Γ¿óá
- .ERR, ¡« Γ«½∞¬«, ß««ΓóÑΓßΓóÑ¡¡«, ¡á »Ñαó«¼ ¿ óΓ«α«¼ »α«σ«ñáσ.
- àß½¿ ñ½∩ αáºαÑΦÑ¡¿∩ óδ»«½¡Ñ¡¿∩ ¡Ñ߬«½∞¬¿σ »α«σ«ñ«ó óδ ¡Ñ ¿ß»«½∞-
- ºπÑΓÑ »áαá¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /m, Γ« »« ñ¿αÑ¬Γ¿óÑ .ERR1 óßÑúñá
- íπñÑΓ óδó«ñ¿Γ∞ß∩ «Φ¿í¬á, á »« ñ¿αÑ¬Γ¿óÑ .ERR2 - ¡Ñ íπñÑΓ (Γᬠ¬á¬
- óΓ«α«⌐ »α«σ«ñ ¡Ñ óδ»«½¡∩ÑΓß∩). é Γ«¼ ß½πτáÑ, Ñß½¿ Æπαí« ÇßßѼí½Ñα
- «í¡áαπª¿óáÑΓ ó ¼«ñπ½Ñ ñ¿αÑ¬Γ¿óδ .ERR1 ¿½¿ .ERR2, «¡ óδó«ñ¿Γ ß««í-
- ΘÑ¡¿Ñ:
-
- "Pass dependent construction encountered"
- («í¡áαπªÑ¡á ¬«¡ßΓαπ¬µ¿∩, ºáó¿ß¿¼á∩ «Γ »α«σ«ñá)
-
- àß½¿ óδ ¿ß»«½∞ºπÑΓÑ »áαá¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /m, Γ« ¬«úñá
- óáΦ ¼«ñπ½∞ ß«ñÑαª¿Γ ñ¿αÑ¬Γ¿óπ .ERR1 ¿½¿ .ERR2, áóΓ«¼áΓ¿τÑ߬¿ óδ-
- »«½¡∩ÑΓß∩ ñóá »α«σ«ñá. é φΓ«¼ ß½πτáÑ ñ¿αÑ¬Γ¿óá .ERR1 íπñÑΓ óδó«-
- ñ¿Γ∞ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ ¡á »Ñαó«¼ »α«σ«ñÑ, á ñ¿αÑ¬Γ¿óÑ .ERR2 -
- ¡á óΓ«α«¼ »α«σ«ñÑ. èα«¼Ñ Γ«ú«, óδó«ñ¿Γß∩ »αÑñπ»αѪñáεΘÑÑ ß««íΘÑ-
- ¡¿Ñ:
-
- "Module is pass dependent - compatibility pass was done"
- (¼«ñπ½∞ ºáó¿ß¿Γ «Γ »α«σ«ñá - óδ»«½¡Ñ¡ »α«σ«ñ ñ½∩ ß«ó¼ÑßΓ¿-
- ¼«ßΓ¿)
-
-
- ä¿αÑ¬Γ¿óδ .ERRE ¿ .ERRNZ
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá .ERRE úÑ¡Ñα¿απÑΓ «Φ¿í¬π ó Γ«¼ ß½πτáÑ, Ñß½¿ ÑÑ «»Ñ-
- αá¡ñ, »α¿ óδτ¿ß½Ñ¡¿¿ ¬«Γ«α«ú« ñ«½ª¡á »«½πτáΓ∞ß∩ ¬«¡ßΓá¡Γá, αáóÑ¡
- ¡π½ε. ä¿αÑ¬Γ¿óá .ERRE φ¬ó¿óá½Ñ¡Γá óδ»«½¡Ñ¡¿ε ñ¿αÑ¬Γ¿óδ .IFE ó ß«-
- τÑΓá¡¿¿ ß ñ¿αÑ¬Γ¿ó«⌐ .ERR. ìá»α¿¼Ñα:
-
- .ERRE TEST_LABEL-1
-
- φ¬ó¿óá½Ñ¡Γ¡«:
-
- IFE TEST_LEBEL-1
- .ERRE
- ENDIF
-
- ä¿αÑ¬Γ¿óπ .ERRE ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ óδó«ñá «Φ¿í¬¿ ó Γ«¼
- ß½πτáÑ, ¬«úñá ó óδαáªÑ¡¿¿ «Γ¡«ΦÑ¡¿∩ úÑ¡Ñα¿απÑΓß∩ ½«ª¡«Ñ º¡áτÑ¡¿Ñ
- (Γᬠ¬á¬ ½«ª¡«Ñ óδαáªÑ¡¿Ñ αáó¡« 0).
-
- ǡὫú¿τ¡«, ñ¿αÑ¬Γ¿óá .ERRNZ úÑ¡Ñα¿απÑΓ «Φ¿í¬π ó Γ«¼ ß½πτáÑ,
- Ñß½¿ ÑÑ «»Ñαá¡ñ ¡Ñ αáóÑ¡ ¡π½ε. ¥Γ« φ¬ó¿óá½Ñ¡Γ¡« ñ¿αÑ¬Γ¿óÑ IF, ºá
- ¬«Γ«α«⌐ ß½ÑñπÑΓ ñ¿αÑ¬Γ¿óá .ERR. ä¿αÑ¬Γ¿óπ .ERRNZ ¼«ª¡« ¿ß»«½∞º«-
- óáΓ∞ ñ½∩ óδó«ñá «Φ¿í¬¿ ó Γ«¼ ß½πτáÑ, ¬«úñá ó óδαáªÑ¡¿¿ «Γ¡«ΦÑ¡¿∩
- úÑ¡Ñα¿απÑΓß∩ ¿ßΓ¿¡¡«Ñ º¡áτÑ¡¿Ñ (Γᬠ¬á¬ ¿ßΓ¿¡¡«Ñ óδαáªÑ¡¿Ñ ¡Ñ
- αáó¡« 0). ìá»α¿¼Ñα:
-
- .ERRNZ ARRAY_LENGTH GT MAX_ARRAY_LENGTH
-
- óδ»«½¡∩ÑΓ Γ« ªÑ ñÑ⌐ßΓó¿Ñ, τΓ« ¿ ñ¿αÑ¬Γ¿óδ IF ¿ .ERR ó »α¿¼ÑαÑ
- »«ß½Ññ¡Ñú« αáºñѽá.
-
-
-
-
- ä¿αÑ¬Γ¿óδ .ERRDEF ¿ .ERRNDEF
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá .ERRDEF úÑ¡Ñα¿απÑΓ «Φ¿í¬π ó Γ«¼ ß½πτáÑ, Ñß½¿ ¼ÑΓ-
- ¬á, ∩ó½∩εΘá∩ß∩ ÑÑ «»Ñαá¡ñ«¼, «»αÑñѽѡá, á ñ¿αÑ¬Γ¿óá .ERRNDEF úÑ-
- ¡Ñα¿απÑΓ «Φ¿í¬π ó Γ«¼ ß½πτáÑ, Ñß½¿ ¼ÑΓ¬á-«»Ñαá¡ñ ∩ó½∩ÑΓß∩ ¡Ñ«»αÑ-
- ñѽѡ¡«⌐. ¥Γ¿ ñ¿αÑ¬Γ¿óδ »«ºó«½∩εΓ ó «ñ¡«⌐ ßΓα«¬Ñ αÑ὿º«óáΓ∞ φ¬-
- ó¿óá½Ñ¡Γ ß«τÑΓá¡¿∩ ñ¿αÑ¬Γ¿ó IFDEF ¿½¿ IFNDEF ¿ ñ¿αÑ¬Γ¿óδ .ERR.
- ìá»α¿¼Ñα:
-
- .ERRNDEF MAX_PATH_LENGTH
-
- φ¬ó¿óá½Ñ¡Γ¡«:
-
- IFNDEF MAX_PATH_LENGTH
- .ERR
- ENDIF
-
-
-
- äαπú¿Ñ πß½«ó¡δÑ ñ¿αÑ¬Γ¿óδ úÑ¡Ñαᵿ¿ ß««íΘÑ¡¿∩ «í «Φ¿í¬Ñ
- -----------------------------------------------------------------
-
- ùÑΓδαÑ «ßΓáóΦ¿Ñß∩ πß½«ó¡δÑ ñ¿αÑ¬Γ¿óδ »αÑñ¡áº¡áτÑ¡δ Γ«½∞¬«
- ñ½∩ ¿ß»«½∞º«óá¡¿∩ ó ¼á¬α«¬«¼á¡ñáσ ¿ ∩ó½∩εΓß∩ ¡Ñ»«ßαÑñßΓóÑ¡¡δ¼
- á¡á½«ú«¼ τÑΓδαÑσ ñ¿αÑ¬Γ¿ó πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩, ¿ß»«½∞ºπε-
- Θ¿σß∩ ó ¼á¬α«¬«¼á¡ñáσ ¿ «íßπªñáóΦ¿σß∩ ó »αÑñδñπΘѼ αáºñѽÑ
- "äαπú¿Ñ ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩".
-
- ä¿αÑ¬Γ¿óá .ERRB úÑ¡Ñα¿απÑΓ «Φ¿í¬π ó Γ«¼ ß½πτáÑ, Ñß½¿ ∩ó½∩ε-
- Θ¿⌐ß∩ ÑÑ «»Ñαá¡ñ«¼ »áαá¼ÑΓα ¼á¬α«¬«¼á¡ñδ »πßΓ, á ñ¿αÑ¬Γ¿óá .ERRNB
- - ó Γ«¼ ß½πτáÑ, Ñß½¿ φëà »áαá¼ÑΓα ¡Ñ »πßΓ«⌐. ä¿αÑ¬Γ¿óá .ERRIDN
- úÑ¡Ñα¿απÑΓ «Φ¿í¬π, Ñß½¿ ñóá »áαá¼ÑΓαá ¼á¬α«¬«¼á¡ñδ, ¬«Γ«αδÑ ∩ó½∩-
- εΓß∩ ÑÑ «»Ñαá¡ñἿ, ß«ó»áñáεΓ, á ñ¿αÑ¬Γ¿óá .ERRDIF - ó Γ«¼ ß½π-
- τáÑ, Ñß½¿ «¡¿ αẽ¿τ¡δ.
-
- ìá»α¿¼Ñα, ó ß½ÑñπεΘÑ⌐ ¼á¬α«¬«¼á¡ñÑ «Φ¿í¬á úÑ¡Ñα¿απÑΓß∩ ó Γ«¼
- ß½πτáÑ, Ñß½¿ «¡á óδºδóáÑΓß∩ ß ½εíδ¼ τ¿ß½«¼ »áαá¼ÑΓα«ó, «Γ½¿τ¡δ¼
- «Γ ñóπσ. ¥Γ« αÑ὿º«óá¡« ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿ó .ERRB ¿ .ERRNB («¡¿
- »«ºó«½∩εΓ »α«óÑα¿Γ∞, τΓ« PARM2 ¡Ñ »πßΓ, á PARM3 - »πßΓ«⌐ »áαá-
- ¼ÑΓα). ùΓ«íδ πíÑñ¿Γ∞ß∩, τΓ« ó ¬áτÑßΓóÑ PARM2 ¡Ñ ¿ß»«½∞ºπÑΓß∩ αÑ-
- ú¿ßΓα DX, ó ¼á¬α«¬«¼á¡ñÑ ¿ß»«½∞ºπÑΓß∩ Γá¬ªÑ ñ¿αÑ¬Γ¿óá .ERRIND.
- îá¬α«¬«¼á¡ñδ óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- ;
- ; îá¬α«¬«¼á¡ñá ñ½∩ ß½«ªÑ¡¿∩ ñóπσ ¬«¡ßΓá¡Γ, αÑú¿ßΓα«ó ¿½¿
- ; ¿¼Ñ¡«óá¡¡δσ ∩τÑѬ »á¼∩Γ¿ ¿ ß«σαá¡Ñ¡¿∩ αѺπ½∞ΓáΓá ó DX.
- ;
- ; éó«ñ:
- ; PARM1 - «ñ¿¡ «»Ñαá¡ñ-ß½áúáѼ«Ñ
- ; PARM2 - ñαπú«⌐ «»Ñαá¡ñ-ß½áúáѼ«Ñ
- ;
- ADD_TWO_OPERANDS MACRO PARM1,PARM2,PARM3
- .ERRB <PARM2> ; ñ«½ª¡« íδΓ∞ ñóá »áαá¼ÑΓαá,
- .ERRNB <PARM3> ; ¡« ¡Ñ Γα¿
- .ERRIDN <PARM2>,<DX> ; óΓ«α«⌐ »áαá¼ÑΓα ¡Ñ ¼«ªÑΓ
- ; íδΓ∞ αÑú¿ßΓα«¼ DX
- mov dx,PARM1
- add dx,PARM2
- ENDM
-
- ÄíαáΓ¿ΓÑ ó¡¿¼á¡¿Ñ ¡á ¿ß»«½∞º«óá¡¿Ñ ó ¼á¬α«¬«¼á¡ñÑ ñ¿αÑ¬Γ¿óδ
- .ERRIDN, τΓ«íδ «íÑß»Ñτ¿Γ∞, τΓ« PARM2 «Γ½¿τÑ¡ «Γ DX (ó φΓ«¼ ß½πτáÑ
- »α¿ ºáúαπº¬Ñ PARM1 «¡ íπñÑΓ «Γíα«ΦÑ¡).
-
-
-
- Æ¿»¿τ¡δÑ «Φ¿í¬¿ »α¿ »α«úαá¼¼¿α«óá¡¿¿ ¡á ÇßßѼí½ÑαÑ
- -----------------------------------------------------------------
-
- é ¬áªñ«¼ ∩ºδ¬Ñ ¿¼ÑÑΓß∩ ßó«Ñ ¼¡«ªÑßΓó« «Φ¿í«¬, ¬«Γ«αδÑ «íδτ¡«
- «τÑ¡∞ ½Ñú¬« ßñѽáΓ∞, ¡« ¡Ñ óßÑúñá »α«ßΓ« «í¡áαπª¿Γ∞. ìÑ ∩ó½∩ÑΓß∩
- ¿ß¬½ετÑ¡¿Ñ¼ ¿ ∩ºδ¬ ÇßßѼí½Ñαá. îδ αáßß¼«Γα¿¼ ¡Ñ¬«Γ«αδÑ Γ¿»¿τ¡δÑ
- «Φ¿í¬¿, ¬«Γ«αδÑ ñ«»π߬áεΓß∩ »α¿ »α«úαá¼¼¿α«óá¡¿¿ ¡á ÇßßѼí½ÑαÑ, ¿
- ñáñ¿¼ αѬ«¼Ñ¡ñᵿ¿, ¬á¬ ¼«ª¡« ¿σ ¿ºíѪáΓ∞.
-
- Åα«úαá¼¼¿ßΓ ºáíδóáÑΓ « ó«ºóαáΓÑ ó DOS
- -----------------------------------------------------------------
-
- é Åá߬á½Ñ, æ¿ ¿ ñαπú¿σ ∩ºδ¬áσ »α«úαá¼¼á ºáóÑαΦáÑΓß∩ ¿ ó«ºó-
- αáΘáÑΓß∩ ó «»Ñαᵿ«¡¡πε ß¿ßΓѼπ DOS áóΓ«¼áΓ¿τÑ߬¿, ¬«úñá ¡ÑΓ
- í«½∞ΦÑ óδ»«½¡∩Ѽ«ú« ¬«ñá, ñáªÑ Ñß½¿ ó »α«úαá¼¼Ñ «ΓßπΓßΓóπÑΓ ∩ó¡á∩
- ¬«¼á¡ñá ÑÑ ºáóÑαΦÑ¡¿∩. é ∩ºδ¬Ñ ÇßßѼí½Ñαá φΓ« ¡Ñ Γá¬. ÇßßѼí½Ñα
- óδ»«½¡∩ÑΓ Γ«½∞¬« ΓÑ ñÑ⌐ßΓó¿∩, ¬«Γ«αδÑ óδ ∩ó¡« π¬áºδóáÑΓÑ. è«úñá
- óδ ºá»π߬áÑΓÑ »α«úαá¼¼π, ó ¬«Γ«α«⌐ «ΓßπΓßΓóπÑΓ ¬«¼á¡ñá ó«ºóαáΓá ó
- DOS, «¡á »α«ßΓ« »α«ñ«½ªáÑΓ αáí«ΓáΓ∞ ñ« ¬«¡µá óδ»«½¡∩Ѽ«ú« ¬«ñá
- »α«úαá¼¼δ ¿ »ÑαÑσ«ñ¿Γ ó ¬«ñ, ¬«Γ«αδ⌐ ¡áσ«ñ¿Γß∩ ó »α¿¼δ¬áεΘÑ⌐ »á-
- ¼∩Γ¿.
-
- Éáßß¼«Γα¿¼, ¡á»α¿¼Ñα, ß½ÑñπεΘπε »α«úαá¼¼π:
-
- DOSSEG
- .MODEL SMALL
- .CODE
- DoNothing PROC NEAR
- nop
- DoNothing ENDP
- END DoNothing
-
- ê¼ÑεΘ¿⌐ß∩ «»δΓ ¼«ªÑΓ »«ñ߬áºδóáΓ∞ óá¼, τΓ« ñ¿αÑ¬Γ¿óδ ENDP
- ¿½¿ END ñ«½ª¡δ¼ «íαẫ¼ ºáóÑαΦáΓ »α«úαá¼¼π, á¡á½«ú¿τ¡« } ¿ end.
- do ó Åá߬á½Ñ ¿ æ¿, ¡« φΓ« ¡Ñ Γá¬. éδ»«½¡∩Ѽδ⌐ ¬«ñ, ßúÑ¡Ñα¿α«óá¡-
- ¡δ⌐ »α¿ áßßÑ¼í½¿α«óá¡¿¿ ¿ ¬«¼»«¡«ó¬Ñ ñá¡¡«⌐ »α«úαá¼¼δ, ß«ßΓ«¿Γ
- Γ«½∞¬« ¿º «Γñѽ∞¡«⌐ ¿¡ßΓαπ¬µ¿¿ NOP. é ÇßßѼí½ÑαÑ ñ¿αÑ¬Γ¿óá ENDP
- (¬á¬ ¿ óßÑ ñαπú¿Ñ ñ¿αÑ¬Γ¿óδ) ¡Ñ úÑ¡Ñα¿απÑΓ ¬«ñá, «¡á »α«ßΓ« πóÑ-
- ñ«¼½∩ÑΓ ÇßßѼí½Ñα, τΓ« ¬«ñ ñ½∩ »α«µÑñπαδ DoNothing ºá¬«¡τ¿½ß∩.
- ǡὫú¿τ¡«, ñ¿αÑ¬Γ¿óá END DoNothing »α«ßΓ« ß««íΘáÑΓ ÇßßѼí½Ñαπ,
- τΓ« ¬«ñ ñá¡¡«ú« ¼«ñπ½∩ ºá¬«¡τ¿½ß∩, ¿ »α«úαá¼¼á ñ«½ª¡á ¡áτáΓ∞ óδ-
- »«½¡Ñ¡¿Ñ ß ¼ÑΓ¬¿ DoNothing. ì¿úñÑ ó óδ»«½¡∩Ѽ«¼ ¬«ñÑ ¡Ñ ß«ñÑনΓ-
- ß∩ ¿¡ßΓαπ¬µ¿¿ ñ½∩ »ÑαÑñáτ¿ π»αáó½Ñ¡¿∩ «íαáΓ¡« ó «»Ñαᵿ«¡¡πε ß¿ß-
- ΓѼπ DOS, ¬«úñá »α«úαá¼¼á ºá¬«¡τ¿Γß∩. é αѺπ½∞ΓáΓÑ, ¬«úñá »α«ú-
- αá¼¼á íπñÑΓ ºá»πΘÑ¡á, Γ« »«ß½Ñ ¿¡ßΓαπ¬µ¿¿ NOP íπñπΓ óδ»«½¡∩Γ∞ß∩
- ¿¡ßΓαπ¬µ¿¿, ¬«Γ«αδÑ ß½πτá⌐¡« «¬áªπΓß∩ ó »á¼∩Γ¿ ¡Ñ»«ßαÑñßΓóÑ¡¡« ºá
- NOP. é φΓ«⌐ Γ«τ¬Ñ π»αáó½Ñ¡¿Ñ íπñÑΓ »«ΓÑα∩¡« ¿ ñ½∩ ó«ºóαáΓá ó «»Ñ-
- αᵿ«¡¡πε ß¿ßΓѼπ DOS ¼«ªÑΓ »«ΓαÑí«óáΓ∞ß∩ »α«úαá¼¼¡á∩ ¿½¿ á»»á-
- αáΓ¡á∩ »ÑαѺáúαπº¬á.
-
- ò«Γ∩ ¿¼ÑÑΓß∩ ¡Ñ߬«½∞¬« ß»«ß«í«ó, ß »«¼«Θ∞ε ¬«Γ«αδσ »α«úαá¼¼á
- ¡á ÇßßѼí½ÑαÑ ¼«ªÑΓ óÑα¡πΓ∞ß∩ ó DOS, αѬ«¼Ñ¡ñπÑ¼δ¼ ß»«ß«í«¼ ó«ºó-
- αáΓá ó DOS ∩ó½∩ÑΓß∩ Σπ¡¬µ¿∩ 4Ch. Åαáó¿½∞¡« ºáóÑαΦáΓ∞ αáí«Γπ íπñÑΓ
- ß½ÑñπεΘá∩ óÑαß¿∩ »αÑñδñπΘÑ⌐ »α«úαá¼¼δ:
-
- DOSSEG
- .MODEL SMALL
- .CODE
- DoNothing PROC NEAR
- nop
- mov ah,4Ch ; Σπ¡¬µ¿∩ DOS ºáóÑαΦÑ¡¿∩ »α«µÑßßá
- int 21h ; óδºóáΓ∞ DOS ñ½∩ ºáóÑαΦÑ¡¿∩ »α«úαá¼¼δ
- DoNothing ENDP
- END DoNothing
-
- éßÑúñá ¡πª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« ñ¿αÑ¬Γ¿óδ ¡Ñ úÑ¡Ñα¿απεΓ ¬«-
- ñá, ¿ τΓ« Æπαí« ÇßßѼí½Ñα úÑ¡Ñα¿απÑΓ »α«úαá¼¼δ, ¬«Γ«αδÑ ñѽáεΓ
- Γ«½∞¬« Γ«, τΓ« ¿¼ π¬áºδóáÑΓ ¿ßσ«ñ¡δ⌐ ¬«ñ, ¡Ñ í«½∞ΦÑ ¿ ¡Ñ ¼Ñ¡∞ΦÑ.
-
- Åα«úαá¼¼¿ßΓ ºáíδóáÑΓ «í ¿¡ßΓαπ¬µ¿¿ RET
- -----------------------------------------------------------------
-
- çá¼ÑΓ¿¼, τΓ« »αáó¿½∞¡δ⌐ óδº«ó »«ñ»α«úαá¼¼δ ß«ßΓ«¿Γ ¿º ó맮óá
- »«ñ»α«úαá¼¼δ ¿º ñαπú«⌐ τáßΓ¿ ¬«ñá, óδ»«½¡Ñ¡¿∩ »«ñ»α«úαá¼¼δ ¿
- ó«ºóαáΓá ¿º »«ñ»α«úαá¼¼δ ó óδºδóáεΘπε »α«úαá¼¼π. ìÑ ºáíπñ∞ΓÑ
- ó¬½ετáΓ∞ ó ¬áªñπε »«ñ»α«úαá¼¼π ¿¡ßΓαπ¬µ¿ε RET, »« ¬«Γ«α«⌐ π»αáó-
- ½Ñ¡¿Ñ íπñÑΓ »ÑαÑñáóáΓ∞ß∩ ó óδºδóáεΘ¿⌐ ¬«ñ. Åα¿ ¡áí«αÑ »α«úαá¼¼δ
- φΓπ ñ¿αÑ¬Γ¿óπ ½Ñú¬« »α«»πßΓ¿Γ∞ ¿ ºá¬«¡τ¿Γ∞ ¬«ñ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- ;
- ; Å«ñ»α«úαá¼¼á ñ½∩ π¼¡«ªÑ¡¿∩ º¡áτÑ¡¿∩ ¡á 80
- ; éó«ñ: AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ¡πª¡« π¼¡«ª¿Γ∞ ¡á 80
- ; éδó«ñ: DX:AX - »α«¿ºóÑñÑ¡¿Ñ
- ;
- MultiplyBy80 PROC NEAR
- mov dx,80
- mul dx
- MultiplyBy80 ENDP
-
- ; Å«ñ»α«úαá¼¼á ñ½∩ »«½πτÑ¡¿∩ ß½ÑñπεΘÑ ¡áªáΓ«⌐ ¬½áó¿Φ¿
- ; éδó«ñ: AL - ß½ÑñπεΘá∩ ¡áªáΓá∩ ¬½áó¿Φá
- ; æ«ñÑন¼«Ñ αÑú¿ßΓαá AH ΓÑα∩ÑΓß∩
- ;
- GetKey PROC NEAR
- mov ah,1
- int 21h
- ret
- GetKey PROC NEAR
-
- ä¿αÑ¬Γ¿óá MultipleBy80 ENDP ¼«ªÑΓ óóÑßΓ¿ óáß ó ºáí½πªñÑ¡¿Ñ,
- ¿ óδ »«ñπ¼áÑΓÑ, τΓ« »«ñ»α«úαá¼¼á MultipleBy80 πªÑ ºáóÑαΦÑ¡á ¬«α-
- αÑ¬Γ¡«, Γ«úñá ¬á¬ »α¿ ó맮óÑ φΓ« »«ñ»α«úαá¼¼δ ¡Ñ Γ«½∞¬« íπñÑΓ
- ß«ñÑন¼«Ñ AX π¼¡«ªáΓ∞ß∩ ¡á 80, ¡« ¿ »α«ñ«½ª¿Γ∞ß∩ óδ»«½¡Ñ¡¿Ñ »«ñ-
- »α«úαá¼¼δ GetKey, ¿ ó αÑú¿ßΓαÑ AL íπñÑΓ ó«ºóαáΘáΓ∞ß∩ ¬«ñ ß½Ññπε-
- ΘÑ⌐ ¡áªáΓ«⌐ ¬½áó¿Φ¿. è«ααÑ¬Γ¡«⌐ φΓá »«ñ»α«úαá¼¼á íπñÑΓ ó ß½Ññπε-
- ΘѼ ó¿ñÑ:
-
- ;
- ; Å«ñ»α«úαá¼¼á ñ½∩ π¼¡«ªÑ¡¿∩ º¡áτÑ¡¿∩ ¡á 80
- ; éó«ñ: AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ¡πª¡« π¼¡«ª¿Γ∞ ¡á 80
- ; éδó«ñ: DX:AX - »α«¿ºóÑñÑ¡¿Ñ
- ;
- MultiplyBy80 PROC NEAR
- mov dx,80
- mul dx
- ret
- MultiplyBy80 ENDP
-
- ; Å«ñ»α«úαá¼¼á ñ½∩ »«½πτÑ¡¿∩ ß½ÑñπεΘÑ⌐ ¡áªáΓ«⌐ ¬½áó¿Φ¿
- ; éδó«ñ: AL - ß½ÑñπεΘá∩ ¡áªáΓá∩ ¬½áó¿Φá
- ; æ«ñÑন¼«Ñ αÑú¿ßΓαá AH ΓÑα∩ÑΓß∩
- ;
- GetKey PROC NEAR
- mov ah,1
- int 21h
- ret
- GetKey PROC NEAR
-
-
-
- âÑ¡Ñαᵿ∩ ¡ÑóÑα¡«ú« Γ¿»á ó«ºóαáΓá
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá PROC ñÑ⌐ßΓóπÑΓ ñó«∩¬«. é«-»Ñαóδσ, «¡á «»αÑñѽ∩ÑΓ
- ¿¼∩, »« ¬«Γ«α«¼π íπñÑΓ óδºδóáΓ∞ß∩ »α«µÑñπαá. é«-óΓ«αδσ, «¡á π»-
- αáó½∩ÑΓ Γ¿»«¼ (í½¿ª¡¿¼ ¿½¿ ñá½∞¡¿¼) »α«µÑñπαδ.
-
- Æ¿» »α«µÑñπαδ ¿ß»«½∞ºπÑΓß∩ Æπαí« ÇßßѼí½Ñα«¼ ñ½∩ «»αÑñѽѡ¿∩
- Γ«ú«, ¬á¬«⌐ Γ¿» ó맮ó«ó ¡πª¡« úÑ¡Ñα¿α«óáΓ∞ »α¿ ó맮óÑ »α«µÑñπαδ
- ¿º Γ«ú« ªÑ ¿ßσ«ñ¡«ú« Σá⌐½á. Æ¿» »α«µÑñπαδ Γá¬ªÑ ¿ß»«½∞ºπÑΓß∩ ñ½∩
- «»αÑñѽѡ¿∩ Γ¿»á ¿¡ßΓαπ¬µ¿¿ RET, ¬«Γ«αá∩ óδ»«½¡∩ÑΓß∩, ¬«úñá »α«-
- µÑñπαá ó«ºóαáΘáÑΓ π»αáó½Ñ¡¿Ñ ó óδºδóáεΘ¿⌐ ¬«ñ. Éáßß¼«Γα¿¼ ß½Ññπε-
- Θ¿⌐ »α¿¼Ñα:
-
- ; Å«ñ»α«úαá¼¼á í½¿ª¡Ñú« Γ¿»á ñ½∩ ßñó¿úá DX:AX ó»αáó« ¡á 2 íá⌐Γá
- ;
- LongShiftRight2 PROC NEAR
- shr dx,1
- rcr ax,1 ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
- shr dx,1
- rcr ax,1 ; ßñó¿ú DX:AX ó»αáó« ÑΘÑ ¡á 1 í¿Γ
- ret
- LongShiftRight2 ENDP
-
- Æπαí« ÇßßѼí½Ñα «íÑß»Ñτ¿óáÑΓ, τΓ« ¿¡ßΓαπ¬µ¿∩ RET íπñÑΓ í½¿ª-
- ¡Ñú« Γ¿»á, Γᬠ¬á¬ LongShiftRight2 - φΓ« »α«µÑñπαá í½¿ª¡Ñú« Γ¿»á
- (NEAR). Äñ¡á¬«, Ñß½¿ ñ¿αÑ¬Γ¿óπ PROC ¿º¼Ñ¡¿Γ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- LongShiftRight2 PROC FAR
-
- Γ« íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ß∩ ¿¡ßΓαπ¬µ¿∩ RET ñá½∞¡Ñú« Γ¿»á (FAR).
-
- Æá¬¿¼ «íαẫ¼, ¿ñÑ∩ ºñÑß∞ «τÑó¿ñ¡á. ê¡ßΓαπ¬µ¿¿ RET ó »α«µÑ-
- ñπαÑ ñ«½ª¡δ ß««ΓóÑΓßΓó«óáΓ∞ ÑÑ Γ¿»π, ¡Ñ »αáóñá ½¿?
-
- ¥Γ¿ ¿ Γᬠ¿ ¡Ñ Γá¬. Åα«í½Ñ¼á ß«ßΓ«¿Γ ó Γ«¼, τΓ« ¼«ª¡« (¿
- τáßΓ« ªÑ½áΓѽ∞¡«) úαπ»»¿α«óáΓ∞ ó «ñ¡«⌐ ¿ Γ«⌐ ªÑ »α«µÑñπαÑ ¡Ñß-
- ¬«½∞¬« »α«µÑñπα. ū߬«½∞¬π ó φΓ¿σ »α«µÑñπαáσ «ΓßπΓßΓóπÑΓ ß««Γ-
- óÑΓßΓóπεΘá∩ ñ¿αÑ¬Γ¿óá PROC, ¿σ ¿¡ßΓαπ¬µ¿¿ RET íπñπΓ ¿¼ÑΓ∞ Γ¿» Γ«⌐
- »α«µÑñπαδ, ó ¬«Γ«απε «¡¿ ºá¬½ετÑ¡δ, á ñ½∩ ¬«¡¬αÑΓ¡δσ »«ñ»α«úαá¼¼
- φΓ«Γ Γ¿» ¡Ñ óßÑúñá ¼«ªÑΓ «¬áºáΓ∞ß∩ ¬«ααÑ¬Γ¡δ¼. ìá»α¿¼Ñα, »α«úαá¼-
- ¼á:
-
- ; Å«ñ»α«úαá¼¼á ñá½∞¡Ñú« Γ¿»á ñ½∩ ßñó¿úá DX:AX ¡á 2 í¿Γá.
- ;
- LongShiftRight2 PROC FAR
- call LongShiftRight ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
- call LongShiftRight ; ßñó¿ú DX:AX ó»αáó« ÑΘÑ ¡á 1 í¿Γ
- ret
- LongShiftRight:
- shr dx,1
- rcr ax,1 ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
- ret
- LongShiftRight2 ENDP
-
- αáí«ΓáÑΓ ¡Ñ»αáó¿½∞¡«. Åα«µÑñπαá LongShiftRight2 «íαáΘáÑΓß∩ ß óδ-
- º«ó«¼ í½¿ª¡Ñú« Γ¿»á ¬ LongShiftRight (Γᬠ¬á¬ «¡¿ ¡áσ«ñ∩Γß∩ ó «ñ-
- ¡«¼ ßÑú¼Ñ¡ΓÑ ¬«ñá). Äñ¡á¬«, Γᬠ¬á¬ LongShiftRight óßΓα«Ñ¡á ó
- »α«µÑñπαπ LongShiftRight2, Γ« ó«ºóαáΓ ó ¬«¡µÑ »«ñ»α«úαá¼¼δ
- LongShiftRight ßΓá¡«ó¿Γß∩ ó«ºóαáΓ«¼ ñá½∞¡Ñú« Γ¿»á, á ¬«úñá ó맮óπ
- í½¿ª¡Ñú« Γ¿»á ß««ΓóÑΓßΓóπÑΓ ó«ºóαáΓ ñá½∞¡Ñú« Γ¿»á, φΓ« ß í«½∞Φ«⌐
- óÑα«∩Γ¡«ßΓ∞ε ¼«ªÑΓ »α¿óÑßΓ¿ ¬ ßí«ε (áóáα¿⌐¡«¼π ºáóÑαΦÑ¡¿ε »α«ú-
- αá¼¼δ).
-
- ò«α«Φ¿¼ αÑΦÑ¡¿Ñ¼ ºñÑß∞ íπñÑΓ ¡á½¿τ¿Ñ ó ¬áªñ«⌐ »«ñ»α«úαá¼¼Ñ
- ñ¿αÑ¬Γ¿óδ PROC. 齫ªÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ PROC »αѬαáß¡« αáí«ΓáεΓ:
-
- ; Å«ñ»α«úαá¼¼á ñá½∞¡Ñú« Γ¿»á ñ½∩ ßñó¿úá DX:AX ¡á 2 í¿Γá.
- ;
- LongShiftRight2 PROC FAR
- call LongShiftRight ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
- call LongShiftRight ; ßñó¿ú DX:AX ó»αáó« ÑΘÑ ¡á 1 í¿Γ
- ret
- LongShiftRight PROC NEAR
- shr dx,1
- rcr ax,1 ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
- ret
- LongShiftRight2 ENDP
- LongShiftRight ENDP
-
- Γá¬ªÑ ¬á¬ ¿ »«ß½Ññ«óáΓѽ∞¡δÑ »α«µÑñπαδ:
-
- ; Å«ñ»α«úαá¼¼á ñá½∞¡Ñú« Γ¿»á ñ½∩ ßñó¿úá DX:AX ¡á 2 í¿Γá.
- ;
- LongShiftRight2 PROC FAR
- call LongShiftRight ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
- call LongShiftRight ; ßñó¿ú DX:AX ó»αáó« ÑΘÑ ¡á 1 í¿Γ
- ret
- LongShiftRight2 ENDP
- LongShiftRight PROC NEAR
- shr dx,1
- rcr ax,1 ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
- ret
- LongShiftRight ENDP
-
- ä½∩ ∩ó¡«⌐ úÑ¡Ñαᵿ¿ í½¿ª¡Ñú« ¿½¿ ñá½∞¡Ñú« ó«ºóαáΓá ¼«ª¡« ¿ß-
- »«½∞º«óáΓ∞, ß««ΓóÑΓßΓóÑ¡¡«, ¿¡ßΓαπ¬µ¿¿ RETN ¿ RETF. éδ ¼«ªÑΓÑ
- «íÑß»Ñτ¿Γ∞ ß ¿σ »«¼«Θ∞ε ¬«ααÑ¬Γ¡πε úÑ¡Ñαáµ¿ε ¿¡ßΓαπ¬µ¿⌐ ó«ºóαáΓá.
-
- ìÑ»αáó¿½∞¡δ⌐ »«α∩ñ«¬ «»Ñαá¡ñ«ó
- -----------------------------------------------------------------
-
- î¡«ú¿Ñ »α«úαá¼¼¿ßΓδ «Φ¿íáεΓß∩ ¿ ¿º¼Ñ¡∩εΓ »«α∩ñ«¬ «»Ñαá¡ñ«ó ó
- ¿¡ßΓαπ¬µ¿∩σ »α«µÑßß«αá 8086 ¡á «íαáΓ¡δ⌐. ¥Γ«, óÑα«∩Γ¡«, ßó∩ºá¡« ß
- ΓѼ, τΓ« ßΓ᫬á:
-
- mov ax,bx
-
- ¬«Γ«αá∩ «º¡áτáÑΓ "»«¼ÑßΓ¿Γ∞ AX ó BX", τ¿ΓáÑΓß∩ ß½Ñóá ¡á»αáó«, ¿
- ¼¡«ú¿Ñ ß«ºñáΓѽ¿ ¼¿¬α«»α«µÑßß«α«ó ßΓα«∩Γ ß««ΓóÑΓßΓóπεΘ¿¼ «íαẫ¼
- ßó«¿ áßßѼí½Ñαδ. Äñ¡á¬« ó ∩ºδ¬Ñ ÇßßѼí½Ñαá »α«µÑßß«αá 8086 Σ¿α¼á
- Intel ¿ß»«½∞º«óá½á ñαπú«⌐ »«ñσ«ñ, »«φΓ«¼π ñ½∩ ¡áß φΓá ßΓα«¬á «º-
- ¡áτáÑΓ "»«¼ÑßΓ¿Γ∞ BX ó AX", τΓ« ¿¡«úñá »α¿ó«ñ¿Γ ¬ »πΓá¡¿µÑ.
-
- Å«α∩ñ«¬ «»Ñαá¡ñ«ó, »α¿¡∩Γδ⌐ Σ¿α¼«⌐ Intel, «ß¡«óá¡ ¡á »«α∩ñ¬Ñ
- «»Ñαá¡ñ«ó, »α¿¡∩Γ«⌐ ó Åá߬á½Ñ ¿ æ¿, úñÑ µÑ½Ñó«⌐ «»Ñαá¡ñ (»α¿Ñ¼-
- ¡¿¬) ¡áσ«ñ¿Γß∩ ß½Ñóá. Æá¬¿¼ «íαẫ¼, τΓ«íδ ¡Ñ »ÑαÑ»πΓáΓ∞ »«α∩ñ«¬
- «»Ñαá¡ñ«ó ó ∩ºδ¬Ñ ÇßßѼí½Ñαá »α«µÑßß«αá 8086, ¡πª¡« ¡á ¼ÑßΓ« ºá-
- »∩Γ«⌐, αáºñѽ∩εΘÑ⌐ «»Ñαá¡ñδ, »«¼ÑßΓ¿Γ∞ º¡á¬ αáóÑ¡ßΓóá, »α¿ñáó
- ßΓα«¬Ñ Σ«α¼π »α¿ßóá¿óá¡¿∩. ìá»α¿¼Ñα, ßΓ᫬π:
-
- mov ax,bx
-
- ¼«ª¡« αáßß¼áΓα¿óáΓ∞, ¬á¬
-
- ax = bx
-
- Ä»Ñαá¡ñδ-¬«¡ßΓá¡Γδ, ΓᬿÑ, ¬á¬:
-
- add bx,(OFFSET BaseTble * 4) + 2
-
- ¼«ª¡« »αÑñßΓáó¿Γ∞ ó ó¿ñÑ:
-
- bx += (OFFSET BaseTable * 4) + 2
-
-
-
- Åα«úαá¼¼¿ßΓ ºáíδóáÑΓ « ßΓÑ¬Ñ ¿½¿ αѺÑαó¿απÑΓ ¼á½Ñ¡∞¬¿⌐ ßΓѬ
- -----------------------------------------------------------------
-
- é í«½∞Φ¿¡ßΓóÑ ß½πτáÑó ¡Ñ óδñѽ∩Γ∞ ∩ó¡« »α«ßΓαá¡ßΓó« ñ½∩ ßΓÑ-
- ¬á, φΓ« óßÑ αáó¡«, τΓ« σ«ñ¿Γ∞ »« Γ«¡¬«¼π ½∞ñπ. ê¡«úñá »α«úαá¼¼δ,
- ó ¬«Γ«αδσ ¡Ñ óδñѽ∩ÑΓß∩ »α«ßΓαá¡ßΓó« ñ½∩ ßΓѬá, íπñπΓ αáí«ΓáΓ∞,
- »«ß¬«½∞¬π ¼«ªÑΓ «¬áºáΓ∞ß∩ Γá¬, τΓ« ¡áº¡áτÑ¡¡δ⌐ »« π¼«½τá¡¿ε ßΓѬ
- »«»áñÑΓ ó ¡Ñ¿ß»«½∞ºπѼπε «í½áßΓ∞ »á¼∩Γ¿. ì« ¡ÑΓ ¡¿¬á¬«⌐ úáαá¡Γ¿¿,
- τΓ« Γá¬¿Ñ »α«úαá¼¼δ íπñÑΓ αáí«ΓáΓ∞ »α¿ ½εíδσ «íßΓ«∩Γѽ∞ßΓóáσ,
- »«ß¬«½∞¬π ¡ÑΓ úáαá¡Γ¿¿, τΓ« ñ½∩ ßΓѬá íπñÑΓ ñ«ßΓπ»Ñ¡ »« ¬αá⌐¡Ñ⌐
- ¼ÑαÑ «ñ¿¡ íá⌐Γ. é í«½∞Φ¿¡ßΓóÑ »α«úαá¼¼ ñ½∩ αѺÑαó¿α«óá¡¿∩ »α«ßΓ-
- αá¡ßΓóá ñ½∩ ßΓѬá ñ«½ª¡á »α¿ßπΓßΓó«óáΓ∞ ñ¿αÑ¬Γ¿óá .STACK, ¿ ñ½∩
- ½εí«⌐ »α«úαá¼¼δ φΓá ñ¿αÑ¬Γ¿óá ñ«½ª¡á αѺÑαó¿α«óáΓ∞ ñ«ßΓáΓ«τ¡«Ñ
- »α«ßΓαá¡ßΓó«, τΓ«íδ Ñú« σóáΓ¿½« ñ½∩ ¼á¬ß¿¼á½∞¡δσ »«ΓαÑí¡«ßΓÑ⌐ ó
- »α«úαá¼¼Ñ.
-
- Å«τѼπ φΓ« »α«ßΓαá¡ßΓó« ñ«½ª¡« íδΓ∞ í«½ÑÑ τѼ ñ«ßΓáΓ«τ¡δ¼, á
- ¡Ñ »α«ßΓ« ñ«ßΓáΓ«τ¡δ¼? Æαπñ¡« ¿¼ÑΓ∞ πóÑαÑ¡¡«ßΓ∞ ó Γ«¼, ¬á¬«⌐ «íΩ-
- Ѽ ßΓÑ¬á ¼«ªÑΓ «¬áºáΓ∞ß∩ ó »α«úαá¼¼Ñ ¡Ñ«íσ«ñ¿¼δ¼. ÄΦ¿í¬¿, ¬«Γ«αδÑ
- 󫺡¿¬áεΓ, ¬«úñá πóѽ¿τ¿óáεΘ¿⌐ß∩ ßΓѬ »ÑαÑσ«ñ¿Γ ó ñαπú¿Ñ τáßΓ¿
- »α«úαá¼¼δ ¿ »«αΓ¿Γ ¼áΓ ¿¡Σ«α¼áµ¿ε, «íδτ¡« íδóáÑΓ Γαπñ¡« ó«ß»α«¿º-
- óÑßΓ¿ ¿ «Γ߽Ѫ¿óáΓ∞. èα«¼Ñ Γ«ú«, ¼¡«ú¿Ñ «Γ½áñτ¿¬¿ ñ½∩ ó«ºóαáΓá
- π»αáó½Ñ¡¿∩ ¿º »α«úαá¼¼δ ¿ß»«½∞ºπεΓ ¡Ñí«½∞Φ«Ñ ñ«»«½¡¿Γѽ∞¡«Ñ
- »α«ßΓαá¡ßΓó« ó ßΓѬÑ. Å«φΓ«¼π ¡Ñ ß½ÑñπÑΓ ß¬π»¿Γ∞ß∩ »α¿ óδñѽѡ¿¿
- »α«ßΓαá¡ßΓóá ñ½∩ ßΓѬá. ¥Γ« ¿ºíáó¿Γ óáß «Γ ¼¡«ú¿σ 󫺼«ª¡δσ ¡Ñ»-
- α¿∩Γ¡«ßΓÑ⌐. ò«α«Φ¿¼ »αá󿽫¼ ∩ó½∩ÑΓß∩ óδñѽѡ¿Ñ ßΓѬá, ¼¿¡¿¼á½∞-
- ¡δ⌐ αẼÑα ¬«Γ«α«ú« ß«ßΓáó½∩ÑΓ 512 íá⌐Γ.
-
- àñ¿¡ßΓóÑ¡¡δ¼ ó¿ñ«¼ »α«úαá¼¼ ¡á ÇßßѼí½ÑαÑ, úñÑ ¡Ñ ß½ÑñπÑΓ
- óδñѽ∩Γ∞ ßΓѬ, ∩ó½∩εΓß∩ »α«úαá¼¼δ, ¬«Γ«αδÑ »αÑñ»«½áúáÑΓß∩ »αÑ«í-
- αẫóáΓ∞ ó Σá⌐½δ Γ¿»á .COM ¿½¿ .BIN. öá⌐½δ .BIN ß«ñÑαªáΓ ¬«ñ, ¬«-
- Γ«αδ⌐ ªÑßΓ¬« »α¿ó∩ºá¡ ¬ «Γñѽ∞¡δ¼ áñαÑßá¼, ¿, »«ß¬«½∞¬π Σá⌐½δ
- .BIN ¿ß»«½∞ºπεΓß∩ «íδτ¡«, ¬á¬ ¿¡ΓÑα»αÑΓ¿α«óá¡¡δÑ »«ñ»α«úαá¼¼δ
- üÑ⌐ß¿¬á, «¡¿ ¿ß»«½∞ºπεΓ ßΓѬ üÑ⌐ß¿¬á. öá⌐½δ .COM óδ»«½¡∩εΓß∩ ß«
- ßΓѬ«¼, αáß»«½«ªÑ¡¡δ¼ ó ßἫ⌐ óÑαΦ¿¡Ñ »α«úαá¼¼¡«ú« ßÑú¼Ñ¡Γá (¬«-
- Γ«αδ⌐ ¿¼ÑÑΓ αẼÑα 64è ¿½¿ ¼Ñ¡∞ΦÑ, Ñß½¿ ñ«ßΓπ»¡« ¼Ñ¡∞ΦÑ 64è), »«-
- φΓ«¼π ¼á¬ß¿¼á½∞¡δ⌐ αẼÑα ßΓѬá ó φΓ«¼ ß½πτáÑ »α«ßΓ« αáóÑ¡ «íΩѼπ
- »á¼∩Γ¿, «ßΓáóΦÑ⌐ß∩ ó »α«úαá¼¼¡«¼ ßÑú¼Ñ¡ΓÑ. Åα¿ ¡á»¿ßá¡¿¿ »α«úαá¼¼
- ó Σ«α¼áΓÑ .COM ß½ÑñπÑΓ ¿¼ÑΓ∞ ó ó¿ñπ φëà αẼÑα ó 64è, Γᬠ¬á¬
- »α¿ πóѽ¿τÑ¡¿¿ »α«úαá¼¼δ ß««ΓóÑΓßΓóÑ¡¡« π¼Ñ¡∞ΦáÑΓß∩ ßΓѬ. ìπª¡«
- Γá¬ªÑ πτ¿ΓδóáΓ∞, τΓ« »α¿ αáí«ΓÑ í«½∞Φ¿σ »α«úαá¼¼ ó Σ«α¼áΓÑ .COM,
- óδ»«½¡∩εΘ¿Ñß∩ ¡á ¬«¼»∞εΓÑαáσ ß ¡Ñí«½∞Φ«⌐ ñ«ßΓπ»¡«⌐ »á¼∩Γ∞ε, ¿½¿
- ºá»πΘÑ¡¡δσ ¿º «»Ñαᵿ«¡¡«⌐ ßαÑñδ DOS ¡áα∩ñπ ß ñαπú¿¼¿ »α«úαá¼¼á-
- ¼¿, ¼«úπΓ ó«º¡¿¬¡πΓ∞ »α«í½Ñ¼δ ß« ßΓѬ«¼. Åα«ßΓÑ⌐Φ¿⌐ ß»«ß«í ¿ºíÑ-
- ªáΓ∞ φΓ¿σ »«ΓÑ¡µ¿á½∞¡δσ »α«í½Ñ¼ ß«ßΓ«¿Γ ó ¡á»¿ßá¡¿¿ »α«úαá¼¼ ó
- Σ«α¼áΓÑ .EXE, á ¡Ñ ó Σ«α¼áΓÑ .COM, ¿ αѺÑαó¿α«óá¡¿¿ ßΓѬá í«½∞Φ«-
- ú« «íΩѼá.
-
-
-
- éδº«ó »«ñ»α«úαá¼¼δ, ¬«Γ«αá∩ »«αΓ¿Γ ß«ñÑন¼«Ñ ¡πª¡δσ αÑú¿ßΓα«ó
- -----------------------------------------------------------------
-
- Åα¿ αáºαáí«Γ¬Ñ »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ αÑú¿ßΓαδ πñ«í¡« αáßß-
- ¼áΓα¿óáΓ∞, ¬á¬ ½«¬á½∞¡δÑ »ÑαѼѡ¡δÑ, óδñѽѡ¡δÑ ñ½∩ ¿ß»«½∞º«óá¡¿∩
- ó »α«µÑñπαÑ, ß ¬«Γ«α«⌐ óδ ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ αáí«ΓáÑΓÑ. é τáßΓ¡«ßΓ¿,
- ¡ÑαÑñ¬« »«ñαáºπ¼ÑóáεΓ, τΓ« »α¿ «íαáΘÑ¡¿¿ ¬ ñαπú¿¼ »α«µÑñπαá¼ αÑ-
- ú¿ßΓαδ «ßΓáεΓß∩ ¡Ñ¿º¼Ñ¡Ñ¡¡δ¼¿. ìá ßἫ¼ ñÑ½Ñ φΓ« ¡Ñ Γá¬. ÉÑú¿ßΓαδ
- - φΓ« ú½«íá½∞¡δÑ »ÑαѼѡ¡δÑ, ¿ ¬áªñá∩ »α«µÑñπαá ¼«ªÑΓ ß«σαá¡¿Γ∞
- ¿½¿ π¡¿τΓ«ª¿Γ∞ ß«ñÑন¼«Ñ ½εí«ú« ¿º αÑú¿ßΓα«ó.
-
- Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ »α¿¼Ñα:
-
- .
- .
- .
- mov bx,[TableBase] ; BX π¬áºδóáÑΓ ¡á ¡áτὫ Γáí½¿µδ
- mov ax,[Element] ; »«½πτ¿Γ∞ φ½Ñ¼Ñ¡Γ
- call DivideBy10 ; αáºñѽ¿Γ∞ φ½Ñ¼Ñ¡Γ ¡á 10
- add bx,ax ; ßßδ½¬á ¡á ß««ΓóÑΓßΓóπεΘπε ºá»¿ß∞
- .
- .
- .
- ; Å«ñ»α«úαá¼¼á ñ½∩ ñѽѡ¿∩ º¡áτÑ¡¿∩ ¡á 10.
- ;
- ; éó«ñ: AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ αáºñѽ¿Γ∞ ¡á 10
- ; éδó«ñ: AX - º¡áτÑ¡¿Ñ, αáºñѽѡ¡«Ñ ¡á 10
- ; DX - «ßΓáΓ«¬ º¡áτÑ¡¿∩, ñѽѡ¡«ú« ¡á 10
- DivideBy10 PROC NEAR
- mov dx,0 ; »«ñú«Γ«ó¿Γ∞ DX:AX, ¬á¬
- ; 32-í¿Γ«ó«Ñ ñѽ¿¼«Ñ
- mov bx,10 ; BX - 16-í¿Γ«óδ⌐ ñѽ¿Γѽ∞
- div dx
- ret
- DivideBy10 ENDP
-
- é óδºδóáεΘÑ⌐ »α«úαá¼¼Ñ »«ñαáºπ¼ÑóáÑΓß∩, τΓ« BX ó »α«µÑñπαÑ
- DivideBy10 ß«σαá¡∩ÑΓß∩, σ«Γ∩ Σá¬Γ¿τÑ߬¿ «Γ πßΓá¡áó½¿óáÑΓß∩ »α«µÑ-
- ñπα«⌐ DivideBy10 ó º¡áτÑ¡¿Ñ 10. é φΓ«¼ ¬«¡¬αÑΓ¡«¼ ß½πτáÑ ßπΘÑßΓ-
- óπÑΓ ¡Ñ߬«½∞¬« 󫺼«ª¡δσ αÑΦÑ¡¿⌐. ìá»α¿¼Ñα, ó ¡áτá½Ñ »α«µÑñπαδ
- DivideBy10 BX ¼«ª¡« ºá¡«ß¿Γ∞ ó ßΓѬ, á »α¿ óδσ«ñÑ ¿º »α«µÑñπαδ -
- ¿ºó½Ñ¬áΓ∞ ¿º ßΓѬá:
-
- .
- .
- .
- mov bx,[TableBase] ; BX π¬áºδóáÑΓ ¡á ¡áτὫ
- ; Γáí½¿µδ
- mov ax,[Element] ; »«½πτ¿Γ∞ φ½Ñ¼Ñ¡Γ
- call DivideBy10 ; αáºñѽ¿Γ∞ φ½Ñ¼Ñ¡Γ ¡á 10
- add bx,ax ; ßßδ½¬á ¡á ß««ΓóÑΓßΓóπεΘπε
- ; ºá»¿ß∞
- .
- .
- .
- ; Å«ñ»α«úαá¼¼á ñ½∩ ñѽѡ¿∩ º¡áτÑ¡¿∩ ¡á 10.
- ;
- ; éó«ñ: AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ αáºñѽ¿Γ∞ ¡á 10
- ; éδó«ñ: AX - º¡áτÑ¡¿Ñ, αáºñѽѡ¡«Ñ ¡á 10
- ; DX - «ßΓáΓ«¬ º¡áτÑ¡¿∩, ñѽѡ¡«ú« ¡á 10
- DivideBy10 PROC NEAR
- push bx ; ß«σαá¡¿Γ∞ BX
- mov dx,0 ; »«ñú«Γ«ó¿Γ∞ DX:AX, ¬á¬
- ; 32-í¿Γ«ó«Ñ ñѽ¿¼«Ñ
- mov bx,10 ; BX - 16-í¿Γ«óδ⌐ ñѽ¿Γѽ∞
- div dx
- pop bx ; ó«ßßΓá¡«ó¿Γ∞ BX
- ret
- DivideBy10 ENDP
-
- ¿½¿ ßñѽáΓ∞ φΓ« ó óδºδóáεΘÑ⌐ »α«úαá¼¼Ñ ñ« (ß«σαá¡Ñ¡¿Ñ) ¿ »«ß½Ñ
- (ó«ßßΓá¡«ó½Ñ¡¿Ñ) ó맮óá »α«µÑñπαδ DivideBy10:
-
- .
- .
- .
- mov bx,[TableBase] ; BX π¬áºδóáÑΓ ¡á ¡áτὫ
- ; Γáí½¿µδ
- mov ax,[Element] ; »«½πτ¿Γ∞ φ½Ñ¼Ñ¡Γ
- push bx ; ß«σαá¡¿Γ∞ BX
- call DivideBy10 ; αáºñѽ¿Γ∞ φ½Ñ¼Ñ¡Γ ¡á 10
- pop bx ; ó«ßßΓá¡«ó¿Γ∞ BX
- add bx,ax ; ßßδ½¬á ¡á ß««ΓóÑΓßΓóπεΘπε
- ; ºá»¿ß∞
- .
- .
- .
- ; Å«ñ»α«úαá¼¼á ñ½∩ ñѽѡ¿∩ º¡áτÑ¡¿∩ ¡á 10.
- ;
- ; éó«ñ: AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ αáºñѽ¿Γ∞ ¡á 10
- ; éδó«ñ: AX - º¡áτÑ¡¿Ñ, αáºñѽѡ¡«Ñ ¡á 10
- ; DX - «ßΓáΓ«¬ º¡áτÑ¡¿∩, ñѽѡ¡«ú« ¡á 10
- DivideBy10 PROC NEAR
- mov dx,0 ; »«ñú«Γ«ó¿Γ∞ DX:AX, ¬á¬
- ; 32-í¿Γ«ó«Ñ ñѽ¿¼«Ñ
- mov bx,10 ; BX - 16-í¿Γ«óδ⌐ ñѽ¿Γѽ∞
- div dx
- ret
- DivideBy10 ENDP
-
- ½¿í« αÑú¿ßΓα BX ¼«ª¡« ºáúαπº¿Γ∞ »«ß½Ñ ó맮óá »α«µÑñπαδ, á ¡Ñ »Ñ-
- αÑñ ¡¿¼:
-
- .
- .
- .
- mov ax,[Element] ; »«½πτ¿Γ∞ φ½Ñ¼Ñ¡Γ
- call DivideBy10 ; αáºñѽ¿Γ∞ φ½Ñ¼Ñ¡Γ ¡á 10
- mov bx,[TableBase] ; BX π¬áºδóáÑΓ ¡á ¡áτὫ
- ; Γáí½¿µδ
- add bx,ax ; ßßδ½¬á ¡á ß««ΓóÑΓßΓóπεΘπε
- ; ºá»¿ß∞
- .
- .
- .
- ; Å«ñ»α«úαá¼¼á ñ½∩ ñѽѡ¿∩ º¡áτÑ¡¿∩ ¡á 10.
- ;
- ; éó«ñ: AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ αáºñѽ¿Γ∞ ¡á 10
- ; éδó«ñ: AX - º¡áτÑ¡¿Ñ, αáºñѽѡ¡«Ñ ¡á 10
- ; DX - «ßΓáΓ«¬ º¡áτÑ¡¿∩, ñѽѡ¡«ú« ¡á 10
- DivideBy10 PROC NEAR
- mov dx,0 ; »«ñú«Γ«ó¿Γ∞ DX:AX, ¬á¬
- ; 32-í¿Γ«ó«Ñ ñѽ¿¼«Ñ
- mov bx,10 ; BX - 16-í¿Γ«óδ⌐ ñѽ¿Γѽ∞
- div dx
- ret
- DivideBy10 ENDP
-
- ÄíΘÑÑ αÑΦÑ¡¿Ñ φΓ«⌐ »α«í½Ñ¼δ ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ óßÑ »«ñ-
- »α«úαá¼¼δ, ¬«Γ«αδÑ ¼«úπΓ ¿º¼Ñ¡∩Γ∞ ß«ñÑন¼«Ñ αÑú¿ßΓα«ó, ß«σαá¡∩½¿
- ¿σ, á ºáΓѼ ó«ßßΓá¡áó½¿ó὿. è ß«ªá½Ñ¡¿ε ñ½∩ φΓ«ú« ΓαÑíπÑΓß∩ ñ«-
- »«½¡¿Γѽ∞¡«Ñ óαѼ∩ ¿ Γá¬¿Ñ «»Ñαᵿ¿ πóѽ¿τ¿óáεΓ «íΩѼ »α«úαá¼¼δ,
- τΓ« »α¿ó«ñ¿Γ ¬ ¡Ñ¬«Γ«αδ¼ »«ΓÑα∩¼ ó »αÑ¿¼πΘÑßΓóáσ »α«úαá¼¼¿α«óá¡¿∩
- ¡á ÇßßѼí½ÑαÑ. äαπú«⌐ »«ñσ«ñ ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ ¬áªñá∩ »«ñ»α«ú-
- αá¼¼á ß«»α«ó«ªñá½áß∞ ¬«¼¼Ñ¡Γáα¿Ñ¼, ó ¬«Γ«α«¼ π¬áºδóáÑΓß∩, ¬á¬¿Ñ
- αÑú¿ßΓαδ ß«σαá¡∩εΓß∩, á ¬á¬¿Ñ αáºαπΦáεΓß∩, ¿ ᬬπαáΓ¡« »α«óÑα∩Γ∞,
- ¬«úñá óδ »«ñαáºπ¼ÑóáÑΓÑ, τΓ« ó »«ñ»α«úαá¼¼Ñ αÑú¿ßΓα ¡Ñ ¿º¼Ñ¡∩ÑΓ-
- ß∩. àΘÑ «ñ¿¡ »«ñσ«ñ ºá¬½ετáÑΓß∩ ó ∩ó¡«¼ ß«σαá¡Ñ¡¿¿ ¡πª¡δσ αÑú¿ßΓ-
- α«ó »α¿ ó맮óÑ »«ñ»α«úαá¼¼.
-
-
-
- ÄΦ¿í¬¿ »α¿ ¿ß»«½∞º«óá¡¿¿ πß½«ó¡δσ »ÑαÑσ«ñ«ó
- -----------------------------------------------------------------
-
- êß»«½∞º«óá¡¿Ñ ó ∩ºδ¬Ñ ÇßßѼí½Ñαá ¿¡ßΓαπ¬µ¿⌐ πß½«ó¡δσ »ÑαÑσ«-
- ñ«ó (JE, JNE, JC, JNC, JA, JB, JG ¿ Γ.ñ) «íÑß»Ñτ¿óáÑΓ í«½∞Φπε
- ú¿í¬«ßΓ∞ ó »α«úαá¼¼¿α«óá¡¿¿, ¡« »α¿ φΓ«¼ Γá¬ªÑ «τÑ¡∞ »α«ßΓ« «Φ¿-
- í¿Γ∞ß∩, óδíαáó ¡ÑóÑα¡δ⌐ »ÑαÑσ«ñ. èα«¼Ñ Γ«ú«, »«ß¬«½∞¬π ó ∩ºδ¬Ñ
- ÇßßѼí½Ñαá á¡á½¿º πß½«ó¿∩ ¿ »ÑαÑσ«ñ ΓαÑíπεΓ »« ¬αá⌐¡Ñ⌐ ¼Ñαπ ñóπσ
- ßΓ᫬ ¿ßσ«ñ¡«ú« ¬«ñá (á ß½«ª¡δσ πß½«ó¡δσ »ÑαÑσ«ñ«ó ¡Ñ߬«½∞¬¿σ
- ßΓ᫬), πß½«ó¡δÑ »ÑαÑσ«ñδ ó ∩ºδ¬Ñ ÇßßѼí½Ñαá ¼Ñ¡ÑÑ «τÑó¿ñ¡δ ¿
- í«½∞ΦÑ ß»«ß«íßΓóπεΓ «Φ¿í¬á¼, τѼ ß««ΓóÑΓßΓóπεΘ¿Ñ «»ÑαáΓ«αδ Åá߬á-
- ½∩ ¿ æ¿.
-
- 1. Äñ¡«⌐ ¿º «íΘ¿σ «Φ¿í«¬ ∩ó½∩ÑΓß∩ ¿ß»«½∞º«óá¡¿Ñ ¿¡ßΓαπ¬µ¿⌐
- JA, JB, JAE ¿½¿ JBE ñ½∩ ßαáó¡Ñ¡¿∩ º¡áτÑ¡¿⌐ ß« º¡á¬«¼
- ¿½¿, ß««ΓóÑΓßΓóÑ¡¡«, ¿¡ßΓαπ¬µ¿⌐ JG, JL, JGE ¿½¿ JLE ñ½∩
- ßαáó¡Ñ¡¿∩ íѺº¡á¬«óδσ º¡áτÑ¡¿⌐.
-
- 2. àΘÑ «ñ¡á «íΘá∩ «Φ¿í¬á ºá¬½ετáÑΓß∩ ó ¿ß»«½∞º«óá¡¿¿, ߬á-
- ªÑ¼, ¿¡ßΓαπ¬µ¿¿ JA Γá¼, úñÑ ¡πª¡« ¿ß»«½∞º«óáΓ∞ JAE. ìπª-
- ¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« íѺ íπ¬óδ E ó ¬«¡µÑ ¿¡ßΓαπ¬µ¿¿ ó
- ßαáó¡Ñ¡¿¿ ¡Ñ πτ¿ΓδóáÑΓß∩ ß½πτá⌐, ¬«úñá ñóá «»Ñαá¡ñá αáó-
- ¡δ.
-
- 3. àΘÑ «ñ¡«⌐ «íΘÑ⌐ «Φ¿í¬«⌐ ∩ó½∩ÑΓß∩ ¿ß»«½∞º«óá¡¿Ñ ¿¡óÑαΓ¿-
- α«óá¡¡«⌐ ½«ú¿¬¿, ¡á»α¿¼Ñα, »α¿¼Ñ¡Ñ¡¿Ñ ¿¡ßΓαπ¬µ¿¿ JS Γá¼,
- úñÑ ¡πª¡« ¿ß»«½∞º«óáΓ∞ JNS.
-
- Äñ¿¡ ¿º »«ñσ«ñ«ó, »«ºó«½∩εΘ¿⌐ ¼¿¡¿¼¿º¿α«óáΓ∞ «Φ¿í¬¿ »α¿ ¿ß-
- »«½∞º«óá¡¿¿ πß½«ó¡δσ »ÑαÑσ«ñ«ó ß«ßΓ«¿Γ ó ¬«¼¼Ñ¡Γ¿α«óá¡¿¿ »ÑαÑσ«-
- ñ«ó ó ß««ΓóÑΓßΓó¿¿ ß «í«º¡áτÑ¡¿∩¼¿, á¡á½«ú¿τ¡δ¼¿ ∩ºδ¬π æ¿. ìá»α¿-
- ¼Ñα:
-
- .
- .
- .
- ;
- ; if ( Length > MaxLength ) (
- ;
- mov ax,[Length]
- cmp ax,[MaxLength]
- jng LengthIsLessThanMax
- .
- .
- .
- jng EndMaxLengthTest
- ;
- ; ) else (
- ;
- LengthIsLessThanMax:
- .
- .
- .
- ;
- ; )
- ;
- EndMaxLengthTest:
- .
- .
- .
-
-
-
-
- ÄΦ¿í¬¿ ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ
- -----------------------------------------------------------------
-
- æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ - φΓ« ßá¼δÑ ¼«Θ¡δÑ ¿ π¡¿¬á½∞¡δÑ ¿¡ßΓ-
- απ¬µ¿¿ ßαÑñ¿ ¡áí«αá ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086. ¥Γ¿ «ß«íÑ¡¡«ß-
- Γ¿ »«α«ªñáεΓ ¡Ñ߬«½∞¬« «»¿ßδóáѼδσ ñá½ÑÑ »α«í½Ñ¼.
-
-
-
- ìÑóÑα¡«Ñ »«¡¿¼á¡¿Ñ αáí«Γδ »αÑΣ¿¬ßá REP
- -----------------------------------------------------------------
-
- æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ «í½áñáεΓ ½εí«»δΓ¡«⌐ «ß«íÑ¡¡«ßΓ∞ε: »«ß½Ñ
- ¿σ óδ»«½¡Ñ¡¿∩ ¿ß»«½∞ºπѼδÑ ¿¼¿ π¬áºáΓѽ¿ ßßδ½áεΓß∩ ¡á áñαÑß, »αÑ-
- óδΦáεΘ¿Ñ ¡á 1 íá⌐Γ (¿½¿ ¡á ñóá íá⌐Γá ó ß½πτáÑ ¿¡ßΓαπ¬µ¿¿ ñ½∩ αá-
- í«Γδ ß« ß½«óἿ) »«ß½Ññ¡¿⌐ «íαáí«Γá¡¡δ⌐ áñαÑß. ìá»α¿¼Ñα, »«ß½Ñ
- óδ»«½¡Ñ¡¿∩ ß½ÑñπεΘÑú« ¬«ñá:
-
- .
- .
- .
- cld ; «ΓßτÑΓ ó ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿
- ; ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
- mov si,0 ; ßßδ½¬á ¡á ß¼ÑΘÑ¡¿Ñ 0
- lodsb ; ßτ¿ΓáΓ∞ íá⌐Γ »« ß¼ÑΘÑ¡¿ε 0
- .
- .
- .
-
- αÑú¿ßΓα SI íπñÑΓ ß«ñÑαªáΓ∞ ¡Ñ 0, á 1. ¥Γ« ¿¼ÑÑΓ ß¼δß½, »«ß¬«½∞¬π
- ó ß½ÑñπεΘÑ⌐ ¿¡ßΓαπ¬µ¿¿ LODSB óδ, óÑα«∩Γ¡«, ºáσ«Γ¿ΓÑ «íαáΓ¿Γ∞ß∩ ¬
- áñαÑßπ 1, á ó ÑΘÑ «ñ¡«⌐ - ¬ áñαÑßπ 2. ì« »α¿ »«óΓ«αÑ¡¿¿ ßΓ᫬«óδσ
- ¿¡ßΓαπ¬µ¿⌐ φΓ« ¼«ªÑΓ óδºóáΓ∞ ¡Ñ¬«Γ«απε »πΓá¡¿µπ, «ß«íÑ¡¡« »α¿
- ¿ß»«½∞º«óá¡¿¿ REP SCAS ¿ REP CMPS. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ
- »α«úαá¼¼δ:
-
- .
- .
- .
- cld ; «ΓßτÑΓ ó ßΓ᫬«ó«⌐
- ; ¿¡ßΓαπ¬µ¿¿ ó »α∩¼«¼
- ; ¡á»αáó½Ñ¡¿¿
- les di,[bp+ScanString] ; ES:DI π¬áºδóáεΓ ¡á
- ; »α«ß¼áΓα¿óáѼπε ßΓ᫬π
- mov cx,MAX_STRING_LEN ; »α«óÑα¿Γ∞ ñ« ßἫ⌐
- ; ñ½¿¡¡«⌐ ßΓ᫬¿
- mov al,0 ; »«¿ß¬ ºáóÑαΦáεΘÑú« ¡π½∩
- repne scasb ; óδ»«½¡¿Γ∞ »«¿ß¬
- .
- .
- .
-
- ÅαÑñ»«½«ª¿¼, º¡áτÑ¡¿Ñ αÑú¿ßΓαá ES αáó¡« 2000h, DI = 0, á »á-
- ¼∩Γ∞, ¡áτ¿¡áεΘá∩ß∩ »« áñαÑßπ 2000:0000 ß«ñÑαª¿Γ º¡áτÑ¡¿∩:
-
- 41h 61h 72h 64h 00h
-
- Å«ß½Ñ óδ»«½¡Ñ¡¿∩ φΓ«ú« ¬«ñá αÑú¿ßΓα DI íπñÑΓ ß«ñÑαªáΓ∞ º¡á-
- τÑ¡¿Ñ 5 - ß¼ÑΘÑ¡¿Ñ íá⌐Γá »«ß½Ñ Γ«ú« íá⌐Γá, ó ¬«Γ«α«¼ ¡á⌐ñÑ¡« º¡á-
- τÑ¡¿Ñ 0. ùΓ«íδ ó«ºóαáΓ¿Γ∞ π¬áºáΓѽ∞ ¡á »«ß½Ññ¡¿⌐ ß¿¼ó«½ ßΓ᫬¿,
- »αÑñδñπΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ ñ«½ªÑ¡ ¿¼ÑΓ∞ ß½ÑñπεΘ¿⌐ ó¿ñ:
-
- .
- .
- .
- cld ; «ΓßτÑΓ ó ßΓ᫬«ó«⌐
- ; ¿¡ßΓαπ¬µ¿¿ ó »α∩¼«¼
- ; ¡á»αáó½Ñ¡¿¿
- les di,[bp+ScanString] ; ES:DI π¬áºδóáεΓ ¡á
- ; »α«ß¼áΓα¿óáѼπε ßΓ᫬π
- mov cx,MAX_STRING_LEN ; »α«óÑα¿Γ∞ ñ« ßἫ⌐
- ; ñ½¿¡¡«⌐ ßΓ᫬¿
- mov al,0 ; »«¿ß¬ ºáóÑαΦáεΘÑú« ¡π½∩
- repne scasb ; óδ»«½¡¿Γ∞ »«¿ß¬
- jne NoMatch ; «Φ¿í¬á: ºáóÑαΦáεΘ¿⌐ 0
- ; ¡Ñ ¡á⌐ñÑ¡
- dec di ; ßßδ½¬á «íαáΓ¡« ¡á 0
- dec di ; ccδ½¬á «íαáΓ¡« ¡á
- ; »«ß½Ññ¡¿⌐ ß¿¼ó«½
- ret
- NoMatch:
- mov di,0 ; ó«ºóαáΓ¿Γ∞ ¡π½Ñó«⌐
- ; π¬áºáΓѽ∞
- mov es,di
- ret
- .
- .
- .
-
- ìπª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« ¬«úñá Σ½áú ¡á»αáó½Ñ¡¿∩ πßΓá¡«ó½Ñ¡
- Γᬿ¼ «íαẫ¼, τΓ« ó ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ íπñÑΓ óδ»«½¡∩Γ∞ß∩ «í-
- αáΓ¡δ⌐ «ΓßτÑΓ, αÑú¿ßΓα DI íπñÑΓ π¬áºδóáΓ∞ ¡á »αÑñδñπΘ¿⌐ íá⌐Γ, á
- ¡Ñ ¡á »«ß½ÑñπεΘ¿⌐ (»«ß½Ñ »«ß½Ññ¡Ñú« ¡á⌐ñÑ¡¡«ú« ß¿¼ó«½á).
-
- ǡὫú¿τ¡á∩ »πΓá¡¿µá ¼«ªÑΓ »α«¿º«⌐Γ¿, ¬«úñá »α¿ ¿ß»«½∞º«óá-
- ¡¿¿ ¿¡ßΓαπ¬µ¿⌐ REP SCAS ¿ REP CMPS αÑú¿ßΓα CX π¼Ñ¡∞ΦáÑΓß∩ ¡á Ññ¿-
- ¡¿µπ í«½∞ΦÑ, τѼ φΓ«ú« ¼«ª¡« «ª¿ñáΓ∞. ç¡áτÑ¡¿Ñ αÑú¿ßΓαá CX π¼Ñ¡∞-
- ΦáÑΓß∩ ¡Ñ Γ«½∞¬« ñ½∩ ¬áªñ«ú« íá⌐Γá, πñ«ó½ÑΓó«α∩εΘÑú« πß½«ó¿ε
- "»«óΓ«α∩Γ∞, »«¬á αáó¡« (¿½¿ ¡Ñ αáó¡«)", ¡« ¿ ÑΘÑ ¡á 1 ñ½∩ Γ«ú«
- íá⌐Γá, ñ½∩ ¬«Γ«α«ú« πß½«ó¿Ñ ¡Ñ óδ»«½¡Ñ¡« (τΓ« »α¿ó«ñ¿Γ ¬ »αѬαá-
- ΘÑ¡¿ε óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿).
-
- ìá»α¿¼Ñα, Ñß½¿ ó »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ íá⌐Γ 2000:0000 ß«ñÑনΓ
- 0, Γ« »«ß½Ñ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿ αÑú¿ßΓα CX ß«ñÑαªá½ íδ º¡áτÑ¡¿Ñ
- MAX_STRING_LEN-1, ñáªÑ Ñß½¿ ¡¿ «ñ¿¡ ¡Ñ¡π½Ñó«⌐ ß¿¼ó«½ ¡Ñ íδ½
- ¡á⌐ñÑ¡. æ πτÑΓ«¼ óßÑú« ߬áºá¡¡«ú« »«ñ»α«úαá¼¼á ñ½∩ »«ñßτÑΓá τ¿ß½á
- ß¿¼ó«½«ó ó ßΓα«¬Ñ ñ«½ª¡á ¿¼ÑΓ∞ ß½ÑñπεΘ¿⌐ ó¿ñ:
-
- ; 髺óαáΘáÑΓ ñ½¿¡π ó íá⌐Γáσ ßΓ᫬¿, ºáóÑαΦáεΘÑ⌐ß∩ ¡π½Ñ¼.
- ; éó«ñ: ES:DI - ¡áτὫ ßΓ᫬¿
- ; éδó«ñ: AX - ñ½¿¡á ßΓ᫬¿, ¿ß¬½ετá∩ ºáóÑαΦáεΘ¿⌐ 0
- ; ES:DI - π¬áºδóáεΓ ¡á »«ß½Ññ¡¿⌐ íá⌐Γ ßΓ᫬¿ ¿½¿
- ; ß«ñÑαªáΓ 0000:0000, Ñß½¿ ºáóÑαΦáεΘ¿⌐ 0 ¡Ñ íδ½
- ; ¡á⌐ñÑ¡
- ;
- StringLength PROC NEAR
- cld ; «ΓßτÑΓ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
- push cx ; ß«σαá¡¿Γ∞ º¡áτÑ¡¿Ñ CX
- mov cx,0FFFFh ; ¼á¬ß¿¼á½∞¡á∩ ñ½¿¡á »«¿ß¬á
- mov al,0 ; ºáóÑαΦáεΘ¿⌐ íá⌐Γ, ñ« ¬«Γ«α«ú«
- ; ¡πª¡« óδ»«½¡∩Γ∞ »«¿ß¬
- repne scasb ; »«¿ß¬ ºáóÑαΦáεΘÑú« ¡π½∩
- jne StringLengthError ; «Φ¿í¬á, Ñß½¿ ¬«¡Ñµ ßΓ᫬¿
- ; ¡Ñ ¡á⌐ñÑ¡
- mov ax,0FFFFh ; ¼á¬ß¿¼á½∞¡á∩ ñ½¿¡á
- ; »α«ß¼áΓα¿óáѼ«⌐ ßΓ᫬¿
- sub ax,cx ; »«ß¼«ΓαÑΓ∞, ߬«½∞¬« íá⌐Γ
- ; í佫 »«ñßτ¿Γá¡«
- dec ax ; ¡Ñ ßτ¿ΓáΓ∞ ºáóÑαΦáεΘ¿⌐ 0
- dec di ; »ÑαѼÑßΓ¿Γ∞ π¬áºáΓѽ∞ «íαáΓ¡«
- ; ¡á ºáóÑαΦáεΘ¿⌐ 0
- dec di ; »ÑαѼÑßΓ¿Γ∞ π¬áºáΓѽ∞ ¡á
- ; »«ß½Ññ¡¿⌐ ß¿¼ó«½
- jmp short StringLengthEnd
- StringLenghtError:
- mov di,0 ; ó«ºóαáΓ¿Γ∞ ¡π½Ñó«⌐ π¬áºáΓѽ∞
- mov es,di
- StringLengthEnd:
- pop cx ; ó«ßßΓá¡«ó¿Γ∞ ¿ßσ«ñ¡«Ñ º¡áτÑ¡¿Ñ CX
- ret
- StringLength ENDP
-
- äαπúá∩ »«ΓÑ¡µ¿á½∞¡á∩ »α«í½Ñ¼á, 󫺡¿¬áεΘá∩ ¿º-ºá Γ«ú«, τΓ«
- αÑú¿ßΓα CX π¬áºδóáÑΓ ß« ß¼ÑΘÑ¡¿Ñ¼ ¡á «ñ¿¡ íá⌐Γ »«ß½Ñ óδ»«½¡Ñ¡¿∩
- ¿¡ßΓαπ¬µ¿⌐ REP SCAS ¿½¿ REP CMPS, ß«ßΓ«¿Γ ó Γ«¼, º¡áτÑ¡¿Ñ CX ó
- ¬«¡µÑ ßαáó¡Ñ¡¿∩ ¼«ªÑΓ íδΓ∞ ¡π½Ñóδ¼, ñáªÑ Ñß½¿ πß½«ó¿Ñ ºáóÑαΦÑ¡¿∩
- ¡Ñ «í¡áαπªÑ¡«. æ½ÑñπεΘ¿⌐ ¬«ñ ¡Ñ íπñÑΓ ¬«ααÑ¬Γ¡« «»αÑñѽ∩Γ∞, ß«ó-
- »áñáεΓ ½¿ ñóá ¼áßß¿óá, Γᬠ¬á¬ αÑú¿ßΓα CX »α¿¼ÑΓ º¡áτÑ¡¿Ñ 0 »α¿
- ßαáó¡Ñ¡¿¿ ñóπσ ¡Ñß«ó»áñáεΘ¿σ ¼áßß¿ó«ó, ¬«Γ«αδÑ «Γ½¿τáεΓß∩ Γ«½∞¬«
- »«ß½Ññ¡¿¼ íá⌐Γ«¼:
-
- .
- .
- .
- repz cmpsb
- jcxz ArraysAreTheSame
- .
- .
- .
-
- è«ααÑ¬Γ¡δ¼¿ ¿¡ßΓαπ¬µ¿∩¼¿, »α«óÑα∩εΘ¿¼¿ αáóÑ¡ßΓó« ¼áßß¿ó«ó,
- íπñπΓ ß½ÑñπεΘ¿Ñ:
-
- .
- .
- .
- repz cmpsb
- jz ArraysAreTheSame
- .
- .
- .
-
- è«α«τÑ ú«ó«α∩, αÑú¿ßΓα CX ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ¬á¬
- ßτÑΓτ¿¬ íá⌐Γ, »α«ß¼áΓα¿óáѼδσ ó ¿¡ßΓαπ¬µ¿∩σ REP SCAS ¿ REP CMPS,
- á ¡Ñ ¬á¬ π¬áºáΓѽ∞ Γ«ú«, τΓ« »α«ß¼áΓα¿óáѼδÑ ¿½¿ ßαáó¡¿óáѼδÑ
- ñá¡¡δÑ «¬áºá½¿ß∞ αáó¡δ ¿½¿ ¡Ñ αáó¡δ.
-
- àß½¿ »α¿ αáí«ΓÑ ó óáΦ¿σ »α«úαá¼¼áσ »«óΓ«α∩Ѽδσ ßΓ᫬«óδσ
- ¿¡ßΓαπ¬µ¿⌐ óδ óßΓαÑΓ¿ΓÑ ºáΓαπñ¡Ñ¡¿∩, Γ« ½πτΦÑ óßÑú« íπñÑΓ ß »«-
- ¼«Θ∞ε ¬áαá¡ñáΦá ¿ íπ¼áú¿ ¿½¿ «Γ½áñτ¿¬á «Γß½Ññ¿Γ∞ »« Φáúá¼, τΓ«
- ñѽáÑΓ óáΦá »«óΓ«α∩εΘá∩ß∩ ßΓ᫬«óá∩ ¿¡ßΓαπ¬µ¿∩.
-
-
-
- ìπ½Ñó«Ñ ß«ñÑন¼«Ñ αÑú¿ßΓαá CX ¿ αáí«Γá ß µÑ½δ¼ ßÑú¼Ñ¡Γ«¼
- -----------------------------------------------------------------
-
- Åα¿ óδ»«½¡Ñ¡¿¿ ½εí«⌐ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ ß ß«ñÑন¼δ¼ αÑ-
- ú¿ßΓαá CX, αáó¡δ¼ 0, ¡Ñ íπñÑΓ óδ»«½¡∩Γ∞ß∩ ¡¿¬á¬¿σ Σπ¡¬µ¿⌐. ¥Γ«
- ¼«ªÑΓ «¬áºáΓ∞ß∩ πñ«í¡δ¼, Γᬠ¬á¬ »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ ßΓ᫬«ó«⌐ ¿¡ß-
- Γαπ¬µ¿¿ ¡Ñ ¡πª¡« ñѽáΓ∞ »α«óÑα¬π ¡á 0. æ ñαπú«⌐ ßΓ«α«¡δ, ¡ÑΓ ß»«-
- ß«íá »«½πτ¿Γ∞ ñ«ßΓπ» ¬ ¬áªñ«¼π íá⌐Γπ ßÑú¼Ñ¡Γá ß »«¼«Θ∞ε íá⌐Γ«ó«⌐
- ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿. ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ ¬«ñá »α«ß-
- ¼áΓα¿óáÑΓß∩ ßÑú¼Ñ¡Γ, ºáñá¡¡δ⌐ αÑú¿ßΓα«¼ ES, ¿ ¿ΘÑΓß∩ »Ñαó«Ñ óσ«ª-
- ñÑ¡¿Ñ íπ¬óδ A:
-
- .
- .
- .
- cld ; »«¿ß¬ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
- sub di,di ; ¡áτáΓ∞ »« ß¼ÑΘÑ¡¿ε 0
- mov al,'A' ; ñ« «í¡áαπªÑ¡¿∩ íπ¬óδ 'A'
- mov cx,0FFFFh ; ß¡áτá½á »α«óÑα¿Γ∞ »ÑαóδÑ 64è
- repne SCASb ; »α«ß¼«ΓαÑΓ∞ »ÑαóδÑ 64è-1 íá⌐Γ
- je AFound ; ¡á⌐Γ¿ A
- scasb ; ÑΘÑ ¡Ñ ¡á⌐ñÑ¡á: »α«ß¼«ΓαÑΓ∞
- ; »«ß½Ññ¡¿⌐ íá⌐Γ
- je AFound ; ¡á⌐Γ¿ ÑÑ ó »«ß½Ññ¡Ñ¼ íá⌐ΓÑ
- . ; ó ñá¡¡«¼ ßÑú¼Ñ¡ΓÑ ¡ÑΓ íπ¬óδ 'A'
- .
- .
- AFound: ; DI - 1 π¬áºδóáÑΓ ¡á íπ¬óπ 'A'
- .
- .
- .
-
- é ¿ß»«½∞º«óá¡¿¿ »α¿ «ΓßτÑΓÑ ¡π½Ñóδσ º¡áτÑ¡¿⌐ αÑú¿ßΓαá CX ó
- ¡áí«αÑ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086 ¿¼ÑÑΓß∩ "¡Ñß¿¼¼ÑΓα¿∩". é Γ«
- óαѼ∩, ¬á¬ »«óΓ«α∩εΘá∩ß∩ ßΓ᫬«óá∩ ¿¡ßΓαπ¬µ¿∩ »α¿ ¡π½Ñó«¼ º¡áτÑ-
- ¡¿¿ CX ó««íΘÑ ¡Ñ óδ»«½¡∩ÑΓ ¡¿¬á¬¿σ «»Ñαᵿ⌐, ¿¡ßΓαπ¬µ¿∩ LOOP »α¿
- º¡áτÑ¡¿¿ CX, αáó¡δ¼ 0, óδ»«½¡∩ÑΓß∩, π¼Ñ¡∞Φá∩ CX ñ« º¡áτÑ¡¿∩
- 0FFFFh ¿ «ßπΘÑßΓó½∩∩ »ÑαÑσ«ñ ¡á áñαÑß µ¿¬½á. ¥Γ« «º¡áτáÑΓ, τΓ« ó
- «ñ¡«¼ µ¿¬½Ñ ¼«ª¡« «íαáí«ΓáΓ∞ óßÑ 64è. ÅαÑñδñπΘ¿⌐ »α¿¼Ñα, úñÑ ß«-
- ñÑন¼«Ñ ßÑú¼Ñ¡Γá, ºáñá¡¡«ú« αÑú¿ßΓα«¼ CX, »α«ß¼áΓα¿óáÑΓß∩ ¡á
- »αÑñ¼ÑΓ ¡á½¿τ¿∩ íπ¬óδ A, ¼«ª¡« αÑ὿º«óáΓ∞ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿
- LOOP ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .
- .
- .
- cld ; »α«ß¼«Γα ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
- sub di,di ; ¡áτáΓ∞ ß« ß¼ÑΘÑ¡¿∩ 0
- mov al,'A' ;
- sub cx,cx ; »«¿ß¬ ó 64è
- ASearchLoop:
- scasb ; »α«óÑα¿Γ∞ ß½ÑñπεΘ¿⌐ íá⌐Γ
- je AFound ; φΓ« íπ¬óá 'A'
- loop ASearchLoop ; ó φΓ«¼ ßÑú¼Ñ¡ΓÑ ¡ÑΓ íπ¬óδ 'A'
- .
- .
- .
- AFound: ; ¡á íπ¬óπ 'A' π¬áºδóáÑΓ DI - 1
- .
- .
- .
-
- æ ñαπú«⌐ ßΓ«α«¡δ, ß½πτá⌐, ¬«úñá CX = 0, ΓαÑíπÑΓ ß»Ñµ¿á½∞¡«⌐
- »α«óÑન »α¿ ¿ß»«½∞º«óá¡¿¿ ¿¡ßΓαπ¬µ¿¿ LOOP (ó »α«Γ¿ó¡«¼ ß½πτáÑ
- íπñπΓ «íαáí«Γá¡δ 64è ¬«ñá ß ó«º¼«ª¡« ¬áΓáßΓα«Σ¿τÑ߬¿¼¿ ñ½∩ »α«ú-
- αá¼¼δ »«ß½ÑñßΓó¿∩¼¿). é Γᬿσ ß½πτá∩σ »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ¿¡ßΓ-
- απ¬µ¿ε JCXZ:
-
- ; Å«ñ»α«úαá¼¼á ñ½∩ ºá»«½¡Ñ¡¿∩ 64è - 1 íá⌐Γ ºáñá¡¡δ¼ º¡áτÑ¡¿Ñ¼.
- ; éó«ñ: AL - ºáñá¡¡«Ñ º¡áτÑ¡¿Ñ-ºá»«½¡¿Γѽ∞
- ; CX - ¬«½¿τÑßΓó« ºá»«½¡∩Ѽδσ íá⌐Γ
- ; DS:BX - ¡áτá½∞¡δ⌐ áñαÑß ºá»«½¡Ñ¡¿∩
- ; ÉÑú¿ßΓαδ BX ¿ CX ¿º¼Ñ¡∩εΓß∩.
- ;
- FillBytes PROC NEAR
- jcxz FillBytesEnd ; Ñß½¿ τ¿ß½« ºá»«½¡∩Ѽδσ íá⌐Γ
- ; αáó¡« 0, óδ»«½¡¿Γ∞
- FillBytesLoop:
- mov [bx],al ; ºá»«½¡¿Γ∞ íá⌐Γ
- inc bx ; ßßδ½¬á ¡á ß½ÑñπεΘ¿⌐ íá⌐Γ
- loop FillBytesLoop ; óδ»«½¡¿Γ∞ ñ½∩ ºáñá¡¡«ú«
- ; τ¿ß½á íá⌐Γ
- FillBytesEnd:
- ret
- FillBytes ENDP
-
- üѺ ¿¡ßΓαπ¬µ¿¿ JCXZ, ¬«úñá º¡áτÑ¡¿Ñ CX αáó¡« 0, »α«µÑñπαá
- FillBytes ºá»«½¡¿½á íδ óÑß∞ ßÑú¼Ñ¡Γ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα
- ES, º¡áτÑ¡¿Ñ¼ ó αÑú¿ßΓαÑ AL, ó¼ÑßΓ« Γ«ú«, τΓ«íδ «ßΓáó¿Γ∞ »á¼∩Γ∞
- íѺ ¿º¼Ñ¡Ñ¡¿⌐.
-
-
- êß»«½∞º«óá¡¿Ñ ¡Ñ¬«ααÑ¬Γ¡« ºáñá¡¡«ú« Σ½áúá ¡á»αáó½Ñ¡¿∩
- -----------------------------------------------------------------
-
- Åα¿ óδ»«½¡Ñ¡¿¿ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ ó ºáó¿ß¿¼«ßΓ¿ «Γ ß«ßΓ«∩-
- ¡¿∩ Σ½áúá ¡á»αáó½Ñ¡¿∩ ß««ΓóÑΓßΓóπεΘ¿Ñ αÑú¿ßΓαδ-π¬áºáΓѽ¿ (¿½¿ αÑ-
- ú¿ßΓα) SI, DI ¿½¿ «íá αÑú¿ßΓαá πóѽ¿τ¿óáεΓß∩ ¿½¿ π¼Ñ¡∞ΦáεΓß∩.
-
- ö½áú ¡á»αáó½Ñ¡¿∩ ¼«ª¡« «τ¿ßΓ¿Γ∞ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ CLD,
- »α¿ φΓ«¼ π¬áºáΓѽ¿ íπñπΓ πóѽ¿τ¿óáΓ∞ß∩ («ΓßτÑΓ ó »α∩¼«¼ ¡á»αáó½Ñ-
- ¡¿¿), ¿½¿ πßΓá¡«ó¿Γ∞ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ STD, »α¿ φΓ«¼ π¬áºáΓѽ¿
- íπñπΓ π¼Ñ¡∞ΦáΓ∞ß∩ («ΓßτÑΓ ó «íαáΓ¡«¼ ¡á»αáó½Ñ¡¿¿). üπñπτ¿ «τ¿ΘÑ¡-
- ¡δ¼ ¿½¿ πßΓá¡«ó½Ñ¡¡δ¼, Σ½áú ¡á»αáó½Ñ¡¿∩ «ßΓáÑΓß∩ ó Γᬫ¼ ß«ßΓ«∩-
- ¡¿¿ ñ« óδ»«½¡Ñ¡¿∩ ß½ÑñπεΘÑ⌐ ¿¡ßΓαπ¬µ¿¿ CLD ¿½¿ STD ¿½¿ ñ« ¿ºó½Ñ-
- τÑ¡¿∩ Σ½áú«ó ¿º ßΓѬá ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ POPF ¿½¿ IRET. ò«Γ∩
- «τÑ¡∞ πñ«í¡« íδóáÑΓ πßΓá¡«ó¿Γ∞ «ñ¿¡ αẠó »α«úαá¼¼Ñ Σ½áú ¡á»αáó-
- ½Ñ¡¿∩, á ºáΓѼ óδ»«½¡∩Γ∞ ßÑα¿ε ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐, αáí«ΓáεΘ¿σ ó
- «ñ¡«¼ ¡á»αáó½Ñ¡¿¿, ¿º-ºá ¡Ñú« ¼«úπΓ ó«º¡¿¬áΓ∞ Γá¬ªÑ Γαπñ¡« «í¡á-
- απª¿óáѼδÑ «Φ¿í¬¿, τΓ« »α¿ó«ñ¿Γ ¬ ¡Ñ«ª¿ñá¡¡«¼π »«óÑñÑ¡¿ε ßΓ᫬«-
- óδσ ¿¡ßΓαπ¬µ¿⌐, ó ºáó¿ß¿¼«ßΓ¿ «Γ ¬«ñá, ¬«Γ«αδ⌐ óδ»«½¡∩½ß∩ ¡á¼¡«ú«
- αá¡∞ΦÑ.
-
- Å«τѼπ φΓ« »α«¿ßσ«ñ¿Γ? é í«½∞Φ¿¡ßΓóÑ »α«úαá¼¼ Σ½áú ¡á»αáó-
- ½Ñ¡¿∩ »«τΓ¿ óßÑúñá ßíαáßδóáÑΓß∩, »«ß¬«½∞¬π «ΓßτÑΓ ó »α∩¼«¼ ¡á»-
- αáó½Ñ¡¿¿ ¿¡Γπ¿Γ¿ó¡« »α«ΘÑ, τѼ «ΓßτÑΓ ó «íαáΓ¡«¼ ¡á»αáó½Ñ¡¿¿, ¿
- αáí«ΓáÑΓ «¡ ó« ¼¡«ú¿σ ß½πτá∩σ »αѬαáß¡«. Äñ¡á¬«, ¿¼ÑεΓß∩ «Γñѽ∞-
- ¡δÑ ß¿Γπᵿ¿, ¬«úñá ¼«ª¡« ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« «ΓßτÑΓ ó «íαáΓ¡«¼
- ¡á»αáó½Ñ¡¿¿. àß½¿ óδ »« »α¿óδτ¬Ñ íπñÑΓÑ »«ñαáºπ¼ÑóáΓ∞, τΓ« Σ½áú
- ¡á»αáó½Ñ¡¿∩ óßÑúñá «τ¿ΘÑ¡, ¡« ºáíπñÑΓÑ «τ¿ßΓ¿Γ∞ Σ½áú »«ß½Ñ «ñ¡«⌐
- (¿½¿ ¡Ñ߬«½∞¬¿σ) ¿º »α«µÑñπα, úñÑ Σ½áú ¡á»αáó½Ñ¡¿∩ πßΓá¡áó½¿óáÑΓ-
- ß∩, Γ« ó αѺπ½∞ΓáΓÑ Γá τáßΓ∞ óáΦÑ⌐ »α«úαá¼¼δ, úñÑ «ΓßτÑΓ óÑñÑΓß∩
- ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿, íπñÑΓ αáí«ΓáΓ∞ »αѬαáß¡«, ñ« Γ«ú« ¼«¼Ñ¡Γá,
- »«¬á ¡Ñ óδ»«½¡¿Γß∩ »α«µÑñπαá, πßΓá¡áó½¿óáεΘá∩ Σ½áú ¡á»αáó½Ñ¡¿∩.
-
- éδσ«ñ «τÑó¿ñÑ¡. ÅÑαÑñ ¿ß»«½∞º«ó᡿Ѽ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐,
- Ñß½¿ ÑßΓ∞ ñáªÑ ¡Ñí«½∞Φá∩ óÑα«∩Γ¡«ßΓ∞ Γ«ú«, τΓ« Σ½áú ¡á»αáó½Ñ¡¿∩
- ¡Ñ πßΓá¡«ó½Ñ¡ ñ«½ª¡δ¼ «íαẫ¼, Ñú« óßÑúñá ¡πª¡« πßΓá¡áó½¿óáΓ∞ ó
- ¡πª¡«Ñ ß«ßΓ«∩¡¿Ñ. é «íΘѼ ß½πτáÑ σ«α«Φ¿¼ ßΓ¿½Ñ¼ ∩ó½∩ÑΓß∩ πßΓá¡«ó-
- ¬á Σ½áúá ó ß««ΓóÑΓßΓóπεΘÑÑ º¡áτÑ¡¿Ñ ó ¡áτá½Ñ ½εí«⌐ »α«µÑñπαδ, úñÑ
- ¿ß»«½∞ºπεΓß∩ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿.
-
-
-
- ìÑ»αáó¿½∞¡«Ñ ¿ß»«½∞º«óá¡¿Ñ »«óΓ«α∩Ѽ«ú« ßαáó¡Ñ¡¿∩ ßΓ᫬
- -----------------------------------------------------------------
-
- ê¡ßΓαπ¬µ¿∩ CMPS ßαáó¡¿óáÑΓ ñóÑ «í½áßΓ¿ »á¼∩Γ¿, ó Γ« óαѼ∩,
- ¬á¬ ¿¡ßΓαπ¬µ¿∩ SCAS ßαáó¡¿óáÑΓ á¬¬π¼π½∩Γ«α «í½áßΓ¿ »á¼∩Γ¿. àß½¿
- »ÑαÑñ ¿¡ßΓαπ¬µ¿Ñ⌐ ß½ÑñπÑΓ »αÑΣ¿¬ß REPE, Γ« ¬áªñá∩ ¿º φΓ¿σ ¿¡ßΓ-
- απ¬µ¿⌐ ¼«ªÑΓ óδ»«½¡∩Γ∞ ßαáó¡Ñ¡¿Ñ, »«¬á ¡Ñ ßΓá¡ÑΓ αáó¡δ¼ ß«ñÑন-
- ¼«Ñ αÑú¿ßΓαá CX ¿½¿ ¡Ñ «í¡áαπª¿Γß∩ ¡Ñß«ó»áñÑ¡¿Ñ. è ß«ªá½Ñ¡¿ε,
- ½Ñú¬« ¼«ª¡« ß»πΓáΓ∞, ¬á¬«⌐ ¿º »αÑΣ¿¬ß«ó »«óΓ«αÑ¡¿∩ REP τΓ« ñѽá-
- ÑΓ.
-
- ò«α«Φ¿⌐ ß»«ß«í ºá»«¼¡¿Γ∞ Σπ¡¬µ¿ε ñá¡¡«ú« »αÑΣ¿¬ßá REP ß«ßΓ«-
- ¿Γ ó ¼δ߽ѡ¡«¼ ó¬½ετÑ¡¿¿ »«ß½Ñ REP (»«óΓ«α¿Γ∞) ß½«óá "»«¬á". Åα¿
- φΓ«¼, ¡á»α¿¼Ñα, REPE »α¿¡¿¼áÑΓ ó¿ñ "»«óΓ«α∩Γ∞, »«¬á E" (Γ« ÑßΓ∞
- "»«óΓ«α∩Γ∞, »«¬á αáó¡«"), REPNE - "»«óΓ«α∩Γ∞, »«¬á ¡Ñ αáó¡«" ¿
- Γ.ñ.
-
-
-
- Åα«úαá¼¼¿ßΓ ºáíδóáÑΓ «í ¿ß»«½∞º«óá¡¿¿ ßÑú¼Ñ¡Γ«ó »« π¼«½τá¡¿ε
- -----------------------------------------------------------------
-
- é ¬áªñ«⌐ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ ¿ß»«½∞ºπÑΓß∩ (Ñß½¿ «¡ ¿¼ÑÑΓß∩)
- ¿ßσ«ñ¡δ⌐ ßÑú¼Ñ¡Γ (¿ßΓ«τ¡¿¬), ºáñá¡¡δ⌐ αÑú¿ßΓα«¼ DS, ¿ µÑ½Ñó«⌐
- ßÑú¼Ñ¡Γ (»α¿Ñ¼¡¿¬), ºáñá¡¡δ⌐ αÑú¿ßΓα«¼ ES. Äí φΓ«¼ ½Ñú¬« ºáíδΓ∞ ¿
- »«»δΓáΓ∞ß∩ »α¿¼Ñ¡¿Γ∞, ߬áªÑ¼, ¿¡ßΓαπ¬µ¿ε STOSB ¬ ßÑú¼Ñ¡Γπ ñá¡¡δσ,
- »«ß¬«½∞¬π ¿¼Ñ¡¡« Γá¼ «íδτ¡« ¡áσ«ñ∩Γß∩ óßÑ ñá¡¡δÑ, ¬«Γ«αδÑ óδ «í-
- αáíáΓδóáÑΓÑ ß »«¼«Θ∞ε ¡ÑßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐. ¡« ½Ñú¬« ¡á»¿-
- ßáΓ∞ ß½ÑñπεΘÑÑ:
-
- .
- .
- .
- cld ; «ΓßτÑΓ »α¿ »«¿ß¬Ñ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
- mov al,0
- mov cx,80 ; ñ½¿¡á íπΣÑαá
- repe scasb ; ¡á⌐Γ¿ »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐ ß¿¼ó«½, Ñß½¿ «¡
-
- ; ¿¼ÑÑΓß∩
- jz AllZero ; ¡ÑΓ ¡Ñ¡π½Ñó«ú« ß¿¼ó«½á
- dec di ; ßßδ½¬á «íαáΓ¡« ¡á »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐
- ; ß¿¼ó«½
- mov al,[dl] ; »«½πτ¿Γ∞ »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐ ß¿¼ó«½
- .
- .
- .
- AllZero:
- .
- .
- .
-
- Åα«í½Ñ¼á ºñÑß∞ ß«ßΓ«¿Γ ó Γ«¼, τΓ« Ñß½¿ DS ¿ ES ¡Ñ ß«ó»áñáεΓ,
- »«ß½Ññ¡∩∩ ¿¡ßΓαπ¬µ¿∩ MOV ¡Ñ íπñÑΓ ºáúαπªáΓ∞ ó AL ¬«ααÑ¬Γ¡«Ñ º¡á-
- τÑ¡¿Ñ, Γᬠ¬á¬ ¿¡ßΓαπ¬µ¿∩ STOSB αáí«ΓáÑΓ «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá
- ES, á MOV - «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá DS. é »αáó¿½∞¡«¼ ¬«ñÑ ó ¿¡ßΓ-
- απ¬µ¿¿ MOV ß½Ññ«óὫ íδ ¿ß»«½∞º«óáΓ∞ »αÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩ ßÑú-
- ¼Ñ¡Γá (»«∩ߡѡ¿Ñ φΓ«ú« »α¿ó«ñ¿Γß∩ ó â½áóÑ 9).
-
- .
- .
- .
- cld ; «ΓßτÑΓ »α¿ »«¿ß¬Ñ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
- mov al,0
- mov cx,80 ; ñ½¿¡á íπΣÑαá
- repe scasb ; ¡á⌐Γ¿ »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐ ß¿¼ó«½, Ñß½¿ «¡
- ; ¿¼ÑÑΓß∩
- jz AllZero ; ¡ÑΓ ¡Ñ¡π½Ñó«ú« ß¿¼ó«½á
- dec di ; ßßδ½¬á «íαáΓ¡« ¡á »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐
- ; ß¿¼ó«½
- mov al,es:[dl] ; »«½πτ¿Γ∞ »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐ ß¿¼ó«½
- ; (¿º ES!)
- .
- .
- .
- AllZero:
- .
- .
- .
-
- ìπª¡« Γá¬ªÑ »«¼¡¿Γ∞ « Γ«¼, τΓ« σ«Γ∩ ¼«ª¡« »ÑαÑ«»αÑñѽ¿Γ∞
- ßÑú¼Ñ¡Γ DS, ¿ß»«½∞ºπѼδ⌐ ó ¬áτÑßΓóÑ ßÑú¼Ñ¡Γá-¿ßΓ«τ¡¿¬á, ¡á»α¿¼Ñα:
-
- .
- .
- .
- lods es:[SourceArray]
- .
- .
- .
-
- ßÑú¼Ñ¡Γ-»α¿Ñ¼¡¿¬ ES »ÑαÑ«»αÑñѽ¿Γ∞ ¡Ñ½∞º∩. Å«φΓ«¼π ß½ÑñπεΘ¿⌐ óá-
- α¿á¡Γ αáí«ΓáΓ∞ ¡Ñ íπñÑΓ:
-
- .
- .
- .
- stos DS:[DestArray]
- .
- .
- .
-
- Æá¬¿Ñ «Φ¿í¬¿ Æπαí« ÇßßѼí½Ñα αáß»«º¡áÑΓ ¡á φΓá»Ñ áßßÑ¼í½¿α«-
- óá¡¿∩.
-
-
-
- ÄΦ¿í¬¿ »α¿ ¿ß»«½∞º«óá¡¿¿ íá⌐Γ«óδσ «»Ñαᵿ⌐ ¿ «»Ñαᵿ⌐ ß« ß½«óἿ
- -----------------------------------------------------------------
-
- é «íΘѼ ß½πτáÑ ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ ªÑ½áΓѽ∞¡« ¿ß»«½∞º«-
- óáΓ∞ ¼á¬ß¿¼á½∞¡« 󫺼«ª¡δ⌐ αẼÑα ñá¡¡δσ («íδτ¡« φΓ« ß½«ó«, ¿½¿
- ñó«⌐¡«Ñ ß½«ó« »α¿ αáí«ΓÑ ß »α«µÑßß«α«¼ 80386), »«ß¬«½∞¬π ΓᬿÑ
- ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ «íδτ¡« óδ»«½¡∩εΓß∩ íδßΓαÑÑ. ìá»α¿¼Ñα:
-
- .
- .
- .
- mov cx,200 ; τ¿ß½« »ÑαѼÑΘáѼδσ íá⌐Γ
- .
- .
- .
- shr cx,1 ; »αÑ«íαẫóáΓ∞ ¿º íá⌐Γ ó ß½«óá
- rep movsw ; »ÑαѼÑßΓ¿Γ∞ í½«¬ αẼÑα«¼ ó ß½«ó«
- .
- .
- .
-
- ìá »α«µÑßß«αÑ 8088 φΓ« αáí«ΓáÑΓ »«τΓ¿ ¡á 50% íδßΓαÑÑ, τѼ:
-
- .
- .
- .
- mov cx,200 ; τ¿ß½« »ÑαѼÑΘáѼδσ íá⌐Γ
- .
- .
- .
- rep movsw ; »ÑαѼÑßΓ¿Γ∞ í½«¬ αẼÑα«¼ ó íá⌐Γ
- .
- .
- .
-
- Äñ¡á¬« ºñÑß∞ ¿¼ÑÑΓß∩ »áαá »«ΓÑ¡µ¿á½∞¡δσ «Φ¿í«¬. é«-»Ñαóδσ,
- »α¿ »αÑ«íαẫóá¡¿¿ ßτÑΓτ¿¬á íá⌐Γ ó ßτÑΓτ¿¬ ß½«ó »α«ßΓ« ß »«¼«Θ∞ε
- «»Ñαᵿ¿:
-
- shr cx,1
-
- ΓÑα∩ÑΓß∩ íá⌐Γ, Ñß½¿ αÑú¿ßΓα CX ¡ÑτÑΓ¡δ⌐, »«ß¬«½∞¬π »α¿ ßñó¿úÑ ¡á-
- ¿¼Ñ¡ÑÑ º¡áτáΘ¿⌐ í¿Γ íπñÑΓ »«ΓÑα∩¡. æ½πτá¿, ¬«úñá º¡áτÑ¡¿Ñ CX ¼«-
- ªÑΓ «¬áºáΓ∞ß∩ ¡ÑτÑΓ¡δ¼, ¼«ª¡« «íαáíáΓδóáΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .
- .
- .
- shr cx,1 ; »αÑ«íαẫóáΓ∞ ó ßτÑΓτ¿¬ ß½«ó
- jnc MoveWord ; ßτÑΓτ¿¬ íá⌐Γ ¡ÑτÑΓ¡δ⌐?
- movsb ; ñá, «¡ ¡ÑτÑΓ¡δ⌐ - »ÑαѼÑßΓ¿Γ∞
- ; ¡ÑτÑΓ¡δ⌐ íá⌐Γ
- MoveWord:
- rep movsw ; »ÑαѼÑΘÑ¡¿Ñ τÑΓ¡«ú« τ¿ß½á íá⌐Γ
- ; »«ß½«ó¡«
- .
- .
- .
-
- é«-óΓ«αδσ, ¡πª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« ¿¡ßΓαπ¬µ¿∩ SHR ñѽ¿Γ
- ßτÑΓτ¿¬ íá⌐Γ ¡á 2. êß»«½∞º«óá¡¿Ñ, ߬áªÑ¼, ¿¡ßΓαπ¬µ¿¿ STOSW ß«
- ßτÑΓτ¿¬«¼ íá⌐Γ, á ¡Ñ ß« ßτÑΓτ¿¬«¼ ß½«ó, ¼«ªÑΓ «Γíα«ß¿Γ∞ ñαπú¿Ñ
- ñá¡¡δÑ ¿ »α¿óÑßΓ¿ ¬ αẽ¿τ¡δ¼ »α«í½Ñ¼á¼. ìá»α¿¼Ñα, »α¿ ¿ß»«½∞º«-
- óá¡¿¿ ¿¡ßΓαπ¬µ¿⌐:
-
- .
- .
- .
- mov cx,200 ; τ¿ß½« »ÑαѼÑΘáѼδσ ñá¡¡δσ
- .
- .
- .
- rep movsv ; »ÑαѼÑΘáΓ∞ »« í½«¬π αẼÑα«¼
- ; ó ß½«ó«
- .
- .
- .
-
- íπñÑΓ «Γíα«ΦÑ¡« 200 íá⌐Γ (100 ß½«ó), ¬«Γ«αδÑ ß½ÑñπεΓ ¡Ñ»«ßαÑñß-
- ΓóÑ¡¡« ºá µÑ½Ñóδ¼ í½«¬«¼.
-
-
-
- êß»«½∞º«óá¡¿Ñ ¡Ñ߬«½∞¬¿σ »αÑΣ¿¬ß«ó
- -----------------------------------------------------------------
-
- æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ ß ¡Ñ߬«½∞¬¿¼¿ »αÑΣ¿¬ßἿ ¡áñѪ¡« αáí«-
- ΓáΓ∞ ¡Ñ íπñπΓ. é «íΘѼ ß½πτáÑ ¿σ ß½ÑñπÑΓ ¿ºíÑúáΓ∞. é ¬áτÑßΓóÑ
- »α¿¼Ñαá ¼«ª¡« »α¿óÑßΓ¿ ¿¡ßΓαπ¬µ¿ε:
-
- .
- .
- .
- rep movs es:[DestArray],ss:[SourceArray]
- .
- .
- .
-
- úñÑ »α¿ßπΓßΓóπÑΓ ¬á¬ »αÑΣ¿¬ß REP, Γᬠ¿ »αÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩
- ßÑú¼Ñ¡Γá SS. î¡«ªÑßΓóÑ¡¡δÑ »αÑΣ¿¬ßδ ¼«úπΓ »α¿óÑßΓ¿ ¬ «Φ¿í¬á¼, Γá¬
- ¬á¬ »« á»»áαáΓ¡«¼π »αÑαδóá¡¿ε ßΓ᫬«óá∩ ¿¡ßΓαπ¬µ¿∩ ¼«ªÑΓ »αѬαá-
- Γ¿Γ∞ αáí«Γπ ó »α«µÑßßÑ µ¿¬½á »«óΓ«αÑ¡¿∩. é ¡Ñ¬«Γ«αδσ »α«µÑßß«αáσ
- Σ¿α¼δ Intel, ó¬½ετá∩ »α«µÑßß«αδ 8086 ¿ 8088, »«ß½Ñ Γ«ú«, ¬á¬
- ßΓ᫬«óá∩ ¿¡ßΓαπ¬µ¿∩ ó«º«í¡«ó½∩ÑΓ αáí«Γπ »«ß½π «íß½πª¿óá¡¿∩ »αÑ-
- αδóá¡¿∩, óßÑ »αÑΣ¿¬ßδ, ¬α«¼Ñ »«ß½Ññ¡Ñú«, ¿ú¡«α¿απεΓß∩. é αѺπ½∞-
- ΓáΓÑ ¿¡ßΓαπ¬µ¿∩ ¼«ªÑΓ ¡Ñ «Γαáí«ΓáΓ∞ ºáñá¡¡«Ñ τ¿ß½« αáº, ¿½¿ »α«¿-
- º«⌐ñÑΓ «íαáΘÑ¡¿Ñ ¬ ¡ÑóÑα¡«¼π ßÑú¼Ñ¡Γπ.
-
- àß½¿ óá¼ áíß«½εΓ¡« ¡Ñ«íσ«ñ¿¼« ¿ß»«½∞º«óáΓ∞ ßΓ᫬«óδÑ ¿¡ßΓ-
- απ¬µ¿¿ ß ¡Ñ߬«½∞¬¿¼¿ »αÑΣ¿¬ßἿ, Γ« ¡á óαѼ∩ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬-
- µ¿¿ ¡πª¡« ºá»αÑΓ¿Γ∞ »αÑαδóá¡¿∩. ìá»α¿¼Ñα:
-
- .
- .
- .
- cli
- rep mov es:[DestArray],ss:[SourceArray]
- sti
- .
- .
- .
-
-
-
- ÄΦ¿í¬¿ »α¿ ¿ß»«½∞º«óá¡¿¿ «»Ñαá¡ñ«ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐
- -----------------------------------------------------------------
-
- ìÑ«í∩ºáΓѽ∞¡δ⌐ «»Ñαá¡ñ ¿½¿ «»Ñαá¡ñδ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ ¿ß-
- »«½∞ºπεΓß∩ Γ«½∞¬« ñ½∩ ºáñá¡¿∩ αẼÑαá ñá¡¡δσ ¿ »ÑαÑ«»αÑñѽѡ¿∩
- ßÑú¼Ñ¡Γá ¿ ¡Ñ «íÑß»Ñτ¿óáεΓ Γ«ú«, τΓ« ß««ΓóÑΓßΓóπεΘ¿Ñ ∩τÑ⌐¬¿ »á¼∩-
- Γ¿ ñÑ⌐ßΓó¿Γѽ∞¡« íπñπΓ ñ«ßΓπ»¡δ. ìá»α¿¼Ñα, ó »α«úαá¼¼Ñ:
-
- .
- .
- .
- DestArray DW 256 dup (?)
- .
- .
- .
- cld ; «ΓßτÑΓ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
- ; »α¿ ºá»«½¡Ñ¡¿¿
- mov al,'*' ; íá⌐Γ ñ½∩ ºá»«½¡Ñ¡¿∩
- mov cx,256 ; τ¿ß½« ºá»«½¡∩Ѽδσ ß½«ó
- mov di,0 ; áñαÑß ¡áτá½á ºá»«½¡Ñ¡¿∩
- rep stos es:[DestArray] ; óδ»«½¡¿Γ∞ ºá»«½¡Ñ¡¿Ñ
- .
- .
- .
-
- 256 íá⌐Γ, ¡áτ¿¡á∩ ß« ß¼ÑΘÑ¡¿∩ 0 ó ßÑú¼Ñ¡ΓÑ ES, ºá»«½¡∩εΓß∩ ß¿¼ó«-
- ½«¼ '*', ¡Ñºáó¿ß¿¼« «Γ Γ«ú«, úñÑ ¡áσ«ñ¿Γß∩ ¼áßß¿ó DestArray.
- ES:[DestArray] »α«ßΓ« π¬áºδóáÑΓ ÇßßѼí½Ñαπ, τΓ« ¡πª¡« ¿ß»«½∞º«-
- óáΓ∞ ¿¡ßΓαπ¬µ¿ε STOSW, Γᬠ¬á¬ DestArray - φΓ« ¼áßß¿ó ß½«ó. ê¼Ñ¡-
- ¡« ß«ñÑন¼«Ñ SI ¿/¿½¿ DI, á ¡Ñ «»Ñαá¡ñδ, «»αÑñѽ∩ÑΓ, »« ¬á¬«¼π
- ß¼ÑΘÑ¡¿ε íπñÑΓ «ßπΘÑßΓó½∩Γ∞ß∩ ñ«ßΓπ» ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ. ÆÑ¼
- ¡Ñ ¼Ñ¡ÑÑ, ¿ß»«½∞º«óá¡¿Ñ ¡Ñ«í∩ºáΓѽ∞¡δσ «»Ñαá¡ñ«ó («»Ñαá¡ñá) ó
- ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ «íÑß»Ñτ¿óáÑΓ, τΓ« óδ, ¡á»α¿¼Ñα, ß½πτá⌐¡« ¡Ñ
- íπñÑΓÑ ß½πτá⌐¡« «ßπΘÑßΓó½∩Γ∞ »«ß½«ó¡δ⌐ ñ«ßΓπ» ¬ íá⌐Γ«ó«¼π ¼áßß¿-
- óπ.
-
- ǡὫú¿τ¡«, ¡Ñ«í∩ºáΓѽ∞¡δ⌐ «»Ñαá¡ñ ó ¿¡ßΓαπ¬µ¿¿ XLAT ¿ß»«½∞-
- ºπÑΓß∩ Γ«½∞¬« ñ½∩ »α«óÑન Γ¿»á ¿ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá. Åα«ú-
- αá¼¼á:
-
- .
- .
- .
- LookUpTable LABEL BYTE
- .
- .
- .
- ASCIITable LABEL BYTE
- .
- .
- .
- mov bx,OFFSET ASCIITabel ; ßßδ½¬á ¡á Γáí½¿µπ
- ; »α«ß¼«Γαá
- mov al,[CharacterToTranslate] ; »«½πτ¿Γ∞ íá⌐Γ
- xlat [LookUpTable] ; «Γ«íαếΓ∞ Ñú«
- .
- .
- .
-
- «Γ«íαáªáÑΓ íá⌐Γ, ºáñáóáѼδ⌐ αÑú¿ßΓα«¼ AL, ó Γáí½¿µÑ ASCIITable,
- á ¡Ñ ó LookUpTable, ¡« ÇßßѼí½Ñα ºñÑß∞ íπñÑΓ αáí«ΓáΓ∞ »αáó¿½∞¡«,
- »«ß¬«½∞¬π óßÑ, τΓ« ñѽáÑΓ «»Ñαá¡ñ ó ¿¡ßΓαπ¬µ¿¿ XLAT - φΓ« «íÑß»Ñ-
- τÑ¡¿Ñ íá⌐Γ«ó«ú« αẼÑαá ¿ »ÑαÑ«»αÑñѽѡ¿Ñ ßÑú¼Ñ¡Γá. ê¡ßΓαπ¬µ¿∩
- XLAT óßÑúñá «Γ«íαáªáÑΓ (Γαá¡ß½¿απÑΓ) ß«ñÑন¼«Ñ »« ß¼ÑΘÑ¡¿ε BX +
- AL, ¡Ñºáó¿ß¿¼« «Γ ¿ß»«½∞ºπѼ«ú« «»Ñαá¡ñá.
-
-
-
-
- Åα«úαá¼¼¿ßΓ ºáíδóáÑΓ « ¡Ñ«íδτ¡δσ »«í«τ¡δσ φΣΣѬΓáσ
- -----------------------------------------------------------------
-
- ū߬«½∞¬π »α«úαá¼¼δ ÇßßѼí½Ñαá ºá»¿ßá¡δ ¡á "α«ñ¡«¼" ∩ºδ¬Ñ
- »α«µÑßß«αá 8086, ½εíδÑ ¿º¼Ñ¡Ñ¡¿∩ ó ß«ßΓ«∩¡¿¿ αÑú¿ßΓα«ó ¿½¿ Σ½áú«ó
- »α«µÑßß«αá 8086 ñ«½ª¡δ »αÑñßΓáó½∩Γ∞ ñ½∩ αáí«ΓáεΘÑú« ¡á ÇßßѼí½ÑαÑ
- »α«úαá¼¼¿ßΓá «ß«íδ⌐ ¿¡ΓÑαÑß. ü«½∞Φ¿¡ßΓó« ß»«ß«í«ó, ß »«¼«Θ∞ε ¬«-
- Γ«αδσ »α«úαá¼¼á ¡á ÇßßѼí½ÑαÑ ¼«ªÑΓ ¿º¼Ñ¡¿Γ∞ ß«ßΓ«∩¡¿Ñ »α«µÑßß«-
- αá, ñ«ßΓáΓ«τ¡« ¡Ñ»«ßαÑñßΓóÑ¡¡δ ¿ «τÑó¿ñ¡δ. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩:
-
- add bx,[Grade]
-
- »α¿íáó½∩ÑΓ 16-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ »« áñαÑßπ Grade ¬ BX ¿, τΓ«íδ «Γ-
- αếΓ∞ αѺπ½∞ΓáΓ ß½«ªÑ¡¿∩, ¿º¼Ñ¡∩ÑΓ Σ½áú¿ »ÑαÑ»«½¡Ñ¡¿∩, º¡á¬á,
- ¡π½∩, ñ«»«½¡¿Γѽ∞¡«ú« »ÑαÑ¡«ßá, τÑΓ¡«ßΓ¿ ¿ »ÑαÑ¡«ßá. Äñ¡á¬« ¡Ñ¬«-
- Γ«αδÑ ¿¡ßΓαπ¬µ¿¿ ¿º¼Ñ¡∩εΓ ß«ßΓ«∩¡¿Ñ »α«µÑßß«αá ¼Ñ¡ÑÑ «τÑó¿ñ¡δ¼
- «íαẫ¼. Éáßß¼«Γα¿¼ ¬αáΓ¬« ¡Ñ¬«Γ«αδÑ ¿º Γá¬¿σ ¿¡ßΓαπ¬µ¿⌐.
-
-
-
- Å«ΓÑα∩ ß«ñÑন¼«ú« αÑú¿ßΓαá »α¿ π¼¡«ªÑ¡¿¿
- -----------------------------------------------------------------
-
- Åα¿ π¼¡«ªÑ¡¿¿ (8-αáºα∩ñ¡«ú« º¡áτÑ¡¿∩ ¡á 8-αáºα∩ñ¡«Ñ,
- 16-αáºα∩ñ¡«ú« º¡áτÑ¡¿∩ ¡á 16-αáºα∩ñ¡«Ñ ¿½¿ 32-αáºα∩ñ¡«ú« º¡áτÑ¡¿∩
- ¡á 32-αáºα∩ñ¡«Ñ) óßÑúñá ΓÑα∩ÑΓß∩ ß«ñÑন¼«Ñ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ «ñ¡«-
- ú« αÑú¿ßΓαá, «Γ½¿τ¡«ú« «Γ Γ«⌐ τáßΓ¿ ᬬπ¼π½∩Γ«αá, ¬«Γ«αá∩ ¿ß»«½∞-
- ºπÑΓß∩ ó ¬áτÑßΓóÑ «»Ñαá¡ñá-¿ßΓ«τ¡¿¬á. ¥Γ« ¡Ñ¿ºíѪ¡« »α¿ó«ñ¿Γ ¬
- Γ«¼π, τΓ« αѺπ½∞ΓáΓ »ÑαѼ¡«ªÑ¡¿∩ ñóπσ 8-αáºα∩ñ¡δσ º¡áτÑ¡¿⌐ íπñÑΓ
- ºá¡¿¼áΓ∞ 16 í¿Γ, αѺπ½∞ΓáΓ »ÑαѼ¡«ªÑ¡¿∩ 16-αáºα∩ñ¡δσ º¡áτÑ¡¿⌐ -
- 32 í¿Γá, á 32-αáºα∩ñ¡δσ º¡áτÑ¡¿⌐ - 64 í¿Γá. ÅÑαѼ¡«ªÑ¡¿Ñ «»Ñαá¡ñá
- -¿ßΓ«τ¡¿¬á ¿ «»Ñαá¡ñá-»α¿Ñ¼¡¿¬á »«¬áºá¡« ó Æáí½¿µÑ 6.1.
-
- Æáí½¿µá 6.1
- êßΓ«τ¡¿¬ ¿ »α¿Ñ¼¡¿¬ ó «»Ñαᵿ∩σ MUL ¿ IMUL
- -----------------------------------------------------------------
- êßΓ«τ¡¿¬ êßΓ«τ¡¿¬ Åα¿Ñ¼¡¿¬
- ÉẼÑα «»Ñαá¡ñá ƒó¡δ⌐ ìÑ∩ó¡δ⌐
- ó íá⌐Γáσ «»Ñαá¡ñ «»Ñαá¡ñ æΓáαΦ¿⌐ î½áñΦ¿⌐ Åα¿¼Ñα
- -----------------------------------------------------------------
- 8σ8 reg8 (*) AL AH AL mul dl
-
- 16σ16 reg16 (**) AX DX AX imul bx
-
- 32σ32 (***) reg32 (****) EAX EDX EAX mul esi
- -----------------------------------------------------------------
-
- * reg8 ¼«ªÑΓ »αÑñßΓáó½∩Γ∞ ß«í«⌐ ½εí«⌐ ¿º ß½ÑñπεΘ¿σ αÑú¿ßΓα«ó:
- AH, AL, BH, BL, CH, CL, DH ¿½¿ DL.
-
- ** reg16 ¼«ªÑΓ íδΓ∞ ½εíδ¼ ¿º ß½ÑñπεΘ¿σ αÑú¿ßΓα«ó: AX, BX, CX,
- DX, SI, DI, BP ¿½¿ SP.
-
- *** Ä»Ñαᵿ∩ π¼¡«ªÑ¡¿∩ 32σ32 »α«µÑßß«αἿ 8086, 8088, 80186,
- 80188 ¿ 80286 ¡Ñ »«ññÑনóáÑΓß∩.0
-
- **** reg32 ¼«ªÑΓ íδΓ∞ ½εíδ¼ ¿º ß½ÑñπεΘ¿σ αÑú¿ßΓα«ó: EAX, EBX,
- ECX, EDX, ESI, EDI, EBP ¿½¿ ESP.
-
- ò«Γ∩ óßÑ φΓ« óδú½∩ñ¿Γ ñ«ßΓáΓ«τ¡« »α«ßΓδ¼, ó ß¿¡Γá¬ß¿ßÑ ¿¡ß-
- Γαπ¬µ¿⌐ MUL ¿ IMUL ߬αδΓ« ¼¡«ú« ñÑΓá½Ñ⌐, Γᬠ¬á¬ ∩ó¡« π¬áºδóáÑΓß∩
- Γ«½∞¬« «ñ¿¡ ¿º «»Ñαá¡ñ«ó ¿ αẼÑα, á αÑú¿ßΓαδ ¿ß»«½∞ºπѼδÑ ó ¬á-
- τÑßΓóÑ «»Ñαá¡ñá-»α¿Ñ¼¡¿¬á, »α«ßΓ« »«ñαáºπ¼ÑóáεΓß∩. ¥Γ¿ ߬αδΓδÑ
- ñÑΓ὿ »α¿ó«ñ∩Γ ¬ Γ«¼π, τΓ« ½Ñú¬« ¼«ª¡« π»πßΓ¿Γ∞ ¿º ó¿ñπ ¿ß»«½∞-
- º«óá¡¿Ñ ¬á¬«ú«-½¿í« ¡Ñ∩ó¡«ú« αÑú¿ßΓαá. àßΓ∞ ¼¡«ú« ß½πτáÑó, ó ¬«-
- Γ«αδσ, ߬áªÑ¼, »α«úαá¼¼¿ßΓ º¡áÑΓ, τΓ« αѺπ½∞ΓáΓ »ÑαѼ¡«ªÑ¡¿∩
- 16-αáºα∩ñ¡«ú« º¡áτÑ¡¿∩ ¡á 16-αáºα∩ñ¡πε óѽ¿τ¿¡π, »«¼ÑßΓ¿Γß∩ ó αÑ-
- ú¿ßΓα AX. Åα¿ φΓ«¼ τáßΓ« ºáíδóáεΓ, τΓ« ΓÑα∩ÑΓß∩ ß«ñÑন¼«Ñ αÑ-
- ú¿ßΓαá CX. Å«φΓ«¼π óßÑúñá ¡πª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« »α¿ ¿ß»«½∞º«-
- óá¡¿¿ ¿¡ßΓαπ¬µ¿⌐ MUL ¿ IMUL π¡¿τΓ«ªáÑΓß∩ ß«ñÑন¼«Ñ ¡Ñ Γ«½∞¬«
- αÑú¿ßΓα«ó AL, AX, ¿½¿ EAX, ¡« Γá¬ªÑ ¿ AH, DX ¿½¿ EDX.
-
-
-
-
- é ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ ¿º¼Ñ¡∩ÑΓß∩ ¡Ñ߬«½∞¬« αÑú¿ßΓα«ó
- -----------------------------------------------------------------
-
- Åα¿ óδ»«½¡Ñ¡¿¿ Γ«½∞¬« «ñ¡«⌐ ¿º ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ (MOVS,
- STOS, LODS, CMPS ¿½¿ SCAS) ¼«ªÑΓ ¿º¼Ñ¡∩Γ∞ß∩ ß«ñÑন¼«Ñ ¡Ñ߬«½∞¬¿σ
- Σ½áú«ó ¿ ñ« ΓαÑσ αÑú¿ßΓα«ó. èᬠ¿ ó ¿¡ßΓαπ¬µ¿¿ MUL, ó ßΓ᫬«óδσ
- ¿¡ßΓαπ¬µ¿∩σ ¼¡«ú¿Ñ φΣΣѬΓδ ¡Ñ óδαáªáεΓß∩ ∩ó¡« ó «»Ñαá¡ñáσ φΓ¿σ
- ¿¡ßΓαπ¬µ¿⌐. Åα¿ ¿ß»«½∞º«óá¡¿¿ ñá¡¡δσ ¿¡ßΓαπ¬µ¿⌐ ¡πª¡« »«¼¡¿Γ∞ «
- Γ«¼, τΓ« SI ¿½¿ DI (¿½¿ «íá αÑú¿ßΓαá) πóѽ¿τ¿óáεΓß∩ ¿½¿ π¼Ñ¡∞Φá-
- εΓß∩ (ó ºáó¿ß¿¼«ßΓ¿ «Γ ß«ßΓ«∩¡¿∩ Σ½áúá ¡á»αáó½Ñ¡¿∩) »α¿ ¬áªñ«¼
- óδ»«½¡Ñ¡¿¿ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿. ÉÑú¿ßΓα CX Γá¬ªÑ π¼Ñ¡∞ΦáÑΓß∩ »«
- ¬αá⌐¡Ñ⌐ ¼ÑαÑ «ñ¿¡ αáº, á »α¿ ¿ß»«½∞º«óá¡¿¿ »αÑΣ¿¬ßá REP - 󫺼«ª-
- ¡« ñ« ΓÑσ »«α, »«¬á Ñú« ß«ñÑন¼«Ñ ¡Ñ ßΓá¡ÑΓ αáó¡δ¼ ¡π½ε.
-
- 꺼ѡѡ¿Ñ «Γñѽ∞¡δ¼¿ ¿¡ßΓαπ¬µ¿∩¼¿ Σ½áúá »ÑαÑ¡«ßá
- -----------------------------------------------------------------
-
- é Γ« óαѼ∩ ¬á¬ ¡Ñ¬«Γ«αδÑ ¿¡ßΓαπ¬µ¿¿ "¡Ñ»αÑñó¿ñÑ¡¡δ¼" «íαẫ¼
- ¿º¼Ñ¡∩εΓ ß«ñÑন¼«Ñ αÑú¿ßΓα«ó ¿½¿ Σ½áú«ó, ñαπú¿Ñ ¿¡ßΓαπ¬µ¿¿ ¡Ñ
- ó½¿∩εΓ ¡á óßÑ ΓÑ Σ½áú¿, ¿º¼Ñ¡Ñ¡¿∩ ¬«Γ«αδσ óδ «ª¿ñáÑΓÑ. ìá»α¿¼Ñα,
- ¿¡ßΓαπ¬µ¿∩:
-
- inc ah
-
- óδú½∩ñ¿Γ ½«ú¿τÑ߬¿ φ¬ó¿óá½Ñ¡Γ¡«⌐ ¿¡ßΓαπ¬µ¿¿:
-
- add ah,1
-
- ¿ φΓ« ñÑ⌐ßΓó¿Γѽ∞¡« Γá¬, ¡« ß «ñ¡¿¼ ¿ß¬½ετÑ¡¿Ñ¼. é Γ« óαѼ∩ ¬á¬
- ¿¡ßΓαπ¬µ¿∩ ADD ó ß½πτáÑ ß½¿Φ¬«¼ í«½∞Φ«ú« ñ½∩ «»Ñαá¡ñá-»α¿Ñ¼¡¿¬á
- αѺπ½∞ΓáΓá πßΓá¡áó½¿óáÑΓ Σ½áú »ÑαÑ¡«ßá, ¿¡ßΓαπ¬µ¿∩ INC ¡¿¬«¿¼ «í-
- αẫ¼ ¡Ñ ¡Ñú« ¡Ñ ó½¿∩ÑΓ. é αѺπ½∞ΓáΓÑ ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- add ax,1
- adc dx,0
- .
- .
- .
-
- ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ πóѽ¿τÑ¡¿∩ 32-í¿Γ«ó«ú« º¡áτÑ¡¿∩, σαá¡∩ΘÑ-
- ú«ß∩ ó αÑú¿ßΓαáσ DX:AX, á ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- inc ax
- adc dx,0
- .
- .
- .
-
- ¡Ñ½∞º∩. Æ«ªÑ ßá¼«Ñ ¿¼ÑÑΓ ¼ÑßΓ« ñ½∩ ¿¡ßΓαπ¬µ¿¿ DEC, ó Γ« óαѼ∩ ¬á¬
- ¿¡ßΓαπ¬µ¿¿ LOOP, LOOPZ ¿ LOOPNZ ¡Ñ ó½¿∩εΓ ¡á ß«ßΓ«∩¡¿Ñ Σ½áú«ó. ìá
- »αá¬Γ¿¬Ñ φΓ« ¿¡«úñá ¼«ª¡« óδú«ñ¡« ¿ß»«½∞º«óáΓ∞, Γᬠ¬á¬ ó «Γñѽ∞-
- ¡δσ ß½πτá∩σ ¼«ªÑΓ «¬áºáΓ∞ß∩ πñ«í¡δ¼ óδ»«½¡¿Γ∞ «ñ¡π ¿º φΓ¿σ ¿¡ßΓ-
- απ¬µ¿⌐ íѺ ¡áαπΦÑ¡¿∩ πßΓá¡«ó¬¿ Σ½áúá »ÑαÑ¡«ßá. éßÑúñá ó᪡« Γ«τ¡«
- º¡áΓ∞, τΓ« ñѽáÑΓ ¬áªñá∩ ¿ß»«½∞ºπѼá∩ óἿ ¿¡ßΓαπ¬µ¿∩. àß½¿ π óáß
- ÑßΓ∞ ß«¼¡Ñ¡¿∩ «Γ¡«ß¿Γѽ∞¡« Γ«ú«, ¬á¬ ó½¿∩ÑΓ ¬«¡¬αÑΓ¡á∩ ¿¡ßΓαπ¬µ¿∩
- ¡á ß«ñÑন¼«Ñ Σ½áú«ó, ½πτΦÑ «íαáΓ¿ΓÑß∞ ¬ ß»αáó«τ¡¿¬π.
-
-
-
- Åα«úαá¼¼¿ßΓ ñ«½ú« ¡Ñ ¿ß»«½∞ºπÑΓ ß«ßΓ«∩¡¿Ñ Σ½áú«ó
- -----------------------------------------------------------------
-
- æ«ßΓ«∩¡¿Ñ Σ½áú«ó ß«σαá¡∩ÑΓß∩ ñ« ΓÑσ »«α, »«¬á ß½ÑñπεΘá∩
- ¿¡ßΓαπ¬µ¿∩ ¿σ ¡Ñ ¿º¼Ñ¡¿Γ. Äíδτ¡« φΓ« ¡Ñ ß½¿Φ¬«¼ ñ«½ú¿⌐ ¿¡ΓÑαóá½
- óαѼѡ¿. ò«α«ΦÑ⌐ »αá¬Γ¿¬«⌐ »α«úαá¼¼¿α«óá¡¿∩ ∩ó½∩ÑΓß∩ 󫺼«ª¡«
- ߬«αÑ⌐ΦÑÑ ¿ß»«½∞º«óá¡¿Ñ Σ½áú«ó ¿σ πßΓá¡«ó¬¿, τΓ« »«ºó«½∩ÑΓ ¿ºíÑ-
- ªáΓ∞ ¼¡«ú¿σ »«ΓÑ¡µ¿á½∞¡δσ «Φ¿í«¬. ìá»α¿¼Ñα, τáßΓ« σ«τÑΓß∩ »α«óÑ-
- α¿Γ∞ πß½«ó¿Ñ, ºáñáΓ∞ ß«ñÑন¼«Ñ «ñ¡«ú«-ñóπσ αÑú¿ßΓα«ó, ¿ Γ«½∞¬«
- »«ß½Ñ φΓ«ú« ó ß««ΓóÑΓßΓó¿¿ ß αѺπ½∞ΓáΓ«¼ »α«óÑન óδ»«½¡¿Γ∞ »ÑαÑ-
- σ«ñ. ê¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- cmp ax,1
- mov ax,0
- jg HandlePositive
- .
- .
- .
-
- »αÑñßΓáó½∩εΓ ß«í«⌐ 󻫽¡Ñ ñ«»πßΓ¿¼δ⌐ ß»«ß«í »α«óÑન ß«ßΓ«∩¡¿∩
- αÑú¿ßΓαá AX, ºáΓѼ πßΓá¡«ó¬¿ Ñú« ó º¡áτÑ¡¿Ñ 0 ¿ «íαáí«Γ¬¿ αѺπ½∞-
- ΓáΓá. æ ñαπú«⌐ ßΓ«α«¡δ, ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- cmp ax,1
- sub ax,ax
- jg HandlePositive
- .
- .
- .
-
- ¬«Γ«αδÑ óδú½∩ñ∩Γ í«½ÑÑ »α¿ó½Ñ¬áΓѽ∞¡«, »«ß¬«½∞¬π Γᬫ⌐ ¬«ñ ¬«α«τÑ
- ¿ óδ»«½¡∩εΓß∩ íδßΓαÑÑ, »αáó¿½∞¡« αáí«ΓáΓ∞ ¡Ñ íπñπΓ, Γᬠ¬á¬ »α¿
- óδτ¿Γá¡¿¿ ΓÑα∩ÑΓß∩ ß«ñÑন¼«Ñ óßÑσ Σ½áú«ó, πßΓá¡«ó½Ñ¡¡δσ »α¿
- ßαáó¡Ñ¡¿¿. ¥Γ« Γ¿»¿τ¡á∩ »α«í½Ñ¼á, 󫺡¿¬áεΘá∩, ¬«úñá óδ ¡Ñ Γ«α«-
- »¿ΓÑß∞ ¿ß»«½∞º«óáΓ∞ ß«ßΓ«∩¡¿Ñ Σ½áú«ó.
-
-
-
- ìÑ »πΓá⌐ΓÑ «»Ñαá¡ñδ ó »á¼∩Γ¿ ¿ ¡Ñ»«ßαÑñßΓóÑ¡¡δÑ «»Ñαá¡ñδ
- -----------------------------------------------------------------
-
- Åα«úαá¼¼á ¡á ÇßßѼí½ÑαÑ ¼«ªÑΓ ßßδ½áΓ∞ß∩ ½¿í« ¡á »ÑαѼѡ¡πε
- »á¼∩Γ¿ »« ß¼ÑΘÑ¡¿ε, ½¿í« ¡á º¡áτÑ¡¿Ñ, σαá¡∩ΘÑÑß∩ ó φΓ«⌐ »ÑαѼѡ-
- ¡«⌐. è ß«ªá½Ñ¡¿ε, ó ∩ºδ¬Ñ ÇßßѼí½Ñαá «ΓßπΓßΓóπÑΓ ßΓα«ú«ßΓ∞ ¿½¿
- «τÑó¿ñ¡«ßΓ∞ ó «Γ¡«ΦÑ¡¿¿ Γ«ú«, ¬á¬ ¼«ª¡« óδ»«½¡∩Γ∞ φΓ¿ ñóá ó¿ñá
- ßß佫¬. é αѺπ½∞ΓáΓÑ ßß佬¿ ¡á »ÑαѼѡ¡πε ó »á¼∩Γ¿ »« ß¼ÑΘÑ¡¿ε ¿
- »« º¡áτÑ¡¿ε τáßΓ« »πΓáεΓ.
-
- ìá É¿ß. 6.1 »«¬áºá¡« αẽ¿τ¿Ñ ¼Ñªñπ ß¼ÑΘÑ¡¿Ñ¼ ¿ º¡áτÑ¡¿Ñ¼
- »ÑαѼѡ¡«⌐ ó »á¼∩Γ¿. ÅÑαѼѡ¡á∩ ó »á¼∩Γ¿ αẼÑα«¼ ó ß½«ó« MemLoc
- ¿¼ÑÑΓ ß¼ÑΘÑ¡¿Ñ 5002h, á º¡áτÑ¡¿Ñ ÑÑ αáó¡« 1234h.
-
- |
- ---------------
- 3000 4FFE | 0001 |
- |-------------| ç¡áτÑ¡¿Ñ MemLoc
- 3000 5000 | 205F | |
- æ¼ÑΘÑ¡¿Ñ |-------------| |
- MemLoc 3000 5002 | 1234 <---|----------
- | ---- |-------------|
- | ^ | |
- | | | |
- ------------------- | |
- 3000 5004 | 9145 |
- |-------------|
- 3000 5006 | 0000 |
- ---------------
-
- É¿ß. 6.1 ÅÑαѼѡ¡δÑ ó »á¼∩Γ¿: º¡áτÑ¡¿Ñ ¿ ß¼ÑΘÑ¡¿Ñ.
-
- ìá É¿ß. 6.1 ß¼ÑΘÑ¡¿Ñ »ÑαѼѡ¡«⌐ ó »á¼∩Γ¿ αẼÑα«¼ ó ß½«ó«
- MemLoc »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¬«¡ßΓá¡Γπ 5002, ¬«Γ«απε ¼«ª¡« »«½πτ¿Γ∞
- ß »«¼«Θ∞ε «»ÑαáΓ«αá OFFSET. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩:
-
- mov bx,OFFSET MemLoc
-
- ºáúαπªáÑΓ º¡áτÑ¡¿Ñ 5002h ó αÑú¿ßΓα BX. ç¡áτÑ¡¿Ñ 5002h »αÑñßΓáó½∩-
- ÑΓ ß«í«⌐ ¡Ñ»«ßαÑñßΓóÑ¡¡δ⌐ «»Ñαá¡ñ. äαπú¿¼¿ ß½«óἿ, «¡« óßΓα«Ñ¡«
- ¡Ñ»«ßαÑñßΓóÑ¡¡« ó ¿¡ßΓαπ¬µ¿ε ¿ ¡Ñ ¿º¼Ñ¡∩ÑΓß∩.
-
- ç¡áτÑ¡¿Ñ¼ MemLoc ∩ó½∩ÑΓß∩ 1234h. Ä¡« ßτ¿ΓδóáÑΓß∩ ¿º »á¼∩Γ¿
- ß« ß¼ÑΘÑ¡¿Ñ¼ 5002h ó ßÑú¼Ñ¡ΓÑ ñá¡¡δσ. Äñ¿¡ ¿º ß»«ß«í«ó ßτ¿Γδóá¡¿∩
- ñá¡¡«ú« º¡áτÑ¡¿∩ ß«ßΓ«¿Γ ó ºáúαπº¬Ñ ó αÑú¿ßΓα BX, SI, DI ¿½¿ BP
- ß¼ÑΘÑ¡¿∩ MemLoc ¿ ¿ß»«½∞º«óá¡¿∩ ñá¡¡«ú« αÑú¿ßΓαá ñ½∩ áñαÑßᵿ¿ ¬
- »á¼∩Γ¿. ê¡ßΓαπ¬µ¿¿:
-
- mov bx,OFFSET MemLoc
- mov ax,[bx]
-
- ºáúαπªáεΓ º¡áτÑ¡¿Ñ MemLoc ó αÑú¿ßΓα AX. ç¡áτÑ¡¿Ñ MemLoc ¼«ª¡«
- Γá¬ªÑ ºáúαπº¿Γ∞ ¡Ñ»«ßαÑñßΓóÑ¡¡« ó AX ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿:
-
- mov ax,MemLoc
- ¿½¿
- mov ax,[MemLoc]
-
- çñÑß∞ º¡áτÑ¡¿Ñ 1234h »«½πτáÑΓß∩, ¬á¬ »α∩¼«⌐, á ¡Ñ ¬á¬ ¡Ñ»«ß-
- αÑñßΓóÑ¡¡δ⌐ «»Ñαá¡ñ: ¿¡ßΓαπ¬µ¿∩ MOV ¿ß»«½∞ºπÑΓ óßΓα«Ñ¡¡«Ñ ó ¡ÑÑ
- ß¼ÑΘÑ¡¿Ñ 5002h ¿ ºáúαπªáÑΓ ó AX º¡áτÑ¡¿Ñ »« ß¼ÑΘÑ¡¿ε 5002h, ¬«Γ«-
- α«Ñ ó ñá¡¡«¼ ß½πτáÑ αáó¡« 1234h.
-
- é ¿Γ«úÑ º¡áτÑ¡¿Ñ 1234h ¡Ñ ßó∩ºδóáÑΓß∩ »«ßΓ«∩¡¡« ß »ÑαѼѡ¡«⌐
- MemLoc. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿¿:
-
- mov [MemLoc],5555h
- mov ax,[MemLoc]
-
- ºáúαπªáεΓ ó αÑú¿ßΓα AX º¡áτÑ¡¿Ñ 5555h, á ¡Ñ 1234h.
-
- Äß¡«ó¡á∩ ¿ñÑ∩ ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ« Ñß½¿ ß¼ÑΘÑ¡¿Ñ »ÑαѼѡ-
- ¡«⌐ MemLoc »αÑñßΓáó½∩ÑΓ ß«í«⌐ º¡áτÑ¡¿Ñ-¬«¡ßΓá¡Γπ, ¬«Γ«αá∩ «»¿ßδ-
- óáÑΓß∩ Σ¿¬ß¿α«óá¡¡δ¼ áñαÑß«¼ ó ßÑú¼Ñ¡ΓÑ ñá¡¡δσ, Γ« º¡áτÑ¡¿Ñ
- MemLoc - φΓ« ¿º¼Ñ¡∩Ѽ«Ñ τ¿ß½«, σαá¡∩ΘÑÑß∩ »« ñá¡¡«¼π áñαÑßπ. Å«ß-
- ½Ñ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿⌐:
-
- mov [MemLoc],1
- add [MemLoc],3
-
- »ÑαѼѡ¡á∩ MemLoc »«½πτáÑΓ º¡áτÑ¡¿Ñ 3, ¡« ¿¡ßΓαπ¬µ¿∩:
-
- add OFFSET MemLoc,2
-
- φ¬ó¿óá½Ñ¡Γ¡á ¿¡ßΓαπ¬µ¿¿:
-
- add 5002h,2
-
- ¬«Γ«αá∩ ¡Ñ ¿¼ÑÑΓ ß¼δß½á, Γᬠ¬á¬ ¡Ñ󫺼«ª¡« óδ»«½¡¿Γ∞ «»Ñαᵿε
- ADD, »α¿íáó¿ó «ñ¡π ¬«¡ßΓá¡Γπ ¬ ñαπú«⌐.
-
- ôñ¿ó¿Γѽ∞¡« τáßΓ« óßΓαÑτáεΘÑ⌐ß∩ «Φ¿í¬«⌐ ∩ó½∩ÑΓß∩ Γ«, τΓ« πó-
- ½Ñ¬Φ¿ß∞ ¡á»¿ß᡿Ѽ »α«úαá¼¼δ τáßΓ« ºáíδóáεΓ ¿ß»«½∞º«óáΓ∞ «»Ñαᵿε
- OFFSET, ¡á»α¿¼Ñα:
-
- mov si,MemLoc
-
- úñÑ ¡πª¡« ¿ß»«½∞º«óáΓ∞ ß¼ÑΘÑ¡¿Ñ MemLoc. ¡á »Ñαóδ⌐ óºú½∩ñ ñá¡¡á∩
- ßΓα«¬á ¡Ñ óδú½∩ñ¿Γ ¡Ñ»αáó¿½∞¡«⌐, ¿ Γᬠ¬á¬ MemLoc - φΓ« »ÑαѼѡ-
- ¡á∩ αẼÑα«¼ ó ß½«ó«, Γ« φΓá ßΓα«¬á ¡Ñ »α¿óÑñÑΓ ¬ «Φ¿í¬Ñ áßßѼ-
- í½¿α«óá¡¿∩. Äñ¡á¬« »α¿ óδ»«½¡Ñ¡¿¿ ó SI íπñπΓ ºáúαπªÑ¡δ ß«ñÑαªáΘ¿-
- Ñß∩ ó »ÑαѼѡ¡«⌐ MemLoc ñá¡¡δÑ (1234h), á ¡Ñ ÑÑ ß¼ÑΘÑ¡¿Ñ (5002h),
- ¿ αѺπ½∞ΓáΓδ íπñπΓ ¡Ñ»αÑñ߬áºπѼδ.
-
- ìáñѪ¡«ú« ß»«ß«íá ¿ºíѪáΓ∞ φΓ«⌐ »α«í½Ñ¼δ ¡ÑΓ, ¡« ¼«ª¡« »α¿-
- ¡∩Γ∞ ºá »αá󿽫 ºá¬½ετáΓ∞ óßÑ ßß佬¿ ¡á »á¼∩Γ∞ ó ¬óáñαáΓ¡δÑ ß¬«í-
- ¬¿. è«úñá »ÑαÑñ ßßδ½¬á¼¿ ¡á áñαÑß¡δÑ ¬«¡ßΓá¡Γδ íπñÑΓ π¬áºδóáΓ∞ß∩
- »αÑΣ¿¬ß OFFSET, á ßß佬¿ ¡á »á¼∩Γ∞ - ºá¬½ετáΓ∞ß∩ ó ¬óáñαáΓ¡δÑ
- ߬«í¬¿, φΓ« πßΓαá¡¿Γ ñóπß¼δ߽ѡ¡«ßΓ∞ ¿ ¡Ñ«»αÑñѽѡ¡«ßΓ∞ »α¿ ¿ß-
- »«½∞º«óá¡¿¿ ¿¼Ñ¡ »ÑαѼѡ¡δσ »á¼∩Γ¿. Åα¿ Γᬫ¼ ß«ú½áΦÑ¡¿¿ αáí«Γá
- ¿¡ßΓαπ¬µ¿⌐:
-
- mov si,OFFSET MemLoc
- ¿
- mov si,[MemLoc]
-
- ßΓá¡«ó¿Γß∩ ß«óÑαΦÑ¡¡« »«¡∩Γ¡«⌐, ó Γ« óαѼ∩ ¬á¬ ¿¡ßΓαπ¬µ¿∩:
-
- mov si,MemLoc
-
- íπñÑΓ ¡áßΓ«αᪿóáΓ∞.
-
-
-
- âαá¡¿µδ ßÑú¼Ñ¡Γ«ó
- -----------------------------------------------------------------
-
- Äñ¿¡ ¿º ¡á¿í«½ÑÑ Γαπñ¡δσ ¼«¼Ñ¡Γ«ó »α¿ »α«úαá¼¼¿α«óá¡¿¿ ñ½∩
- »α«µÑßß«α«ó 8086 ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ« ¬ »á¼∩Γ¿ ¡Ñ½∞º∩ «íαáΘáΓ∞-
- ß∩, ¬á¬ ¬ «ñ¡«¼π í«½∞Φ«¼π ¼áßß¿óπ íá⌐Γ. Ä¡á ñ«ßΓπ»¡á Γ«½∞¬« »«
- τáßΓ∩¼, ¬áªñá∩ ¿º ¬«Γ«αδσ αáó¡á 64è ¿ ßó∩ºá¡á ß ßÑú¼Ñ¡Γ¡δ¼ αÑ-
- ú¿ßΓα«¼. êß»«½∞º«óá¡¿Ñ ßÑú¼Ñ¡Γ«ó ¼«ªÑΓ »α¿ó«ñ¿Γ∞ ¬ Γαπñ¡«π½«ó¿¼δ¼
- «Φ¿í¬á¼, Γᬠ¬á¬ Ñß½¿ »α«úαá¼¼á »δΓáÑΓß∩ «íαáΓ¿Γ∞ß∩ ¬ áñαÑßπ ºá
- ¬«¡µ«¼ ßÑú¼Ñ¡Γá, «¡á ó ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ óÑα¡ÑΓß∩ ¡áºáñ ¿ íπñÑΓ
- «íαáΘáΓ∞ß∩ ¬ ¡áτá½π ßÑú¼Ñ¡Γá.
-
- é ¬áτÑßΓóÑ »α¿¼Ñαá »αÑñ»«½«ª¿¼, τΓ« »á¼∩Γ∞, ¡áτ¿¡áεΘá∩ß∩ ß
- áñαÑßá 10000h, ß«ñÑαª¿Γ ñá¡¡δÑ, »«¬áºá¡¡δÑ ¡á É¿ß. 6.2. è«úñá αÑ-
- ú¿ßΓα DS πßΓá¡áó½¿óáÑΓß∩ ó º¡áτÑ¡¿Ñ 1000h, »α«úαá¼¼á, ¬«Γ«αá∩ «í-
- αáΘáÑΓß∩ ¬ ßΓα«¬Ñ "Testing" »« áñαÑßπ 1000:FFF9, »«ß½Ñ ß¿¼ó«½á g
- »« áñαÑßπ 1000:FFFF, ó«ºóαáΘáÑΓß∩ ¡áºáñ ¬ íá⌐Γπ »« áñαÑßπ
- 1000:0000, Γᬠ¬á¬ ß¼ÑΘÑ¡¿Ñ ¡Ñ ¼«ªÑΓ »αÑóδΦáΓ∞ 0FFFFh (¼á¬ß¿¼á½∞-
- ¡«Ñ 16-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ).
-
- ÅÑαóδ⌐ íá⌐Γ, áñαÑßπѼδ⌐ «Γ¡«ß¿Γѽ∞¡«
- DS, αáóÑ¡ 1000h (áñαÑß 1000 0000)
- | |
- --------------- |
- 10000 | 21 |<----------------
- |-------------|
- 10001 | 90 |
- |-------------|
- 10002 | 29 |
- |-------------|
- 10003 | 52 |
- |-------------|
- 10004 | 7F |
- ---------------
-
- ---------------
- 1FFF9 | 54 ('T') |
- |-------------|
- 1FFFA | 65 ('e') |
- |-------------|
- 1FFFB | 73 ('s') |
- |-------------|
- 1FFFC | 74 ('t') |
- |-------------|
- 1FFFD | 69 ('i') | ū߽Ññ¡¿⌐ íá⌐Γ, áñαÑßπѼδ⌐
- |-------------| «Γ¡«ß¿Γѽ∞¡« DS = 1000h
- 1FFFE | 6E ('n') | (áñαÑß 1000 FFFF)
- |-------------| |
- 1FFFF | 67 ('g') |<---------------
- |-------------|
- 20000 | 00 (NULL) |
- ---------------
-
- É¿ß. 6.2 Åα¿¼Ñα ñ«ßΓ¿ªÑ¡¿∩ úαá¡¿µδ ßÑú¼Ñ¡Γá.
-
- ÅαÑñ»«½«ª¿¼ ΓÑ»Ñα∞, τΓ« »α¿ DS:SI, αáó¡«¼ 1000:FFF9, óδºδóá-
- ÑΓß∩ »«ñ»α«úαá¼¼á ñ½∩ »αÑ«íαẫóá¡¿∩ ßΓ᫬¿ "Testing" ó óÑασ¡¿⌐
- αÑú¿ßΓα:
-
- ; Å«ñ»α«úαá¼¼á ñ½∩ »αÑ«íαẫóá¡¿∩ ºáóÑαΦáεΘÑ⌐ß∩ ¡π½Ñóδ¼
- ; ß¿¼ó«½«¼ ßΓ᫬¿ ó óÑασ¡¿⌐ αÑú¿ßΓα.
- ;
- ; éó«ñ: DS:DI - π¬áºáΓѽ∞ ¡á ßΓ᫬π.
- ;
- ToUpper PROC NEAR
- mov ax,[si] ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- cmp al,0 ; Ñß½¿ 0...
- jz ToUpperDone ; ...»αÑ«íαẫóáΓ∞ ßΓ᫬π
- cmp al,'a' ; φΓ« ßΓα«τ¡á∩ íπ¬óá?
- jb ToUpperCase ; ¡Ñ ßΓα«τ¡á∩ íπ¬óá
- cmp al,'z'
- ja ToUpperNext ; ¡Ñ ßΓα«τ¡á∩ íπ¬óá
- and al,NOT 20h ; ßΓα«τ¡á∩ íπ¬óá, »αÑ«íαẫóáΓ∞
- ; ÑÑ ó óÑασ¡¿⌐ αÑú¿ßΓα
- mov [si],al ; ß«σαá¡¿Γ∞ »α«»¿ß¡πε íπ¬óπ
- ToUpperNext:
- inc si ; ßßδ½¬á ¡á ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- jmp ToUpper
- ToUpperDone:
- ret
- ToUpper ENDP
-
- Å«ß½Ñ Γ«ú«, ¬á¬ »α«µÑñπαá ToUpper «íαáí«ΓáÑΓ »ÑαóδÑ ßѼ∞
- ß¿¼ó«½«ó ßΓ᫬¿, SI ¿º¼Ñ¡¿Γ º¡áτÑ¡¿Ñ ß 0FFFFh ¡á 0. (SI - φΓ«
- 16-αáºα∩ñ¡δ⌐ αÑú¿ßΓα, »«φΓ«¼π «ΓßτÑΓ ß »αÑóδΦÑ¡¿Ñ¼ º¡áτÑ¡¿∩
- 0FFFFh óδ»«½¡¿Γ∞ ¡Ñ½∞º∩.) çáóÑαΦáεΘ¿⌐ ßΓ᫬π ¡π½Ñó«⌐ íá⌐Γ, ºá»¿-
- ßá¡¡δ⌐ »« áñαÑßπ 20000h, ñ«ßΓ¿ú¡πΓ ¡Ñ íπñÑΓ. é¼ÑßΓ« φΓ«ú« »α«µÑ-
- ñπαá ¡áτ¡ÑΓ »αÑ«íαẫóδóáΓ∞ ¡Ñ «Γ¡«ß∩Θ¿Ñß∩ ¬ ñѽπ íá⌐Γδ »« áñαÑßπ
- 10000h ¿ ¡Ñ «ßΓá¡«ó¿Γß∩, »«¬á ¡Ñ óßΓαÑΓ¿Γ ¡π½Ñó«⌐ íá⌐Γ. ìá í«½ÑÑ
- »«ºñ¡Ñ¼ φΓá»Ñ φΓ¿ ¿º¼Ñ¡Ñ¡¡δÑ íá⌐Γδ ¼«úπΓ óδºóáΓ∞ ¡Ñ¬«ααÑ¬Γ¡πε αá-
- í«Γπ »α«úαá¼¼δ. ùáßΓ« Γá¬¿Ñ «Φ¿í¬¿, óδºóá¡¡δÑ ß½πτá⌐¡δ¼ ¿º¼Ñ¡Ñ¡¿-
- Ѽ íá⌐Γ »α¿ ñ«ßΓ¿ªÑ¡¿¿ »α«úαá¼¼δ ¬«¡µá ßÑú¼Ñ¡Γá, íδóáÑΓ «τÑ¡∞
- Γαπñ¡« «Γß½Ññ¿Γ∞, »«ß¬«½∞¬π φΓ¿ «Φ¿í¬¿ ¼«úπΓ »α«∩ó½∩Γ∞ß∩ ß«óßѼ ó
- ñαπú«¼ ¼ÑßΓÑ »α«úαá¼¼δ ¿ ó ñαπú«Ñ óαѼ∩.
-
- Åα«ßΓπε αѬ«¼Ñ¡ñáµ¿ε ºñÑß∞ ñáΓ∞ Γαπñ¡«. ìπª¡« »α«ßΓ« «íÑß»Ñ-
- τ¿óáΓ∞, τΓ«íδ óáΦá »α«úαá¼¼á ¡Ñ»αÑñ¡á¼ÑαÑ¡¡« ¡Ñ óδσ«ñ¿½á ºá ¬«¡Ñµ
- ßÑú¼Ñ¡Γá. èα«¼Ñ Γ«ú« ¡Ñ ß½ÑñπÑΓ «íαáΘáΓ∞ß∩ ¬ ß½«óπ ß áñαÑß«¼
- 0FFFFh. îáΦ¿¡á ¼«ªÑΓ "ºáó¿ß¡πΓ∞".
-
-
-
- ìÑ»«½¡«Ñ ß«σαá¡Ñ¡¿Ñ ß«ßΓ«∩¡¿∩ ó «íαáí«Γτ¿¬Ñ »αÑαδóá¡¿⌐
- -----------------------------------------------------------------
-
- Äíαáí«Γτ¿¬ »αÑαδóá¡¿⌐ - φΓ« »α«úαá¼¼á, ¡á ¬«Γ«απε «ßπΘÑ-
- ßΓó½∩ÑΓß∩ »ÑαÑσ«ñ »α¿ á»»áαáΓ¡«¼ »αÑαδóá¡¿¿, ¡á»α¿¼Ñα, »αÑαδóá¡¿¿
- «Γ ¬½áó¿áΓπαδ. Äíαáí«Γτ¿¬ »αÑαδóá¡¿⌐ óδ»«½¡∩ÑΓ ¼¡«ªÑßΓó« Σπ¡¬µ¿⌐,
- Γᬿσ, ¬á¬ íπΣÑα¿ºáµ¿∩ ¬½áó¿Φ ¿½¿ ¿º¼Ñ¡Ñ¡¿Ñ ß¿ßΓѼ¡«ú« Γá⌐¼Ñαá.
- ÅαÑαδóá¡¿Ñ ¼«ªÑΓ »α«¿º«⌐Γ¿ ó ½εí«Ñ óαѼ∩ ó »α«µÑßßÑ αáí«Γδ ½εí«⌐
- »α«úαá¼¼δ, »«φΓ«¼π «íαáí«Γτ¿¬ »αÑαδóá¡¿⌐ »«ß½Ñ ºáóÑαΦÑ¡¿∩ αáí«Γδ
- (óδσ«ñ ¿º «íαáí«Γτ¿¬á) ñ«½ªÑ¡ óÑα¡πΓ∞ αÑú¿ßΓαδ ¿ Σ½áú¿ »α«µÑßß«αá
- ó Γ«τ¡«ßΓ¿ ó Γ«ªÑ ßá¼«Ñ ß«ßΓ«∩¡¿Ñ, ¬«Γ«α«Ñ í佫 »α¿ óσ«ñÑ ó «íαá-
- í«Γτ¿¬ »αÑαδóá¡¿⌐. àß½¿ φΓ« ¡Ñ ñѽáÑΓß∩, Γ« »α«úαá¼¼á, »α¿ óδ»«½-
- ¡Ñ¡¿¿ ¬«Γ«α«⌐ »α«¿º«Φ½« »αÑαδóá¡¿Ñ, ¼«ªÑΓ «í¡áαπª¿Γ∞, τΓ« ß«ßΓ«∩-
- ¡¿Ñ »α«µÑßß«αá ¡Ñ»αÑñó¿ñÑ¡¡δ¼ «íαẫ¼ ¿º¼Ñ¡¿½«ß∞.
-
- ìá»α¿¼Ñα, »α¿ óδ»«½¡Ñ¡¿¿ »α«úαá¼¼δ:
-
- .
- .
- .
- mov ax,[ReturnValue]
- ret
- .
- .
- .
-
- »αÑαδóá¡¿Ñ ¼«ªÑΓ »α«¿º«⌐Γ¿ ¼Ñªñπ φΓ¿¼¿ ñóπ¼∩ ¿¡ßΓαπ¬µ¿∩¼¿. àß½¿
- «íαáí«Γτ¿¬ »αÑαδóá¡¿⌐ ¡Ñ ß«σαá¡¿Γ ß«ñÑন¼«Ñ AX, Γ« ó«ºóαáΘáѼ«Ñ
- ó óδºδóáεΘπε »α«úαá¼¼π º¡áτÑ¡¿Ñ íπñÑΓ «ß¡«óδóáΓ∞ß∩ ¡á Γ«¼, τΓ«
- ñѽὠ«íαáí«Γτ¿¬ »αÑαδóá¡¿⌐, á ¡Ñ ¡á º¡áτÑ¡¿¿ »ÑαѼѡ¡«⌐
- ReturnValue.
-
- Å«φΓ«¼π ¬áªñδ⌐ «íαáí«Γτ¿¬ »αÑαδóá¡¿⌐ ñ«½ªÑ¡ ∩ó¡δ¼ «íαẫ¼
- ß«σαá¡∩Γ∞ ß«ñÑন¼«Ñ óßÑσ αÑú¿ßΓα«ó. ò«Γ∩ ñ«»π߬áÑΓß∩ ß«σαá¡∩Γ∞
- Γ«½∞¬« ΓÑ αÑú¿ßΓαδ, ¬«Γ«αδÑ ¿º¼Ñ¡∩ÑΓ «íαáí«Γτ¿¬ »αÑαδóá¡¿⌐, ñ½∩
- í«½∞ΦÑ⌐ úáαá¡Γ¿¿ ½πτΦÑ »α¿ óσ«ñÑ ó «íαáí«Γτ¿¬ ºá¡ÑßΓ¿ óßÑ αÑú¿ßΓ-
- αδ ó ßΓѬ, á »α¿ óδσ«ñÑ - ó«ßßΓá¡«ó¿Γ∞ ¿σ ¿º ßΓѬá. éÑñ∞ ó «ñ¿¡
- »αѬαáß¡δ⌐ ñÑ¡∞ óδ ¼«ªÑΓÑ óÑα¡πΓ∞ß∩ ¬ ¬«ñπ «íαáí«Γτ¿¬á »αÑαδóá-
- ¡¿⌐, ¼«ñ¿Σ¿µ¿απÑΓÑ Ñú« ¿ ¿ß»«½∞ºπÑΓÑ ñ«»«½¡¿Γѽ∞¡δÑ αÑú¿ßΓαδ, ºá-
- íδó »α¿ φΓ«¼ ñá¡¡δÑ αÑú¿ßΓαδ ß«σαá¡¿Γ∞.
-
- æ«σαá¡Ñ¡¿Ñ Σ½áú«ó ó «íαáí«Γτ¿¬Ñ »αÑαδóá¡¿⌐ ¡Ñ«íσ«ñ¿¼δ¼ ¡Ñ
- ∩ó½∩ÑΓß∩. è«úñá »α«¿ßσ«ñ¿Γ »αÑαδóá¡¿Ñ, óßÑ Σ½áú¿ áóΓ«¼áΓ¿τÑ߬¿
- ºá¡«ß∩Γß∩ ó ßΓѬ, á ¬«úñá «íαáí«Γτ¿¬ »αÑαδóá¡¿⌐ óδ»«½¡∩ÑΓ ¿¡ßΓ-
- απ¬µ¿ε IRET, τΓ«íδ óÑα¡πΓ∞ß∩ ó »αÑαóá¡¡πε »α«úαá¼¼π, Σ½áú¿ áóΓ«-
- ¼áΓ¿τÑ߬¿ ó«ßßΓá¡áó½¿óáεΓß∩ ¿º ßΓѬá. êΓ«ú«¼ áíß«½εΓ¡«⌐ ¡Ñ«íσ«ñ¿-
- ¼«ßΓ¿ ß«σαá¡Ñ¡¿∩ ó «íαáí«Γτ¿¬Ñ »αÑαδóá¡¿⌐ óßÑσ αÑú¿ßΓα«ó ∩ó½∩ÑΓß∩
- ß½ÑñπεΘÑÑ »αá󿽫: ¡Ñ½∞º∩ ñѽáΓ∞ »αÑñ»«½«ªÑ¡¿∩ « ß«ßΓ«∩¡¿¿ αÑ-
- ú¿ßΓα«ó ¿½¿ Σ½áú«ó »α¿ óσ«ñÑ ó «íαáí«Γτ¿¬ »αÑαδóá¡¿⌐. è½áßß¿τÑß-
- ¬¿¼ »α¿¼Ñα«¼ φΓ«ú« ∩ó½∩ÑΓß∩ «íαáí«Γτ¿¬ »αÑαδóá¡¿⌐, ¬«Γ«αδ⌐ óδ-
- »«½¡∩ÑΓ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿, ¡Ñ πßΓá¡«ó¿ó »αÑñóáα¿Γѽ∞¡« ∩ó¡δ¼
- «íαẫ¼ Σ½áú ¡á»αáó½Ñ¡¿∩. ìπª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« ¬«úñá »α«¿ßσ«-
- ñ¿Γ »αÑαδóá¡¿Ñ, ¼«ªÑΓ óδ»«½¡∩Γ∞ß∩ ½εíá∩ »α«úαá¼¼á, »«φΓ«¼π »«ß½Ñ
- Γ«ú«, ¬á¬ óδ ß«σαá¡¿ΓÑ αÑú¿ßΓαδ »αÑαóá¡¡«⌐ »α«úαá¼¼δ, óδ ñ«½ª¡δ
- πßΓá¡«ó¿Γ∞ αÑú¿ßΓαδ (ó¬½ετá∩ ßÑú¼Ñ¡Γ¡δÑ αÑú¿ßΓαδ) ¿ Σ½áú¿ Γᬿ¼
- «íαẫ¼, ¬á¬ φΓ« ¡Ñ«íσ«ñ¿¼«. Æ«½∞¬« »«ß½Ñ φΓ«ú« óδ ¼«ªÑΓÑ óδ»«½-
- ¡∩Γ∞ ñαπú¿Ñ Σπ¡¬µ¿¿.
-
-
-
- ìÑ ºáíδóá⌐ΓÑ «í «»αÑñѽѡ¿¿ úαπ»»δ ó «»Ñαá¡ñáσ ¿ Γáí½¿µáσ ñá¡¡δσ
- -----------------------------------------------------------------
-
- è«¡µÑ»µ¿∩ úαπ»»δ ßÑú¼Ñ¡Γ«ó »α«ßΓá ¿ »«½Ñº¡á. éδ ¼«ªÑΓÑ «»αÑ-
- ñѽ¿Γ∞, τΓ« ¡Ñ߬«½∞¬« ßÑú¼Ñ¡Γ«ó »α¿¡áñ½ÑªáΓ ¬ «ñ¡«⌐ ¿ Γ«⌐ ªÑ
- úαπ»»Ñ, á ¬«¼»«¡«óΘ¿¬ ¬«¼í¿¡¿απÑΓ φΓ¿ ßÑú¼Ñ¡Γδ ó «ñ¿¡ ßÑú¼Ñ¡Γ.
- Åα¿ φΓ«¼ óßÑ ñá¡¡δÑ ó ßúαπ»»¿α«óá¡¡δσ ßÑú¼Ñ¡Γáσ áñαÑßπεΓß∩ «Γ¡«-
- ß¿Γѽ∞¡« «ñ¡«ú« ¿ Γ«ú« ªÑ ßÑú¼Ñ¡Γ¡«ú« αÑú¿ßΓαá. ìá É¿ß. 6.3 »«¬á-
- ºá¡« Γα¿ ßÑú¼Ñ¡Γá: Seg1, Seg2 ¿ Seg3, ßúαπ»»¿α«óá¡¡δÑ ó GroupSeg.
- ÇñαÑßᵿ∩ ¬« óßѼ ΓαѼ ßÑú¼Ñ¡Γá¼ «ßπΘÑßΓó½∩ÑΓß∩ «ñ¡«óαѼѡ¡« «Γ-
- ¡«ß¿Γѽ∞¡« «ñ¡«ú« ßÑú¼Ñ¡Γ¡«ú« αÑú¿ßΓαá, ºáúαπªÑ¡¡«ú« íẫóδ¼ áñ-
- αÑß«¼ GroupSeg.
-
- æ¼ÑΘÑ¡¿Ñ 0 ó GroupSeg
- = ß¼ÑΘÑ¡¿ε 0 ó Seg1
- |
- / ---------------------- <-------
- | | |
- | | |
- | | Seg1 | æ¼ÑΘÑ¡¿Ñ 2000h ó
- | | (αẼÑα 8K) | GroupSeg = ß¼ÑΘÑ¡¿ε 0
- | | | ó Seg2
- | | | |
- | |--------------------| <-------
- | | |
- | | |
- | | Seg2 |
- | | (αẼÑα 12K) |
- GroupSeg | | | æ¼ÑΘÑ¡¿Ñ 5000h ó
- | | | GroupSeg = ß¼ÑΘÑ¡¿ε 0
- | | | ó Seg3
- | | | |
- | |--------------------| <-------
- | | |
- | | |
- | | Seg3 |
- | | (αẼÑα 64K) |
- | | |
- | | |
- | | |
- | | |
- \ ----------------------
-
- É¿ß. 6.3 Æα¿ ßÑú¼Ñ¡Γá, «íΩÑñ¿¡Ñ¡¡δÑ ó «ñ¡π úαπ»»π ßÑú¼Ñ¡Γ«ó.
-
- âαπ»»δ ßÑú¼Ñ¡Γ«ó »«ºó«½∩εΓ óá¼ ½«ú¿τÑ߬¿ αáºñѽ¿Γ∞ ñá¡¡δÑ ¡á
- α∩ñ «í½áßΓÑ⌐ íѺ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ºáúαπªáΓ∞ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα ¬áª-
- ñδ⌐ αáº, ¬«úñá óδ σ«Γ¿ΓÑ »ÑαÑ⌐Γ¿ «Γ «ñ¡«⌐ ½«ú¿τÑ߬«⌐ «í½áßΓ¿ ñá¡-
- ¡δσ ¬ ñαπú«⌐.
-
- è ß«ªá½Ñ¡¿ε, ó «íαáí«Γ¬Ñ úαπ»» ßÑú¼Ñ¡Γ«ó ó îá¬α«áßßѼí½ÑαÑ
- Σ¿α¼δ Microsoft MASM ¿¼ÑÑΓß∩ α∩ñ »α«í½Ñ¼, »«φΓ«¼π, »«¬á ¡Ñ »«∩-
- ó¿½ß∩ Æπαí« ÇßßѼí½Ñα, úαπ»»δ ßÑú¼Ñ¡Γ«ó ¼«ú½¿ »α¿óÑßΓ¿ ¬ ¡Ñ»α¿∩Γ-
- ¡«ßΓ∩¼. âαπ»»δ ßÑú¼Ñ¡Γ«ó ¿ß»«½∞º«ó὿ß∞ ñ½∩ ¬«¼»«¡«ó¬¿ ¬«ñá Çß-
- ßѼí½Ñαá ß ∩ºδ¬á¼¿ óδß«¬«ú« πα«ó¡∩ (¡á»α¿¼Ñα, æ¿).
-
- ô½πτΦÑ¡¡δ⌐ αѪ¿¼ Æπαí« ÇßßѼí½Ñαá (Ideal mode) ¿ºíáó¿Γ óáß
- «Γ »α«í½Ñ¼, ßó∩ºá¡¡δσ ß «»αÑñѽѡ¿Ñ¼ úαπ»» ßÑú¼Ñ¡Γ«ó. ¥Γ« ÑΘÑ
- «ñ¿¡ ñ«ó«ñ ó »«½∞ºπ »ÑαÑσ«ñá «Γ »α«úαá¼¼¿α«óá¡¿∩ ó ßΓ¿½Ñ MASM ¬
- π½πτΦÑ¡¡«¼π αѪ¿¼π.
-
- Åα«í½Ñ¼á, ¬«Γ«απε »«α«ªñáÑΓ MASM »α¿ αáí«ΓÑ ß úαπ»»á¼¿ ßÑú-
- ¼Ñ¡Γ«ó ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ« MASM ¿¡ΓÑα»αÑΓ¿απÑΓ ß¼ÑΘÑ¡¿∩, »«½π-
- τÑ¡¡δÑ ß »«¼«Θ∞ε «»Ñαᵿ¿ OFFSET ó ñá¡¡«¼ ßÑú¼Ñ¡ΓÑ úαπ»»δ, ¬á¬
- ß¼ÑΘÑ¡¿Ñ ó φΓ«¼ ßÑú¼Ñ¡ΓÑ, á ¡Ñ ¬á¬ ß¼ÑΘÑ¡¿Ñ ó úαπ»»Ñ ßÑú¼Ñ¡Γ«ó.
- ìá»α¿¼Ñα, Ñß½¿ ¼δ ¿¼ÑÑΓ úαπ»»π ßÑú¼Ñ¡Γ«ó, »«¬áºá¡¡πε ¡á É¿ß. 6.3,
- Γ« ÇßßѼí½Ñα Γαá¡ß½¿α«óá½ íδ ¿¡ßΓαπ¬µ¿ε:
-
- mov ax,OFFSET Var1
- ó
- mov ax,0
-
- Γᬠ¬á¬ Var1 - φΓ« ß¼ÑΘÑ¡¿Ñ 0 ó Seg2, σ«Γ∩ Var1 »αÑñßΓáó½∩ÑΓ ß«-
- í«⌐ ß¼ÑΘÑ¡¿Ñ 2000h ó GroupSeg. ū߬«½∞¬π »αÑñ»«½áúáÑΓß∩, τΓ« ñá¡-
- ¡δÑ ó úαπ»»Ñ ßÑú¼Ñ¡Γ«ó áñαÑßπεΓß∩ «Γ¡«ß¿Γѽ∞¡« úαπ»»δ ßÑú¼Ñ¡Γ«ó,
- á ¡Ñ «Γ¡«ß¿Γѽ∞¡« «Γñѽ∞¡«ú« ßÑú¼Ñ¡Γá, φΓ« »«α«ªñáÑΓ α∩ñ »α«í½Ñ¼.
-
- ÉÑΦÑ¡¿Ñ¼ ºñÑß∞ ∩ó½∩ÑΓß∩ ¿ß»«½∞º«óá¡¿Ñ »αÑΣ¿¬ßá «»αÑñѽѡ¿∩
- úαπ»»δ. æΓ᫬á:
-
- mov ax,OFFSET GroupSeg:Var1
-
- »«ºó«½∩ÑΓ óδ»«½¡¿Γ∞ ¬«ααÑ¬Γ¡«Ñ áßßÑ¼í½¿α«óá¡¿Ñ Var1, óδτ¿ß½∩∩ Ñú«
- «Γ¡«ß¿Γѽ∞¡« úαπ»»δ ßÑú¼Ñ¡Γ«ó GruopSeg.
-
- é MASM ÑßΓ∞ ñαπú¿Ñ á¡á½«ú¿τ¡δÑ »α«í½Ñ¼δ, ¬áßáεΘ¿Ñß∩ ¿ß»«½∞-
- ºπѼδσ ó úαπ»»áσ ßÑú¼Ñ¡Γ«ó Γáí½¿µ ñá¡¡δσ. èᬠ¿ «»Ñαᵿ∩ OFFSET,
- ß¼ÑΘÑ¡¿∩, áßßÑ¼í½¿απѼδÑ ó Γáí½¿µδ ñá¡¡δσ, úÑ¡Ñα¿απεΓß∩ «Γ¡«ß¿-
- Γѽ∞¡« ßÑú¼Ñ¡Γ«ó, á ¡Ñ «Γ¡«ß¿Γѽ∞¡« úαπ»» ßÑú¼Ñ¡Γ«ó. æπΓ∞ φΓ«⌐
- »α«í½Ñ¼δ »«¬áºá¡á ó ß½ÑñπεΘѼ »α¿¼ÑαÑ:
-
- Stack SEGMENT WORD STASK 'STACK'
- DB 512 DUP (?) ; ºáαѺÑαó¿α«óáΓ∞ »α«ßΓαá¡-
- ; ßΓó« ñ½∩ ßΓѬá αẼÑα«ó
- ; 1/2 è
- Stack ENDS
-
- ;
- ; Ä»αÑñѽ¿Γ∞ úαπ»»π ßÑú¼Ñ¡Γá ñá¡¡δσ DGROUP, ß«ßΓ«∩Θπε
- ; ¿º Data1 ¿ Data2
- ;
- DGROUP GROUP Data1, Data2
-
- ;
- ; ÅÑαóδ⌐ ßÑú¼Ñ¡Γ ó DGROUP.
- ;
- Data1 SEGMENT WORD PUBLIC 'DATA'
- Scratch DB 100h DUP (0) ; íπΣÑα αẼÑα«¼ 256K
- Data1 ENDS
-
- ;
- ; éΓ«α«⌐ ßÑú¼Ñ¡Γ ó DGROUP.
- ;
- Data2 SEGMENT WORD PUBLIC 'DATA'
- Buffer DB 100h DUP ('@') ; íπΣÑα αẼÑα«¼ 256è,
- ; ºá»«½¡Ñ¡¡δ⌐ º¡á¬á¼¿ @
- BufferPtr DW Buffer ; π¬áºáΓѽ∞ ¡á íπΣÑα
- Data2 ENDS
-
- Code SEGMENT PARA PUBLIC 'CODE'
- ASSUME CS:Code, DS:DGROUP
-
- ;
- Start PROC NEAR
- mov ax,DGROUP
- mov ds,ax ; DS π¬áºδóáÑΓ ¡á DGROUP
- mov bx,OFFSET GROUP:BufferPtr ; ßßδ½¬á ¡á π¬áºáΓѽ∞
- ; íπΣÑαá
- ; (ñ½∩ »«½πτÑ¡¿∩ ¬«ααÑ¬Γ¡«ú«
- ; ß¼ÑΘÑ¡¿∩ ¿ß»«½∞ºπÑΓß∩
- ; «»αÑñѽѡ¿Ñ úαπ»»δ)
- mov bx,[bx] ; ccδ½¬á ¡á ßá¼ íπΣÑα
-
- ;
- ; (çñÑß∞ ñ«½ªÑ¡ ß½Ññ«óáΓ∞ ¬«ñ ñ½∩ «íαáí«Γ¬¿ íπΣÑαá)
- ;
- mov ah,4Ch ; Σπ¡¬µ¿∩ DOS ºáóÑαΦÑ¡¿∩
- ; »α«úαá¼¼δ
- int 21h ; ºáóÑαΦ¿Γ∞ »α«úαá¼¼π ¿
- ; óδ⌐Γ¿ ó DOS
- Start ENDP
- Code ENDS
- END Start
-
- é ñá¡¡«⌐ »α«úαá¼¼Ñ ß¼ÑΘÑ¡¿Ñ BufferPtr ó ¿¡ßΓαπ¬µ¿¿:
-
- mov bx,OFFSET DGROUP:BufferPtr
-
- áßßÑ¼í½¿απÑΓß∩ ¬«ααÑ¬Γ¡«, Γᬠ¬á¬ ¿ß»«½∞ºπÑΓß∩ »αÑΣ¿¬ß «»αÑñѽÑ-
- ¡¿∩ DGROUP:úαπ»»á. Äñ¡á¬« ñαπúá∩ ßßδ½¬á ¡á ß¼ÑΘÑ¡¿Ñ:
-
- BufferPtr DW Buffer
-
- ¬«Γ«αá∩ ñ«½ª¡á »α¿ó«ñ¿Γ∞ ¬ ¿¡¿µ¿á½¿ºáµ¿¿ º¡áτÑ¡¿∩ BufferPtr ß¼Ñ-
- ΘÑ¡¿Ñ¼ Buffer, ¡Ñ íπñÑΓ ¬«ααÑ¬Γ¡« áßßÑ¼í½¿α«óáΓ∞ß∩, Γᬠ¬á¬ ß¼Ñ-
- ΘÑ¡¿Ñ Buffer íÑαÑΓß∩ «Γ¡«ß¿Γѽ∞¡« ßÑú¼Ñ¡Γá Data2, á ¡Ñ «Γ¡«ß¿-
- Γѽ∞¡« úαπ»»δ ßÑú¼Ñ¡Γ«ó DGROUP. ÉÑΦÑ¡¿Ñ¼ ºñÑß∞ «»∩Γ∞ ∩ó½∩ÑΓß∩ ¿ß-
- »«½∞º«óá¡¿Ñ »αÑΣ¿¬ßá «»αÑñѽѡ¿∩ DGROUP, ñ½∩ τÑú« ¡πª¡« ¿º¼Ñ¡¿Γ∞
-
- BufferPtr DW Buffer
-
- ¡á
-
- BufferPtr DW DGROUP:Buffer ; π¬áºáΓѽ∞ ¡á Buffer
- ; (ñ½∩ »«½πτÑ¡¿∩
- ; ¬«ααÑ¬Γ¡«ú« π¬áºáΓѽ∩
- ; ¿ß»«½∞ºπÑΓß∩
- ; «»αÑñѽѡ¿Ñ úαπ»»δ)
-
- Åα«»π߬ »αÑΣ¿¬ßá «»αÑñѽѡ¿∩ úαπ»»δ »α¿ ¿ß»«½∞º«óá¡¿¿ úαπ»»
- ßÑú¼Ñ¡Γ«ó ó αѪ¿¼Ñ MASM »α¿ó«ñ¿Γ ¬ ¡Ñ¬«Γ«αδ¼ ¡Ñ»α¿∩Γ¡δ¼ «Φ¿í¬á¼,
- Γᬠ¬á¬ óáΦá »α«úαá¼¼á ¼«ªÑΓ »α¿ φΓ«¼ óδ»«½¡∩Γ∞ τΓÑ¡¿Ñ, »ÑαÑσ«ñ
- ¿½¿ ¼«ñ¿Σ¿¬áµ¿ε ¡ÑóÑα¡δσ «í½áßΓÑ⌐ »á¼∩Γ¿. é ¬áτÑßΓóÑ «íΘÑú« »αá-
- ó¿½á ¼«ª¡« »«αѬ«¼Ñ¡ñ«óáΓ∞ ¡Ñ ¿ß»«½∞º«óáΓ∞ úαπ»»δ »α¿ áßßÑ¼í½¿α«-
- óá¡¿¿ ó αѪ¿¼Ñ MASM, Ñß½¿ íѺ φΓ«ú« ¼«ª¡« «í«⌐Γ¿ß∞. è«úñá óá¼
- »α¿σ«ñ¿Γß∩ ¿ß»«½∞º«óáΓ∞ úαπ»»δ ßÑú¼Ñ¡Γ«ó (¡á»α¿¼Ñα, »α¿ «αúá¡¿ºá-
- µ¿¿ ¿¡ΓÑαΣÑ⌐ßá ß ∩ºδ¬«¼ óδß«¬«ú« πα«ó¡∩) ¡Ñ ºáíδóá⌐ΓÑ »α¿ ºáñá¡¿¿
- ß¼ÑΘÑ¡¿⌐ ñ½∩ óßÑσ ñá¡¡δσ úαπ»»δ ¿ß»«½∞º«óáΓ∞ »αÑΣ¿¬ß «»αÑñѽѡ¿∩
- úαπ»»δ. ¥Γ¿¼ »αÑΣ¿¬ß«¼ ñ«ó«½∞¡« ½Ñú¬« »«½∞º«óáΓ∞ß∩, ¡πª¡« Γ«½∞¬«
- ¡Ñ ºáíδóáΓ∞ «í φΓ«¼.
-
- Å«½Ñº¡δ¼ ¼ÑΓ«ñ«¼ »α¿ αáí«ΓÑ ß úαπ»»«⌐ ßÑú¼Ñ¡Γ«ó ó αѪ¿¼Ñ
- MASM ∩ó½∩ÑΓß∩ ¿ß»«½∞º«óá¡¿Ñ ó¼ÑßΓ« MOV OFFSET ¿¡ßΓαπ¬µ¿¿ LEA.
- ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩:
-
- lea ax,Var1
-
- óδ»«½¡∩ÑΓ Γ« ªÑ ñÑ⌐ßΓó¿Ñ, τΓ« ¿ ¿¡ßΓαπ¬µ¿∩:
-
- mov ax,OFFSET GroupSeg:Var1
-
- ¡Ñ ΓαÑíπ∩ ¿ß»«½∞º«óá¡¿∩ »αÑΣ¿¬ßá «»αÑñѽѡ¿∩ úαπ»»δ. Äñ¡á¬« ¿¡ßΓ-
- απ¬µ¿∩ LEA ¡á íá⌐Γ ñ½¿¡¡ÑÑ ¿ óδ»«½¡∩ÑΓß∩ ¡Ñ߬«½∞¬« ñ«½∞ΦÑ, τѼ
- ¿¡ßΓαπ¬µ¿∩ MOV OFFSET.
-
- èßΓáΓ¿, »α¿ ¿ß»«½∞º«óá¡¿¿ úαπ»» ßÑú¼Ñ¡Γ«ó »α«í½Ñ¼δ ¼«úπΓ
- 󫺡¿¬áΓ∞ Γ«½∞¬« ß« ß¼ÑΘÑ¡¿∩¼¿, á ¡Ñ ß ñ«ßΓπ»«¼ ¬ »á¼∩Γ¿. é Γᬿσ
- ßΓ᫬áσ, ¬á¬:
-
- mov ax,[Var1]
-
- ¡Ñ ΓαÑíπÑΓß∩ ¿ß»«½∞º«óáΓ∞ »αÑΣ¿¬ß «»αÑñѽѡ¿∩ úαπ»»δ.
-
-
-
-
- â½áóá 7. ê¡ΓÑαΣÑ⌐ß Æπαí« ÇßßѼí½Ñαá ¿ Æπαí« æ¿
- -----------------------------------------------------------------
-
- ò«Γ∩ ¡Ñ¬«Γ«αδÑ »α«úαá¼¼¿ßΓδ ¼«úπΓ αáºαáíáΓδóáΓ∞ »α«úαá¼¼δ
- µÑ½¿¬«¼ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá (¿ ñѽáεΓ φΓ«), ñαπú¿Ñ »αÑñ»«τ¿ΓáεΓ
- »¿ßáΓ∞ «ß¡«ó¡πε τáßΓ∞ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ óδß«¬«ú« πα«ó¡∩, «íαáΘá-
- ∩ß∞ ¬ ∩ºδ¬π ÇßßѼí½Ñαá Γ«½∞¬« ñ½∩ «ßπΘÑßΓó½Ñ¡¿∩ π»αáó½Ñ¡¿∩ ¡¿ª¡Ñ-
- ú« πα«ó¡∩ ¿½¿ ¬«úñá ΓαÑíπÑΓß∩ óδß«¬á∩ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ∞. ìѬ«Γ«-
- αδÑ »αÑñ»«τ¿ΓáεΓ »¿ßáΓ∞ »αÑ¿¼πΘÑßΓóÑ¡¡« ¡á ÇßßѼí½ÑαÑ, Γ«½∞¬«
- ¿¡«úñá ¿ß»«½∞ºπ∩ ¬«¡ßΓαπ¬µ¿¿ ¿ í¿í½¿«ΓÑτ¡δÑ ßαÑñßΓóá ∩ºδ¬«ó óδß«-
- ¬«ú« πα«ó¡∩.
-
- ä½∩ ß¼ÑΦá¡¡«ú« »α«úαá¼¼¿α«óá¡¿∩ ¡á ∩ºδ¬Ñ óδß«¬«ú« πα«ó¡∩ ¿
- ÇßßѼí½ÑαÑ »αѬαáß¡« »«ñσ«ñ¿Γ Æπαí« æ¿. ä½∩ «íΩÑñ¿¡Ñ¡¿∩ ¬«ñá Çß-
- ßѼí½Ñαá ¿ æ¿ ó ¡Ñ¼ »αÑñπß¼«ΓαÑ¡ ¡Ñ «ñ¿¡, á µÑ½δσ ñóá ¼Ñσá¡¿º¼á.
- æαÑñßΓó« óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ó Æπαí« æ¿ «íÑß»Ñτ¿óáÑΓ íδßΓαδ⌐ ¿
- πñ«í¡δ⌐ ß»«ß«í ñ½∩ ó¬½ετÑ¡¿∩ ¬«ñá ÇßßѼí½Ñαá ¡Ñ»«ßαÑñßΓóÑ¡¡« ó
- Σπ¡¬µ¿ε æ¿. ä½∩ ΓÑσ, ¬Γ« »αÑñ»«τ¿ΓáÑΓ »α¿ »α«úαá¼¼¿α«óá¡¿¿ ¡á Çß-
- ßѼí½ÑαÑ ¿ß»«½∞º«óáΓ∞ «Γñѽ∞¡δÑ ¼«ñπ½¿, µÑ½¿¬«¼ ¡á»¿ßá¡¡δÑ ¡á
- φΓ«¼ ∩ºδ¬Ñ, Γá¬¿Ñ ¼«ñ㫨 ¼«ª¡« áßßÑ¼í½¿α«óáΓ∞ «Γñѽ∞¡«, á ºáΓѼ
- ¬«¼»«¡«óáΓ∞ ß »α«úαἼἿ Æπαí« æ¿.
-
- æ¡áτá½á ¼δ αáßß¼«Γα¿¼ ¿ß»«½∞º«óá¡¿Ñ ó Æπαí« æ¿ óßΓα«Ñ¡¡«ú«
- ÇßßѼí½Ñαá. çáΓѼ ¼δ »«ñα«í¡« «íßπñ¿¼ ¬«¼»«¡«ó¬π «Γñѽ∞¡« áßßѼ-
- í½¿α«óá¡δσ ¼«ñπ½Ñ⌐ Æπαí« ÇßßѼí½Ñαá ß ¼«ñπ½∩¼¿ Æπαí« æ¿ ¿ ¿ßß½Ñ-
- ñπѼ »α«µÑßß ó맮óá Σπ¡¬µ¿⌐ Æπαí« ÇßßѼí½Ñαá ¿ ¬«ñá Æπαí« æ¿. ìá-
- ¬«¡Ñµ, ¼δ αáßß¼«Γα¿¼ ó맮ó Σπ¡¬µ¿⌐ Æπαí« æ¿ ¿º Æπαí« ÇßßѼí½Ñαá.
-
- Åα¿¼Ñτá¡¿Ñ: è«úñá ¼δ ú«ó«α¿¼ « Æπαí« æ¿, αÑτ∞ ¿ñÑΓ «
- Æπαí« æ¿ óÑαß¿¿ 1.5 ¿ óδΦÑ.
-
- êß»«½∞º«óá¡¿Ñ ó Æπαí« æ¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- àß½¿ óá¼ »α¿σ«ñ¿½«ß∞ ¿ß¬áΓ∞ ¿ñÑá½∞¡δ⌐ ß»«ß«í ¿ß»«½∞º«óá¡¿∩
- ÇßßѼí½Ñαá ñ½∩ Γ«¡¬«⌐ ñ«ó«ñ¬¿ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿, π óáß, ó«º-
- ¼«ª¡«, 󫺡¿¬á½« ªÑ½á¡¿Ñ ¿¼ÑΓ∞ 󫺼«ª¡«ßΓ∞ ó¬½ετáΓ∞ ¿¡ßΓαπ¬µ¿¿
- ÇßßѼí½Ñαá ó ΓÑ ¬α¿Γ¿τÑ߬¿Ñ ¼ÑßΓá »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿, úñÑ ß¬«-
- α«ßΓ∞ ÇßßѼí½Ñαá ¿ Ñú« 󫺼«ª¡«ßΓ¿ π»αáó½Ñ¡¿∩ ¡¿ª¡Ñú« πα«ó¡∩ »α¿-
- óѽ¿ íδ ¬ ßπΘÑßΓóÑ¡¡«¼π π½πτΦÑ¡¿ε »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿. àß½¿ φΓ«
- Γá¬, óἠ󫺼«ª¡« ¡Ñ σ«Γѽ«ß∞ Γá¬ªÑ ßó∩ºδóáΓ∞ß∩ ß «íδτ¡δ¼¿ ß½«ª-
- ¡«ßΓ∩¼¿ «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá Æπαí« ÇßßѼí½Ñαá ¿ æ¿. ü«½ÑÑ Γ«ú«,
- óδ, óÑα«∩Γ¡«, σ«Γѽ¿ íδ óßÑ φΓ« ßñѽáΓ∞, ¡Ñ ¼Ñ¡∩∩ ¡¿ «ñ¡«ú« í¿Γá
- ó «ßΓá½∞¡«⌐ τáßΓ¿ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿, Γ« ÑßΓ∞ τΓ«íδ πªÑ «Γ½á-
- ªÑ¡¡πε τáßΓ∞ »α«úαá¼¼δ ¡á æ¿ ¡Ñ »α¿Φ½«ß∞ íδ ¿º¼Ñ¡∩Γ∞.
-
- TASM2 #2-5/䫬 = 141 =
-
-
- é Æπαí« æ¿ óßÑ φΓ« ¼«ª¡« «ßπΘÑßΓó¿Γ∞ ß »«¼«Θ∞ε óßΓα«Ñ¡¡«ú«
- ÇßßѼí½Ñαá. éßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα - φΓ« ¡Ñ τΓ« ¿¡«Ñ, ¬á¬ 󫺼«ª-
- ¡«ßΓ∞ »«¼ÑΘáΓ∞ »αá¬Γ¿τÑ߬¿ ½εí«⌐ ¬«ñ ÇßßѼí½Ñαá ó »α«úαá¼¼δ ¡á
- ∩ºδ¬Ñ æ¿, »α¿ ß«σαá¡Ñ¡¿¿ »«½¡«ú« ñ«ßΓπ»á ¬ ¬«¡ßΓá¡Γá¼, »ÑαѼѡ¡δ¼
- ¿ ñáªÑ Σπ¡¬µ¿∩¼ æ¿. ìá ßἫ¼ ñÑ½Ñ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα »αѬαáß¡«
- »«ñσ«ñ¿Γ ¡Ñ Γ«½∞¬« ñ½∩ Γ«¡¬«⌐ ñ«ó«ñ¬¿ »α«úαá¼¼δ, »«ß¬«½∞¬π »«
- ßó«¿¼ 󫺼«ª¡«ßΓ∩¼ «¡ »α¿í½¿ªáÑΓß∩ ¬ »α«úαá¼¼¿α«óá¡¿ε ¡á τ¿ßΓ«¼
- ÇßßѼí½ÑαÑ. ìá»α¿¼Ñα, óδß«¬«»α«¿ºó«ñ¿Γѽ∞¡δ⌐ ¬«ñ ó í¿í½¿«ΓѬáσ
- Æπαí« æ¿ ¡á»¿ßá¡ ß ¿ß»«½∞º«ó᡿Ѽ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá. éßΓα«-
- Ñ¡¡δ⌐ ÇßßѼí½Ñα »«ºó«½∩ÑΓ óá¼ ñѽáΓ∞ ó óáΦ¿σ »α«úαá¼¼áσ Γ«τ¡« Γ«,
- τΓ« óδ ºáσ«Γ¿ΓÑ. Åα¿ φΓ«¼ óá¼ ¡Ñ »α¿ñÑΓß∩ íÑß»«¬«¿Γ∞ß∩ « ñÑΓá½∩σ
- ß¼ÑΦÑ¡¿∩ ∩ºδ¬«ó.
-
- Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ ¬«ñ ¡á æ¿, ¬«Γ«αδ⌐ ß½πª¿Γ »α¿¼Ñα«¼ ¿ß-
- »«½∞º«óá¡¿Ñ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá:
-
- .
- .
- .
- i = 0; /* πßΓá¡«ó¿Γ∞ i ó º¡áτÑ¡¿Ñ 0 (¡á æ¿) */
- asm dec WORD PTR i; /* π¼Ñ¡∞Φ¿Γ∞ º¡áτÑ¡¿Ñ i (¡á
- ÇßßѼí½ÑαÑ */
- i++; /* πóѽ¿τ¿Γ∞ i (¡á æ¿) */
- .
- .
- .
-
- ÅÑαóá∩ ¿ »«ß½Ññ¡∩∩ ßΓ᫬¿ óδú½∩ñ∩Γ ñ«ßΓáΓ«τ¡« «íδτ¡«, á τΓ«
- »αÑñßΓáó½∩ÑΓ ß«í«⌐ ßαÑñ¡∩∩ ßΓ᫬á? èᬠóδ πªÑ ¡áóÑα¡«Ñ ñ«úáñá-
- ½¿ß∞, ßΓ᫬á, ¡áτ¿¡áεΘá∩ß∩ ß asm, - φΓ« óßΓα«Ñ¡¡δ⌐ ¬«ñ ¡á ÇßßѼí-
- ½ÑαÑ. àß½¿ óá¼ »α¿σ«ñ¿½«ß∞ ¿ß»«½∞º«óáΓ∞ «Γ½áñτ¿¬ ¿ »α«ß¼áΓα¿óáΓ∞
- óδ»«½¡∩Ѽδ⌐ ¬«ñ ¡á æ¿, »«½πτÑ¡¡δ⌐ »α¿ ¬«¼»¿½∩µ¿¿ ¿ßσ«ñ¡«ú« ¬«ñá,
- Γ« »α¿¼Ñ¡¿ó Ñú«, óδ ¼«ªÑΓÑ «í¡áαπª¿Γ∞, τΓ« ¼Ñªñπ ߬«¼»¿½¿α«óá¡¡δ¼
- ¬«ñ«¼ «»ÑαáΓ«α«ó:
-
- i = 0;
- ¿
- i++;
-
- íπñπΓ ó¬½ετÑ¡δ ¿¡ßΓαπ¬µ¿¿:
-
- .
- .
- .
- mov WORD PTR [bp-02],0000
-
- TASM2 #2-5/䫬 = 142 =
-
- dec WORD PTR [bp-02]
- inc WORD PTR [bp-02]
- .
- .
- .
-
- úñÑ ¼«ª¡« ó¿ñÑΓ∞ óßΓα«Ñ¡¡πε ¿¡ßΓαπ¬µ¿ε ÇßßѼí½Ñαá DEC.
-
- èáªñδ⌐ αáº, ¬«úñá Æπαí« æ¿ «í¡áαπª¿óáÑΓ ¬½ετÑó«Ñ ß½«ó« asm,
- π¬áºδóáεΘÑÑ, τΓ« φΓ« ßΓ᫬á ÇßßѼí½Ñαá, «¡ »«¼ÑΘáÑΓ ñá¡¡πε ßΓ᫬π
- ÇßßѼí½Ñαá ¡Ñ»«ßαÑñßΓóÑ¡¡« ó ߬«¼»¿½¿α«óá¡¡δ⌐ ¬«ñ ß «ñ¡¿¼ ¿º¼Ñ¡Ñ-
- ¡¿Ñ¼: ßß佬¿ ¡á »ÑαѼѡ¡δÑ æ¿ »αÑ«íαáºπεΓß∩ ó ß««ΓóÑΓßΓóπεΘ¿⌐ φ¬-
- ó¿óá½Ñ¡Γ ¡á ÇßßѼí½ÑαÑ (ßßδ½¬á ¡á i ó »αÑñδñπΘѼ »α¿¼ÑαÑ íδ½á ºá-
- ¼Ñ¡Ñ¡á WORD PTR [BP-2]). è«α«τÑ ú«ó«α∩, ¬½ετÑó«Ñ ß½«ó« asm »«ºó«-
- ½∩ÑΓ óá¼ ó¬½ετáΓ∞ ó »α«úαá¼¼π ¡á æ¿ »αá¬Γ¿τÑ߬¿ ½εí«⌐ ¬«ñ ¡á Çß-
- ßѼí½ÑαÑ («ñ¡á¬« ºñÑß∞ ÑßΓ∞ ¡Ñ¬«Γ«αδÑ «úαá¡¿τÑ¡¿∩, « ¬«Γ«αδσ ¼δ
- αáß߬áªÑ¼ ñá½ÑÑ ó αáºñÑ½Ñ "Äúαá¡¿τÑ¡¿∩ »α¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡-
- ¡«ú« ÇßßѼí½Ñαá").
-
- 髺¼«ª¡«ßΓ∞ ó¬½ετáΓ∞ ¬«ñ ÇßßѼí½Ñαá ¡Ñ»«ßαÑñßΓóÑ¡¡« ó ¬«ñ
- Æπαí« æ¿ óδú½∩ñ¿Γ ¡á »Ñαóδ⌐ óºú½∩ñ ¡Ñ߬«½∞¬« α¿ß¬«óá¡¡«⌐. é ßἫ¼
- ñѽÑ, «»αÑñѽѡ¡δ⌐ α¿ß¬ »α¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
- ÑßΓ∞. ì« Æπαí« æ¿ ¬«¼»¿½¿απÑΓ ßó«⌐ ¬«ñ Γᬿ¼ «íαẫ¼, τΓ«íδ ¿ºíÑ-
- ªáΓ∞ ¼¡«ú¿σ »«ΓÑ¡µ¿á½∞¡« «»áß¡δσ óºá¿¼«ñÑ⌐ßΓó¿⌐ ß« óßΓα«Ñ¡¡δ¼ Çß-
- ßѼí½Ñα«¼. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, ¡Ñ»αáó¿½∞¡« Σπ¡¬µ¿«¡¿απεΘ¿⌐ óßΓα«Ñ¡¡δ⌐
- ¬«ñ ÇßßѼí½Ñαá «»αÑñѽѡ¡« ¼«ªÑΓ »α¿óÑßΓ¿ ¬ ßÑα∞Ѻ¡δ¼ «Φ¿í¬á¼.
-
- æ ñαπú«⌐ ßΓ«α«¡δ, ½εí«⌐ ¡Ñ»αáó¿½∞¡« ¡á»¿ßá¡¡δ⌐ ¬«ñ ÇßßѼí½Ñ-
- αá (óßΓα«Ñ¡¡δ⌐ ¿½¿ ó «Γñѽ∞¡«¼ ¼«ñπ½Ñ) »«ΓÑ¡µ¿á½∞¡« ¼«ªÑΓ »«óÑßΓ¿
- ßÑí∩ ¡Ñ»αáó¿½∞¡«: φΓ« Γá µÑ¡á, ¬«Γ«απε ó ÇßßѼí½ÑαÑ »α¿σ«ñ¿Γß∩
- »½áΓ¿Γ∞ ºá ߬«α«ßΓ∞ ¿ 󫺼«ª¡«ßΓ∞ π»αáó½Ñ¡¿∩ ¡á ¡¿ª¡Ñ¼ πα«ó¡Ñ.
- Äñ¡á¬« «Φ¿í¬¿ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ÇßßѼí½Ñαá ú«αáºñ« ¼Ñ¡ÑÑ óÑα«∩Γ-
- ¡δ, τѼ ó »α«úαá¼¼Ñ, µÑ½¿¬«¼ ¡á»¿ßá¡¡«⌐ ¡á ÇßßѼí½ÑαÑ, »«ß¬«½∞¬π
- Æπαí« æ¿ íÑαÑΓ ¡á ßÑí∩ ¼¡«ªÑßΓó« "¼Ñ½«τÑ⌐", Γᬿσ, ¬á¬ óσ«ñ ó
- Σπ¡¬µ¿¿ ¿ óδσ«ñ ¿º ¡¿σ, »ÑαÑñáτπ »áαá¼ÑΓα«ó ¿ óδñѽѡ¿Ñ »á¼∩Γ¿
- ñ½∩ »ÑαѼѡ¡δσ. Å«ñó«ñ∩ ¿Γ«ú¿, ¼«ª¡« ߬áºáΓ∞, τΓ« »αÑ¿¼πΘÑßΓóá
- ¿ß»«½∞º«óá¡¿Ñ ó æ¿ óßΓα«Ñ¡¡«ú« ¬«ñá ÇßßѼí½Ñαá »ÑαѬαδóáεΓ ΓÑ
- ¡Ñ»α¿∩Γ¡«ßΓ¿, ß ¬«Γ«α묨 ¼«ª¡« ßΓ«½¬¡πΓ∞ß∩ ¿º-ºá ß½πτá⌐¡«⌐ «Φ¿í¬¿
- ó ¬«ñÑ ÇßßѼí½Ñαá.
-
- Ä »α«úαá¼¼¿α«óá¡¿¿ ß ¿ß»«½∞º«ó᡿Ѽ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
- ¼«ª¡« ßñѽáΓ∞ ¡Ñ߬«½∞¬« ó᪡δσ ºá¼Ñτá¡¿⌐:
-
- 1. ùΓ«íδ ¿ß»«½∞º«óáΓ∞ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα, óδ ñ«½ª¡δ óδ-
- ºóáΓ∞ TCC.EXE, ¬«¼á¡ñ¡πε óÑαß¿ε Æπαí« æ¿. TC.EXE (ñ¿á½«-
- ú«óá∩ óÑαß¿∩ Æπαí« æ¿) ¡Ñ »«ññÑনóáÑΓ óßΓα«Ñ¡¡δ⌐ ÇßßѼ-
-
- TASM2 #2-5/䫬 = 143 =
-
- í½Ñα.
-
- 2. éÑß∞¼á 󫺼«ª¡«, τΓ« óÑαß¿∩ πΓ¿½¿Γδ TLINK, ¬«Γ«αá∩ »«ß-
- Γáó½∩ÑΓß∩ ß óáΦÑ⌐ ¬«»¿Ñ⌐ Æπαí« ÇßßѼí½Ñαá, ¡Ñ ß«ó»áñáÑΓ
- ó óÑαß¿Ñ⌐ φΓ«⌐ πΓ¿½¿Γδ, ¬«Γ«αá∩ »«ßΓáó½∩ÑΓß∩ ó ¬«¼»½Ñ¬ΓÑ
- Æπαí« æ¿. ä½∩ «íÑß»ÑτÑ¡¿∩ »«ññÑ᪬¿ Æπαí« ÇßßѼí½Ñαá ó
- πΓ¿½¿Γπ TLINK í뫨 ó¡ÑßÑ¡δ ßπΘÑßΓóÑ¡¡δÑ ¿º¼Ñ¡Ñ¡¿∩ ¿,
- »«ß¬«½∞¬π φΓ¿ ¿º¼Ñ¡Ñ¡¿∩ íѺ ß«¼¡Ñ¡¿∩ íπñπΓ »α«ñ«½ªáΓ∞ß∩
- ó ñá½∞¡Ñ⌐ΦѼ, ó᪡« »α¿ ¬«¼»«¡«ó¬Ñ ¼«ñπ½Ñ⌐ Æπαí« æ¿, ß«-
- ñÑαªáΘ¿σ óßΓα«Ñ¡¡δÑ ¿¡ßΓαπ¬µ¿¿ ÇßßѼí½Ñαá, ¿ß»«½∞º«óáΓ∞
- ßá¼πε »«ß½Ññ¡εε óÑαß¿ε TLINK, ¬«Γ«αá∩ π óáß ¿¼ÑÑΓß∩. æá-
- ¼δ¼ ¡áñѪ¡δ¼ ß»«ß«í«¼ úáαá¡Γ¿α«óáΓ∞ φΓ« ∩ó½∩ÑΓß∩ σαá¡Ñ-
- ¡¿Ñ ¡á ñ¿ß¬Ñ, ¿ß»«½∞ºπѼ«¼ ñ½∩ ºá»πß¬á ¬«¼»«¡«óΘ¿¬á
- TLINK, Γ«½∞¬« «ñ¡«ú« Σá⌐½á TLINK.EXE. 쫼Ñα óÑαß¿¿ φΓ«ú«
- Σá⌐½á ñ«½ªÑ¡ íδΓ∞ ßá¼δ¼ »«ß½Ññ¡¿¼ ßαÑñ¿ óßÑσ »«ñ«í¡δσ
- Σá⌐½«ó, ¬«Γ«αδÑ óδ »«½πτ὿ «Γ Σ¿α¼δ Borland.
-
-
-
-
- TASM2 #2-5/䫬 = 144 =
-
- èᬠαáí«ΓáÑΓ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα
- -----------------------------------------------------------------
-
- Äíδτ¡« Æπαí« æ¿ ¬«¼»¿½¿απÑΓ ¬áªñδ⌐ Σá⌐½ ¿ßσ«ñ¡«ú« ¬«ñá ¡á
- ∩ºδ¬Ñ æ¿ ó «íΩÑ¬Γ¡δ⌐ Σá⌐½, á ºáΓѼ óδºδóáÑΓ πΓ¿½¿Γπ TLINK ñ½∩
- ¬«¼»«¡«ó¬¿ «íΩÑ¬Γ¡δσ Σá⌐½«ó ó óδ»«½¡∩Ѽπε »α«úαá¼¼π. Æá¬«⌐ µ¿¬½
- ¬«¼»¿½∩µ¿¿ ¿ ¬«¼»«¡«ó¬¿ »«¬áºá¡ ¡á É¿ß. 7.1 ùΓ«íδ ¡áτáΓ∞ ñá¡¡δ⌐
- µ¿¬½, ¡πª¡« óóÑßΓ¿ ¬«¼á¡ñπ:
-
- tcc ¿¼∩_Σá⌐½á
-
- ¬«Γ«αá∩ π¬áºδóáÑΓ Æπαí« æ¿, τΓ« ¡πª¡« ß¡áτá½á ¬«¼»¿½¿α«óáΓ∞ Σá⌐½
- ¿¼∩_Σá⌐½á.æ ó Σá⌐½ ¿¼∩_Σá⌐½á.OBJ, á ºáΓѼ óδºóáΓ∞ TLINK ñ½∩ ¬«¼-
- »«¡«ó¬¿ Σá⌐½á ¿¼∩_Σá⌐½á.OBJ ó Σá⌐½ ¿¼∩_Σá⌐½á.EXE.
-
- ----------------------------------
- | êßσ«ñ¡δ⌐ Σá⌐½ ¡á ∩ºδ¬Ñ æ¿ |
- | ¿¼∩_Σá⌐½á.æ |
- ----------------------------------
- |
- V
- ------------
- ( Æπαí« æ¿ ) 諼»¿½∩µ¿∩
- ------------
- |
- V
- ----------------------------------
- | ÄíΩÑ¬Γ¡δ⌐ Σá⌐½ ∩ºδ¬á æ¿ |
- | ¿¼∩_Σá⌐½á.OBJ |
- ----------------------------------
- |
- V
- ------------
- ( TLINK ) 諼»«¡«ó¬á
- ------------
- |
- V
- ----------------------------------
- | éδ»«½¡∩Ѽδ⌐ Σá⌐½ |
- | ¿¼∩_Σá⌐½á.EXE |
- ----------------------------------
-
- É¿ß. 7.1 û¿¬½ ¬«¼»¿½∩µ¿¿ ¿ ¬«¼»«¡«ó¬¿ Æπαí« æ¿.
-
- Äñ¡á¬« »α¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá Æπαí« æ¿ ñ«-
- íáó½∩ÑΓ ó µ¿¬½ ¬«¼»¿½∩µ¿¿ ¿ ¬«¼»«¡«ó¬¿ ñ«»«½¡¿Γѽ∞¡δ⌐ Φáú.
-
- TASM2 #2-5/䫬 = 145 =
-
-
- Åα¿ «íαáí«Γ¬Ñ ¬«¼»¿½∩Γ«α«¼ Æπαí« æ¿ ¬áªñ«ú« ¼«ñπ½∩, úñÑ ß«-
- ñÑনΓß∩ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá, ß¡áτá½á óÑß∞ ¼«ñπ½∞ ¬«¼»¿½¿-
- απÑΓß∩ ó ¿ßσ«ñ¡δ⌐ Σá⌐½ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá, á ºáΓѼ ñ½∩ Γαá¡ß½∩-
- µ¿¿ »«½πτÑ¡¡«ú« ¬«ñá ÇßßѼí½Ñαá á «íΩÑ¬Γ¡δ⌐ ¬«ñ óδºδóáÑΓß∩ Æπαí«
- ÇßßѼí½Ñα. Å«ß½Ñ φΓ«ú« ñ½∩ ¬«¼»«¡«ó¬¿ «íΩÑ¬Γ¡δσ Σá⌐½«ó óδºδóáÑΓß∩
- πΓ¿½¿Γá TLINK. ¥Γ«Γ »α«µÑßß »«¬áºá¡ ¡á É¿ß. 7.2. çá»πßΓ¿Γ∞ φΓ«Γ
- µ¿¬½ ¼«ª¡« ß »«¼«Θ∞ε ¬«¼á¡ñ¡«⌐ ßΓ᫬¿:
-
- tcc ¿¼∩_Σá⌐½á
-
- ¬«Γ«αá∩ π¬áºδóáÑΓ Æπαí« æ¿, τΓ« ß¡áτá½á ¡πª¡« ¬«¼»¿½¿α«óáΓ∞ Σá⌐½
- ¿¼∩_Σá⌐½á.æ ó Σá⌐½ ¿¼∩_Σá⌐½á.ASM, »«Γ«¼ óδºóáΓ∞ Æπαí« ÇßßѼí½Ñα
- ñ½∩ áßßÑ¼í½¿α«óá¡¿∩ Σá⌐½á ¿¼∩_Σá⌐½á.ASM ó Σá⌐½ ¿¼∩_Σá⌐½á.OBJ, á
- ºáΓѼ óδºóáΓ∞ πΓ¿½¿Γπ TLINK ñ½∩ ¬«¼»«¡«ó¬¿ Σá⌐½á ¿¼∩_Σá⌐½á.OBJ ó
- Σá⌐½ ¿¼∩_Σá⌐½á.EXE.
-
- ----------------------------------
- | êßσ«ñ¡δ⌐ Σá⌐½ ¡á ∩ºδ¬Ñ æ¿ |
- | ¿¼∩_Σá⌐½á.æ |
- ----------------------------------
- |
- V
- ------------
- ( Æπαí« æ¿ ) 諼»¿½∩µ¿∩
- ------------
- |
- V
- ----------------------------------
- | êßσ«ñ¡δ⌐ Σá⌐½ ¡á ÇßßѼí½ÑαÑ |
- | ¿¼∩_Σá⌐½á.ASM |
- ----------------------------------
- |
- V
- ------------------
- ( Æπαí« ÇßßѼí½Ñα ) ÇßßÑ¼í½¿α«óá¡¿Ñ
- ------------------
- |
- V
- ----------------------------------
- | ÄíΩÑ¬Γ¡δ⌐ Σá⌐½ ∩ºδ¬á æ¿ |
- | ¿¼∩_Σá⌐½á.OBJ |
- ----------------------------------
- |
- V
- ------------
-
- TASM2 #2-5/䫬 = 146 =
-
- ( TLINK ) 諼»«¡«ó¬á
- ------------
- |
- V
- ----------------------------------
- | éδ»«½¡∩Ѽδ⌐ Σá⌐½ |
- | ¿¼∩_Σá⌐½á.EXE |
- ----------------------------------
-
- É¿ß. 7.2 û¿¬½ ¬«¼»¿½∩µ¿¿, áßßÑ¼í½¿α«óá¡¿∩ ¿ ¬«¼»«¡«ó¬¿ Æπαí«
- æ¿.
-
- éßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá »α«ßΓ« »ÑαÑñáÑΓß∩ ¬«¼»¿½∩Γ«α«¼
- Æπαí« æ¿ ó Σá⌐½ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá. ÅαѽÑßΓ∞ φΓ« ßσÑ¼δ ºá¬½ετá-
- ÑΓß∩ ó Γ«¼, τΓ« Æπαí« æ¿ ¡Ñ ¡πª¡« ¡¿τÑú« º¡áΓ∞ «í áßßÑ¼í½¿α«óá¡¿¿
- óßΓα«Ñ¡¡«ú« ¬«ñá, ó¼ÑßΓ« φΓ«ú« Æπαí« æ¿ ¬«¼»¿½¿απÑΓ ¿ßσ«ñ¡δ⌐ ¬«ñ
- ∩ºδ¬á æ¿ ¡á ëà ªÑ πα«óÑ¡∞, τΓ« ¿ óßΓα«Ñ¡¡δ⌐ ¬«ñ (πα«óÑ¡∞ ÇßßѼí-
- ½Ñαá), á ºáΓѼ »«ºó«½∩ÑΓ Æπαí« ÇßßѼí½Ñαπ óδ»«½¡¿Γ∞ Γαá¡ß½∩µ¿ε.
-
- ùΓ«íδ πó¿ñÑΓ∞, ¬á¬ Æπαí« æ¿ αáí«ΓáÑΓ ß« óßΓα«Ñ¡¡δ¼ ÇßßѼí½Ñ-
- α«¼, óóÑñѼ »«ñ ¿¼Ñ¡Ñ¼ PLUSONE.C ß½ÑñπεΘπε »α«úαá¼¼π:
-
- #include <stdio.h>
-
- int main(void)
- {
- int TestValue;
-
- scanf('%d, &testValue); /* »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ
- ñ½∩ πóѽ¿τÑ¡¿∩ */
- asm inc WORD PTR TestValue; /* πóѽ¿τ¿Γ∞ Ñú«
- (¡á ÇßßѼí½ÑαÑ) */
- printf("%d",TestValue); /* ¡á»ÑτáΓáΓ∞ πóѽ¿τÑ¡¡«Ñ
- º¡áτÑ¡¿Ñ */
- }
-
- ¿ ߬«¼»¿½¿απѼ ÑÑ ß »«¼«Θ∞ε ¬«¼á¡ñ¡«⌐ ßΓ᫬¿:
-
- tcc -s plusone
-
- Åáαá¼ÑΓα -s π¬áºδóáÑΓ Æπαí« æ¿, τΓ« ¡πª¡« ߬«¼»¿½¿α«óáΓ∞
- »α«úαá¼¼π ó ¬«ñ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ¿ «ßΓá¡«ó¿Γ∞ß∩. Å«ß½Ñ φΓ«ú«
- ¡á óáΦѼ ñ¿ß¬Ñ «¬áªÑΓß∩ Σá⌐½ PLUSONE.ASM:
-
- ifndef ??version
- ?debug macro
-
- TASM2 #2-5/䫬 = 147 =
-
- endm
- endif
- name Plusone
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
- DGROUP GROUP _DATA, _BSS
- ASSUME cs:_TEXT,ds:DGROUP,ss:DGROUP
- _TEXT ENDS
- _DATA SEGMENT WORD PUBLIC 'DATA'
- _d@ label BYTE
- _d@w label WORD
- _DATA ENDS
- _BSS SEGMENT WORD PUBLIC 'BSS'
- _b@ label BYTE
- _b@w label WORD
- ?debug C E90156E11009706C75736F6E652E6
- ?debug C E90009B9100F696E66C7564655C737464696F2E68
- ?debug C E90009B9101010696E636C754655C7564655C7374646172672E68
- _BSS ENDS
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
- ; ?debug L 3
- _main PROC NEAR
- push bp
- mov bp,sp
- dec sp
- dec sp
- ?debug L 8
- lea ax,WORD PTR [bp-2]
- push ax
- mov ax,OFFSET DGROUP:_s@
- push ax
- call NEAR PTR _scanf
- pop cx
- pop cx
- ; debug L 9
- inc WORD PTR [bp-2]
- ; ?debug L 10
- push WORD PTR [bp-2]
- mov ax,OFFSET GDROUP:_s@+3
- push ax
- call NEAR PTR _printf
- pop cx
- pop cx
- @1:
- ; debug L 12
- mov sp,bp
- pop bp
-
- TASM2 #2-5/䫬 = 148 =
-
- ret
- _main ENDP
- _TEXT ENDS
- _DATA SEGMENT WORD PUBLIC 'DATA'
- -s@ label BYTE
- db 37
- db 100
- db 0
- db 37
- db 100
- db 0
- _DATA ENDS
- _TEXT SEGMENT BYTE PUBLIC CODE
- EXTRN _printf:NEAR
- EXTRN _scanf:NEAR
- _TEXT ENDS
- PUBLIC _main
- END
-
- éºú½∩¡πó ¡á ñá¡¡δ⌐ ¬«ñ, óδ ¼«ªÑΓÑ ó »«½¡«⌐ ¼ÑαÑ «µÑ¡¿Γ∞,
- ߬«½∞¬« πß¿½¿⌐ »«¼«úáÑΓ óá¼ ßφ¬«¡«¼¿Γ∞ Æπαí« æ¿, «íÑß»Ñτ¿óá∩ »«ñ-
- ñÑ᪬π óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá.
-
- é ¬«¼¼Ñ¡Γáα¿¿:
-
- ; ?debug L 8
-
- óδ ¼«ªÑΓÑ ó¿ñÑΓ∞ ¬«ñ ÇßßѼí½Ñαá ñ½∩ ó맮óá scanf. äá½ÑÑ ß½ÑñπÑΓ:
-
- ; ?debug L 9
- inc WORD PTR [bp-2]
-
- τΓ« »αÑñßΓáó½∩ÑΓ ß«í«⌐ óßΓα«Ñ¡¡πε ¿¡ßΓαπ¬µ¿ε ÇßßѼí½Ñαá ñ½∩ πóÑ-
- ½¿τÑ¡¿∩ º¡áτÑ¡¿∩ »ÑαѼѡ¡«⌐ TestValue. (çá¼ÑΓ¿¼, τΓ« Æπαí« æ¿ áó-
- Γ«¼áΓ¿τÑ߬¿ óδ»«½¡∩ÑΓ »αÑ«íαẫóá¡¿Ñ »ÑαѼѡ¡«⌐ æ¿ TestValue ó
- ß««ΓóÑΓßΓóπεΘπε áñαÑßᵿε φΓ«⌐ »ÑαѼѡ¡«⌐ ¡á ÇßßѼí½ÑαÑ [BP-2].)
- çá ßΓ᫬«⌐ óßΓα«Ñ¡¡«⌐ ¿¡ßΓαπ¬µ¿¿ ÇßßѼí½Ñαá ß½ÑñπÑΓ ¬«ñ ÇßßѼí½Ñ-
- αá ñ½∩ ó맮óá Σπ¡¬µ¿¿ printf.
-
- ÄíαáΓ¿ΓÑ ó¡¿¼á¡¿Ñ, τΓ« Æπαí« æ¿ ¬«¼»¿½¿απÑΓ Σπ¡¬µ¿ε scanf ó
- ∩ºδ¬ ÇßßѼí½Ñαá, »«¼ÑΘá∩ óßΓα«Ñ¡¡πε ¿¡ßΓαπ¬µ¿ε ÇßßѼí½Ñαá ¡Ñ»«ß-
- αÑñßΓóÑ¡¡« ó óδσ«ñ¡«⌐ Σá⌐½ ¡á ÇßßѼí½ÑαÑ, á ºáΓѼ Γαá¡ß½¿απÑΓ ¡á
- ∩ºδ¬ ÇßßѼí½Ñαá Σπ¡¬µ¿ε printf. Å«½πτÑ¡¡δ⌐ ó αѺπ½∞ΓáΓÑ Σá⌐½
- »αÑñßΓáó½∩ÑΓ ß«í«⌐ Σá⌐½ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá, ú«Γ«óδ⌐ ¬ «íαáí«Γ¬Ñ
- Æπαí« ÇßßѼí½Ñα«¼.
-
-
- TASM2 #2-5/䫬 = 149 =
-
- àß½¿ íδ óδ ¡Ñ ¿ß»«½∞º«ó὿ »áαá¼ÑΓα -s, Æπαí« æ¿ »α«ñ«½ª¿½
- íδ αáí«Γπ, óδºóáó ñ½∩ áßßÑ¼í½¿α«óá¡¿∩ Σá⌐½á PLUSONE.ASM Æπαí« Çß-
- ßѼí½Ñα, á ºáΓѼ ñ½∩ ¬«¼»«¡«ó¬¿ »«½πτÑ¡¡«ú« ó αѺπ½∞ΓáΓÑ «íΩѬ-
- Γ¡«ú« Σá⌐½á - πΓ¿½¿Γπ TLINK (íπñÑΓ »«½πτÑ¡ óδ»«½¡∩Ѽδ⌐ Σá⌐½
- PLUSONE.EXE). ¥Γ« «íδτ¡δ⌐ αѪ¿¼ αáí«Γδ Æπαí« æ¿ ß« óßΓα«Ñ¡¡δ¼ Çß-
- ßѼí½Ñα«¼. Åáαá¼ÑΓα-s ¼δ ¿ß»«½∞º«ó὿ Γ«½∞¬« ñ½∩ ñѼ«¡ßΓαᵿ«¡¡δσ
- µÑ½Ñ⌐, τΓ«íδ óδ ¼«ú½¿ «º¡á¬«¼¿Γ∞ß∩ ß »α«¼ÑªπΓ«τ¡δ¼ φΓừ¼, ¬«Γ«-
- αδ⌐ óδ»«½¡∩ÑΓ Æπαí« ÇßßѼí½Ñα. è«úñá ¬«¼»¿½¿απѼδ⌐ ¬«ñ ñ«½ªÑ¡
- ¬«¼»«¡«óáΓ∞ß∩ ß ñαπú¿¼¿ »α«úαἼἿ, »áαá¼ÑΓα -s »αá¬Γ¿τÑ߬¿ íÑß-
- »«½ÑºÑ¡, ¡« Ñú« ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ó Γ«¼ ß½πτáÑ, ¬«úñá óδ σ«Γ¿ΓÑ
- «º¡á¬«¼¿Γ∞ß∩ ß ¬«ñ«¼, «¬απªáεΘ¿¼ óáΦ óßΓα«Ñ¡¡δ⌐ ¬«ñ ¡á ÇßßѼí½Ñ-
- αÑ, ¿ ß ¬«ñ«¼, úÑ¡Ñα¿απÑ¼δ¼ Æπαí« æ¿ ó µÑ½«¼. àß½¿ óδ ¡Ñ πóÑαÑ¡δ
- ó αѺπ½∞ΓáΓáσ, úÑ¡Ñα¿απѼδσ »α¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ¬«ñá
- ÇßßѼí½Ñαá, »α«óÑα∞ΓÑ »«½πτÑ¡¡δ⌐ ß »«¼«Θ∞ε »áαá¼ÑΓαá -s Σá⌐½
- ß αáßΦ¿αÑ¡¿Ñ¼ .ASM.
-
-
-
-
- TASM2 #2-5/䫬 = 150 =
-
- ÄΓ¬πñá Æπαí« æ¿ º¡áÑΓ «í ¿ß»«½∞º«óá¡¿¿ αѪ¿¼á ÇßßѼí½Ñαá?
- -----------------------------------------------------------------
-
- Äíδτ¡« Æπαí« æ¿ ¬«¼»¿½¿απÑΓ ¿ßσ«ñ¡δ⌐ ¬«ñ ¡Ñ»«ßαÑñßΓóÑ¡¡« ó
- «íΩÑ¬Γ¡δ⌐ ¬«ñ. æπΘÑßΓóπÑΓ ¡Ñ߬«½∞¬« ß»«ß«í«ó, ß »«¼«Θ∞ε ¬«Γ«αδσ
- ¼«ª¡« ß««íΘ¿Γ∞ Æπαí« æ¿, τΓ« ¡πª¡« »«ññÑনóáΓ∞ óßΓα«Ñ¡¡δ⌐ ÇßßѼ-
- í½Ñα »πΓѼ ¬«¼»¿½∩µ¿¿ ¡á ∩ºδ¬ ÇßßѼí½Ñαá ¿ »«ß½ÑñπεΘÑú« ó맮óá
- πΓ¿½¿Γδ TLINK.
-
- Åáαá¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ -s π¬áºδóáÑΓ Æπαí« æ¿, τΓ« ¡πª¡«
- Γαá¡ß½¿α«óáΓ∞ ¿ßσ«ñ¡δ⌐ ¬«ñ ó ¬«ñ ÇßßѼí½Ñαá, »«ß½Ñ τÑú« »αѬαá-
- Γ¿Γ∞ αáí«Γπ. öá⌐½ ß αáßΦ¿αÑ¡¿Ñ¼ .ASM, ßúÑ¡Ñα¿α«óá¡¡δ⌐ Æπαí« æ¿
- »α¿ ¿ß»«½∞º«óá¡¿¿ »áαá¼ÑΓαá -s, ¼«ª¡« «Γñѽ∞¡« áßßÑ¼í½¿α«óáΓ∞ ¿
- ߬«¼»«¡«óáΓ∞ ß ñαπú¿¼¿ ¼«ñπ½∩¼¿ æ¿ ¿ ÇßßѼí½Ñαá. éδºóáΓ∞ Æπαí«
- ÇßßѼí½Ñα áóΓ«¼áΓ¿τÑ߬¿ »«ºó«½∩ÑΓ »áαá¼ÑΓα -b. àß½¿ óá¼ φΓ« ¡Ñ
- ΓαÑíπÑΓß∩ ñ½∩ «Γ½áñ¬¿ ¿½¿ »α«ßΓ« ó µÑ½∩σ «º¡á¬«¼½Ñ¡¿∩ ß ¬«ñ«¼ Çß-
- ßѼí½Ñαá, »áαá¼ÑΓα -s »ÑαÑñ »áαá¼ÑΓα«¼ -b π¬áºδóáΓ∞ ¡Ñ ¡πª¡«.
-
- ä¿αÑ¬Γ¿óá #pragma ó¿ñá:
-
- #pragma inline
-
- ñÑ⌐ßΓóπεΓ á¡á½«ú¿τ¡« »áαá¼ÑΓαπ -b, π¬áºδóá∩ ¬«¼»¿½∩Γ«απ Æπαí« æ¿,
- τΓ« ¡πª¡« óδ»«½¡¿Γ∞ Γαá¡ß½∩µ¿ε ó ÇßßѼí½Ñα, á ºáΓѼ ñ½∩ Γαá¡ß½∩-
- µ¿¿ »«½πτÑ¡¡«ú« αѺπ½∞ΓáΓá óδºóáΓ∞ Æπαí« ÇßßѼí½Ñα. è«úñá Æπαí«
- æ¿ óßΓαÑτáÑΓ π¬áºá¡¿Ñ (ñ¿αÑ¬Γ¿óπ) #pragma inline, ¬«¼»¿½∩µ¿∩ »α«-
- ñ«½ªáÑΓß∩ ó αѪ¿¼Ñ óδó«ñá ÇßßѼí½Ñαá. ïπτΦÑ »«¼ÑΘáΓ∞ π¬áºá¡¿Ñ
- #pragma inline 󫺼«ª¡« í½¿ªÑ ¬ ¡áτá½π ¿ßσ«ñ¡«ú« ¬«ñá ∩ºδ¬á æ¿,
- Γᬠ¬á¬ ½εí«⌐ ¿ßσ«ñ¡δ⌐ ¬«ñ ∩ºδ¬á æ¿, »«ß½Ñ ¬«Γ«αδ¼ ß½ÑñπÑΓ ß½Ññπ-
- ÑΓ ñá¡¡á∩ ñ¿αÑ¬Γ¿óá, íπñÑΓ ¬«¼»¿½¿α«óáΓ∞ß∩ ñóáªñδ: «ñ¿¡ αẠó
- «íδτ¡«¼ αѪ¿¼Ñ (æ¿ -> «íΩÑ¬Γ¡δ⌐ Σá⌐½) á ñαπú«⌐ αẠó αѪ¿¼Ñ æ¿ ->
- ÇßßѼí½Ñα. ò«Γ∩ φΓ« ¿ ¡Ñ »«óαÑñ¿Γ, ¡Ñ ßΓ«¿Γ »«»πßΓπ ΓαáΓ¿Γ∞ óαÑ-
- ¼∩.
-
- ìᬫ¡Ñµ, Ñß½¿ Æπαí« æ¿ «í¡áαπª¿óáÑΓ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñ-
- αá »α¿ «ΓßπΓßΓó¿¿ »áαá¼ÑΓαá -b ¿½¿ -s ¿ π¬áºá¡¿∩ #pragma inline,
- Γ« óδñáÑΓß∩ »αÑñπ»αѪñáεΘÑÑ ß««íΘÑ¡¿Ñ:
-
- Warning test.c 6: Restarting compile using assembly in func-
- tion main
- (¬«¼»¿½∩µ¿∩ ¡áτ¿¡áÑΓß∩ »«óΓ«α¡« ß ¿ß»«½∞º«ó᡿Ѽ áßßÑ¼í½¿α«-
- óá¡¿∩ ó «ß¡«ó¡«⌐ Σπ¡¬µ¿¿)
-
- »«ß½Ñ τÑú« ¬«¼»¿½∩µ¿∩ ó«º«í¡«ó½∩ÑΓß∩ ó αѪ¿¼Ñ óδó«ñá ÇßßѼí½Ñαá,
- ¬á¬ Ñß½¿ íδ ó ñá¡¡«⌐ Γ«τ¬Ñ í佫 «í¡áαπªÑ¡« π¬áºá¡¿Ñ #pragma. êº-
- íѪáΓ∞ ñá¡¡«ú« ß««íΘÑ¡¿∩ ¼«ª¡«, Ñß½¿ óδ íπñÑΓÑ ¿ß»«½∞º«óáΓ∞ »áαá-
-
- TASM2 #2-5/䫬 = 151 =
-
- ¼ÑΓα -b ¿½¿ π¬áºá¡¿Ñ #pragma inline. é »α«Γ¿ó¡«¼ ß½πτáÑ ¬«¼»¿½∩-
- µ¿∩ íπñÑΓ óδ»«½¡∩Γ∞ß∩ ¼Ññ½Ñ¡¡ÑÑ.
-
- é맮ó ñ½∩ áßßÑ¼í½¿α«óá¡¿∩ óßΓα«Ñ¡¡«ú« ¬«ñá Æπαí« ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- ä½∩ Γ«ú«, τΓ«íδ Æπαí« æ¿ ß¼«ú óδºóáΓ∞ Æπαí« ÇßßѼí½Ñα, ¡πª¡«
- ß¡áτá½á, τΓ«íδ «¡ ß¼«ú ¡á⌐Γ¿ Æπαí« ÇßßѼí½Ñα. é αẽ¿τ¡δσ óÑαß¿∩σ
- Æπαí« æ¿ φΓ« »α«¿ßσ«ñ¿Γ »«-αạ«¼π.
-
- é óÑαß¿¿ ßΓáαΦÑ 1.5 »αÑñ»«½áúáÑΓß∩, τΓ« Æπαí« ÇßßѼí½Ñα ¡á-
- σ«ñ¿Γß∩ ó Σá⌐½Ñ ß ¿¼Ñ¡Ñ¼ TASM.EXE, ¬«Γ«αδ⌐ ºá»¿ßá¡ ó ΓѬπΘѼ ¬á-
- ΓὫúÑ ¿½¿ ó «ñ¡«¼ ¿º ¬áΓὫú«ó, π¬áºá¡¡δ⌐ ß »«¼«Θ∞ε »ÑαѼѡ¡«⌐
- «»Ñαᵿ«¡¡«⌐ ßαÑñδ DOS PATH. é «íΘѼ ß½πτáÑ Æπαí« æ¿ ß¼«ªÑΓ óδ-
- ºóáΓ∞ Æπαí« ÇßßѼí½Ñα ó Γ«¼ ß½πτáÑ, Ñß½¿ ¼«ª¡« óδ»«½¡¿Γ∞ ¬«¼á¡ñπ
- (óóÑñÑ¡¡πε ó «ΓóÑΓ ¡á »«ñ߬Ậπ DOS) TASM. Å«φΓ«¼π, Ñß½¿ Æπαí«
- ÇßßѼí½Ñα ¡áσ«ñ¿Γß∩ ó ΓѬπΘѼ ¬áΓὫúÑ ¿½¿ ó «ñ¡«¼ ¿º ¬áΓὫú«ó,
- «»αÑñѽѡ¡δσ ß »«¼«Θ∞ε PATH, Æπαí« æ¿ áóΓ«¼áΓ¿τÑ߬¿ ¡á⌐ñÑΓ ¿ ºá-
- »πßΓ¿Γ Ñú« ñ½∩ óδ»«½¡Ñ¡¿∩ óßΓα«Ñ¡¡«ú« áßßÑ¼í½¿α«óá¡¿∩.
-
- éÑαß¿¿ 1.0 ¿ 1.5 Æπαí« æ¿ óÑñπΓ ßÑí∩ ¡Ñ߬«½∞¬« »«-ñαπú«¼π.
- ū߬«½∞¬π ñá¡¡δÑ óÑαß¿¿ Æπαí« æ¿ í뫨 ß«ºñá¡δ ñ« Γ«ú«, ¬á¬ íδ½
- αáºαáí«Γá¡ Æπαí« ÇßßѼí½Ñα, ñ½∩ óδ»«½¡Ñ¡¿∩ áßßÑ¼í½¿α«óá¡¿∩ óßΓα«-
- Ñ¡¡«ú« ¬«ñá «¡¿ óδºδóáεΓ ¼á¬α«áßßѼí½Ñα Σ¿α¼δ Microsoft MASM. Å«-
- φΓ«¼π ñá¡¡δÑ óÑαß¿¿ íπñπΓ ¿ß¬áΓ∞ ó ΓѬπΘѼ ¬áΓὫúÑ ¿ ó ¬áΓὫúÑ,
- ºáñá¡¡«¼ »ÑαѼѡ¡«⌐ PATH, Σá⌐½ ß ¿¼Ñ¡Ñ¼ MASM.EXE, á ¡Ñ TASM.EXE.
-
- Åα¿¼Ñτá¡¿Ñ: Ä Γ«¼, ¬á¬ ߬«ααÑ¬Γ¿α«óáΓ∞ ñá¡¡δÑ óÑαß¿¿
- ¬«¼»¿½∩Γ«αá TCC, τΓ«íδ ¼«ª¡« í佫 ¿ß»«½∞º«óáΓ∞ TASM, αáß-
- ߬áºδóáÑΓß∩ ó Σá⌐½Ñ README ¡á ñ¿ßΓα¿íπΓ¿ó¡«¼ ñ¿ß¬Ñ Æπαí«
- ÇßßѼí½Ñαá.
-
-
-
-
- TASM2 #2-5/䫬 = 152 =
-
- è«úñá Æπαí« æ¿ Γαá¡ß½¿απÑΓ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- éßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ¼«ªÑΓ ºá¬á¡τ¿óáΓ∞ß∩ ó ßÑú¼Ñ¡ΓÑ
- ¬«ñá ¿½¿ ßÑú¼Ñ¡ΓÑ ñá¡¡δσ Æπαí« æ¿. éßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ¼«-
- ªÑΓ ¡áσ«ñ¿Γ∞ß∩ ó Σπ¡¬µ¿¿ ¿ áßßÑ¼í½¿α«óáΓ∞ß∩ ó ßÑú¼Ñ¡Γ ¬«ñá Æπαí«
- æ¿, á óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá, αẼÑΘÑ¡¡δ⌐ ó¡Ñ Σπ¡¬µ¿¿, ¼«ªÑΓ
- áßßÑ¼í½¿α«óáΓ∞ß∩ ó ßÑú¼Ñ¡Γ ñá¡¡δσ Æπαí« æ¿.
-
- ìá»α¿¼Ñα, »α«úαá¼¼á:
-
- /* Æáí½¿µá ¬óáñαáΓ«ó º¡áτÑ¡¿⌐ */
-
- asm SquareLookUpTable label word;
- asm dw 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100;
-
- /* öπ¡¬µ¿∩ ñ½∩ »«¿ß¬á ¬óáñαáΓá º¡áτÑ¡¿∩ ¼Ñªñπ 0 ¿ 10 */
-
- int LookUpSquare(int Value)
- {
- asm mov bx,Value; /* »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ ñ½∩ ó«ºóÑñÑ¡¿∩
- ó ¬óáñαáΓ */
- asm shl bx,1; /* π¼¡«ª¿Γ∞ ¡á 2 ñ½∩ »«¿ß¬á ó
- Γáí½¿µÑ φ½Ñ¼Ñ¡Γ«ó αẼÑα«¼ ó
- ß½«ó« */
- asm mov ax,[SquareLookUpTable+bx]; /* »«¿ß¬ ó Γáí½¿µÑ */
- return(_AX);
- }
-
- »«¼ÑΘáÑΓ ñá¡¡δÑ ñ½∩ Γáí½¿µδ SquareLookUpTable ó ßÑú¼Ñ¡Γ ñá¡¡δσ
- Æπαí« æ¿, á óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ó LookUpTable ó ßÑú¼Ñ¡Γ
- ¬«ñá Æπαí« æ¿. æ αáó¡δ¼ πß»Ñσ«¼ ñá¡¡δÑ ¼«ª¡« í佫 íδ »«¼ÑßΓ¿Γ∞
- ñá¡¡δÑ ó ßÑú¼Ñ¡Γ ¬«ñá. Éáßß¼«Γα¿¼, ¡á»α¿¼Ñα, ß½ÑñπεΘπε óÑαß¿ε
- »α«úαá¼¼δ LookUpSquare, úñÑ SquareLookUpTable ¡áσ«ñ¿Γß∩ ó ßÑú¼Ñ¡-
- ΓÑ ¬«ñá Æπαí« æ¿:
-
- /* öπ¡¬µ¿∩ ñ½∩ »«¿ß¬á ¬óáñαáΓá º¡áτÑ¡¿∩ ¼Ñªñπ 0 ¿ 10 */
-
- int LookUpSquare(int Value)
- {
- asm jmp SkipAroundData /* »α«»πßΓ¿Γ∞ Γáí½¿µπ ñá¡¡δσ */
-
- /* Æáí½¿µá ¬óáñαáΓ«ó º¡áτÑ¡¿⌐ */
-
- asm SquareLookUpTable label word;
- asm dw 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100;
-
- TASM2 #2-5/䫬 = 153 =
-
- a
- SkipAroundData:
- asm mov bx,Value; /* »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ ñ½∩ ó«ºóÑñÑ¡¿∩
- ó ¬óáñαáΓ */
- asm shl bx,1; /* π¼¡«ª¿Γ∞ ¡á 2 ñ½∩ »«¿ß¬á ó
- Γáí½¿µÑ φ½Ñ¼Ñ¡Γ«ó αẼÑα«¼ ó
- ß½«ó« */
- asm mov ax,[SquareLookUpTable+bx]; /* »«¿ß¬ ó Γáí½¿µÑ */
- return(_AX);
- }
-
- Æá¬ ¬á¬ SquareLookUpTable ¡áσ«ñ¿Γß∩ ó Γáí½¿µÑ ¬«ñá Æπαí« æ¿,
- Γ« τΓ«íδ ¿º ¡ÑÑ ¼«ª¡« í佫 ßτ¿ΓδóáΓ∞, ¬áºá½«ß∞ íδ ΓαÑíπÑΓß∩ ¿ß-
- »«½∞º«óáΓ∞ »αÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá CS:. öá¬Γ¿τÑ߬¿ ñ½∩
- ñ«ßΓπ»á ¬ SquareLookUpTable ñá¡¡δ⌐ ¬«ñ áóΓ«¼áΓ¿τÑ߬¿ áßßÑ¼í½¿απ-
- ÑΓß∩ ß »αÑΣ¿¬ß«¼ CS:. Æπαí« æ¿ úÑ¡Ñα¿απÑΓ ¬«ααÑ¬Γ¡δ⌐ ¬«ñ ÇßßѼ-
- í½Ñαá, τΓ«íδ Æπαí« ÇßßѼí½Ñα º¡á½, ¬ ¬á¬«¼ ßÑú¼Ñ¡ΓÑ ¡áσ«ñ¿Γß∩
- SquareLookUpTable, á Æπαí« ÇßßѼí½Ñα ºáΓѼ úÑ¡Ñα¿απÑΓ ¡Ñ«íσ«ñ¿¼δÑ
- »αÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó.
-
-
-
-
- TASM2 #2-5/䫬 = 154 =
-
- Åáαá¼ÑΓα -1 ñ½∩ úÑ¡Ñαᵿ¿ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«α«ó 80186/80286
- -----------------------------------------------------------------
-
- àß½¿ óδ σ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ π¡¿¬á½∞¡δÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá
- 80186, Γá¬¿Ñ ¬á¬:
-
- shr ax,3
- ¿
- push 1
-
- Γ« »α«ΘÑ óßÑú« ¿ß»«½∞º«óáΓ∞ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ Æπαí« æ¿ »áαá¼ÑΓα
- -1, ¡á»α¿¼Ñα:
-
- tcc -1 -b heapmgr
-
- úñÑ HEAPMGR.C - φΓ« »α«úαá¼¼á, ¬«Γ«αá∩ ß«ñÑαª¿Γ óßΓα«Ñ¡¡δÑ ¿¡ßΓ-
- απ¬µ¿¿ ÇßßѼí½Ñαá, π¡¿¬á½∞¡δÑ ñ½∩ »α«µÑßß«αá 80186.
-
- Äß¡«ó¡«Ñ ¡áº¡áτÑ¡¿Ñ »áαá¼ÑΓαá -1 ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ π¬á-
- ºáΓ∞ Æπαí« æ¿, τΓ« »α¿ ¬«¼»¿½∩µ¿¿ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ »«½¡δ⌐ ¡áí«α
- ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80186. Åáαá¼ÑΓα -1 »α¿ó«ñ¿Γ Γá¬ªÑ ¬ Γ«¼π,
- τΓ« ¡áτὫ óδσ«ñ¡«ú« Σá⌐½á ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá íπñÑΓ ó¬½ετÑ¡á ñ¿-
- αÑ¬Γ¿óá .186. ¥Γ« π¬áªÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« áßßÑ¼í½¿α«óá¡¿Ñ
- ¡πª¡« óδ»«½¡∩Γ∞ ß ¿ß»«½∞º«ó᡿Ѽ »«½¡«ú« ¡áí«αá ¿¡ßΓαπ¬µ¿⌐. üѺ
- ñá¡¡«⌐ ñ¿αÑ¬Γ¿óδ Æπαí« ÇßßѼí½Ñα »«¼ÑΓ¿Γ óßÑ óßΓα«Ñ¡¡δÑ ¿¡ßΓαπ¬-
- µ¿¿, π¡¿¬á½∞¡δÑ ñ½∩ »α«µÑßß«αá 80186, ¬á¬ «Φ¿í«τ¡δÑ. àß½¿ óδ σ«-
- Γ¿ΓÑ áßßÑ¼í½¿α«óáΓ∞ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 80186, ¡Ñ »α¿¡πªñá∩
- Æπαí« æ¿ ¿ß»«½∞º«óáΓ∞ »«½¡δ⌐ ¡áí«α ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80186,
- ó¬½ετ¿ΓÑ ó ¡áτὫ ¬áªñ«ú« ¼«ñπ½∩ Æπαí« æ¿, ß«ñÑαªáΘÑú« óßΓα«Ñ¡¡δÑ
- ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 80186, ßΓ᫬π:
-
- asm .186
-
- äá¡¡á∩ ßΓ᫬á íπñÑΓ »ÑαÑñá¡á ó Σá⌐½ ÇßßѼí½Ñαá, úñÑ «¡á π¬á-
- ªÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡« ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«-
- αá 80186.
-
- é ¬«¼»¿½∩Γ«αÑ Æπαí« æ¿ ¡Ñ »αÑñπß¼«ΓαÑ¡á óßΓα«Ñ¡¡á∩ »«ññÑ᪬á
- »α«µÑßß«α«ó 80286, 80386, 80287 ¿ 80387. é« óßΓα«Ñ¡¡«¼ ¬«ñÑ Çß-
- ßѼí½Ñαá, úñÑ ¿ß»«½∞ºπεΓß∩ ¿¡ßΓαπ¬µ¿¿ φΓ¿σ »α«µÑßß«α«ó, αáºαÑΦ¿Γ∞
- ¿σ ¿ß»«½∞º«óá¡¿Ñ ¼«ª¡« á¡á½«ú¿τ¡δ¼ ß»«ß«í«¼, ß »«¼«Θ∞ε ¬½ετÑó«ú«
- ß½«óá asm ¿ ñ¿αÑ¬Γ¿ó Æπαí« ÇßßѼí½Ñαá .286, .286æ, .286É, .386,
- .386æ, .386É, .287 ¿ .387.
-
- æΓ᫬á:
-
-
- TASM2 #2-5/䫬 = 155 =
-
- asm .186
-
- »«¬áºδóáÑΓ ó᪡δ⌐ ¼«¼Ñ¡Γ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ÇßßѼí½Ñαá: ß »«¼«Θ∞ε
- »αÑΣ¿¬ßá asm ó Σá⌐½ ÇßßѼí½Ñαá ¼«ª¡« »ÑαÑñáΓ∞ ½εíπε ñ«»πßΓ¿¼πε
- ñ¿αÑ¬Γ¿óπ ÇßßѼí½Ñαá, ó¬½ετá∩ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó,
- »α¿αáó¡¿óá¡¿∩, ¼á¬α«¬«¼á¡ñδ ¿ Γ.ñ.
-
-
-
-
- TASM2 #2-5/䫬 = 156 =
-
- ö«α¼áΓ óßΓα«Ñ¡¡δσ «»ÑαáΓ«α«ó ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- éßΓα«Ñ¡¡δÑ «»ÑαáΓ«αδ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ó« ¼¡«ú«¼ »«σ«ª¿ ¡á
- «íδτ¡δÑ ßΓ᫬¿ ÇßßѼí½Ñαá, ¡« ¿¼ÑÑΓß∩ ¡Ñ߬«½∞¬« «Γ½¿τ¿⌐. éßΓα«Ñ¡-
- ¡δ⌐ «»ÑαáΓ«α ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ¿¼ÑÑΓ ß½ÑñπεΘ¿⌐ Σ«α¼áΓ:
-
- asm [<¼ÑΓ¬á>] <¿¡ßΓαπ¬µ¿∩/ñ¿αÑ¬Γ¿óá> <«»Ñαá¡ñ><; ¿½¿ ¡«ó. ßΓ᫬á>
-
- úñÑ:
-
- - ¬½ετÑó«Ñ ß½«ó« asm ñ«½ª¡« ¡áτ¿¡áΓ∞ ¬áªñδ⌐ óßΓα«Ñ¡¡δ⌐ «»Ñ-
- αáΓ«α ¡á ÇßßѼí½ÑαÑ;
-
- - [<¼ÑΓ¬á>] ∩ó½∩ÑΓß∩ ñ«»πßΓ¿¼«⌐ ¼ÑΓ¬«⌐ ÇßßѼí½Ñαá. èóáñαáΓ-
- ¡δÑ ß¬«í¬¿ »«¬áºδóáεΓ, τΓ« ¼ÑΓ¬á ∩ó½∩ÑΓß∩ ¡Ñ«í∩ºáΓѽ∞¡«⌐, ΓᬠªÑ,
- ¬á¬ ó ÇßßѼí½ÑαÑ. (æ¼. αáºñѽ "Åá¼∩Γ∞ ¿ «úαá¡¿τÑ¡¿∩ áñαÑßᵿ¿
- «»Ñαá¡ñá", úñÑ »α¿ó«ñ¿Γß∩ ¿¡Σ«α¼áµ¿∩ « ¼ÑΓ¬áσ ÇßßѼí½Ñαá ¿ æ¿.);
-
- - <¿¡ßΓαπ¬µ¿∩/ñ¿αÑ¬Γ¿óá> »αÑñßΓáó½∩ÑΓ ß«í«⌐ ½εíπε ñ«»πßΓ¿¼πε
- ñ¿αÑ¬Γ¿óπ ÇßßѼí½Ñαá;
-
- - <«»Ñαá¡ñδ> ß«ñÑαª¿Γ «»Ñαá¡ñδ, ó«ß»α¿¡¿¼áѼδÑ ó ¿¡ßΓαπ¬µ¿¿
- ¿½¿ ñ¿αÑ¬Γ¿óÑ. çñÑß∞ ¼«ªÑΓ Γá¬ªÑ »α¿ßπΓßΓó«óáΓ∞ ßßδ½¬á ¡á ¬«¡ß-
- Γá¡Γδ, »ÑαѼѡ¡δÑ ¿ ¼ÑΓ¬¿ æ¿ (»α¿ ß«í½εñÑ¡¿¿ «úαá¡¿τÑ¡¿⌐, «»¿ßá¡-
- ¡δσ ó αáºñÑ½Ñ "Äúαá¡¿τÑ¡¿∩ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá");
-
- - <; ¿½¿ ¡«ó. ßΓ᫬á> φΓ« Γ«τ¬á ß ºá»∩Γ«⌐ ¿½¿ ¡«óá∩ ßΓ᫬á
- (¿ Γ« ¿ ñαπú«Ñ ú«ó«α¿Γ « ºáóÑαΦÑ¡¿¿ «»ÑαáΓ«αá asm.
-
- Åα¿¼Ñτá¡¿Ñ: é᪡á∩ ¿¡Σ«α¼áµ¿∩ «Γ¡«ß¿Γѽ∞¡« ¼ÑΓ«¬ ß«-
- ñÑনΓß∩ ó αáºñÑ½Ñ "Åá¼∩Γ∞ ¿ «úαá¡¿τÑ¡¿∩ »α¿ áñαÑßᵿ¿ ¬
- «»Ñαá¡ñπ".
-
-
-
-
- TASM2 #2-5/䫬 = 157 =
-
-
- êß»«½∞º«óá¡¿Ñ ó« óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ Γ«τ¬¿ ß ºá»∩Γ«⌐
- -----------------------------------------------------------------
-
- é ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ÑßΓ∞ «ñ¿¡ á߻ѬΓ, ¬«-
- Γ«αδ⌐ ¼«ªÑΓ π»πßΓ¿Γ∞ ¿º ó¿ñá »α«úαá¼¼¿ßΓ, αáí«ΓáεΘ¿⌐ ¡á ∩ºδ¬Ñ æ¿:
- Γ«τ¬á ß ºá»∩Γ«⌐, ó «Γ½¿τ¿Ñ «Γ ñαπú¿σ «»ÑαáΓ«α«ó ∩ºδ¬á æ¿, ó «»Ñ-
- αáΓ«αáσ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¡Ñ ∩ó½∩ÑΓß∩ «í∩ºáΓѽ∞¡«⌐, σ«Γ∩ «¡á
- ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ñ½∩ ¿σ ºáóÑαΦÑ¡¿∩. Åα¿ ÑÑ «ΓßπΓßΓó¿¿ ¬«¡µ«¼
- «»ÑαáΓ«αá ßτ¿ΓáÑΓß∩ ¡áτὫ ¡«ó«⌐ ßΓ᫬¿. Å«φΓ«¼π, Ñß½¿ óδ ¡Ñ αáº-
- ¼ÑΘáÑΓÑ ¡á «ñ¡«⌐ ßΓα«¬Ñ ¡Ñ߬«½∞¬« «»ÑαáΓ«α«ó óßΓα«Ñ¡¡«ú« ÇßßѼí-
- ½Ñαá (τÑú« ñѽáΓ∞ ¡Ñ ßΓ«¿Γ, Γᬠ¬á¬ ΓѬßΓ íπñÑΓ ¼Ñ¡ÑÑ »«¡∩Γ¡δ¼),
- Γ«τ¬á ß ºá»∩Γ«⌐ ¡Ñ«í∩ºáΓѽ∞¡á. ò«Γ∩ ¼«ªÑΓ »«¬áºáΓ∞ß∩, τΓ« φΓ« ¡Ñ
- ß««ΓóÑΓßΓóπÑΓ »α¿¡µ¿»á¼ æ¿, ¡« ºñÑß∞ ß«í½εñáεΓß∩ ß«ú½áΦÑ¡¿∩, »α¿-
- ¡∩ΓδÑ ó ¡Ñ¬«Γ«αδσ ¬«¼»¿½∩Γ«αáσ, αáí«ΓáεΘ¿σ ó ßαÑñÑ «»Ñαᵿ«¡¡«⌐
- ß¿ßΓѼδ UNIX.
-
- 諼¼Ñ¡Γáα¿¿ ó« óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ
- -----------------------------------------------------------------
-
- é »αÑñδñπΘѼ «»¿ßá¡¿¿ Σ«α¼áΓá «»ÑαáΓ«αá óßΓα«Ñ¡¡«ú« ÇßßѼ-
- í½Ñαá «ΓßπΓßΓóπÑΓ «ñ¿¡ ¬½ετÑó«⌐ φ½Ñ¼Ñ¡Γ - »«½Ñ ¬«¼¼Ñ¡Γáα¿∩. ò«Γ∩
- ¬«¼¼Ñ¡Γáα¿¿ ¼«ª¡« »«¼ÑΘáΓ∞ ó ¬«¡µÑ «»ÑαáΓ«α«ó óßΓα«Ñ¡¡«ú« ÇßßѼ-
- í½Ñαá, «¡¿ Γ«½∞¬« «Γ¼ÑτáεΓ ¬«¡Ñµ óßΓα«Ñ¡¡«ú« «»ÑαáΓ«αá, ¬á¬ ¿ ó
- ñαπú¿σ «»ÑαáΓ«αáσ ∩ºδ¬á æ¿, óÑñ∞ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ÇßßѼí½Ñαá
- ¬«¼¼Ñ¡Γáα¿¿ ¡Ñ ¡áτ¿¡áεΓß∩ ß Γ«τ¬¿ ß ºá»∩Γ«⌐.
-
- èᬠªÑ Γ«úñá ¬«¼¼Ñ¡Γ¿α«óáΓ∞ ¬«ñ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá? èá¬
- φΓ« ¡¿ ßΓαá¡¡«, ñѽáΓ∞ φΓ« ¼«ª¡« ß »«¼«Θ∞ε ¬«¼¼Ñ¡Γáα¿Ñó æ¿. ìá
- ßἫ¼ ñÑ½Ñ φΓ« ÑßΓÑßΓóÑ¡¡«, »«ß¬«½∞¬π »αÑ»α«µÑßß«α ∩ºδ¬á æ¿ «íαá-
- íáΓδóáÑΓ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ΓᬠªÑ, ¬á¬ ¿ «ßΓá½∞¡πε τáßΓ∞
- ¬«ñá ¡á æ¿. ü½áú«ñáα∩ φΓ«¼π ó« óßÑ⌐ »α«úαá¼¼Ñ ¡á æ¿, úñÑ ß«ñÑα-
- ª¿Γß∩ ¬«ñ ÇßßѼí½Ñαá, ¼«ª¡« ¿ß»«½∞º«óáΓ∞ «ñ¿¡ ¿ ëà ªÑ Γ¿» ¬«¼-
- ¼Ñ¡Γ¿α«óá¡¿∩. ê ó ¬«ñÑ ¡á ∩ºδ¬Ñ æ¿, ¿ ó ¬«ñÑ ÇßßѼí½Ñαá ó φΓ«¼
- ß½πτáÑ ¼«ª¡« Γá¬ªÑ ¿ß»«½∞º«óáΓ∞ «»αÑñѽѡ¡δÑ ó æ¿ ß¿¼ó«½¿τÑ߬¿Ñ
- ¿¼Ñ¡á. ìá»α¿¼Ñα, ó »α«úαá¼¼Ñ:
-
- .
- .
- .
- #define CONSTANT 51
- int i;
- .
- .
- .
- i = CONSTANT; /* »α¿ßó«¿Γ∞ i
-
- TASM2 #2-5/䫬 = 158 =
-
- »«ßΓ«∩¡¡«Ñ º¡áτÑ¡¿Ñ */
- asm sub WORD PTR i,CONSTANT; /* óδτÑßΓ∞
- ¿º i »«ßΓ«∩¡¡«Ñ
- º¡áτÑ¡¿Ñ */
- .
- .
- .
-
- ¿ ó ¬«ñÑ æ¿, ¿ ó ¬«ñÑ ÇßßѼí½Ñαá ¿ß»«½∞ºπÑΓß∩ «»αÑñѽѡ¡δ⌐ ó ∩ºδ-
- ¬Ñ æ¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«α CONSTANT, ¿ »α¿ óδτ¿ß½Ñ¡¿¿ i »«½πτáÑΓß∩ º¡á-
- τÑ¡¿Ñ 0.
-
- ū߽Ññ¡¿⌐ »α¿¼Ñα »«¬áºδóáÑΓ «ñ¡« ºá¼ÑτáΓѽ∞¡«Ñ ßó«⌐ßΓó«
- óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá, ¬«Γ«α«Ñ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ó »«½Ñ «»Ñαá¡-
- ñá ¼«úπΓ ß«ñÑαªáΓ∞ß∩ ¡Ñ Γ«½∞¬« ßß佬¿ ¡á ¿¼Ñ¡á ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó,
- «»αÑñѽѡ¡δÑ ó æ¿, ¡« ¿ ¡á »ÑαѼѡ¡δÑ æ¿. èᬠóδ πó¿ñ¿ΓÑ ñá½ÑÑ ó
- ñá¡¡«⌐ ú½áóÑ, «íδτ¡« ñ«ßΓπ» ¬ »ÑαѼѡ¡δ¼ æ¿ ó ÇßßѼí½ÑαÑ »α«í½Ñ¼δ
- ¡Ñ ß«ßΓáó½∩ÑΓ, »«φΓ«¼π πñ«íßΓó« ßß佫¬ ¡á Γá¬¿Ñ »ÑαѼѡ¡δÑ - φΓ«
- «ß¡«ó¡á∩ »α¿τ¿¡á, »«τѼπ ó í«½∞Φ¿¡ßΓóÑ »α¿¬½áñ¡δσ ºáñáτ ßΓ«¿Γ ¿ß-
- »«½∞º«óáΓ∞ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα, á ¡Ñ »α«ßΓ« «íΩÑñ¿¡∩Γ∞ ÇßßѼí½Ñα
- ¿ æ¿.
-
- ÄíαáΘÑ¡¿Ñ ¬ φ½Ñ¼Ñ¡Γá¼ ßΓαπ¬Γπαδ/«íΩÑñ¿¡Ñ¡¿∩
- -----------------------------------------------------------------
-
- éßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ¼«ªÑΓ ßßδ½áΓ∞ß∩ ¡Ñ»«ßαÑñßΓóÑ¡¡« ¡á
- φ½Ñ¼Ñ¡Γδ ßΓαπ¬Γπαδ. ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ:
-
- .
- .
- .
- struct Student {
- char Teacher[30];
- int Grade;
- } JohnQPublic;
- .
- .
- .
- asm mov ax,JohnQPublic.Grade;
- .
- .
- .
-
- ó αÑú¿ßΓα AX ºáúαπªáÑΓß∩ ß«ñÑন¼«Ñ φ½Ñ¼Ñ¡Γá Grade ßΓαπ¬Γπαδ
- JohnQPublic Γ¿»á Student.
-
- TASM2 #2-5/䫬 = 159 =
-
-
- éßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ¼«ªÑΓ Γá¬ªÑ «íαáΘáΓ∞ß∩ ¬ φ½Ñ¼Ñ¡Γá¼
- ßΓαπ¬Γπαδ, áñαÑßπ∩ß∞ ¬ ¡¿¼ «Γ¡«ß¿Γѽ∞¡« íẫó«ú« ¿½¿ ¿¡ñѬߡ«ú«
- αÑú¿ßΓαá. ìá»α¿¼Ñα:
-
- .
- .
- .
- asm mov bx,OFFSET JohnQPublic;
- asm mov ax,[bx].Grade;
- .
- .
- .
-
- çñÑß∞ ó αÑú¿ßΓα AX Γá¬ªÑ ºáúαπªáÑΓß∩ φ½Ñ¼Ñ¡Γ Grade ßΓαπ¬Γπαδ
- JohnQPublic. ū߬«½∞¬π Grade ¡áσ«ñ¿Γß∩ ó ßΓαπ¬ΓπαÑ Student »«
- ß¼ÑΘÑ¡¿ε 30, »«ß½Ññ¡¿⌐ »α¿¼Ñα ¡á ßἫ¼ ñÑ½Ñ »α¿¡¿¼áÑΓ ó¿ñ:
-
- .
- .
- .
- asm mov bx,OFFSET JohnQPublic;
- asm mov ax,[bx]+30
- .
- .
- .
-
- 髺¼«ª¡«ßΓ∞ «íαáΘáΓ∞ß∩ ¬ φ½Ñ¼Ñ¡Γá¼ ßΓαπ¬Γπαδ «Γ¡«ß¿Γѽ∞¡«
- αÑú¿ßΓαá-π¬áºáΓѽ∩ ∩ó½∩ÑΓß∩ ñ«ßΓáΓ«τ¡« ¼«Θ¡δ¼ ßαÑñßΓó«¼, »«ºó«½∩-
- εΘ¿¼ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ÇßßѼí½Ñαá αáí«ΓáΓ∞ ß ¼áßß¿óἿ ¿ ßΓαπ¬-
- ΓπαἿ ¿ ¿ß»«½∞º«óáΓ∞ π¬áºáΓѽ¿ ¡á ßΓαπ¬Γπαδ.
-
- àß½¿ ªÑ, «ñ¡á¬«, ñóÑ ¿½¿ í«½ÑÑ ßΓαπ¬Γπαδ, ¬ ¬«Γ«αδ¼ óδ «íαá-
- ΘáÑΓÑß∞ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ÇßßѼí½Ñαá, ß«ñÑαªáΓ φ½Ñ¼Ñ¡Γ ß «ñ¡¿¼ ¿
- ΓѼ ªÑ ¿¼Ñ¡Ñ¼, óδ ñ«½ª¡δ ó¬½ετ¿Γ∞ ß½ÑñπεΘÑÑ:
-
- asm mov bx,[di].(struct tm) tm_hour > alt
-
- ìá»α¿¼Ñα:
-
- .
- .
- .
- struct Student {
- char Teacher[30];
- int Grade;
-
- TASM2 #2-5/䫬 = 160 =
-
- } JohnQPublic;
- .
- .
- .
- struct Teacher {
- int Grade;
- long Income;
- };
- .
- .
- .
- asm mov ax,JohnQPublic.(struct Student) Grade
- .
- .
- .
-
-
-
-
-
- TASM2 #2-5/䫬 = 161 =
-
- Åα¿¼Ñα ¿ß»«½∞º«óá¡¿∩ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- ÆÑ»Ñα∞, ¬«úñá óδ πó¿ñѽ¿ ¡Ñ߬«½∞¬« Σαáú¼Ñ¡Γ«ó »α«úαá¼¼, ó
- ¬«Γ«αδσ ¿ß»«½∞ºπÑΓß∩ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα, ¼«ª¡« »«º¡á¬«¼¿Γ∞ß∩ ß
- αÑá½∞¡«⌐ αáí«ΓáεΘÑ⌐ »α«úαá¼¼«⌐ ß« óßΓα«Ñ¡¡δ¼ ¬«ñ«¼ ÇßßѼí½Ñαá.
- ¥Γ« ¼δ ¿ ßñѽáѼ ó ñá¡¡«¼ αáºñѽÑ. é »αÑñßΓáó½Ñ¡¡«⌐ ºñÑß∞ »α«ú-
- αá¼¼Ñ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ¿ß»«½∞ºπÑΓß∩ ñ½∩ πóѽ¿τÑ¡¿∩ ߬«α«ßΓ¿
- αáí«Γδ (»αÑ«íαẫóá¡¿∩ ΓѬßΓá ó óÑασ¡¿⌐ αÑú¿ßΓα). ¥Γá »α«úαá¼¼á
- ¼«ªÑΓ ß½πª¿Γ∞ ¿ »α¿¼Ñα«¼ Γ«ú«, τΓ« ¼«ª¡« ñѽáΓ∞ ß »«¼«Θ∞ε óßΓα«-
- Ñ¡¡«ú« ÇßßѼí½Ñαá, ¿ Γ«⌐ ßσѼ«⌐, ¡á «ß¡«óÑ ¬«Γ«α«⌐ óδ ¼«ªÑΓÑ αáº-
- αáíáΓδóáΓ∞ ßó«¿ ß«íßΓóÑ¡¡δÑ »α«úαá¼¼δ ß« óßΓα«Ñ¡¡δ¼ ¬«ñ«¼ ÇßßѼ-
- í½Ñαá.
-
- äáóá⌐ΓÑ »«ß¼«Γα¿¼ ß¡áτá½á, ¬á¬á∩ ºáñáτá αÑΦáÑΓß∩ ß »«¼«Θ∞ε
- ñá¡¡«⌐ »α«úαá¼¼δ-»α¿¼Ñαá. ìá¼ σ«Γѽ«ß∞ íδ ¡á»¿ßáΓ∞ Σπ¡¬µ¿ε ß ¿¼Ñ-
- ¡Ñ¼ StringToUpper, ¬«Γ«αá∩ ¬«»¿απÑΓ «ñ¡π ßΓ᫬π ó ñαπúπε, »αÑ«í-
- αáºπ∩ ó »α«µÑßßÑ αáí«Γδ óßÑ ß¿¼ó«½δ ¡¿ª¡Ñú« αÑú¿ßΓαá (ßΓα«τ¡δÑ
- íπ¬óδ) ó ß¿¼ó«½δ óÑασ¡Ñú« αÑú¿ßΓαá (»α«»¿ß¡δÑ íπ¬óδ). ò«Γѽ«ß∞ íδ
- ΓᬪÑ, τΓ«íδ φΓá Σπ¡¬µ¿∩ αáí«Γá½á «ñ¿¡á¬«ó« σ«α«Φ« ñ½∩ óßÑσ ßΓ᫬
- ¿ óßÑσ ¼«ñѽÑ⌐ »á¼∩Γ¿. Äñ¿¡ ¿º σ«α«Φ¿σ ß»«ß«í«ó «íÑß»Ñτ¿Γ∞ φΓ«
- ºá¬½ετáÑΓß∩ ó »ÑαÑñáτÑ ó Σπ¡¬µ¿ε π¬áºáΓѽÑ⌐ ñá½∞¡Ñú« Γ¿»á, Γá¬
- ¬á¬ π¬áºáΓѽ¿ í½¿ª¡Ñú« Γ¿»á (NEAR) óßÑúñá ¼«úπΓ íδΓ∞ »α¿óÑñÑ¡δ ¬
- π¬áºáΓѽ∩¼ ñá½∞¡Ñú« Γ¿»á (FAR), á «íαáΓ¡«Ñ óÑα¡« ¡Ñ óßÑúñá.
-
- è ß«ªá½Ñ¡¿ε, ºñÑß∞ 󫺡¿¬áÑΓ »α«í½Ñ¼á »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿. é
- Γ« óαѼ∩, ¬á¬ Æπαí« ÇßßѼí½Ñα αáí«ΓáÑΓ ß ñá½∞¡¿¼¿ π¬áºáΓѽ∩¼¿
- ñ«ßΓáΓ«τ¡« σ«α«Φ«, «íαáí«Γ¬á π¬áºáΓѽÑ⌐ ñá½∞¡Ñú« Γ¿»á ó Æπαí« æ¿
- óδ»«½¡∩ÑΓß∩ ßπΘÑßΓóÑ¡¡« ¼Ññ½Ñ¡¡ÑÑ, τѼ «íαáí«Γ¬á π¬áºáΓѽÑ⌐ í½¿ª-
- ¡Ñú« Γ¿»á. ¥Γ« ¡Ñ ∩ó½∩ÑΓß∩ ¡Ññ«ßΓáΓ¬«¼ Æπαí« æ¿, ߬«αÑÑ φΓ« ¡Ñ¿º-
- íѪ¡«Ñ ß½ÑñßΓó¿Ñ ¿ß»«½∞º«óá¡¿∩ ñ½∩ »α«úαá¼¼¿α«óá¡¿∩ »α«µÑßß«αá
- 8086 ∩ºδ¬á óδß«¬«ú« πα«ó¡∩.
-
- æ ñαπú«⌐ ßΓ«α«¡δ, «íαáí«Γ¬á ßΓ᫬ ¿ ñá½∞¡¿σ π¬áºáΓѽÑ⌐ - φΓ«
- Γá «í½áßΓ∞, ó ¬«Γ«α«⌐ ßÑí∩ »αÑó«ßσ«ñ¡« »«¬áºδóáÑΓ ÇßßѼí½Ñα. Æá-
- ¬¿¼ «íαẫ¼, ½«ú¿τÑ߬«Ñ αÑΦÑ¡¿Ñ ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ ¿ß»«½∞º«óáΓ∞
- ñ½∩ αáí«Γδ ß ñá½∞¡¿¼¿ π¬áºáΓѽ∩¼¿ ¿ ¬«»¿α«óá¡¿∩ ßΓ᫬¿ óßΓα«Ñ¡¡δ⌐
- ÇßßѼí½Ñα, á «ßΓá½∞¡πε τáßΓ∞ »¿ßáΓ∞ ¡á ∩ºδ¬Ñ æ¿. ¥Γ« ¿ αÑ὿º«óá-
- ¡« ó ß½ÑñπεΘÑ⌐ »α«úαá¼¼Ñ, ¬«Γ«αá∩ ¡áºδóáÑΓß∩ STRINGUP.C:
-
- /* Åα«úαá¼¼á ñ½∩ ñѼ«¡ßΓαᵿ¿ ¿ß»«½∞º«óá¡¿∩ StringToUpper().
- ä½∩ »αÑ«íαẫóá¡¿∩ ßΓ᫬¿ TestString ó óÑασ¡¿⌐ αÑú¿ßΓα
- óδºδóáÑΓß∩ Σπ¡¬µ¿∩ StringToUpper, »«ß½Ñ τÑú« »ÑτáΓáÑΓß∩
- »«½πτÑ¡¡á∩ ó αѺπ½∞ΓáΓÑ ßΓ᫬á UpperCaseString ¿ ÑÑ ñ½¿¡á. */
-
- #pragma inline
-
- TASM2 #2-5/䫬 = 162 =
-
- #include <stdio.h>
-
- /* Åα«Γ«Γ¿» Σπ¡¬µ¿¿ ñ½∩ StringToUpper() */
- extern unsigned int StringToUpper(
- unsigned char far * DestFarString,
- unsigned char far * SourceFarString);
-
- #define MAX_STRING_LENGTH 100
-
- char *TestString = "This started Out At Lowercase!";
- /* ßΓ᫬á, »αÑ«íαáºπѼá∩ ó óÑασ¡¿⌐ αÑú¿ßΓα */
-
- char UpperCaseString[MAX_STRING_LENGTH];
-
- main()
- {
- unsigned int StringLength;
-
- /* 欫»¿α«óáΓ∞ ßΓ᫬π TestString ó óÑασ¡Ñ¼ αÑú¿ßΓαÑ ó
- UpperCaseString */
- StringLength = StringToUpper(UpperCaseString, TestString);
-
- /* éδóÑßΓ¿ αѺπ½∞ΓáΓδ »αÑ«íαẫóá¡¿∩ */
- printf("êßσ«ñ¡á∩ ßΓ᫬á:\n%s\n\n", TestString);
- printf("æΓ᫬á ó óÑασ¡Ñ¼ αÑú¿ßΓαÑ:\n%s\n\n", UpperCaseString);
- printf("ù¿ß½« ß¿¼ó«½«ó: %d\n\n", StringLength);
- }
- /* öπ¡¬µ¿∩ ñ½∩ óδ»«½¡Ñ¡¿∩ íδßΓα«ú« »αÑ«íαẫóá¡¿∩ ó óÑασ¡¿⌐
- αÑú¿ßΓα «ñ¡«⌐ ßΓ᫬¿ ñá½∞¡Ñú« Γ¿»á ó ñαπúπε
-
- :
- DestFarString - ¼áßß¿ó ñ½∩ σαá¡Ñ¡¿∩ »αÑ«íαẫóá¡¡«⌐
- ó óÑασ¡¿⌐ αÑú¿ßΓα ßΓ᫬¿ (íπñÑΓ
- ºáóÑαΦáΓ∞ß∩ ¡π½Ñ¼)
- SourceFarString - ßΓ᫬á, ß«ñÑαªáΘá∩ ß¿¼ó«½δ, ¬«Γ«αδÑ
- ¡πª¡« »αÑ«íαẫóáΓ∞ ó óÑασ¡¿⌐ αÑú¿ßΓα
- (ñ«½ª¡á ºáóÑαΦáΓ∞ß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼)
-
- 髺óαáΘáѼδÑ αѺπ½∞ΓáΓδ:
- 使¡á ¿ßσ«ñ¡«⌐ ßΓ᫬¿ ó ß¿¼ó«½áσ, íѺ πτÑΓá
- ºáóÑαΦáεΘÑú« ¡π½Ñó«ú« ß¿¼ó«½á. */
-
- unsigned int StringToUpper(unsigned char far * DestFarSring,
- unsigned char far * SourceFarString)
- {
- unsigned int CharacterCount;
-
- TASM2 #2-5/䫬 = 163 =
-
-
- #define LOWER_CASE_A 'a'
- #define LOWER_CASE_Z 'z'
- asm ADJUST_VALUE EQU 20h; /* τ¿ß½«, ¬«Γ«α«Ñ ¡πª¡«
- óδτÑßΓ∞ ¿º º¡áτÑ¡¿⌐
- íπ¬ó ó ¡¿ª¡Ñ¼ αÑú¿ßΓ-
- αÑ, τΓ«íδ »αÑ«íαá-
- º«óáΓ∞ */
- asm cld;
- asm push ds; /* ß«σαá¡¿Γ∞ ßÑú¼Ñ¡Γ ñá¡¡δσ æ¿ */
- asm lds si,SourceFarString; /* ºáúαπº¿Γ∞ ñá½∞¡¿⌐
- π¬áºáΓѽ∞ ¡á ¿ßσ«ñ¡πε ßΓ᫬π */
- asm les di,DestFarString; /* ºáúαπº¿Γ∞ π¬áºáΓѽ∞
- ñá½∞¡Ñú« Γ¿»á ¡á µÑ½Ñóπε
- ßΓ᫬π */
- CharacterCount = 0; /* τ¿ß½« ß¿¼ó«½«ó */
- StringToUpperLoop:
- asm lodsb; /* »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½ */
- asm cmp al,LOWER_CASE_A; /* Ñß½¿ < á, Γ« φΓ« ¡Ñ
- ßΓα«τ¡á∩ íπ¬óá (¡¿ª¡¿⌐
- αÑú¿ßΓα) */
- asm jb SaveCharacter;
- asm cmp al,LOWER_CASE_Z; /* Ñß½¿ > z, Γ« φΓ« ¡Ñ
- ßΓα«τ¡á∩ íπ¬óá */
- asm ja SaveCharacter;
- asm sub al,ADJUST_VALUE; /* φΓ« ¡¿ª¡¿⌐ αÑú¿ßΓα,
- »αÑ«íαẫóáΓ∞ ó óÑασ¡¿⌐
- αÑú¿ßΓα */
- SaveCharacter:
- asm stosb; /* ß«σαá¡¿Γ∞ ß¿¼ó«½ */
- CharacterCount++; /* »«ñßτ¿ΓáΓ∞ φΓ«Γ ß¿¼ó«½ */
- asm and al,al; /* φΓ« ºáóÑαΦáεΘ¿⌐ ß¿¼ó«½?
- (¡«½∞) */
- asm jnz StringToUpperLoop; /* ¡ÑΓ, «íαáí«ΓáΓ∞
- ß½ÑñπεΘ¿⌐ ß¿¼ó«½, Ñß½¿ «¡
- ¿¼ÑÑΓß∩ */
- CharacterCount--; /* ¡Ñ πτ¿ΓδóáΓ∞ ºáóÑαΦáεΘ¿⌐ ¡«½∞ */
- asm pop ds; /* ó«ßßΓá¡«ó¿Γ∞ ßÑú¼Ñ¡Γ ñá¡¡δσ
- æ¿ */
- return(CharacterCount);
- }
-
- Æ«úñá »α¿ ºá»π᪥ STRINGUP.C ¡á φ¬αá¡ óδó«ñ¿Γß∩:
-
- êßσ«ñ¡á∩ ßΓ᫬á:
- String to convert to uppercase
-
- TASM2 #2-5/䫬 = 164 =
-
-
- æΓ᫬á ó óÑασ¡Ñ¼ αÑú¿ßΓαÑ:
- STRING TO CONVERT TO UPPERCASE
-
- ù¿ß½« ß¿¼ó«½«ó: 30
-
- ¥Γ« »«¬áºδóáÑΓ, τΓ« ñÑ⌐ßΓó¿Γѽ∞¡« óßÑ ßΓα«τ¡δÑ íπ¬óδ (¡¿ª¡¿⌐
- αÑú¿ßΓα) »αÑ«íαáºπεΓß∩ ó »α«»¿ß¡δÑ (óÑασ¡¿⌐ αÑú¿ßΓα).
-
- Äß¡«óπ »α«úαá¼¼δ STRINGUP.C ß«ßΓáó½∩ÑΓ Σπ¡¬µ¿∩
- StringToUpper, ¬«Γ«αá∩ óδ»«½¡∩ÑΓ óÑß∞ »α«µÑßß ¬«»¿α«óá¡¿∩ ßΓ᫬¿
- ¿ »αÑ«íαẫóá¡¿∩ ÑÑ ó óÑασ¡¿⌐ αÑú¿ßΓα. ¥Γá Σπ¡¬µ¿∩ ¡á»¿ßá¡á ¡á æ¿
- ¿ óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ ¿ ó«ß»α¿¡¿¼áÑΓ ó ¬áτÑßΓóÑ »áαá¼ÑΓα«ó ñóá
- π¬áºáΓѽ∩ ñá½∞¡Ñú« Γ¿»á. Äñ¿¡ ¿º π¬áºáΓѽÑ⌐ ñá½∞¡Ñú« Γ¿»á ßßδ½á-
- ÑΓß∩ ¡á ßΓ᫬π, ß«ñÑαªáΘπε ΓѬßΓ. äαπú«⌐ π¬áºδóáÑΓ ¡á ÑΘÑ «ñ¡π
- ßΓ᫬π, ó ¬«Γ«απε íπñÑΓ ß¬«»¿α«óá¡ óÑß∞ ΓѬßΓ ¿º »Ñαó«⌐ ßΓ᫬¿,
- ßΓα«τ¡δÑ ß¿¼ó«½δ ¬«Γ«α«ú« íπñπΓ »αÑ«íαẫóá¡δ ó óÑασ¡¿⌐ αÑú¿ßΓα.
- Ä»¿ßá¡¿Ñ Σπ¡¬µ¿¿ ¿ «»αÑñѽѡ¿Ñ »áαá¼ÑΓα«ó «íαáíáΓδóáεΓß∩ ¡á æ¿:
- ñÑ⌐ßΓó¿Γѽ∞¡«, »α«Γ«Γ¿» Σπ¡¬µ¿¿ StringToUpper π¬áºδóáÑΓß∩ ó ¡áτá-
- ½Ñ »α«úαá¼¼δ. Äß¡«ó¡á∩ »α«úαá¼¼á óδºδóáÑΓ Σπ¡¬µ¿ε StringToUpper
- ΓᬪÑ, ¬á¬ Ñß½¿ íδ «¡á íδ½á ¡á»¿ßá¡á µÑ½¿¬«¼ ¡á ∩ºδ¬Ñ æ¿. Æá¬¿¼
- «íαẫ¼, ¼«ª¡« ¿ß»«½∞º«óáΓ∞ óßÑ »αÑ¿¼πΘÑßΓóá »α«úαá¼¼¿α«óá¡¿∩ ¡á
- Æπαí« æ¿, σ«Γ∩ Σπ¡¬µ¿∩ StringToUpper ß«ñÑαª¿Γ óßΓα«Ñ¡¡δ⌐ ¬«ñ Çß-
- ßѼí½Ñαá.
-
- ÆÑ½« Σπ¡¬µ¿¿ StringToUpper ß«ñÑαª¿Γ ß¼Ñß∞ ¬«ñá æ¿ ¿ ÇßßѼ-
- í½Ñαá. ÇßßѼí½Ñα ¿ß»«½∞ºπÑΓß∩ ñ½∩ ßτ¿Γδóá¡¿∩ ¬áªñ«ú« ß¿¼ó«½á ¿º
- ¿ßσ«ñ¡«⌐ ßΓ᫬¿, »α«óÑન Ñú«, ¿, Ñß½¿ φΓ« ¡Ñ«íσ«ñ¿¼«, »αÑ«íαẫ-
- óá¡¿∩ ß¿¼ó«½á ó óÑασ¡¿⌐ αÑú¿ßΓα, »«ß½Ñ τÑú« ß¿¼ó«½ ºá»¿ßδóáÑΓß∩ ó
- µÑ½Ñóπε ßΓ᫬π (»α¿Ñ¼¡¿¬). éßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα »«ºó«½∩ÑΓ ¿ß»«½∞-
- º«óáΓ∞ ó Σπ¡¬µ¿¿ StringToUpper Γá¬¿Ñ ¼«Θ¡δÑ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿,
- ¬á¬ LODSB ¿ STOSB, ¬«Γ«αδÑ ßτ¿ΓδóáεΓ ¿ ºá»¿ßδóáεΓ ß¿¼ó«½δ.
-
- Åα¿ αáºαáí«Γ¬Ñ Σπ¡¬µ¿¿ StringToUpper ¼δ º¡á½¿, τΓ« ¡á¼ ¡Ñ
- »«ΓαÑíπÑΓß∩ «íαáΘáΓ∞ß∩ ¬ ßÑú¼Ñ¡Γπ ñá¡¡δσ Æπαí« æ¿, »«φΓ«¼π ¼δ
- »α«ßΓ« ºá¡Ñß½¿ ó ¡áτá½Ñ Σπ¡¬µ¿¿ αÑú¿ßΓα DS ó ßΓѬ ¿ ¿ß»«½∞º«ó὿
- Ñú« ñ½∩ ßß佬¿ ¡á ¿ßσ«ñ¡πε ßΓ᫬π (¿ßΓ«τ¡¿¬), ¡Ñ ¿º¼Ñ¡∩∩ ß«ñÑন-
- ¼«Ñ DS ó «ßΓá½∞¡«⌐ τáßΓ¿ Σπ¡¬µ¿¿. Äñ¡« ¿º í«½∞Φ¿σ »αÑ¿¼πΘÑßΓó ¿ß-
- »«½∞º«óá¡¿∩ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá »« ßαáó¡Ñ¡¿ε ß τ¿ßΓδ¼ »α«úαá¼-
- ¼¿α«ó᡿Ѽ ¡á ∩ºδ¬Ñ æ¿ ß«ßΓ«¿Γ ó 󫺼«ª¡«ßΓ¿ ºáúαπº¬¿ ñá½∞¡¿σ
- π¬áºáΓѽÑ⌐ ó ¡áτá½Ñ Σπ¡¬µ¿¿ íѺ »«ß½ÑñπεΘÑ⌐ ¿σ »ÑαѺáúαπº¬¿ ó «ß-
- Γá½∞¡«⌐ τáßΓ¿ Σπ¡¬µ¿¿. é «Γ½¿τ¿Ñ «Γ φΓ«ú« Æπαí« æ¿ ¿ ñαπú¿Ñ ∩ºδ¬¿
- óδß«¬«ú« πα«ó¡∩ »ÑαѺáúαπªáεΓ ñá½∞¡¿Ñ π¬áºáΓѽ¿ óß∩¬¿⌐ αáº, ¬«úñá
- «¡¿ ¿ß»«½∞ºπεΓß∩. 髺¼«ª¡«ßΓ∞ ºáúαπªáΓ∞ ñá½∞¡¿⌐ π¬áºáΓѽ∞ «ñ¿¡
- αẠ«º¡áτáÑΓ, τΓ« Σπ¡¬µ¿∩ StringToUpper «íαáíáΓδóáÑΓ ßΓ᫬¿ ñá½∞-
- ¡Ñú« Γ¿»á ΓᬠªÑ íδßΓα«, ¬á¬ ¿ ßΓ᫬¿ í½¿ª¡Ñú« Γ¿»á.
-
- TASM2 #2-5/䫬 = 165 =
-
-
- äαπú«Ñ ¿¡ΓÑαÑß¡«Ñ ºá¼Ñτá¡¿Ñ »« Σπ¡¬µ¿¿ StringToUpper ¬áßáÑΓ-
- ß∩ Γ«ú«, ¬á¬¿¼ «íαẫ¼ τÑαÑñπεΓß∩ «»ÑαáΓ«αδ ÇßßѼí½Ñαá ¿ ∩ºδ¬á
- æ¿. ä½∩ Γ«ú«, τΓ«íδ πßΓá¡«ó¿Γ∞ º¡áτÑ¡¿Ñ LOWER_CASE_A ¿ LOWER_CASE
- _Z ¿ß»«½∞ºπÑΓß∩ ñ¿αÑ¬Γ¿óá #define, á ñ½∩ ºáñá¡¿∩ º¡áτÑ¡¿∩ ADJUST_
- VALUE - ñ¿αÑ¬Γ¿óá ÇßßѼí½Ñαá EQU. Äñ¡á¬« ó ¬«ñÑ óßΓα«Ñ¡¡«ú« Çß-
- ßѼí½Ñαá óßÑ Γα¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ¿ß»«½∞ºπεΓß∩ «ñ¿¡á¬«ó«. Å«ñßΓá-
- ¡«ó¬¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, «»αÑñѽ∩Ѽδσ ó ∩ºδ¬Ñ æ¿, óδ»«½¡∩εΓß∩ »αÑ»-
- α«µÑßß«α«¼ Æπαí« æ¿, á »«ñßΓá¡«ó¬á ñ½∩ ADJUST_VALUE - Æπαí« Çß-
- ßѼí½Ñα«¼. Åα¿ φΓ«¼ «íá ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ó«
- óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ.
-
- é ΓÑ½Ñ Σπ¡¬µ¿¿ StringToUpper ñ½∩ αáí«Γδ ß« ßτÑΓτ¿¬«¼
- CharacterCount ¿ß»«½∞ºπεΓß∩ «»ÑαáΓ«αδ ∩ºδ¬á æ¿. ¥Γ« ßñѽᡫ Γ«½∞-
- ¬« ñ½∩ Γ«ú«, τΓ«íδ »«¬áºáΓ∞, τΓ« ¬«ñ ∩ºδ¬á æ¿ ¿ óßΓα«Ñ¡¡δ⌐ ÇßßѼ-
- í½Ñα ¼«úπΓ τÑαÑñ«óáΓ∞ß∩. ç¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐ CharacterCount ¼«ª¡«
- í佫 íδ ¿º¼Ñ¡∩Γ∞ ¿ ó ¬«ñÑ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá, ¿ß»«½∞ºπ∩ ñ½∩
- φΓ«ú« ßó«í«ñ¡δ⌐ αÑú¿ßΓα (¡á»α¿¼Ñα, αÑú¿ßΓα CX ¿½¿ DX). öπ¡¬µ¿∩
- StringToUpper αáí«Γá½á íδ ó φΓ«¼ ß½πτáÑ ñáªÑ íδßΓαÑÑ.
-
- æó«í«ñ¡«Ñ τÑαÑñ«óá¡¿Ñ ¬«ñá ∩ºδ¬á æ¿ ¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
- ñ«ó«½∞¡« α¿ß¬«óá¡¡«, Ñß½¿ óδ ¡Ñ »«¡¿¼áÑΓÑ τÑΓ¬«, ¬á¬«⌐ ¬«ñ úÑ¡Ñ-
- α¿απÑΓ Æπαí« æ¿ ¼Ñªñπ «»ÑαáΓ«αἿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá. êß»«½∞-
- º«óá¡¿Ñ »áαá¼ÑΓαá ¬«¼»¿½∩Γ«αá Æπαí« æ¿ -s »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¡á¿-
- ½πτΦ¿⌐ ß»«ß«í ¿ßß½Ññ«óáΓ∞, τΓ« »α«¿ßσ«ñ¿Γ, ¬«úñá óδ τÑαÑñπÑΓÑ
- óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ¿ ¬«ñ ∩ºδ¬á æ¿. ìá»α¿¼Ñα, óδ ¼«ªÑΓÑ ¿ßß½Ññ«-
- óáΓ∞, ¡á߬«½∞¬« ß««ΓóÑΓßΓóπεΓ ñαπú ñαπú𠬫ñ æ¿ ¿ óßΓα«Ñ¡¡«ú« Çß-
- ßѼí½Ñαá, Ñß½¿ ߬«¼»¿½¿απÑΓÑ »α«úαá¼¼π STRINGUP.C ß »áαá¼ÑΓα«¼ -s
- ¿ »α«ß¼«Γα¿ΓÑ »«½πτÑ¡¡δ⌐ αѺπ½∞ΓáΓÑ Σá⌐½ STRINGUP.ASM.
-
- Åα«úαá¼¼á STRINGUP.C ∩ß¡« ñѼ«¡ßΓα¿απÑΓ »αÑó«ßσ«ñ¡δÑ ¬áτÑßΓ-
- óá óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá. 鬽ετÑ¡¿Ñ ó Σπ¡¬µ¿ε StringToUp «¬«½«
- 15 ßΓ᫬ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá »«τΓ¿ πñóá¿óáÑΓ ß¬«α«ßΓ∞ «íαáí«Γ¬¿
- ßΓ᫬¿ »« ßαáó¡Ñ¡¿ε ß φ¬ó¿óá½Ñ¡Γ¡δ¼ ¬«ñ«¼ ¡á ∩ºδ¬Ñ æ¿.
-
-
-
-
- TASM2 #2-5/䫬 = 166 =
-
-
- Äúαá¡¿τÑ¡¿∩ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- Åα¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¿¼ÑÑΓß∩ ¡Ñ߬«½∞¬«
- «úαá¡¿τÑ¡¿⌐. èᬠ¼δ πªÑ º¡áѼ, «»ÑαáΓ«αδ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
- »α«ßΓ« »ÑαÑñáεΓß∩ íѺ ¿º¼Ñ¡Ñ¡¿⌐ Æπαí« ÇßßѼí½Ñαπ. Äñ¡á¬« ßπΘÑßΓ-
- óπεΓ «Γñѽ∞¡δÑ «úαá¡¿τÑ¡¿∩, ¬áßáεΘ¿Ñß∩ «»αÑñѽѡ¡δσ «»Ñαá¡ñ«ó
- ó »á¼∩Γ¿ ¿ áñαÑßᵿ¿, ¿ ¡Ñ¬«Γ«αδÑ «úαá¡¿τÑ¡¿∩, «Γ¡«ß∩Θ¿Ñß∩ ¬ ¿ß-
- »«½∞º«óá¡¿ε αÑú¿ßΓα«ó ¿ «ΓßπΓßΓó¿∩ ó« óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ ¡áº-
- ¡áτÑ¡¿∩ »« π¼«½τá¡¿ε αẼÑαá ñ½∩ ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ-
- ¡δσ æ¿.
-
- Äúαá¡¿τÑ¡¿∩ áñαÑßᵿ¿ ¬ «»Ñαá¡ñá¼ ó »á¼∩Γ¿
- -----------------------------------------------------------------
-
- àñ¿¡ßΓóÑ¡¡«Ñ ¿º¼Ñ¡Ñ¡¿Ñ, ¬«Γ«α«Ñ Æπαí« æ¿ ó¡«ß¿Γ ó «»ÑαáΓ«αδ
- óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá, ß«ßΓ«¿Γ ó »αÑ«íαẫóá¡¿¿ ßß佫¬ ¡á »á¼∩Γ∞
- ¿ áñαÑßá »á¼∩Γ¿ (¡á»α¿¼Ñα, ¿¼Ñ¡ »ÑαѼѡ¡δσ ¿ áñαÑß«ó »ÑαÑσ«ñá) ¿º
- ¿σ »αÑñßΓáó½Ñ¡¿∩ ó æ¿ ó ß««ΓóÑΓßΓóπεΘ¿⌐ φ¬ó¿óá½Ñ¡Γ ¡á ÇßßѼí½ÑαÑ.
- Æá¬¿Ñ ¿º¼Ñ¡Ñ¡¿∩ ¡á½áúáεΓ ñóá «úαá¡¿τÑ¡¿∩: ó ¿¡ßΓαπ¬µ¿∩σ »ÑαÑσ«ñá
- óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¼«ª¡« ßßδ½áΓ∞ß∩ Γ«½∞¬« ¡á ¼ÑΓ¬¿ æ¿, á ó
- »α«τ¿σ ¿¡ßΓαπ¬µ¿∩σ ¼«ª¡« ßßδ½áΓ∞ß∩ ¡á τΓ« πú«ñ¡«, ¬α«¼Ñ ¼ÑΓ«¬
- ∩ºδ¬á æ¿. ìá»α¿¼Ñα, »α«úαá¼¼á:
-
- .
- .
- .
- asm jz NoDec;
- asm dec cx;
- NoDec:
- .
- .
- .
-
- 󻫽¡Ñ ¬«ααÑ¬Γ¡á, á »α«úαá¼¼á:
-
- .
- .
- .
- asm jz NoDec;
- asm dec cx;
- asm NoDec:
- .
- .
- .
-
- TASM2 #2-5/䫬 = 167 =
-
-
- ¡Ñ íπñÑΓ »αáó¿½∞¡« ¬«¼»¿½¿α«óáΓ∞ß∩. ǡὫú¿τ¡«, ó ¿¡ßΓαπ¬µ¿∩σ »Ñ-
- αÑσ«ñá óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¡Ñ½∞º∩ ¿ß»«½∞º«óáΓ∞ ó ¬áτÑßΓóÑ «»Ñ-
- αá¡ñ«ó ¿¼Ñ¡á Σπ¡¬µ¿⌐.
-
- éßΓα«Ñ¡¡δÑ ¿¡ßΓαπ¬µ¿¿ ÇßßѼí½Ñαá, «Γ½¿τ¡δÑ «Γ »ÑαÑσ«ñ«ó, ¼«-
- úπΓ ß«ñÑαªáΓ∞ ½εíδÑ «»Ñαá¡ñδ, ¬α«¼Ñ ¼ÑΓ«¬ æ¿. ìá»α¿¼Ñα, »α«úαá¼-
- ¼á:
-
- .
- .
- .
- asm BaseValue db '0';
- .
- .
- .
- asm mov al,BYTE PTR BaseValue;
- .
- .
- .
-
- ¬«¼»¿½¿απÑΓß∩, á »α«úαá¼¼á:
-
- .
- .
- .
- BaseValue:
- asm db '0';
- .
- .
- .
- asm mov al,BYTE PTR BaseValue;
- .
- .
- .
-
- ¬«¼»¿½¿α«óáΓ∞ß∩ ¡Ñ íπñÑΓ. çá¼ÑΓ¿¼, τΓ« óδº«ó »«ñ»α«úαá¼¼δ ¡Ñ ßτ¿-
- ΓáÑΓß∩ »ÑαÑσ«ñ«¼, »«φΓ«¼π ó ¬áτÑßΓóÑ «»Ñαá¡ñ«ó »α¿ ó맮óÑ Σπ¡¬µ¿¿
- æ¿ ó ¿¡ßΓαπ¬µ¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¼«ª¡« π¬áºδóáΓ∞ ¿¼Ñ¡á
- Σπ¡¬µ¿⌐ æ¿ ¿ ¼ÑΓ¬¿ ÇßßѼí½Ñαá (¡« ¡Ñ ¼ÑΓ¬¿ æ¿). àß½¿ ó ¬«ñÑ
- óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¿¼ÑÑΓß∩ ßßδ½¬á ¡á ¿¼∩ Σπ¡¬µ¿¿ æ¿, Γ« »ÑαÑñ
- ¿¼Ñ¡Ñ¼ Σπ¡¬µ¿¿ ñ«½ªÑ¡ π¬áºδóáΓ∞ß∩ ß¿¼ó«½ »«ñτÑનóá¡¿∩ (í«½ÑÑ
- »«ñα«í¡« «í φΓ«¼ αáß߬áºδóáÑΓß∩ ó αáºñÑ½Ñ "Å«ñτÑનóá¡¿∩").
-
-
-
-
- TASM2 #2-5/䫬 = 168 =
-
- éßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ¿ αẼÑα ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ
- -----------------------------------------------------------------
-
- è«úñá Æπαí« æ¿ ºá¼Ñ¡∩ÑΓ ó «»ÑαáΓ«αÑ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
- ßß佬π ¡á ñ¿¡á¼¿τÑ߬πε ½«¬á½∞¡πε »ÑαѼѡ¡πε «»Ñαá¡ñ«¼ ó¿ñá
- [BP-02], «¡ ¡Ñ »«¼ÑΘáÑΓ ó ¿º¼Ñ¡Ñ¡¡δ⌐ «»ÑαáΓ«α «»Ñαáµ¿ε ¡áº¡áτÑ¡¿∩
- αẼÑαá (Γ¿»á WORD PTR ¿½¿ BYTE PTR). ¥Γ« «º¡áτáÑΓ, τΓ«:
-
- .
- .
- .
- int i;
- .
- .
- .
- asm mov ax,i;
- .
- .
- .
-
- óδó«ñ¿Γß∩ ó Σá⌐½ ÇßßѼí½Ñαá á ó¿ñÑ:
-
- mov ax,[bp-02]
-
- Åα«í½Ñ¼ ó ñá¡¡«¼ ß½πτáÑ ¡Ñ 󫺡¿¬áÑΓ, Γᬠ¬á¬ ¿ß»«½∞º«óá¡¿Ñ
- αÑú¿ßΓαá AX ß««íΘáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« φΓ« 16-í¿Γ«óá∩ ßß佬á
- ¡á »á¼∩Γ∞. ü«½ÑÑ Γ«ú«, «ΓßπΓßΓó¿Ñ «»Ñαᵿ¿ ºáñá¡¿∩ αẼÑαá ñáÑΓ
- óá¼ í«½∞Φπε ú¿í¬«ßΓ∞ ó π»αáó½Ñ¡¿¿ αẼÑα«¼ «»Ñαá¡ñá »α¿ ¿ß»«½∞º«-
- óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ »α¿¼Ñα:
-
- .
- .
- .
- int i;
- .
- .
- .
- asm mov i,0;
- asm inc i;
- .
- .
- .
-
- ¬«Γ«αδ⌐ »α¿¡¿¼áÑΓ ó¿ñ:
-
- mov [bp-02],0
-
- TASM2 #2-5/䫬 = 169 =
-
- inc [bp-02]
-
- ì¿ «ñ¡á ¿º φΓ¿σ ¿¡ßΓαπ¬µ¿⌐ ºñÑß∞ ¡Ñ ß«ñÑαª¿Γ »αÑñ»«½áúáѼ«ú«
- αẼÑαá, »«φΓ«¼π Æπαí« ÇßßѼí½Ñα ¡Ñ ¼«ªÑΓ ¿σ áßßÑ¼í½¿α«óáΓ∞. é
- ¿Γ«úÑ, ¬«úñá óδ ó Æπαí« ÇßßѼí½ÑαÑ «íαáΘáÑΓÑß∞ ¬ ñ¿¡á¼¿τÑ߬«⌐ ½«-
- ¬á½∞¡«⌐ »ÑαѼѡ¡«⌐, ¡Ñ ¿ß»«½∞ºπ∩ ó ¬áτÑßΓóÑ ¿ßΓ«τ¡¿¬á ¿½¿ »α¿Ñ¼-
- ¡¿¬á αÑú¿ßΓα, Γ« ¡πª¡« π¬áºδóáΓ∞ αẼÑα «»Ñαá¡ñá. æ πτÑΓ«¼ ߬á-
- ºá¡¡«ú« »«ß½Ññ¡¿⌐ »α¿¼Ñα ñ«½ªÑ¡ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .
- .
- .
- int i;
- .
- .
- .
- asm mov WORD PTR i,0;
- asm inc BYTE PTR i;
- .
- .
- .
-
-
-
-
- TASM2 #2-5/䫬 = 170 =
-
-
- ìÑ«íσ«ñ¿¼«ßΓ∞ ß«σαá¡Ñ¡¿∩ αÑú¿ßΓα«ó
- -----------------------------------------------------------------
-
- é ¬«¡µÑ ¬áªñ«ú« ¿ß»«½∞ºπѼ«ú« óἿ ¬«ñá óßΓα«Ñ¡¡«ú« ÇßßѼ-
- í½Ñαá αÑú¿ßΓαδ BP, CS, DS ¿ SS ñ«½ª¡δ ß«ñÑαªáΓ∞ ΓÑ ªÑ º¡áτÑ¡¿∩,
- ¬«Γ«αδÑ «¡¿ ¿¼Ñ½¿ »ÑαÑñ ¡áτὫ¼ óδ»«½¡Ñ¡¿∩ ¬«ñá óßΓα«Ñ¡¡«ú« Çß-
- ßѼí½Ñαá. ìÑß«í½εñÑ¡¿Ñ φΓ«ú« »αáó¿½á τáßΓ« íπñÑΓ »α¿ó«ñ¿Γ∞ ¬ áóá-
- α¿⌐¡«¼π ºáóÑαΦÑ¡¿ε »α«úαá¼¼δ (crash) ¿ »ÑαѺáúαπº¬á¼ ß¿ßΓѼδ. ÉÑ-
- ú¿ßΓαδ AX, BX, CX, DX, SI, DI, ES ¿ Σ½áú¿ ó ¬«ñÑ óßΓα«Ñ¡¡«ú« Çß-
- ßѼí½Ñαá ¼«ª¡« ßó«í«ñ¡« ¿º¼Ñ¡∩Γ∞.
-
-
- æ«σαá¡Ñ¡¿Ñ »α¿ ó맮óáσ Σπ¡¬µ¿⌐ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ
- -----------------------------------------------------------------
-
- é Æπαí« æ¿ ΓαÑíπÑΓß∩, τΓ«íδ αÑú¿ßΓαδ DI ¿ SI, ¬«Γ«αδÑ ¿ß-
- »«½∞ºπεΓß∩ ó ó¿ñÑ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ, ¡Ñ ¡áαπΦ὿ß∞ »α¿ ó맮-
- óáσ Σπ¡¬µ¿⌐. Äñ¡á¬« óá¼ ¡Ñ ¡πª¡« íÑß»«¬«¿Γ∞ß∩ « ∩ó¡«¼ ß«σαá¡Ñ¡¿¿
- αÑú¿ßΓα«ó DI ¿ SI »α¿ ¿ß»«½∞º«óá¡¿¿ ¿σ ó ¬«ñÑ óßΓα«Ñ¡¡«ú« ÇßßѼí-
- ½Ñαá, »«ß¬«½∞¬π «¡ ß«σαá¡∩ÑΓ ¿σ ó ¡áτá½Ñ Σπ¡¬µ¿⌐ ¿ ó«ßßΓá¡áó½¿óá-
- ÑΓ ó ¬«¡µÑ (φΓ« ÑΘÑ «ñ¡« ¿º πñ«íßΓó ¿ß»«½∞º«óá¡¿∩ óßΓα«Ñ¡¡«ú« Çß-
- ßѼí½Ñαá).
-
-
-
-
- TASM2 #2-5/䫬 = 171 =
-
-
- Å«ñáó½Ñ¡¿Ñ ó¡πΓαÑ¡¡¿σ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ
- -----------------------------------------------------------------
-
- ū߬«½∞¬π αÑú¿ßΓα«óδÑ »ÑαѼѡ¡δÑ σαá¡∩Γß∩ ó αÑú¿ßΓαáσ SI ¿
- DI, φΓ«, ¬áºá½«ß∞ íδ, ¼«ªÑΓ »α¿ó«ñ¿Γ∞ ¬ 󫺼«ª¡«¼π ¬«¡Σ½¿¬Γπ ¼Ñª-
- ñπ αÑú¿ßΓα«ó묨 »ÑαѼѡ¡δ¼¿ ó ñá¡¡«¼ ¼«ñπ½Ñ ¿ óßΓα«Ñ¡¡«¼ ¬«ñÑ Çß-
- ßѼí½Ñαá, ó ¬«Γ«α«¼ DI ¿ SI ¿ß»«½∞ºπεΓß∩ ó Γ«¼ ªÑ ¼«ñπ½Ñ. Æπαí«
- æ¿ »αÑñó¿ñ¿Γ Γá¬πε »α«í½Ñ¼π: ½εí«Ñ ¿ß»«½∞º«óá¡¿Ñ αÑú¿ßΓαá DI ¿½¿
- SI ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ »α¿óÑñÑΓ ¬ ºá»αÑΓπ ¿ß»«½∞º«óá¡¿∩ ñá¡¡«ú«
- αÑú¿ßΓαá ñ½∩ σαá¡Ñ¡¿∩ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ.
-
- é Æπαí« æ¿ óÑαß¿¿ 1.0 πßΓαá¡Ñ¡¿Ñ ¬«¡Σ½¿¬Γá ¼Ñªñπ αÑú¿ßΓα«ó«⌐
- »ÑαѼѡ¡«⌐ ¿ óßΓα«Ñ¡¡δ¼ ¬«ñ«¼ ÇßßѼí½Ñαá ¡Ñ «íÑß»Ñτ¿óáÑΓß∩. àß½¿
- óδ ¿ß»«½∞ºπÑΓÑ óÑαß¿ε 1.0, Γ« ¡πª¡« ½¿í« ∩ó¡δ¼ «íαẫ¼ ß«σαá¡∩Γ∞
- αÑú¿ßΓαδ DI ¿ SI »ÑαÑñ ¿σ ¿ß»«½∞º«ó᡿Ѽ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ Çß-
- ßѼí½Ñαá, ½¿í« »ÑαÑ⌐Γ¿ ¬ í«½ÑÑ »«ºñ¡Ñ⌐ óÑαß¿¿ ¬«¼»¿½∩Γ«αá.
-
-
- ìÑñ«ßΓáΓ¬¿ ¿ß»«½∞º«óá¡¿∩ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- îδ »«ßó∩Γ¿½¿ πªÑ ñ«ó«½∞¡« ¼¡«ú« óαѼѡ¿ ¿ßß½Ññ«óá¡¿ε Γ«ú«,
- ¬á¬ αáí«ΓáÑΓ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα, ¿ ¿ºπτÑ¡¿ε »«ΓÑ¡µ¿á½∞¡δσ »αÑ¿-
- ¼πΘÑßΓó Ñú« ¿ß»«½∞º«óá¡¿∩. ò«Γ∩ ñ½∩ ¼¡«ú¿σ »α¿¬½áñ¡δσ ºáñáτ
- óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα »αÑñßΓáó½∩ÑΓ ß«í«⌐ »αѬαáß¡«Ñ ßαÑñßΓó« ß Φ¿-
- ᫬¿¼ ߻ѬΓα«¼ 󫺼«ª¡«ßΓÑ⌐, «¡ ¿¼ÑÑΓ Γá¬ªÑ ¡Ñ¬«Γ«αδÑ ¡Ññ«ßΓáΓ¬¿.
- äáóá⌐ΓÑ αáßß¼«Γα¿¼ φΓ¿ ¡Ññ«ßΓáΓ¬¿, »«ß½Ñ τÑú« óδ ß¼«ªÑΓÑ ßñѽáΓ∞
- óδó«ñ, ¬«úñá ó óáΦ¿σ »α«úαá¼¼áσ ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ óßΓα«Ñ¡¡δ⌐
- ÇßßѼí½Ñα.
-
-
-
-
- TASM2 #2-5/䫬 = 172 =
-
- ô¼Ñ¡∞ΦÑ¡¿∩ 󫺼«ª¡«ßΓÑ⌐ »ÑαÑ¡«ß¿¼«ßΓ¿ ¿ «íß½πª¿óáѼ«ßΓ¿
- -----------------------------------------------------------------
-
- 髺¼«ª¡«ßΓ∞ ¡Ñ»«ßαÑñßΓóÑ¡¡«ú« »α«úαá¼¼¿α«óá¡¿∩ »α«µÑßß«αá
- 8086 - Γ« ßá¼«Ñ ¬áτÑßΓó«, ¬«Γ«α«Ñ ñѽáÑΓ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα Γá-
- ¬¿¼ φΣΣÑ¬Γ¿ó¡δ¼ - π¼Ñ¡∞ΦáÑΓ «ñ¡«óαѼѡ¡« 󫺼«ª¡«ßΓ¿ «ß¡«ó¡«ú«
- »αÑ¿¼πΘÑßΓóá ∩ºδ¬á æ¿, Ñú« »ÑαÑ¡«ß¿¼«ßΓ¿. àß½¿ óδ ¿ß»«½∞ºπÑΓÑ
- ó »α«úαá¼¼Ñ ¡á ∩ºδ¬Ñ æ¿ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα, Γ« óÑß∞¼á 󫺼«ª¡«,
- τΓ« óδ ¡Ñ ß¼«ªÑΓÑ íѺ ¿º¼Ñ¡Ñ¡¿⌐ »ÑαÑ¡ÑßΓ¿ óáΦπ »α«úαá¼¼π ¡á ñαπ-
- ú«⌐ »α«µÑßß«α ¿½¿ ¿ß»«½∞º«óáΓ∞ ñαπú«⌐ ¬«¼»¿½∩Γ«α ∩ºδ¬á æ¿.
-
- èα«¼Ñ Γ«ú«, ÇßßѼí½Ñα ¡Ñ ∩ó½∩ÑΓß∩ ßΓαπ¬Γπα¿α«óá¡¡δ¼ ∩ºδ¬«¼ ¿
- ¡Ñ ñáÑΓ Γ«⌐ ∩ß¡«ßΓ¿ ¿ »«¡∩Γ¡«ßΓ¿ ¿ßσ«ñ¡«ú« ¬«ñá, ¬«Γ«απε ¼«ªÑΓ
- «íÑß»Ñτ¿Γ∞ σ«α«Φ« Σ«α¼áΓ¿α«óá¡¡á∩ »α«úαá¼¼á ¡á ∩ºδ¬Ñ æ¿. é αÑ-
- ºπ½∞ΓáΓÑ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ó «íΘѼ ß½πτáÑ ú«αáºñ« Γαπñ¡ÑÑ
- τ¿ΓáΓ∞ ¿ «íß½πª¿óáΓ∞ (á¡á½¿º¿α«óáΓ∞ ¿ ¼«ñ¿Σ¿µ¿α«óáΓ∞ »α«úαá¼¼π),
- τѼ ¿ßσ«ñ¡δ⌐ ¬«ñ ¡á ∩ºδ¬Ñ æ¿.
-
- è«úñá óδ ¿ß»«½∞ºπÑΓÑ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá, Γ« σ«α«Φ«
- óδñѽ∩Γ∞ Ñú« ó «Γñѽ∞¡δÑ ¼«ñ㫨 ¿ ᬬπαáΓ¡« ¿ »«ñα«í¡« ¬«¼¼Ñ¡Γ¿-
- α«óáΓ∞. Åα¿ φΓ«¼ »α«úαá¼¼π ßΓá¡«ó¿Γß∩ »α«ΘÑ «íß½πª¿óáΓ∞. èα«¼Ñ
- Γ«ú«, ú«αáºñ« ½ÑúτÑ íπñÑΓ ¡á⌐Γ¿ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ¿ »ÑαÑ-
- »¿ßáΓ∞ Ñú« ¡á ∩ºδ¬Ñ æ¿, Ñß½¿ óδ ºáσ«Γ¿ΓÑ »ÑαÑ¡ÑßΓ¿ »α«úαá¼¼π ó
- ñαπúπε ßαÑñπ.
-
- ü«½ÑÑ ¼Ññ½Ñ¡¡á∩ ¬«¼»¿½∩µ¿∩
- -----------------------------------------------------------------
-
- 諼»¿½∩µ¿∩ ¼«ñπ½Ñ⌐ æ¿, ß«ñÑαªáΘ¿σ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá,
- óδ»«½¡∩ÑΓß∩ ßπΘÑßΓóÑ¡¡« ¼Ññ½Ñ¡¡ÑÑ, τѼ ¬«¼»¿½∩µ¿∩ «ñ¡«ú« ¿ßσ«ñ¡«-
- ú« ¬«ñá ∩ºδ¬á æ¿. ¥Γ« ó «ß¡«ó¡«¼ ßó∩ºá¡« ß ΓѼ, τΓ« óßΓα«Ñ¡¡δ⌐
- ¬«ñ ÇßßѼí½Ñαá ñ«½ªÑ¡ ¬«¼»¿½¿α«óáΓ∞ß∩ ñóáªñδ - ß¡áτá½á ¬«¼»¿½∩Γ«-
- α«¼ Æπαí« æ¿, á ºáΓѼ Æπαí« ÇßßѼí½Ñα«¼. àß½¿ Æπαí« æ¿ óδ¡πªñÑ¡
- »«óΓ«α¡« ¡áτ¿¡áΓ∞ ¬«¼»¿½∩µ¿ε, »«ß¬«½∞¬π ¡Ñ ¿ß»«½∞º«ó὿ß∞ ¡¿ »á-
- αá¼ÑΓαδ -b ¿½¿ -s, ¡¿ π¬áºá¡¿Ñ (ñ¿αÑ¬Γ¿óá) #pragma inline, Γ«
- óαѼ∩ ¬«¼»¿½∩µ¿¿ óßΓα«Ñ¡¡«ú« ¬«ñá ÇßßѼí½Ñαá ÑΘÑ í«½ÑÑ πóѽ¿τ¿Γ-
- ß∩. è ßτáßΓ∞ε, ¼Ññ½Ñ¡¡á∩ ¬«¼»¿½∩µ¿∩ ¼«ñπ½Ñ⌐, ß«ñÑαªáΘ¿σ óßΓα«Ñ¡-
- ¡δ⌐ ¬«ñ ÇßßѼí½Ñαá, ΓÑ»Ñα∞ »αÑñßΓáó½∩ÑΓ ß«í«⌐ ú«αáºñ« ¼Ñ¡∞Φπε
- »α«í½Ñ¼π, τѼ φΓ« í佫 αá¡∞ΦÑ, Γᬠ¬á¬ Æπαí« ÇßßѼí½Ñα αáí«ΓáÑΓ
- ú«αáºñ« íδßΓαÑÑ, τѼ í«½ÑÑ αá¡¡¿Ñ óÑαß¿¿ áßßѼí½Ñα«ó.
-
- 髺¼«ª¡«ßΓ∞ ¿ß»«½∞º«óá¡¿∩ Γ«½∞¬« ¬«¼»¿½∩Γ«αá Æææ
- -----------------------------------------------------------------
-
- èᬠ¼δ πªÑ π»«¼¿¡á½¿ αá¡ÑÑ, 󫺼«ª¡«ßΓ∞ ¿ß»«½∞º«óá¡¿∩ óßΓα«-
-
- TASM2 #2-5/䫬 = 173 =
-
- Ñ¡¡«ú« ÇßßѼí½Ñαá - φΓ« π¡¿¬á½∞¡«Ñ ßαÑñßΓó« ñ½∩ ¬«¼»¿½∩Γ«αá
- TCC.EXE (óÑαß¿¿ ¬«¼»¿½∩Γ«αá Æπαí« æ¿ TC.EXE, αáí«ΓáεΘÑ⌐ ß ¬«¼á¡-
- ñ¡«⌐ ßΓ᫬«⌐). 諼»¿½∩Γ«α Æπαí« æ¿ ß ¿¡ΓÑαá¬Γ¿ó¡«⌐ ßαÑñ«⌐ »α«ú-
- αá¼¼¿α«óá¡¿∩ TC.EXE óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ¡Ñ »«ññÑনóáÑΓ.
-
- Å«ΓÑα¿ ó «»Γ¿¼¿ºáµ¿¿
- -----------------------------------------------------------------
-
- Åα¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá »α«¿ßσ«ñ¿Γ ¡Ñ¬«Γ«-
- αá∩ »«ΓÑα∩ π»αáó½Ñ¡¿∩ Æπαí« æ¿ ¬«ñ«¼ »α«úαá¼¼δ, »«ß¬«½∞¬π ¡Ñ»«ß-
- αÑñßΓóÑ¡¡« ó ¿ßσ«ñ¡δ⌐ ¬«ñ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿ óδ ó¬½ετáÑΓÑ ¬«ñ
- ÇßßѼí½Ñαá. é «»αÑñѽѡ¡«⌐ ßΓѻѡ¿ óδ, ¬á¬ »α«úαá¼¼¿ßΓ, αáí«Γá-
- εΘ¿⌐ ¡á ÇßßѼí½ÑαÑ, ¼«ªÑΓÑ φΓ« ¬«¼»Ñ¡ß¿α«óáΓ∞, Ñß½¿ íπñÑΓÑ ¿ºíÑ-
- úáΓ∞ «»αÑñѽѡ¡δσ ¡ÑªÑ½áΓѽ∞¡δσ ñÑ⌐ßΓó¿⌐ (¡á»α¿¼Ñα, ¡Ñß«σαá¡Ñ¡¿∩
- αÑú¿ßΓαá DS, ¿½¿ ºá»¿ß¿ ó ¡ÑóÑα¡πε «í½áßΓ∞ »á¼∩Γ¿).
-
- æ ñαπú«⌐ ßΓ«α«¡δ, Æπαí« æ¿ ¡Ñ ΓαÑíπÑΓ, τΓ«íδ »α¿ ¿ß»«½∞º«óá-
- ¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá óδ ß«í½εñ὿ óßÑ Ñú« ó¡πΓαÑ¡¡¿Ñ »αáó¿-
- ½á (Ñß½¿ íδ φΓ« í佫 Γá¬, Γ« ½πτΦÑ í佫 íδ ¡Ñ »«½∞º«óáΓ∞ß∩
- óßΓα«Ñ¡¡δ¼ ÇßßѼí½Ñα«¼, á »«ºó«½¿Γ∞ ßúÑ¡Ñα¿α«óáΓ∞ ¬«ñ ÇßßѼí½Ñαá
- ¬«¼»¿½∩Γ«απ Æπαí« æ¿). é Σπ¡¬µ¿∩σ, ß«ñÑαªáΘ¿σ óßΓα«Ñ¡¡δÑ «»ÑαáΓ«-
- αδ ÇßßѼí½Ñαá, Æπαí« æ¿ "ó䬽ετáÑΓ" ¡Ñ¬«Γ«αδÑ ó¿ñδ «»Γ¿¼¿ºáµ¿¿,
- »«ºó«½∩∩ óá¼ ΓѼ ßá¼δ¼ «Γ¡«ß¿Γѽ∞¡« ßó«í«ñ¡« αáí«ΓáΓ∞ ß« óßΓα«Ñ¡-
- ¡δ¼ ¬«ñ«¼ ÇßßѼí½Ñαá. ìá»α¿¼Ñα, »α¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« Çß-
- ßѼí½Ñαá "ó䬽ετáεΓß∩" ¡Ñ¬«Γ«αδÑ ó¿ñδ «»Γ¿¼¿ºáµ¿¿ óßΓα«Ñ¡¡δσ »Ñ-
- αÑσ«ñ«ó, á Ñß½¿ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ¿ß»«½∞ºπεΓß∩ αÑú¿ßΓαδ DI ¿ SI,
- Γ« ºá»αÑΘáεΓß∩ αÑú¿ßΓα«óδÑ »ÑαѼѡ¡δÑ. Äñ¡á¬« Γá¬á∩ τáßΓ¿τ¡á∩ »«-
- ΓÑα∩ «»Γ¿¼¿ºáµ¿¿ ó º¡áτ¿Γѽ∞¡«⌐ ßΓѻѡ¿ ¬«¼»Ñ¡ß¿απÑΓß∩ ΓѼ, τΓ«
- τáßΓ¿ »α«úαá¼¼δ, αÑ὿º«óá¡¡δÑ ¡á ÇßßѼí½ÑαÑ, αáí«ΓáεΓ ß ¼á¬ß¿-
- ¼á½∞¡« 󫺼«ª¡«⌐ ߬«α«ßΓ∞ε.
-
- àß½¿ »α¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ñ½∩ óáß ¿¼ÑÑΓ
- í«½∞Φ«Ñ º¡áτÑ¡¿Ñ »«½πτÑ¡¿Ñ ¡á¿í«½ÑÑ íδßΓα«ú« ¿ ¬«¼»á¬Γ¡«ú« ¬«ñá,
- Γ« ñ½∩ óáß ¼«ªÑΓ «¬áºáΓ∞ß∩ ªÑ½áΓѽ∞¡δ¼ »¿ßáΓ∞ Σπ¡¬µ¿¿, ß«ñÑαªáΘ¿Ñ
- óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá, µÑ½¿¬«¼ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá (Γ« ÑßΓ∞
- ¡Ñ ß¼ÑΦ¿óá∩ ó «ñ¡«⌐ Σπ¡¬µ¿¿ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ß ∩ºδ¬«¼ æ¿).
- Æá¬¿¼ «íαẫ¼, óδ »«½πτ¿ΓÑ »«½¡δ⌐ ¬«¡Γα«½∞ ¡áñ ¬«ñ«¼ Σπ¡¬µ¿¿, ¡á-
- »¿ßá¡¡«⌐ µÑ½¿¬«¼ ¡á óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ, Ç Æπαí« æ¿ íπñÑΓ π»-
- αáó½∩Γ∞ ¬«ñ«¼ Σπ¡¬µ¿⌐, αÑ὿º«óá¡¡δσ ¡á ∩ºδ¬Ñ æ¿. Åα¿ φΓ«¼ ¿ óδ,
- ¿ Æπαí« æ¿ »«½πτáÑΓÑ »«½¡πε ßó«í«ñπ ¿ ó«º¼«ª¡«ßΓ∞ úÑ¡Ñαᵿ¿ ¡á-
- ¿½πτΦÑú« ¬«ñá íѺ «úαá¡¿τÑ¡¿⌐.
-
-
-
-
- TASM2 #2-5/䫬 = 174 =
-
- Äúαá¡¿τÑ¡¿∩ »α¿ «í¡áαπªÑ¡¿¿ «Φ¿í«¬
- -----------------------------------------------------------------
-
- ū߬«½∞¬π Æπαí« æ¿ óδ»«½¡∩ÑΓ ó «»ÑαáΓ«αáσ óßΓα«Ñ¡¡«ú« ÇßßѼ-
- í½Ñαá ß½áíπε »α«óÑα¬π ¡á «Φ¿í¬¿, «Φ¿í¬¿ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ÇßßѼ-
- í½Ñαá τáßΓ« αáß»«º¡áεΓß∩ Æπαí« ÇßßѼí½Ñα«¼, á ¡Ñ Æπαí« æ¿. æ ß«-
- ªá½Ñ¡¿ε, ¿¡«úñá «¬áºδóáÑΓß∩ ñ«ó«½∞¡« Γαπñ¡« πßΓá¡«ó¿Γ∞ ßó∩º∞ ¼Ñª-
- ñπ óδñáóáÑ¼δ¼ Æπαí« ÇßßѼí½Ñα«¼ ß««íΘÑ¡¿Ñ¼ «í «Φ¿í¬Ñ ¿ ¿ßσ«ñ¡δ¼
- ¬«ñ«¼ ¡á ∩ºδ¬Ñ æ¿, »«ß¬«½∞¬π φΓ¿ ß««íΘÑ¡¿∩ «í «Φ¿í¬áσ ¿ óδó«ñ¿¼δÑ
- ¡«¼Ñαá ßΓ᫬ «ß¡«óδóáεΓß∩ ¡á óδó«ñ¿¼«¼ Æπαí« æ¿ Σá⌐½Ñ ß αáßΦ¿αÑ-
- ¡¿Ñ¼ .ASM, á ¡Ñ ¡á ßἫ¼ ¿ßσ«ñ¡«¼ ¬«ñÑ ∩ºδ¬á æ¿.
-
- ìá»α¿¼Ñα, ó σ«ñÑ ¬«¼»¿½∩µ¿¿ »α«úαá¼¼δ TEST.C (»α«úαá¼¼δ ¡á
- ∩ºδ¬Ñ æ¿, ß«ñÑαªáΘÑ⌐ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá) Æπαí« ÇßßѼí½Ñα
- ¼«ªÑΓ óδóÑßΓ¿ ß««íΘÑ¡¿Ñ « ¡Ñ¬«ααÑ¬Γ¡«¼ αẼÑαÑ «»Ñαá¡ñá ¡á ßΓ᫬Ñ
- 23. è ß«ªá½Ñ¡¿ε, ¡«¼Ñα 23 «Γ¡«ß¿Γß∩ ¬ ¡«¼Ñαπ «Φ¿í«τ¡«⌐ ßΓ᫬¿ ó
- Σá⌐½Ñ TEST.ASM (»α«¼ÑªπΓ«τ¡«¼ Σá⌐½Ñ, ¬«Γ«αδ⌐ ¬«¼»¿½∩Γ«α Æπαí« æ¿
- úÑ¡Ñα¿απÑΓ ñ½∩ «íαáí«Γ¬¿ Ñú« Æπαí« ÇßßѼí½Ñα«¼). éá¼ ßἿ¼ »α¿-
- ñÑΓß∩ óδ∩ß¡¿Γ∞, ¬á¬á∩ ¿¼Ñ¡¡« ßΓ᫬á ó »α«úαá¼¼Ñ TEST.C óδºóá½á
- «Φ¿í¬π.
-
- ä½∩ φΓ«ú« ½πτΦÑ óßÑú« ß¡áτá½á ¡á⌐Γ¿ «Φ¿í«τ¡πε ßΓ᫬π ó »α«-
- ¼ÑªπΓ«τ¡«¼ Σá⌐½Ñ TEST.ASM, ¬«Γ«αδ⌐ ß«σαá¡∩ÑΓß∩ ¡á ñ¿ß¬Ñ ¬«¼»¿½∩Γ-
- «α«¼ Æπαí« æ¿ ó Γ«¼ ß½πτáÑ, Ñß½¿ Æπαí« ÇßßѼí½Ñα óδñáÑΓ ß««íΘÑ¡¿∩
- «í «Φ¿í¬áσ. öá⌐½ .ASM ß«ñÑαª¿Γ ß»Ñµ¿á½∞¡δÑ ¬«¼¼Ñ¡Γáα¿¿, ¿ñÑ¡Γ¿Σ¿-
- µ¿απεΘ¿Ñ ßΓ᫬π ó Σá⌐½Ñ æ¿, ¿º ¬«Γ«α«⌐ úÑ¡Ñα¿απÑΓß∩ ñá¡¡δ⌐ í½«¬
- «»ÑαáΓ«α«ó ÇßßѼí½Ñαá. ìá»α¿¼Ñα, ßΓ᫬¿ ¡á ÇßßѼí½ÑαÑ, ºá ¬«Γ«αδ-
- ¼¿ ß½ÑñπÑΓ ¬«¼¼Ñ¡Γáα¿⌐:
-
- ; Line 15
-
- (ßΓ᫬á 15), úÑ¡Ñα¿απεΓß∩ ¿º ßΓ᫬¿ 15 ¿ßσ«ñ¡«ú« Σá⌐½á æ¿. ū߽Ñ
- Γ«ú«, ¬á¬ óδ ¡á⌐ñÑΓÑ ó Σá⌐½Ñ .ASM ßΓ᫬π, ¬«Γ«αá∩ óδºóá½á «Φ¿í¬π,
- ñ½∩ «»αÑñѽѡ¿∩ ß««ΓóÑΓßΓóπεΘÑ⌐ ßΓ᫬¿ ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ æ¿ ¼«ª¡«
- ¿ß»«½∞º«óáΓ∞ π¬áºá¡¡δ⌐ ó ¡Ñ⌐ (ó ¬«¼¼Ñ¡Γáα¿¿) ¡«¼Ñα ßΓ᫬¿.
-
-
- Äúαá¡¿τÑ¡¿∩ »α¿ «Γ½áñ¬Ñ
- -----------------------------------------------------------------
-
- éÑαß¿¿ ¬«¼»¿½∩Γ«αá Æπαí« æ¿, ¡«¼Ñα ¬«Γ«αδσ ¡Ñ »αÑóδΦáÑΓ 1.5,
- ¡Ñ ¼«úπΓ úÑ¡Ñα¿α«óáΓ∞ ¿¡Σ«α¼áµ¿ε ñ½∩ «Γ½áñ¬¿ ¡á πα«ó¡Ñ ¿ßσ«ñ¡δσ
- ¬«ñ«ó (φΓá ¿¡Σ«α¼áµ¿∩ ¡Ñ«íσ«ñ¿¼á ñ½∩ Γ«ú«, τΓ«íδ »α¿ «Γ½áñ¬Ñ óδ
- ¼«ú½¿ »α«ß¼áΓα¿óáΓ∞ ¿ßσ«ñ¡δ⌐ ¬«ñ ¡á ∩ºδ¬Ñ æ¿) ñ½∩ ΓÑσ ¼«ñπ½Ñ⌐,
- ¬«Γ«αδÑ ß«ñÑαªáΓ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá. Åα¿ ¿ß»«½∞º«óá¡¿¿
- óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¬«¼»¿½∩Γ«αδ Æπαí« æ¿ óÑαß¿¿ 1.5 ¿ í«½ÑÑ
-
- TASM2 #2-5/䫬 = 175 =
-
- αá¡¡¿Ñ úÑ¡Ñα¿απεΓ »α«ßΓ« ¬«ñ ÇßßѼí½Ñαá íѺ ó¬½ετÑ¡¿∩ ¿¡Σ«α¼áµ¿¿
- ñ½∩ «Γ½áñ¬¿. 髺¼«ª¡«ßΓ∞ «Γ½áñ¬¿ ¡á πα«ó¡Ñ ¿ßσ«ñ¡«ú« ¬«ñá «¬áºδ-
- óáÑΓß∩ πΓαáτÑ¡¡«⌐, ¿ 󫺼«ª¡á Γ«½∞¬« «Γ½áñ¬á (¼«ñπ½Ñ⌐ æ¿, ß«ñÑα-
- ªáΘ¿σ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá) ¡á πα«ó¡Ñ ÇßßѼí½Ñαá.
-
- ü«½ÑÑ »«ºñ¡¿Ñ óÑαß¿¿ Æπαí« æ¿ ¿ß»«½∞ºπεΓ »αÑ¿¼πΘÑßΓóá ߻ѵ¿-
- á½∞¡δσ ßαÑñßΓó Æπαí« ÇßßѼí½Ñαá, «íÑß»Ñτ¿óáεΘ¿σ »α¿ ¿ß»«½∞º«óá¡¿¿
- Æπαí« «Γ½áñτ¿¬á «Γ½áñ¬π ¡á πα«ó¡Ñ ¿ßσ«ñ¡«ú« ¬«ñá ¬á¬ ñ½∩ ¼«ñπ½Ñ⌐,
- ß«ñÑαªáΘ¿σ óßΓα«Ñ¡¡δσ ¬«ñ ÇßßѼí½Ñαá, Γᬠ¿ ñ½∩ ¼«ñπ½Ñ⌐, ¡á»¿ßá¡-
- ¡δσ µÑ½¿¬«¼ ¡á ∩ºδ¬Ñ æ¿.
-
-
-
-
- TASM2 #2-5/䫬 = 176 =
-
- Éáºαáí«Γ¬á ¡á æ¿ ¿ »«ß½ÑñπεΘÑÑ ¿ß»«½∞º«óá¡¿Ñ ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- é ßóÑΓÑ «»¿ßá¡¡δσ ¡á¼¿ ¡Ññ«ßΓáΓ¬«ó ¿ «úαá¡¿τÑ¡¿⌐ ¿ß»«½∞º«óá-
- ¡¿∩ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¼«ªÑΓ »«¬áºáΓ∞ß∩, τΓ« óßΓα«Ñ¡¡δ⌐ Çß-
- ßѼí½Ñα ½πτΦÑ ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ó ß½πτáÑ ¬αá⌐¡Ñ⌐ ¡Ñ«íσ«ñ¿¼«ßΓ¿.
- ¥Γ« ¡Ñ Γá¬. Åα¿ αáºαáí«Γ¬Ñ »α«úαá¼¼δ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ñ« ßá-
- ¼«ú« »«ß½Ññ¡Ñú« φΓá»á ¼«ªÑΓ «¬áºáΓ∞ ßπΘÑßΓóÑ¡¡πε »«¼«Θ∞.
-
- ü«½∞Φá∩ τáßΓ∞ ¡Ññ«ßΓáΓ¬«ó óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ßó«ñ¿Γß∩ ¬
- «ñ¡«⌐ »α«í½Ñ¼Ñ: ¿ß»«½∞º«óá¡¿Ñ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¼«ªÑΓ ßπ-
- ΘÑßΓóÑ¡¡« ºá¼Ññ½¿Γ∞ µ¿¬½ αÑñá¬Γ¿α«óá¡¿∩-¬«¼»¿½∩µ¿¿-«Γ½áñ¬¿. ü«½ÑÑ
- ¼Ññ½Ñ¡¡á∩ ¬«¼»¿½∩µ¿∩, ¡Ñ󫺼«ª¡«ßΓ∞ ¿ß»«½∞º«óá¡¿∩ óßΓα«Ñ¡¡«⌐ ¿¡-
- ΓÑαá¬Γ¿ó¡«⌐ ßαÑñδ ¿ Γαπñ¡«ßΓ¿ ó ¡áσ«ªñÑ¡¿¿ «Φ¿í«¬ ¬«¼»¿½∩µ¿¿ «º-
- ¡áτáεΓ, τΓ« αáºαáí«Γ¬á »α«úαá¼¼δ, ß«ñÑαªáΘÑ⌐ óßΓα«Ñ¡¡δÑ «»ÑαáΓ«αδ
- ÇßßѼí½Ñαá, »«ΓαÑíπÑΓ, óÑα«∩Γ¡«, í«½∞ΦÑ óαѼѡ¿, τѼ αáºαáí«Γ¬á
- »α«úαá¼¼δ, ¡á»¿ßá¡¡«⌐ µÑ½¿¬«¼ ¡á ∩ºδ¬Ñ æ¿. Äñ¡á¬« »αáó¿½∞¡«Ñ ¿ß-
- »«½∞º«óá¡¿Ñ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¼«ªÑΓ º¡áτ¿Γѽ∞¡« π½πτΦ¿Γ∞ ¬á-
- τÑßΓó« »α«úαá¼¼δ. ùΓ« ªÑ ñѽáΓ∞?
-
- ÄΓóÑΓ »α«ßΓ. ìá »Ñαó«¼ φΓá»Ñ ¡πª¡« »¿ßáΓ∞ »α«úαá¼¼π µÑ½¿¬«¼
- ¡á ∩ºδ¬Ñ æ¿, »«½¡«ßΓ∞ε ¿ß»«½∞ºπ∩ »αÑ¿¼πΘÑßΓóá ¿¡ΓÑαá¬Γ¿ó¡«⌐ »α«ú-
- αá¼¼¡«⌐ ßαÑñδ ¬«¼»¿½∩Γ«αá TC.EXE. è«úñá »α«úαá¼¼á íπñÑΓ »«½¡«ßΓ∞ε
- ú«Γ«óá, «Γ½áªÑ¡á ¿ íπñÑΓ óδñáóáΓ∞ »αáó¿½∞¡δÑ αѺπ½∞ΓáΓδ, »ÑαÑ⌐ñ¿-
- ΓÑ ¬ ¿ß»«½∞º«óá¡¿ε ¬«¼á¡ñ¡«ú« ¬«¼»¿½∩Γ«αá TCC.EXE ¿ ¡áτ¡¿ΓÑ »αÑ-
- «íαẫóδóáΓ∞ ¬α¿Γ¿τÑ߬¿Ñ ¬π߬¿ »α«úαá¼¼δ ó ¬«ñ óßΓα«Ñ¡¡«ú« ÇßßѼ-
- í½Ñαá. Æá¬«⌐ »«ñσ«ñ »«ºó«½¿Γ óá¼ φΣΣÑ¬Γ¿ó¡« αáºαáí«ΓáΓ∞ ¿ «Γ½á-
- ñ¿Γ∞ »α«úαá¼¼π, á ºáΓѼ óδñѽ¿Γ∞ ¿ π½πτΦ¿Γ∞ «Γñѽ∞¡δÑ τáßΓ¿ ¬«ñá
- ¿ »ÑαÑ⌐Γ¿ ¬ Γ«¡¬«⌐ ÑÑ ñ«ó«ñ¬Ñ.
-
-
-
-
- TASM2 #2-5/䫬 = 177 =
-
- é맮ó Σπ¡¬µ¿⌐ Æπαí« ÇßßѼí½Ñαá ¿º Æπαí« æ¿
- -----------------------------------------------------------------
-
- ÇßßѼí½Ñα ¿ æ¿ Γαáñ¿µ¿«¡¡« ¿ß»«½∞ºπεΓß∩ ß«ó¼ÑßΓ¡«: «Γñѽ∞¡δÑ
- ¼«ñ㫨 »¿ΦπΓß∩ µÑ½¿¬«¼ ¡á ∩ºδ¬Ñ æ¿ ¿½¿ ÇßßѼí½ÑαÑ, óδ»«½¡∩ÑΓß∩
- ¬«¼»¿½∩µ¿∩ ¼«ñπ½Ñ⌐ æ¿ ¿ áßßÑ¼í½¿α«óá¡¿Ñ ¼«ñπ½Ñ⌐ ÇßßѼí½Ñαá, á ºá-
- ΓѼ ¬«¼»«¡«ó¬á φΓ¿σ «Γñѽ∞¡« ߬«¼»¿½¿α«óá¡¡δσ ¼«ñπ½Ñ⌐ ó «ñ¿¡ óδ-
- »«½¡∩Ѽδ⌐ Σá⌐½. ê¼Ñ¡¡« Γᬠ¼«ª¡« ¬«¼»«¡«óáΓ∞ ¼«ñ㫨 Æπαí« ÇßßѼí-
- ½Ñαá ¿ Æπαí« æ¿ (φëà »α«µÑßß »«¬áºá¡ ¡á É¿ß. 7.3).
-
- éδ»«½¡∩Ѽδ⌐ Σá⌐½ »«½πτáÑΓß∩ »πΓѼ "ß¼ÑΦ¿óá¡¿∩" ¿ßσ«ñ¡δσ Σá⌐-
- ½«ó æ¿ ¿ ÇßßѼí½Ñαá. ¥Γ«Γ »α«µÑßß ¼«ª¡« ¡áτáΓ∞ ¬«¼á¡ñ«⌐:
-
- tcc ¿¼∩_Σá⌐½á1 ¿¼∩_Σá⌐½á.asm
-
- ¬«Γ«αá∩ π¬áºδóáÑΓ Æπαí« æ¿, τΓ« ¡πª¡« ß¡áτá½á ¬«¼»¿½¿α«óáΓ∞ Σá⌐½
- ¿¼∩_Σá⌐½á_1.C ñ½∩ »«½πτÑ¡¿∩ «íΩÑ¬Γ¡«ú« Σá⌐½á ¿¼∩_Σá⌐½á_1.OBJ, ºá-
- ΓѼ óδºóáΓ∞ Æπαí« ÇßßѼí½Ñα ñ½∩ Γαá¡ß½∩µ¿¿ ¿ßσ«ñ¡«ú« Σá⌐½á
- ¿¼∩_Σá⌐½á_2.ASM ó Σá⌐½ ¿¼∩_Σá⌐½á_2.OBJ, ¿, ¡á¬«¡Ñµ, óδºóáΓ∞ πΓ¿-
- ½¿Γπ TLINK ñ½∩ ¬«¼»«¡«ó¬¿ Σá⌐½«ó ¿¼∩_Σá⌐½á_1.OBJ ¿ ¿¼∩_Σá⌐-
- ½á_2.OBJ ¿ »«½πτÑ¡¿∩ óδ»«½¡∩Ѽ«ú« Σá⌐½á ¿¼∩_Σá⌐½á_1.XE.
-
- -------------------- --------------------
- | êßσ«ñ¡δ⌐ Σá⌐½ ¡á | | êßσ«ñ¡δ⌐ Σá⌐½ ¡á |
- | ∩ºδ¬Ñ æ¿ FILE1.C | | ∩ºδ¬Ñ ÇßßѼí½Ñαá |
- | | | FILE2.ASM |
- -------------------- --------------------
- | |
- v v
- ---------- -----------------
- ( Æπαí« æ¿ ) ( Æπαí« ÇßßѼí½Ñα )
- ---------- -----------------
- | 諼»¿½∩µ¿∩ | ÇßßÑ¼í½¿α«óá¡¿Ñ
- v v
- -------------------- -------------------
- | ÄíΩÑ¬Γ¡δ⌐ Σá⌐½ | | ÄíΩÑ¬Γ¡δ⌐ Σá⌐½ |
- | FILE1.OBJ | | FILE2.OBJ |
- -------------------- -------------------
- | |
- ----------------- -------------------
- | |
- v v
- ----------
- ( TLINK )
- ----------
- |
-
- TASM2 #2-5/䫬 = 178 =
-
- v
- ------------------------------
- | éδ»«½¡∩Ѽδ⌐ Σá⌐½ FILE1.EXE |
- ------------------------------
-
- É¿ß. 7.3 諼»¿½∩µ¿∩, áßßÑ¼í½¿α«óá¡¿Ñ ¿ ¬«¼»«¡«ó¬á ß »«¼«Θ∞ε
- Æπαí« æ¿, Æπαí« ÇßßѼí½Ñαá ¿ πΓ¿½¿Γδ TLINK.
-
- Éáºñѽ∞¡á∩ ¬«¼»¿½∩µ¿∩ «¬áºδóáÑΓß∩ «τÑ¡∞ »«½Ñº¡«⌐ ñ½∩ »α«ú-
- αá¼¼, ß«ñÑαªáΘ¿σ º¡áτ¿Γѽ∞¡«⌐ «íΩѼ ¬«ñá ÇßßѼí½Ñαá, »«ß¬«½∞¬π
- «¡á »«ºó«½∩ÑΓ »«½¡«ßΓ∞ε ¿ß»«½∞º«óáΓ∞ 󫺼«ª¡«ßΓ¿ Æπαí« ÇßßѼí½Ñαá
- ¿ »α«úαá¼¼¿α«óáΓ∞ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ó τ¿ßΓ« áßßѼí½Ñα¡«¼ «¬απ-
- ªÑ¡¿¿, íѺ ¬½ετÑó«ú« ß½«óá asm, ñ«»«½¡¿Γѽ∞¡«ú« óαѼѡ¿ ¡á ¬«¼»¿-
- ½∩µ¿ε ¿ «Γ¡«ß∩Θ¿σß∩ ¬ æ¿ ñ«»«½¡¿Γѽ∞¡δσ ¿ºñÑαªÑ¬ »α¿ ¿ß»«½∞º«óá-
- ¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá.
-
- Äñ¡á¬« ºá αáºñѽ∞¡πε ¬«¼»¿½∩µ¿ε »α¿σ«ñ¿Γß∩ »½áΓ¿Γ∞ ß½ÑñπεΘπε
- µÑ¡π: »α«úαá¼¼¿ßΓ, αáí«ΓáεΘ¿⌐ ¡á ÇßßѼí½ÑαÑ, ñ«½ªÑ¡ 󡿬áΓ∞ ó«
- óßÑ ñÑΓ὿ «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá ∩ºδ¬á æ¿ ¿ ¬«ñá ÇßßѼí½Ñαá.é Γ«
- óαѼ∩ ¬á¬ Æπαí« æ¿ «íαáíáΓδóáÑΓ ß»Ñµ¿Σ¿¬áµ¿ε ßÑú¼Ñ¡Γ«ó, »ÑαÑñáτπ
- »áαá¼ÑΓα«ó, ßß佬¿ ¡á »ÑαѼѡ¡δÑ æ¿, ß«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«óδσ »ÑαÑ-
- ¼Ñ¡¡δσ ¿ Γ.ñ., αáºñѽ∞¡« ¬«¼»¿½¿απѼδÑ Σπ¡¬µ¿¿, ¡á»¿ßá¡¡δÑ ¡á Çß-
- ßѼí½ÑαÑ, ñ«½ª¡δ óßÑ φΓ« (¿ ñáªÑ í«½ÑÑ) ñѽáΓ∞ ∩ó¡δ¼ «íαẫ¼.
-
- é« óºá¿¼«ñÑ⌐ßΓó¿¿ Æπαí« æ¿ ¿ ÇßßѼí½Ñαá ¿¼ÑÑΓß∩ ñóá «ß¡«ó¡δσ
- á߻ѬΓá. é«-»Ñαóδσ, αẽ¿τ¡δÑ τáßΓ¿ ¬«ñá æ¿ ¿ ÇßßѼí½Ñαá ñ«½ª¡δ
- »αáó¿½∞¡« ¬«¼»«¡«óáΓ∞ß∩, á Σπ¡¬µ¿¿ ¿ »ÑαѼѡ¡δÑ ó ¬áªñ«⌐ τáßΓ¿
- ¬«ñá ñ«½ª¡δ íδΓ∞ ñ«ßΓπ»¡δ (Ñß½¿ φΓ« ¡Ñ«íσ«ñ¿¼«) ó «ßΓá½∞¡«⌐ τáßΓ¿
- ¬«ñá. é«-óΓ«αδσ, ¬«ñ ÇßßѼí½Ñαá ñ«½ªÑ¡ »αáó¿½∞¡« αáí«ΓáΓ∞ ß ó맮-
- óἿ Σπ¡¬µ¿⌐, ß««ΓóÑΓßΓóπεΘ¿σ ß«ú½áΦÑ¡¿∩¼ ∩ºδ¬á æ¿, τΓ« ó¬½ετáÑΓ
- ó ßÑí∩ ñ«ßΓπ» ¬ »ÑαÑñáóáÑ¼δ¼ »áαá¼ÑΓαá¼, ó«ºóαáΓ º¡áτÑ¡¿⌐ ¿ ß«í-
- ½εñÑ¡¿Ñ »αáó¿½ ß«σαá¡Ñ¡¿∩ αÑú¿ßΓα«ó, ¬«Γ«αδσ ΓαÑíπÑΓß∩ »α¿ñÑন-
- óáΓ∞ß∩ ó Σπ¡¬µ¿∩σ æ¿.
-
- äáóá⌐ΓÑ ΓÑ»Ñα∞ »α¿ßΓπ»¿¼ ¬ ¿ºπτÑ¡¿ε »αáó¿½ ¬«¼»«¡«ó¬¿ »α«ú-
- αá¼¼ Æπαí« ÇßßѼí½Ñαá ¿ Æπαí« æ¿.
-
-
-
-
- TASM2 #2-5/䫬 = 179 =
-
-
- Äß¡«ó¡δÑ ¼«¼Ñ¡Γδ ó ¿¡ΓÑαΣÑ⌐ßÑ Æπαí« ÇßßѼí½Ñαá ¿ Æπαí« æ¿
- -----------------------------------------------------------------
-
- ùΓ«íδ ߬«¼»«¡«óáΓ∞ ó¼ÑßΓÑ ¼«ñ㫨 Æπαí« æ¿ ¿ Æπαí« ÇßßѼí½Ñ-
- αá, ñ«½ª¡δ íδΓ∞ ß«í½εñÑ¡δ ß½ÑñπεΘ¿Ñ Γα¿ »π¡¬Γá:
-
- 1. é ¼«ñπ½∩σ Æπαí« ÇßßѼí½Ñαá ñ«½ª¡á ¿ß»«½∞º«óáΓ∞ß∩ ßσѼá
- ¡á¿¼Ñ¡«óá¡¿∩ ßÑú¼Ñ¡Γ«ó, ß«ó¼ÑßΓ¿¼á∩ ß Æπαí« æ¿.
-
- 2. Æπαí« æ¿ ¿ Æπαí« ÇßßѼí½Ñα ñ«½ª¡δ ß«ó¼ÑßΓ¡« ¿ß»«½∞º«óáΓ∞
- ß««ΓóÑΓßΓóπεΘ¿Ñ Σπ¡¬µ¿¿ ¿ ¿¼Ñ¡á »ÑαѼѡ¡δσ ó Σ«α¼Ñ, »α¿-
- Ѽ½Ñ¼«⌐ ñ½∩ Æπαí« æ¿.
-
- 3. ä½∩ ¬«¼í¿¡¿α«óá¡¿∩ ¼«ñπ½Ñ⌐ ó óδ»«½¡∩Ѽπε »α«úαá¼¼π ¡πª¡«
- ¿ß»«½∞º«óáΓ∞ πΓ¿½¿Γπ-¬«¼»«¡«óΘ¿¬ TLINK.
-
- çñÑß∞ ¡¿τÑú« ¡Ñ ú«ó«α¿Γ∞ß∩ « Γ«¼, τΓ« ó ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ ñÑ-
- ½áεΓ ¼«ñ㫨 Æπαí« ÇßßѼí½Ñαá. Å«¬á ¼δ ¬«ß¡Ñ¼ß∩ Γ«½∞¬« «ß¡«ó¡δσ
- ¼«¼Ñ¡Γ«ó, «íÑß»Ñτ¿óáεΘ¿σ αáºαáí«Γ¬π Σπ¡¬µ¿⌐ Æπαí« ÇßßѼí½Ñαá,
- ß«ó¼ÑßΓ¿¼δσ ß æ¿.
-
-
-
-
- TASM2 #2-5/䫬 = 180 =
-
-
- î«ñѽ¿ »á¼∩Γ¿ ¿ ßÑú¼Ñ¡Γδ
- -----------------------------------------------------------------
-
- ùΓ«íδ ñá¡¡á∩ Σπ¡¬µ¿∩ ÇßßѼí½Ñαá ¼«ú½á ¼«ú½á óδºδóáΓ∞ß∩ ¿º
- æ¿, «¡á ñ«½ª¡á ¿ß»«½∞º«óáΓ∞ Γπ ªÑ ¼«ñѽ∞ »á¼∩Γ¿, τΓ« ¿ »α«úαá¼¼á
- ¡á ∩ºδ¬Ñ æ¿, á Γá¬ªÑ ß«ó¼ÑßΓ¿¼δ⌐ ß æ¿ ßÑú¼Ñ¡Γ ¬«ñá. ǡὫú¿τ¡«,
- τΓ«íδ ñá¡¡δÑ, «»αÑñѽѡ¡δÑ ó ¼«ñπ½Ñ ÇßßѼí½Ñαá, í뫨 ñ«ßΓπ»¡δ ó
- »α«úαá¼¼Ñ ¡á ∩ºδ¬Ñ æ¿ (¿½¿ ñá¡¡δÑ æ¿ í뫨 ñ«ßΓπ»¡δ ó »α«úαá¼¼Ñ
- ÇßßѼí½Ñαá), ó »α«úαá¼¼Ñ ¡á ÇßßѼí½ÑαÑ ñ«½ª¡δ ß«í½εñáΓ∞ß∩ ß«ú½á-
- ΦÑ¡¿∩ ∩ºδ¬á æ¿ »« ¡á¿¼Ñ¡«óá¡¿ε ßÑú¼Ñ¡Γá ñá¡¡δσ.
-
- î«ñѽ¿ »á¼∩Γ¿ ¿ «íαáí«Γ¬π ßÑú¼Ñ¡Γ«ó ¡á ÇßßѼí½ÑαÑ ¼«ªÑΓ «¬á-
- ºáΓ∞ß∩ αÑ὿º«óáΓ∞ ñ«ó«½∞¡« ß½«ª¡«. è ßτáßΓ∞ε, Æπαí« ÇßßѼí½Ñα
- ßá¼ óδ»«½¡∩ÑΓ »«τΓ¿ óßε αáí«Γπ »« αÑ὿ºáµ¿¿ ¼«ñѽÑ⌐ »á¼∩Γ¿ ¿
- ßÑú¼Ñ¡Γ«ó, ß«ó¼ÑßΓ¿¼δσ ß Æπαí« æ¿, »α¿ ¿ß»«½∞º«óá¡¿¿ π»α«ΘÑ¡¡δσ
- ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó (ß¼. αáºñѽ "æΓá¡ñáαΓ¡δÑ ñ¿αÑ¬Γ¿óδ
- «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó" ó â½áóÑ 5, úñÑ ñáÑΓß∩ óóÑñÑ¡¿Ñ ó π»α«ΘÑ¡-
- ¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó).
-
- ô»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ¿ Æπαí« æ¿
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá DOSSEG π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡« π»«-
- α∩ñ«τ¿óáΓ∞ ßÑú¼Ñ¡Γδ ó ß««ΓóÑΓßΓó¿¿ ß ß«ú½áΦÑ¡¿∩¼¿ »« π»«α∩ñ«τ¿óá-
- ¡¿ε ßÑú¼Ñ¡Γ«ó Σ¿α¼δ Intel. ÆÑ ªÑ ß«ú½áΦÑ¡¿∩ ß«í½εñáεΓß∩ ó Æπαí«
- æ¿ (¿ ó« ¼¡«ú¿σ ñαπú¿σ ¿ºóÑßΓ¡δσ »α«ñπ¬Γáσ, ó¬½ετá∩ ∩ºδ¬¿ Σ¿α¼δ
- Microsoft).
-
- ä¿αÑ¬Γ¿óá .MODEL π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ßÑú¼Ñ¡Γδ,
- ß«ºñáóáѼδÑ ß »«¼«Θ∞ε π»α«ΘÑ¡¡δσ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó,
- ñ«½ª¡δ íδΓ∞ ß«ó¼ÑßΓ¿¼δ ß óδíαá¡¡«⌐ ¼«ñѽ∞ε »á¼∩Γ¿ (ßóÑασ¼á½«⌐,
- ¼á½«⌐, ¬«¼»á¬Γ¡«⌐, ßαÑñ¡Ñ⌐, í«½∞Φ«⌐ ¿½¿ ßóÑασí«½∞Φ«⌐) ¿ π»αáó½∩ÑΓ
- ¡áº¡áτáÑ¼δ¼ »« π¼«½τá¡¿ε Γ¿»«¼ (FAR ¿½¿ NEAR) »α«µÑñπα, ß«ºñáóáÑ-
- ¼δσ »« ñ¿αÑ¬Γ¿óÑ PROC. î«ñѽ¿ »á¼∩Γ¿, «»αÑñѽѡ¡δÑ ß »«¼«Θ∞ε ñ¿-
- αÑ¬Γ¿óδ .MODEL, ß«ó¼ÑßΓ¿¼δ ß ¼«ñѽ∩¼¿ Æπαí« æ¿ ß ß««ΓóÑΓßΓóπεΘ¿¼¿
- ¿¼Ñ¡á¼¿.
-
- ìᬫ¡Ñµ, π»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó .DATA,
- .CODE, .DATA?, .FARDATA, .FARDATA? ¿ .CONST úÑ¡Ñα¿απεΓ ßÑú¼Ñ¡Γδ,
- ß«ó¼ÑßΓ¿¼δÑ ß Æπαí« æ¿.
-
- ìá»α¿¼Ñα, αáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ ¼«ñπ½∞ Æπαí« ÇßßѼí½Ñαá ß
- ¿¼Ñ¡Ñ¼ DOTOTAL.ASM:
-
- DOSSEG ; óδíαáΓ∞ π»«α∩ñ«τ¿óá¡¿Ñ ßÑú¼Ñ¡Γ«ó,
-
- TASM2 #2-5/䫬 = 181 =
-
- ; »α¿¡∩Γ«Ñ Σ¿α¼«⌐ Intel
- .MODEL SMALL ; óδíαáΓ∞ ¼á½πε ¼«ñѽ∞ »á¼∩Γ¿
- ; (í½¿ª¡¿⌐ ¬«ñ ¿ ñá¡¡δÑ)
- .DATA ; ¿¡¿µ¿á½¿ºáµ¿∩ ßÑú¼Ñ¡Γá ñá¡¡δσ,
- ; ß«ó¼ÑßΓ¿¼«ú« ß Æπαí« æ¿
- EXTRN _Repetitions:WORD ; ó¡ÑΦ¡¿⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α
- PUBLIC _StartingValue ; ñ«ßΓπ»Ñ¡ ñ½∩ ñαπú¿σ ¼«ñπ½Ñ⌐
- _StartValue DW 0
- .DATA? ; ¿¡¿µ¿á½¿º¿α«óá¡¡δ⌐ ßÑú¼Ñ¡Γ
- ; ñá¡¡δσ, ß«ó¼ÑßΓ¿¼δ⌐ ß Æπαí« æ¿
- RunningTotal DW ?
- .CODE ; ßÑú¼Ñ¡Γ ¬«ñá, ß«ó¼ÑßΓ¿¼δ⌐ ß
- ; Æπαí« æ¿
- PUBLIC _DoTotal
- _DoTotal PROC ; Σπ¡¬µ¿∩ (ó ¼á½«⌐ ¼«ñѽ¿ »á¼∩Γ¿
- ; óδºδóáÑΓß∩ ß »«¼«Θ∞ε ó맮óá
- ; í½¿ª¡Ñú« Γ¿»á)
- mov cx,[_Repetitions] ; ßτÑΓτ¿¬ óδ»«½¡Ñ¡¿∩
- mov ax,[_StartValue]
- mov [RunningTotal],ax ; ºáñáΓ∞ ¡áτá½∞¡«Ñ
- ; º¡áτÑ¡¿Ñ
- TotalLoop:
- inc [RunningTotal] ; RunningTotal++
- loop TotalLoop
- mov ax,[RunningTotal] ; ó«ºóαáΓ¿Γ∞ ¬«¡Ñτ¡«Ñ
- ; º¡áτÑ¡¿Ñ (αѺπ½∞ΓáΓ)
- ret
- _DoTotal ENDP
- END
-
- (ÅÑαÑñ ¼¡«ú¿¼¿ ¼ÑΓ¬á¼¿ ó »α«µÑñπαÑ DoTotal π¬áºδóáÑΓß∩ ß¿¼-
- ó«½ »«ñτÑનóá¡¿∩ (_), Γᬠ¬á¬ φΓ« «íδτ¡« ΓαÑíπÑΓß∩ ó Æπαí« æ¿.
- ü«½ÑÑ »«ñα«í¡« φΓ« «»¿ßδóáÑΓß∩ ñá½ÑÑ ó αáºñÑ½Ñ "Å«ñτÑનóá¡¿∩".)
-
- ìỿßá¡¡á∩ ¡á ÇßßѼí½ÑαÑ »α«µÑñπαá _DoTotal »α¿ ¿ß»«½∞º«óá-
- ¡¿¿ ¼á½«⌐ ¼«ñѽ¿ »á¼∩Γ¿ ¼«ªÑΓ óδºδóáΓ∞ß∩ ¿º Æπαí« æ¿ ß »«¼«Θ∞ε
- «»ÑαáΓ«αá:
-
- DoTotal();
-
- çá¼ÑΓ¿¼, τΓ« ó »α«µÑñπαÑ DoTotal »αÑñ»«½áúáÑΓß∩, τΓ« úñÑ-Γ«
- ó ñαπú«⌐ τáßΓ¿ »α«úαá¼¼δ «»αÑñѽѡá ó¡ÑΦ¡∩∩ »ÑαѼѡ¡á∩
- Repetitions. ǡὫú¿τ¡«, »ÑαѼѡ¡á∩ StartingValue «íΩ∩ó½Ñ¡á, ¬á¬
- «íΘÑñ«ßΓπ»¡á∩, »«φΓ«¼π «¡á ñ«ßΓπ»¡á ó ñαπú¿σ τáßΓ∩σ »α«úαá¼¼δ.
- æ½ÑñπεΘ¿⌐ ¼«ñπ½∞ Æπαí« æ¿ (¬«Γ«αδ⌐ ¡áºδóáÑΓß∩ SHOWTOT.C) «íαáΘá-
- ÑΓß∩ ¬ ñá¡¡δ¼ ó DOTOTAL.ASM ¿ «íÑß»Ñτ¿óáÑΓ ñ½∩ ¼«ñπ½∩ DOTOTAL.ASM
-
- TASM2 #2-5/䫬 = 182 =
-
- ó¡ÑΦ¡¿Ñ ñá¡¡δÑ:
-
- extern int StartingValue;
- extern int DoTotal(word);
- int Repetitions;
- main()
- {
- int i;
- Repetitions = 10;
- StartingValue = 2;
- print("%d\n", DoTotal());
- }
-
- ùΓ«íδ ß«ºñáΓ∞ ¿º ¼«ñπ½Ñ⌐ DOTOTAL.ASM ¿ SHOWTOT.C óδ»«½¡∩Ѽπε
- »α«úαá¼¼π SHOWTOT.EXE, óóÑñ¿ΓÑ ¬«¼á¡ñπ:
-
- tcc showtot dototal.asm
-
- àß½¿ íδ óδ ºáσ«Γѽ¿ ߬«¼»«¡«óáΓ∞ »α«µÑñπαπ _DoTotal ß »α«ú-
- αá¼¼«⌐ ¡á ∩ºδ¬Ñ æ¿, ¿ß»«½∞ºπεΘÑ⌐ ¬«¼»á¬Γ¡πε ¼«ñѽ∞ »á¼∩Γ¿, Γ«
- »α¿Φ½«ß∞ íδ »α«ßΓ« ºá¼Ñ¡¿Γ∞ ñ¿αÑ¬Γ¿óπ .MODEL ¡á .MODEL COMPACT, á
- Ñß½¿ íδ óá¼ »«ΓαÑí«óὫß∞ ¿ß»«½∞º«óáΓ∞ ó DOTATOL.ASM ßÑú¼Ñ¡Γ
- ñá½∞¡Ñú« Γ¿»á, Γ« ¼«ª¡« í佫 íδ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ .FARDATA.
-
- è«α«τÑ ú«ó«α∩, »α¿ ¿ß»«½∞º«óá¡¿¿ π»α«ΘÑ¡¡δσ ñ¿αÑ¬Γ¿ó «»αÑñÑ-
- ½Ñ¡¿∩ ßÑú¼Ñ¡Γ«ó úÑ¡Ñαᵿ∩ ¬«ααÑ¬Γ¡«ú« π»«α∩ñ«τ¿óá¡¿∩ ßÑú¼Ñ¡Γ«ó,
- ¼«ñѽÑ⌐ »á¼∩Γ¿ ¿ ¿¼Ñ¡ ßÑú¼Ñ¡Γ«ó Γαπñá ¡Ñ ß«ßΓáó½∩ÑΓ.
-
-
-
-
- TASM2 #2-5/䫬 = 183 =
-
- æΓáαδÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ¿ Æπαí« æ¿
- -----------------------------------------------------------------
-
- è«ß¡Ñ¼ß∩ ΓÑ»Ñα∞ »α«í½Ñ¼δ «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá Æπαí« ÇßßѼ-
- í½Ñαá ß ¬«ñ«¼ ∩ºδ¬á æ¿, úñÑ ¿ß»«½∞ºπεΓß∩ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩
- ßÑú¼Ñ¡Γ«ó ßΓáα«ú« Γ¿»á (ßΓá¡ñáαΓ¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡-
- Γ«ó). ìá»α¿¼Ñα, Ñß½¿ óδ ºá¼Ñ¡¿ΓÑ ó ¼«ñπ½Ñ DOTOTAL.ASM π»α«ΘÑ¡¡δÑ
- ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ñ¿αÑ¬Γ¿óἿ ßΓáα«ú« Γ¿»á, Γ« »«-
- ½πτ¿ΓÑ:
-
- DGROUP group _DATA,_BSS
- _DATA segment word public 'DATA'
- EXTRN _Repetitions:WORD ; ó¡ÑΦ¡¿⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α
- PUBLIC _StartingValue ; ñ«ßΓπ»Ñ¡ ñ½∩ ñαπú¿σ ¼«ñπ½Ñ⌐
- _StartValue DW 0
- _DATA ends
- _BSS segment word public 'BSS'
- RunningTotal DW ?
- _BSS ends
- _TEXT segment byte public 'CODE'
- assume cs:_TEXT.ds:DGROUP,ss:DGROUP
- PUBLIC _DoTotal
- _DoTotal PROC ; Σπ¡¬µ¿∩ (ó ¼á½«⌐ ¼«ñѽ¿ »á¼∩Γ¿
- ; óδºδóáÑΓß∩ ß »«¼«Θ∞ε ó맮óá
- ; í½¿ª¡Ñú« Γ¿»á)
- mov cx,[_Repetitions] ; ßτÑΓτ¿¬ óδ»«½¡Ñ¡¿∩
- mov ax,[_StartValue]
- mov [RunningTotal],ax ; ºáñáΓ∞ ¡áτá½∞¡«Ñ
- ; º¡áτÑ¡¿Ñ
- TotalLoop:
- inc [RunningTotal] ; RunningTotal++
- loop TotalLoop
- mov ax,[RunningTotal] ; ó«ºóαáΓ¿Γ∞ ¬«¡Ñτ¡«Ñ
- ; º¡áτÑ¡¿Ñ (αѺπ½∞ΓáΓ)
- ret
- _DoTotal ENDP
- _TEXT ENDS
- END
-
- äá¡¡á∩ óÑαß¿∩ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ßΓáα«ú« Γ¿»á ¡Ñ
- Γ«½∞¬« ñ½¿¡¡ÑÑ, Γ« Γá¬ªÑ ¿ σπªÑ τ¿ΓáÑΓß∩. è Γ«¼π ªÑ »α¿ ¿ß»«½∞º«-
- óá¡¿¿ ó »α«úαá¼¼Ñ ¡á ∩ºδ¬Ñ æ¿ αẽ¿τ¡δσ ¼«ñѽÑ⌐ »á¼∩Γ¿ ÑÑ Γαπñ¡ÑÑ
- ¿º¼Ñ¡∩Γ∞. Åα¿ «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá ß Æπαí« æ¿ ó «íΘѼ ß½πτáÑ
- ó ¿ß»«½∞º«óá¡¿¿ ßΓáαδσ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ¡ÑΓ ¡¿¬á¬¿σ
- »αÑ¿¼πΘÑßΓó. àß½¿ ªÑ óδ ΓѼ ¡Ñ ¼Ñ¡ÑÑ ºáσ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ »α¿
- «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá ß Æπαí« æ¿ ßΓáαδÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩
-
- TASM2 #2-5/䫬 = 184 =
-
- ßÑú¼Ñ¡Γ«ó, óá¼ »α¿ñÑΓß∩ ¿ñÑ¡Γ¿Σ¿µ¿α«óáΓ∞ ¬«ααÑ¬Γ¡δÑ ßÑú¼Ñ¡Γδ, ß«-
- «ΓóÑΓßΓóπεΘ¿Ñ ¿ß»«½∞ºπÑ¼δ¼ ó ¬«ñÑ ¡á ∩ºδ¬Ñ æ¿ ¼«ñѽ∩¼ »á¼∩Γ¿. Äí-
- º«α ¿ß»«½∞º«óá¡¿∩ ßÑú¼Ñ¡Γ«ó ó Æπαí« æ¿ ß«ñÑনΓß∩ ó "Éπ¬«ó«ñßΓóÑ
- »«½∞º«óáΓѽ∩ »« Æπαí« æ¿".
-
- Åα«ßΓÑ⌐Φ¿⌐ ß»«ß«í «»αÑñѽѡ¿∩ ¡Ñ«íσ«ñ¿¼δσ ñ½∩ ¬«¼»«¡«ó¬¿ ß
- ñá¡¡«⌐ »α«úαá¼¼«⌐ ¡á Æπαí« æ¿ ñ¿αÑ¬Γ¿ó ßΓáα«ú« Γ¿»á ß«ßΓ«¿Γ ó
- Γ«¼, τΓ«íδ ߬«¼»¿½¿α«óáΓ∞ «ß¡«ó¡«⌐ ¼«ñπ½∞ »α«úαá¼¼δ ¡á Æπαí« æ¿ ß
- ¡πª¡«⌐ ¼«ñѽ∞ε »á¼∩Γ¿ ¿ »áαá¼ÑΓα«¼ -S. Åα¿ φΓ«¼ Æπαí« æ¿ ßúÑ¡Ñα¿-
- απÑΓ óÑαß¿ε ¿ßσ«ñ¡«ú« ¬«ñá æ¿ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá. é φΓ«¼ ¬«ñÑ óδ
- ¡á⌐ñÑΓÑ ßΓáαδÑ ñ¿αÑ¬Γ¿óδ, ¿ß»«½∞ºπѼδÑ Æπαí« æ¿. ÄßΓáÑΓß∩ »α«ßΓ«
- ߬«»¿α«óáΓ∞ ¿σ ó óáΦ ¬«ñ ¡á ÇßßѼí½ÑαÑ. ìá»α¿¼Ñα, Ñß½¿ óδ óóÑñÑΓÑ
- ¬«¼á¡ñπ:
-
- tcc -s showtot.c
-
- Γ« úÑ¡Ñα¿απÑΓß∩ Σá⌐½ SHOWTOT.ASM, ß«ñÑαªáΘ¿⌐:
-
- ifndef ??version
- ?debug macro
- endm
- endif
- name showtot
- _TEXT segment byte public 'CODE'
- DGROUP group _DATA,_BSS
- assume cs:_TEXT.ds:DGROUP,ss:DGROUP
- _TEXT ends
- _DATA segment word public 'DATA'
- _d@ label byte
- _d@w label word
- _DATA ends
- _BSS segment word public 'BSS'
- _b@ label byte
- _b@w label word
- ?debug C E91481D5100973688F77746F742E63
- _BSS ends
- _TEXT segment byte public 'CODE'
- ; ?debug L 3
- _main proc near
- ; ?debug L 6
- mov word ptr DGROUP:_Repetitions,10
- ; ?debug L 7
- mov word ptr DGROUP:_StartingValue,2
- ; ?debug L 8
- call near ptr _DoTotal
- push ax
-
- TASM2 #2-5/䫬 = 185 =
-
- mov ax,offset DGROUP:_s@
- push ax
- call near ptr _printf
- pop cx
- pop cx
- @1:
- ; debug L 9
- ret
- _main endp
- _TEXT ends
- _BSS segment word public 'BSS'
- _Repetitions label word
- db 2 dup (?)
- ?debug C E9
- _BSS ends
- _DATA segment word public 'DATA'
- _s@ label byte
- db 37
- db 100
- db 10
- db 0
- _DATA ends
- extrn _StartingValue:word
- _TEXT segment byte public 'CODE'
- extrn _DoTotal:near
- extrn _printf:near
- _TEXT ends
- public _Repetitions
- public _main
- end
-
- ä¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó _DATA (¿¡¿µ¿á½¿º¿α«óá¡¡δ⌐
- ßÑú¼Ñ¡Γ ñá¡¡δσ), _TEXT (ßÑú¼Ñ¡Γ ¬«ñá) ¿ _BSS (¡Ñ¿¡¿µ¿á½¿º¿α«óá¡-
- ¡δ⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ), á Γá¬ªÑ ñ¿αÑ¬Γ¿óδ GROUP ¿ ASSUME ¿¼ÑεΓ ú«Γ«-
- óδ⌐ ñ½∩ áßßÑ¼í½¿α«óá¡¿∩ ó¿ñ, »«φΓ«¼π óδ ¼«ªÑΓÑ ¿σ ¿ß»«½∞º«óáΓ∞
- (Γá¬, ¬á¬ «¡¿ π¬áºδóáεΓß∩).
-
-
-
-
- TASM2 #2-5/䫬 = 186 =
-
- ç¡áτÑ¡¿∩ »« π¼«½τá¡¿ε: ¬«úñá ¡Ñ«íσ«ñ¿¼« ºáúαπªáΓ∞ ßÑú¼Ñ¡Γδ?
- -----------------------------------------------------------------
-
- é ¡Ñ¬«Γ«αδσ ß½πτá∩σ óδºδóáѼδÑ ¿º ∩ºδ¬á æ¿ Σπ¡¬µ¿¿ ÇßßѼí½Ñ-
- αá ¼«úπΓ ¿ß»«½∞º«óáΓ∞ (ºáúαπªáΓ∞) ñ½∩ «íαáΘÑ¡¿∩ ¬ ñá¡¡δ¼ αÑú¿ßΓαδ
- DS ¿/¿½¿ ES. Å«½Ñº¡« º¡áΓ∞ ß««Γ¡«ΦÑ¡¿Ñ ¼Ñªñπ º¡áτÑ¡¿∩¼¿ ßÑú¼Ñ¡-
- Γ¡δσ αÑú¿ßΓα«ó »α¿ ó맮óÑ ¿º Æπαí« æ¿, Γᬠ¬á¬ ¿¡«úñá ÇßßѼí½Ñα
- ¿ß»«½∞ºπÑΓ »αÑ¿¼πΘÑßΓóá φ¬ó¿óá½Ñ¡Γ¡«ßΓ¿ ñóπσ ßÑú¼Ñ¡Γ¡δσ αÑú¿ßΓ-
- α«ó. äáóá⌐ΓÑ αáßß¼«Γα¿¼ º¡áτÑ¡¿∩ ßÑú¼Ñ¡Γ¡δσ αÑú¿ßΓα«ó ó ëà ¼«-
- ¼Ñ¡Γ, ¬«úñá Σπ¡¬µ¿∩ ÇßßѼí½Ñαá óδºδóáÑΓß∩ ¿º Æπαí« æ¿, á ΓᬪÑ
- ß««Γ¡«ΦÑ¡¿∩ ¼Ñªñπ ßÑú¼Ñ¡Γ¡δ¼¿ αÑú¿ßΓαἿ, ¿ ß½πτá¿, ¬«úñá ó Σπ¡¬-
- µ¿¿ ÇßßѼí½Ñαá ΓαÑíπÑΓß∩ ºáúαπªáΓ∞ «ñ¿¡ ¿½¿ í«½ÑÑ ßÑú¼Ñ¡Γ¡δσ αÑ-
- ú¿ßΓα«ó.
-
- Åα¿ óσ«ñÑ ó Σπ¡¬µ¿ε ÇßßѼí½Ñαá ¿º Æπαí« æ¿ αÑú¿ßΓαδ CS ¿ DS
- ¿¼ÑεΓ ß½ÑñπεΘ¿Ñ º¡áτÑ¡¿∩, ¬«Γ«αδÑ ºáó¿ß∩Γ «Γ ¿ß»«½∞ºπѼ«⌐ ¼«ñѽ¿
- »á¼∩Γ¿ (αÑú¿ßΓα SS óßÑúñá ¿ß»«½∞ºπÑΓß∩ ñ½∩ ßÑú¼Ñ¡Γá ßΓѬá, á ES
- óßÑúñá ¿ß»«½∞ºπÑΓß∩, ¬á¬ ¡áτá½∞¡δ⌐ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα):
-
-
- ç¡áτÑ¡¿∩ αÑú¿ßΓα«ó »α¿ óσ«ñÑ ó ÇßßѼí½Ñα ¿º Æπαí« æ¿
- Æáí½¿µá 7.1
- -----------------------------------------------------------
- î«ñѽ∞ CS DS
- -----------------------------------------------------------
- æóÑασ¼á½á∩ _TEXT DGROUP
- îá½á∩ _TEXT DGROUP
- 諼»á¬Γ¡á∩ _TEXT DGROUP
- æαÑñ¡∩∩ ¿¼∩_Σá⌐½á_TEXT DGROUP
- ü«½∞Φá∩ ¿¼∩_Σá⌐½á_TEXT DGROUP
- æóÑασí«½∞Φá∩ ¿¼∩_Σá⌐½á_TEXT ¿¼∩_óδºδóáεΘÑú«_Σá⌐½á_DATA
- -----------------------------------------------------------
-
- çñÑß∞ "¿¼∩_Σá⌐½á" - φΓ« ¿¼∩ ¼«ñπ½∩ ¡á ÇßßѼí½ÑαÑ, á
- "¿¼∩_óδºδóáεΘÑú«_Σá⌐½á" - φΓ« ¿¼∩ ¼«ñπ½∩ Æπαí« æ¿, óδºδóáεΘÑú«
- ¼«ñπ½∞ ¡á ÇßßѼí½ÑαÑ.
-
- é ¬«¼»á¬Γ¡«⌐ ¼«ñѽ¿ »á¼∩Γ¿ _TEXT ¿ DGROUP ß«ó»áñáεΓ, »«φΓ«¼π
- »α¿ óσ«ñÑ ó Σπ¡¬µ¿ε ß«ñÑন¼«Ñ αÑú¿ßΓαá CS αáó¡« ß«ñÑন¼«¼π DS.
- Åα¿ ¿ß»«½∞º«óá¡¿¿ ßóÑασ¼á½«⌐, ¼á½«⌐ ¿ ¬«¼»á¬Γ¡«⌐ ¼«ñѽ¿ »á¼∩Γ¿
- »α¿ óσ«ñÑ ó Σπ¡¬µ¿ε ß«ñÑন¼«Ñ SS αáó¡« ß«ñÑন¼«¼π αÑú¿ßΓαá DS.
-
- è«úñá ªÑ ó Σπ¡¬µ¿¿ ¡á ÇßßѼí½ÑαÑ, óδºδóáѼ«⌐ ¿º »α«úαá¼¼δ ¡á
- ∩ºδ¬Ñ æ¿, ¡Ñ«íσ«ñ¿¼« ºáúαπªáΓ∞ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα? ÄΓ¼ÑΓ¿¼ ñ½∩
- ¡áτá½á, τΓ« óá¼ ¡¿¬«úñá ¡Ñ »α¿ñÑΓß∩ (í«½ÑÑ Γ«ú«, φΓ«ú« ¡Ñ ß½ÑñπÑΓ
- ñѽáΓ∞) ºáúαπªáΓ∞ αÑú¿ßΓαδ SS ¿½¿ CS: »α¿ ñá½∞¡¿σ ó맮óáσ, »ÑαÑ-
-
- TASM2 #2-5/䫬 = 187 =
-
- σ«ñáσ ¿½¿ ó«ºóαáΓáσ αÑú¿ßΓα CS áóΓ«¼áΓ¿τÑ߬¿ πßΓá¡áó½¿óáÑΓß∩ ó
- ¡πª¡«Ñ º¡áτÑ¡¿Ñ, á αÑú¿ßΓα SS óßÑúñá π¬áºδóáÑΓ ¡á ßÑú¼Ñ¡Γ ßΓÑ¬á ¿
- ó σ«ñÑ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ ¿º¼Ñ¡∩Γ∞ Ñú« ¡Ñ ß½ÑñπÑΓ (Ñß½¿ Γ«½∞¬«
- óδ ¡Ñ »¿ΦÑΓÑ »α«úαá¼¼π, ¬«Γ«αá∩ "»ÑαѬ½ετáÑΓ" ßΓѬ¿; ó φΓ«¼ ß½π-
- τáÑ óá¼ ¡πª¡« τÑΓ¬« »«¡¿¼áΓ∞, τΓ« óδ ñѽáÑΓÑ).
-
- ÉÑú¿ßΓα ES óδ ¼«ªÑΓÑ óßÑúñá ¿ß»«½∞º«óáΓ∞ Γá¬, ¬á¬ φΓ« ΓαÑíπ-
- ÑΓß∩. éδ ¼«ªÑΓÑ πßΓá¡«ó¿Γ∞ Ñú« Γᬿ¼ «íαẫ¼, τΓ«íδ «¡ π¬áºδóá½
- ¡á ñá¡¡δÑ ß ñá½∞¡¿¼ Γ¿»«¼ «íαáΘÑ¡¿∩, ¿½¿ ºáúαπº¿Γ∞ ó ES ßÑú-
- ¼Ñ¡Γ-»α¿Ñ¼¡¿¬ ñ½∩ ßΓ᫬«ó«⌐ Σπ¡¬µ¿¿.
-
- æ αÑú¿ßΓα«¼ DS ñѽ« «íßΓ«¿Γ ¿¡áτÑ. é« óßÑσ ¼«ñѽ∩σ »á¼∩Γ¿
- Æπαí« æ¿, ¬α«¼Ñ ßóÑασí«½∞Φ«⌐, αÑú¿ßΓα DS »α¿ óσ«ñÑ ó Σπ¡¬µ¿ε π¬á-
- ºδóáÑΓ ¡á ßΓáΓ¿τÑ߬¿⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ (DGROUP), ¿ ¿º¼Ñ¡∩Γ∞ Ñú« ¡Ñ
- ß½ÑñπÑΓ. ä½∩ ñ«ßΓπ»á ¬ ñá¡¡δ¼ ß ñá½∞¡¿¼ Γ¿»«¼ «íαáΘÑ¡¿∩ óßÑúñá
- ¼«ª¡« ¿ß»«½∞º«óáΓ∞ αÑú¿ßΓα ES, σ«Γ∩ óδ ¼«ªÑΓÑ »«ßτ¿ΓáΓ∞, τΓ« ñ½∩
- φΓ«ú« óαѼѡ¡« ¡πª¡« ¿ß»«½∞º«óáΓ∞ αÑú¿ßΓα DS (Ñß½¿ óδ ß«í¿αáÑΓÑß∞
- «ßπΘÑßΓó½∩Γ∞ ¿¡Γѡ߿ó¡δ⌐ ñ«ßΓπ» ¬ ñá¡¡δ¼), τΓ« ¿ß¬½ετ¿Γ ¡Ñ«íσ«ñ¿-
- ¼«ßΓ∞ ¿ß»«½∞º«óá¡¿∩ ó óáΦÑ⌐ »α«úαá¼¼Ñ ¼¡«ªÑßΓóá ¿¡ßΓαπ¬µ¿⌐ ß »αÑ-
- Σ¿¬ß«¼ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá. ìá»α¿¼Ñα, óδ ¼«ªÑΓÑ «íαáΓ¿Γ∞ß∩ ¬
- ñá½∞¡Ñ¼π ßÑú¼Ñ¡Γπ «ñ¡¿¼ ¿º ß½ÑñπεΘ¿σ ß»«ß«í«ó:
-
- .
- .
- .
- .FARDATA
- Counter DW 0
- .
- .
- .
- .CODE
- PUBLIC _AsmFunction
- _AsmFunction PROC
- .
- .
- .
- mov ax,@FarData
- mov es,ax ; ES π¬áºδóáÑΓ ¡á
- ; ßÑú¼Ñ¡Γ ñá¡¡δσ ß
- ; ñá½∞¡¿¼ Γ¿»«¼
- ; «íαáΘÑ¡¿∩
- inc es:[Counter] ; πóѽ¿τ¿Γ∞ º¡áτÑ¡¿Ñ
- ; ßτÑΓτ¿¬á
- .
- .
- .
-
- TASM2 #2-5/䫬 = 188 =
-
- _AsmFunction ENDP
- .
- .
- .
-
- ¿½¿
-
- .
- .
- .
- .FARDATA
- Counter DW 0
- .
- .
- .
- .CODE
- PUBLIC _AsmFunction
- _AsmFunction PROC
- .
- .
- .
- assume ds:@FarData
- mov ax,@FarDAta
- mov ds,ax ; DS π¬áºδóáÑΓ ¡á
- ; ßÑú¼Ñ¡Γ ñá¡¡δσ ß
- ; ñá½∞¡¿¼ Γ¿»«¼
- ; «íαáΘÑ¡¿∩
- inc [Counter] ; πóѽ¿τ¿Γ∞ º¡áτÑ¡¿Ñ
- ; ßτÑΓτ¿¬á
- assume ds:@Data
- mov ax,@Data
- mov dx,ax ; DS ß¡«óá π¬áºδóáÑΓ
- ; ¡á DGROUP
- .
- .
- .
- _AsmFunction ENDP
- .
- .
- .
-
- éΓ«α«⌐ óáα¿á¡Γ ¿¼ÑÑΓ Γ« »αÑ¿¼πΘÑßΓó«, τΓ« »α¿ ¬áªñ«¼ «íαáΘÑ-
- ¡¿¿ ¬ ñá½∞¡Ñ¼π ßÑú¼Ñ¡Γπ ñá¡¡δσ ó ¡Ñ¼ ¡Ñ ΓαÑíπÑΓß∩ »ÑαÑ«»αÑñѽѡ¿Ñ
- ES:. àß½¿ ñ½∩ «íαáΘÑ¡¿∩ ¬ ñá½∞¡Ñ¼π ßÑú¼Ñ¡Γπ óδ ºáúαπªáÑΓÑ αÑú¿ßΓα
- DS, πíÑñ¿ΓÑß∞ ó Γ«¼, τΓ« »ÑαÑñ «íαáΘÑ¡¿Ñ¼ ¬ ñαπú¿¼ »ÑαѼѡ¡δ¼
- DGROUP óδ Ñú« ó«ßßΓá¡áó½¿óáÑΓÑ (¬á¬ φΓ« ñѽáÑΓß∩ ó »α¿óÑñÑ¡¡«¼
-
- TASM2 #2-5/䫬 = 189 =
-
- »α¿¼ÑαÑ). äáªÑ Ñß½¿ ó ñá¡¡«⌐ Σπ¡¬µ¿¿ ¡á ÇßßѼí½ÑαÑ óδ ¡Ñ «íαáΘáÑ-
- ΓÑß∞ ¬ DGROUP, »ÑαÑñ óδσ«ñ«¼ ¿º ¡ÑÑ óßÑ αáó¡« «í∩ºáΓѽ∞¡« ¡πª¡«
- ó«ßßΓá¡«ó¿Γ∞ ß«ñÑন¼«Ñ DS, Γᬠ¬á¬ ó Æπαí« æ¿ »«ñαáºπ¼ÑóáÑΓß∩,
- τΓ« αÑú¿ßΓα DS ¡Ñ ¿º¼Ñ¡∩½ß∩.
-
- Åα¿ ¿ß»«½∞º«óá¡¿¿ ó Σπ¡¬µ¿∩σ, óδºδóáѼδσ ¿º æ¿, ßóÑασí«½∞Φ«⌐
- ¼«ñѽ¿ »á¼∩Γ¿ αáí«ΓáΓ∞ ß αÑú¿ßΓα«¼ DS ¡πª¡« ¡Ñ߬«½∞¬« »«-ñαπú«¼π.
- é ßóÑασí«½∞Φ«⌐ ¼«ñѽ¿ »á¼∩Γ¿ Æπαí« æ¿ ß«óßѼ ¡Ñ ¿ß»«½∞ºπÑΓ
- DGROUP. é¼ÑßΓ« φΓ«ú« ¬áªñδ⌐ ¼«ñπ½∞ ¿¼ÑÑΓ ßó«⌐ ß«íßΓóÑ¡¡δ⌐ ßÑú-
- ¼Ñ¡Γ ñá¡¡δσ, ¬«Γ«αδ⌐ ∩ó½∩ÑΓß∩ ñá½∞¡¿¼ ßÑú¼Ñ¡Γ«¼ «Γ¡«ß¿Γѽ∞¡« óßÑσ
- ñαπú¿σ ¼«ñπ½Ñ⌐ ó »α«úαá¼¼Ñ (¡ÑΓ ß«ó¼ÑßΓ¡« ¿ß»«½∞ºπѼ«ú« í½¿ª¡Ñú«
- ßÑú¼Ñ¡Γá ñá¡¡δσ). Åα¿ ¿ß»«½∞º«óá¡¿¿ ßóÑασí«½∞Φ«⌐ ¼«ñѽ¿ »á¼∩Γ¿ ¡á
- óσ«ñÑ ó Σπ¡¬µ¿ε αÑú¿ßΓα DS ñ«½ªÑ¡ íδΓ∞ πßΓá¡«ó½Ñ¡ Γᬿ¼ «íαẫ¼,
- τΓ«íδ «¡ π¬áºδóá½ ¡á φëà ñá½∞¡¿⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ ¼«ñπ½∩ ¿ ¡Ñ ¿º-
- ¼Ñ¡∩½ß∩ ñ« ¬«¡µá Σπ¡¬µ¿¿, ¡á»α¿¼Ñα:
-
- .
- .
- .
- .FARDATA
- .
- .
- .
- .CODE
- PUBLIC _AsmFunction
- _AsmFunction PROC
- push ds
- mov ax,@FarData
- mov ds,ax
- .
- .
- .
- pop ds
- ret
- _AsmFunction ENDP
- .
- .
- .
-
- çá¼ÑΓ¿¼, τΓ« ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ αÑú¿ßΓαá DS ß«σαá¡∩ÑΓß∩ »α¿
- óσ«ñÑ ó Σπ¡¬µ¿ε _AsmFunction ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ PUSH ¿ »ÑαÑñ
- óδσ«ñ«¼ ó«ßßΓá¡áó½¿óáÑΓß∩ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ POP. äáªÑ ó ßóÑασ-
- í«½∞Φ«⌐ ¼«ñѽ¿ »á¼∩Γ¿ Æπαí« æ¿ ΓαÑíπÑΓ, τΓ«íδ óßÑ Σπ¡¬µ¿¿ ß«σαá-
- ¡∩½¿ αÑú¿ßΓα DS.
-
-
-
- TASM2 #2-5/䫬 = 190 =
-
-
- ÄíΘÑñ«ßΓπ»¡δÑ ¿ ó¡ÑΦ¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ
- -----------------------------------------------------------------
-
- Åα«úαá¼¼δ Æπαí« ÇßßѼí½Ñαá ¼«úπΓ óδºδóáΓ∞ Σπ¡¬µ¿¿ æ¿ ¿ ßßδ-
- ½áΓ∞ß∩ ¡á ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ æ¿. Åα«úαá¼¼δ Æπαí« æ¿ á¡á½«ú¿τ¡δ¼
- «íαẫ¼ ¼«úπΓ óδºδóáΓ∞ «íΘÑñ«ßΓπ»¡δÑ (PUBLIC) Σπ¡¬µ¿¿ Æπαí« Çß-
- ßѼí½Ñαá ¿ «íαáΘáΓ∞ß∩ ¬ »ÑαѼѡ¡δ¼ Æπαí« ÇßßѼí½Ñαá. Å«ß½Ñ Γ«ú«,
- ¬á¬ ó Æπαí« ÇßßѼí½ÑαÑ πßΓá¡áó½¿óáεΓß∩ ß«ó¼ÑßΓ¿¼δÑ ß Æπαí« æ¿
- ßÑú¼Ñ¡Γδ (¬á¬ «»¿ßá¡« ó »αÑñδñπΘ¿σ αáºñѽáσ), τΓ«íδ ß«ó¼ÑßΓ¡« ¿ß-
- »«½∞º«óáΓ∞ Σπ¡¬µ¿¿ ¿ »ÑαѼѡ¡δÑ Æπαí« æ¿ ¿ Æπαí« ÇßßѼí½Ñαá, ¡πª-
- ¡« ß«í½εñáΓ∞ ¡Ñ߬«½∞¬« »α«ßΓδσ »αáó¿½.
-
- Å«ñτÑનóá¡¿∩
- -----------------------------------------------------------------
-
- Äíδτ¡« ó Æπαí« æ¿ »αÑñ»«½áúáÑΓß∩, τΓ« óßÑ ó¡ÑΦ¡¿Ñ ¼ÑΓ¬¿ ¡á-
- τ¿¡áεΓß∩ ß ß¿¼ó«½á »«ñτÑનóá¡¿∩ (_). Æπαí« æ¿ áóΓ«¼áΓ¿τÑ߬¿
- ó¬½ετáÑΓ ß¿¼ó«½δ »«ñτÑનóá¡¿∩ ó« óßÑ ¿¼Ñ¡á Σπ¡¬µ¿⌐ ¿ ¿¼Ñ¡á ó¡ÑΦ-
- ¡¿σ »ÑαѼѡ¡δσ, ¬«úñá «¡¿ ¿ß»«½∞ºπεΓß∩ ó ¬«ñÑ ∩ºδ¬á æ¿, »«φΓ«¼π ó
- ¬«ñÑ ÇßßѼí½Ñαá óδ ñ«½ª¡δ »α«ßΓ« ñ«íáó¿Γ∞ »«ñτÑનóá¡¿∩. ìπª¡«
- πíÑñ¿Γ∞ß∩, τΓ« óßÑ ßß佬¿ ó ÇßßѼí½ÑαÑ ¡á Σπ¡¬µ¿¿ ¿ »ÑαѼѡ¡δÑ
- Æπαí« æ¿ ¡áτ¿¡áεΓß∩ ß »«ñτÑનóá¡¿∩. éßÑ Σπ¡¬µ¿¿ ¿ »ÑαѼѡ¡δÑ Çß-
- ßѼí½Ñαá, ¬«Γ«αδÑ ∩ó½∩εΓß∩ «íΘÑñ«ßΓπ»¡δ¼¿ ¿ ¬ ¬«Γ«αδ¼ «íαáΘáÑΓß∩
- Æπαí« æ¿, ñ«½ª¡δ Γá¬ªÑ ¡áτ¿¡áΓ∞ß∩ ß ß¿¼ó«½á »«ñτÑનóá¡¿∩.
-
- ìá»α¿¼Ñα, ß½ÑñπεΘá∩ »α«úαá¼¼á ¡á ∩ºδ¬Ñ æ¿:
-
- extrn int ToggleFlag();
- int Flag;
- main()
- {
- ToggleFlag();
- }
-
- »αáó¿½∞¡« ¬«¼»«¡πÑΓß∩ ß« ß½ÑñπεΘÑ⌐ »α«úαá¼¼«⌐ ¡á ÇßßѼí½ÑαÑ:
-
- DOSSEG
- .MODEL SMALL
- .DATA
- EXTRN _Flag:word
- .CODE
- PUBLIC _ToggleFlag
- _ToggleFlag PROC
- cmp [_Flag],0 ; Σ½áú ßíα«ΦÑ¡?
- jz SetFlag ; ñá, πßΓá¡«ó¿Γ∞ Ñú«
-
- TASM2 #2-5/䫬 = 191 =
-
- mov [_Flag],0 ; ¡ÑΓ, ßíα«ß¿Γ∞ Ñú«
- jmp short EndToggleFlag ; óδ»«½¡Ñ¡«
- SetFlag:
- mov [_Flag],1 ; πßΓá¡«ó¿Γ∞ Σ½áú
- EndToggleFlag:
- ret
- _ToggleFlag ENDP
- END
-
- çá¼ÑΓ¿¼, τΓ« ó ¼ÑΓ¬áσ, ¡á ¬«Γ«αδÑ ¡ÑΓ ßß佫¬ ó »α«úαá¼¼Ñ ¡á
- ∩ºδ¬Ñ æ¿ (¡á»α¿¼Ñα, SetFlag), ¡Ñ ΓαÑíπÑΓß∩ π¬áºδóáΓ∞ ß¿¼ó«½ »«ñ-
- τÑનóá¡¿∩.
-
- èßΓáΓ¿, ß »«¼«Θ∞ε »áαá¼ÑΓαá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ -u ¼«ª¡« π¬á-
- ºáΓ∞ Æπαí« æ¿, τΓ«íδ «¡ ¡Ñ ¿ß»«½∞º«óá½ ß¿¼ó«½δ »«ñτÑનóá¡¿∩.
- ò«Γ∩ φΓ« ¼«ªÑΓ »«¬áºáΓ∞ß∩ ñ«ßΓáΓ«τ¡« »α¿ó½Ñ¬áΓѽ∞¡δ¼ ß»«ß«í«¼, ¡«
- óßÑ í¿í½¿«ΓѬ¿ ¿ß»«½¡∩εΘÑ⌐ ß¿ßΓÑ¼δ Æπαí« æ¿ ß¬«¼»¿½¿α«óá¡δ ß αáº-
- αÑΦÑ¡¿Ñ¼ ß¿¼ó«½á »«ñτÑનóá¡¿∩. Æá¬¿¼ «íαẫ¼, óá¼ »«ΓαÑíπÑΓß∩
- »«½πτ¿Γ∞ π Σ¿α¼δ Borland ¿ßσ«ñ¡δ⌐ ¬«ñ í¿í½¿«ΓÑτ¡δσ ¼«ñπ½Ñ⌐ ¿ »Ñ-
- αѬ«¼»¿½¿α«óáΓ∞ ¿σ ß »áαá¼ÑΓα«¼ -u (ß¼. ñá½ÑÑ "æ«ú½áΦÑ¡¿∩ »« óδ-
- º«óá¼ Åá߬á½∩", úñÑ αáß߬áºδóáÑΓß∩ « »áαá¼ÑΓαÑ -p, ¬«Γ«αδ⌐ ºá»αÑ-
- ΘáÑΓ ¿ß»«½∞º«óá¡¿Ñ ß¿¼ó«½á »«ñτÑનóá¡¿∩ ¿ αẽ¿τ¿¼«ßΓ∞ ßΓα«τ¡δσ
- ¿ »α«»¿ß¡δσ ß¿¼ó«½«ó).
-
-
-
-
- TASM2 #2-5/䫬 = 192 =
-
-
- æΓα«τ¡δÑ ¿ »α«»¿ß¡δÑ ß¿¼ó«½δ
- -----------------------------------------------------------------
-
- é ¿¼Ñ¡áσ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó Æπαí« ÇßßѼí½Ñα «íδτ¡« ¡Ñ αẽ¿τáÑΓ
- ßΓα«τ¡δÑ ¿ »α«»¿ß¡δÑ íπ¬óδ (óÑασ¡¿⌐ ¿ ¡¿ª¡¿⌐ αÑú¿ßΓα). ū߬«½∞¬π
- ó æ¿ «¡¿ αẽ¿τáεΓß∩, ªÑ½áΓѽ∞¡« ºáñáΓ∞ Γá¬«Ñ αẽ¿τ¿Ñ ¿ ó Æπαí«
- ÇßßѼí½ÑαÑ (»« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ñ½∩ ΓÑσ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, ¬«Γ«αδÑ ß«ó-
- ¼ÑßΓ¡« ¿ß»«½∞ºπεΓß∩ ÇßßѼí½Ñα«¼ ¿ æ¿). ¥Γ« ¼«ª¡« ßñѽáΓ∞ ß »«-
- ¼«Θ∞ε »áαá¼ÑΓα«ó /ML ¿ /MX.
-
- ÅÑαѬ½ετáΓѽ∞ (»áαá¼ÑΓα) ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /ML »α¿ó«ñ¿Γ ¬
- Γ«¼π, τΓ« ó Æπαí« ÇßßѼí½ÑαÑ ó« óßÑσ ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ ßΓα«τ¡δÑ ¿
- »α«»¿ß¡δÑ ß¿¼ó«½δ íπñπΓ αẽ¿τáΓ∞ß∩ (ßτ¿ΓáΓ∞ß∩ αẽ¿τ¡δ¼¿). Åáαá-
- ¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /MX π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ßΓα«τ-
- ¡δÑ ¿ »α«»¿ß¡δÑ ß¿¼ó«½δ ¡πª¡« αẽ¿τáΓ∞ ó «íΘÑñ«ßΓπ»¡δσ (PUBLIC)
- ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ, ó¡ÑΦ¡¿σ (EXTRN) ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ ú½«íá½∞¡δσ
- (GLOBAL) ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ ¿ «íΘ¿σ (COMM) ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ.
-
- Æ¿»δ ¼ÑΓ«¬
- -----------------------------------------------------------------
-
- ò«Γ∩ ó »α«úαá¼¼áσ Æπαí« ÇßßѼí½Ñαá ¼«ª¡« ßó«í«ñ¡« «íαáΘáΓ∞ß∩
- ¬ ½εí«⌐ »ÑαѼѡ¡«⌐ ¿½¿ ñá¡¡δ¼ ½εí«ú« αẼÑαá (8, 16, 32 í¿Γá ¿ Γ.
- ñ.), ó «íΘѼ ß½πτáÑ σ«α«Φ« «íαáΘáΓ∞ß∩ ¬ »ÑαѼѡ¡δ¼ ó ß««ΓóÑΓßΓó¿¿
- ß ¿σ αẼÑα«¼. ìá»α¿¼Ñα, Ñß½¿ óδ ºá»¿ßδóáÑΓÑ ß½«ó« ó íá⌐Γ«óπε »Ñ-
- αѼѡ¡πε, Γ« «íδτ¡« φΓ« »α¿ó«ñ¿Γ ¬ »α«í½Ñ¼á¼:
-
- .
- .
- .
- SmallCount DB 0
- .
- .
- .
- mov WORD PTR [SmallCount],0ffffh
- .
- .
- .
-
- Å«φΓ«¼π ó᪡«, τΓ«íδ ó «»ÑαáΓ«αÑ ÇßßѼí½Ñαá EXTRN, ó ¬«Γ«α«¼
- «»¿ßδóáεΓß∩ »ÑαѼѡ¡δÑ æ¿, ºáñáóá½ß∩ »αáó¿½∞¡δ⌐ αẼÑα φΓ¿σ »ÑαÑ-
- ¼Ñ¡¡δσ, Γᬠ¬á¬ »α¿ úÑ¡Ñαᵿ¿ αẼÑαá ñ«ßΓπ»á ¬ »ÑαѼѡ¡«⌐ æ¿
- Æπαí« ÇßßѼí½Ñα «ß¡«óδóáÑΓß∩ ¿¼Ñ¡¡« ¡á φΓ¿σ «»¿ßá¡¿∩σ.
-
- àß½¿ ó »α«úαá¼¼Ñ ¡á ∩ºδ¬Ñ æ¿ ß«ñÑনΓß∩ «»ÑαáΓ«α:
-
- TASM2 #2-5/䫬 = 193 =
-
-
- char c
-
- Γ« ¬«ñ ÇßßѼí½Ñαá:
-
- .
- .
- .
- EXTRN c:WORD
- .
- .
- inc [c]
- .
- .
- .
-
- ¼«ªÑΓ »α¿óÑßΓ¿ ¬ óÑß∞¼á ¡Ñ»α¿∩Γ¡δ¼ «Φ¿í¬á¼, »«ß¬«½∞¬π »«ß½Ñ Γ«ú«,
- ¬á¬ ó ¬«ñÑ ¡á ∩ºδ¬Ñ æ¿ »ÑαѼѡ¡á∩ c πóѽ¿τ¿Γß∩ «τÑαÑñ¡δÑ 256 αáº,
- ÑÑ º¡áτÑ¡¿Ñ íπñÑΓ ßíα«ΦÑ¡«, á Γᬠ¬á¬ «¡á «»¿ßá¡á, ¬á¬ »ÑαѼѡ¡á∩
- αẼÑα«¼ ó ß½«ó«, Γ« íá⌐Γ »« áñαÑßπ OFFSET c + 1 íπñÑΓ πóѽ¿τ¿-
- óáΓ∞ß∩ ¡Ñ¬«ααÑ¬Γ¡«, τΓ« »α¿óÑñÑΓ ¬ ¡Ñ»αÑñ߬áºπÑ¼δ¼ αѺπ½∞ΓáΓá¼.
-
- îѪñπ Γ¿»á¼¿ ñá¡¡δσ æ¿ á ÇßßѼí½Ñαá ßπΘÑßΓóπÑΓ ß½ÑñπεΘÑÑ ß«-
- «Γ¡«ΦÑ¡¿Ñ:
-
- --------------------------------------------------------------
- Æ¿» ñá¡¡δσ æ¿ Æ¿» ñá¡¡δσ ÇßßѼí½Ñαá
- --------------------------------------------------------------
- unsigned char byte
- char byte
- enum word
- unsigned short word
- short word
- unsigned int word
- int word
- unsigned long dword
- long dword
- float dword
- double qword
- long double tbyte
- near* word
- far* dword
- ---------------------------------------------------------------
-
- é¡ÑΦ¡¿Ñ ñá½∞¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ñ«½ª¡δ ½ÑªáΓ∞ ó¡Ñ ½εí«ú« ßÑú¼Ñ¡Γá
-
- TASM2 #2-5/䫬 = 194 =
-
- -----------------------------------------------------------------
-
- àß½¿ óδ ¿ß»«½∞ºπÑΓÑ π»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡-
- Γ«ó, Γ« «»¿ßá¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó EXTRN ó ßÑú¼Ñ¡Γáσ ñá½∞¡Ñú« Γ¿»á
- ¡Ñ ñ«½ª¡δ αẼÑΘáΓ∞ß∩ ¡¿ ó ¬á¬«¼ ßÑú¼Ñ¡ΓÑ, Γᬠ¬á¬ Æπαí« ÇßßѼ-
- í½Ñα αáßß¼áΓα¿óáÑΓ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ, «»¿ßá¡¡δÑ ó ñá¡¡«¼ ßÑú¼Ñ¡ΓÑ,
- ¬á¬ ßó∩ºá¡¡δÑ ß ñá¡¡δ¼ ßÑú¼Ñ¡Γ«¼. ¥Γ« ¿¼ÑÑΓ ßó«¿ ¡Ññ«ßΓáΓ¬¿: Æπα-
- í« ÇßßѼí½Ñα ¡Ñ ¼«ªÑΓ »α«óÑα¿Γ∞ 󫺼«ª¡«ßΓ∞ áñαÑßᵿ¿ ¬ ¿ñÑ¡Γ¿Σ¿-
- ¬áΓ«απ, «»¿ßá¡¡«¼π, ¬á¬ ó¡ÑΦ¡¿⌐ (EXTRN), ó¡Ñ ½εí«ú« ßÑú¼Ñ¡Γá ¿
- »«φΓ«¼π ¡Ñ ¼«ªÑΓ ó ß½πτáÑ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ßúÑ¡Ñα¿α«óáΓ∞ «»αÑñѽÑ-
- ¡¿Ñ ßÑú¼Ñ¡Γá ¿½¿ ß««íΘ¿Γ∞ óá¼, τΓ« íδ½á »«»δΓ¬á «íαáΓ¿Γ∞ß∩ ¬ ñá¡-
- ¡«⌐ »ÑαѼѡ¡«⌐, ¬«úñá ßÑú¼Ñ¡Γ ¡Ñ íδ½ ºáúαπªÑ¡ ¬«ααÑ¬Γ¡δ¼ º¡áτÑ¡¿-
- Ѽ. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ Æπαí« ÇßßѼí½Ñα úÑ¡Ñα¿απÑΓ ñ½∩ ßß佫¬ ¡á ΓᬿÑ
- ó¡ÑΦ¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ »αáó¿½∞¡δ⌐ ¬«ñ, ¡« ¡Ñ ¼«ªÑΓ «íÑß»Ñτ¿Γ∞
- «íδτ¡πε ßΓѻѡ∞ »α«óÑન 󫺼«ª¡«ßΓ¿ áñαÑßᵿ¿ ¬ ßÑú¼Ñ¡Γπ.
-
- àß½¿ óδ óßÑ-Γᬿ ºáσ«Γ¿ΓÑ, Γ« ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ ∩ó¡«ú«
- «»¿ßá¡¿∩ ¬áªñ«ú« ó¡ÑΦ¡Ñú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑú¼Ñ¡Γá ßΓáαδÑ ñ¿αÑ¬Γ¿-
- óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, á ºáΓѼ »«¼ÑßΓ¿Γ∞ ñ¿αÑ¬Γ¿óπ EXTRN ñ½∩
- φΓ«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ó¡πΓα∞ «»¿ßá¡¿∩ ßÑú¼Ñ¡Γá. ¥Γ« ñ«ó«½∞¡« πΓ«-
- ¼¿Γѽ∞¡«, »«φΓ«¼π Ñß½¿ óδ ¡Ñ σ«Γ¿ΓÑ «íÑß»Ñτ¿óáΓ∞ ºáúαπº¬π ¬«ααѬ-
- Γ¡«ú« º¡áτÑ¡¿∩ ßÑú¼Ñ¡Γá »α¿ «íαáΘÑ¡¿¿ ¬ ñá¡¡δ¼, Γ« »α«ΘÑ óßÑú«
- »α«ßΓ« αẼÑßΓ¿Γ∞ «»¿ßá¡¿∩ EXTRN ñ½∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ñá½∞¡Ñú«
- Γ¿»á ó¡Ñ óßÑσ ßÑú¼Ñ¡Γ«ó. ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« Σá⌐½
- FILE1.ASM ß«ñÑαª¿Γ ß½ÑñπεΘÑÑ:
-
- .
- .
- .
- .FARDATA
- FileVariable DB 0
- .
- .
- .
-
- ¿ «¡ ¬«¼»«¡πÑΓß∩ ß Σá⌐½«¼ FILE2.ASM, ¬«Γ«αδ⌐ ß«ñÑনΓ:
-
- .
- .
- .
- .DATA
- EXTRN FileVariable:BYTE
- .CODE
- Start PROC
- mov ax,SEG FileVariable
- mov ds,ax
-
- TASM2 #2-5/䫬 = 195 =
-
- .
- .
- .
-
- SEG File1Variable ¡Ñ íπñÑΓ ó«ºóαáΘáΓ∞ ¬«ααÑ¬Γ¡«ú« º¡áτÑ¡¿∩
- ßÑú¼Ñ¡Γá. ä¿αÑ¬Γ¿óá EXTRN αẼÑΘÑ¡á ó «í½áßΓ¿ ñÑ⌐ßΓó¿∩ ñ¿αÑ¬Γ¿óδ
- Σá⌐½á FILE2.ASM DATA, »«φΓ«¼π Æπαí« ÇßßѼí½Ñα ßτ¿ΓáÑΓ, τΓ« »ÑαÑ-
- ¼Ñ¡¡á∩ File1Variable ñ«½ª¡á ¡áσ«ñ¿Γ∞ß∩ ó í½¿ª¡Ñ¼ ßÑú¼Ñ¡ΓÑ DATA
- Σá⌐½á FILE2.ASM, á ¡Ñ ó ñá½∞¡Ñ¼ ßÑú¼Ñ¡Γá DATA.
-
- é ß½ÑñπεΘѼ ¬«ñÑ FILE2.ASM SEG File1Variable íπñÑΓ ó«ºóαá-
- ΘáΓ∞ ¬«ααÑ¬Γ¡«Ñ º¡áτÑ¡¿Ñ ßÑú¼Ñ¡Γá:
-
- .
- .
- .
- .DATA
- @CurSeg ENDS
- EXTRN File1Variable:BYTE
- .CODE
- Start PROC
- mov ax,SEG File1Variable
- mov ds,ax
- .
- .
- .
-
- "ö«¬πß" ºñÑß∞ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ñ¿αÑ¬Γ¿óá @CurSeg ENDS ºá-
- óÑαΦáÑΓ ßÑú¼Ñ¡Γ .DATA, »«φΓ«¼π, ¬«úñá »ÑαѼѡ¡á∩ FileVariable
- «»¿ßδóáÑΓß∩, ¬á¬ ó¡ÑΦ¡∩∩, ¡¿¬á¬á∩ ßÑú¼Ñ¡Γ¡á∩ ñ¿αÑ¬Γ¿óá ¡Ñ ñÑ⌐-
- ßΓóπÑΓ.
-
-
-
-
- TASM2 #2-5/䫬 = 196 =
-
- 諼á¡ñ¡á∩ ßΓα«¬á ¬«¼»«¡«óΘ¿¬á
- -----------------------------------------------------------------
-
- Åα«ßΓÑ⌐Φ¿⌐ ß»«ß«í ߬«¼»«¡«óáΓ∞ ¼«ñ㫨 Æπαí« æ¿ ß ¼«ñπ½∩¼¿
- Æπαí« ÇßßѼí½Ñαá ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ óóÑßΓ¿ «ñ¡π ¬«¼á¡ñ¡πε ßΓα«-
- ¬π Æπαí« æ¿, »«ß½Ñ τÑú« «¡ óδ»«½¡¿Γ óßε «ßΓá½∞¡πε αáí«Γπ. Åα¿ ºá-
- ñá¡¿¿ ¡πª¡«⌐ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ Æπαí« æ¿ óδ»«½¡¿Γ ¬«¼»¿½∩µ¿ε ¿ßσ«ñ-
- ¡«ú« ¬«ñá æ¿, ó맮óÑΓ Æπαí« ÇßßѼí½Ñα ñ½∩ áßßÑ¼í½¿α«óá¡¿∩, á ºá-
- ΓѼ ó맮óÑΓ πΓ¿½¿Γπ TLINK ñ½∩ ¬«¼»«¡«ó¬¿ «íΩÑ¬Γ¡δσ Σá⌐½«ó ó óδ-
- »«½¡∩Ѽδ⌐ Σá⌐½. ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« π óáß ÑßΓ∞ »α«úαá¼¼á,
- ß«ßΓ«∩Θá∩ ¿º Σá⌐½«ó ¡á ∩ºδ¬Ñ æ¿ MAIN.C ¿ STAT.C ¿ Σá⌐½«ó áßßѼí-
- ½Ñαá SUMM.ASM ¿ DISPLAY.ASM. 諼á¡ñ¡á∩ ßΓ᫬á:
-
- tcc main stat summ.asm display.asm
-
- óδ»«½¡∩ÑΓ ¬«¼»¿½∩µ¿ε Σá⌐½«ó MAIN.C ¿ STAT.C, áßßÑ¼í½¿α«óá¡¿Ñ Σá⌐-
- ½«ó SUMM.ASM ¿ DISPLAY.ASM ¿ ¬«¼»«¡«ó¬π óßÑσ τÑΓδαÑσ «íΩÑ¬Γ¡δσ
- Σá⌐½«ó, á Γá¬ªÑ ¬«ñá ¿¡¿µ¿á½¿ºáµ¿¿ æ¿ ¿ ¡Ñ«íσ«ñ¿¼δσ í¿í½¿«ΓÑτ¡δσ
- Σπ¡¬µ¿⌐ ó óδ»«½¡∩Ѽδ⌐ Σá⌐½ MAIN.EXE. Åα¿ óó«ñÑ ¿¼Ñ¡ Σá⌐½«ó ÇßßѼ-
- í½Ñαá ¡πª¡« Γ«½∞¬« »«¼¡¿Γ∞ « αáßΦ¿αÑ¡¿∩σ .ASM.
-
- àß½¿ óδ ¿ß»«½∞ºπÑΓÑ πΓ¿½¿Γπ TLINK ó áóΓ«¡«¼¡«¼ αѪ¿¼Ñ, Γ«
- úÑ¡Ñα¿απѼδÑ Æπαí« ÇßßѼí½Ñα«¼ «íΩÑ¬Γ¡δÑ Σá⌐½δ »αÑñßΓáó½∩εΓ ß«í«⌐
- ßΓá¡ñáαΓ¡δÑ «íΩÑ¬Γ¡δÑ ¼«ñ㫨 ¿ «íαáíáΓδóáεΓß∩ ΓᬪÑ, ¬á¬ «íΩѬ-
- Γ¡δÑ ¼«ñ㫨 æ¿.
-
-
- éºá¿¼«ñÑ⌐ßΓó¿Ñ ¼Ñªñπ Æπαí« ÇßßѼí½Ñα«¼ ¿ Æπαí« æ¿
- -----------------------------------------------------------------
-
- ÆÑ»Ñα∞, ¬«úñá óδ »«¡¿¼áÑΓÑ, ¬á¬ ¡πª¡« ßΓα«¿Γ∞ ¿ ¬«¼»«¡«óáΓ∞
- ß«ó¼ÑßΓ¿¼δÑ ß æ¿ ¼«ñ㫨 ÇßßѼí½Ñαá, ¡πª¡« º¡áΓ∞, ¬á¬«⌐ ¬«ñ ¼«ª¡«
- »«¼ÑΘáΓ∞ ó Σπ¡¬µ¿¿ ÇßßѼí½Ñαá, óδºδóáѼδÑ ¿º æ¿. çñÑß∞ ¡πª¡« »α«-
- á¡á½¿º¿α«óáΓ∞ Γα¿ ¼«¼Ñ¡Γá: »«½πτÑ¡¿Ñ »ÑαÑñáóáѼδσ »áαá¼ÑΓα«ó, ¿ß-
- »«½∞º«óá¡¿Ñ αÑú¿ßΓα«ó ¿ ó«ºóαáΓ º¡áτÑ¡¿⌐ ó óδºδóáεΘπε »α«úαá¼¼π.
-
- ÅÑαÑñáτá »áαá¼ÑΓα«ó
- -----------------------------------------------------------------
-
- Æπαí« æ¿ »ÑαÑñáÑΓ Σπ¡¬µ¿∩¼ »áαá¼ÑΓαδ τÑαѺ ßΓѬ. ÅÑαÑñ ó맮-
- ó«¼ Σπ¡¬µ¿¿ Æπαí« æ¿ ß¡áτá½á ºá¡«ß¿Γ »ÑαÑñáóáѼδÑ φΓ«⌐ Σπ¡¬µ¿¿
- »áαá¼ÑΓαδ, ¡áτ¿¡á∩ ß ßἫú« »αáó«ú« »áαá¼ÑΓαá ¿ ¬«¡τá∩ ½Ñóδ¼, ó
- ßΓѬ. é æ¿ ó맮ó Σπ¡¬µ¿¿:
-
- .
-
- TASM2 #2-5/䫬 = 197 =
-
- .
- .
- Test(i, j, 1);
- .
- .
- .
-
- ¬«¼»¿½¿απÑΓß∩ ó ¿¡ßΓαπ¬µ¿¿:
-
- mov ax,1
- push ax
- push word ptr DGROUP:_j
- push word ptr DGROUP:_i
- call near ptr _Test
- add sp,6
-
- úñÑ ó¿ñ¡«, τΓ« »αáóδ⌐ »áαá¼ÑΓα (º¡áτÑ¡¿Ñ 1), ºá¡«ß¿Γß∩ ó ßΓѬ
- »Ñαóδ¼, ºáΓѼ Γπñá ºá¡«ß¿Γß∩ »áαá¼ÑΓα j ¿, ¡á¬«¡Ñµ, i.
-
- Åα¿ ó«ºóαáΓÑ ¿º Σπ¡¬µ¿¿ ºá¡ÑßÑ¡¡δÑ ó ßΓѬ »áαá¼ÑΓαδ óßÑ ÑΘÑ
- ¡áσ«ñ∩Γß∩ Γá¼, ¡« «¡¿ í«½∞ΦÑ ¡Ñ ¿ß»«½∞ºπεΓß∩. Å«φΓ«¼π ¡Ñ»«ßαÑñßΓ-
- óÑ¡¡« »«ß½Ñ ¬áªñ«ú« ó맮óá Σπ¡¬µ¿¿ Æπαí« æ¿ ¡áßΓαá¿óáÑΓ π¬áºáΓѽ∞
- ßΓÑ¬á «íαáΓ¡« ó ß««ΓóÑΓßΓó¿¿ ß« º¡áτÑ¡¿Ñ¼, ¬«Γ«α«Ñ «¡ ¿¼Ñ½ »ÑαÑñ
- ºá¡ÑßÑ¡¿Ñ¼ ó ßΓѬ »áαá¼ÑΓα«ó (»áαá¼ÑΓαδ, Γᬿ¼ «íαẫ¼, «Γíαáßδ-
- óáεΓß∩). é »αÑñδñπΘѼ »α¿¼ÑαÑ Γα¿ »áαá¼ÑΓαá (»« ñóá íá⌐Γá ¬áªñδ⌐)
- ºá¡¿¼áεΓ ó ßΓÑ¬Ñ ó¼ÑßΓÑ 6 íá⌐Γ, »«φΓ«¼π Æπαí« æ¿ ñ«íáó½∩ÑΓ º¡áτÑ-
- ¡¿Ñ 6 ¬ π¬áºáΓѽε ßΓѬá, τΓ«íδ «Γíα«ß¿Γ∞ »áαá¼ÑΓαδ »«ß½Ñ «íαáΘÑ-
- ¡¿∩ ¬ Σπ¡¬µ¿¿ Test. é᪡δ⌐ ¼«¼Ñ¡Γ ºñÑß∞ ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ« »«
- ß«ú½áΦÑ¡¿∩¼ Æπαí« æ¿ ºá πñá½Ñ¡¿Ñ »áαá¼ÑΓα«ó ¿º ßΓÑ¬á «ΓóÑτáÑΓ óδ-
- ºδóáεΘá∩ »α«úαá¼¼á (ß¼. ñá½ÑÑ αáºñѽ "æ«ú½áΦÑ¡¿∩ »« ó맮óá¼ ó
- Åá߬á½Ñ").
-
- öπ¡¬µ¿¿ ÇßßѼí½Ñαá ¼«úπΓ «íαáΘáΓ∞ß∩ ¬ »áαá¼ÑΓαá¼, »ÑαÑñáóáÑ-
- ¼δ¼ ó ßΓѬÑ, «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá BP. ìá»α¿¼Ñα, »αÑñ»«½«ª¿¼, τΓ«
- Σπ¡¬µ¿∩ Test ó »αÑñδñπΘѼ »α¿¼ÑαÑ »αÑñßΓáó½∩ÑΓ ß«í«⌐ ß½ÑñπεΘπε
- Σπ¡¬µ¿ε ¡á ÇßßѼí½ÑαÑ:
-
- DOSSEG
- .MODEL SMALL
- .CODE
- PUBLIC _Test
- _Test PROC
- push bp
- mov bp,sp
- mov ax,[bp+4] ; »«½πτ¿Γ∞ »áαá¼ÑΓα 1
- add ax,[bp+6] ; »α¿íáó¿Γ∞ »áαá¼ÑΓα 2
-
- TASM2 #2-5/䫬 = 198 =
-
- ; ¬ »áαá¼ÑΓαπ 1
- sub ax,[bp+8] ; óδτÑßΓ∞ ¿º ßπ¼¼δ 3
- pop bp
- ret
- _Test ENDP
-
- èᬠ¼«ª¡« ó¿ñÑΓ∞, Σπ¡¬µ¿∩ Test »«½πτáÑΓ »ÑαÑñáóáѼδÑ ¿º
- »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿ »áαá¼ÑΓαδ τÑαѺ ßΓѬ, «Γ¡«ß¿Γѽ∞¡« BP.
- (àß½¿ óδ »«¼¡¿ΓÑ, BP áñαÑßπÑΓß∩ ¬ ßÑú¼Ñ¡Γπ ßΓѬá.) ì« «Γ¬πñá «¡á
- º¡áÑΓ, úñÑ ¡á⌐Γ¿ »áαá¼ÑΓαδ «Γ¡«ß¿Γѽ∞¡« BP?
-
- ìá É¿ß. 7.4 »«¬áºá¡«, ¬á¬ óδú½∩ñ¿Γ ßΓѬ »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼
- »Ñαó«⌐ ¿¡ßΓαπ¬µ¿¿ ó Σπ¡¬µ¿¿ Test:
-
- i = 25;
- j = 4;
- Test(1, j, 1);
-
- . .
- . .
- | |
- |-----------------------|
- | |
- |-----------------------|
- SP --> | ÇñαÑß ó«ºóαáΓá |
- |-----------------------|
- SP + 2 | 25 (i) |
- |-----------------------|
- SP + 4 | 4 (j) |
- |-----------------------|
- SP + 6 | 1 |
- |-----------------------|
- | |
- |-----------------------|
- | |
- . .
-
- É¿ß. 7.4 æ«ßΓ«∩¡¿Ñ ßΓÑ¬á »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ »Ñαó«⌐ ¿¡ßΓαπ¬µ¿¿
- Σπ¡¬µ¿¿ Test.
-
- Åáαá¼ÑΓαδ Σπ¡¬µ¿¿ Test »αÑñßΓáó½∩εΓ ß«í«⌐ Σ¿¬ß¿α«óá¡¡δÑ áñ-
- αÑßá «Γ¡«ß¿Γѽ∞¡« SP, ¡áτ¿¡á∩ ß ∩τÑ⌐¬¿, ¡á ñóá íá⌐Γá ßΓáαΦÑ áñαÑ-
- ßá, »« ¬«Γ«α«¼π σαá¡¿Γß∩ áñαÑß ó«ºóαáΓá, ºá¡ÑßÑ¡¡δ⌐ Γπñá »α¿ óδ-
- º«óÑ. Å«ß½Ñ ºáúαπº¬¿ αÑú¿ßΓαá BP º¡áτÑ¡¿Ñ¼ SP óδ ¼«ªÑΓÑ «íαáΘáΓ∞-
- ß∩ ¬ »áαá¼ÑΓαá¼ «Γ¡«ß¿Γѽ∞¡« BP. Äñ¡á¬«, óδ ñ«½ª¡δ ß¡áτá½á ß«σαá-
- ¡¿Γ∞ BP, Γᬠ¬á¬ ó óδºδóáεΘÑ⌐ »α«úαá¼¼Ñ »αÑñ»«½áúáÑΓß∩, τΓ« »α¿
-
- TASM2 #2-5/䫬 = 199 =
-
- ó«ºóαáΓÑ BP ¿º¼Ñ¡Ñ¡ ¡Ñ íπñÑΓ. çá¡ÑßÑ¡¿Ñ ó ßΓѬ BP ¿º¼Ñ¡∩ÑΓ óßÑ
- ß¼ÑΘÑ¡¿∩ ó ßΓѬÑ. ìá É¿ß. 7.5 »«¬áºá¡« ß«ßΓ«∩¡¿Ñ ßΓÑ¬á »«ß½Ñ óδ-
- »«½¡Ñ¡¿∩ ß½ÑñπεΘ¿σ ßΓ᫬ ¬«ñá:
-
- .
- .
- .
- push bp
- mov bp,sp
- .
- .
- .
-
- . .
- . .
- | |
- |-----------------------|
- SP --> | BP óδºδóáεΘÑ⌐ »α«úα. | <-- BP
- |-----------------------|
- SP + 2 | ÇñαÑß ó«ºóαáΓá | BP + 2
- |-----------------------|
- SP + 4 | 25 (i) | BP + 4
- |-----------------------|
- SP + 6 | 4 (j) | BP + 6
- |-----------------------|
- SP + 8 | 1 | BP + 8
- |-----------------------|
- | |
- |-----------------------|
- | |
- . .
-
- É¿ß. 7.5 æ«ßΓ«∩¡¿Ñ ßΓÑ¬á »«ß½Ñ ¿¡ßΓαπ¬µ¿⌐ PUSH ¿ MOVE.
-
- Äαúá¡¿ºáµ¿∩ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó Σπ¡¬µ¿¿ τÑαѺ ßΓѬ ¿ ¿ß»«½∞-
- º«óá¡¿Ñ Ñú« ñ½∩ ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ - φΓ« ßΓá¡ñáα-
- Γ¡δ⌐ »α¿Ñ¼ ó ∩ºδ¬Ñ æ¿. èᬠ¼«ª¡« ºá¼ÑΓ¿Γ∞, ¡Ñó᪡«, ߬«½∞¬« »áαá-
- ¼ÑΓα«ó ¿¼ÑÑΓ »α«úαá¼¼á ¡á ∩ºδ¬Ñ æ¿: ßá¼δ⌐ ½Ñóδ⌐ »áαá¼ÑΓα óßÑúñá
- σαá¡¿Γß∩ ó ßΓÑ¬Ñ »« áñαÑßπ, ¡Ñ»«ßαÑñßΓóÑ¡¡« ß½ÑñπεΘ¿¼ ºá ß«σαá-
- ¡Ñ¡¡δ¼ ó ßΓÑ¬Ñ áñαÑß«¼ ó«ºóαáΓá, ß½ÑñπεΘ¿⌐ ó«ºóαáΘáѼδ⌐ »áαá¼ÑΓα
- σαá¡¿Γß∩ ¡Ñ»«ßαÑñßΓóÑ¡¡« »«ß½Ñ ßἫú« ½Ñó«ú« »áαá¼ÑΓαá ¿ Γ.ñ.
- ū߬«½∞¬π »«α∩ñ«¬ ¿ Γ¿» »ÑαÑñáóáѼδσ »áαá¼ÑΓα«ó ¿ºóÑßΓ¡δ, ¿σ
- óßÑúñá ¼«ª¡« ¡á⌐Γ¿ ó ßΓѬÑ.
-
- Åα«ßΓαá¡ßΓó« ñ½∩ ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ ¼«ª¡« ºá-
- αѺÑαó¿α«óáΓ∞, óδτ¿Γá∩ ¿º SP ΓαÑíπѼ«Ñ τ¿ß½« íá⌐Γ. ìá»α¿¼Ñα,
-
- TASM2 #2-5/䫬 = 200 =
-
- »α«ßΓαá¡ßΓó« ñ½∩ ñ¿¡á¼¿τÑ߬«ú« ½«¬á½∞¡«ú« ¼áßß¿óá αẼÑα«¼ ó 100
- íá⌐Γ ¼«ª¡« ºáαѺÑαó¿α«óáΓ∞, Ñß½¿ ¡áτáΓ∞ Σπ¡¬µ¿ε Test ß ¿¡ßΓαπ¬-
- 権:
-
- .
- .
- .
- push bp
- mov bp,sp
- sub sp,100
- .
- .
- .
-
- ¬á¬ »«¬áºá¡« ¡á É¿ß. 7.6.
-
- . .
- . .
- | |
- |-----------------------|
- SP --> | | BP - 100
- |-----------------------|
- | |
- |-----------------------|
- . .
- . .
-
- . .
- . .
- | |
- |-----------------------|
- SP + 100 | BP óδºδóáεΘÑ⌐ »α«úα. | <-- BP
- |-----------------------|
- SP + 102 | ÇñαÑß ó«ºóαáΓá | BP + 2
- |-----------------------|
- SP + 104 | 25 (i) | BP + 4
- |-----------------------|
- SP + 106 | 4 (j) | BP + 6
- |-----------------------|
- SP + 108 | 1 | BP + 8
- |-----------------------|
- | |
- |-----------------------|
- | |
- . .
-
-
- TASM2 #2-5/䫬 = 201 =
-
- É¿ß. 7.6 æ«ßΓ«∩¡¿Ñ ßΓÑ¬á »«ß½Ñ ¿¡ßΓαπ¬µ¿⌐ PUSH, MOVE ¿ SUB.
-
- ū߬«½∞¬π Γá τáßΓ∞ ßΓѬá, úñÑ σαá¡∩Γß∩ ñ¿¡á¼¿τÑ߬¿Ñ ½«¬á½∞-
- ¡δÑ »ÑαѼѡ¡δÑ, »αÑñßΓáó½∩ÑΓ ß«í«⌐ í«½ÑÑ ¼½áñΦ¿Ñ áñαÑßá, τѼ BP,
- ñ½∩ «íαáΘÑ¡¿∩ ¬ ñ¿¡á¼¿τÑ߬¿¼ ½«¬á½∞¡δ¼ »ÑαѼѡ¡δ¼ ¿ß»«½∞ºπÑΓß∩
- «Γα¿µáΓѽ∞¡«Ñ ß¼ÑΘÑ¡¿Ñ. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩:
-
- mov byte ptr [bp-100]
-
- ñáßΓ º¡áτÑ¡¿Ñ »Ñαó«ú« íá⌐Γá αá¡ÑÑ ºáαѺÑαó¿α«óá¡¡«ú«
- 100-íá⌐Γ«ó«ú« ¼áßß¿óá. Åα¿ »ÑαÑñáτÑ »áαá¼ÑΓα«ó óßÑúñá ¿ß»«½∞ºπÑΓ-
- ß∩ »«½«ª¿Γѽ∞¡á∩ áñαÑßᵿ∩ «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá BP.
-
- ò«Γ∩ ¼«ª¡« óδñѽ∩Γ∞ »α«ßΓαá¡ßΓó« ñ½∩ ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ
- »ÑαѼѡ¡δσ «»¿ßá¡¡δ¼ óδΦÑ ß»«ß«í«¼, ó Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«Γ-
- αÑ¡á ߻ѵ¿á½∞¡á∩ óÑαß¿∩ ñ¿αÑ¬Γ¿óδ LOCAL, ¬«Γ«αá∩ ßπΘÑßΓóÑ¡¡« π»-
- α«ΘáÑΓ óδñѽѡ¿Ñ »á¼∩Γ¿ ¿ »α¿ßóá¿óá¡¿Ñ ¿¼Ñ¡ ñ½∩ ñ¿¡á¼¿τÑ߬¿σ ½«-
- ¬á½∞¡δσ »ÑαѼѡ¡δσ. è«úñá ó »α«µÑñπαÑ óßΓαÑτáÑΓß∩ ñ¿αÑ¬Γ¿óá
- LOCAL, Γ« »«ñαáºπ¼ÑóáÑΓß∩, τΓ« «¡á «»αÑñѽ∩ÑΓ ñ½∩ ñá¡¡«⌐ »α«µÑñπ-
- αδ ñ¿¡á¼¿τÑ߬¿Ñ ½«¬á½∞¡δÑ »ÑαѼѡ¡δÑ. ìá»α¿¼Ñα, ñ¿αÑ¬Γ¿óá:
-
- LOCAL LocalArray:BYTE:100,LocalCount:WORD=AUTO_SIZE
-
- «»αÑñѽ∩ÑΓ ñ¿¡á¼¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ LocalArray ¿ LocalCount.
- LocalArray ¡á ßἫ¼ ñÑ½Ñ »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¼ÑΓ¬π, »α¿αáó¡Ñ¡¡πε ¬
- [BP-100], á LocalCount - φΓ« ¼ÑΓ¬á, »α¿αáó¡Ñ¡¡á∩ ¬ [BP-102]. Äñ-
- ¡á¬« óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ¿σ, ¬á¬ ¿¼Ñ¡á »ÑαѼѡ¡δσ. Åα¿ φΓ«¼
- óá¼ ñáªÑ ¡Ñ ¡πª¡« íπñÑΓ º¡áΓ∞ ¿σ º¡áτÑ¡¿∩. AUTO_SIZE - φΓ« «íΘÑÑ
- τ¿ß½« íá⌐Γ («íΩѼ »á¼∩Γ¿), ¡Ñ«íσ«ñ¿¼δσ ñ½∩ σαá¡Ñ¡¿∩ ñ¿¡á¼¿τÑ߬¿σ
- ½«¬á½∞¡δσ »ÑαѼѡ¡δσ. ùΓ«íδ óδñѽ¿Γ∞ »α«ßΓαá¡ßΓó« ñ½∩ ñ¿¡á¼¿τÑß-
- ¬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ, φΓ« º¡áτÑ¡¿Ñ ¡πª¡« óδτÑßΓ∞ ¿º SP.
-
- Åα¿óÑñѼ »α¿¼Ñα Γ«ú«, ¬á¬ ¡πª¡« ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ
- LOCAL:
-
- .
- .
- .
- _TestSub PROC
- LOCAL
- LocalArray:BYTE:100,LocalCount:WORD=AUTO_SIZE
- push bp ; ß«σαá¡¿Γ∞ π¬áºáΓѽ∞ ßΓѬá
- ; óδºδóáεΘÑ⌐ »α«úαá¼¼δ
- mov bp,sp ; πßΓá¡«ó¿Γ∞ ß«íßΓóÑ¡¡δ⌐
- ; π¬áºáΓѽ∞ ßΓѬá
- sub sp,AUTO_SIZE ; óδñѽ¿Γ∞ »α«ßΓαá¡ßΓó« ñ½∩
-
- TASM2 #2-5/䫬 = 202 =
-
- ; ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ
- ; »ÑαѼѡ¡δσ
- mov [LocalCount],10 ; πßΓá¡«ó¿Γ∞ »ÑαѼѡ¡πε
- ; LocalCount ó º¡áτÑ¡¿Ñ 10
- ; (LocalCount φΓ« [BP-102])
- .
- .
- .
- mov cx,[LocalCount] ; »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ
- ; (ßτÑΓτ¿¬) ¿º ½«¬á½∞¡«⌐
- ; »ÑαѼѡ¡«⌐
- mov al,'A' ; ºá»«½¡¿¼ ß¿¼ó«½«¼ 'A'
- lea bx,[LocalArray] ; ßßδ½¬á ¡á ½«¬á½∞¡δ⌐
- ; ¼áßß¿ó LocalArray
- ; (LocalArray φΓ« [BP-100])
- FillLoop:
- mov [bx],al ; ºá»«½¡¿Γ∞ ß½ÑñπεΘ¿⌐ íá⌐Γ
- inc bx ; ßßδ½¬á ¡á ß½ÑñπεΘ¿⌐ íá⌐Γ
- loop FillLoop ; «íαáí«ΓáΓ∞ ß½ÑñπεΘ¿⌐ íá⌐Γ,
- ; Ñß½¿ «¡ ¿¼ÑÑΓß∩
- mov sp,bp ; «ßó«í«ñ¿Γ∞ »á¼∩Γ∞,
- ; óδñѽѡ¡πε ñ½∩ ñ¿¡á¼¿τÑß-
- ; ¬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ
- ; (¼«ª¡« Γá¬ªÑ ¿ß»«½∞º«óáΓ∞
- ; add sp,AUTO_SIZE)
- pop bp ; ó«ßßΓá¡«ó¿Γ∞ π¬áºáΓѽ∞
- ; ßΓѬá óδºδóáεΘÑ⌐ »α«úαá¼¼δ
- ret
- _TestSub ENDP
- .
- .
- .
-
- é ñá¡¡«¼ »α¿¼ÑαÑ ß½ÑñπÑΓ «íαáΓ¿Γ∞ ó¡¿¼á¡¿Ñ ¡Ñ Γ«, τΓ« »Ñαó«Ñ
- »«½Ñ »«ß½Ñ «»αÑñѽѡ¿∩ ñá¡¡«⌐ ñ¿¡á¼¿τÑ߬«⌐ ½«¬á½∞¡«⌐ »ÑαѼѡ¡«⌐
- »αÑñßΓáó½∩ÑΓ ß«í«⌐ Γ¿» ñá¡¡δσ ñ½∩ φΓ«⌐ »ÑαѼѡ¡«⌐: BYTE, WORD,
- DWORD, NEAR ¿ Γ.ñ. éΓ«α«Ñ »«½Ñ »«ß½Ñ «»αÑñѽѡ¿∩ ñá¡¡«⌐ ñ¿¡á¼¿-
- τÑ߬«⌐ ½«¬á½∞¡«⌐ »ÑαѼѡ¡«⌐ - φΓ« τ¿ß½« φ½Ñ¼Ñ¡Γ«ó π¬áºá¡¡«ú« Γ¿-
- »á, αѺÑαó¿απѼδσ ñ½∩ ñá¡¡«⌐ »ÑαѼѡ¡«⌐. ¥Γ« »«½Ñ ∩ó½∩ÑΓß∩ ¡Ñ«í∩-
- ºáΓѽ∞¡δ¼ ¿ «»αÑñѽ∩ÑΓ ¿ß»«½∞ºπѼδ⌐ ñ¿¡á¼¿τÑ߬¿⌐ ½«¬á½∞¡δ⌐ ¼áßß¿ó
- (Ñß½¿ «¡ ¿ß»«½∞ºπÑΓß∩). àß½¿ ñá¡¡«Ñ »«½Ñ »α«»πΘÑ¡«, Γ« αѺÑαó¿απ-
- ÑΓß∩ «ñ¿¡ φ½Ñ¼Ñ¡Γ π¬áºá¡¡«ú« Γ¿»á. é ¿Γ«úÑ LocalArray ß«ßΓ«¿Γ ¿º
- 100 φ½Ñ¼Ñ¡Γ«ó αẼÑα«¼ ó 1 íá⌐Γ, á LocalCount - ¿º «ñ¡«ú« φ½Ñ¼Ñ¡-
- Γá αẼÑα«¼ ó ß½«ó« (ß¼. »α¿¼Ñα).
-
- ÄΓ¼ÑΓ¿¼ ΓᬪÑ, τΓ« ßΓ᫬á ß ñ¿αÑ¬Γ¿ó«⌐ LOCAL ó ñá¡¡«¼ »α¿¼Ñ-
-
- TASM2 #2-5/䫬 = 203 =
-
- αÑ ºáóÑαΦáÑΓß∩ »«½Ñ¼ =AUTO_SIZE. ¥Γ« »«½Ñ, ¡áτ¿¡áεΘÑÑß∩ ß« º¡á¬á
- αáóÑ¡ßΓóá, ¡Ñ«í∩ºáΓѽ∞¡«. àß½¿ «¡« »α¿ßπΓßΓóπÑΓ, Γ« ¼ÑΓ¬á, ß½Ññπ-
- εΘá∩ ºá º¡á¬«¼ αáóÑ¡ßΓóá, πßΓá¡áó½¿óáÑΓß∩ ó º¡áτÑ¡¿Ñ τ¿ß½á íá⌐Γ
- ΓαÑíπѼ«⌐ ñ¿¡á¼¿τÑ߬«⌐ ½«¬á½∞¡«⌐ »á¼∩Γ¿. éδ ñ«½ª¡δ ºáΓѼ ¿ß»«½∞-
- º«óáΓ∞ ñá¡¡πε ¼ÑΓ¬π ñ½∩ óδñѽѡ¿∩ ¿ «ßó«í«ªñÑ¡¿∩ »á¼∩Γ¿ ñ½∩ ñ¿¡á-
- ¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ, Γᬠ¬á¬ ñ¿αÑ¬Γ¿óá LABEL Γ«½∞¬« úÑ-
- ¡Ñα¿απÑΓ ¼ÑΓ¬¿ ¿ ¡Ñ úÑ¡Ñα¿απÑΓ ¡¿¬á¬«ú« ¬«ñá ¿½¿ »á¼∩Γ¿ ñ½∩
- ñá¡¡δσ. ê¡áτÑ ú«ó«α∩, ñ¿αÑ¬Γ¿óá LOCAL ¡Ñ óδñѽ∩ÑΓ »á¼∩Γ∞ ñ½∩ ñ¿-
- ¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ, á »α«ßΓ« úÑ¡Ñα¿απÑΓ ¼ÑΓ¬¿, ¬«Γ«-
- αδÑ óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ¬á¬ ñ½∩ óδñѽѡ¿∩ »á¼∩Γ¿, Γᬠ¿ ñ½∩
- ñ«ßΓπ»á ¬ ñ¿¡á¼¿τÑ߬¿¼ ½«¬á½∞¡δ¼ »ÑαѼѡ¡δ¼.
-
- ÄτÑ¡∞ πñ«í¡«Ñ ßó«⌐ßΓó« ñ¿αÑ¬Γ¿óδ LOCAL ºá¬½ετáÑΓß∩ ó Γ«¼,
- τΓ« «í½áßΓ∞ ñÑ⌐ßΓó¿∩ ¼ÑΓ«¬ ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ ¿
- «íΘÑú« αẼÑαá ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ «úαá¡¿τÑ¡á Γ«⌐
- »α«µÑñπα«⌐, ó ¬«Γ«α«⌐ «¡¿ ¿ß»«½∞ºπεΓß∩, »«φΓ«¼π óδ ¼«ªÑΓÑ ßó«í«ñ-
- ¡« ¿ß»«½∞º«óáΓ∞ ¿¼∩ ñ¿¡á¼¿τÑ߬«⌐ ½«¬á½∞¡«⌐ »ÑαѼѡ¡«⌐ ó ñαπú«⌐
- »α«µÑñπαÑ.
-
- èᬠ¼«ª¡« ºá¼ÑΓ¿Γ∞, ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ LOCAL «»αÑñѽ∩Γ∞ ¿
- ¿ß»«½∞º«óáΓ∞ áóΓ«¼áΓ¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ ¡á¼¡«ú« ½ÑúτÑ. ÄΓ¼ÑΓ¿¼,
- τΓ« »α¿ ¿ß»«½∞º«óá¡¿¿ ó ¼á¬α«¬«¼á¡ñáσ ñ¿αÑ¬Γ¿óá LOCAL ¿¼ÑÑΓ ß«-
- óÑαΦÑ¡¡« ñαπú«Ñ º¡áτÑ¡¿Ñ (ß¼. â½áóπ 9). (éδ ¼«ªÑΓÑ «íαáΓ¿Γ∞ß∩
- Γá¬ªÑ ¬ â½áóÑ 3 "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá", úñÑ »α¿óÑñÑ¡á ñ«»«½¡¿-
- Γѽ∞¡á∩ ¿¡Σ«α¼áµ¿∩ « ó¿ñáσ ñ¿αÑ¬Γ¿óδ LOCAL.)
-
- èßΓáΓ¿, Æπαí« æ¿ αáí«ΓáÑΓ ß úαá¡¿µá¼¿ ßΓѬá ΓᬠªÑ, ¬á¬ ¼δ
- ºñÑß∞ «»¿ß὿. éδ ¼«ªÑΓÑ ß¬«¼»¿½¿α«óáΓ∞ ¡Ñ߬«½∞¬« ¼«ñπ½Ñ⌐ Æπαí«
- æ¿ ß »áαá¼ÑΓα«¼ -s ¿ »«ß¼«ΓαÑΓ∞, ¬á¬«⌐ ¬«ñ ÇßßѼí½Ñαá úÑ¡Ñα¿απÑΓ
- Æπαí« æ¿ ¿ ¬á¬ Γá¼ ß«ºñáεΓß∩ ¿ ¿ß»«½∞ºπεΓß∩ úαá¡¿µδ ßΓѬá.
-
- éßÑ φΓ« »αѬαáß¡«, ¡« ºñÑß∞ ÑßΓ∞ ¡Ñ¬«Γ«αδÑ Γαπñ¡«ßΓ¿.
- é«-»Ñαóδσ, Γᬫ⌐ ß»«ß«í ñ«ßΓπ»á ¬ »áαá¼ÑΓαá¼, »α¿ ¬«Γ«α«¼ ¿ß»«½∞-
- ºπÑΓß∩ »«ßΓ«∩¡¡«Ñ ß¼ÑΘÑ¡¿Ñ «Γ¡«ß¿Γѽ∞¡« BP ñ«ßΓáΓ«τ¡« ¡Ñ»α¿∩ΓÑ¡:
- »α¿ φΓ«¼ ¡Ñ Γ«½∞¬« ½Ñú¬« «Φ¿í¿Γ∞ß∩, ¡« Ñß½¿ óδ ñ«íáó¿ΓÑ ñαπú«⌐
- »áαá¼ÑΓα, óßÑ ñαπú¿Ñ ß¼ÑΘÑ¡¿∩ π¬áºáΓѽ∩ ßΓѬá ó Σπ¡¬µ¿¿ ñ«½ª¡δ
- ¿º¼Ñ¡¿Γ∞ß∩. ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« Σπ¡¬µ¿∩ Test ó«ß»α¿¡¿¼áÑΓ
- Γα¿ »áαá¼ÑΓαá:
-
- Test(Flag, i, j, 1);
-
- Æ«úñá i ¡áσ«ñ¿Γß∩ »« ß¼ÑΘÑ¡¿ε 6, á ¡Ñ »« ß¼ÑΘÑ¡¿ε 4, j - »«
- ß¼ÑΘÑ¡¿ε 8, á ¡Ñ 6 ¿ Γ.ñ. ä½∩ ß¼ÑΘÑ¡¿⌐ »áαá¼ÑΓα«ó ¼«ª¡« ¿ß»«½∞º«-
- óáΓ∞ ñ¿αÑ¬Γ¿óπ EQU:
-
- .
-
- TASM2 #2-5/䫬 = 204 =
-
- .
- .
- Flag EQU 4
- AddParm1 EQU 6
- AddParm2 EQU 8
- SubParm1 EQU 10
-
- mov ax[bp+AddParm1]
- add ax,[bp+AddParm1]
- sub ax,[bp+SubParm1]
- .
- .
- .
-
- ¡« óδτ¿ß½∩Γ∞ ß¼ÑΘÑ¡¿∩ ¿ αáí«ΓáΓ∞ ß ¡¿¼¿ ñ«ó«½∞¡« ß½«ª¡«. Äñ¡á¬«
- ºñÑß∞ ¼«úπΓ ó«º¡¿¬¡πΓ∞ ¿ í«½ÑÑ ßÑα∞Ѻ¡δÑ »α«í½Ñ¼δ: ó ¼«ñѽ∩σ »á-
- ¼∩Γ¿ ß ñá½∞¡¿¼ ¬«ñ«¼ αẼÑα ºá¡ÑßÑ¡¡«ú« ó ßΓѬ áñαÑßá ó«ºóαáΓá
- πóѽ¿τ¿óáÑΓß∩ ¡á ñóá íá⌐Γá, ¬á¬ ¿ αẼÑαδ »ÑαÑñáóáѼδσ π¬áºáΓѽÑ⌐
- ¡á ¬«ñ ¿ ñá¡¡δÑ ó ¼«ñѽ∩σ »á¼∩Γ¿ ß ñá½∞¡¿¼ ¬«ñ«¼ ¿ ñá½∞¡¿¼¿ ñá¡-
- ¡δ¼¿, ß««ΓóÑΓßΓóÑ¡¡«. Éáºαáí«Γ¬á Σπ¡¬µ¿¿, ¬«Γ«αá∩ ß αáó¡δ¼ πß»Ñ-
- σ«¼ íπñÑΓ áßßÑ¼í½¿α«óáΓ∞ß∩ ¿ »αáó¿½∞¡« αáí«ΓáΓ∞ ß π¬áºáΓѽѼ ßΓÑ-
- ¬á »α¿ ¿ß»«½∞º«óá¡¿¿ ½εí«⌐ ¼«ñѽ¿ »á¼∩Γ¿ í佫 íδ óÑß∞¼á ¡Ñ»α«ßΓ«⌐
- ºáñáτÑ⌐.
-
- Äñ¡á¬« «»áßÑ¡¿∩ ¿º½¿Φ¡¿. é Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«ΓαÑ¡á
- ñ¿αÑ¬Γ¿óá ARG, ß »«¼«Θ∞ε ¬«Γ«α«⌐ ¼«ª¡« ½Ñú¬« óδ»«½¡∩Γ∞ »ÑαÑñáτπ
- »áαá¼ÑΓα«ó ó »α«úαá¼¼áσ ¡á ÇßßѼí½ÑαÑ.
-
- ä¿αÑ¬Γ¿óá ARG áóΓ«¼áΓ¿τÑ߬¿ úÑ¡Ñα¿απÑΓ »αáó¿½∞¡δÑ ß¼ÑΘÑ¡¿∩ ó
- ßΓÑ¬Ñ ñ½∩ ºáñá¡¡δσ óἿ »ÑαѼѡ¡δσ. ìá»α¿¼Ñα:
-
- arg FillArray:WORD,Count:WORD,FillValue:BYTE
-
- çñÑß∞ ºáñáÑΓß∩ Γα¿ »áαá¼ÑΓαá: FillArray, »áαá¼ÑΓα αẼÑα«¼ ó
- ß½«ó«, Count, Γá¬ªÑ »áαá¼ÑΓα αẼÑα«¼ ó ß½«ó« ¿ FillValue - »áαá-
- ¼ÑΓα αẼÑα«¼ ó íá⌐Γ. ä¿αÑ¬Γ¿óá ARG πßΓá¡áó½¿óáÑΓ ¼ÑΓ¬π
- FillArray ó º¡áτÑ¡¿Ñ [BP+4] (»«ñαáºπ¼ÑóáÑΓß∩, τΓ« ¬«ñ ¡áσ«ñ¿Γß∩
- ó »α«µÑñπαÑ í½¿ª¡Ñú« Γ¿»á), ¼ÑΓ¬π Count - ó º¡áτÑ¡¿Ñ [BP+6], á
- ¼ÑΓ¬π FillValue - ó º¡áτÑ¡¿Ñ [BP+8]. Äñ¡á¬« «ß«íÑ¡¡« µÑ¡¡á ñ¿αѬ-
- Γ¿óá ARG ΓѼ, τΓ« óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ «»αÑñѽѡ¡δÑ ß ÑÑ »«-
- ¼«Θ∞ε ¼ÑΓ¬¿ ¡Ñ ºáí«Γ∩ß∞ « ΓÑσ º¡áτÑ¡¿∩σ, ó ¬«Γ«αδÑ «¡¿ πßΓá¡«ó½Ñ-
- ¡δ.
-
- ìá»α¿¼Ñα, »αÑñ»«½«ª¿¼, τΓ« π óáß ÑßΓ∞ Σπ¡¬µ¿∩ FillSub ¬«Γ«-
- αá∩ óδºδóáÑΓß∩ ¿º æ¿ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
-
- TASM2 #2-5/䫬 = 205 =
-
- main()
- {
- #define ARRAY_LENGTH 100
- char TestArray[ARRAY_LENGTH];
- FillSub(TestArray,ARRAY_LENGTH,'*');
- }
-
- é FillSub ñ¿αÑ¬Γ¿óπ ARG ñ½∩ αáí«Γδ ß »áαá¼ÑΓαἿ ¼«ª¡« ¿ß-
- »«½∞º«óáΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- _FillSub PROC NEAR
- ARG FillArray:WORD,Count:WORD,FillValue:BYTE
- push bp ; ß«σαá¡¿Γ∞ π¬áºáΓѽ∞ ßΓѬá
- ; óδºδóáεΘÑ⌐ »α«úαá¼¼δ
- mov bp,sp ; πßΓá¡«ó¿Γ∞ ßó«⌐ ß«íßΓóÑ¡¡δ⌐
- ; π¬áºáΓѽ∞ ßΓѬá
- mov bx,[FillArray] ; »«½πτ¿Γ∞ π¬áºáΓѽ∞ ¡á
- ; ºá»«½¡∩Ѽδ⌐ ¼áßß¿ó
- mov cx,[Count] ; »«½πτ¿Γ∞ ºá»«½¡∩Ѽπε ñ½¿¡π
- mov al,[FillValue] ; »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ-ºá»«½¡¿Γѽ∞
- FillLoop:
- mov [bx],al ; ºá»«½¡¿Γ∞ ß¿¼ó«½
- inc bx ; ßßδ½¬á ¡á ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- loop FillLoop ; «íαáí«ΓáΓ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- pop bp ; ó«ßßΓá¡«ó¿Γ∞ π¬áºáΓѽ∞ ßΓѬá
- ; óδºδóáεΘÑ⌐ »α«úαá¼¼δ
- ret
- _FillSub ENDP
-
- ìÑ »αáóñá ½¿, πñ«í¡« αáí«ΓáΓ∞ ß »áαá¼ÑΓαἿ ß »«¼«Θ∞ε ñ¿αѬ-
- Γ¿óδ ARG? èα«¼Ñ Γ«ú«, ñ¿αÑ¬Γ¿óá ARG áóΓ«¼áΓ¿τÑ߬¿ πτ¿ΓδóáÑΓ αáº-
- ½¿τ¡δÑ αẼÑαδ ó«ºóαáΓ«ó í½¿ª¡Ñú« ¿ ñá½∞¡Ñú« Γ¿»á. äαπú«Ñ πñ«íßΓ-
- ó« ß«ßΓ«¿Γ ó Γ«¼, τΓ« ¼ÑΓ¬¿, «»αÑñѽѡ¡δÑ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ
- ARG, «úαá¡¿τÑ¡δ »« «í½áßΓ¿ ñÑ⌐ßΓó¿∩ Γ«⌐ »α«µÑñπα«⌐, úñÑ «¡¿ ¿ß-
- »«½∞ºπεΓß∩, ¿ óá¼ ¡Ñ »α¿σ«ñ¿Γß∩ íÑß»«¬«¿Γ∞ß∩ « 󫺼«ª¡«¼ ¬«¡Σ½¿¬-
- ΓÑ ¼Ñªñπ ¿¼Ñ¡á¼¿ »áαá¼ÑΓα«ó ó αẽ¿τ¡δσ »α«µÑñπαáσ.
-
- ä«»«½¡¿Γѽ∞¡á∩ ¿¡Σ«α¼áµ¿∩ « ñ¿αÑ¬Γ¿óÑ ARG ß«ñÑনΓß∩ ó â½áóÑ
- 3 "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá".
-
-
-
-
- TASM2 #2-5/䫬 = 206 =
-
- æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó
- -----------------------------------------------------------------
-
- Åα¿ óºá¿¼«ñÑ⌐ßΓó¿¿ Æπαí« ÇßßѼí½Ñαá ¿ Æπαí« æ¿ óδºδóáѼδÑ ¿º
- »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿ Σπ¡¬µ¿¿ ÇßßѼí½Ñαá ¼«úπΓ ñѽáΓ∞ óßÑ τΓ«
- πú«ñ¡«, ¡« »α¿ φΓ«¼ «¡¿ ñ«½ª¡δ ß«σαá¡∩Γ∞ αÑú¿ßΓαδ BP, SP, CS, DS
- ¿ SS. ò«Γ∩ »α¿ óδ»«½¡Ñ¡¿¿ Σπ¡¬µ¿¿ ÇßßѼí½Ñαá φΓ¿ αÑú¿ßΓαδ ¼«ª¡«
- ¿º¼Ñ¡∩Γ∞, »α¿ ó«ºóαáΓÑ ¿º óδºδóáѼ«⌐ »«ñ»α«úαá¼¼δ «¡¿ ñ«½ª¡δ
- ¿¼ÑΓ∞ ó Γ«τ¡«ßΓ¿ Γá¬¿Ñ º¡áτÑ¡¿∩, ¬á¬¿Ñ «¡¿ ¿¼Ñ½¿ »α¿ ÑÑ ó맮óÑ.
- ÉÑú¿ßΓαδ AX, BX, CX, DX ¿ ES, á Γá¬ªÑ Σ½áú¿ ¼«úπΓ »α«¿ºó«½∞¡« ¿º-
- ¼Ñ¡∩Γ∞ß∩.
-
- ÉÑú¿ßΓαδ DI ¿ SI »αÑñßΓáó½∩εΓ ß«í«⌐ «ß«íδ⌐ ß½πτá⌐, Γᬠ¬á¬ ó
- Æπαí« æ¿ «¡¿ ¿ß»«½∞ºπεΓß∩ ñ½∩ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ. àß½¿ ó ¼«-
- ñπ½Ñ æ¿, ¿º ¬«Γ«α«ú« óδºδóáÑΓß∩ óáΦá Σπ¡¬µ¿∩ ¡á ÇßßѼí½ÑαÑ, ¿ß-
- »«½∞º«óá¡¿Ñ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ αáºαÑΦÑ¡«, Γ« óδ ñ«½ª¡δ ß«σαá-
- ¡¿Γ∞ αÑú¿ßΓαδ SI ¿ DI, Ñß½¿ ªÑ ¡ÑΓ, Γ« ß«σαá¡∩Γ∞ ¿σ ¡Ñ ¡πª¡«. Äñ-
- ¡á¬« ¡Ñ»½«σ« óßÑúñá ß«σαá¡∩Γ∞ φΓ¿ αÑú¿ßΓαδ, ¡Ñºáó¿ß¿¼« «Γ Γ«ú«,
- αáºαÑΦÑ¡« ¿½¿ ºá»αÑΘÑ¡« ¿ß»«½∞º«óá¡¿Ñ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ.
- Æαπñ¡« ºáαá¡ÑÑ úáαá¡Γ¿α«óáΓ∞, τΓ« óá¼ ¡Ñ »α¿ñÑΓß∩ ¬«¼»«¡«óáΓ∞
- ñá¡¡δ⌐ ¼«ñπ½∞ ÇßßѼí½Ñαá ß ñαπú¿¼ ¼«ñπ½Ñ¼ ¡á ∩ºδ¬Ñ æ¿, ¿½¿ »ÑαÑ-
- ¬«¼»¿½¿α«óáΓ∞ ¼«ñπ½∞ æ¿ ß αáºαÑΦÑ¡¿Ñ¼ ¿ß»«½∞º«óá¡¿∩ αÑú¿ßΓα«óδσ
- »ÑαѼѡ¡δσ. Åα¿ φΓ«¼ óδ ¼«ªÑΓÑ ºáíδΓ∞, τΓ« ¿º¼Ñ¡Ñ¡¿∩ ¡πª¡« ΓᬪÑ
- ó¡ÑßΓ¿ ¿ ó ¬«ñ ÇßßѼí½Ñαá.
-
- 髺óαáΓ º¡áτÑ¡¿⌐
- -----------------------------------------------------------------
-
- éδºδóáѼδÑ ¿º »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿ Σπ¡¬µ¿¿ ¡á ÇßßѼí½ÑαÑ,
- ΓᬠªÑ ¬á¬ ¿ Σπ¡¬µ¿¿ æ¿, ¼«úπΓ ó«ºóαáΘáΓ∞ º¡áτÑ¡¿∩. ç¡áτÑ¡¿∩
- Σπ¡¬µ¿⌐ ó«ºóαáΘáεΓß∩ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- -----------------------------------------------------------------
- Æ¿» ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ âñÑ ¡áσ«ñ¿Γß∩ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ
- -----------------------------------------------------------------
- unsigned char AX
- char AX
- enum AX
- unsigned short AX
- short AX
- unsigned int AX
- int AX
- unsigned long DX:AX
- long DX:AX
- float αÑú¿ßΓα óÑαΦ¿¡δ ßΓѬá ß«»α«µÑßß«αá
- 8087 (ST(0))
-
- TASM2 #2-5/䫬 = 207 =
-
- double αÑú¿ßΓα óÑαΦ¿¡δ ßΓѬá ß«»α«µÑßß«αá
- 8087 (ST(0))
- long double αÑú¿ßΓα óÑαΦ¿¡δ ßΓѬá ß«»α«µÑßß«αá
- 8087 (ST(0))
- near* AX
- far* DX:AX
- -----------------------------------------------------------------
-
- é «íΘѼ ß½πτáÑ 8- ¿ 16-í¿Γ«óδÑ º¡áτÑ¡¿∩ ó«ºóαáΘáεΓß∩ ó αÑ-
- ú¿ßΓαÑ AX, á 32-í¿Γ«óδÑ º¡áτÑ¡¿∩ - ó AX:DX (»α¿ φΓ«¼ ßΓáαΦ¿Ñ 16
- í¿Γ º¡áτÑ¡¿∩ ¡áσ«ñ∩Γß∩ ó αÑú¿ßΓαÑ DX). ç¡áτÑ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ-
- ¬«⌐ ó«ºóαáΘáεΓß∩ ó αÑú¿ßΓαÑ ST(0), ¬«Γ«αδ⌐ »αÑñßΓáó½∩ÑΓ ß«í«⌐ αÑ-
- ú¿ßΓα óÑαΦ¿¡δ ßΓѬá ß«»α«µÑßß«αá 8087 ¿½¿ φ¼π½∩Γ«αá ß«»α«µÑßß«αá
- 8087, Ñß½¿ ¿ß»«½∞ºπÑΓß∩ φ¼π½∩Γ«α «»Ñαᵿ⌐ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐.
-
- æ« ßΓαπ¬ΓπαἿ ñѽ« «íßΓ«¿Γ ¡Ñ߬«½∞¬« ß½«ª¡ÑÑ. æΓαπ¬Γπαδ,
- ¿¼ÑεΘ¿Ñ ñ½¿¡π 1 ¿½¿ 2 íá⌐Γá, ó«ºóαáΘáεΓß∩ ó αÑú¿ßΓαÑ AX, á ßΓπ¬-
- Γπαδ ñ½¿¡«⌐ 4 íá⌐Γá - ó αÑú¿ßΓαáσ AX:DX. ÆαÑσíá⌐Γ«óδÑ ßΓαπ¬Γπαδ ¿
- ßΓαπ¬Γπαδ, »αÑóδΦáεΘ¿Ñ 4 íá⌐Γá ñ«½ª¡δ σαá¡¿Γ∞ß∩ ó «í½áßΓ¿ ßΓáΓ¿-
- τÑ߬¿σ ñá¡¡δσ, »α¿ φΓ«¼ ñ«½ªÑ¡ ó«ºóαáΘáΓ∞ß∩ π¬áºáΓѽ∞ ¡á φΓ¿ ßΓá-
- Γ¿τÑ߬¿Ñ ñá¡¡δÑ. èᬠ¿ óßÑ π¬áºáΓѽ¿, π¬áºáΓѽ¿ ¡á ßΓαπ¬Γπαδ, ¬«-
- Γ«αδÑ ¿¼ÑεΓ í½¿ª¡¿⌐ Γ¿» (NEAR), ó«ºóαáΘáεΓß∩ ó αÑú¿ßΓαÑ AX, á
- π¬áºáΓѽ¿ ñá½∞¡Ñú« Γ¿»á - ó »áαÑ αÑú¿ßΓα«ó AX:DX.
-
- äáóá⌐ΓÑ αáßß¼«Γα¿¼ óδºδóáѼπε ¿º »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿ Σπ¡¬-
- µ¿ε ¡á ÇßßѼí½ÑαÑ ß ¼á½«⌐ ¼«ñѽ∞ε »á¼∩Γ¿ FindLastChar, ¬«Γ«αá∩
- ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á »«ß½Ññ¡¿⌐ ß¿¼ó«½ »ÑαÑñáóáѼ«⌐ ßΓ᫬¿. ìá
- ∩ºδ¬Ñ æ¿ »α«Γ«Γ¿» φΓ«⌐ Σπ¡¬µ¿¿ óδú½∩ñѽ íδ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- extern char * FindLastChar(char * StringToScan);
-
- úñÑ StringToScan - φΓ« ¡Ñ»πßΓá∩ ßΓ᫬á, ñ½∩ ¬«Γ«α«⌐ ñ«½ªÑ¡ ó«ºó-
- αáΘáΓ∞ß∩ π¬áºáΓѽ∞ ¡á »«ß½Ññ¡¿⌐ ß¿¼ó«½.
-
- öπ¡¬µ¿∩ FindLastChar ¿¼ÑÑΓ ß½ÑñπεΘ¿⌐ ó¿ñ:
-
- DOSSEG
- .MODEL SMALL
- .CODE
- PUBLIC _FindLastChar
- _FindLastChar PROC
- push bp
- mov bp,sp
- cld ; ó ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ ¡πª¡«
- ; óδ»«½¡∩Γ∞ «ΓßτÑΓ ó »α∩¼«¼
- ; ¡á»αáó½Ñ¡¿¿
-
- TASM2 #2-5/䫬 = 208 =
-
- mov ax,ds
- mov es,ax ; ΓÑ»Ñα∞ ES π¬áºδóáÑΓ ¡á
- ; í½¿ª¡¿⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ
- mov di, ; ΓÑ»Ñα∞ ES:DI π¬áºδóáÑΓ ¡á
- ; ¡áτὫ »ÑαÑñáóáѼ«⌐ ßΓ᫬¿
- mov al,0 ; ¡á⌐Γ¿ ¡π½Ñó«⌐ ß¿¼ó«½,
- ; ºáóÑαΦáεΘ¿⌐ ßΓ᫬π
- mov cx,0ffffh ; αáí«ΓáΓ∞ ó »αÑñѽáσ
- ; 64è-1 íá⌐Γ
- repne scasb ; ¡á⌐Γ¿ ¡π½Ñó«⌐ ß¿¼ó«½
- dec di ; πßΓá¡«ó¿Γ∞ π¬áºáΓѽ∞
- ; «íαáΓ¡« ¡á 0
- dec di ; ßßδ½¬á «íαáΓ¡« ¡á
- ; »«ß½Ññ¡¿⌐ ß¿¼ó«½
- mov ax,dx ; ó«ºóαáΓ¿Γ∞ ó AX π¬áºáΓѽ∞
- ; í½¿ª¡Ñú« Γ¿»á
- pop bp
- ret
- _FindLastChar ENDP
- END
-
- è«¡Ñτ¡δ⌐ αѺπ½∞ΓáΓ, π¬áºáΓѽ∞ ¡á »ÑαÑñáóáѼπε ßΓ᫬π, ó«ºó-
- αáΘáÑΓß∩ ó αÑú¿ßΓαÑ AX.
-
-
-
-
- TASM2 #2-5/䫬 = 209 =
-
- é맮ó Σπ¡¬µ¿⌐ Æπαí« ÇßßѼí½Ñαá ¿º Æπαí« æ¿
- -----------------------------------------------------------------
-
- ÆÑ»Ñα∞ ¼δ αáßß¼«Γα¿¼ »α¿¼Ñα »α«úαá¼¼δ ¡á Æπαí« æ¿, óδºδóáε-
- ΘÑ⌐ Σπ¡¬µ¿ε Æπαí« ÇßßѼí½Ñαá. î«ñπ½∞ Æπαí« ÇßßѼí½Ñαá COUNT.ASM
- ß«ñÑαª¿Γ Σπ¡¬µ¿ε LineCount, ¬«Γ«αá∩ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á
- τ¿ß½á ßΓ᫬ ¿ ß¿¼ó«½«ó ó »ÑαÑñáóáѼ«⌐ ßΓ᫬Ñ:
-
- ; éδºδóáѼá∩ ¿º æ¿ Σπ¡¬µ¿∩ ¡á ÇßßѼí½ÑαÑ ß ¼á½«⌐ ¼«ñѽ∞ε »á¼∩Γ¿
- ; ñ½∩ »«ñßτÑΓá τ¿ß½á ßΓ᫬ ¿ ß¿¼ó«½«ó ó ºáóÑαΦáεΘÑ⌐ß∩ ¡π½Ñ¼
- ; "ßΓ᫬Ñ".
- ;
- ; Åα«Γ«Γ¿» Σπ¡¬µ¿¿:
- ; extern unsigned int LineCount(char * near StringToCount,
- ; unsigned int near * CharacterCountPtr);
- ;
- ; éó«ñ:
- ; char near * StringToCount: π¬áºáΓѽ∞ ¡á "ßΓ᫬π", ó
- ; ¬«Γ«α«⌐ ¡πª¡« óδ»«½¡¿Γ∞ »«ñßτÑΓ ßΓ᫬.
- ;
- ; unsigned int near * CharacterCountPtr: π¬áºáΓѽ∞ ¡á
- ; µÑ½πε »ÑαѼѡ¡πε, ó ¬«Γ«απε ¡πª¡« ºá»¿ßáΓ∞ º¡áτÑ¡¿Ñ
- ; ßτÑΓτ¿¬á
- NEWLINE EQU 0ah ; ß¿¼ó«½ »ÑαÑó«ñá ßΓ᫬¿ ó æ¿
- DOSSEG
- .MODEL SMALL
- .CODE
- PUBLIC _LinaCount
- _LineCount PROC
- push bp
- mov bp,sp
- push si ; ß«σαá¡¿Γ∞ αÑú¿ßΓα«óπε
- ; »ÑαѼѡ¡πε óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
- mov si,[bp+4] ; SI π¬áºδóáÑΓ ¡á ßΓ᫬π
- sub cx,cx ; πßΓá¡«ó¿Γ∞ º¡áτÑ¡¿Ñ
- ; ßτÑΓτ¿¬á ß¿¼ó«½«ó ó 0
- mov dx,cx ; πßΓá¡«ó¿Γ∞ ó 0 ßτÑΓτ¿¬
- ; ßΓ᫬
- LineCountLoop:
- lodsb ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- and al,al ; φΓ« 0? ¬«¡Ñµ ßΓ᫬¿?
- jz EndLineCount ; ñá, óδ»«½¡Ñ¡«
- inc cx ; ¡ÑΓ, »«ñßτ¿ΓáΓ∞ ß½ÑñπεΘ¿⌐
- ; ß¿¼ó«½
- cmp al,NEWLINE ; φΓ« ¡«óá∩ ßΓ᫬á?
-
- TASM2 #2-5/䫬 = 210 =
-
- jnz LineCountLoop ; ¡ÑΓ, »α«óÑα¿Γ∞
- ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- inc dx ; ñá, »«ñßτ¿ΓáΓ∞ ÑΘÑ «ñ¡π
- ; ßΓ᫬π
- jmp LineCountLoop
- EndLineCount:
- inc dx ; »«ñßτ¿ΓáΓ∞ ßΓ᫬π, ¬«Γ«αá∩
- ; ºáóÑαΦáÑΓß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼
- mov [bx],cx ; ºáñáΓ∞ º¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐-
- ; ßτÑΓτ¿¬á
- mov ax,dx ; ó«ºóαáΓ¿Γ∞ ßτÑΓτ¿¬ ßΓ᫬ ó
- ; ¬áτÑßΓóÑ º¡áτÑ¡¿∩ ßτÑΓτ¿¬á
- pop si ; ó«ßßΓá¡«ó¿Γ∞ αÑú¿ßΓα«óπε
- ; »ÑαѼѡ¡πε óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
- pop bp
- ret
- _LineCount ENDP
- END
-
- æ½ÑñπεΘ¿⌐ ¼«ñπ½∞ ¡á ∩ºδ¬Ñ æ¿ ß ¿¼Ñ¡Ñ¼ CALLC.C »αÑñßΓáó½∩ÑΓ
- ß«í«⌐ »α¿¼Ñα ó맮óá Σπ¡¬µ¿¿ LineCount:
-
- char * TestString="Line 1\nline 2\n Line3";
- extern unsigned int LineCount(char * StringToCount,
- unsigned int * CharacterCountPtr);
- main()
- {
- unsigned int LCount;
- unsigned int CCount;
-
- LCount = LineCount(TestString, &CCount);
- printf("æΓ᫬: %d\nC¿¼ó«½«ó: %d\n", LCount, CCount);
- }
-
- äóá ¼«ñπ½∩ ¬«¼»¿½¿απεΓß∩ ¿ ¬«¼»«¡πεΓß∩ ó¼ÑßΓÑ ß »«¼«Θ∞ε ¬«-
- ¼á¡ñ¡«⌐ ßΓ᫬¿:
-
- tcc -ms callc count.asm
-
- èᬠºñÑß∞ »«¬áºá¡«, Σπ¡¬µ¿∩ LineCount íπñÑΓ αáí«ΓáΓ∞ Γ«½∞¬«
- »α¿ ¬«¼»«¡«ó¬Ñ ß »α«úαἼἿ ¡á ∩ºδ¬Ñ æ¿, ó ¬«Γ«αδσ ¿ß»«½∞ºπÑΓß∩
- ¼á½á∩ ¼«ñѽ∞ »á¼∩Γ¿, Γᬠ¬á¬ ó ñαπú¿σ ¼«ñѽ∩σ αẼÑαδ π¬áºáΓѽÑ⌐
- ¿ áñαÑß«ó ó ßΓÑ¬Ñ ¿º¼Ñ¡∩Γß∩. Åα¿óÑñѼ »α¿¼Ñα óÑαß¿¿ Σπ¡¬µ¿¿
- LineCount (COUNTLG.ASM), ¬«Γ«αá∩ íπñÑΓ αáí«ΓáΓ∞ ß »α«úαἼἿ ¡á
- æ¿, ¿ß»«½∞ºπεΘ¿¼ í«½∞Φπε ¼«ñѽ∞ »á¼∩Γ¿ (¡« ¡Ñ ¼á½πε ¼«ñѽ∞: »«ß-
-
- TASM2 #2-5/䫬 = 211 =
-
- ¬«½∞¬π »ÑαÑñáεΓß∩ ñá½∞¡¿Ñ π¬áºáΓѽ∞, Σπ¡¬µ¿∩ LineCount Γá¬ªÑ «»¿-
- ßá¡á, ¬á¬ Σπ¡¬µ¿∩ ñá½∞¡Ñú« Γ¿»á):
-
- ; éδºδóáѼá∩ ¿º æ¿ Σπ¡¬µ¿∩ ¡á ÇßßѼí½ÑαÑ ñ½∩ »«ñßτÑΓá τ¿ß½á
- ; ßΓ᫬ ¿ ß¿¼ó«½«ó ó ºáóÑαΦáεΘÑ⌐ß∩ ¡π½Ñ¼ "ßΓ᫬Ñ".
- ;
- ; Åα«Γ«Γ¿» Σπ¡¬µ¿¿:
- ; extern unsigned int LineCount(char * far StringToCount,
- ; unsigned int far * CharacterCountPtr);
- ;
- ; éó«ñ:
- ; char far * StringToCount: π¬áºáΓѽ∞ ¡á "ßΓ᫬π", ó
- ; ¬«Γ«α«⌐ ¡πª¡« óδ»«½¡¿Γ∞ »«ñßτÑΓ ßΓ᫬.
- ;
- ; unsigned int far * CharacterCountPtr: π¬áºáΓѽ∞ ¡á
- ; µÑ½«τ¿ß½Ñ¡¡πε »ÑαѼѡ¡πε, ó ¬«Γ«απε ¡πª¡« ºá»¿ßáΓ∞
- ; º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á
- NEWLINE EQU 0ah ; ß¿¼ó«½ »ÑαÑó«ñá ßΓ᫬¿ ó æ¿
- DOSSEG
- .MODEL LARGE
- .CODE
- PUBLIC _LinaCount
- _LineCount PROC
- push bp
- mov bp,sp
- push si ; ß«σαá¡¿Γ∞ αÑú¿ßΓα«óπε
- ; »ÑαѼѡ¡πε óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
- push ds ; ß«σαá¡¿Γ∞ ßΓá¡ñáαΓ¡δ⌐
- ; ßÑú¼Ñ¡Γ ñá¡¡δσ
- lds si,[bp+6] ; DS:SI π¬áºδóáÑΓ ¡á ßΓ᫬π
- sub cx,cx ; πßΓá¡«ó¿Γ∞ º¡áτÑ¡¿Ñ
- ; ßτÑΓτ¿¬á ß¿¼ó«½«ó ó 0
- mov dx,cx ; πßΓá¡«ó¿Γ∞ ó 0 ßτÑΓτ¿¬
- ; ßΓ᫬
- LineCountLoop:
- lodsb ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- and al,al ; φΓ« 0? ¬«¡Ñµ ßΓ᫬¿?
- jz EndLineCount ; ñá, óδ»«½¡Ñ¡«
- inc cx ; ¡ÑΓ, »«ñßτ¿ΓáΓ∞ ß½ÑñπεΘ¿⌐
- ; ß¿¼ó«½
- cmp al,NEWLINE ; φΓ« ¡«óá∩ ßΓ᫬á?
- jnz LineCountLoop ; ¡ÑΓ, »α«óÑα¿Γ∞
- ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½
- inc dx ; ñá, »«ñßτ¿ΓáΓ∞ ÑΘÑ «ñ¡π
- ; ßΓ᫬π
-
- TASM2 #2-5/䫬 = 212 =
-
- jmp LineCountLoop
- EndLineCount:
- inc dx ; »«ñßτ¿ΓáΓ∞ ßΓ᫬π, ¬«Γ«αá∩
- ; ºáóÑαΦáÑΓß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼
- les bx,[bp+10] ; ES:BX π¬áºδóáÑΓ ¡á ∩τÑ⌐¬π,
- ; ó ¬«Γ«α«⌐ ó«ºóαáΘáÑΓß∩
- ; º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á
- mov es:[bx],cx ; ºáñáΓ∞ º¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐-
- ; ßτÑΓτ¿¬á
- mov ax,dx ; ó«ºóαáΓ¿Γ∞ ßτÑΓτ¿¬ ßΓ᫬ ó
- ; ¬áτÑßΓóÑ º¡áτÑ¡¿∩ ßτÑΓτ¿¬á
- pop ds ; ó«ßßΓá¡«ó¿Γ∞ ßΓá¡ñáαΓ¡δ⌐
- ; ßÑú¼Ñ¡Γ ñá¡¡δσ æ¿
- pop si ; ó«ßßΓá¡«ó¿Γ∞ αÑú¿ßΓα«óπε
- ; »ÑαѼѡ¡πε óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
- pop bp
- ret
- _LineCount ENDP
- END
-
- Åα«úαá¼¼π COUNTLG.ASM ¼«ª¡« ߬«¼»«¡«óáΓ∞ ß CALLC.C ß »«¼«Θ∞ε
- ß½ÑñπεΘÑ⌐ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿:
-
- tcc -ml callc countlg.asm
-
-
-
-
- TASM2 #2-5/䫬 = 213 =
-
- æ«ú½áΦÑ¡¿∩ »« ó맮óá¼, ¿ß»«½∞ºπεΘ¿Ñß∩ ó Åá߬á½Ñ
- -----------------------------------------------------------------
-
- êΓá¬, ΓÑ»Ñα∞ óδ πªÑ º¡áÑΓÑ, ¬á¬ «íδτ¡« ó æ¿ »ÑαÑñáεΓß∩ »áαá-
- ¼ÑΓαδ Σπ¡¬µ¿∩¼: óδºδóáεΘá∩ »α«úαá¼¼á ºá¡«ß¿Γ »áαá¼ÑΓαδ (ß»αáóá
- ¡á½Ñó«) ó ßΓѬ, óδºδóáÑΓ Σπ¡¬µ¿ε, ¿ ¿ºó½Ñ¬áÑΓ »áαá¼ÑΓαδ ¿º ßΓѬá
- («ΓíαáßδóáÑΓ ¿σ) »«ß½Ñ ó맮óá. Æπαí« æ¿ ¼«ªÑΓ Γá¬ªÑ αáí«ΓáΓ∞ »«
- ß«ú½áΦÑ¡¿∩¼, »α¿¡∩Γδ¼ ó Åá߬á½Ñ. æ«ú½áß¡« φΓ¿¼ ß«ú½áΦÑ¡¿∩¼ »áαá-
- ¼ÑΓαδ »ÑαÑñáεΓß∩ ß½Ñóá ¡á»αáó«, á «ΓíαáßδóáÑΓ »áαá¼ÑΓαδ (¿º ßΓÑ-
- ¬á) óδºδóáѼá∩ »α«úαá¼¼á. ÉáºαÑΦ¿Γ∞ ¿ß»«½∞º«óá¡¿Ñ ß«ú½áΦÑ¡¿⌐ Åáß-
- ¬á½∩ ó Æπαí« æ¿ ¼«ª¡« ß »«¼«Θ∞ε »áαá¼ÑΓαá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ -p ¿½¿
- ¬½ετÑó«ú« ß½«óá pascal.
-
- Åα¿óÑñѼ »α¿¼Ñα Σπ¡¬µ¿¿ ¡á ÇßßѼí½ÑαÑ, ó ¬«Γ«α«⌐ ¿ß»«½∞ºπεΓ-
- ß∩ ß«ú½áΦÑ¡¿∩ Åá߬á½∩:
-
- ;
- ; éδºδóáÑΓß∩, ¬á¬: TEST(i, j ,k)
- ;
- i equ 8 ; ½Ñóδ⌐ »áαá¼ÑΓα
- j equ 6
- k equ 4 ; »αáóδ⌐ »áαá¼ÑΓα
- ;
- DOSSEG
- .MODEL SMALL
- .CODE
- PUBLIC TEST
- TEST PROC
- push bp
- mov bp,sp
- mov ax,[bp+i] ; »«½πτ¿Γ∞ i
- add ax,[bp+j] ; »α¿íáó¿Γ∞ ¬ i j
- sub ax,[bp+k] ; óδτÑßΓ∞ ¿º ßπ¼¼δ k
- pop bp
- ret 6 ; ó«ºóαáΓ, «Γíα«ß¿Γ∞
- ; 6 íá⌐Γ »áαá¼ÑΓα«ó
- ; («τ¿ßΓ¬á ßΓѬá)
- TEST ENDP
- END
-
- ìá É¿ß. 7.7 »«¬áºá¡« ß«ßΓ«∩¡¿Ñ ßΓÑ¬á »«ß½Ñ óδ»«½¡Ñ¡¿∩ ¿¡ßΓ-
- απ¬µ¿¿ MOV BP,SP:
- . .
- . .
- | |
- |-----------------------|
-
- TASM2 #2-5/䫬 = 214 =
-
- SP --> | BP óδºδóáεΘÑ⌐ »α«úα. | <-- BP
- |-----------------------|
- SP + 2 | ÇñαÑß ó«ºóαáΓá | BP + 2
- |-----------------------|
- SP + 4 | k | BP + 4
- |-----------------------|
- SP + 6 | j | BP + 6
- |-----------------------|
- SP + 8 | i | BP + 8
- |-----------------------|
- | |
- |-----------------------|
- | |
- . .
-
- É¿ß. 7.7 æ«ßΓ«∩¡¿Ñ ßΓÑ¬á »«ß½Ñ ¿¡ßΓαπ¬µ¿¿ MOV BP,SP.
-
- çá¼ÑΓ¿¼, τΓ« ñ½∩ «τ¿ßΓ¬¿ ßΓÑ¬á «Γ »ÑαÑñáóáѼδσ »áαá¼ÑΓα«ó
- ¿ß»«½∞ºπÑΓß∩ ¿¡ßΓαπ¬µ¿∩ RET 6.
-
- æ«ú½áΦÑ¡¿∩ »« ó맮óá¼ Åá߬á½∩ ΓαÑíπεΓ ΓᬪÑ, τΓ«íδ óßÑ ó¡ÑΦ-
- ¡¿Ñ ¿ «íΘÑñ«ßΓπ»¡δÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ π¬áºδó὿ß∞ ó óÑασ¡Ñ¼ αÑú¿ßΓαÑ
- ¿ íѺ »αÑñΦÑßΓóπεΘ¿σ »«ñτÑનóá¡¿⌐. çáτѼ ¼«ªÑΓ »«ΓαÑí«óáΓ∞ß∩ ¿ß-
- »«½∞º«óáΓ∞ ó »α«úαá¼¼Ñ ¡á æ¿ ß«ú½áΦÑ¡¿∩ »« ó맮óá¼ Åá߬á½∩? Åα«ú-
- αá¼¼á, ¿ß»«½∞ºπεΘá∩ ß«ú½áΦÑ¡¿∩ Åá߬á½∩, ºá¡¿¼áÑΓ «íδτ¡« ¡Ñ߬«½∞¬«
- ¼Ñ¡∞ΦÑ ¼ÑßΓá ó »á¼∩Γ¿ ¿ αáí«ΓáÑΓ íδßΓαÑÑ, τѼ «íδτ¡á∩ »α«úαá¼¼á
- ¡á ∩ºδ¬Ñ æ¿, Γᬠ¬á¬ ñ½∩ «τ¿ßΓ¬¿ ßΓÑ¬á «Γ »áαá¼ÑΓα«ó ¡Ñ ΓαÑíπÑΓß∩
- óδ»«½¡∩Γ∞ n ¿¡ßΓαπ¬µ¿⌐ ADD SP. ü«½ÑÑ »«ñα«í¡« « ß«ú½áΦÑ¡¿∩σ »«
- ó맮óá¼, »α¿¡∩Γδ¼ ó Åá߬á½Ñ, αáß߬áºδóáÑΓß∩ ó â½áóÑ 8.
-
-
-
-
- TASM2 #2-5/䫬 = 215 =
-
-
- é맮ó Æπαí« æ¿ ¿º Æπαí« ÇßßѼí½Ñαá
- -----------------------------------------------------------------
-
- ò«Γ∩ í«½∞ΦÑ »α¿¡∩Γ« ñ½∩ óδ»«½¡Ñ¡¿∩ ߻ѵ¿á½∞¡δσ ºáñáτ óδºδ-
- óáΓ∞ ¿º æ¿ Σπ¡¬µ¿¿, ¡á»¿ßá¡¡δÑ ¡á ÇßßѼí½ÑαÑ, ¿¡«úñá óá¼ ¼«ªÑΓ
- »«ΓαÑí«óáΓ∞ß∩ óδºδóáΓ∞ ¿º ÇßßѼí½Ñαá Σπ¡¬µ¿¿, ¡á»¿ßá¡¡δÑ ¡á ∩ºδ¬Ñ
- æ¿. ĬáºδóáÑΓß∩, ¡á ßἫ¼ ñÑ½Ñ ½ÑúτÑ óδºóáΓ∞ Σπ¡¬µ¿ε Æπαí« æ¿ ¿º
- Σπ¡¬µ¿¿ Æπαí« ÇßßѼí½Ñαá, τѼ ¡á«í«α«Γ, »«ß¬«½∞¬π ß« ßΓ«α«¡δ Çß-
- ßѼí½Ñαá ¡Ñ ΓαÑíπÑΓß∩ «Γ߽Ѫ¿óáΓ∞ úαá¡¿µδ ßΓѬá. äáóá⌐ΓÑ αáßß¼«Γ-
- α¿¼ ¬αáΓ¬« ΓαÑí«óá¡¿∩ ñ½∩ ó맮óá Σπ¡¬µ¿⌐ Æπαí« æ¿ ¿º Æπαí« ÇßßѼ-
- í½Ñαá.
-
- 諼»«¡«ó¬á ß ¬«ñ«¼ ¿¡¿µ¿á½¿ºáµ¿¿ æ¿
- -----------------------------------------------------------------
-
- ò«α«Φ¿¼ »αá󿽫¼ ∩ó½∩ÑΓß∩ ó맮ó í¿í½¿«ΓÑτ¡δσ Σπ¡¬µ¿⌐ Æπαí«
- æ¿ Γ«½∞¬« ¿º ÇßßѼí½Ñαá ó »α«úαá¼¼áσ, ¬«Γ«αδÑ ¬«¼»«¡πεΓß∩ ß ¼«ñπ-
- ½Ñ¼ ¿¡¿µ¿á½¿ºáµ¿¿ æ¿ (¿ß»«½∞ºπ∩ Ñú« ó ¬áτÑßΓóÑ »Ñαó«ú« ¬«¼»«¡πÑ-
- ¼«ú« ¼«ñπ½∩). ¥Γ«Γ "¡áñѪ¡δ⌐" ¬½áßß ó¬½ετáÑΓ ó ßÑí∩ óßÑ »α«úαá¼-
- ¼δ, ¬«Γ«αδÑ ¬«¼»«¡πεΓß∩ ß »«¼«Θ∞ε ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ TC.EXE ¿½¿
- TCC.EXE, ¿ »α«úαá¼¼δ, ó ¬áτÑßΓóÑ »Ñαó«ú« ¬«¼»«¡πѼ«ú« Σá⌐½á ¬«Γ«-
- αδσ ¿ß»«½∞ºπÑΓß∩ Σá⌐½ C0T, C0S, C0C, C0M, C0L ¿½¿ C0H.
-
- é «íΘѼ ß½πτáÑ óá¼ ¡Ñ ß½ÑñπÑΓ óδºδóáΓ∞ í¿í½¿«ΓÑτ¡δÑ Σπ¡¬µ¿¿
- Æπαí« æ¿ ¿º »α«úαá¼¼, ¬«Γ«αδÑ ¡Ñ ¬«¼»«¡πεΓß∩ ß ¼«ñπ½Ñ¼ ¿¡¿µ¿á½¿-
- ºáµ¿¿ Æπαí« æ¿, Γᬠ¬á¬ ¡Ñ¬«Γ«αδÑ í¿í½¿«ΓÑτ¡δÑ Σπ¡¬µ¿¿ Æπαí« æ¿
- ¡Ñ íπñπΓ »αáó¿½∞¡« αáí«ΓáΓ∞, Ñß½¿ ¡Ñ óδ»«½¡∩½áß∞ ¬«¼»«¡«ó¬á ß ¬«-
- ñ«¼ ¿¡¿µ¿á½¿ºáµ¿¿. àß½¿ óδ ñÑ⌐ßΓó¿Γѽ∞¡« σ«Γ¿ΓÑ óδºδóáΓ∞ í¿í½¿«-
- ΓÑτ¡δÑ Σπ¡¬µ¿¿ Æπαí« æ¿ ¿º Γᬿσ »α«úαá¼¼, ¼δ »αÑñ½áúáѼ óá¼
- óºú½∩¡πΓ∞ ¡á ¬«ñ ¿¡¿µ¿á½¿ºáµ¿¿(Σá⌐½ C0.ASM ¡á ñ¿ßΓα¿íπΓ¿ó¡δσ ñ¿ß-
- ¬áσ Æπαí« æ¿) ¿ »α¿«íαÑßΓ¿ π Σ¿α¼δ Borland ¿ßσ«ñ¡δ⌐ ¬«ñ í¿í½¿«ΓÑ-
- ¬¿ ∩ºδ¬á æ¿, »«ß½Ñ τÑú« óδ ß¼«ªÑΓÑ «íÑß»Ñτ¿Γ∞ »αáó¿½∞¡πε ¿¡¿µ¿á-
- ½¿ºáµ¿ε ñ½∩ ¡πª¡δσ í¿í½¿«ΓÑτ¡δσ Σπ¡¬µ¿⌐. äαπú«⌐ 󫺼«ª¡δ⌐ »«ñσ«ñ
- ß«ßΓ«¿Γ »α«ßΓ« ó Γ«¼, τΓ«íδ ߬«¼»«¡«óáΓ∞ ¡πª¡πε í¿í½¿«ΓÑτ¡πε
- Σπ¡¬µ¿ε ß »α«úαá¼¼«⌐ ¡á ÇßßѼí½ÑαÑ, ¬«Γ«αá∩ ¡áºδóáÑΓß∩, ¡á»α¿¼Ñα,
- X.ASM, ¿ ¬«Γ«αá∩ »α«ßΓ« óδºδóáÑΓ ¬áªñπε Σπ¡¬µ¿ε. 諼»«¡«ó¬π ¼«ª¡«
- óδ»«½¡¿Γ∞ ß »«¼«Θ∞ε ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ Γ¿»á:
-
- tlink x,x,,cm.lib
-
- úñÑ m - φΓ« »Ñαóá∩ íπ¬óá ªÑ½áѼ«⌐ ¼«ñѽ¿ »á¼∩Γ¿ (t - ßóÑασ¼á½á∩,
- s - ¼á½á∩, c - ¬«¼»á¬Γ¡á∩ ¿ Γ.ñ.). àß½¿ TLINK óδñáßΓ ß««íΘÑ¡¿∩ «
- ¡Ñ«»αÑñѽѡ¡δσ ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ, Γ« ñá¡¡πε í¿í½¿«ΓÑτ¡πε Σπ¡¬µ¿ε
- íѺ ¬«¼»«¡«ó¬¿ ß ¬«ñ«¼ ¿¡¿µ¿á½¿ºáµ¿¿ æ¿ óδºδóáΓ∞ ¡Ñ½∞º∩.
-
-
- TASM2 #2-5/䫬 = 216 =
-
- Åα¿¼Ñτá¡¿Ñ: éδº«ó «»αÑñѽ∩Ѽδσ »«½∞º«óáΓѽѼ Σπ¡¬µ¿⌐
- æ¿, ¬«Γ«αδÑ ó ßó«ε «τÑαÑñ∞ óδºδóáεΓ í¿í½¿«ΓÑτ¡δÑ Σπ¡¬µ¿¿
- ∩ºδ¬á æ¿, »«»áñáεΓ ó Γπ ªÑ ¬áΓÑú«α¿ε, τΓ« ¿ ¡Ñ»«ßαÑñßΓóÑ¡-
- ¡δ⌐ ó맮ó í¿í½¿«ΓÑτ¡δσ Σπ¡¬µ¿⌐ æ¿. ÄΓßπΓßΓó¿Ñ ¬«ñá ¿¡¿µ¿á-
- ½¿ºáµ¿¿ æ¿ ¼«ªÑΓ óδºδóáΓ∞ «Φ¿í¬¿ ó ½εí«⌐ »α«úαá¼¼Ñ ÇßßѼí-
- ½Ñαá, ¬«Γ«αá∩ »α∩¼« ¿½¿ ¬«ßóÑ¡¡« «íαáΘáÑΓß∩ ¬ í¿í½¿«ΓÑτ¡δ¼
- Σπ¡¬µ¿∩¼ æ¿.
-
-
-
-
- TASM2 #2-5/䫬 = 217 =
-
-
- ôíÑñ¿ΓÑß∞ ó Γ«¼, τΓ« óδ »αáó¿½∞¡« ºáñ὿ ßÑú¼Ñ¡Γδ
- -----------------------------------------------------------------
-
- èᬠ¼δ πªÑ ú«ó«α¿½¿ αá¡ÑÑ, ¡Ñ«íσ«ñ¿¼« «íÑß»Ñτ¿óáΓ∞, τΓ«íδ
- Æπαí« æ¿ ¿ Æπαí« ÇßßѼí½Ñα ¿ß»«½∞º«ó὿ «ñ¡π ¿ Γπ ªÑ ¼«ñѽ∞ »á¼∩-
- Γ¿, ¿ τΓ«íδ ßÑú¼Ñ¡Γδ, ¬«Γ«αδÑ óδ ¿ß»«½∞ºπÑΓÑ ó Æπαí« ÇßßѼí½ÑαÑ,
- ß«ó»áñ὿ ß ΓѼ¿ ßÑú¼Ñ¡ΓἿ, ¬«Γ«αδÑ ¿ß»«½∞ºπÑΓ Æπαí« æ¿. ìπª¡«
- ¡Ñ ºáíδóáΓ∞ Γá¬ªÑ »«¼ÑΘáΓ∞ ñ¿αÑ¬Γ¿óπ EXTRN ñ½∩ ó¡ÑΦ¡¿σ ¿ñÑ¡Γ¿Σ¿-
- ¬áΓ«α«ó ó¡Ñ óßÑσ ßÑú¼Ñ¡Γ«ó ¿½¿ ó¡πΓα¿ »αáó¿½∞¡«ú« ßÑú¼Ñ¡Γá.
-
- éδ»«½¡Ñ¡¿Ñ ó맮óá
- -----------------------------------------------------------------
-
- é αáºñÑ½Ñ "é맮ó Σπ¡¬µ¿⌐ Æπαí« ÇßßѼí½Ñαá ¿º Æπαí« æ¿" ¼δ
- πªÑ πº¡á½¿ « Γ«¼, ¬á¬ Æπαí« æ¿ óδ»«½¡∩ÑΓ »«ñú«Γ«ó¬π ¬ ó맮óπ ¿
- ó맮ó Σπ¡¬µ¿¿. îδ ¬αáΓ¬« αáßß¼«Γαѽ¿ ¼Ñσá¡¿º¼ ó맮ó Σπ¡¬µ¿⌐ æ¿,
- ¡á φëà αáº ß Γ«τ¬¿ ºαÑ¡¿∩ ó맮óá Σπ¡¬µ¿⌐ Æπαí« æ¿ ¿º Æπαí« Çß-
- ßѼí½Ñαá.
-
- éßÑ, τΓ« ΓαÑíπÑΓß∩ «Γ óáß ñ½∩ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó ó Σπ¡¬µ¿ε
- Æπαí« æ¿, φΓ« ºá¡ÑßÑ¡¿Ñ ó ßΓѬ ßἫú« »αáó«ú« »áαá¼ÑΓαá »Ñαóδ¼,
- ºáΓѼ ß½ÑñπεΘÑú« »« »«α∩ñ¬π »áαá¼ÑΓαá ¿ Γᬠñá½ÑÑ, »«¬á ó ßΓѬÑ
- ¡Ñ «¬áªÑΓß∩ ßá¼δ⌐ ½Ñóδ⌐ »áαá¼ÑΓα. Å«ß½Ñ φΓ«ú« ¡πª¡« »α«ßΓ« óδ-
- ºóáΓ∞ Σπ¡¬µ¿ε. ìá»α¿¼Ñα, »α¿ »α«úαá¼¼¿α«óá¡¿¿ ¡á Æπαí« æ¿ ñ½∩ óδ-
- º«óá í¿í½¿«ΓÑτ¡«⌐ Σπ¡¬µ¿¿ Æπαí« æ¿ strcpy ñ½∩ ¬«»¿α«óá¡¿∩ ßΓ᫬¿
- SourceString ó ßΓ᫬π DestString ¼«ª¡« óóÑßΓ¿:
-
- strcpy(DestString, SourceString);
-
- ä½∩ óδ»«½¡Ñ¡¿∩ Γ«ú« ªÑ ó맮óá ¡á ÇßßѼí½ÑαÑ ¡πª¡« ¿ß»«½∞º«-
- óáΓ∞ ¿¡ßΓαπ¬µ¿¿:
-
- lea ax,SourceString ; »αáóδ⌐ »áαá¼ÑΓα
- push ax
- lea ax,DestString ; ½Ñóδ⌐ »áαá¼ÑΓα
- push ax
- call _strcpy ; ߬«»¿α«óáΓ∞ ßΓ᫬π
- add sp,4 ; «Γíα«ß¿Γ∞ »áαá¼ÑΓαδ
-
- Åα¿ ¡áßΓα«⌐¬Ñ SP »«ß½Ñ ó맮óá ¡Ñ ºáíδóá⌐ΓÑ «τ¿ΘáΓ∞ ßΓѬ «Γ
- »áαá¼ÑΓα«ó.
-
- àß½¿ óδ óδºδóáÑΓÑ Σπ¡¬µ¿ε æ¿, ¬«Γ«αá∩ ¿ß»«½∞ºπÑΓ ß«ú½áΦÑ¡¿∩
- Åá߬á½∩, ºá¡«ß¿ΓÑ ó ßΓѬ »áαá¼ÑΓαδ ß½Ñóá ¡á»αáó«. Å«ß½Ñ ó맮óá
- ¡áßΓαá¿óáΓ∞ π¬áºáΓѽ∞ ßΓѬá SP ¡Ñ ΓαÑíπÑΓß∩.
-
- TASM2 #2-5/䫬 = 218 =
-
-
- lea ax,DestString ; ½Ñóδ⌐ »áαá¼ÑΓα
- push ax
- lea ax,SourceString ; »αáóδ⌐ »áαá¼ÑΓα
- push ax
- call CTRCPY ; ߬«»¿α«óáΓ∞ ßΓ᫬π
-
- é »«ß½Ññ¡Ñ¼ ß½πτáÑ ¬«¡Ñτ¡« »«ñαáºπ¼ÑóáÑΓß∩, τΓ« óδ »ÑαѬ«¼-
- »¿½¿α«ó὿ Σπ¡¬µ¿ε strcpy ß »áαá¼ÑΓα«¼ -p, Γᬠ¬á¬ ó ßΓá¡ñáαΓ¡«⌐
- í¿í½¿«ΓÑτ¡«⌐ óÑαß¿¿ ñá¡¡«⌐ Σπ¡¬µ¿¿ ¿ß»«½∞ºπεΓß∩ ß«ú½áΦÑ¡¿∩ »« óδ-
- º«óπ, »α¿¡∩ΓδÑ ó æ¿, á ¡Ñ ó Åá߬á½Ñ. öπ¡¬µ¿¿ æ¿ ó«ºóαáΘáεΓ º¡áτÑ-
- ¡¿∩, ¬á¬ «»¿ßá¡« ó αáºñÑ½Ñ "髺óαáΓ º¡áτÑ¡¿⌐": 8- ¿ 16-í¿Γ«óδÑ
- º¡áτÑ¡¿∩ ó«ºóαáΘáεΓß∩ ó αÑú¿ßΓαÑ AX, á 32-í¿Γ«óδÑ º¡áτÑ¡¿∩ - ó
- AX:DX (»α¿ φΓ«¼ ßΓáαΦ¿Ñ 16 í¿Γ º¡áτÑ¡¿∩ ¡áσ«ñ∩Γß∩ ó αÑú¿ßΓαÑ DX).
- ç¡áτÑ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ó«ºóαáΘáεΓß∩ ó ST(0) (αÑú¿ßΓα óÑαΦ¿¡δ
- ßΓѬá ß«»α«µÑßß«αá 8087 ¿½¿ φ¼π½∩Γ«αá ß«»α«µÑßß«αá 8087, Ñß½¿ ¿ß-
- »«½∞ºπÑΓß∩ φ¼π½∩Γ«α «»Ñαᵿ⌐ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐). æΓαπ¬Γπαδ ó«ºó-
- αáΘáεΓß∩ αẽ¿τ¡δ¼ «íαẫ¼, ó ß««ΓóÑΓßΓó¿¿ ß ¿σ αẼÑα«¼.
-
- öπ¡¬µ¿¿ æ¿ ß«σαá¡∩εΓ ß½ÑñπεΘ¿Ñ αÑú¿ßΓαδ (¿ Γ«½∞¬« ¿σ): SI,
- DI, BP, DS, SS, SP ¿ CS. ÉÑú¿ßΓαδ AX, BX, CX, DX, ES ¿ Σ½áú¿ ¼«-
- úπΓ »α«¿ºó«½∞¡« ¿º¼Ñ¡∩Γ∞ß∩.
-
-
-
-
- TASM2 #2-5/䫬 = 219 =
-
- éδº«ó ¿º Æπαí« ÇßßѼí½Ñαá Σπ¡¬µ¿¿ Æπαí« æ¿
- -----------------------------------------------------------------
-
- Äñ¡¿¼ ¿º ß½πτáÑó, ¬«úñá óá¼ ¼«ªÑΓ »«ΓαÑí«óáΓ∞ß∩ óδºóáΓ∞ ¿º
- Æπαí« ÇßßѼí½Ñαá Σπ¡¬µ¿ε Æπαí« æ¿, ∩ó½∩ÑΓß∩ ¡Ñ«íσ«ñ¿¼«ßΓ∞ óδ»«½-
- ¡Ñ¡¿∩ ß½«ª¡δσ óδτ¿ß½Ñ¡¿⌐, »«ß¬«½∞¬π óδτ¿ß½Ñ¡¿∩ ú«αáºñ« »α«ΘÑ óδ-
- »«½¡∩Γ∞ ¡á æ¿, τѼ ¡á ÇßßѼí½Ñαá. Äß«íÑ¡¡« φΓ« «Γ¡«ß¿Γß∩ ¬ ß½πτáε
- ß¼ÑΦá¡¡δσ óδτ¿ß½Ñ¡¿⌐, úñÑ ¿ß»«½∞ºπεΓß∩ ¿ º¡áτÑ¡¿∩ ß »½áóáεΘÑ⌐
- Γ«τ¬«⌐ ¿ µÑ½δÑ τ¿ß½á. ïπτΦÑ ó«º½«ª¿Γ∞ Σπ¡¬µ¿¿ »« óδ»«½¡Ñ¡¿ε »αÑ-
- «íαẫóá¡¿∩ Γ¿»«ó ¿ αÑ὿ºáµ¿¿ áα¿Σ¼ÑΓ¿¬¿ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ¡á
- æ¿.
-
- äáóá⌐ΓÑ αáßß¼«Γα¿¼ »α¿¼Ñα »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ, ¬«Γ«αá∩
- óδºδóáÑΓ Σπ¡¬µ¿ε Æπαí« æ¿, τΓ«íδ óδ»«½¡¿Γ∞ óδτ¿ß½Ñ¡¿∩ ß »½áóáεΘÑ⌐
- Γ«τ¬«⌐. öá¬Γ¿τÑ߬¿ ó ñá¡¡«¼ »α¿¼ÑαÑ Σπ¡¬µ¿∩ Æπαí« æ¿ »ÑαÑñáÑΓ
- »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ µÑ½δσ τ¿ßѽ ñαπú«⌐ Σπ¡¬µ¿¿ Æπαí« ÇßßѼí½Ñαá,
- ¬«Γ«αá∩ ßπ¼¼¿απÑΓ τ¿ß½á ¿ ó ßó«ε «τÑαÑñ∞ óδºδóáÑΓ ñαπúπε Σπ¡¬µ¿ε
- Æπαí« æ¿ ñ½∩ óδ»«½¡Ñ¡¿∩ óδτ¿ß½Ñ¡¿⌐ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ (óδτ¿ß½Ñ¡¿Ñ
- ßαÑñ¡Ñú« º¡áτÑ¡¿∩).
-
- ùáßΓ∞ »α«úαá¼¼δ CALCAVG.C, αÑ὿º«óá¡¡á∩ ¡á æ¿, óδú½∩ñ¿Γ
- ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- extern float Average(int far * ValuePtr, int NumberOfValues);
- #define NUMBER_OF_TEST_VALUES 10
- int TestValues(NUMBER_OF_TEST_VALUES) = {
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
- };
-
- main()
- {
- printf("æαÑñ¡ÑÑ áα¿Σ¼ÑΓ¿τÑ߬«Ñ αáó¡«: %f\n",
- Average(TestValues, NUMBER_OF_TEST_VALUES));
- }
- float IntDivide(int Divedent, int Divisor)
- }
- return( (float) Divident / (float) Divisor );
- }
-
- á τáßΓ∞ »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ (AVERAGE.ASM) ¿¼ÑÑΓ ó¿ñ:
-
- ;
- ; éδºδóáѼá∩ ¿º æ¿ Σπ¡¬µ¿∩ ß ¼á½«⌐ ¼«ñѽ∞ε »á¼∩Γ¿,
- ; ¬«Γ«αá∩ ó«ºóαáΘáÑΓ ßαÑñ¡ÑÑ áα¿Σ¼ÑΓ¿τÑ߬«Ñ »«ß½Ññ«óá-
- ; Γѽ∞¡«ßΓ¿ µÑ½δσ τ¿ßѽ. ä½∩ óδ»«½¡Ñ¡¿∩ ºáóÑαΦáεΘÑú«
- ; ñѽѡ¿∩ óδºδóáÑΓ Σπ¡¬µ¿ε æ¿ IntDivide().
-
- TASM2 #2-5/䫬 = 220 =
-
- ;
- ; Åα«Γ«Γ¿» Σπ¡¬µ¿¿:
- ; extern float Average(int far * ValuePtr,
- ; int NumberOfValues);
- ;
- ; éó«ñ:
- ; int far * ValuePtr: ; ¼áßß¿ó º¡áτÑ¡¿⌐ ñ½∩
- ; ; óδτ¿ß½Ñ¡¿∩ ßαÑñ¡Ñú«
- ; int NumberOfValues: ; τ¿ß½« º¡áτÑ¡¿⌐ ñ½∩
- ; ; óδτ¿ß½Ñ¡¿∩ ßαÑñ¡Ñú«
- DOSSEG
- .MODEL SMALL
- EXTRN _IntDivide:PROC
- .CODE
- PUBLIC _Average
- _Average PROC
- push bp
- mov bp,sp
- les bx,[bp+4] ; ES:BX π¬áºδóáÑΓ ¡á
- ; ¼áßß¿ó º¡áτÑ¡¿⌐
- mov cx,[bp+8] ; τ¿ß½« º¡áτÑ¡¿⌐, ñ½∩
- ; ¬«Γ«αδσ ¡πª¡«
- ; óδτ¿ß½¿Γ∞ ßαÑñ¡ÑÑ
- mov ax,0
- AverageLoop:
- add ax,es:[bx] ; »α¿íáó¿Γ∞ ΓѬπΘÑÑ
- ; º¡áτÑ¡¿Ñ
- add ax,2 ; ßßδ½¬á ¡á ß½ÑñπεΘÑÑ
- ; º¡áτÑ¡¿Ñ
- loop AverageLoop
- push WORD PTR [bp+8] ; »«½πτ¿Γ∞ ß¡«óá τ¿ß½«
- ; º¡áτÑ¡¿⌐, »ÑαÑñá¡¡δσ
- ; ó Σπ¡¬µ¿ε IntDivide
- ; ó »αáó«¼ »áαá¼ÑΓαÑ
- push ax ; »ÑαÑñáΓ∞ ßπ¼¼π ó
- ; ½Ñó«¼ »áαá¼ÑΓαÑ
- call _IntDivide ; óδτ¿ß½¿Γ∞ ßαÑñ¡ÑÑ
- ; º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐
- ; Γ«τ¬«⌐
- add sp,4 ; «Γíα«ß¿Γ∞ »áαá¼ÑΓαδ
- pop bp
- ret ; ßαÑñ¡ÑÑ º¡áτÑ¡¿Ñ ó
- ; αÑú¿ßΓαÑ óÑαΦ¿¡δ
- ; ßΓѬá ß«»α«µÑßß«αá
- ; 8087
- _Average ENDP
-
- TASM2 #2-5/䫬 = 221 =
-
- END
-
- Äß¡«ó¡á∩ Σπ¡¬µ¿∩ ¡á ∩ºδ¬Ñ æ¿ »ÑαÑñáÑΓ π¬áºáΓѽ∞ ¡á ¼áßß¿ó
- µÑ½δσ τ¿ßѽ TestValues ¿ ñ½¿¡π ¼áßß¿óá ó Σπ¡¬µ¿ε ¡á ÇßßѼí½ÑαÑ
- Average. ¥Γá Σπ¡¬µ¿∩ óδτ¿ß½∩ÑΓ ßπ¼¼π µÑ½δσ τ¿ßѽ, á ºáΓѼ »ÑαÑñá-
- ÑΓ φΓπ ßπ¼¼π ¿ τ¿ß½« º¡áτÑ¡¿⌐ ó Σπ¡¬µ¿ε æ¿ IntDivide. öπ¡¬µ¿∩
- IntDivide »α¿ó«ñ¿Γ ßπ¼¼π ¿ τ¿ß½« º¡áτÑ¡¿⌐ ¬ Γ¿»π ß »½áóáεΘÑ⌐ Γ«τ-
- ¬«⌐ ¿ óδτ¿ß½∩ÑΓ ßαÑñ¡ÑÑ º¡áτÑ¡¿Ñ (ñѽá∩ φΓ« ß »«¼«Θ∞ε «ñ¡«⌐ ßΓα«-
- ¬¿ ¡á æ¿, ó Γ« óαѼ∩ ¬á¬ ¡á ÇßßѼí½ÑαÑ ñ½∩ φΓ«ú« »«ΓαÑí«óὫß∞ íδ
- ¡Ñ߬«½∞¬« ßΓ᫬). öπ¡¬µ¿∩ IntDivide ó«ºóαáΘáÑΓ ßαÑñ¡ÑÑ º¡áτÑ¡¿Ñ
- (Average) ó αÑú¿ßΓαÑ óÑαΦ¿¡δ ßΓѬá ß«»α«µÑßß«αá 8087 ¿ »ÑαÑñáÑΓ
- π»αáó½Ñ¡¿Ñ «íαáΓ¡« «ß¡«ó¡«⌐ Σπ¡¬µ¿¿.
-
- Åα«úαá¼¼δ CALCAVG.C ¿ AVERAGE.ASM ¼«ª¡« ߬«¼»¿½¿α«óáΓ∞ ¿
- ߬«¼»«¡«óáΓ∞ ó óδ»«½¡∩Ѽπε »α«úαá¼¼π CALCAVG.EXE ß »«¼«Θ∞ε ¬«¼á¡-
- ñδ:
-
- tcc calcavg average.asm
-
- ÄΓ¼ÑΓ¿¼, τΓ« Σπ¡¬µ¿∩ Average íπñÑΓ αáí«ΓáΓ∞ ¬á¬ ß ¼á½«⌐, Γá¬
- ¿ ß í«½∞Φ«⌐ ¼«ñѽ∞ε ñá¡¡δσ íѺ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ¿º¼Ñ¡Ñ¡¿∩ ÑÑ ¿ßσ«ñ-
- ¡«ú« ¬«ñá, Γᬠ¬á¬ ó« óßÑσ ¼«ñѽ∩σ »ÑαÑñáÑΓß∩ π¬áºáΓѽ∞ ñá½∞¡Ñú«
- Γ¿»á. ä½∩ »«ññÑ᪬¿ í«½∞Φ¿σ ¼«ñѽÑ⌐ ¬«ñá (ßóÑασí«½∞Φ«⌐, í«½∞Φ«⌐ ¿
- ßαÑñ¡Ñ⌐) »α¿Φ½«ß∞ íδ Γ«½∞¬« ¿º¼Ñ¡¿Γ∞ ß««ΓóÑΓßΓóπεΘπε ñ¿αÑ¬Γ¿óπ
- .MODEL.
-
-
-
-
-
- TASM2 #2-5/䫬 = 222 =
-
- â½áóá 8. ê¡ΓÑαΣÑ⌐ß Æπαí« ÇßßѼí½Ñαá ß Æπαí« Åá߬á½Ñ¼
- -----------------------------------------------------------------
-
- é Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«ΓαÑ¡δ αáßΦ¿αÑ¡¡δÑ ¿ ¼«Θ¡δÑ
- ßαÑñßΓóá, »«ºó«½∩εΘ¿Ñ óá¼ ñ«íáó½∩Γ∞ ¬«ñ ÇßßѼí½Ñαá ¬ »α«úαá¼¼á¼
- Æπαí« Åá߬á½∩. é ñá¡¡«⌐ ú½áóÑ ¼δ »«ñα«í¡« αáß߬áªÑ¼ óá¼ « Γ«¼,
- τΓ« ¡πª¡« º¡áΓ∞, τΓ«íδ »«½¡«ßΓ∞ε ¿ß»«½∞º«óáΓ∞ ñá¡¡δÑ ßαÑñßΓóá,
- »α¿óÑñѼ ¼¡«ªÑßΓó« »α¿¼Ñα«ó ¿ ñáñ¿¼ ¡Ñ¬«Γ«απε í«½ÑÑ ú½πí«¬πε ¿¡-
- Σ«α¼áµ¿ε.
-
- ä½∩ τÑú« ¡πª¡« ¿ß»«½∞º«óáΓ∞ Æπαí« ÇßßѼí½Ñα ß Æπαí«
- Åá߬á½Ñ¼? ü«½∞Φ¿¡ßΓó« »α«úαá¼¼, ¬«Γ«αδÑ óδ ºáσ«Γ¿ΓÑ ¡á»¿ßáΓ∞,
- ¼«ª¡« αÑ὿º«óáΓ∞ µÑ½¿¬«¼ ¡á Æπαí« Åá߬á½Ñ. é «Γ½¿τ¿Ñ «Γ í«½∞-
- Φ¿¡ßΓóá ñαπú¿σ ¬«¼»¿½∩Γ«α«ó Åá߬á½∩, Æπαí« Åá߬á½∞ »«ºó«½∩ÑΓ óá¼
- ß »«¼«Θ∞ε ¼áßß¿ó«ó Port[], Mem[], MemW[] ¿ MemL[] ¡Ñ»«ßαÑñßΓóÑ¡¡«
- «íαáΘáΓ∞ß∩ ¬« óßѼ αÑßπαßá¼ ¼áΦ¿¡δ, á ß »«¼«Θ∞ε »α«µÑñπα Intr() ¿
- MsDos() óδ ¼«ªÑΓÑ «íαáΘáΓ∞ß∩ ¬ íẫó«⌐ ß¿ßΓÑ¼Ñ óó«ñá-óδó«ñá
- (BIOS) ¿ «»Ñαᵿ«¡¡«⌐ ß¿ßΓÑ¼Ñ DOS.
-
- ä½∩ τÑú« ªÑ Γ«úñá ¼«ªÑΓ »«ΓαÑí«óáΓ∞ß∩ ¿ß»«½∞º«óáΓ∞ ß«ó¼ÑßΓ¡«
- ß Æπαí« Åá߬á½Ñ¼ ÇßßѼí½Ñα? ä½∩ φΓ«ú« ßπΘÑßΓóπεΓ ñóÑ óÑα«∩Γ¡δÑ
- »α¿τ¿¡δ: óδ»«½¡Ñ¡¿Ñ ¡Ñ¬«Γ«α«ú« ¡Ñí«½∞Φ«ú« τ¿ß½á «»Ñαᵿ⌐, ¬«Γ«αδÑ
- ¡Ñ»«ßαÑñßΓóÑ¡¡« ó Æπαí« Åá߬á½Ñ ¡Ññ«ßΓπ»¡δ, ¿ ¿ß»«½∞º«óá¡¿Ñ »αÑ¿-
- ¼πΘÑßΓó óδß«¬«⌐ ߬«α«ßΓ¿ αáí«Γδ, ¬«Γ«αδÑ ñáÑΓ ÇßßѼí½Ñα. (æá¼
- Æπαí« Åá߬á½∞ αáí«ΓáÑΓ ñ«ßΓáΓ«τ¡« íδßΓα«, »«Γ«¼π τΓ« «¡ ¡á»¿ßá¡
- ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá.) é ñá¡¡«⌐ ú½áóÑ ¼δ »«¬áªÑ¼ óá¼, ¬á¬ ¼«ª¡«
- ¿ß»«½∞º«óáΓ∞ ó Æπαí« Åá߬á½Ñ »αÑ¿¼πΘÑßΓóá ÇßßѼí½Ñαá.
-
- Åα¿¼Ñτá¡¿Ñ: àß½¿ ¡«¼Ñα óÑαß¿¿ ߻ѵ¿á½∞¡« ¡Ñ «ú«óáα¿óá-
- ÑΓß∩, Γ« óѺñÑ ñá½ÑÑ αÑτ∞ ¿ñÑΓ « Æπαí« Åá߬á½Ñ óÑαß¿¿ 4.0 ¿
- ßΓáαΦÑ.
-
-
-
-
- TASM2 #2-5/䫬 = 223 =
-
- æσÑ¼á »á¼∩Γ¿ Æπαí« Åá߬á½∩
- -----------------------------------------------------------------
-
- ÅÑαÑñ ΓѼ, ¬á¬ óδ ¡áτ¡ÑΓÑ »¿ßáΓ∞ ¬«ñ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ñ½∩
- αáí«Γδ ß Æπαí« Åá߬á½Ñ¼, ó᪡« »«¡∩Γ∞, ¬á¬ ¬«¼»¿½∩Γ«α αáß»«½áúáÑΓ
- ¿¡Σ«α¼áµ¿ε ó »á¼∩Γ¿. î«ñѽ∞ »á¼∩Γ¿ Æπαí« Åá߬á½∩ «íΩÑñ¿¡∩ÑΓ ¡Ñ¬«-
- Γ«αδÑ ßΓ«α«¡δ ßαÑñ¡Ñ⌐ ¿ í«½∞Φ«⌐ ¼«ñѽ¿ »á¼∩Γ¿, ¬«Γ«αδÑ «»¿ßδóá-
- ½¿ß∞ ó â½áóÑ 5. çñÑß∞ ¿¼ÑÑΓß∩ «ñ¿¡ ú½«íá½∞¡δÑ ßÑú¼Ñ¡Γ ñá¡¡δσ, ¬«-
- Γ«αδ⌐ »«ºó«½∩ÑΓ «αúá¡¿º«óáΓ∞ ñ«ßΓπ» ¬ ú½«íá½∞¡δ¼ »ÑαѼѡ¡δ¼ ¿ Γ¿-
- »¿º«óá¡¡δ¼ ¬«¡ßΓá¡Γá¼ τÑαѺ αÑú¿ßΓα DS. Äñ¡á¬« ¬áªñδ⌐ ¼«ñπ½∞ ¿¼Ñ-
- ÑΓ ßó«⌐ ßÑú¼Ñ¡Γ ¬«ñá, ¿ ñ¿¡á¼¿τÑ߬¿ αáß»αÑñѽ∩Ѽá∩ «í½áßΓ∞ »á¼∩Γ¿
- ¼«ªÑΓ πóѽ¿τ¿óáΓ∞ß∩ ñ« αẼÑαá óßÑ⌐ ñ«ßΓπ»¡«⌐ »á¼∩Γ¿.
-
- æσÑ¼á »á¼∩Γ¿ Æπαí« Åá߬á½∩ »«¬áºá¡á ¡á É¿ß. 8.1.
-
- î½áñΦ¿Ñ áñαÑßá »á¼∩Γ¿
- ----------------------------------------------------
- | ÅαÑΣ¿¬ß »α«úαá¼¼¡«ú« ßÑú¼Ñ¡Γá |
- | (256 íá⌐Γ) |
- |--------------------------------------------------|
- | |
- | â½áó¡δ⌐ ßÑú¼Ñ¡Γ ¬«ñá »α«úαá¼¼δ | îá¬ß¿¼á½∞-
- | | ¡δ⌐ αẼÑα
- | | ßÑú¼Ñ¡Γá
- | | ¬«ñá - 64è
- |--------------------------------------------------|
- | æÑú¼Ñ¡Γ ¬«ñá »«ß½Ññ¡Ñú« ¼«ñπ½∩ |
- |--------------------------------------------------|
- | |
- . .
- . .
- . .
- | |
- |--------------------------------------------------|
- | æÑú¼Ñ¡Γ ¬«ñá »Ñαó«ú« ¼«ñπ½∩ |
- |--------------------------------------------------|
- | |
- | æÑú¼Ñ¡Γ ¬«ñá í¿í½¿«ΓѬ¿ ¿ß»«½¡∩εΘÑ⌐ ß¿ßΓѼδ |
- | |
- |--------------------------------------------------|<-- DS
- | Æ¿»¿º«óá¡¡δÑ ¬«¡ßΓá¡Γδ |
- |- - - - - - - - - - - - - - - - - - - - - - - - - |<-- 諡ѵ
- | ⽫íá½∞¡δÑ ¬«¡ßΓá¡Γδ | Σá⌐½á .EXE
- |--------------------------------------------------|<-- SS
- | ^ | ÉẼÑα ßΓѬá
- | | | î¿¡¿¼π¼: 1è
-
- TASM2 #2-5/䫬 = 224 =
-
- | æΓѬ (πóѽ¿τ¿óáÑΓß∩ ó ßΓ«α«¡π ¼½áñΦ¿σ áñαÑß«ó) | Å« π¼«½τá-
- | | ¡¿ε: 16K
- | | îá¬ß¿¼π¼:
- | | 64è
- |--------------------------------------------------|
- | 信ἿτÑ߬¿ αáß»αÑñѽ∩Ѽá∩ «í½áßΓ∞ »á¼∩Γ¿ | ìÑ «úαá¡¿-
- | (πóѽ¿τ¿óáÑΓß∩ ó ßΓ«α«¡π ßΓáαΦ¿σ áñαÑß«ó) | τÑ¡á »«
- | | | αẼÑαπ
- | v |
- |--------------------------------------------------|<-- HeapPtr
- | ^ | îá¬ß¿¼á½∞¡δ⌐
- | | | αẼÑα ß»¿ß-
- | 滿߫¬ ßó«í«ñ¡δσ «í½áßΓÑ⌐ ñ¿¡á¼¿τÑ߬¿ | ¬á ßó«í«ñ¡δσ
- | αáß»αÑñѽ∩Ѽ«⌐ »á¼∩Γ¿ (πóѽ¿τ¿óáÑΓß∩ ó ßΓ«α«¡π | «í½áßΓÑ⌐
- | ¼½áñΦ¿σ áñαÑß«ó) |
- ----------------------------------------------------
- æΓáαΦ¿Ñ áñαÑßá »á¼∩Γ¿
-
- É¿ß. 8.1 æσÑ¼á »á¼∩Γ¿ »α«úαá¼¼δ Æπαí« Åá߬á½∩ óÑαß¿¿ 5.0.
-
-
-
-
- TASM2 #2-5/䫬 = 225 =
-
-
- ÅαÑΣ¿¬ß »α«úαá¼¼¡«ú« ßÑú¼Ñ¡Γá
- -----------------------------------------------------------------
-
- ÅαÑΣ¿¬ß »α«úαá¼¼¡«ú« ßÑú¼Ñ¡Γá (PSP) »αÑñßΓáó½∩ÑΓ ß«í«⌐ «í-
- ½áßΓ∞ »á¼∩Γ¿ αẼÑα«¼ ó 256 íá⌐Γ, ß«ºñáóáѼπε «»Ñαᵿ«¡¡«⌐ ß¿ßΓÑ-
- ¼«⌐ MS-DOS »α¿ ºáúαπº¬Ñ »α«úαá¼¼δ. èα«¼Ñ óßÑú« »α«τÑú« «¡á ß«ñÑα-
- ª¿Γ ¿¡Σ«α¼áµ¿ε « »áαá¼ÑΓαáσ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿, ¿ß»«½∞ºπѼ«⌐ ñ½∩
- ó맮óá »α«úαá¼¼δ, «íΩÑ¼Ñ ñ«ßΓπ»¡«⌐ »á¼∩Γ¿ ¿ «»Ñαᵿ«¡¡«⌐ ßαÑñÑ
- DOS (ß»¿ß¬Ñ ¿ß»«½∞ºπѼδσ DOS ßΓ᫬«óδσ »ÑαѼѡ¡δσ).
-
- é óÑαß¿¿ 3.0 Æπαí« Åá߬á½∩ áñαÑß ßÑú¼Ñ¡Γá ñ½∩ PSP íδ½ Γ«Γ
- ªÑ, τΓ« ¿ π óßÑú« «ßΓá½∞¡«ú« ¬«ñá. ÆÑ»Ñα∞ φΓ« ¡Ñ Γá¬. é Æπαí«
- Åá߬á½Ñ óÑαß¿¿ 4.0 ¿ ßΓáαΦÑ «ß¡«ó¡á∩ »α«úαá¼¼á, ¿ß»«½∞ºπѼδÑ Ñ⌐
- ¼«ñ㫨 ¿ í¿í½¿«ΓÑ¬á ¿ß»«½¡∩εΘÑ⌐ ß¿ßΓÑ¼δ ºá¡¿¼áεΓ αẽ¿τ¡δÑ ßÑú-
- ¼Ñ¡Γδ. Æπαí« Åá߬á½∞, Γᬿ¼ «íαẫ¼, σαá¡¿Γ áñαÑß ßÑú¼Ñ¡Γá PSP ó
- »αÑñ«»αÑñѽѡ¡«⌐ ú½«íá½∞¡«⌐ »ÑαѼѡ¡«⌐ ß ¿¼Ñ¡Ñ¼ PrefixSeg, í½áú«-
- ñáα∩ τѼπ óδ ¼«ªÑΓÑ »«½πτ¿Γ∞ ñ«ßΓπ» ¬ ¿¡Σ«α¼áµ¿¿ ó PSP.
-
-
- æÑú¼Ñ¡Γδ ¬«ñá
- -----------------------------------------------------------------
-
- èáªñá∩ »α«úαá¼¼á Æπαí« Åá߬á½∩ ß«ñÑαª¿Γ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ñóá
- ßÑú¼Ñ¡Γá ¬«ñá: ó «ñ¡«¼ ¿º ¡¿σ ß«ñÑনΓß∩ ¬«ñ «ß¡«ó¡«⌐ »α«úαá¼¼δ,
- á ó ñαπú«¼ - í¿í½¿«ΓÑ¬á ¿ß»«½¡∩εΘÑ⌐ ß¿ßΓѼδ (run-time library).
- èα«¼Ñ Γ«ú«, »«ñ»α«úαá¼¼δ ¬áªñ«ú« ¼«ñπ½∩ ¡áσ«ñ∩Γß∩ ó «Γñѽ∞¡«¼
- ßÑú¼Ñ¡ΓÑ ¬«ñá. Æá¬ ¬á¬ ¬áªñδ⌐ ßÑú¼Ñ¡Γ ¬«ñá ¼«ªÑΓ ¿¼ÑΓ∞ αẼÑα ñ«
- 64è, óáΦá »α«úαá¼¼á ¼«ªÑΓ ºá¡¿¼áΓ∞ Γᬫ⌐ «íΩѼ, ¬á¬«⌐ ñ½∩ ¡ÑÑ
- ΓαÑíπÑΓß∩ (Ñß½¿, ¬«¡Ñτ¡«, Γᬫ⌐ «íΩѼ »á¼∩Γ¿ ¡á óáΦѼ ¬«¼»∞εΓÑαÑ
- ñ«ßΓπ»Ñ¡). Åα«úαá¼¼¿ßΓδ, ¬«Γ«αδÑ αá¡ÑÑ ¿ß»«½∞º«ó὿ «óÑα½Ñ¿, ¼«-
- úπΓ ΓÑ»Ñα∞ ñ½∩ í«½ÑÑ íδßΓα«ú« óδ»«½¡Ñ¡¿∩ úÑ¡Ñα¿α«óáΓ∞ »α«úαá¼¼δ,
- »αÑóδΦáεΘ¿Ñ 64è, ¿ ñ½∩ í«½ÑÑ íδßΓα«ú« óδ»«½¡Ñ¡¿∩ σαá¡¿Γ∞ óÑß∞ ¬«ñ
- ó »á¼∩Γ¿ (ó óÑαß¿∩σ Æπαí« Åá߬á½∩ 5.0 ¿ 5.5 ó¡«ó∞ óóÑñÑ¡á 󫺼«ª-
- ¡«ßΓ∞ ¿ß»«½∞º«óá¡¿∩ «óÑα½ÑÑó, τΓ« ßó∩ºá¡« ß ¡ÑσóáΓ¬«⌐ »á¼∩Γ¿,
- 󫺡¿¬áεΘÑ⌐ »α¿ αáºαáí«Γ¬Ñ í«½∞Φ¿σ »α«úαá¼¼). æ Γ«τ¬¿ ºαÑ¡¿∩ Æπα-
- í« ÇßßѼí½Ñαá ßÑú¼Ñ¡Γ ¬«ñá, ß ¬«Γ«αδ¼ ¬«¼»«¡πÑΓß∩ ¼«ñπ½∞ ¡á ∩ºδ¬Ñ
- ÇßßѼí½Ñαá, ¡áºδóáÑΓß∩ CODE ¿½¿ CSEG.
-
-
-
-
- TASM2 #2-5/䫬 = 226 =
-
-
- æÑú¼Ñ¡Γ ú½«íá½∞¡δσ ñá¡¡δσ
- -----------------------------------------------------------------
-
- æÑú¼Ñ¡Γ ú½«íá½∞¡δσ ñá¡¡δσ Æπαí« Åá߬á½∩ ß½ÑñπÑΓ ºá ßÑú¼Ñ¡Γ«¼
- ¬«ñá í¿í½¿«ΓѬ¿ ¿ß»«½¡∩εΘÑ⌐ ß¿ßΓѼδ. Ä¡ ß«ñÑαª¿Γ ñ« 64è ¿¡¿µ¿á½¿-
- º¿α«óá¡¡δσ ¿ ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δσ ñá¡¡δσ - Γ¿»¿º«óá¡¡δσ ¬«¡ßΓá¡Γ
- ¿ ú½«íá½∞¡δσ »ÑαѼѡ¡δσ. èᬠ¿ ó Æπαí« Åá߬á½Ñ 3.0, Γ¿»¿º«óá¡¡δÑ
- ¬«¡ßΓá¡Γδ ¡á ßἫ¼ ñÑ½Ñ ó«óßÑ ¡Ñ ∩ó½∩εΓß∩ ¬«¡ßΓá¡ΓἿ, á »αÑñß-
- Γáó½∩εΓ ß«í«⌐ »ÑαѼѡ¡δÑ, ¿¼ÑεΘ¿Ñ »αÑñ«»αÑñѽѡ¡«Ñ º¡áτÑ¡¿Ñ »α¿
- ºáúαπº¬Ñ »α«úαá¼¼δ. ì« ó «Γ½¿τ¿Ñ «Γ Æπαí« Åá߬á½∩ 3.0, Æπαí« Åáß-
- ¬á½∞ óÑαß¿¿ 4.0 ¡Ñ »«¼ÑΘáÑΓ Γ¿»¿º«óá¡¡δÑ ¬«¡ßΓá¡Γδ ó ßÑú¼Ñ¡Γ ¬«-
- ñá. é¼ÑßΓ« φΓ«ú« «¡ αẼÑΘáÑΓ ¿σ ó ßÑú¼Ñ¡ΓÑ ú½«íá½∞¡δσ ñá¡¡δσ,
- úñÑ ¬ ¡¿¼ «íαáΘáΓ∞ß∩ ¼«ª¡« ñáªÑ íδßΓαÑÑ, τѼ φΓ« ¼«ú ñѽáΓ∞ Æπαí«
- Åá߬á½∞ 3.0. æÑú¼Ñ¡Γ ú½«íá½∞¡δσ ñá¡¡δ¼ ¡áºδóáÑΓß∩ DATA ¿½¿ DSEG
- (»« φΓ¿¼ ¿¼Ñ¡á¼ ¬ ¡Ñ¼π ¼«ª¡« «íαáΘáΓ∞ß∩ ¿º Æπαí« ÇßßѼí½Ñαá).
-
-
- æΓѬ
- -----------------------------------------------------------------
-
- é Æπαí« Åá߬á½Ñ óÑαß¿¿ 4.0 ¿ ßΓáαΦÑ ßÑú¼Ñ¡Γ ú½«íá½∞¡δσ ñá¡-
- ¡δσ ¡áσ«ñ¿Γß∩ ¡áñ ßΓѬ«¼. çá¼ÑΓ¿¼, τΓ« Γá¬«Ñ αáß»«½«ªÑ¡¿Ñ «Γ½¿τá-
- ÑΓß∩ «Γ »α¿¡∩Γ«ú« ó Æπαí« Åá߬á½Ñ 3.0. æΓѬ ¿ ñ¿¡á¼¿τÑ߬¿ αáß»αÑ-
- ñѽ∩Ѽá∩ «í½áßΓ∞ »á¼∩Γ¿ ¡Ñ αáßΓπΓ ¡áóßΓαÑτπ ñαπú ñαπúπ. ä½∩ ßΓѬá
- óδñѽ∩ÑΓß∩ Σ¿¬ß¿α«óá¡¡δ⌐ «íΩѼ »á¼∩Γ¿. Å« π¼«½τá¡¿ε φΓ« 16è, τΓ«
- 󻫽¡Ñ ñ«ßΓáΓ«τ¡« ñ½∩ í«½∞Φ¿¡ßΓóá »α«úαá¼¼. Äñ¡á¬« óδ ¼«ªÑΓÑ ºá-
- ñáΓ∞ ¼¿¡¿¼á½∞¡δ⌐ αẼÑα ßΓѬá 1è (ñ½∩ ¬«α«Γ¬¿σ »α«úαá¼¼) ¿½¿ ¼á¬-
- ß¿¼á½∞¡δ⌐ 64è (ñ½∩ »α«úαá¼¼, ¿¡ΓÑ¡ß¿ó¡« ¿ß»«½∞ºπεΘ¿σ αѬπαß¿ε).
- ÉẼÑα ßΓÑ¬á ¿ ñ¿¡á¼¿τÑ߬¿ αáß»αÑñѽ∩Ѽ«⌐ «í½áßΓ¿ »á¼∩Γ¿ ¼«ª¡«
- óδíαáΓ∞ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ ¬«¼»¿½∩Γ«αá $M.
-
- é í«½∞Φ¿¡ßΓóÑ »α«úαá¼¼ ñ½∩ »α«µÑßß«α«ó 80σ86 π¬áºáΓѽ∞ ßΓѬá
- ¡áτ¿¡áÑΓß∩ ß óÑαΦ¿¡δ ßΓÑ¬á ¿ ¿º¼Ñ¡∩ÑΓ º¡áτÑ¡¿Ñ ó ßΓ«α«¡π ¼½áñΦ¿σ
- áñαÑß«ó. Åα¿ ó맮óÑ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ Æπαí« Åá߬á½∞ «íδτ¡«
- óδ»«½¡∩ÑΓ »α«óÑα¬π, τΓ«íδ πíÑñ¿Γ∞ß∩, τΓ« ßΓѬ ¡Ñ ¿ßτÑα»á¡. ¥Γπ
- »α«óÑα¬π ¼«ª¡« "ó䬽ετ¿Γ∞" ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ ¬«¼»¿½∩Γ«αá {$S-}.
-
-
-
-
- TASM2 #2-5/䫬 = 227 =
-
-
- 信ἿτÑ߬¿ αáß»αÑñѽ∩Ѽá∩ «í½áßΓ∞ »á¼∩Γ¿
- -----------------------------------------------------------------
-
- é ßΓáαΦ¿σ áñαÑßáσ »á¼∩Γ¿ Æπαí« Åá߬á½∩ ¡áσ«ñ¿Γß∩ ñ¿¡á¼¿τÑ߬¿
- αáß»αÑñѽ∩Ѽá∩ «í½áßΓ∞ »á¼∩Γ¿ (heap). Å« π¼«½τá¡¿ε ñ¿¡á¼¿τÑ߬¿
- αáß»αÑñѽ∩Ѽá∩ «í½áßΓ∞ ºá¡¿¼áÑΓ óßε »á¼∩Γ∞, ¡Ñ ¿ß»«½∞º«óá¡¡πε ñ½∩
- ßÑú¼Ñ¡Γ«ó ¬«ñá, ñá¡¡δσ ¿ ßΓѬá. Äñ¡á¬« ñ½∩ «úαá¡¿τÑ¡¿∩ αẼÑαá
- ñ¿¡á¼¿τÑ߬¿ αáß»αÑñѽ∩Ѽ«⌐ «í½áßΓ¿ »á¼∩Γ¿ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ¿-
- αÑ¬Γ¿óπ $M (ÑÑ ¼«ª¡« Γá¬ªÑ ¿ß»«½∞º«óáΓ∞ ñ½∩ »αÑñ«ΓóαáΘÑ¡¿∩ óδ»«½-
- ¡Ñ¡¿∩ »α«úαá¼¼δ, Ñß½¿ ¡Ñ ñ«ßΓπ»Ñ¡ ¼¿¡¿¼á½∞¡δ⌐ «íΩѼ ñ¿¡á¼¿τÑ߬¿
- αáß»αÑñѽ∩Ѽ«⌐ «í½áßΓ¿ »á¼∩Γ¿).
-
- Åá¼∩Γ∞ ó ñ¿¡á¼¿τÑ߬¿ αáß»αÑñѽ∩Ѽ«⌐ «í½áßΓ¿ óδñѽ∩ÑΓß∩ ñ¿-
- ¡á¼¿τÑ߬¿ »α¿ «íαáΘÑ¡¿¿ ¬ »α«µÑñπαá¼ New() ¿ GetMem(), ¡áτ¿-
- ¡á∩ ß ¡¿ª¡Ñ⌐ ÑÑ úαá¡¿µδ ("ñ¡«"). è«úñá ¿ß»«½∞ºπεΓß∩ »α«µÑñπαδ
- Dispose ¿ FreeMem, Æπαí« Åá߬á½∞ óÑαß¿¿ 4.0 ¿ óδΦÑ «Γ߽Ѫ¿óáÑΓ
- ßó«í«ñ¡δÑ «í½áßΓ¿, «íαáºπεΘ¿Ñß∩ ó ñ¿¡á¼¿τÑ߬¿ αáß»αÑñѽ∩Ѽ«⌐ «í-
- ½áßΓ¿ »á¼∩Γ¿, ß »«¼«Θ∞ε ߻ѵ¿á½∞¡«⌐ ßΓαπ¬Γπαδ ñá¡¡δσ, ¬«Γ«αá∩ ¡á-
- ºδóáÑΓß∩ ß»¿ß¬«¼ ßó«í«ñ¡δσ «í½áßΓÑ⌐ (free list). 滿߫¬ ßó«í«ñ¡δσ
- «í½áßΓÑ⌐, αẼÑα ¬«Γ«α«ú« ¡Ñ ¼«ªÑΓ »αÑóδΦáΓ∞ 64è, πóѽ¿τ¿óáÑΓß∩ ó
- ßΓ«α«¡π ¼½áñΦ¿σ áñαÑß«ó, ¡áτ¿¡á∩ ß "óÑαΦ¿¡δ" ñ¿¡á¼¿τÑ߬¿ αáß»αÑ-
- ñѽ∩Ѽ«⌐ «í½áßΓ¿ »á¼∩Γ¿.
-
-
- êß»«½∞º«óá¡¿Ñ αÑú¿ßΓα«ó ó Æπαí« Åá߬á½Ñ
- -----------------------------------------------------------------
-
- Æπαí« Åá߬á½∞ ¡á½áúáÑΓ ¡á ¿ß»«½∞º«óá¡¿Ñ αÑú¿ßΓα«ó ¼¿¡¿¼á½∞-
- ¡δÑ «úαá¡¿τÑ¡¿∩. Åα¿ ó맮óÑ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ ñ«½ª¡δ ß«σαá-
- ¡∩Γ∞ß∩ (¿ ó«ßßΓá¡áó½¿óáΓ∞ß∩) º¡áτÑ¡¿∩ Γ«½∞¬« ΓαÑσ αÑú¿ßΓα«ó: αÑ-
- ú¿ßΓαá ßÑú¼Ñ¡Γá ßΓѬá (SS), αÑú¿ßΓαá ßÑú¼Ñ¡Γá ñá¡¡δσ (DS) ¿ π¬á-
- ºáΓѽ∩ íáºδ (BP). ÉÑú¿ßΓα DS π¬áºδóáÑΓ ¡á ú½«íá½∞¡δ⌐ ßÑú¼Ñ¡Γ ñá¡-
- ¡δσ (ß ¿¼Ñ¡Ñ¼ DATA), á SS - ¡á ßÑú¼Ñ¡Γ ßΓѬá. ÉÑú¿ßΓα BP ¿ß»«½∞-
- ºπÑΓß∩ ó ¬áªñ«⌐ »α«µÑñπαÑ ¿ Σπ¡¬µ¿¿ ñ½∩ ßß佬¿ ¡á ºá»¿ß∞ á¬Γ¿óá-
- µ¿¿ (activation record), ¬«Γ«αá∩ »αÑñßΓáó½∩ÑΓ ß«í«⌐ »α«ßΓαá¡ßΓó«
- ó ßΓѬÑ, ¿ß»«½∞ºπѼ«Ñ ñ½∩ »áαá¼ÑΓα«ó, ½«¬á½∞¡δσ »ÑαѼѡ¡δσ ¿ óαÑ-
- ¼Ñ¡¡«⌐ αáí«τÑ⌐ »á¼∩Γ¿. éßÑ »«ñ»α«úαá¼¼δ »ÑαÑñ óδσ«ñ«¼ ñ«½ª¡δ óδ-
- αáó¡¿óáΓ∞ π¬áºáΓѽ∞ ßΓѬá (SP), Γ« ÑßΓ∞ «τ¿ΘáΓ∞ Ñú« «Γ »áαá¼ÑΓ-
- α«ó.
-
- ü½¿ª¡¿⌐ ¿½¿ ñá½∞¡¿⌐?
- -----------------------------------------------------------------
-
- ū߬«½∞¬π »α«úαá¼¼á Æπαí« Åá߬á½∩ ß«ñÑαª¿Γ ¡Ñ߬«½∞¬« ßÑú¼Ñ¡-
- Γ«ó ¬«ñá, ñ½∩ «íαáΘÑ¡¿∩ ¬ »α«µÑñπαá¼ ¿ Σπ¡¬µ¿∩¼ «¡á ¿ß»«½∞ºπÑΓ
-
- TASM2 #2-5/䫬 = 228 =
-
- "ß¼Ñß∞" ó맮ó«ó í½¿ª¡Ñú« (NEAR) ¿ ñá½∞¡Ñú« (FAR) Γ¿»«ó. é τѼ
- αạ¿µá? ü½¿ª¡¿⌐ óδº«ó ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ Γ«½∞¬« ñ½∩ «íαáΘÑ¡¿∩
- ¬ »«ñ»α«úαá¼¼Ñ, ¬«Γ«αá∩ ¡áσ«ñ¿Γß∩ ó Γ«¼ ªÑ ßÑú¼Ñ¡ΓÑ, τΓ« ¿ ßÑú-
- ¼Ñ¡Γ, «Γ¬πñá ñѽáÑΓß∩ ó맮ó. æ »«¼«Θ∞ε ªÑ ñá½∞¡Ñú« ó맮óá ¼«ª¡«
- «íαáΘáΓ∞ß∩ ¬ »«ñ»α«úαá¼¼Ñ, ¬«Γ«αá∩ ¡áσ«ñ¿Γß∩ ó ½εí«¼ ¼ÑßΓÑ »á¼∩-
- Γ¿. Äñ¡á¬« φΓ« ¡Ñ »α«σ«ñ¿Γ ñáα«¼: ñá½∞¡¿Ñ ó맮óδ ºá¡¿¼áεΓ í«½∞ΦÑ
- ¼ÑßΓá ¿ óδ»«½¡∩εΓß∩ ¼Ññ½Ñ¡¡ÑÑ, τѼ í½¿ª¡¿Ñ.
-
- èáªñá∩ »«ñ»α«úαá¼¼á »α«úαá¼¼δ Æπαí« Åá߬á½∩ ñ«½ª¡á íδΓ∞ ¡á-
- »¿ßá¡á (αáºαáí«Γá¡á óἿ ¿½¿ ¿ß»«½∞º«óá¡á ¬«¼»¿½∩Γ«α«¼) Γᬿ¼ «í-
- αẫ¼, τΓ«íδ «¡á óδºδóá½áß∞ Γ«½∞¬« «ñ¡¿¼ ¿º φΓ¿σ ñóπσ ß»«ß«í«ó.
- èᬫ⌐ ¿º ¡¿σ ß½ÑñπÑΓ óδíαáΓ∞? Å«ñ»α«úαá¼¼δ, «»¿ßá¡¡δÑ ó ¿¡ΓÑαΣÑ⌐-
- ß¡«⌐ τáßΓ¿ ¼«ñπ½∩, óßÑúñá ñ«½ª¡δ ¿¼ÑΓ∞ ñá½∞¡¿⌐ Γ¿», Γᬠ¬á¬ «¡¿
- ¼«úπΓ óδºδóáΓ∞ß∩ ¿º ñαπú¿σ ¼«ñπ½Ñ⌐. Äñ¡á¬« »«ñ»α«úαá¼¼δ, «»¿ßá¡-
- ¡δÑ ó «ß¡«ó¡«⌐ »α«úαá¼¼Ñ ¿½¿ «íΩ∩ó½Ñ¡¡δÑ Γ«½∞¬« ó αáºñÑ½Ñ αÑ὿-
- ºáµ¿¿ ¼«ñπ½∩ ¿¼ÑεΓ «íδτ¡« í½¿ª¡¿⌐ Γ¿». (ïεí«⌐ »«ñ»α«úαá¼¼Ñ ¼«ª¡«
- »α¿¡πñ¿Γѽ∞¡« ¡áº¡áτ¿Γ∞ ñá½∞¡¿⌐ Γ¿» ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ ¬«¼»¿½∩-
- Γ«αá {$F+}.)
-
- Åα¿ αáºαáí«Γ¬Ñ »α«úαá¼¼ ¡á ÇßßѼí½ÑαÑ, óºá¿¼«ñÑ⌐ßΓóπεΘ¿σ ß
- Æπαí« Åá߬á½Ñ¼, óδ ñ«½ª¡δ πíÑñ¿Γ∞ß∩, τΓ« óáΦá »α«úαá¼¼á ¿¼ÑÑΓ
- »αáó¿½∞¡δ⌐ Γ¿» ó맮óá. Æπαí« Åác¬á½∞ ¡Ñ ß««íΘ¿Γ «í «Φ¿í¬Ñ, Ñß½¿
- óδ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá «íΩ∩ó¿ΓÑ »α«µÑñπαπ (PROC), ¬á¬ í½¿ª¡εε, á
- ß««ΓóÑΓßΓóπεΘÑÑ «»¿ßá¡¿Ñ ó¡ÑΦ¡Ñ⌐ »α«µÑñπαδ αáß»«½«ªÑ¡« Γᬿ¼ «í-
- αẫ¼, τΓ« «¡á ñ«½ª¡á ¿¼ÑΓ∞ ñá½∞¡¿⌐ Γ¿».
-
-
-
-
- TASM2 #2-5/䫬 = 229 =
-
- æ«ó¼ÑßΓ¡«Ñ ¿ß»«½∞º«óá¡¿Ñ ñá¡¡δσ c Æπαí« Åá߬á½Ñ¼ //
-
- ä¿αÑ¬Γ¿óá ¬«¼»¿½∩Γ«αá $L ¿ ó¡ÑΦ¡¿Ñ »«ñ»α«úαá¼¼δ
- -----------------------------------------------------------------
-
- äóá ¬½ετÑóδσ ¼«¼Ñ¡Γá »α¿ ¿ß»«½∞º«óá¡¿¿ Æπαí« ÇßßѼí½Ñαá ß
- Æπαí« Åá߬á½Ñ¼ - φΓ« ñ¿αÑ¬Γ¿óá ¬«¼»¿½∩Γ«αá (Æπαí« Åá߬á½∩) {$L} ¿
- «»¿ßá¡¿Ñ ó¡ÑΦ¡Ñ⌐ (external) »«ñ»α«úαá¼¼δ. ä¿αÑ¬Γ¿óá {$L
- MYFILE.OBJ} »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« Æπαí« Åá߬á½∞ íπñÑΓ ¿ß¬áΓ∞ Σá⌐½
- «íΩÑ¬Γ¡δ⌐ MYFILE.OBJ (Σá⌐½ ó ßΓá¡ñáαΓ¡«¼ »α¿ú«ñ¡«¼ ñ½∩ ¬«¼»«¡«ó¬¿
- Σ«α¼áΓÑ MS-DOS) ¿ ¬«¼»«¡«óáΓ∞ Ñú« ß óáΦÑ⌐ »α«úαá¼¼«⌐ Æπαí« Åá߬á-
- ½∩. àß½¿ π Σá⌐½á ó ñ¿αÑ¬Γ¿óÑ {$L} αáßΦ¿αÑ¡¿Ñ ¡Ñ π¬áºδóáÑΓß∩, Γ«
- »«ñαáºπ¼ÑóáÑΓß∩ αáßΦ¿αÑ¡¿Ñ .OBJ.
-
- èáªñá∩ »α«µÑñπαá ¿½¿ Σπ¡¬µ¿∩ Æπαí« ÇßßѼí½Ñαá, ¬«Γ«απε óδ
- σ«Γ¿ΓÑ ßñѽáΓ∞ ñ«ßΓπ»¡«⌐ ó »α«úαá¼¼Ñ Æπαí« Åá߬á½∩, ñ«½ª¡á «íΩ∩ó-
- ½∩Γ∞ß∩, ¬á¬ ¿ñÑ¡Γ¿Σ¿¬áΓ«α PUBLIC, ¿ Ñ⌐ ñ«½ª¡« ß««ΓóÑΓßΓó«óáΓ∞ ó
- »α«úαá¼¼Ñ «»¿ßá¡¿Ñ external (ó¡ÑΦ¡∩∩). æ¿¡Γá¬ß¿ß «»¿ßá¡¿∩ ó¡ÑΦ¡Ñ⌐
- »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ ó Æπαí« Åá߬á½Ñ á¡á½«ú¿τÑ¡ «»ÑαѪáεΘѼπ
- (forward) «»¿ßá¡¿ε:
-
- procedure AsmProc(a : integer; b : real); external;
- function AsmFunc(c : word; d : byte); external;
-
- ¥Γ¿ «»¿ßá¡¿∩ ñ«½ª¡δ ß««ΓóÑΓßΓó«óáΓ∞ ß½ÑñπεΘ¿¼ «»¿ßá¡¿∩¼ ó
- »α«úαá¼¼Ñ Æπαí« ÇßßѼí½Ñαá:
-
- CODE SEGMENT BYTE PUBLIC
- AsmProc PROC NEAR
- PUBLIC AsmProc
- .
- .
- .
- AsmProc ENDP
- AsmFunc PROC FAR
- PUBLIC Bar
- .
- .
- .
- AsmFunc ENDP
- CODE ENDS
-
- Ä»¿ßá¡¿Ñ ó¡ÑΦ¡Ñ⌐ »α«µÑñπαδ Æπαí« Åá߬á½∩ ñ«½ª¡« ¡áσ«ñ¿Γ∞ß∩
- ¡á ßἫ¼ ó¡ÑΦ¡Ñ¼ πα«ó¡Ñ »α«úαá¼¼δ ¿½¿ ¼«ñπ½∩, Γ« ÑßΓ∞ «¡« ¡Ñ
- ñ«½ª¡« íδΓ∞ 󽫪ѡ¡δ¼ »« «Γ¡«ΦÑ¡¿ε ¬ ñαπú«¼π «»¿ßá¡¿ε »α«µÑñπαδ
- ¿½¿ Σπ¡¬µ¿¿. Å«»δΓ¬á «»¿ßáΓ∞ »α«µÑñπαπ ¿½¿ Σπ¡¬µ¿ε ¡á ½εí«¼ ñαπ-
-
- TASM2 #2-5/䫬 = 230 =
-
- ú«¼ πα«ó¡Ñ »α¿óÑñÑΓ ¬ «Φ¿í¬Ñ φΓá»á ¬«¼»¿½∩µ¿¿.
-
- Æπαí« Åá߬á½∞ ¡Ñ ñѽáÑΓ »α«óÑα¬π, τΓ«íδ πíÑñ¿Γ∞ß∩, τΓ« óßÑ
- »α«µÑñπαδ, «»¿ßá¡¡δÑ ß áΓα¿íπΓἿ NEAR ¿½¿ FAR, ß««ΓóÑΓßΓóπεΓ
- í½¿ª¡¿¼ ¿½¿ ñá½∞¡¿¼ »«ñ»α«úαἼἠó »α«úαá¼¼Ñ Æπαí« Åá߬á½∩. öá¬-
- Γ¿τÑ߬¿, «¡ ñáªÑ ¡Ñ »α«óÑα∩ÑΓ, ∩ó½∩εΓß∩ ½¿ ¼ÑΓ¬¿ AsmProc ¿
- AsmFunc ¿¼Ñ¡á¼¿ »α«µÑñπα. Å«φΓ«¼π óδ ñ«½ª¡δ «íÑß»Ñτ¿Γ∞, τΓ«íδ
- «»¿ßá¡¿∩ ó ÇßßѼí½ÑαÑ ¿ Åá߬á½Ñ í뫨 »αáó¿½∞¡δ¼¿.
-
-
-
-
- TASM2 #2-5/䫬 = 231 =
-
- ä¿αÑ¬Γ¿óá PUBLIC
- -----------------------------------------------------------------
-
- é Æπαí« Åá߬á½Ñ ñ«ßΓπ»¡δ Γ«½∞¬« ΓÑ ¼ÑΓ¬¿ ÇßßѼí½Ñαá, ¬«Γ«αδÑ
- «íΩ∩ó½Ñ¡δ ó ¼«ñπ½Ñ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá, ¬á¬ «íΘÑñ«ßΓπ»¡δÑ
- (PUBLIC). îÑΓ¬¿ »αÑñßΓáó½∩εΓ ß«í«⌐ Ññ¿¡ßΓóÑ¡¡δÑ «íΩѬΓδ, ¬«Γ«αδÑ
- ¼«úπΓ »ÑαÑñáóáΓ∞ß∩ ¿º ∩ºδ¬á ÇßßѼí½Ñαá ó Æπαí« Åá߬á½∞. ü«½ÑÑ
- Γ«ú«, ¬áªñ«⌐ «íΘÑñ«ßΓπ»¡«⌐ ¼Ñ⪥ ñ«½ª¡« ß««ΓóÑΓßΓó«óáΓ∞ «»¿ßá¡¿Ñ
- »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ ó »α«úαá¼¼Ñ Æπαí« Åá߬á½∩, ¿¡áτÑ ¬«¼»¿½∩Γ«α
- óδñáßΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ. Åα¿τѼ ¡Ñ ΓαÑíπÑΓß∩, τΓ«íδ «íΘÑñ«ß-
- Γπ»¡á∩ ¼ÑΓ¬á íδ½á τáßΓ∞ε «»¿ßá¡¿∩ PROC. ùΓ« ¬áßáÑΓß∩ Æπαí« Åá߬á-
- ½∩, Γ« ñ½∩ ¡Ñú« «»¿ßá¡¿∩:
-
- AsmLabel PROC FAR
- PUBLIC Bar
- ¿
-
- AsmLabel:
- PUBLIC Bar
-
- φ¬ó¿óá½Ñ¡Γ¡δ.
-
-
-
-
- TASM2 #2-5/䫬 = 232 =
-
- ä¿αÑ¬Γ¿óá EXTRN
- -----------------------------------------------------------------
-
- î«ñπ½∞ Æπαí« ÇßßѼí½Ñαá ¼«ªÑΓ «íαáΘáΓ∞ß∩ ¬ ½εí«⌐ »α«µÑñπαÑ,
- Σπ¡¬µ¿¿, »ÑαѼѡ¡«⌐ ¿½¿ Γ¿»¿º«óá¡¡«⌐ ¬«¡ßΓá¡ΓÑ Æπαí« Åá߬á½∩, ¬«-
- Γ«αá∩ «»¿ßδóáÑΓß∩ ¡á ßἫ¼ ó¡ÑΦ¡Ñ¼ πα«ó¡Ñ »α«úαá¼¼δ ¿½¿ ¼«ñπ½∩, ß
- ¬«Γ«αδ¼ «¡á ¬«¼»«¡πÑΓß∩. (çá¼ÑΓ¿¼, τΓ« φΓ« ó¬½ετáÑΓ ó ßÑí∩ »ÑαÑ-
- ¼Ñ¡¡δÑ, «»¿ßá¡¡δÑ »«ß½Ñ ñ¿αÑ¬Γ¿óδ ¬«¼»¿½∩Γ«αá {$L} ¿ ó¡ÑΦ¡¿Ñ «»¿-
- ßá¡¿∩, ßó∩ºá¡¡δÑ ß ñá¡¡δ¼ ¼«ñπ½Ñ¼.) îÑΓ¬¿ ¿ «íδτ¡δÑ ¬«¡ßΓá¡Γδ
- Æπαí« Åá߬á½∩ ∩ºδ¬π ÇßßѼí½Ñαá ¡Ññ«ßΓπ»¡δ.
-
- ÅαÑñ»«½«ª¿¼, ó óáΦѼ »α«úαá¼¼Ñ Æπαí« Åá߬á½∩ «»¿ßδóáεΓß∩
- ß½ÑñπεΘ¿Ñ ú½«íá½∞¡δÑ »ÑαѼѡ¡δÑ:
-
- var
- a : byte;
- b : word;
- c : shortint;
- d : integer;
- e : real;
- f : single;
- g : double;
- h : extended;
- i : comp;
- j : pointer;
-
- é »α«úαá¼¼Ñ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá óδ ¼«ªÑΓÑ »«½πτ¿Γ∞ ñ«ßΓπ» ¬«
- óßѼ φΓ¿¼ »ÑαѼѡ¡δ¼ ß »«¼«Θ∞ε «»¿ßá¡¿⌐ EXTRN:
-
- EXTRN A : BYTE ; 1 íá⌐Γ
- EXTRN B : WORD ; 2 íá⌐Γá
- EXTRN C : BYTE ; ó ÇßßѼí½ÑαÑ º¡áτÑ¡¿∩ ß« º¡á¬«¼ ¿
- ; íѺ º¡á¬á ¿¡ΓÑα»αÑΓ¿απεΓß∩ «ñ¿¡á¬«ó«
- EXTRN D : WORD ; Γ« ªÑ ßἫÑ
- EXTRN E : FWORD ; 6-íá⌐Γ«ó«Ñ ñÑ⌐ßΓó¿Γѽ∞¡«Ñ º¡áτÑ¡¿Ñ
- ; («íαáíáΓδóáÑΓß∩ »α«úαá¼¼¡«)
- EXTRN F : DWORD ; 4-íá⌐Γ«ó«Ñ º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐
- ; Γ«τ¬«⌐ ó Σ«α¼áΓÑ IEEE
- EXTRN G : QWORD ; 8-íá⌐Γ«ó«Ñ º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐
- ; Γ«τ¬«⌐ (ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿) ó
- ; Σ«α¼áΓÑ IEEE
- EXTRN H : TBYTE ; 10-íá⌐Γ«ó«Ñ º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐
- ; Γ«τ¬«⌐ ó« óαѼѡ¡«¼ Σ«α¼áΓÑ
- EXTRN I : QWORD ; 8-íá⌐Γ«ó«Ñ µÑ½«Ñ ß« º¡á¬«¼ ó
- ; Σ«α¼áΓÑ IEEE (ß«»α«µÑßß«α 8087)
- EXTRN J : DWORD ; π¬áºáΓѽ∞ Æπαí« Åá߬á½∩
-
- TASM2 #2-5/䫬 = 233 =
-
-
- ǡὫú¿τ¡δ¼ «íαẫ¼ ¼«ª¡« »«½πτ¿Γ∞ ñ«ßΓπ» ¬ »α«µÑñπαá¼ ¿
- Σπ¡¬µ¿∩¼ Æπαí« Åá߬á½∩, ó¬½ετá∩ í¿í½¿«ΓÑτ¡δÑ. ÅαÑñ»«½«ª¿¼, π óáß
- ¿¼ÑÑΓß∩ ¼«ñπ½∞ Æπαí« Åá߬á½∩, ¬«Γ«αδ⌐ óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- unit Sample;
- { Åα¿¼Ñα ¼«ñπ½∩, ó ¬«Γ«α«¼ «»αÑñѽ∩ÑΓß∩ ¡Ñ߬«½∞¬π »α«µÑñπα
- Åá߬á½∩, óδºδóáѼδσ ¿º »α«µÑñπαδ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá }
-
- interface
-
- procedure TestSample;
-
- procedure PublicProc; { ñ½∩ «íαáΘÑ¡¿∩ ¿ºó¡Ñ ñ«½ª¡á
- íδΓ∞ ñá½∞¡Ñú« Γ¿»á }
- inplementation
-
- var
- A : word;
-
- procedure AsmProc; external;
- {$L ASMPROC.OBJ}
-
- procedure PublicProc;
- begin { PublicProc }
- Writeln('é PublicProc');
- end { PublicProc }
-
- procedure NearProc; { ñ«½ª¡á íδΓ∞ í½¿ª¡Ñú« Γ¿»á }
- begin { NearProc }
- Writeln('B NearProc');
- end; { NearProc }
-
- {$F+}
- procedure FarProc { ñ«½ª¡á ¿¼ÑΓ∞ ñá½∞¡¿⌐ Γ¿» ß«ú½áß¡«
- ñ¿αÑ¬Γ¿óÑ ¬«¼»¿½∩Γ«αá }
- begin { FarProc }
- Writeln('B FarProc');
- end { FarProc }
-
- {$F-}
-
- procedure TestSample;
- begin { TestSample }
- Writeln('B TestSample');
- A := 10;
-
- TASM2 #2-5/䫬 = 234 =
-
- Writeln('ç¡áτÑ¡¿Ñ A »ÑαÑñ ASMPROC = ',A);
- AsmProc;
- Writeln('ç¡áτÑ¡¿Ñ A »«ß½Ñ ASMPROC = ',A);
- end { TestSample };
-
- end.
-
- Åα«µÑñπαá AsmProc óδºδóáÑΓ »α«µÑñπαδ PublicProc, NearProc
- ¿½¿ FarProc, ¿ß»«½∞ºπ∩ ñ¿αÑ¬Γ¿óπ EXTRN ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- DATA SEGMENT WORD PUBLIC
- ASSUME DS:DATA
- EXTRN A:WORD ; »ÑαѼѡ¡á∩ ¿º ¼«ñπ½∩
- DATA ENDS
-
- CODE SEGMENT BYTE PUBLIC
- ASSUME CS:CODE
- EXTRN PublicProc : FAR ; ñá½∞¡∩∩ »α«µÑñπαá
- ; (φ¬ß»«αΓ¿απÑΓß∩ ¼«ñπ½Ñ¼)
- EXTRN NearProc : NEAR ; í½¿ª¡∩∩ »α«µÑñπαá
- ; (½«¬á½∞¡á∩ ñ½∩ ¼«ñπ½∩)
- EXTRN FarProc : FAR ; ñá½∞¡∩∩ »α«µÑñπαá
- ; (½«¬á½∞¡á, ¡« ºáñá¡á,
- ; ¬á¬ ñá½∞¡∩∩)
- AsmProc PROC NEAR
- PUBLIC AsmProc
- CALL FAR PTR PublicProc
- CALL NearProc
- CALL FAR PTR FarProc
- mov cx,ds:A ; óº∩Γ∞ »ÑαѼѡ¡πε ¿º
- ; ¼«ñπ½∩
- sub cx,2 ; ¿º¼Ñ¡¿Γ∞ ÑÑ
- mov ds:A,cx ; ºá»¿ßáΓ∞ ÑÑ «íαáΓ¡«
- RET
- AsmProc ENDP
- CODE ENDS
- END
-
- Äß¡«ó¡á∩ »α«úαá¼¼á, ¬«Γ«αá∩ »α«óÑα∩ÑΓ φΓπ »α«úαá¼¼π ¡á Çß-
- ßѼí½ÑαÑ ¿ ¼«ñπ½∞ Åá߬á½∩, óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- program TSample;
- uses Sample;
- begin
- TestSample;
- end.
-
- TASM2 #2-5/䫬 = 235 =
-
-
- ùΓ«íδ ßΣ«α¼¿α«óáΓ∞ »α¿¼Ñα »α«úαá¼¼δ ß »«¼«Θ∞ε ¬«¼»¿½∩Γ«αá,
- αáí«ΓáεΘÑú« ó αѪ¿¼Ñ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿, ¿ ÇßßѼí½Ñαá, ¿ß»«½∞ºπ⌐ΓÑ
- ß½ÑñπεΘ¿Ñ ¬«¼á¡ñδ (¿½¿ ¬«¼á¡ñ¡δ⌐ Σá⌐½):
-
- TASM ASMPROC
- TPC /B SAMPLE
- TSAMPLE
-
- Æá¬ ¬á¬ ó¡ÑΦ¡∩∩ »«ñ»α«úαá¼¼á ñ«½ª¡á «íΩ∩ó½∩Γ∞ß∩ ó »α«úαá¼¼Ñ
- Æπαí« Åá߬á½∩ ¡á ßἫ¼ ó¡ÑΦ¡Ñ¼ πα«ó¡Ñ »α«µÑñπα, óδ ¡Ñ ¼«ªÑΓÑ ñ½∩
- ñ«ßΓπ»á ¬ «íΩѬΓá¼, ∩ó½∩εΘ¿¼ß∩ ½«¬á½∞¡δ¼¿ »« «Γ¡«ΦÑ¡¿ε ¬ »α«µÑñπ-
- αá¼ ¿½¿ Σπ¡¬µ¿∩¼ ¿ß»«½∞º«óáΓ∞ «»¿ßá¡¿∩ EXTRN. Äñ¡á¬«, óáΦá »α«ú-
- αá¼¼á ¡á Æπαí« ÇßßѼí½ÑαÑ »α¿ ó맮óÑ ¿º »α«úαá¼¼δ Æπαí« Åá߬á½∩
- ¼«ªÑΓ »«½πτ¿Γ∞ φΓ¿ «íΩѬΓδ, ¬á¬ º¡áτÑ¡¿∩ »áαá¼ÑΓα«ó-»ÑαѼѡ¡δσ.
-
-
-
-
- TASM2 #2-5/䫬 = 236 =
-
- Äúαá¡¿τÑ¡¿∩ »α¿ ¿ß»«½∞º«óá¡¿¿ «íΩÑ¬Γ«ó Γ¿»á EXTRN
- -----------------------------------------------------------------
-
- æ¿¡Γá¬ß¿ß ß«ßΓáó¡«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá Æπαí« Åá߬á½∩, »α¿ ¬«Γ«-
- α«¼ ñ½∩ ñ«ßΓπ»á ¬ «íΩѬΓπ ó ºáñá¡¡«¼ ¼«ñπ½Ñ ¿ß»«½∞ºπÑΓß∩ ¿¼∩ ¼«-
- ñπ½∩ ¿ Γ«τ¬á, ¡Ñß«ó¼ÑßΓ¿¼ ß ß¿¡Γá¬ß¿τÑ߬¿¼¿ »αáó¿½á¼¿ Æπαí« Çß-
- ßѼí½Ñαá ¿ íπñÑΓ, Γᬿ¼ «íαẫ¼, «ΓóÑαú¡πΓ. Ä»¿ßá¡¿Ñ:
-
- EXTRN SYSTEM.Assing : FAR
-
- »α¿óÑñÑΓ ¬ Γ«¼π, τΓ« Æπαí« ÇßßѼí½Ñα óδñáßΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ.
-
- ê¼ÑÑΓß∩ Γá¬ªÑ ñóá ñαπú¿σ «úαá¡¿τÑ¡¿∩ ¡á ¿ß»«½∞º«óá¡¿Ñ ó Æπα-
- í« Åá߬á½Ñ «íΩÑ¬Γ«ó EXTRN. ÅÑαó«Ñ ¿º ¡¿σ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ó
- ßß佬áσ ¡á »α«µÑñπαπ ¿½¿ Σπ¡¬µ¿ε ¡Ñ ¼«úπΓ óδ»«½¡∩Γ∞ß∩ áα¿Σ¼ÑΓ¿-
- τÑ߬¿Ñ «»Ñαᵿ¿ ß áñαÑßἿ. Æá¬¿¼ «íαẫ¼, Ñß½¿ óδ «íΩ∩ó¿ΓÑ:
-
- EXTRN PublicProc : FAR
-
- Γ« ¡Ñ ß¼«ªÑΓÑ ºá»¿ßáΓ∞ «»ÑαáΓ«α ó¿ñá:
-
- call PublicProc + 42
-
- éΓ«α«Ñ «úαá¡¿τÑ¡¿Ñ «Γ¡«ß¿Γß∩ ¬ Γ«¼π, τΓ« ¬«¼»«¡«óΘ¿¬ Æπαí«
- Åá߬á½∩ ¡Ñ íπñÑΓ αáß»«º¡áóáΓ∞ «»Ñαᵿ¿, ¬«Γ«αδÑ αáºñѽ∩εΓ ß½«óá
- ¡á íá⌐Γδ, »«φΓ«¼π óδ ¡Ñ ¼«ªÑΓÑ »α¿¼Ñ¡∩Γ∞ Γá¬¿Ñ «»Ñαᵿ¿ ¬ «íΩѬ-
- Γá¼ EXTRN. ìá»α¿¼Ñα, Ñß½¿ óδ «íΩ∩ó¿ΓÑ:
-
- EXTRN i : WORD
-
- Γ« ¡Ñ ß¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ó ¼«ñπ½Ñ Æπαí« ÇßßѼí½Ñαá óδαáªÑ¡¿∩
- LOW i ¿½¿ HIGH i.
-
- êß»«½∞º«óá¡¿Ñ ¬«ααÑ¬Γ¿α«ó«¬ ßÑú¼Ñ¡Γ«ó
- -----------------------------------------------------------------
-
- Æπαí« Åá߬á½∞ úÑ¡Ñα¿απÑΓ Σá⌐½δ .EXE, ¬«Γ«αδÑ ¼«úπΓ ºáúαπ-
- ªáΓ∞ß∩ ó »á¼∩Γ∞ ¬«¼»∞εΓÑαá Éæ »« ½εí«¼π ñ«ßΓπ»¡«¼π áñαÑßπ. Å«ß-
- ¬«½∞¬π ó »α«úαá¼¼Ñ ºáαá¡ÑÑ ¡Ñ¿ºóÑßΓ¡«, ¬πñá íπñÑΓ ºáúαπªÑ¡ ñá¡¡δ⌐
- ßÑú¼Ñ¡Γ »α«úαá¼¼δ, ¬«¼»«¡«óΘ¿¬ π¬áºδóáÑΓ ºáúαπºτ¿¬π DOS.EXE, τΓ«
- ¡πª¡« »α¿ ºáúαπº¬Ñ ߬«ααÑ¬Γ¿α«óáΓ∞ ó »α«úαá¼¼Ñ óßÑ ßß佬¿ ¡á ßÑú-
- ¼Ñ¡Γδ. Å«ß½Ñ óδ»«½¡Ñ¡¿∩ φΓ¿σ ¬«ααÑ¬Γ¿α«ó«¬ óßÑ ßß佬¿ ¡á ßÑú¼Ñ¡Γδ
- (ΓᬿÑ, ¬á¬ CODE ¿½¿ DATA) íπñπΓ ß«ñÑαªáΓ∞ ¬«ααÑ¬Γ¡δÑ º¡áτÑ¡¿∩.
-
- éáΦá »α«úαá¼¼á ¡á Æπαí« ÇßßѼí½ÑαÑ ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ φΓ«
-
- TASM2 #2-5/䫬 = 237 =
-
- ßαÑñßΓó« ñ½∩ »«½πτÑ¡¿∩ áñαÑß«ó «íΩÑ¬Γ«ó ó« óαѼ∩ óδ»«½¡Ñ¡¿∩.
- ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« ó óáΦÑ⌐ »α«úαá¼¼Ñ ΓαÑíπÑΓß∩ ¿º¼Ñ¡¿Γ∞
- º¡áτÑ¡¿Ñ αÑú¿ßΓαá DS, ¡« óδ ¡Ñ σ«Γ¿ΓÑ ß«σαá¡∩Γ∞ ó µ¿¬½Ñ ¿ßσ«ñ¡«Ñ
- ß«ñÑন¼«Ñ ßΓÑ¬á ¿½¿ »ÑαѼÑΘáΓ∞ φΓ¿ º¡áτÑ¡¿∩ ó« óαѼѡ¡πε «í-
- ½áßΓ∞. é¼ÑßΓ« φΓ«ú« óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ «»Ñαáµ¿ε Æπαí« ÇßßѼ-
- í½Ñαá SEG:
-
- .
- .
- .
- mov ax,SEG DATA ; »«½πτ¿Γ∞ ñÑ⌐ßΓó¿Γѽ∞¡δ⌐
- ; áñαÑß ú½«íá½∞¡«ú« º¡áτÑ¡¿∩
- ; DS Æπαí« Åá߬á½∩
- mov ds,ax ; »«¼ÑßΓ¿Γ∞ Ñú« ó DS ñ½∩
- ; ¿ß»«½∞º«óá¡¿∩ Æπαí«
- ; Åá߬á½Ñ¼
- .
- .
- .
-
- è«úñá óáΦá »α«úαá¼¼á íπñÑΓ ºáúαπªáΓ∞ß∩, DOS »«¼ÑßΓ¿Γ ¬«ααѬ-
- Γ¡«Ñ º¡áτÑ¡¿Ñ SEG DATA »α∩¼« ó »«½Ñ »α«¼ÑªπΓ«τ¡«ú« «»Ñαá¡ñá ¿¡ßΓ-
- απ¬µ¿¿ MOV. ¥Γ« ¡á¿í«½ÑÑ íδßΓαδ⌐ »πΓ∞ »ÑαѺáúαπº¬¿ ßÑú¼Ñ¡Γ¡«ú«
- αÑú¿ßΓαá.
-
- äá¡¡δ⌐ ¼ÑΓ«ñ ¡πª¡« Γá¬ªÑ ¿ß»«½∞º«óáΓ∞, τΓ«íδ »α«úαá¼¼δ «íß-
- ½πª¿óá¡¿∩ »αÑαδóá¡¿⌐ ß«σαá¡∩½¿ ¿¡Σ«α¼áµ¿ε ó ú½«íá½∞¡«¼ ßÑú¼Ñ¡ΓÑ
- ñá¡¡δσ Æπαí« Åá߬á½∩. ÉÑú¿ßΓα DS ¡Ñ «í∩ºáΓѽ∞¡« ó« óαѼ∩ »αÑαδóá-
- ¡¿∩ ß«ñÑαª¿Γ º¡áτÑ¡¿Ñ DS Æπαí« Åá߬á½∩, ¡« ñ½∩ »«½πτÑ¡¿∩ ñ«ßΓπ»á
- ¬ »ÑαѼѡ¡δ¼ ¿ Γ¿»¿º«óá¡¡δ¼ ¬«¡ßΓá¡Γá¼ Æπαí« Åá߬á½∩ ¼«ª¡« ¿ß-
- »«½∞º«óáΓ∞ π¬áºá¡¡πε óδΦÑ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞.
-
- ôßΓαá¡Ñ¡¿Ñ ¡Ñ¿ß»«½∞ºπѼ«ú« ¬«ñá
- -----------------------------------------------------------------
-
- é Æπαí« Åá߬á½Ñ ¿¼ÑεΓß∩ ßαÑñßΓóá, «íÑß»Ñτ¿óáεΘ¿Ñ πßΓαá¡Ñ¡¿Ñ
- ¡Ñ¿ß»«½∞ºπѼ«ú« ¬«ñá. ¥Γ« «º¡áτáÑΓ, τΓ« ó »«½πτÑ¡¡δ⌐ ó αѺπ½∞ΓáΓÑ
- Σá⌐½ .EXE ¡Ñ íπñÑΓ ó¬½ετáΓ∞ß∩ ¬«ñ »α«µÑñπα ¿ Σπ¡¬µ¿⌐, ¬«Γ«αδ⌐ ¡¿-
- ¬«úñá ¡Ñ óδ»«½¡∩ÑΓß∩. ì« »«ß¬«½∞¬π ¡ÑΓ »«½¡«⌐ ¿¡Σ«α¼áµ¿¿ « ß«ñÑα-
- ª¿¼«¼ ¼«ñπ½Ñ⌐ Æπαí« ÇßßѼí½Ñαá, Æπαí« Åá߬á½∞ ¼«ªÑΓ óδ»«½¡∩Γ∞ ñ½∩
- ¡¿σ Γ«½∞¬« «úαá¡¿τÑ¡¡πε «»Γ¿¼¿ºáµ¿ε.
-
- Æπαí« Åá߬á½∞ íπñÑΓ πßΓαá¡∩Γ∞ ¬«ñ ¼«ñπ½∩ .OBJ ó Γ«¼ ¿ Γ«½∞¬«
- ó Γ«¼ ß½πτáÑ, Ñß½¿ ¬ ½εí«⌐ ñ«ßΓπ»¡«⌐ »α«µÑñπαÑ ¿½¿ Σπ¡¬µ¿¿ φΓ«ú«
- ¼«ñπ½∩ ¡ÑΓ «íαáΘÑ¡¿∩. àß½¿ ªÑ ¡á ¬á¬πε ½¿í« »α«µÑñπαπ ¿½¿ Σπ¡¬µ¿ε
-
- TASM2 #2-5/䫬 = 238 =
-
- ¿¼ÑÑΓß∩ ßß佬á, Γ« óÑß∞ φëà ¼«ñπ½∞ ¿ß»«½∞ºπÑΓß∩.
-
- ùΓ«íδ ñ«í¿Γ∞ß∩ í«½∞ΦÑ⌐ φΣΣÑ¬Γ¿ó¡«ßΓ¿ ¿ß»«½∞º«óá¡¿∩ ßαÑñßΓóá
- Æπαí« Åá߬á½∩ »« πßΓαá¡Ñ¡¿ε ¡Ñ¿ß»«½∞ºπѼ«ú« ¬«ñá, ¡Ñ»½«σ« í佫 íδ
- αáºí¿Γ∞ »α«úαá¼¼π ¡á ÇßßѼí½ÑαÑ ¡á ¡Ñí«½∞Φ¿Ñ ¼«ñπ½¿, ¬«Γ«αδÑ ß«-
- ñÑαªá½¿ íδ Γ«½∞¬« ¡Ñ߬«½∞¬« »α«µÑñπα ¿½¿ Σπ¡¬µ¿⌐. ¥Γ« »«ºó«½¿½«
- íδ Æπαí« Åá߬á½ε, Ñß½¿ «¡ ¼«ªÑΓ φΓ« ßñѽáΓ∞, π¼Ñ¡∞Φ¿Γ∞ «íΩѼ óá-
- ΦÑ⌐ ¬«¡Ñτ¡«⌐ »α«úαá¼¼δ.
-
-
-
-
- TASM2 #2-5/䫬 = 239 =
-
-
- æ«ú½áΦÑ¡¿∩ Æπαí« Åá߬á½∩ »« »ÑαÑñáτÑ »áαá¼ÑΓα«ó
- -----------------------------------------------------------------
-
- Æπαí« Åá߬á½∞ ¿ß»«½∞ºπÑΓ ñ½∩ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó ßΓѬ µÑ¡-
- Γαá½∞¡«ú« »α«µÑßß«αá (¿½¿, ó ß½πτáÑ »ÑαÑñáτ¿ º¡áτÑ¡¿⌐ »áαá¼ÑΓα«ó
- ß «ñ¿¡áα¡«⌐, ñó«⌐¡«⌐, αáßΦ¿αÑ¡¡«⌐ Γ«τ¡«ßΓ∞ε ¿½¿ ß½«ª¡«ú« Γ¿»á,
- ßΓѬ áα¿Σ¼ÑΓ¿τÑ߬«ú« ß«»α«µÑßß«αá). Åáαá¼ÑΓαδ óßÑúñá óδτ¿ß½∩εΓß∩
- ¿ ºá¡«ß∩Γß∩ ó ßΓѬ ó Γ«¼ »«α∩ñ¬Ñ, ó ¬«Γ«α«¼ «¡¿ π¬áºδóáεΓß∩ ó
- «»¿ßá¡¿¿ »«ñ»α«úαá¼¼δ, ß½Ñóá ¡á»αáó«. é ñá¡¡«¼ αáºñÑ½Ñ ¼δ »«∩ß-
- ¡¿¼, ¬á¬ φΓ¿ »áαá¼ÑΓαδ »αÑñßΓáó½∩εΓß∩.
-
-
- Åáαá¼ÑΓαδ-º¡áτÑ¡¿∩
- -----------------------------------------------------------------
-
- Åáαá¼ÑΓα-º¡áτÑ¡¿Ñ - φΓ« »áαá¼ÑΓα, º¡áτÑ¡¿Ñ ¬«Γ«α«ú« ¡Ñ ¼«ªÑΓ
- ¿º¼Ñ¡∩Γ∞ß∩ »«ñ»α«úαá¼¼«⌐, ó ¬«Γ«απε «¡ »ÑαÑñáÑΓß∩. é «Γ½¿τ¿Ñ «Γ
- ¼¡«ú¿σ ¬«¼»¿½∩Γ«α«ó, Æπαí« Åá߬á½∞ ¡Ñ óδ»«½¡∩ÑΓ ß½Ñ»«ú« ¬«»¿α«óá-
- ¡¿∩ ó ßΓѬ ¬áªñ«ú« »áαá¼ÑΓαá-º¡áτÑ¡¿∩: ¬á¬ ¼δ ñá½ÑÑ »«∩ß¡¿¼, ¿ß-
- »«½∞ºπѼδ⌐ ¼ÑΓ«ñ ºáó¿ß¿Γ «Γ Γ¿»á.
-
- æ¬á½∩α¡δÑ Γ¿»δ
- -----------------------------------------------------------------
-
- Åáαá¼ÑΓαδ-º¡áτÑ¡¿∩ óßÑσ ߬á½∩α¡δσ Γ¿»«ó (boolean, char,
- shortint, byte, integer, word, longint, «ΓαѺ¬¿ Γ¿»«ó ¿ »ÑαÑτ¿ß-
- ½¿¼δÑ Γ¿»δ) »ÑαÑñáεΓß∩ ¬á¬ º¡áτÑ¡¿∩ τÑαѺ ßΓѬ »α«µÑßß«αá. àß½¿
- αẼÑα «íΩѬΓá ß«ßΓáó½∩ÑΓ 1 íá⌐Γ, «¡ ºá¡«ß¿Γß∩ ó ßΓѬ, ¬á¬ »«½¡«Ñ
- 16-í¿Γ«ó«Ñ ß½«ó«, «ñ¡á¬« í«½ÑÑ º¡áτáΘ¿⌐ (ßΓáαΦ¿⌐) íá⌐Γ ß½«óá ¡Ñ
- ß«ñÑαª¿Γ »«½Ñº¡«⌐ ¿¡Σ«α¼áµ¿¿. (ìѽ∞º∩ αáßßτ¿ΓδóáΓ∞ ¡á Γ«, τΓ«
- º¡áτÑ¡¿Ñ φΓ«ú« íá⌐Γá αáó¡« 0, ¬á¬ ó óÑαß¿¿ 3.0 Æπαí« Åá߬á½∩.)
- àß½¿ αẼÑα «íΩѬΓá αáóÑ¡ ñóπ¼ íá⌐Γá¼, Γ« «¡ »α«ßΓ« ºá¡«ß¿Γß∩ ó
- ßΓѬ "¬á¬ ÑßΓ∞". àß½¿ «íΩÑ¬Γ ¿¼ÑÑΓ αẼÑα 4 íá⌐Γá (ñ½¿¡¡«Ñ µÑ-
- ½«Ñ), «¡ ºá¡«ß¿Γß∩ ó ßΓѬ, ¬á¬ ñóá 16-í¿Γ«óδσ ß½«óá. é ß««ΓóÑΓßΓ-
- ó¿¿ ß« ßΓá¡ñáαΓ«¼ »α«µÑßß«α«ó ßÑα¿¿ 8088 ¡á¿í«½ÑÑ º¡áτáΘÑÑ (ßΓáα-
- ΦÑÑ) ß½«ó« ºá¡«ß¿Γß∩ ó ßΓѬ »Ñαóδ¼ ¿ ºá¡¿¼áÑΓ ó ßΓÑ¬Ñ ßΓáαΦ¿Ñ áñ-
- αÑßá.
-
- çá¼ÑΓ¿¼, τΓ« ß½«ª¡δ⌐ Γ¿» (comp), ó «Γ½¿τ¿Ñ «Γ µÑ½«ú« Γ¿»á,
- ¡Ñ ßτ¿ΓáÑΓß∩ ߬á½∩α¡δ¼ Γ¿»«¼ (ß Γ«τ¬¿ ºαÑ¡¿∩ »ÑαÑñáτ¿ »áαá¼ÑΓ-
- α«ó). Æá¬¿¼ «íαẫ¼, ó Æπαí« Åá߬á½Ñ óÑαß¿¿ 4.0 »áαá¼ÑΓαδ-º¡áτÑ-
- ¡¿∩ φΓ«ú« Γ¿»á »ÑαÑñáεΓß∩ ó ßΓÑ¬Ñ »α«µÑßß«αá 8087, á ¡Ñ ó ßΓѬÑ
- µÑ¡Γαá½∞¡«ú« »α«µÑßß«αá. é Æπαí« Åá߬á½Ñ óÑαß¿¿ 5.0 º¡áτÑ¡¿∩ Γ¿»á
- comp »ÑαÑñáεΓß∩ ó ßΓÑ¬Ñ µÑ¡Γαá½∞¡«ú« »α«µÑßß«αá.
-
-
- TASM2 #2-5/䫬 = 240 =
-
-
- éÑΘÑßΓóÑ¡¡δÑ º¡áτÑ¡¿∩
- -----------------------------------------------------------------
-
- Åáαá¼ÑΓαδ-º¡áτÑ¡¿∩ óÑΘÑßΓóÑ¡¡«ú« Γ¿»á (real) »ÑαÑñáεΓß∩, ¬á¬
- 6 íá⌐Γ ó ßΓÑ¬Ñ (ó Æπαí« Åá߬á½Ñ φΓ« Γ¿» »αÑñßΓáó½∩ÑΓ ß«í«⌐ 6-íá⌐-
- Γ«óδ⌐ »α«úαá¼¼¡«-φ¼π½¿απѼδ⌐ Γ¿» ß »½áóáεΘÑ⌐ Γ«τ¬«⌐). ¥Γ« Ññ¿¡ß-
- ΓóÑ¡¡δ⌐ Γ¿», »αÑóδΦáεΘ¿⌐ 4 íá⌐Γá, ¬«Γ«αδ⌐ ¼«ªÑΓ »ÑαÑñáóáΓ∞ß∩ τÑ-
- αѺ ßΓѬ.
-
-
-
-
- TASM2 #2-5/䫬 = 241 =
-
-
- Æ¿»δ ß«»α«µÑßß«αá 8087
- -----------------------------------------------------------------
-
- é Æπαí« Åá߬á½Ñ óÑαß¿¿ 4.0 »áαá¼ÑΓαδ-º¡áτÑ¡¿∩ Γ¿»«ó ß«»α«-
- µÑßß«αá 8087 (ß «ñ¿¡«τ¡«⌐, ñó«⌐¡«⌐, αáßΦ¿αÑ¡¡«⌐ Γ«τ¡«ßΓ∞ε ¿½¿
- ß½«ª¡δ⌐ Γ¿») »ÑαÑñáεΓß∩ τÑαѺ ßΓѬ ß«»α«µÑßß«αá, á ¡Ñ τÑαѺ ßΓѬ
- µÑ¡Γαá½∞¡«ú« »α«µÑßß«αá. Æá¬ ¬á¬ ßΓѬ ß«»α«µÑßß«αá 8087 ¿¼ÑÑΓ
- ú½πí¿¡π Γ«½∞¬« 6 πα«ó¡Ñ⌐, »«ñ»α«úαá¼¼δ Æπαí« Åá߬á½∩ ¡Ñ ¼«úπΓ »Ñ-
- αÑñáóáΓ∞ í«½ÑÑ 6 »áαá¼ÑΓα«ó ß Γ¿»á¼¿ ß«»α«µÑßß«αá 8087. ÅÑαÑñ
- ó«ºóαáΓ«¼ ¿º »«ñ»α«úαá¼¼δ «¡á ñ«½ª¡á ¿ºó½Ñτ∞ ¿º ßΓѬá áα¿Σ¼ÑΓ¿-
- τÑ߬«ú« ß«»α«µÑßß«αá óßÑ »áαá¼ÑΓαδ Γᬫú« Γ¿»á.
-
- Æπαí« Åá߬á½∞ 5.0 ¿ß»«½∞ºπÑΓ »α¿ »ÑαÑñáτÑ »áαá¼ÑΓα«ó (º¡áτÑ-
- ¡¿⌐ »α«µÑßß«αá 8087) ΓÑ ªÑ ß«ú½áΦÑ¡¿∩, τΓ« ¿ Æπαí« æ¿: «¡¿ »ÑαÑ-
- ñáεΓß∩ ó ßΓÑ¬Ñ µÑ¡Γαá½∞¡«ú« »α«µÑßß«αá ¡áα∩ñπ ß ñαπú¿¼¿ »áαá¼ÑΓ-
- αἿ. ¥Γ« ¼«úπΓ íδΓ∞ »áαá¼ÑΓαδ ß «ñ¿¡áα¡«⌐, ñó«⌐¡«⌐, αáßΦ¿αÑ¡¡«⌐
- Γ«τ¡«ßΓ∞ε ¿½¿ ß½«ª¡«ú« Γ¿»á (ßomp).
-
-
- ô¬áºáΓѽ¿
- -----------------------------------------------------------------
-
- ç¡áτÑ¡¿∩ »áαá¼ÑΓα«ó ñ½∩ óßÑσ Γ¿»«ó π¬áºáΓѽÑ⌐ ºá¡«ß∩Γß∩ ¡Ñ-
- »«ßαÑñßΓóÑ¡¡« ó ßΓѬ, ¬á¬ π¬áºáΓѽ¿ ñá½∞¡Ñú« Γ¿»á: ß¡áτá½á ß½«ó«,
- ß«ñÑαªáΘÑÑ ßÑú¼Ñ¡Γ, ºáΓѼ ñαπú«Ñ ß½«ó«, ß«ñÑαªáΘÑÑ ß¼ÑΘÑ¡¿Ñ. æÑú-
- ¼Ñ¡Γ ºá¡¿¼áÑΓ ßΓáαΦ¿⌐ áñαÑß, ó ß««ΓóÑΓßΓó¿¿ ß ß«ú½áΦÑ¡¿∩¼¿ Σ¿α¼δ
- Intel. ä½∩ ¿ºó½ÑτÑ¡¿∩ »áαá¼ÑΓαá-π¬áºáΓѽ∩ ó »α«úαá¼¼Ñ Æπαí« Çß-
- ßѼí½Ñαá ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬µ¿¿ LDS ¿½¿ LES.
-
-
- æΓ᫬¿
- -----------------------------------------------------------------
-
- æΓ᫬«óδÑ »áαá¼ÑΓαδ, ¡Ñºáó¿ß¿¼« «Γ αẼÑαá, «íδτ¡« ¡¿¬«úñá
- ¡Ñ ºá¡«ß∩Γß∩ ó ßΓѬ. é¼ÑßΓ« φΓ«ú« Æπαí« Åá߬á½∞ ºá¡«ß¿Γ ó ßΓѬ
- π¬áºáΓѽ∞ (ñá½∞¡Ñú« Γ¿»á) ¡á ßΓ᫬π. éδºδóáѼá∩ »«ñ»α«úαá¼¼á ¡Ñ
- ñ«½ª¡á ¿º¼Ñ¡∩Γ∞ ßΓ᫬π, ¡á ¬«Γ«απε ßßδ½áÑΓß∩ π¬áºáΓѽ∞. àß½¿ φΓ«
- ¡Ñ«íσ«ñ¿¼«, »«ñ»α«úαá¼¼á ¼«ªÑΓ ß«ºñáΓ∞ ¿ αáí«ΓáΓ∞ ß ¬«»¿Ñ⌐ ßΓα«-
- ¬¿.
-
- àñ¿¡ßΓóÑ¡¡«Ñ ¿ß¬½ετÑ¡¿Ñ ¿º φΓ«ú« »αáó¿½á - φΓ« ß½πτá⌐, ¬«úñá
- »«ñ»α«úαá¼¼á ó »ÑαѬαδóáѼ«¼ («óÑα½Ñ⌐¡«¼) ¼«ñπ½Ñ A »ÑαÑñáÑΓ ¬á¬
- »áαá¼ÑΓα-º¡áτÑ¡¿Ñ ßΓ᫬«óπε ¬«¡ßΓá¡Γπ »«ñ»α«úαá¼¼Ñ ó »ÑαѬαδóáÑ-
- ¼«¼ ¼«ñπ½Ñ B. é φΓ«¼ ¬«¡ΓѬßΓÑ »ÑαѬαδóáѼδ⌐ ¼«ñπ½∞ «º¡áτáÑΓ ½ε-
- í«⌐ ¼«ñπ½∞, ߬«¼»¿½¿α«óá¡¡δ⌐ ß ñ¿αÑ¬Γ¿ó«⌐ {$O+} (ñ«»π߬áεΓß∩ «óÑ-
- α½Ñ¿). é φΓ«¼ ß½πτáÑ »ÑαÑñ ΓѼ, ¬á¬ íπñÑΓ ßñѽᡠóδº«ó ¿ áñαÑß
-
- TASM2 #2-5/䫬 = 242 =
-
- ßΓѬá íπñÑΓ »ÑαÑñá¡ »α«úαá¼¼Ñ ó ¼«ñπ½Ñ B, ó ßΓÑ¬Ñ ñ½∩ ßΓ᫬«ó«⌐
- ¬«¡ßΓá¡Γδ αѺÑαó¿απÑΓß∩ óαѼѡ¡á∩ »á¼∩Γ∞. ü«½ÑÑ »«ñα«í¡á∩ ¿¡Σ«α-
- ¼áµ¿∩ ß«ñÑনΓß∩ ó â½áóÑ 6 ("ÄóÑα½Ñ¿") ¿ ó "Éπ¬«ó«ñßΓóÑ »«½∞º«óá-
- Γѽ∩ »« Æπαí« Åá߬á½ε" óÑαß¿¿ 5.0 ¿½¿ 5.5.
-
-
- çỿ߿ ¿ ¼áßß¿óδ
- -----------------------------------------------------------------
-
- çỿ߿ ¿ ¼áßß¿óδ, ºá¡¿¼áεΘ¿Ñ α«ó¡« 1, 2 ¿½¿ 4 íá⌐Γá, ñπí½¿-
- απεΓß∩ ¡Ñ»«ßαÑñßΓóÑ¡¡« ó ßΓѬ ¿ »ÑαÑñáεΓß∩, ¬á¬ »áαá¼ÑΓαδ-º¡áτÑ-
- ¡¿∩. àß½¿ ¼áßß¿ó ¿½¿ ºá»¿ß∞ ¿¼ÑÑΓ ¬á¬«⌐-½¿í« ñαπú«⌐ αẼÑα (ó¬½ε-
- τá∩ 3 íá⌐Γá), Γ« ó ßΓѬ ºá¡«ß¿Γß∩ π¬áºáΓѽ∞ ¡á φëà ¼áßß¿ó ¿½¿
- ºá»¿ß∞. é φΓ«¼ ß½πτáÑ, Ñß½¿ »«ñ»α«úαá¼¼á ¼«ñ¿Σ¿µ¿απÑΓ Γá¬πε
- ßΓαπ¬Γπαπ, Γ« «¡á ñ«½ª¡á ß«ºñáΓ∞ ÑÑ ½«¬á½∞¡πε ¬«»¿ε.
-
-
- î¡«ªÑßΓóá
- -----------------------------------------------------------------
-
- î¡«ªÑßΓóá, ¬á¬ ¿ ßΓ᫬¿, «íδτ¡« ¡¿¬«úñá ¡Ñ ºá¡«ß∩Γß∩ ¡Ñ»«ß-
- αÑñßΓóÑ¡¡« ó ßΓѬ. é¼ÑßΓ« φΓ«ú« ó ßΓѬ ºá¡«ß¿Γß∩ π¬áºáΓѽ∞ ¡á
- ¼¡«ªÑßΓó«. ÅÑαóδ⌐ í¿Γ ¼½áñΦÑú« íá⌐Γá ¼¡«ªÑßΓóá óßÑúñá ß««ΓóÑΓß-
- ΓóπÑΓ φ½Ñ¼Ñ¡Γπ íẫó«ú« Γ¿»á (¿½¿ »«α«ªñáεΘÑú« Γ¿»á) ß »«α∩ñ¬«óδ¼
- º¡áτÑ¡¿Ñ¼ 0.
-
- àñ¿¡ßΓóÑ¡¡«Ñ ¿ß¬½ετÑ¡¿Ñ ¿º φΓ«ú« »αáó¿½á - φΓ« ß½πτá⌐, ¬«úñá
- »«ñ»α«úαá¼¼á ó »ÑαѬαδóáѼ«¼ («óÑα½Ñ⌐¡«¼) ¼«ñπ½Ñ A »ÑαÑñáÑΓ ¬á¬
- »áαá¼ÑΓα-º¡áτÑ¡¿Ñ ¬«¡ßΓá¡Γπ-¼¡«ªÑßΓó« »«ñ»α«úαá¼¼Ñ ó «óÑα½Ñ⌐¡«¼
- ¼«ñπ½Ñ B. é φΓ«¼ ¬«¡ΓѬßΓÑ »ÑαѬαδóáѼδ⌐ ¼«ñπ½∞ «º¡áτáÑΓ ½εí«⌐
- ¼«ñπ½∞, ߬«¼»¿½¿α«óá¡¡δ⌐ ß ñ¿αÑ¬Γ¿ó«⌐ {$O+}(ñ«»π߬áεΓß∩ «óÑα½Ñ¿).
- é φΓ«¼ ß½πτáÑ »ÑαÑñ ΓѼ, ¬á¬ íπñÑΓ ßñѽᡠóδº«ó ¿ áñαÑß ßΓѬá íπ-
- ñÑΓ »ÑαÑñá¡ »α«úαá¼¼Ñ ó ¼«ñπ½Ñ B, ó ßΓÑ¬Ñ ñ½∩ ¼¡«ªÑßΓóá-¬«¡ßΓá¡Γδ
- αѺÑαó¿απÑΓß∩ óαѼѡ¡á∩ »á¼∩Γ∞. ü«½ÑÑ »«ñα«í¡á∩ ¿¡Σ«α¼áµ¿∩ ß«-
- ñÑনΓß∩ ó â½áóÑ 6 ("ÄóÑα½Ñ¿") ¿ ó "Éπ¬«ó«ñßΓóÑ »«½∞º«óáΓѽ∩ »«
- Æπαí« Åá߬á½ε 5.0".
-
-
- Åáαá¼ÑΓαδ-»ÑαѼѡ¡δÑ
- -----------------------------------------------------------------
-
- éßÑ »áαá¼ÑΓαδ-»ÑαѼѡ¡δÑ (var) »ÑαÑñáεΓß∩ Γ«τ¡« ΓᬪÑ: ¬á¬
- π¬áºáΓѽ∞ ñá½∞¡Ñú« Γ¿»á ¡á ¿σ ñÑ⌐ßΓó¿Γѽ∞¡δÑ áñαÑßá ó »á¼∩Γ¿.
-
- ÄíÑß»ÑτÑ¡¿Ñ ßΓѬá
-
- TASM2 #2-5/䫬 = 243 =
-
- -----------------------------------------------------------------
-
- Æπαí« Åá߬á½∞ «ª¿ñáÑΓ, τΓ« »ÑαÑñ ó«ºóαáΓ«¼ π»αáó½Ñ¡¿∩ ¿º
- »«ñ»α«úαá¼¼δ óßÑ »áαá¼ÑΓαδ ó ßΓÑ¬Ñ µÑ¡Γαá½∞¡«ú« »α«µÑßß«αá íπñπΓ
- πñá½Ñ¡δ.
-
- àßΓ∞ ñóá ß»«ß«íá ¡áßΓα«⌐¬¿ ßΓѬá. éδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ¿¡-
- ßΓαπ¬µ¿ε RET N (úñÑ N - φΓ« τ¿ß½« íá⌐Γ »ÑαÑñáóáѼδσ, Γ« ÑßΓ∞ ºá-
- ¡ÑßÑ¡¡δσ ó ßΓѬ, »áαá¼ÑΓα«ó), ½¿í« ß«σαá¡¿Γ∞ áñαÑß ó«ºóαáΓá ó αÑ-
- ú¿ßΓαáσ (¿½¿ ó »á¼∩Γ¿) ¿ ¿ºó½Ñτ∞ »áαá¼ÑΓαδ ¿º ßΓÑ¬á »««τÑαÑñ¡«.
- Æá¬πε ΓÑσ¡¿¬π ¿ºó½ÑτÑ¡¿∩ »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ «»Γ¿¼¿ºáµ¿¿ »«
- ߬«α«ßΓ¿ »α¿ αáí«ΓÑ ß »α«µÑßß«α«¼ 8086 ¿½¿ 8088 (ßá¼δÑ "¼Ññ½Ñ¡-
- ¡δÑ" »α«µÑßß«αδ ßÑα¿¿), ¬«úñá ¡á áñαÑßᵿε Γ¿»á "íáºá »½εß ß¼ÑΘÑ-
- ¡¿Ñ" ºáΓαáτ¿óáÑΓß∩ ¼¿¡¿¼π¼ 8 µ¿¬½«ó ºá «íαáΘÑ¡¿Ñ. ¥Γ« »«ºó«½∩ÑΓ
- Γá¬ªÑ ßφ¬«¡«¼¿Γ∞ ¼ÑßΓ«, Γᬠ¬á¬ ¿¡ßΓαπ¬µ¿∩ POP ºá¡¿¼áÑΓ Γ«½∞¬«
- «ñ¿¡ íá⌐Γ.
-
- Åα¿¼Ñτá¡¿Ñ: àß½¿ óδ ¿ß»«½∞ºπÑΓÑ ñ¿αÑ¬Γ¿óδ .MODEL, PROC
- ¿ ARG, Γ« ÇßßѼí½Ñα áóΓ«¼áΓ¿τÑ߬¿ ñ«íáó½∩ÑΓ ó« óßÑ ¿¡ßΓαπ¬-
- µ¿¿ RET τ¿ß½« íá⌐Γ ¿ºó½Ñ¬áѼδσ »áαá¼ÑΓα«ó.
-
-
-
-
- TASM2 #2-5/䫬 = 244 =
-
- ä«ßΓπ» ¬ »áαá¼ÑΓαá¼
- -----------------------------------------------------------------
-
- è«úñá »«½πτáÑΓ π»αáó½Ñ¡¿Ñ óáΦá »«ñ»α«úαá¼¼á ¡á Æπαí« ÇßßѼí-
- ½ÑαÑ, óÑαΦ¿¡á ßΓѬá íπñÑΓ ß«ñÑαªáΓ∞ áñαÑß ó«ºóαáΓá (ñóá ¿½¿ τÑΓδ-
- αÑ ß½«óá, ó ºáó¿ß¿¼«ßΓ¿ «Γ Γ«ú«, ∩ó½∩ÑΓß∩ ½¿ »«ñ»α«úαá¼¼á í½¿ª¡Ñ⌐
- ¿½¿ ñá½∞¡Ñ⌐), á ñá½ÑÑ íπñπΓ ¡áσ«ñ¿Γß∩ »ÑαÑñáóáѼδÑ »áαá¼ÑΓαδ.
- (Åα¿¼Ñτá¡¿Ñ: Åα¿ óδτ¿ß½Ñ¡¿¿ áñαÑß«ó »áαá¼ÑΓα«ó ¡πª¡« »α¿¡¿¼áΓ∞ ó«
- ó¡¿¼á¡¿Ñ αÑú¿ßΓαδ, Γá¬¿Ñ ¬á¬ BP, ß«ñÑন¼«Ñ ¬«Γ«αδσ Γá¬ªÑ ¼«ªÑΓ
- íδΓ∞ ºá¡ÑßÑ¡« ó ßΓѬ.)
-
- æπΘÑßΓóπÑΓ Γα¿ «ß¡«ó¡δσ ¼ÑΓ«ñá ñ«ßΓπ»á ¬ »áαá¼ÑΓαá¼, »ÑαÑñá-
- óáѼδσ Æπαí« Åá߬á½Ñ¼ óáΦÑ⌐ »«ñ»α«úαá¼¼Ñ ¡á Æπαí« ÇßßѼí½ÑαÑ. éδ
- ¼«ªÑΓÑ:
-
- - ¿ß»«½∞º«óáΓ∞ ñ½∩ áñαÑßᵿ¿ ¬ ßΓѬπ αÑú¿ßΓα BP;
- - ñ½∩ »«½πτÑ¡¿∩ »áαá¼ÑΓα«ó ¿ß»«½∞º«óáΓ∞ ñαπú«⌐ íẫóδ⌐ ¿½¿
- ¿¡ñѬߡδ⌐ αÑú¿ßΓα;
- - ¿ºó½Ñτ∞ ¿º ßΓѬá áñαÑß ó«ºóαáΓá, á ºáΓѼ »áαá¼ÑΓαδ.
-
- ÅÑαóδ⌐ ¿ óΓ«α«⌐ ¼ÑΓ«ñδ í«½ÑÑ ß½«ª¡δ, ¿ ¼δ αáß߬áªÑ¼ « ¡¿σ ó
- ß½ÑñπεΘ¿σ ñóπσ αáºñѽáσ. ÆαÑΓ¿⌐ ¼ÑΓ«ñ »αÑñπß¼áΓα¿óáÑΓ ¿ºó½ÑτÑ¡¿Ñ
- ¿º ßΓÑ¬á ¿ ß«σαá¡Ñ¡¿Ñ áñαÑßá ó«ºóαáΓá, á ºáΓѼ ¿ºó½ÑτÑ¡¿∩ »áαá-
- ¼ÑΓα«ó ¿ ºá»¿ß¿ ¿σ ó αÑú¿ßΓαδ. ïπτΦÑ óßÑú« φëà ¼ÑΓ«ñ αáí«ΓáÑΓ,
- ¬«úñá óáΦá »«ñ»α«úαá¼¼á ¡Ñ ΓαÑíπÑΓ »α«ßΓαá¡ßΓóá ñ½∩ ½«¬á½∞¡δσ »Ñ-
- αѼѡ¡δσ.
-
-
-
-
- TASM2 #2-5/䫬 = 245 =
-
- êß»«½∞º«óá¡¿Ñ ñ½∩ áñαÑßᵿ¿ ¬ ßΓѬπ αÑú¿ßΓαá BP
- -----------------------------------------------------------------
-
- ÅÑαóδ⌐ ¿ ¡á¿í«½ÑÑ τáßΓ« ¿ß»«½∞ºπѼδ⌐ ¼ÑΓ«ñ ñ«ßΓπ»á ¬ »áαá-
- ¼ÑΓαá¼, »ÑαÑñáóáÑ¼δ¼ ¿º Æπαí« Åá߬á½∩ ó Æπαí« ÇßßѼí½Ñα, ºá¬½ετá-
- ÑΓß∩ ó Γ«¼, τΓ«íδ ¿ß»«½∞º«óáΓ∞ ñ½∩ áñαÑßᵿ¿ ¬ ßΓѬπ αÑú¿ßΓα BP.
- ìá»α¿¼Ñα:
-
- CODE SEGMENT
- ASSUME CS:CODE
- MyProc PROC FAR ; procedure MyProc(i,j : integer);
- PUBLIC MyProc
- j EQU WORD PTR [bp+6] ; j ¡áσ«ñ¿Γß∩ ¡áñ ß«σαá¡Ñ¡¡δ¼ BP
- ; ¿ áñαÑß«¼ ó«ºóαáΓá
- i EQU WORD PTR [bp+8] ; i αáß»«½áúáÑΓß∩ ¡áñ j
- push bp ; ¡πª¡« ß«σαá¡¿Γ∞ BP óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
- mov bp,sp ; BP ΓÑ»Ñα∞ π¬áºδóáÑΓ ¡á óÑαΦ¿¡π
- ; ßΓѬá
- mov ax,i ; áñαÑßπѼß∩ ¬ i τÑαѺ BP
- .
- .
- .
-
- Åα¿ óδτ¿ß½Ñ¡¿¿ ß¼ÑΦÑ¡¿⌐ ó ßΓÑ¬Ñ »áαá¼ÑΓα«ó, ¬ ¬«Γ«αδ¼ ¼δ «í-
- αáΘáѼß∩ Γᬿ¼ «íαẫ¼, ¡πª¡« »«¼¡¿Γ∞, τΓ« 2 íá⌐Γá ¿ß»«½∞ºπεΓß∩
- ñ½∩ ß«σαá¡Ñ¡¡«ú« αÑú¿ßΓαá BP.
-
- ÄíαáΓ¿ΓÑ ó¡¿¼á¡¿Ñ ¡á ¿ß»«½∞º«óá¡¿Ñ ó ñá¡¡«¼ »α¿¼ÑαÑ »α¿αáó-
- ¡¿óá¡¿⌐. Ä¡¿ »«ºó«½∩εΓ ßñѽáΓ∞ »α«úαá¼¼π í«½ÑÑ »«¡∩Γ¡«⌐. ô ¡¿σ
- ÑßΓ∞ Γ«½∞¬« «ñ¿¡ ¡Ññ«ßΓáΓ«¬: »«ß¬«½∞¬π ñ½∩ óδ»«½¡Ñ¡¿∩ Γᬫú« α«ñá
- »α¿αáó¡¿óá¡¿⌐ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ñ¿αÑ¬Γ¿óπ EQU (á ¡Ñ =), ó
- ñá¡¡«⌐ ¿ßσ«ñ¡«¼ Σá⌐½Ñ Æπαí« ÇßßѼí½Ñαá óδ ¡Ñ ß¼«ªÑΓÑ »ÑαÑ«»αÑñÑ-
- ½¿Γ∞ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ i ¿ j. Äñ¿¡ ¿º ß»«ß«í«ó «í«⌐Γ¿ φΓ« ºá¬½ετáÑΓ-
- ß∩ ó Γ«¼, τΓ«íδ ¿ß»«½∞º«óáΓ∞ í«½ÑÑ «»¿ßáΓѽ∞¡δÑ ¿¼Ñ¡á »áαá¼ÑΓα«ó,
- τΓ«íδ «¡¿ ¡Ñ »«óΓ«α∩½¿ß∞, ½¿í« ¼«ª¡« áßßÑ¼í½¿α«óáΓ∞ ¬áªñπε »«ñ-
- »α«úαá¼¼π ÇßßѼí½Ñαá «Γñѽ∞¡«.
-
-
-
-
- TASM2 #2-5/䫬 = 246 =
-
- ä¿αÑ¬Γ¿óá ARG
- -----------------------------------------------------------------
-
- ò«Γ∩ ¼«ª¡« «íαáΘáΓ∞ß∩ ¬ »áαá¼ÑΓαá¼ τÑαѺ αÑú¿ßΓα BP, Æπαí«
- ÇßßѼí½Ñα »αÑñπß¼áΓα¿óáÑΓ á½∞ΓÑα¡áΓ¿óπ óδτ¿ß½Ñ¡¿ε ß¼ÑΘÑ¡¿⌐ ó ßΓÑ-
- ¬Ñ ¿ óδ»«½¡Ñ¡¿ε ΓѬßΓ«óδσ »α¿ßóá¿óá¡¿⌐. ¥Γ« ñ¿αÑ¬Γ¿óá ARG. Åα¿
- ¿ß»«½∞º«óá¡¿¿ ÑÑ ó »α«µÑñπαÑ ñ¿αÑ¬Γ¿óá ARG áóΓ«¼áΓ¿τÑ߬¿ «»αÑñÑ-
- ½∩ÑΓ ß¼ÑΘÑ¡¿∩ »áαá¼ÑΓα«ó «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá BP. Ä¡á óδτ¿ß½∩ÑΓ
- Γá¬ªÑ αẼÑα í½«¬á »áαá¼ÑΓα«ó ¿ ¿ß»«½∞ºπÑΓ Ñú« ó ¿¡ßΓαπ¬µ¿¿ RET.
- ū߬«½∞¬π ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ, ß«ºñáóáѼδÑ »« ñ¿αÑ¬Γ¿óÑ ARG, «»αÑñѽÑ-
- ¡δ Γ«½∞¬« ó ß««ΓóÑΓßΓóπεΘÑ⌐ »α«µÑñπαÑ, ó ¬áªñ«⌐ »α«µÑñπαÑ ¿½¿
- Σπ¡¬µ¿¿ óá¼ ¡Ñ ΓαÑíπÑΓß∩ ¿ß»«½∞º«óáΓ∞ π¡¿¬á½∞¡δÑ ¿¼Ñ¡á »áαá¼ÑΓ-
- α«ó.
-
- Å«¬áªÑ¼, ¬á¬ íπñÑΓ óδú½∩ñÑΓ∞ »α¿¼Ñα »αÑñδñπΘÑú« αáºñѽá,
- Ñß½¿ »ÑαÑ»¿ßáΓ∞ Ñú«, ¿ß»«½∞ºπ∩ ñ¿αÑ¬Γ¿óπ ARG:
-
- CODE SEGMENT
- ASSUME CS:CODE
- MyProc PROC FAR ; procedure MyProc(i,j : integer);
- ; external;
- PUBLIC MyProc
- ARG j : WORD, i : WORD = RetBytes
- push bp ; ¡πª¡« ß«σαá¡¿Γ∞ BP óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
- mov bp,sp ; BP ΓÑ»Ñα∞ π¬áºδóáÑΓ ¡á óÑαΦ¿¡π
- ; ßΓѬá
- mov ax,i ; áñαÑßπѼß∩ ¬ i τÑαѺ BP
- .
- .
- .
-
- ä¿αÑ¬Γ¿óá ARG Æπαí« ÇßßѼí½Ñαá ß«ºñáÑΓ ½«¬á½∞¡δÑ ¿ñÑ¡Γ¿Σ¿¬á-
- Γ«αδ ñ½∩ »áαá¼ÑΓα«ó i ¿ j. ìá óαѼ∩ óδ»«½¡Ñ¡¿∩ »α«µÑñπαδ ßΓ᫬á:
-
- ARG j : WORD, i : WORD = RetBytes
-
- áóΓ«¼áΓ¿τÑ߬¿ »α¿αáó¡¿óáÑΓ ¿ñÑ¡Γ¿Σ¿¬áΓ«α i ¬ [WORD PTR BP+6],
- ¿ñÑ¡Γ¿Σ¿¬áΓ«α j ¬ [WORD PTR BP+8], á ¿ñÑ¡Γ¿Σ¿¬áΓ«α RetBytes - ¬
- τ¿ß½π 4 (αẼÑαπ ó íá⌐Γáσ í½«¬á »áαá¼ÑΓα«ó). é º¡áτÑ¡¿∩σ πτ¿Γδóá-
- ÑΓß∩ ¿ ºá¡ÑßÑ¡¡«Ñ ó ßΓѬ º¡áτÑ¡¿Ñ BP, ¿ αẼÑα áñαÑßá ó«ºóαáΓá:
- Ñß½¿ íδ »α«µÑñπαá MyProc ¿¼Ñ½á í½¿ª¡¿⌐ Γ¿», Γ« i í佫 íδ »α¿αáó-
- ¡Ñ¡« ¬ º¡áτÑ¡¿ε [BP+4], j - ¬ [BP+6], á RetBytes Γá¬ªÑ í佫 íδ
- αáó¡« 4 (ó ½εí«¼ ß½πτáÑ »α«µÑñπαá MyProc ¼«ªÑΓ ºáóÑαΦ¿Γ∞ óδ»«½¡Ñ-
- ¡¿Ñ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ RET RetBytes).
-
-
- TASM2 #2-5/䫬 = 247 =
-
- Åα¿ ¿ß»«½∞º«óá¡¿¿ ñ¿αÑ¬Γ¿óδ ARG ¡πª¡« »«¼¡¿Γ∞, τΓ« »áαá¼ÑΓαδ
- ñ«½ª¡δ »ÑαÑτ¿ß½∩Γ∞ß∩ ó «íαáΓ¡«¼ »«α∩ñ¬Ñ. ū߽Ññ¡¿⌐ »áαá¼ÑΓα »α«-
- µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ Æπαí« Åá߬á½∩ ¡πª¡« αẼÑΘáΓ∞ ó ñ¿αÑ¬Γ¿óÑ ARG
- »Ñαóδ¼ ¿ ¡á«í«α«Γ.
-
- ÄΓ¡«ß¿Γѽ∞¡« ¿ß»«½∞º«óá¡¿∩ ñ¿αÑ¬Γ¿óδ ARG ß Æπαí« Åá߬á½Ñ¼
- ¼«ª¡« ßñѽáΓ∞ ÑΘÑ «ñ¡« ºá¼Ñτá¡¿Ñ. é «Γ½¿τ¿Ñ «Γ ñαπú¿σ ∩ºδ¬«ó,
- Æπαí« Åá߬á½∞ óßÑúñá ºá¡«ß¿Γ ó ßΓѬ »áαá¼ÑΓα-º¡áτÑ¡¿Ñ αẼÑα«¼ ó
- íá⌐Γ, ¬á¬ 16-í¿Γ«ó«Ñ ß½«ó«. Åα¿ φΓ«¼ ß««íΘ¿Γ∞ Æπαí« ÇßßѼí½Ñαπ «
- ñ«»«½¡¿Γѽ∞¡«¼ íá⌐ΓÑ ñ«½ª¡δ óδ. ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« óδ ¡á-
- »¿ß὿ Σπ¡¬µ¿ε, «»¿ßá¡¿Ñ ¬«Γ«α«⌐ ó Åá߬á½Ñ óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «í-
- αẫ¼:
-
- function MyProc(i, j : char) : string; external;
-
- ä¿αÑ¬Γ¿óá ARG ñ½∩ φΓ«⌐ Σπ¡¬µ¿¿ ñ«½ª¡á íδ½á íδ óδú½∩ñÑΓ∞ Γá¬:
-
- ARG j:BYTE: 2, i:BYTE: 2 = RetBytes RETURN result:DWORD
-
- çñÑß∞ : 2 »«ß½Ñ ¬áªñ«ú« áαúπ¼Ñ¡Γá ¡Ñ«íσ«ñ¿¼« π¬áºδóáΓ∞ ñ½∩
- Γ«ú«, τΓ«íδ ß««íΘ¿Γ∞ ÇßßѼí½Ñαπ, τΓ« ¬áªñδ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α ºá¡«-
- ß¿Γß∩ ó ßΓѬ, ¬á¬ ¼áßß¿ó ¿º 2 íá⌐Γ (úñÑ, ó ñá¡¡«¼ ß½πτáÑ, ¼½áñΦ¿⌐
- íá⌐Γ ¬áªñ«⌐ »áαδ ß«ñÑαª¿Γ »«½Ñº¡πε ¿¡Σ«α¼áµ¿ε).
-
- é Σπ¡¬µ¿¿, ó«ºóαáΘáεΘÑ⌐ ßΓ᫬«ó«Ñ º¡áτÑ¡¿Ñ (¬á¬ ñá¡¡á∩ Σπ¡¬-
- µ¿∩), »áαá¼ÑΓα RETURNS ó ñ¿αÑ¬Γ¿óÑ ARG »«ºó«½∩ÑΓ óá¼ «»αÑñѽ¿Γ∞
- »ÑαѼѡ¡πε, »α¿αáó¡Ñ¡¡πε ¬ Γ«¼π ¼ÑßΓπ ó ßΓѬÑ, ¬«Γ«α«Ñ π¬áºδóáÑΓ
- ¡á óαѼѡ¡δ⌐ αѺπ½∞ΓáΓ Σπ¡¬µ¿¿. ÅÑαѼѡ¡á∩ ó RETURNS ¡á αẼÑα (ó
- íá⌐Γáσ) í½«¬á »áαá¼ÑΓα«ó. æ¼. â½áóπ 3 "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá",
- úñÑ « ñ¿αÑ¬Γ¿óÑ ARG αáß߬áºδóáÑΓß∩ í«½ÑÑ »«ñα«í¡«.
-
-
-
-
- TASM2 #2-5/䫬 = 248 =
-
- Æπαí« Åá߬á½∞ ¿ ñ¿αÑ¬Γ¿óá .MODEL
- -----------------------------------------------------------------
-
- ä¿αÑ¬Γ¿óá .MODEL ß »áαá¼ÑΓα«¼ TPASCAL ºáñáÑΓ π»α«ΘÑ¡¡πε ßÑú-
- ¼Ñ¡Γᵿε, ¼«ñѽ∞ »á¼∩Γ¿ ¿ ∩ºδ¬«óπε »«ññÑ᪬π. Éá¡ÑÑ ¼δ πªÑ ó¿ñÑ-
- ½¿, τΓ« ¡πª¡« ßñѽáΓ∞ ó »α«úαá¼¼áσ ÇßßѼí½Ñαá, τΓ«íδ ¼«ª¡« í佫
- ¿ß»«½∞º«óáΓ∞ »α«µÑñπαδ ¿ Σπ¡¬µ¿¿ Åá߬á½∩. ÅαÑ«íαáºπѼ »α¿¼Ñα, ¿ß-
- »«½∞ºπ∩ ó ¡Ñ¼ ñ¿αÑ¬Γ¿óδ .MODEL ¿ PROC:
-
- .MODEL TPASCAL
- .CODE
- MyProc PROC FAR i:BYTE,j:BYTE result:DWORD
- PUBLIC MyProc
- mov ax,i
- .
- .
- .
- ret
-
- çá¼ÑΓ¿¼, τΓ« ΓÑ»Ñα∞ ¡Ñ ¡πª¡« ºáñáóáΓ∞ »áαá¼ÑΓαδ ó «íαáΓ¡«¼
- »«α∩ñ¬Ñ. ìÑ ΓαÑíπÑΓß∩ Γá¬ªÑ ¼áßßá ñαπú¿σ «»ÑαáΓ«α«ó. êß»«½∞º«óá-
- ¡¿Ñ ó ñ¿αÑ¬Γ¿óÑ .MODEL ¬½ετÑó«ú« ß½«óá TPASCAL ºáñáÑΓ ¿ß»«½∞º«óá-
- ¡¿Ñ ß«ú½áΦÑ¡¿⌐ Åá߬á½∩, «»αÑñѽ∩ÑΓ ¿¼Ñ¡á ßÑú¼Ñ¡Γ«ó, óδ»«½¡∩ÑΓ
- ¿¡ßΓαπ¬µ¿¿ PUSH BP ¿ MOV BP,SP ¿ ºáñáÑΓ Γá¬ªÑ ó«ºóαáΓ ß »«¼«Θ∞ε
- ¿¡ßΓαπ¬µ¿⌐ POP BP ¿ RET N (úñÑ N - τ¿ß½« íá⌐Γ »áαá¼ÑΓα«ó).
-
- êß»«½∞º«óá¡¿Ñ ñαπú«ú« íẫó«ú« ¿½¿ ¿¡ñѬߡ«ú« αÑú¿ßΓαá
- -----------------------------------------------------------------
-
- éΓ«α«⌐ ß»«ß«í ñ«ßΓπ»á ¬ »áαá¼ÑΓαá¼ ß«ßΓ«¿Γ ó ¿ß»«½∞º«óá¡¿¿
- ñ½∩ »«½πτÑ¡¿∩ φΓ¿σ »áαá¼ÑΓα«ó ñαπú«ú« íẫó«ú« ¿½¿ ¿¡ñѬߡ«ú« αÑ-
- ú¿ßΓαá (BX, SI ¿½¿ DI). ìπª¡« «ñ¡á¬« »«¼¡¿Γ∞, τΓ« »« π¼«½τá¡¿ε
- ßÑú¼Ñ¡Γ¡δ¼ αÑú¿ßΓα«¼ ñ½∩ ¡¿σ ∩ó½∩ÑΓß∩ αÑú¿ßΓα DS, á ¡Ñ SS. Å«φ-
- Γ«¼π ñ½∩ ¿σ ¿ß»«½∞º«óá¡¿∩ óá¼ »α¿ñÑΓß∩ »α¿¼Ñ¡∩Γ∞ »αÑΣ¿¬ß »ÑαÑ«»-
- αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá.
-
- Åα¿óÑñѼ »α¿¼Ñα ¿ß»«½∞º«óá¡¿∩ ñ½∩ »«½πτÑ¡¿∩ »áαá¼ÑΓα«ó αÑ-
- ú¿ßΓαá BX:
-
- CODE SEGMENT
- ASSUME CS:CODE
- MyProc PROC FAR ; procedure MyProc(i,j : integer);
- PUBLIC MyProc
- j EQU WORD PTR SS:[BX+4] ; j ¡áσ«ñ¿Γß∩ ¡áñ ß«σαá¡Ñ¡¡δ¼
- ; BP ¿ áñαÑß«¼ ó«ºóαáΓá
-
- TASM2 #2-5/䫬 = 249 =
-
- i EQU WORD PTR SS:[bp+8] ; i αáß»«½áúáÑΓß∩ ¡áñ j
- mov bx,sp ; BX ΓÑ»Ñα∞ π¬áºδóáÑΓ ¡á óÑαΦ¿¡π
- ; ßΓѬá
- mov ax,i ; áñαÑßπѼß∩ ¬ i τÑαѺ BX
- .
- .
- .
-
- é ΓÑσ »α«úαá¼¼áσ, úñÑ ¡ÑΓ í«½∞Φ«ú« τ¿ß½á ßß佫¬ ¡á »áαá¼ÑΓ-
- αδ, Γᬫ⌐ ¼ÑΓ«ñ »«ºó«½∩ÑΓ ßφ¬«¡«¼¿Γ∞ óαѼ∩ ¿ ¼ÑßΓ«. Å«τѼπ? Å«Γ«-
- ¼π, τΓ« ó «Γ½¿τ¿Ñ «Γ BP, αÑú¿ßΓα BX ¡Ñ ΓαÑíπÑΓß∩ ó«ßßΓá¡áó½¿óáΓ∞
- ó ¬«¡µÑ »α«úαá¼¼δ.
-
- ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ ó Æπαí« Åá߬á½Ñ
- -----------------------------------------------------------------
-
- é ºáó¿ß¿¼«ßΓ¿ «Γ Γ¿»á αѺπ½∞ΓáΓá Σπ¡¬µ¿¿ Æπαí« Åá߬á½∩ ó«ºó-
- αáΘáεΓ ßó«¿ αѺπ½∞ΓáΓδ αẽ¿τ¡δ¼¿ ß»«ß«íἿ.
-
- ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ ߬á½∩α¡«ú« Γ¿»á
-
- ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ ߬á½∩α¡δσ Γ¿»«ó ó«ºóαáΘáεΓß∩ ó αÑú¿ßΓαáσ
- µÑ¡Γαá½∞¡«ú« »α«µÑßß«αá (ûÅ). üá⌐Γ«óδÑ º¡áτÑ¡¿∩ ó«ºóαáΘáεΓß∩ ó
- αÑú¿ßΓαÑ AL, º¡áτÑ¡¿∩ αẼÑα«¼ ó 2 íá⌐Γá - ó αÑú¿ßΓαÑ AX,
- 4-íá⌐Γ«óδÑ º¡áτÑ¡¿∩ - ó »áαÑ αÑú¿ßΓα«ó DX:AX (ßΓáαΦÑÑ ß½«ó« ¡áσ«-
- ñ¿Γß∩ ó αÑú¿ßΓαÑ DX).
-
- ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ óÑΘÑßΓóÑ¡¡«ú« Γ¿»á
-
- ÉѺπ½∞ΓáΓδ ¿ß»«½∞ºπѼ«ú« ó Æπαí« Åá߬á½Ñ 6-íá⌐Γ«ó«ú« »α«ú-
- αá¼¼¡« φ¼π½¿απѼ«ú« óÑΘÑßΓóÑ¡¡«ú« Γ¿»á ó«ºóαáΘáεΓß∩ ó ΓαÑσ αÑ-
- ú¿ßΓαáσ ûÅ. ìá¿í«½ÑÑ º¡áτáΘÑÑ (ßΓáαΦÑÑ) ß½«ó« ó«ºóαáΘáÑΓß∩ ó DX,
- ßαÑñ¡ÑÑ - ó BX, á ¡á¿¼Ñ¡ÑÑ º¡áτáΘÑÑ - ó AX.
-
- ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ Γ¿»«ó ß«»α«µÑßß«αá 8087
-
- ÉѺπ½∞ΓáΓδ Γ¿»«ó, ¿ß»«½∞ºπεΘ¿σß∩ ß«»α«µÑßß«α«¼ 8087, ó«ºóαá-
- ΘáεΓß∩ ó αÑú¿ßΓαÑ óÑαΦ¿¡δ ßΓѬá ST(0) (¿½¿ »α«ßΓ« ST).
-
- ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ ßΓ᫬«ó«ú« Γ¿»á
-
- ÉѺπ½∞ΓáΓδ ßΓ᫬«ó«ú« Γ¿»á ó«ºóαáΘáεΓß∩ ó« óαѼѡ¡«⌐ αáí«τÑ⌐
- «í½áßΓ¿, óδñѽ∩Ѽ«⌐ Æπαí« Åá߬á½Ñ¼ »ÑαÑñ ó맮ó«¼. ô¬áºáΓѽ∞ ñá½∞-
- ¡Ñú« Γ¿»á ¡á φΓπ «í½áßΓ∞ ºá¡«ß¿Γß∩ ó ßΓѬ »ÑαÑñ ºá¡ÑßÑ¡¿Ñ¼ »Ñαó«-
- ú« »áαá¼ÑΓαá. çá¼ÑΓ¿¼, τΓ« φëà π¬áºáΓѽ∞ ¡Ñ ∩ó½∩ÑΓß∩ τáßΓ∞ε
-
- TASM2 #2-5/䫬 = 250 =
-
- ß»¿ß¬á »áαá¼ÑΓα«ó.
-
- Åα¿¼Ñτá¡¿Ñ: ìÑ πñá½∩⌐ΓÑ ¿º ßΓÑ¬á »«½πτÑ¡¡δ⌐ ó αѺπ½∞-
- ΓáΓÑ π¬áºáΓѽ∞, Γᬠ¬á¬ Æπαí« Åá߬á½∞ «ª¿ñáÑΓ, τΓ« »«ß½Ñ
- ó맮óá «¡ íπñÑΓ ñ«ßΓπ»Ñ¡.
-
- ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ Γ¿»á π¬áºáΓѽ∞
-
- ÉѺπ½∞ΓáΓδ π¬áºáΓѽ∞ ó«ºóαáΘáεΓß∩ ó »áαÑ αÑú¿ßΓα«ó DX:AX
- (ßÑú¼Ñ¡Γ:ß¼ÑΘÑ¡¿Ñ).
-
-
- éδñѽѡ¿Ñ »α«ßΓαá¡ßΓóá ñ½∩ ½«¬á½∞¡δσ ñá¡¡δσ
- -----------------------------------------------------------------
-
- éáΦ¿ »α«úαá¼¼δ, ¡á»¿ßá¡¡δÑ ¡á Æπαí« ÇßßѼí½ÑαÑ, ¼«úπΓ óδñÑ-
- ½∩Γ∞ »α«ßΓαá¡ßΓó« ñ½∩ ßó«¿σ ß«íßΓóÑ¡¡δσ »ÑαѼѡ¡δσ, ¬á¬ »«ßΓ«∩¡-
- ¡δσ (ßΓáΓ¿τÑ߬¿σ), Γ« ÑßΓ∞ ß«σαá¡∩εΘ¿σß∩ ó »α«¼Ñªπ⪥ ¼Ñªñπ ó맮-
- óἿ, Γᬠ¿ ñ½∩ óαѼѡ¡δσ (¬«Γ«αδÑ »«ß½Ñ ó맮óá íπñπΓ »«ΓÑα∩¡δ).
- Äíá φΓ¿σ ß½πτá∩ «íßπªñáεΓß∩ ó ß½ÑñπεΘ¿σ αáºñѽáσ.
-
- éδñѽѡ¿Ñ «íΘÑñ«ßΓπ»¡«⌐ ßΓáΓ¿τÑ߬«⌐ »á¼∩Γ¿
- -----------------------------------------------------------------
-
- Æπαí« Åá߬á½∞ »«ºó«½∩ÑΓ ó »α«úαá¼¼áσ Æπαí« ÇßßѼí½Ñαá αѺÑα-
- ó¿α«óáΓ∞ »α«ßΓαá¡ßΓó« ñ½∩ ßΓáΓ¿τÑ߬¿σ »ÑαѼѡ¡δσ ó ßÑú¼Ñ¡Γáσ ú½«-
- íá½∞¡δσ ñá¡¡δσ (DATA ¿½¿ DSEG). ùΓ«íδ óδñѽ¿Γ∞ φΓ« »α«ßΓαá¡ßΓó«,
- ¼«ª¡« »α«ßΓ« ¿ß»«½∞º«óáΓ∞ Γá¬¿Ñ ñ¿αÑ¬Γ¿óδ, ¬á¬ DB, DW ¿ Γ.ñ. ìá»-
- α¿¼Ñα:
-
- DATA SEGMENT PUBLIc
- MyInt DW ? ; ºáαѺÑαó¿α«óáΓ∞ ß½«ó«
- MyByte DB ? ; ºáαѺÑαó¿α«óáΓ∞ íá⌐Γ
- .
- .
- .
- DATA ENDS
-
- ÅÑαѼѡ¡δσ, óδñѽ∩Ѽδσ Æπαí« ÇßßѼí½Ñα«¼ ó ßÑú¼Ñ¡ΓÑ ú½«íá½∞-
- ¡δσ ñá¡¡δσ, ¬áßáεΓß∩ ñóá ó᪡δσ «úαá¡¿τÑ¡¿∩. é«-»Ñαóδσ, φΓ¿ »ÑαÑ-
- ¼Ñ¡¡δ¼¿ ∩ó½∩εΓß∩ "¼ÑßΓ¡δ¼¿", «¡¿ ¡Ññ«ßΓπ»¡δ »α«úαá¼¼Ñ Æπαí« Åáß-
- ¬á½∩ (σ«Γ∩ óδ ¼«ªÑΓÑ »ÑαÑñáóáΓ∞ π¬áºáΓѽ¿ ¡á ¡¿σ). é«-óΓ«αδσ, «¡¿
- ¡Ñ ¼«úπΓ íδΓ∞ »αÑñóáα¿Γѽ∞¡« ¿¡¿µ¿á½¿º¿α«óá¡δ, ¬á¬ Γ¿»¿º«óá¡¡δÑ
- ¬«¡ßΓá¡Γδ. Ä»ÑαáΓ«α:
-
-
- TASM2 #2-5/䫬 = 251 =
-
- MyInt DW 42 ; φΓ« ¡Ñ ¿¡¿µ¿á½¿º¿απÑΓ
- ; MyInt º¡áτÑ¡¿Ñ¼ 42
-
- ¡Ñ ó맮óÑΓ «Φ¿í¬¿ »α¿ ¬«¼»«¡«ó¬Ñ ¼«ñπ½∩ ß »α«úαá¼¼«⌐ Æπαí« Åá߬á-
- ½∩, «ñ¡á¬« MyInt »α¿ óδ»«½¡Ñ¡¿¿ »α«úαá¼¼δ ¡Ñ íπñÑΓ ¿¼ÑΓ∞ º¡áτÑ¡¿Ñ
- 42.
-
- ¥Γ¿ «úαá¡¿τÑ¡¿∩ ¼«ª¡« «í«⌐Γ¿, «»¿ßáó »ÑαѼѡ¡δÑ ¿½¿ Γ¿»¿º«-
- óá¡¡δÑ ¬«¡ßΓá¡Γδ Æπαí« Åá߬á½∩ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EXTRN, τΓ«
- ßñѽáÑΓ ¿σ ñ«ßΓπ»¡δ¼¿ Æπαí« ÇßßѼí½Ñαπ.
-
-
-
-
- TASM2 #2-5/䫬 = 252 =
-
- éδñѽѡ¿Ñ óαѼѡ¡«⌐ »á¼∩Γ¿
- -----------------------------------------------------------------
-
- é óáΦ¿σ »α«úαá¼¼áσ ¡á Æπαí« Åá߬á½Ñ ¼«ª¡« óδñѽ∩Γ∞ ΓᬪÑ
- óαѼѡ¡πε »á¼∩Γ∞ (½«¬á½∞¡δÑ »ÑαѼѡ¡δÑ) ó ßΓÑ¬Ñ ¡á óαѼ∩ óδ»«½¡Ñ-
- ¡¿∩ ¬áªñ«ú« ó맮óá. ÅÑαÑñ ó«ºóαáΓ«¼ π»αáó½Ñ¡¿∩ φΓá »á¼∩Γ∞ ñ«½ª¡á
- íδΓ∞ «ßó«í«ªñÑ¡á, á º¡áτÑ¡¿Ñ αÑú¿ßΓαá BP ó«ßßΓá¡«ó½Ñ¡«. é ß½Ññπε-
- ΘѼ »α¿¼ÑαÑ »α«µÑñπαá MyProc αѺÑαó¿απÑΓ »α«ßΓαá¡ßΓó« ñ½∩ ñóπσ
- µÑ½δσ »ÑαѼѡ¡δσ a ¿ b:
-
- CODE SEGMENT
- ASSUME CS:CODE ; procedure MyProc(i : integer);
- MyProc PROC FAR
- PUBLIC MyProc
- LOCAL a : WORD, b : WORD = LocalSpace ; a ó [bp-2]
- ; b - ó [bp-4]
- i equ word ptr [bp+6] ; »áαá¼ÑΓα i ¡áσ«ñ¿Γß∩ ¡áñ
- ; ß«σαá¡Ñ¡¡δ¼ BP ¿ áñαÑß«¼
- ; ó«ºóαáΓá
- push bp ; ¡πª¡« ß«σαá¡¿Γ∞ BP óδºδóáεΘÑ⌐
- ; »α«úαá¼¼δ
- mov bp,sp ; ΓÑ»Ñα∞ BP π¬áºδóáÑΓ ¡á
- ; óÑαΦ¿¡π ßΓѬá
- sub sp,LocalSpace ; ºáαѺÑαó¿α«óáΓ∞ »α«ßΓαá¡ßΓ-
- ; ó« ñ½∩ ñóπσ ß½«ó
- mov ax,42 ; ºáúαπº¿Γ∞ ó AX ¡áτá½∞¡«Ñ
- ; º¡áτÑ¡¿Ñ A
- mov a,ax ; ¿ ó A
- xor ax,ax ; «τ¿ßΓ¿Γ∞ αÑú¿ßΓα AX
- mov b,ax ; ¿¡¿µ¿á½¿º¿α«óáΓ∞ B ¡π½Ñ¼
- mov b,ax ; óδ»«½¡¿Γ∞ ¡πª¡δÑ ñÑ⌐ßΓó¿∩
- .
- .
- .
- mov sp,bp ; ó«ßßΓá¡«ó¿Γ∞ ¿ßσ«ñ¡«Ñ
- ; º¡áτÑ¡¿Ñ SP
- mov bp ; ó«ßßΓá¡«ó¿Γ∞ ¿ßσ«ñ¡«Ñ
- ; º¡áτÑ¡¿Ñ αÑú¿ßΓαá BP
- ret 2
- MyProc ENDP
- CODE ENDS
- END
-
- çá¼ÑΓ¿¼, τΓ« ñ¿αÑ¬Γ¿óá Æπαí« ÇßßѼí½Ñαá LOCAL ¿ß»«½∞ºπÑΓß∩
- ñ½∩ ß«ºñá¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ¿ óδñѽѡ¿∩ »α«ßΓαá¡ßΓóá ñ½∩ ½«¬á½∞-
- ¡δσ »ÑαѼѡ¡δσ. Ä»ÑαáΓ«α:
-
- TASM2 #2-5/䫬 = 253 =
-
-
- LOCAL a : WORD, b : WORD = LocalSpace
-
- ¡á óαѼ∩ óδ»«½¡Ñ¡¿∩ »α«µÑñπαδ »α¿ßóá¿óáÑΓ ¿ñÑ¡Γ¿Σ¿¬áΓ«απ a º¡áτÑ-
- ¡¿Ñ [BP-2], ¿ñÑ¡Γ¿Σ¿¬áΓ«απ b - º¡áτÑ¡¿Ñ [BP-4], á ¿ñÑ¡Γ¿Σ¿¬áΓ«απ
- LocalSpace - τ¿ß½« 4 (αẼÑα «í½áßΓ¿ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ). Å«ß-
- ¬«½∞¬π ¡ÑΓ ß««ΓóÑΓßΓóπεΘÑú« «»ÑαáΓ«αá ñ½∩ ß«ºñá¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«-
- α«ó, ßßδ½áεΘ¿σß∩ ¡á »áαá¼ÑΓαδ, óδ ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ »α¿ßóá¿óá-
- ¡¿Ñ i º¡áτÑ¡¿∩ [BP+6].
-
- ü«½ÑÑ αáºπ¼¡δ⌐ ß»«ß«í ¿¡¿µ¿á½¿ºáµ¿¿ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ
- ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ«íδ ó¼ÑßΓ« π¼Ñ¡∞ΦÑ¡¿∩ SP ºá¡ÑßΓ¿ ó ßΓѬ ¿σ
- º¡áτÑ¡¿∩. Æá¬¿¼ «íαẫ¼, óδ ñ«½ª¡δ ºá¼Ñ¡¿Γ∞ SUB SP,LocalSpace
- ¿¡ßΓαπ¬µ¿∩¼¿:
-
- mov ax,42 ; »«½πτ¿Γ∞ ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ
- ; ñ½∩ a
- push ax ; ºá¡ÑßΓ¿ Ñú« ó a
- xor ax,ax ; «í¡π½¿Γ∞ AX
- push ax ; ¿ ºá¡ÑßΓ¿ 0 ó b
-
- àß½¿ óδ ¿ß»«½∞ºπÑΓÑ φΓ«Γ ß»«ß«í, ¡πª¡« ó¡¿¼áΓѽ∞¡« «Γ߽Ѫ¿-
- óáΓ∞ ßΓѬ! ìÑ ß½ÑñπÑΓ ßßδ½áΓ∞ß∩ ¡á ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ a ¿ b »ÑαÑñ
- ΓѼ, ¬á¬ «¡¿ ºá¡ÑßÑ¡δ ó ßΓѬ.
-
- äαπú«⌐ ó¿ñ «»Γ¿¼¿ºáµ¿¿ »αÑñπß¼áΓα¿óáÑΓ ¿ß»«½∞º«óá¡¿Ñ ¿¡ßΓ-
- απ¬µ¿¿ PUSH CONST ñ½∩ ¿¡¿µ¿á½¿ºáµ¿¿ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ (ÑÑ ¼«ª-
- ¡« ¿ß»«½∞º«óáΓ∞ »α¿ ¡á½¿τ¿¿ »α«µÑßß«α«¼ 80186, 80286 ¿ 80386),
- ¿½¿ ß«σαá¡Ñ¡¿Ñ BP ó αÑú¿ßΓαÑ ó¼ÑßΓ« ºá¡ÑßÑ¡¿∩ Ñú« ó ßΓѬ (Ñß½¿
- ÑßΓ∞ ¡Ñ¿ß»«½∞º«óá¡¡δÑ αÑú¿ßΓαδ).
-
-
- Åα¿¼Ñαδ »«ñ»α«úαá¼¼ ¡á ÇßßѼí½ÑαÑ ñ½∩ Æπαí« Åá߬á½∩
- -----------------------------------------------------------------
-
- é ñá¡¡«¼ αáºñÑ½Ñ óδ ñáñ¿¼ ¡Ñ¬«Γ«αδÑ »α¿¼Ñαδ »«ñ»α«úαá¼¼ ¡á
- ∩ºδ¬Ñ ÇßßѼí½Ñαá, ¬«Γ«αδÑ óδ ¼«ªÑΓÑ óδºδóáΓ∞ ¿º »α«úαá¼¼ Æπαí«
- Åá߬á½∩.
-
- Å«ñ»α«úαá¼¼á ΦÑßΓ¡áñµáΓ¿α¿τ¡«ú« »αÑ«íαẫóá¡¿∩ «íΘÑú« ¡áº¡áτÑ¡¿∩
- -----------------------------------------------------------------
-
- æ«ñÑαªáΘ¿Ñß∩ ó »áαá¼ÑΓαÑ num íá⌐Γδ »αÑ«íαáºπεΓß∩ ó ßΓ᫬π
- ΦÑßΓ¡áñµáΓ¿α¿τ¡δσ µ¿Σα ñ½¿¡δ (byteCount * 2). ū߬«½∞¬π ¬áªñδ⌐
- íá⌐Γ »«α«ªñáÑΓ ñóá ß¿¼ó«½á, ¼á¬ß¿¼á½∞¡«Ñ º¡áτÑ¡¿Ñ byteCount αáó¡«
-
- TASM2 #2-5/䫬 = 254 =
-
- 127 (¡Ñ »α«óÑα∩ÑΓß∩). ä½∩ »αÑ«íαẫóá¡¿∩ ¬áªñ«⌐ úαπ»»δ (»« 4 í¿-
- Γá) ó ΦÑßΓ¡áñµáΓ¿α¿τ¡πε µ¿Σαπ ¼δ ñ½∩ ߬«α«ßΓ¿ ¿ß»«½∞ºπѼ »«ß½Ññ«-
- óáΓѽ∞¡«ßΓ∞ add-daa-adc-daa.
-
- Åα«µÑñπαá HexStr ¡á»¿ßá¡á Γá¬, τΓ« óδºδóáΓ∞ß∩ «¡á ñ«½ª¡á ß
- »«¼«Θ∞ε ó맮óá ñá½∞¡Ñú« Γ¿»á. ¥Γ« «º¡áτáÑΓ, τΓ« ÑÑ ß½ÑñπÑΓ «»¿ßδ-
- óáΓ∞ ó ¿¡ΓÑαΣÑ⌐ß¡«⌐ τáßΓ¿ ¼«ñπ½∩ Æπαí« Åá߬á½∩ ¿½¿ ß »«¼«Θ∞ε ñ¿-
- αÑ¬Γ¿óδ ¬«¼»¿½∩Γ«αá {$F+}.
-
- CODE SEGMENT
- ASSUME cs:CODE,ds:NOTHING
-
- ; Åáαá¼ÑΓαδ (+2 ß πτÑΓ«¼ push bp)
-
- byteCount equ byte ptr ss:[bp+6]
- num equ dword ptr ss:[bp+8]
-
- ; ÇñαÑßᵿ∩ ¬ αѺπ½∞ΓáΓπ Σπ¡¬µ¿¿ (+2 ß πτÑΓ«¼ push bp)
-
- resultPtr equ dword ptr ss:[bp+12]
-
- HexStr PROC FAR
- PUBLIC HexStr
-
- push bp
- mov bp,sp ; »«½πτ¿Γ∞ π¬áºáΓѽ∞
- ; ßΓѬá
- les di,resultPtr ; »«½πτ¿Γ∞ áñαÑß
- ; αѺπ½∞ΓáΓá Σπ¡¬µ¿¿
- mov dx,ds ; ß«σαá¡¿Γ∞ DS Æπαí«
- ; Åá߬á½∩ ó DX
- lds si,sum ; »«½πτ¿Γ∞ áñαÑß τ¿ß½á
- mov al,byteCount ; ߬«½∞¬« íá⌐Γ?
- xor ah,ah ; ß½«ó«
- mov cx,ax ; «Γ߽Ѫ¿óáΓ∞ τ¿ß½«
- ; íá⌐Γ ó CX
- add si,ax ; ¡áτáΓ∞ ß« ßΓáαΦÑú«
- ; íá⌐Γá τ¿ß½á
- dec si
- shl ax,1 ; ߬«½∞¬« µ¿Σα?
- ; (2/íá⌐Γ)
- cld ; ß«σαá¡¿Γ∞ τ¿ß½« µ¿Σα
- ; (αáí«ΓáΓ∞ ó »α∩¼«¼
- ; ¡á»αáó½Ñ¡¿¿)
- stosb ; ó »α¿Ñ¼¡¿¬Ñ - íá⌐Γ
- ; ñ½¿¡δ ßΓ᫬¿
-
- TASM2 #2-5/䫬 = 255 =
-
- NextLoop:
- std ; ߬᡿α«óáΓ∞ τ¿ß½« «Γ
- ; ßΓáαΦÑú« íá⌐Γá ¬
- ; ¼½áñΦѼπ
- lodsb ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐
- ; íá⌐Γ
- mov ah,al ; ß«σαá¡¿Γ∞ Ñú«
- shr al,1 ; óδñѽ¿Γ∞ ßΓáαΦπε
- ; úαπ»»π í¿Γ
- shr al,1
- shr al,1
- shr al,1
- add al,90h ; ߻ѵ¿á½∞¡á∩ »«ß½Ñ-
- ; ñ«óáΓѽ∞¡«ßΓ∞ ΦÑßΓ¡áñµá-
- ; Γ¿α¿τ¡«ú« »αÑ«íαẫóá¡¿∩
- daa ; ¿ß»«½∞º«óá¡¿Ñ ¿¡ßΓαπ¬µ¿⌐
- ; ADD ¿ DAA
- adc al,40h
- daa ; úαπ»»á »αÑ«íαẫóá¡á
- ; ó ¬«ñ ASCII
- cld ; ß«σαá¡¿¼ ASCII ¿ ß½ÑñπѼ
- ; ñá½ÑÑ
- stosb
- mov al,ah ; »«óΓ«α¿Γ∞ »αÑ«íαẫóá¡¿Ñ
- ; ñ½∩ ¼½áñΦÑ⌐ úαπ»»δ
- and al,0Fh
- add al,90h
- daa
- adc al,40h
- daa
- stosb
- loop HexLoop ; »α«ñ«½ªáΓ∞, »«¬á ¡Ñ
- ; íπñÑΓ óδ»«½¡Ñ¡«
- mov ds,dx
- pop bp
- ret 6 ; »áαá¼ÑΓαδ ºá¡¿¼áεΓ
- ; 6 íá⌐Γ
- HexStr ENDP
- CODE ENDS
- END
-
- Åα¿¼Ñα »α«úαá¼¼δ ¡á Åá߬á½Ñ, úñÑ ¿ß»«½∞ºπÑΓß∩ Σπ¡¬µ¿∩
- HexStr, ¿¼ÑÑΓ ß½ÑñπεΘ¿⌐ ó¿ñ:
-
- Program HexTest;
- var
-
- TASM2 #2-5/䫬 = 256 =
-
- num : word;
- {$F+}
-
- function HexStr (var num; byteCount : byte) : string; external;
-
- {$L HEXSTR.OBJ}
-
- {$F-}
- begin
- num := word;
- Writeln('ÅαÑ«íαẫóá¡¡á∩ ßΓα«¬á ¿¼ÑÑΓ ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ
- »αÑñßΓáó½Ñ¡¿Ñ: ', HexStr(num,Sizeof(num)),'*');
- end.
-
- ä½∩ »«ßΓα«Ñ¡¿∩ ¿ ºá»πß¬á »α¿¼Ñα«ó »α«úαá¼¼δ ¡á Åá߬á½Ñ ¿
- »α«úαá¼¼δ ÇßßѼí½Ñαá ¿ß»«½∞ºπ⌐ΓÑ ß½ÑñπεΘ¿Ñ ¬«¼á¡ñδ ¬«¼á¡ñ¡«ú«
- Σá⌐½á:
-
- TASM HEXSTR
- TPC HEXTEST
- HEXTEST
-
- àß½¿ óδ ¿ß»«½∞ºπÑΓÑ ñ¿αÑ¬Γ¿óπ .MODEL, Γ« »α«úαá¼¼π HexStr
- ¼«ª¡« ºá»¿ßáΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .MODEL TPASCAL
- .CODE
- HexStr PROC FAR num:DWORD,byteCount:BYTE RETURNS resultPtr:DWORD
- PUBLIC HexStr
- les di,resultPtr ; »«½πτ¿Γ∞ áñαÑß
- ; αѺπ½∞ΓáΓá Σπ¡¬µ¿¿
- mov dx,ds ; ß«σαá¡¿Γ∞ DS Æπαí«
- ; Åá߬á½∩ ó DX
- lds si,sum ; »«½πτ¿Γ∞ áñαÑß τ¿ß½á
- mov al,byteCount ; ߬«½∞¬« íá⌐Γ?
- xor ah,ah ; ß½«ó«
- mov cx,ax ; «Γ߽Ѫ¿óáΓ∞ τ¿ß½«
- ; íá⌐Γ ó CX
- add si,ax ; ¡áτáΓ∞ ß« ßΓáαΦÑú«
- ; íá⌐Γá τ¿ß½á
- dec si
- shl ax,1 ; ߬«½∞¬« µ¿Σα?
- ; (2/íá⌐Γ)
- cld ; ß«σαá¡¿Γ∞ τ¿ß½« µ¿Σα
- ; (αáí«ΓáΓ∞ ó »α∩¼«¼
- ; ¡á»αáó½Ñ¡¿¿)
-
- TASM2 #2-5/䫬 = 257 =
-
- stosb ; ó »α¿Ñ¼¡¿¬Ñ - íá⌐Γ
- ; ñ½¿¡δ ßΓ᫬¿
- NextLoop:
- std ; ߬᡿α«óáΓ∞ τ¿ß½« «Γ
- ; ßΓáαΦÑú« íá⌐Γá ¬
- ; ¼½áñΦѼπ
- lodsb ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐
- ; íá⌐Γ
- mov ah,al ; ß«σαá¡¿Γ∞ Ñú«
- shr al,1 ; óδñѽ¿Γ∞ ßΓáαΦπε
- ; úαπ»»π í¿Γ
- shr al,1
- shr al,1
- shr al,1
- add al,90h ; ߻ѵ¿á½∞¡á∩ »«ß½Ñ-
- ; ñ«óáΓѽ∞¡«ßΓ∞ ΦÑßΓ¡áñµá-
- ; Γ¿α¿τ¡«ú« »αÑ«íαẫóá¡¿∩
- daa ; ¿ß»«½∞º«óá¡¿Ñ ¿¡ßΓαπ¬µ¿⌐
- ; ADD ¿ DAA
- adc al,40h
- daa ; úαπ»»á »αÑ«íαẫóá¡á
- ; ó ¬«ñ ASCII
- cld ; ß«σαá¡¿¼ ASCII ¿ ß½ÑñπѼ
- ; ñá½ÑÑ
- stosb
- mov al,ah ; »«óΓ«α¿Γ∞ »αÑ«íαẫóá¡¿Ñ
- ; ñ½∩ ¼½áñΦÑ⌐ úαπ»»δ
- and al,0Fh
- add al,90h
- daa
- adc al,40h
- daa
- stosb
- loop HexLoop ; »α«ñ«½ªáΓ∞, »«¬á ¡Ñ
- ; íπñÑΓ óδ»«½¡Ñ¡«
- mov ds,dx ; ó«ßßΓá¡«ó¿Γ∞ DS
- ; Æπαí« Åá߬á½∩
- ret
- HexStr ENDP
- CODE ENDS
- END
-
- Åα¿ φΓ«¼ óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ Γπ ªÑ »α«úαá¼¼π ¡á Åá߬á½Ñ ¿
- »α«ßΓ« áßßÑ¼í½¿α«óáΓ∞ á½∞ΓÑα¡áΓ¿ó¡δ⌐ óáα¿á¡Γ HexStr ¿ »ÑαѬ«¼»¿-
- ½¿α«óáΓ∞ »α«úαá¼¼π ß »«¼«Θ∞ε Γ«ú« ªÑ ¬«¼á¡ñ¡«ú« Σá⌐½á.
-
-
- TASM2 #2-5/䫬 = 258 =
-
- Åα¿¼Ñα «í¼Ñ¡á ß«ñÑন¼«ú« ñóπσ »ÑαѼѡ¡δσ
- -----------------------------------------------------------------
-
- æ »«¼«Θ∞ε ñá¡¡«⌐ »α«µÑñπαδ óδ ¼«ªÑΓÑ óδ»«½¡¿Γ∞ «í¼Ñ¡ ß«ñÑα-
- ª¿¼«ú« ñóπσ »ÑαѼѡ¡δσ αẼÑαá count. àß½¿ count ¿¼ÑÑΓ º¡áτÑ¡¿Ñ
- 0, Γ« Γ« »α«µÑßß«α »«»δΓáÑΓß∩ »ÑαѬ«»¿α«óáΓ∞ 64è.
-
- CODE SEGMENT
- ASSUME cs:CODE,ds:NOTHING
-
- ; Åáαá¼ÑΓαδ (ºá¼ÑΓ¿¼, τΓ« ¿º-ºá push bp ß¼ÑΘÑ¡¿Ñ
- ; πóѽ¿τ¿óáÑΓß∩ ¡á 2)
-
- var1 equ DWORD PTR ss:[bp+12]
- var2 equ DWORD PTR ss:[bp+8]
- count equ WORD PTR ss:[bp+6]
-
- Exchange PROC FAR
- PUBLIC Exchange
- cld ; «í¼Ñ¡ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
- mov dx,ds ; ß«σαá¡¿Γ∞ αÑú¿ßΓα DS
- push bp
- mov bp,sp ; »«½πτ¿Γ∞ íáºπ ßΓѬá
- lds si,var1 ; »«½πτ¿Γ∞ »Ñαóδ⌐ áñαÑß
- les di,var2 ; »«½πτ¿Γ∞ óΓ«α«⌐ áñαÑß
- mov cx,count ; »«½πτ¿Γ∞ τ¿ß½« »ÑαѼÑΘáѼδσ
- ; íá⌐Γ
- shr cx,1 ; »«½πτ¿Γ∞ ßτÑΓτ¿¬ ß½«ó
- ; (¼½áñΦ¿⌐ í¿Γ -> »ÑαÑ¡«ß)
- jnc ExchangeWord ; Ñß½¿ ¡Ñ ¡ÑτÑΓ¡δ⌐ íá⌐Γ,
- ; ó«⌐Γ¿ ó µ¿¬½
- mov al,es:[di] ; ßτ¿ΓáΓ∞ ¡ÑτÑΓ¡δ⌐ íá⌐Γ
- ; ¿º var2
- movsb ; »ÑαѼÑßΓ¿Γ∞ íá⌐Γ ¿º var1
- ; ó var2
- mov [si-1],al ; ºá»¿ßáΓ∞ var2 ó var1
- jz Finis ; óδ»«½¡Ñ¡«, Ñß½¿ ¡πª¡«
- ; óδ»«½¡¿Γ∞ «í¼Ñ¡ Γ«½∞¬«
- ; «ñ¡«ú« íá⌐Γá
- ExchangeWords:
- mov bx,-2 ; BX - φΓ« πñ«í¡«Ñ ¼ÑßΓ«
- ; ñ½∩ σαá¡Ñ¡¿∩ -2
- ExchangeLoop:
- mov ax,es:[di] ; ßτ¿ΓáΓ∞ ß½«ó« ¿º var2
- movsw ; »ÑαѼÑßΓ¿Γ∞ ¿º var1
- ; ó var2
-
- TASM2 #2-5/䫬 = 259 =
-
- mov [bx][si,ax ; ºá»¿ßáΓ∞ ß½«ó« var2 ó
- ; var1
- loop ExchangeLoop ; »«óΓ«α¿Γ∞ count/2 αáº
- Finis:
- mov ds,dx ; »«½πτ¿Γ∞ «íαáΓ¡« DS
- ; Æπαí« Åá߬á½∩
- pop bp
- ret 10
- Exchange ENDP
- CODE ENDS
- END
-
- Åα«úαá¼¼á Æπαí« Åá߬á½∩, ¬«Γ«αá∩ ¿ß»«½∞ºπÑΓ Σπ¡¬µ¿ε
- Exchange, ¿¼ÑÑΓ ó¿ñ:
-
- program TextExchange;
-
- type
- EmployeeRecord = record
- Name : string[30];
- Address : string[30];
- City : string[15];
- State : string[2];
- Zip : string[10];
- end;
-
- var
- OldEmployee, NewEmployee : EmployeeRecord;
-
- {$F+}
-
- procedure Exchange(var var1,var2; count : word); external;
- {$L XCHANGE.OBJ}
- {$F-}
- begin
- with OldEmployee do
- begin
- Name := 'John Smith';
- Address := ' 123 F Street';
- City := 'Scotts Valley';
- State := 'CA';
- Zip := ' 90000-0000';
- end;
- with NewEmployee do
- begin
- Name := 'Mary Jones';
-
- TASM2 #2-5/䫬 = 260 =
-
- Address := ' 9471 41st Avenue';
- City := 'New York';
- State := 'NY';
- Zip := ' 10000-1111';
- end;
- Writeln('Before: ',OldEmployee.Name,' ',NewEmployee.Name);
- Exchange(OldEmployee,NewEmployee,sizeof(OldEmployee));
- Writeln('After: ',OldEmployeeName,' ',NewEmployee.Name);
- Exchange(OldEmployee,NewEmployee,sizeof(OldEmployee));
- Writeln('After: ',OldEmployeeName,' ',NewEmployee.Name);
- end.
-
- ùΓ«íδ ßΣ«α¼¿α«óáΓ∞ ¿ ºá»πßΓ¿Γ∞ ñá¡¡δÑ »α«úαá¼¼δ ¡á Åá߬á½Ñ ¿
- ÇßßѼí½ÑαÑ, ¿ß»«½∞ºπ⌐ΓÑ ß½ÑñπεΘ¿Ñ ¬«¼á¡ñδ ¬«¼á¡ñ¡«ú« Σá⌐½á:
-
- TASM XCHANGE
- TPC XCHANGE
- XCHANGE
-
- àß½¿ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ .MODEL, Γ« »α«úαá¼¼á Exchange ¡á
- ÇßßѼí½ÑαÑ íπñÑΓ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .MODEL TPASCAL
- .CODE
- Exchange PROC FAR var1:DWORD,var2:DWORD,count:WORD
- PUBLIC Exchange
- cld ; «í¼Ñ¡ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
- mov dx,ds ; ß«σαá¡¿Γ∞ DS
- push bp
- mov bp,sp ; »«½πτ¿Γ∞ íáºπ ßΓѬá
- lds si,var1 ; »«½πτ¿Γ∞ »Ñαóδ⌐ áñαÑß
- les di,var2 ; »«½πτ¿Γ∞ óΓ«α«⌐ áñαÑß
- mov cx,count ; »«½πτ¿Γ∞ τ¿ß½« »ÑαѼÑΘáѼδσ
- ; íá⌐Γ
- shr cx,1 ; »«½πτ¿Γ∞ ßτÑΓτ¿¬ ß½«ó
- ; (¼½áñΦ¿⌐ í¿Γ -> »ÑαÑ¡«ß)
- jnc ExchangeWord ; Ñß½¿ ¡Ñ ¡ÑτÑΓ¡δ⌐ íá⌐Γ,
- ; ó«⌐Γ¿ ó µ¿¬½
- mov al,es:[di] ; ßτ¿ΓáΓ∞ ¡ÑτÑΓ¡δ⌐ íá⌐Γ
- ; ¿º var2
- movsb ; »ÑαѼÑßΓ¿Γ∞ íá⌐Γ ¿º var1
- ; ó var2
- mov [si-1],al ; ºá»¿ßáΓ∞ var2 ó var1
- jz Finis ; óδ»«½¡Ñ¡«, Ñß½¿ ¡πª¡«
- ; óδ»«½¡¿Γ∞ «í¼Ñ¡ Γ«½∞¬«
- ; «ñ¡«ú« íá⌐Γá
-
- TASM2 #2-5/䫬 = 261 =
-
- ExchangeWords:
- mov bx,-2 ; BX - φΓ« πñ«í¡«Ñ ¼ÑßΓ«
- ; ñ½∩ σαá¡Ñ¡¿∩ -2
- ExchangeLoop:
- mov ax,es:[di] ; ßτ¿ΓáΓ∞ ß½«ó« ¿º var2
- movsw ; »ÑαѼÑßΓ¿Γ∞ ¿º var1
- ; ó var2
- mov [bx][si,ax ; ºá»¿ßáΓ∞ ß½«ó« var2 ó
- ; var1
- loop ExchangeLoop ; »«óΓ«α¿Γ∞ count/2 αáº
- Finis:
- mov ds,dx ; »«½πτ¿Γ∞ «íαáΓ¡« DS
- ; Æπαí« Åá߬á½∩
- ret
- Exchage ENDP
- CODE ENDS
- END
-
- éδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ Γπ ªÑ »α«úαá¼¼π ¡á Åá߬á½Ñ ¿ »α«ßΓ«
- áßßÑ¼í½¿α«óáΓ∞ á½∞ΓÑα¡áΓ¿ó¡δ⌐ óáα¿á¡Γ »α«µÑñπαδ Exchánge ¿ »ÑαÑ-
- ¬«¼»¿½¿α«óáΓ∞ »α«úαá¼¼π ß »«¼«Θ∞ε Γ«ú« ªÑ ¬«¼á¡ñ¡«ú« Σá⌐½á.
-
-
-
-
- TASM2 #2-5/䫬 = 262 =
-
- Åα¿¼Ñα á¡á½¿ºá «»Ñαᵿ«¡¡«⌐ ßαÑñδ DOS
- -----------------------------------------------------------------
-
- æ »«¼«Θ∞ε Σπ¡¬µ¿¿ EnvString óδ ß¼«ªÑΓÑ »α«ß¼«ΓαÑΓ∞ «»Ñαᵿ-
- «¡¡πε ßαÑñπ DOS ¿ ¡á⌐Γ¿ ßΓ᫬π ó¿ñá "s=ìàùÆÄ" ¿ ó«ºóαáΓ¿Γ∞ ìàùÆÄ,
- Ñß½¿ φΓ« ¡á⌐ñÑ¡«.
-
- DATA SEGMENT PUBLIC
- EXTRN prefixSeg : Word ; ñáÑΓ áñαÑß PSP
- DATA ENDS
- SEGMENT PUBLIC
- ASSUME cs:CODE,ds:DATA
-
- EnvString PROC FAR
- PUBLIC EnvString
- push bp
- cld ; αáí«ΓáΓ∞ ó »α∩¼«¼
- ; ¡á»αáó½Ñ¡¿¿
- mov es,[prefixSeg] ; »«ß¼«ΓαÑΓ∞ PSP
- mov es,es:[2Ch] ; ES:DI π¬áºδóáεΓ ¡á
- ; «»Ñαᵿ«¡¡πε ßαÑñπ,
- xor di,di ; ¬«Γ«αá∩ óδα«ó¡Ñ¡á ¡á
- ; úαá¡¿µπ »áαáúαáΣá
- mov bp,sp ; ¡á⌐Γ¿ ßΓ᫬π »áαá¼ÑΓα«ó,
- lds si,ss:[bp+6] ; ¬«Γ«αá∩ ß½ÑñπÑΓ ºá
- ; áñαÑß«¼ ó«ºóαáΓá
- ASSUME ds:NOTHING
- lodsb ; »«ß¼«ΓαÑΓ∞ ñ½¿¡π
- or al,al ; «¡á αáó¡á 0?
- jz RetNul ; ñá, ó«ºóαáΓ
- mov ah,al ; ó »α«Γ¿ó¡«¼ ß½πτáÑ
- ; ß«σαá¡¿Γ∞ ÑÑ ó AH
- mov dx,si ; DS:SI ß«ñÑαªáΓ π¬áºáΓѽ∞
- ; ¡á »Ñαóδ⌐ »áαá¼ÑΓα
- ; char
- xor al,al ; ßñѽáΓ∞ Ñú« αáó¡δ¼ 0
- Compare:
- mov ch,al ; ¼δ σ«Γ¿¼, τΓ«íδ ñ½∩
- ; ß½ÑñπεΘÑú« «ΓßτÑΓá ch=0
- mov si,dx ; ó«ºóαáΓ¿Γ∞ π¬áºáΓѽ∞ ¡á
- ; »α«ß¼«ΓαÑ¡¡πε ßΓ᫬π
- mov cl,ah ; »«½πτ¿Γ∞ ñ½¿¡π
- mov si,dx ; ó«ºóαáΓ¿Γ∞ π¬áºáΓѽ∞ ¡á
- ; ßΓ᫬π
- repe cmpsb ; ßαáó¡¿Γ∞ íá⌐Γδ
- jne Skip ; Ñß½¿ ßαáó¡Ñ¡¿Ñ ¡Ñπñáτ-
-
- TASM2 #2-5/䫬 = 263 =
-
- ; ¡«Ñ »«»α«í«óáΓ∞ ß½Ññπ-
- ; εΘπε ßΓ᫬π
- cmp byte ptr es:[di],'=' ; ßαáó¡Ñ¡¿Ñ
- ; ºáóÑαΦ¿½«ß∞ πß»ÑΦ¡«
- ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½ '='?
- jne NoEqual ; Ñß½¿ ¡ÑΓ, óßÑ ÑΘÑ ¡ÑΓ
- ; ß«ó»áñÑ¡¿∩
- Found:
- mov ax,es ; DI:SI íπñÑΓ π¬áºδóáΓ∞
- ; ¡á ¡á⌐ñÑ¡¡πε ¡á¼¿ ßΓ᫬π
- mov ds,ax
- mov si,di
- inc si ; "»α«⌐Γ¿" ß¿¼ó«½ '='
- les bx,ss:[bp+10] ; »«½πτ¿Γ∞ áñαÑß
- ; αѺπ½∞ΓáΓá
- ; Σπ¡¬µ¿¿
- mov di,bx ; ºá¡ÑßΓ¿ Ñú« ó ES:DI
- inc di ; íá⌐Γ ñ½¿¡δ
- mov cl,255 ; ºáñáΓ∞ ¼á¬ß¿¼á½∞¡πε
- ; ñ½¿¡π
- CopyLoop:
- lodsb ; »«½πτ¿Γ∞ íá⌐Γ
- or al,al ; »α«óÑα¿Γ∞ ¡á 0
- jz Done ; Ñß½¿ 0, óδ»«½¡Ñ¡«
- stosb ; ºá¡ÑßΓ¿ Ñú« ó αѺπ½∞ΓáΓ
- loop CopyLoop ; »ÑαѼÑßΓ¿Γ∞ ñ« 255
- ; íá⌐Γ
- Done: not cl ; »α¿ ß«σαá¡Ñ¡¿¿ ¼δ
- ; π¼Ñ¡∞Φ὿ «Γ CL ñ« 255
- mov es:[bx],cl ; ß«σαá¡¿Γ∞ ñ½¿¡π
- mov ax,SEG DATE
- mov ds,ax ; ó«ßßΓá¡«ó¿Γ∞ DS
- ASSUME ds:DATA
- pop bp
- ret 4
- ASSUME ds:NOTHING
- Skip:
- dec di ; »α«óÑα¿Γ∞ ¡á 0
- NoEqual:
- mov cx,7FFFh ; ñ½¿¡¡δ⌐ »«¿ß¬, Ñß½¿
- ; ¡πª¡«
- sub cx,di ; «»Ñαᵿ«¡¡á∩ ßαÑñá
- ; ¡¿¬«úñá ¡Ñ »αÑóδΦáÑΓ
- ; 32è
- jbe RetNul ; Ñß½¿ ¬«¡Ñµ, óδ⌐Γ¿
- repne scasb ; »«ß¼«ΓαÑΓ∞ ß½ÑñπεΘ¿⌐
-
- TASM2 #2-5/䫬 = 264 =
-
- ; 0
- jcxz RetNul ; óδ⌐Γ¿, Ñß½¿ ¡Ñ ¡á⌐ñÑ¡
- cmp byte ptr es:[di],al ; óΓ«α«⌐ 0 ó ßΓ᫬Ñ?
- jne Compare ; Ñß½¿ ¡ÑΓ, »«»δΓáΓ∞ß∩
- ; ß¡«óá
- RetNul:
- les di,ss:[bp+10] ; »«½πτ¿Γ∞ áñαÑß
- ; αѺπ½∞ΓáΓá
- stosb ; ß«σαá¡¿Γ∞ Γá¼ 0
- mov ax,SEG DATA
- mov ds,ax ; ó«ßßΓá¡«ó¿Γ∞ DS
- ASSUME ds:DATA
- pop bp
- ret 4
- EnvString ENDP
- CODE ENDS
- END
-
- Åα«úαá¼¼á ¡á Åá߬á½Ñ, ¬«Γ«αá∩ ¿ß»«½∞ºπÑΓ Σπ¡¬µ¿ε EnvString,
- óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- program EnvTest;
- { »α«úαá¼¼á ¿ΘÑΓ ßΓ᫬¿ «»Ñαᵿ«¡¡«⌐ ßαÑñδ }
-
- var
- EnvVariable : string;
- EnvValue : string;
-
- {$F+}
-
- function EnvString(s:string) : string; external;
- {$L ENVSTRING.OBJ}
- {$F-}
- begin
- EnvVariable := 'PROMPT';
- EnvValue := EnvString(EnvVariable);
- if EnvValue = '' then EnvValue := '*** ¡Ñ ¡á⌐ñÑ¡á ***';
- Writeln('ÅÑαѼѡ¡á∩ «»Ñαᵿ«¡¡«⌐ ßαÑñδ: ',
- EnvVariable,' ç¡áτÑ¡¿Ñ: ',EnvValue);
- end.
-
- ùΓ«íδ ßΣ«α¼¿α«óáΓ∞ ¿ ºá»πßΓ¿Γ∞ ñá¡¡δÑ »α«úαá¼¼δ ¡á Åá߬á½Ñ ¿
- ÇßßѼí½ÑαÑ, ¿ß»«½∞ºπ⌐ΓÑ ß½ÑñπεΘ¿Ñ ¬«¼á¡ñδ ¬«¼á¡ñ¡«ú« Σá⌐½á:
-
- TASM ENVSTR
- TPC ENVTEST
-
- TASM2 #2-5/䫬 = 265 =
-
- ENVTEST
-
- àß½¿ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ .MODEL, Γ« Σπ¡¬µ¿ε EnvString ¡á
- ÇßßѼí½ÑαÑ íπñÑΓ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- .MODEL TPASCAL
- .DATA
- EXTRN prefixSeg : Word ; ñáÑΓ áñαÑß PSP
- .CODE
- EnvString PROC FAR EnvVar:DWORD RETURNS EnvVal:DWORD
- PUBLIC EnvString
- push bp
- cld ; αáí«ΓáΓ∞ ó »α∩¼«¼
- ; ¡á»αáó½Ñ¡¿¿
- mov es,[prefixSeg] ; »«ß¼«ΓαÑΓ∞ PSP
- mov es,es:[2Ch] ; ES:DI π¬áºδóáεΓ ¡á
- ; «»Ñαᵿ«¡¡πε ßαÑñπ,
- xor di,di ; ¬«Γ«αá∩ óδα«ó¡Ñ¡á ¡á
- ; úαá¡¿µπ »áαáúαáΣá
- mov bp,sp ; ¡á⌐Γ¿ ßΓ᫬π »áαá¼ÑΓα«ó,
- lds si,ss:[bp+6] ; ¬«Γ«αá∩ ß½ÑñπÑΓ ºá
- ; áñαÑß«¼ ó«ºóαáΓá
- ASSUME ds:NOTHING
- lodsb ; »«ß¼«ΓαÑΓ∞ ñ½¿¡π
- or al,al ; «¡á αáó¡á 0?
- jz RetNul ; ñá, ó«ºóαáΓ
- mov ah,al ; ó »α«Γ¿ó¡«¼ ß½πτáÑ
- ; ß«σαá¡¿Γ∞ ÑÑ ó AH
- mov dx,si ; DS:SI ß«ñÑαªáΓ π¬áºáΓѽ∞
- ; ¡á »Ñαóδ⌐ »áαá¼ÑΓα
- ; char
- xor al,al ; ßñѽáΓ∞ Ñú« αáó¡δ¼ 0
- Compare:
- mov ch,al ; ¼δ σ«Γ¿¼, τΓ«íδ ñ½∩
- ; ß½ÑñπεΘÑú« «ΓßτÑΓá ch=0
- mov si,dx ; ó«ºóαáΓ¿Γ∞ π¬áºáΓѽ∞ ¡á
- ; »α«ß¼«ΓαÑ¡¡πε ßΓ᫬π
- mov cl,ah ; »«½πτ¿Γ∞ ñ½¿¡π
- mov si,dx ; ó«ºóαáΓ¿Γ∞ π¬áºáΓѽ∞ ¡á
- ; ßΓ᫬π
- repe cmpsb ; ßαáó¡¿Γ∞ íá⌐Γδ
- jne Skip ; Ñß½¿ ßαáó¡Ñ¡¿Ñ ¡Ñπñáτ-
- ; ¡«Ñ, »«»α«í«óáΓ∞ ß½Ññπ-
- ; εΘπε ßΓ᫬π
- cmp byte ptr es:[di],'=' ; ßαáó¡Ñ¡¿Ñ
- ; ºáóÑαΦ¿½«ß∞ πß»ÑΦ¡«
-
- TASM2 #2-5/䫬 = 266 =
-
- ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½ '='?
- jne NoEqual ; Ñß½¿ ¡ÑΓ, óßÑ ÑΘÑ ¡ÑΓ
- ; ß«ó»áñÑ¡¿∩
- Found:
- mov ax,es ; DI:SI íπñÑΓ π¬áºδóáΓ∞
- ; ¡á ¡á⌐ñÑ¡¡πε ¡á¼¿ ßΓ᫬π
- mov ds,ax
- mov si,di
- inc si ; "»α«⌐Γ¿" ß¿¼ó«½ '='
- les bx,ss:[bp+10] ; »«½πτ¿Γ∞ áñαÑß
- ; αѺπ½∞ΓáΓá Σπ¡¬µ¿¿
- mov di,bx ; ºá¡ÑßΓ¿ Ñú« ó ES:DI
- inc di ; íá⌐Γ ñ½¿¡δ
- mov cl,255 ; ºáñáΓ∞ ¼á¬ß¿¼á½∞¡πε
- ; ñ½¿¡π
- CopyLoop:
- lodsb ; »«½πτ¿Γ∞ íá⌐Γ
- or al,al ; »α«óÑα¿Γ∞ ¡á 0
- jz Done ; Ñß½¿ 0, óδ»«½¡Ñ¡«
- stosb ; ºá¡ÑßΓ¿ Ñú« ó αѺπ½∞ΓáΓ
- loop CopyLoop ; »ÑαѼÑßΓ¿Γ∞ ñ« 255
- ; íá⌐Γ
- Done: not cl ; »α¿ ß«σαá¡Ñ¡¿¿ ¼δ
- ; π¼Ñ¡∞Φ὿ «Γ CL ñ« 255
- mov es:[bx],cl ; ß«σαá¡¿Γ∞ ñ½¿¡π
- mov ax,SEG DATE
- mov ds,ax ; ó«ßßΓá¡«ó¿Γ∞ DS
- ASSUME ds:DATA
- pop bp
- ret 4
- ASSUME ds:NOTHING
- Skip:
- dec di ; »α«óÑα∩Γ∞ ¡á 0
- NoEqual:
- mov cx,7FFFh ; ñ½¿¡¡δ⌐ »«¿ß¬, Ñß½¿
- ; ¡πª¡«
- sub cx,di ; «»Ñαᵿ«¡¡á∩ ßαÑñá
- ; ¡¿¬«úñá ¡Ñ »αÑóδΦáÑΓ
- ; 32è
- jbe RetNul ; Ñß½¿ ¬«¡Ñµ, óδ⌐Γ¿
- repne scasb ; »«ß¼«ΓαÑΓ∞ ß½ÑñπεΘ¿⌐
- ; 0
- jcxz RetNul ; óδ⌐Γ¿, Ñß½¿ ¡Ñ ¡á⌐ñÑ¡
- cmp byte ptr es:[di],al ; óΓ«α«⌐ 0 ó ßΓ᫬Ñ?
- jne Compare ; Ñß½¿ ¡ÑΓ, »«»δΓáΓ∞ß∩
- ; ß¡«óá
-
- TASM2 #2-5/䫬 = 267 =
-
- RetNul:
- les di,ss:[bp+10] ; »«½πτ¿Γ∞ áñαÑß
- ; αѺπ½∞ΓáΓá
- stosb ; ß«σαá¡¿Γ∞ Γá¼ 0
- mov ax,SEG DATA
- mov ds,ax ; ó«ßßΓá¡«ó¿Γ∞ DS
- ASSUME ds:DATA
- ret 4
- EnvString ENDP
- CODE ENDS
- END
-
- éδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ Γπ ªÑ »α«úαá¼¼π ¡á Åá߬á½Ñ ¿ »α«ßΓ«
- áßßÑ¼í½¿α«óáΓ∞ á½∞ΓÑα¡áΓ¿ó¡δ⌐ óáα¿á¡Γ Σπ¡¬µ¿¿ EnvString ¿ »ÑαÑ-
- ¬«¼»¿½¿α«óáΓ∞ »α«úαá¼¼π ß »«¼«Θ∞ε Γ«ú« ªÑ ¬«¼á¡ñ¡«ú« Σá⌐½á.
-
-