home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / tasm-1.doc / turbass2.doc < prev   
Encoding:
Text File  |  1994-02-25  |  408.3 KB  |  10,494 lines

  1.  
  2.     â½áóá 6. ü«½ÑÑ »«ñα«í¡« « »α«úαá¼¼¿α«óá¡¿¿ ¡á Æπαí« ÇßßѼí½ÑαÑ
  3. -----------------------------------------------------------------
  4.  
  5.      Åα«τ¿Γáó »«ß½Ññ¡¿Ñ ñóÑ ú½áóδ, óδ, ¬«¡Ñτ¡«, «τÑ¡∞ ¼¡«ú« πº¡á-
  6. ½¿  «  ∩ºδ¬Ñ ÇßßѼí½Ñαá, ¡« «ßΓáÑΓß∩ πº¡áΓ∞ ÑΘÑ ¡á¼¡«ú« í«½∞ΦÑ. é
  7. ñá¡¡«⌐ ú½áóÑ ¼δ ¬«ß¡Ñ¼ß∩ ¡Ñ¬«Γ«αδσ ñ«ó«½∞¡« αáºó¿Γδσ,  ¡«  óÑß∞¼á
  8. »«½Ñº¡δσ  áß»Ñ¬Γ«ó  Æπαí«  ÇßßѼí½Ñαá ¿ »α«úαá¼¼¿α«óá¡¿∩ ¡á ∩ºδ¬Ñ
  9. ÇßßѼí½Ñαá.
  10.  
  11.      îδ «íßπñ¿¼ ó τáßΓ¡«ßΓ¿ ß½ÑñπεΘ¿Ñ ΓѼδ:
  12.  
  13.      - ä¿αÑ¬Γ¿óδ Æπαí« ÇßßѼí½Ñαá EQU ¿ =, ¬«Γ«αδÑ  »«ºó«½∩Γ  óá¼
  14. »α¿ßóá¿óáΓ∞ ¿¼Ñ¡á¼ º¡áτÑ¡¿∩ ¿ ΓѬßΓ«óδÑ ßΓ᫬¿.
  15.  
  16.      - î«Θ¡δÑ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ Æπαí« ÇßßѼí½Ñαá.
  17.  
  18.      - é«º¼«ª¡«ßΓ∞ áßßÑ¼í½¿α«óá¡¿∩  ß  »«¼«Θ∞ε  Æπαí«  ÇßßѼí½Ñαá
  19. ¡Ñ߬«½∞¬¿σ  ¿ßσ«ñ¡δσ  Σá⌐½«ó ¿ »«ß½ÑñπεΘÑú« ¿ß»«½∞º«óá¡¿∩ πΓ¿½¿Γδ
  20. TLINK ñ½∩ ¬«¼»«¡«ó¬¿ ¿σ ó «ñ¡π »α«úαá¼¼π.
  21.  
  22.      - é«º¼«ª¡«ßΓ∞ Æπαí« ÇßßѼí½Ñαá ó¬½ετáΓ∞ «Γñѽ∞¡δÑ Σá⌐½δ  ¿ß-
  23. σ«ñ¡«ú« ¬«ñá ó ½εíπε »α«úαá¼¼π ¡á ÇßßѼí½ÑαÑ.
  24.  
  25.      - êßτÑα»δóáεΘ¿Ñ Σá⌐½δ ½¿ßΓ¿¡ú«ó ¿ßσ«ñ¡«ú« ¬«ñá Æπαí«  ÇßßѼ-
  26. í½Ñαá.
  27.  
  28.      ê¼ÑÑΓß∩ ó«º¼«ª¡«ßΓ∞ »¿ßáΓ∞ »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ Γᬿ¼ «í-
  29. αẫ¼,  τΓ«  «¡¿  íπñπΓ áßßÑ¼í½¿α«óáΓ∞ß∩ »«-αạ«¼π »α¿ αẽ¿τ¡δσ
  30. «íßΓ«∩Γѽ∞ßΓóáσ. îδ αáßß¼«Γα¿¼, »«τѼπ φΓ« ¼«ªÑΓ «¬áºáΓ∞ß∩ »«½Ñº-
  31. ¡δ¼,  ¿ ñ¿αÑ¬Γ¿óδ, ñѽáεΘ¿Ñ φΓ« ó«º¼«ª¡δ¼. ìᬫ¡Ñµ, ¼δ αáßß¼«Γα¿¼
  32. ¡Ñ¬«Γ«αδÑ ¡á¿í«½ÑÑ «íΘ¿Ñ «Φ¿í¬¿, ¬«Γ«αδÑ «íδτ¡«  ñѽáεΓ  »α«úαá¼-
  33. ¼¿ßΓδ, αáí«ΓáεΘ¿Ñ ¡á ÇßßѼí½ÑαÑ.
  34.  
  35.      éá¼ ß½ÑñπÑΓ «í∩ºáΓѽ∞¡« »α«ß¼«ΓαÑΓ∞ ñá¡¡πε ú½áóπ,  ó«º¼«ª¡«,
  36. ñáªÑ  ¡Ñ  ó¡¿¬á∩  ú½πí«¬« ó ÑÑ ß«ñÑαªá¡¿Ñ. æÑú«ñ¡∩ φΓá ¿¡Σ«α¼áµ¿∩
  37. ¼«ªÑΓ óá¼ ¡Ñ »«ΓαÑí«óáΓ∞ß∩, ¡« ºáóΓαá, ¬«úñá ó ¡Ñ⌐ »«∩ó¿Γß∩ ¡Ñ«í-
  38. σ«ñ¿¼«ßΓ∞, óδ íπñÑΓÑ º¡áΓ∞, úñÑ ÑÑ ¿ß¬áΓ∞.
  39.  
  40.  
  41. êß»«½∞º«óá¡¿Ñ ñ¿αÑ¬Γ¿ó »α¿ßóá¿óá¡¿∩
  42. -----------------------------------------------------------------
  43.  
  44.      äáóá⌐ΓÑ ¡áτ¡Ñ¼ ß αáßß¼«ΓαÑ¡¿∩ ñ¿αÑ¬Γ¿ó EQU ¿ = ñ½∩  »α¿ßóá¿-
  45. óá¡¿∩  ¼ÑΓ«¬  º¡áτÑ¡¿∩¼  ¿  ΓѬßΓ«óδ¼ ßΓ᫬á¼. ¥Γ« «τÑ¡∞ »«½Ñº¡«Ñ
  46. ßαÑñßΓó«, »«ºó«½∩εΘÑÑ ßñѽáΓ∞ »α«úαá¼¼π ¡á ÇßßѼí½ÑαÑ  í«½ÑÑ  »«-
  47. ¡∩Γ¡«⌐ ¿ ½Ñú¬« «íß½πª¿óáѼ«⌐.
  48.  
  49.                              ä¿αÑ¬Γ¿óá EQU
  50. -----------------------------------------------------------------
  51.  
  52.      Åα¿τ¿¡á ¿ß»«½∞º«óá¡¿∩ ¼ÑΓ«¬ ñ½∩ ¿¼Ñ¡ »ÑαѼѡ¡δσ, »«ñ»α«úαá¼¼
  53. ¿ ¬«¡¬αÑΓ¡δσ  ¿¡ßΓαπ¬µ¿⌐ «τÑó¿ñ¡á.  éÑñ∞ ó »α«Γ¿ó¡«¼ ß½πτáÑ ¼δ ¡Ñ
  54. ¼«ú½¿ íδ ßßδ½áΓ∞ß∩ »« ¿¼Ñ¡á¼ ¡á φΓ¿ φ½Ñ¼Ñ¡Γδ »α«úαá¼¼.  é  αáó¡«⌐
  55. ßΓѻѡ¿ ó᪡á,  ¡« ¼Ñ¡ÑÑ «τÑó¿ñ¡á, ¡Ñ«íσ«ñ¿¼«ßΓ∞ »α¿ßóá¿óáΓ∞ ¼ÑΓ-
  56. ¬á¼ º¡áτÑ¡¿∩ ¿ ΓѬßΓ«óδÑ ßΓ᫬¿.
  57.  
  58.      Åα¿ßó«¿Γ∞ ¼ÑΓ¬Ñ τ¿ß½«ó«Ñ º¡áτÑ¡¿Ñ ¿½¿ ΓѬßΓ«óπε ßΓ᫬𠠻«º-
  59. ó«½∩ÑΓ ñ¿αÑ¬Γ¿óá EQU. æßδ½¬á ¡á ¼ÑΓ¬π ñ¿αÑ¬Γ¿óδ EQU Γαá¡ß½¿απÑΓß∩
  60. 󠽿ΓÑαá½∞¡«Ñ »α¿αáó¡¿óá¡¿Ñ. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ  »α«ú-
  61. αá¼¼δ:
  62.  
  63.              .
  64.              .
  65.              .
  66.  END_OF_DATA         EQU  '!'         ; "¬«¡Ñµ ñá¡¡δσ"
  67.  STORAGE_BUFFER_SIZE EQU  1000        ; αẼÑα íπΣÑαá
  68.              .DATA
  69.  StorageBuffer  DB   STORAGE_BUFFER_SIZE  DUP (?)
  70.              .
  71.              .
  72.              .
  73.              .CODE
  74.              mov   ax,@Data
  75.              mov   ds,ax
  76.              sub   di,di               ; πßΓá¡«ó¿Γ∞ π¬áºáΓѽ∞
  77.                                        ; íπΣÑαá ó º¡áτÑ¡¿Ñ 0
  78.  StorageLoop:
  79.              mov   ah,1
  80.              int   21h                 ; »«½πτ¿Γ∞ ß½ÑñπεΘπε
  81.                                        ; ¡áªáΓπε ¬½áó¿Φπ
  82.              mov   [StarageBuffer+di],al ; ß«σαá¡¿Γ∞ ß½ÑñπεΘπε
  83.                                        ; ¡áªáΓπε ¬½áó¿Φπ
  84.              cmp   al,END_OF_DATA      ; φΓ« ¬½áó¿Φá "¬«¡Ñµ
  85.                                        ; ñá¡¡δσ"?
  86.              je    DataAckquired       ; ñá, »ÑαÑ⌐Γ¿ ¬
  87.                                        ; «íαáí«Γ¬Ñ ñá¡¡δσ
  88.              inc   di                  ; »«ñßτ¿ΓáΓ∞ φΓ«
  89.                                        ; ¡áªáΓ¿Ñ ¬½áó¿Φ¿
  90.              cmp   di,STORAGE_BUFFER_SIZE ; ¼δ »ÑαÑ»«½¡¿½¿
  91.                                        ; íπΣÑα?
  92.              jb    StorageLoop         ; ¡ÑΓ, »«½πτ¿Γ∞
  93.                                        ; ß½ÑñπεΘπε ¬½áó¿Φπ
  94.  ; üπΣÑα »ÑαÑ»«½¡Ñ¡...
  95.  
  96.              .
  97.              .
  98.              .
  99.  ; îδ »«½πτ¿½¿ ñá¡¡δÑ
  100.  DataAcquired:
  101.              .
  102.              .
  103.              .
  104.  
  105.      çñÑß∞ ñ¿αÑ¬Γ¿óá EQU  ¿ß»«½∞ºπÑΓß∩ ñ½∩  «»αÑñѽѡ¿∩ ñóπσ  ¼Ñ-
  106. Γ«¬: STORAGE_BUFFER_SIZE ¿ END_OF_DATA. îÑΓ¬á END_OF_DATA »α¿αáó-
  107. ¡¿óáÑΓß∩ ¬ ß¿¼ó«½π "!" ¿ ßαáó¡Ñ¡¿Ñ ß ¡Ñ⌐ óδ»«½¡∩ÑΓß∩  »α¿  ¬áªñ«¼
  108. ¡áªáΓ¿¿  ¬½áó¿Φ¿, τΓ«íδ «»αÑñѽ¿Γ∞, ¡Ñ óßΓαÑΓ¿½¿ ½¿ ¼δ ¬«¡Ñµ ñá¡-
  109. ¡δσ. ¥Γ« »«¬áºδóáÑΓ «ñ¡« ¿º ßπΘÑßΓóÑ¡¡δσ »αÑ¿¼πΘÑßΓó  ¿ß»«½∞º«óá-
  110. ¡¿∩  ñ¿αÑ¬Γ¿óδ  »α¿αáó¡¿óá¡¿∩ (EQU), óÑñ∞ ¼ÑΓ¬¿ º¡áτ¿Γѽ∞¡« í«½ÑÑ
  111. ¿¡Σ«α¼áΓ¿ó¡δ,  τѼ  º¡áτÑ¡¿∩-¬«¡ßΓá¡Γδ.  èα«¼Ñ  Γ«ú«,  ¡áº¡áτÑ¡¿Ñ
  112. ¿¡ßΓαπ¬µ¿¿:
  113.  
  114.             cmp   al,END_OF_DATA
  115.  
  116. «»αÑñѽѡ¡« »«¡∩Γ¡Ñ⌐, τѼ ¡áº¡áτÑ¡¿Ñ ¿¡ßΓαπ¬µ¿¿:
  117.  
  118.             cmp   al,'!'
  119.  
  120. (END_OF_DATA «º¡áτáÑΓ "èÄìàû_äÇìì¢ò").
  121.  
  122.      êß»«½∞º«óá¡¿Ñ  ¼ÑΓ¬¿  STORAGE_BUFFER_SIZE  ¿½½εßΓα¿απÑΓ  ÑΘÑ
  123. «ñ¿¡  ñ«ó«ñ  ó  »«½∞ºπ  »α¿¼Ñ¡Ñ¡¿∩  »α¿αáó¡¿óá¡¿∩ (»α¿ßóá¿óá¡¿∩).
  124. STORAGE_BUFFER_SIZE, ñ½∩ ¬«Γ«α«ú« πßΓá¡áó½¿óáÑΓß∩ º¡áτÑ¡¿Ñ  1000,
  125. ¿ß»«½∞ºπÑΓß∩  ¬á¬  ñ½∩  ß«ºñá¡¿∩  íπΣÑαá ó »á¼∩Γ¿ αẼÑα«¼ ó 1000
  126. íá⌐Γ, Γᬠ ¿  ñ½∩ »α«óÑન φΓ«ú« íπΣÑαá ¡á »ÑαÑ»«½¡Ñ¡¿Ñ.  é «í«¿σ
  127. ß½πτá∩σ ¼«ª¡« í佫 íδ ¿ß»«½∞º«óáΓ∞ ¬«¡ßΓá¡Γπ 1000, ¡« φΓ« ú«αáºñ«
  128. ¼Ñ¡ÑÑ ¿¡Σ«α¼áΓ¿ó¡«, τѼ ¼ÑΓ¬á STORAGE_BUFFER_SIZE ("ÉÇçîàÉ_üôöàÉÇ
  129. _é_ÅÇîƒÆê").
  130.  
  131.      ÅαÑñ»«½«ª¿¼ ΓÑ»Ñα∞, τΓ« óδ σ«ñ¿ΓÑ ¿º¼Ñ¡¿Γ∞ αẼÑα  íπΣÑαá  ó
  132. »á¼∩Γ¿.  ä½∩  φΓ«ú«  óá¼ »α¿ñÑΓß∩ ¿º¼Ñ¡¿Γ∞ «»Ñαá¡ñ Γ«½∞¬« ó «ñ¡«⌐
  133. ñ¿αÑ¬Γ¿óÑ EQU, φΓ¿¼ ßá¼δ¼ óδ ó¡ÑßÑΓÑ ¿º¼Ñ¡Ñ¡¿∩  »«  óßѼπ  ΓѬßΓπ
  134. »α«úαá¼¼δ.  è«¡Ñτ¡«,  ó »α«Γ¿ó¡«¼ ß½πτáÑ ¿º¼Ñ¡¿Γ∞ ñóÑ ¬«¡ßΓá¡Γδ ó
  135. »α«úαἼѠí佫 íδ ¡ÑΓαπñ¡«, ¡« ñá¡¡á∩ ¬«¡ßΓá¡Γá ¼«ú½á íδ  ¿ß»«½∞-
  136. º«óáΓ∞ß∩ ó ñÑß∩Γ¬áσ ¿½¿ ß«Γ¡∩σ ¼ÑßΓ. Ç ó φΓ«¼ ß½πτáÑ ú«αáºñ« ½Ñú-
  137. τÑ (¿ »α¿ φΓ«¼ ¼Ñ¡∞ΦÑ óÑα«∩Γ¡«ßΓ∞ ó¡ÑßÑ¡¿∩  ó  »α«úαá¼¼π  «Φ¿í¬¿)
  138. ¿º¼Ñ¡¿Γ∞ «ñ¡« »α¿αáó¡¿óá¡¿Ñ, τѼ ñÑß∩Γ¬¿ ¿½¿ ß«Γ¡¿ ¬«¡ßΓá¡Γ.
  139.  
  140.      Ä»Ñαá¡ñ ó ñ¿αÑ¬Γ¿óÑ »α¿αáó¡¿óá¡¿∩ ¼ÑΓ¬¿ ¼«ªÑΓ ßá¼  ß«ñÑαªáΓ∞
  141. ¼ÑΓ¬¿, »α¿ßóá¿óá¡¿Ñ ñ½∩ ¬«Γ«αδσ óδ»«½¡∩ÑΓß∩ ó ñαπú¿σ ¼ÑßΓáσ. ìá»-
  142. α¿¼Ñα:
  143.  
  144.              .
  145.              .
  146.              .
  147.  TABLE_OFFSET    EQU   1000h
  148.  INDEX_START     EQU   (TABLE_OFFSET+2)
  149.  DICT_START      EQU   (TABLE_OFFSET+100h)
  150.              .
  151.              .
  152.              .
  153.              mov   ax,WORD PTR ]bx+INDEX_START]  ; »«½πτ¿Γ∞
  154.                                   ; »Ñαóπε ¿¡ñѬߡπε ºá»¿ß∞
  155.              .
  156.              .
  157.              .
  158.              lea   si,[bx+DICT_START] ; π¬áºáΓѽ∞ ¡á »Ñαóπε
  159.                                   ; ºá»¿ß∞ ß½«óáα∩
  160.              .
  161.              .
  162.              .
  163.  
  164. τΓ« φ¬ó¿óá½Ñ¡Γ¡« ß½ÑñπεΘѼπ:
  165.  
  166.              .
  167.              .
  168.              .
  169.              mov   ax,WORD PTR [bx+1000h+2]
  170.              lea   si,[bx+1000h+100h]
  171.              .
  172.              .
  173.              .
  174.  
  175.      Åα¿αáó¡Ñ¡¡δÑ ¼ÑΓ¬¿ πñ«í¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ »α¿ßóá¿óá¡¿∩ αáº-
  176. ½¿τ¡δ¼  »αÑαδóá¡¿∩¼, »«αΓá¼ ¿ ∩τÑ⌐¬á¼ »á¼∩Γ¿ ¬«¼»∞εΓÑαá Éæ »«¡∩Γ-
  177. ¡δσ ¿¼Ñ¡. Åα«¿½½εßΓα¿απѼ ¡Ñ¬«Γ«αδÑ ß½πτá¿  Γᬫú«  ¿ß»«½∞º«óá¡¿∩
  178. ñ¿αÑ¬Γ¿óδ EQU ¡á ß½ÑñπεΘѼ »α¿¼ÑαÑ:
  179.  
  180.              .
  181.              .
  182.              .
  183.  DOS_INT            EQU   21h    ; »αÑαδóá¡¿∩ »« ó맮óπ
  184.                                  ; Σπ¡¬µ¿¿ DOS
  185.  CGA_STATUS         EQU   3dah   ; »«αΓ ß«ßΓ«∩¡¿∩ áñá»ΓÑαá
  186.                                  ; CGA
  187.  VSYNC_MASK         EQU   00001000b ; óδñѽ¿Γ∞ í¿Γ ó ß«ßΓ«∩¡¿¿
  188.                                  ; »«αΓá CGA, π¬áºδóáεΘ¿⌐,
  189.                                  ; ¬«úñá óδ ¼«ªÑΓÑ ¿º¼Ñ¡∩Γ∞
  190.                                  ; ¿º¼Ñ¡∩Γ∞ φ¬αá¡, ¡Ñ óδºδóá∩
  191.                                  ; »«¼Ñσ ("ߡѪ¡δσ σ½«»∞Ñó")
  192.  BIAS_SEGMENT       EQU   40h    ; ßÑú¼Ñ¡Γ BIOS, ó ¬«Γ«α«¼
  193.                                  ; σαá¡∩Γß∩ ñá¡¡δÑ
  194.  EQUIPMENT_FLAG     EQU   10h    ; ß¼ÑΘÑ¡¿Ñ ó ßÑú¼Ñ¡ΓÑ BIOS
  195.                                  ; »ÑαѼѡ¡«⌐ Σ½áúá á»»áαáΓ-
  196.                                  ; ¡«ú« «íÑß»ÑτÑ¡¿∩
  197.              .
  198.              .
  199.              .
  200.              mov   ah,2
  201.              mov   di,'Z'
  202.              int   DOS_Int       ; ¡á»ÑτáΓáΓ∞ ß¿¼ó«½ "Z"
  203.              .
  204.              .
  205.              .
  206.  ; Å«ñ«ªñáΓ∞, »«¬á ¼«ª¡« íπñÑΓ «í¡«ó¿Γ∞ φ¬αá¡, ¡Ñ óδºδóá∩
  207.  ; »«¼Ñσ
  208.              mov   dx,CGA_STATUS
  209.  WaitForVerticalSync:
  210.              in    al,dx         ; »«½πτ¿Γ∞ ßΓáΓπß CGA
  211.              and   al,VSYNC_MASK ; ¿ñÑΓ óÑαΓ¿¬á½∞¡á∩
  212.                                  ; ß¿¡σα«¡¿ºáµ¿∩?
  213.              jz    WaitForVerticalSync ; ¡ÑΓ, ºáóÑαΦ¿Γ∞
  214.                                  ; «ª¿ñá¡¿Ñ
  215.              .
  216.              .
  217.              .
  218.              mov   ax,BIOS_SEGMENT
  219.              mov   ds,ax         ; DS π¬áºδóáÑΓ ¡á ßÑú¼Ñ¡Γ
  220.                                  ; ñá¡¡δσ BIOS
  221.              mov   bx,EQUIPMENT_FLAG ; ßßδ½¬á ¡á Σ½áú
  222.                                  ; á»»áαáΓ¡«ú« «íÑß»ÑτÑ¡¿∩
  223.              and   BYTE PTR [bx],NOT 30h
  224.              or    BYTE PTR [bx],20h ; πßΓá¡«ó¿Γ∞ Σ½áú
  225.                                  ; á»»áαáΓ¡«ú« «íÑß»ÑτÑ¡¿∩
  226.                                  ; Γá¬, τΓ«íδ íδ½ óδíαá¡
  227.                                  ; µóÑΓ¡«⌐ αѪ¿¼ ß 80
  228.                                  ; »«º¿µ¿∩¼¿ ó ßΓ᫬Ñ
  229.              .
  230.              .
  231.              .
  232.  
  233.      Åα¿αáó¡Ñ¡¡δÑ ¼ÑΓ¬¿, ó ¬«Γ«αδσ ¿ß»«½∞ºπεΓß∩ ñαπú¿Ñ »α¿αáó¡Ñ¡-
  234. ¡δÑ  ¼ÑΓ¬¿,  αáßΦ¿α∩εΓ »α¿¡µ¿» ¿ß»«½∞º«óá¡¿∩ »α¿ßóá¿óá¡¿⌐ ñ½∩ «í-
  235. ½ÑúτÑ¡¿∩ ¿º¼Ñ¡Ñ¡¿∩ óáΦ¿σ »α«úαá¼¼. ìá»α¿¼Ñα,  Ñß½¿  ó  »αÑñδñπΘѼ
  236. »α¿¼ÑαÑ óδ  »ÑαѼÑßΓ¿ΓÑ  óßÑ  ßß佬¿ ó Γáí½¿µÑ ¡á 10 íá⌐Γ í½¿ªÑ ¬
  237. BX,  óá¼ »α¿ñÑΓß∩ ¿º¼Ñ¡¿Γ∞ Γ«½∞¬« »α¿ßóá¿óá¡¿Ñ  ñ½∩  TABLE_OFFSET
  238. ¡á:
  239.  
  240.  TABLE_OFFSET    EQU   (1000h - 10)
  241.  
  242.      Å«ß½Ñ óδ»«½¡Ñ¡¿∩ áßßÑ¼í½¿α«óá¡¿∩  INDEX_START  ¿  DICT_START
  243. íπñπΓ  ¡áßΓα«Ñ¡δ ó ß««ΓóÑΓßΓó¿¿ ß TABLE_OFFSET, Γᬠ¬á¬ ¿σ º¡áτÑ-
  244. ¡¿∩ «ß¡«óδóáεΓß∩ ¡á TABLE_OFFSET.
  245.  
  246.      èßΓáΓ¿, ß¬«í¬¿ ó  ¬«Γ«αδÑ  ºá¬½ετÑ¡  «»Ñαá¡ñ  ñ¿αÑ¬Γ¿óδ EQU,
  247. ∩ó½∩εΓß∩  ¡Ñ«í∩ºáΓѽ∞¡δ¼¿, ¡« «¡¿ ¡Ñ »«¼ÑΦáεΓ, »«ß¬«½∞¬π »«¼«úáεΓ
  248. ó¿ºπá½∞¡« óδñѽ¿Γ∞ «»Ñαá¡ñ.
  249.  
  250.      ä¿αÑ¬Γ¿óπ EQU ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ »α¿ßóá¿óá¡¿∩ ¼ÑΓ¬Ñ ΓѬ-
  251. ßΓ«ó«⌐  ßΓ᫬¿  ¿½¿  º¡áτÑ¡¿∩. ìá»α¿¼Ñα, ñá½ÑÑ ¼ÑΓ¬á ¿ß»«½∞ºπÑΓß∩
  252. ñ½∩ σαá¡Ñ¡¿∩ óδó«ñ¿¼«⌐ ¡á »ÑτáΓ∞ ΓѬßΓ«ó«⌐ ßΓ᫬¿:
  253.  
  254.              .
  255.              .
  256.              .
  257.  EQUATED_STRING  EQU  'Åα¿¼Ñα ΓѬßΓ«ó«⌐ ßΓ᫬¿'
  258.              .
  259.              .
  260.              .
  261.  TextMessage     DB   EQUATED_STRING
  262.              .
  263.              .
  264.              .
  265.              mov   dx,OFFSET TextMessage
  266.              mov   ah,9
  267.              int   21h       ; ¡á»ÑτáΓáΓ∞ TextMessage
  268.              .
  269.              .
  270.              .
  271.  
  272.      îÑΓ¬¿, »α¿αáó¡Ñ¡¡δÑ ¬ ΓÑßΓ«óδ¼ ßΓ᫬á¼, ¼«úπΓ ¿ß»«½∞º«óáΓ∞ß∩
  273. ó ¬áτÑßΓóÑ «»Ñαá¡ñ«ó. ìá»α¿¼Ñα:
  274.              .
  275.              .
  276.              .
  277.  REGISTER_BX     EQU   BX
  278.              .
  279.              .
  280.              .
  281.              mov   ax,REGISTER_BX
  282.              .
  283.              .
  284.              .
  285.  
  286.      ¥Γ« áßßÑ¼í½¿απÑΓß∩ ó ¿¡ßΓαπ¬µ¿ε:
  287.  
  288.              mov   ax,bx
  289.  
  290.      Äíδτ¡« ¡Ñ ó«º¡¿¬áÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ »α¿αáó¡¿óáΓ∞ ¼ÑΓ¬π  ¬  αÑ-
  291. ú¿ßΓαπ,  ¡«  óδ ¼«ªÑΓÑ, ¡á»α¿¼Ñα, ¿ß»«½∞º«óáΓ∞ »α¿αáó¡Ñ¡¡δÑ ¼ÑΓ¬¿
  292. ¿½¿ ARG ñ½∩ »α¿ßóá¿óá¡¿∩ ¿¼Ñ¡¿ »ÑαÑñáóáÑ¼δ¼ ó ßΓѬѠ»áαá¼ÑΓαá¼  ¿
  293. óδñѽ∩Ѽ«⌐ ó ßΓѬѠñ¿¡á¼¿τÑ߬«⌐ »á¼∩Γ¿:
  294.  
  295. ;
  296. ; éδºδóáѼá∩ ¿º æ¿ (¼«ñѽ∞ NEAR) »«ñ»α«úαá¼¼á, óδ»«½¡∩εΘá∩
  297. ; ß½«ªÑ¡¿Ñ ΓαÑσ µÑ½δσ »áαá¼ÑΓα«ó ¿ ó«ºóαáΘáεΘá∩ µÑ½δ⌐
  298. ; αѺπ½∞ΓáΓ. Åα«Γ«Γ¿» Σπ¡¬µ¿¿:
  299. ;
  300. ; int AddThree(int I, int J, int K)
  301. ;
  302. Temp  EQU  [bp-2]
  303. I     EQU  [bp+4]
  304. J     EQU  [bp+6]
  305. K     EQU  [bp+8]
  306. ;
  307. _AddThree  PROC
  308.       push bp                 ; ß«σαá¡¿Γ∞ BP óδºδóáεΘÑ⌐
  309.                               ; »α«úαá¼¼δ
  310.       mov  bp,sp              ; ßßδ½¬á ¡á αἬπ ßΓѬá
  311.       sub  sp,2               ; óδñѽ¿Γ∞ ¼ÑßΓ« ñ½∩ Temp
  312.       mov  ax,I               ; »«½πτ¿Γ∞ I
  313.       add  ax,J               ; óδτ¿ß½¿Γ∞ I + J
  314.       mov  ax,K               ; »«½πτ¿Γ∞ K
  315.       mov  Temp,ax            ; óδτ¿ß½¿Γ∞ I + J + K
  316.       mov  sp,bp              ; «ßó«í«ñ¿Γ∞ óδñѽѡ¡«Ñ
  317.                               ; ñ½∩ Temp »α«ßΓαá¡ßΓó«
  318.       pop  bp                 ; ó«ßßΓá¡«ó¿Γ∞ º¡áτÑ¡¿Ñ BP
  319.                               ; óδºδóáεΘÑ⌐ »α«úαá¼¼δ
  320.       ret
  321. _AddThree  ENDP
  322.  
  323.      éδ ¼«ªÑΓÑ »α¿¼Ñ¡∩Γ∞ ñ¿αÑ¬Γ¿óπ EQU ñ½∩ »α¿ßóá¿óá¡¿∩ ¿¼Ñ¡¿ ½ε-
  324. í«⌐  ΓѬßΓ«ó«⌐  ßΓ᫬Ñ,  ¬«Γ«αá∩  ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ó ¬áτÑßΓóÑ
  325. «»Ñαá¡ñá. é ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞  »α¿αáó¡Ñ¡¡δÑ
  326. ¼ÑΓ¬¿ ó »«½Ñ ¿¡ßΓαπ¬µ¿¿ ¿½¿ ñ¿αÑ¬Γ¿óδ, á ¡Ñ Γ«½∞¬« ó »«½Ñ «»Ñαá¡-
  327. ñá, σ«Γ∩ Γαπñ¡« »αÑñßΓáó¿Γ∞, ñ½∩ τÑú« φΓ« ¼«ªÑΓ »«¡áñ«í¿Γ∞ß∩.
  328.  
  329.      ùΓ«íδ «»Ñαá¡ñ ñ¿αÑ¬Γ¿óδ EQU  αáßß¼áΓα¿óá½ß∩,  ¬á¬  ΓѬßΓ«óá∩
  330. ßΓ᫬á,  á ¡Ñ ¬á¬ óδαáªÑ¡¿Ñ, ¼«ª¡« ¿ß»«½∞º«óáΓ∞ πú½«óδѠ߬«í¬¿ (<
  331. ¿ >). ìá»α¿¼Ñα:
  332.  
  333.  TABLE_OFFSET       EQU  1
  334.  INDEX_START        EQU  <TABLE_OFFSET+2>
  335.  
  336.      çñÑß∞  ¼ÑΓ¬Ñ  INDEX_START  »α¿ßóá¿óáÑΓß∩  ΓѬßΓ«óá∩   ßΓ᫬á
  337. "TABLE_OFFSET+2", ó Γ« óαѼ∩ ¬á¬ ó ñ¿αÑ¬Γ¿óáσ:
  338.  
  339.  TABLE_OFFSET       EQU  1
  340.  INDEX_START        EQU  TABLE_OFFSET+2
  341.  
  342. ¼ÑΓ¬Ñ INDEX_START  »α¿ßóá¿óáÑΓß∩ º¡áτÑ¡¿Ñ 3 (αѺπ½∞ΓáΓ ß½«ªÑ¡¿∩ 1
  343. + 2).  é «íΘѼ ß½πτáÑ »«½Ñº¡« óßÑúñᠺᬽετáΓ∞  ó  ñ¿αÑ¬Γ¿óÑ  EQU
  344. «»Ñαá¡ñδ,  »αÑñßΓáó½∩εΘ¿Ñ ß«í«⌐ ΓѬßΓ«óδÑ ßΓ᫬¿, ó πú½«óδѠ߬«í-
  345. ¬¿.  ¥Γ¿¼ íπñÑΓ «íÑß»ÑτÑ¡«,  τΓ« ΓᬿѠ«»Ñαá¡ñδ ß½πτá⌐¡« ¡Ñ íπñπΓ
  346. óδτ¿ß½Ñ¡δ, ¬á¬ óδαáªÑ¡¿∩.
  347.  
  348.      àß½¿ ó ñá¡¡«¼ ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EQU  ¼ÑΓ¬á
  349. »α¿αáó¡¿óáÑΓß∩ ¬ º¡áτÑ¡¿ε ¿½¿ ΓѬßΓ«ó«⌐ ßΓ᫬Ñ, «¡á ¡Ñ ¼«ªÑΓ íδΓ∞
  350. »ÑαÑ«»αÑñѽѡá ó ñá¡¡«¼ ¼«ñπ½Ñ. ìá»α¿¼Ñα, ß½ÑñπεΘ¿⌐ ¬«ñ  »α¿óÑñÑΓ
  351. ¬ «Φ¿í¬Ñ:
  352.  
  353.              .
  354.              .
  355.              .
  356.  X           EQU   1
  357.              .
  358.              .
  359.              .
  360.  X           EQU   101
  361.              .
  362.              .
  363.              .
  364.  
  365.      àß½¿ óá¼ ΓαÑíπÑΓß∩ »ÑαÑ«»αÑñѽ∩Γ∞ ó  »α«úαἼѠ »α¿αáó¡Ñ¡¡δÑ
  366. ¼ÑΓ¬¿  (¿ ñ½∩ φΓ«ú« ÑßΓ∞ ¬á¬á∩-Γ« óÑß«¼á∩ »α¿τ¿¡á),  Γ« óá¼ ¡πª¡«
  367. íπñÑΓ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ = (¼δ «íßπñ¿¼ ÑÑ »«ºñ¡ÑÑ).
  368.  
  369.  
  370.  
  371.                    ÅαÑñ«»αÑñѽѡ¡δ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α $
  372. -----------------------------------------------------------------
  373.  
  374.      éß»«¼¡¿¼, τΓ« ó Æπαí« ÇßßѼí½ÑαÑ ¿¼ÑÑΓß∩ ¡Ñ߬«½∞¬« »αÑñ«»αÑ-
  375. ñѽѡ¡δσ  ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó (¡á»α¿¼Ñα, @data). àΘÑ «ñ¿¡ »α«ßΓ«⌐, ¡«
  376. πñ¿ó¿Γѽ∞¡« »«½Ñº¡δ⌐ »αÑñ«»αÑñѽѡ¡δ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α - φΓ« ¿ñÑ¡Γ¿-
  377. Σ¿¬áΓ«α  $, ¬«Γ«αδ⌐ óßÑúñá πßΓá¡«ó½Ñ¡ ó ΓѬπΘÑÑ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á
  378. áñαÑßá. äαπú¿¼¿ ß½«óἿ, ¿ñÑ¡Γ¿Σ¿¬áΓ«α $  óßÑúñá  αáóÑ¡  ΓѬπΘѼπ
  379. ß¼ÑΘÑ¡¿ε  ó  ßÑú¼Ñ¡ΓÑ,  ó ¬«Γ«α«¼ Æπαí« ÇßßѼí½Ñα ó ñá¡¡δ¼ ¼«¼Ñ¡Γ
  380. óδ»«½¡∩ÑΓ áßßÑ¼í½¿α«óá¡¿Ñ. $ »αÑñßΓáó½∩ÑΓ ß«í«⌐ »«ßΓ«∩¡¡«Ñ º¡áτÑ-
  381. ¡¿Ñ  ß¼ÑΘÑ¡¿∩, á¡á½«ú¿τ¡«Ñ OFFSET MemVar. ¥Γ« »«ºó«½∩ÑΓ ¿ß»«½∞º«-
  382. óáΓ∞ $ ó óδαáªÑ¡¿∩σ ¿½¿ ó ½εí«¼ ¼ÑßΓÑ, úñÑ ñ«»π߬áÑΓß∩  ¿ß»«½∞º«-
  383. óá¡¿Ñ ¬«¡ßΓá¡Γδ.
  384.  
  385.      êñÑ¡Γ¿Σ¿¬áΓ«α $ «τÑ¡∞  πñ«í¡«  ¿ß»«½∞º«óáΓ∞  ñ½∩  óδτ¿ß½Ñ¡¿∩
  386. ñ½¿¡δ ñá¡¡δσ ¿ ¬«ñá. ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« óδ σ«Γ¿ΓÑ »α¿αáó-
  387. ¡∩Γ∞ ¿ñÑ¡Γ¿Σ¿¬áΓ«α STRING_LENGTH ¬ ñ½¿¡Ñ  ßΓ᫬¿  ó  íá⌐Γáσ.  üѺ
  388. »αÑñ«»αÑñѽѡ¡«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá  $  óá¼ »α¿ñÑΓß∩ ßñѽáΓ∞ ß½Ññπε-
  389. ΘÑÑ:
  390.  
  391.              .
  392.              .
  393.              .
  394.  StringStart    LABEL  BYTE
  395.              db 0dh,0ah,'ÆÑ¬ßΓ«óá∩ ßΓ᫬á'odh,0ah
  396.  StringEnd      LABEL  BYTE
  397.  STRING_LENGTH  EQU    (StringEnd-StringStart)
  398.              .
  399.              .
  400.              .
  401.  
  402. á ß »«¼«Θ∞ε ¿ñÑ¡Γ¿Σ¿¬áΓ«αá $ óδ ¼«ªÑΓÑ ºá»¿ßáΓ∞:
  403.  
  404.              .
  405.              .
  406.              .
  407.  StringStart    LABEL  BYTE
  408.              db 0dh,0ah,'ÆÑ¬ßΓ«óá∩ ßΓ᫬á'odh,0ah
  409.  STRING_LENGTH  EQU    ($-StringStart)
  410.              .
  411.              .
  412.              .
  413.  
  414.      ä½¿¡π (ó ß½«óáσ) ¼áßß¿óá ß½«ó ¼«ª¡« óδτ¿ß½¿Γ∞ ß½ÑñπεΘ¿¼  «í-
  415. αẫ¼:
  416.  
  417.              .
  418.              .
  419.              .
  420.  WordArray   DW  90h, 25h, 0, 16h, 23h
  421.  WORD_ARRAY_LENGTH  EQU  (($-WordArray)/2)
  422.              .
  423.              .
  424.              .
  425.  
  426.      éδ, ¬«¡Ñτ¡«, ¼«ªÑΓÑ ß«ßτ¿ΓáΓ∞ «Γñѽ∞¡δÑ φ½Ñ¼Ñ¡Γδ óαπτ¡πε, ¡«
  427. ñ½∩ í«½∞Φ¿σ ¼áßß¿ó«ó ¿ ßΓ᫬ φΓ« ñ«ó«½∞¡« ºáΓαπñ¡¿Γѽ∞¡«.
  428.  
  429.      Æα¿  ñαπú¿Ñ  »«½Ñº¡δÑ  »αÑñ«»αÑñѽѡ¡δÑ  »ÑαѼѡ¡δÑ  -   φΓ«
  430. ??DATA,  ??TIME  ¿ ??FILENAME. ??DATE ß«ñÑαª¿Γ ñáΓπ áßßÑ¼í½¿α«óá-
  431. ¡¿∩ ó ó¿ñÑ ΓѬßΓ«ó«⌐ ßΓ᫬¿ ó Σ«α¼áΓÑ 01/02/88.  ??TIME  ß«ñÑনΓ
  432. óαѼ∩  áßßÑ¼í½¿α«óá¡¿∩ ó ó¿ñÑ 13:45:06, á ??FILENAME - ¿¼∩ áßßѼ-
  433. í½¿απѼ«ú« Σá⌐½á ó ó¿ñÑ ºá¬½ετÑ¡¡«⌐ ó ¬áóδτ¬¿ ßΓ᫬¿ ¿º 8  ß¿¼ó«-
  434. ½«ó (¡á»α¿¼Ñα, "TEST.ASM").
  435.  
  436.  
  437.  
  438.                               ä¿αÑ¬Γ¿óá =
  439. -----------------------------------------------------------------
  440.  
  441.      ä¿αÑ¬Γ¿óá = á¡á½«ú¿τ¡á ñ¿αÑ¬Γ¿óÑ  EQU  ó«  óßÑσ  «Γ¡«ΦÑ¡¿∩σ,
  442. ¬α«¼Ñ «ñ¡«ú«: ó Γ« óαѼ∩ ¬á¬ ¼ÑΓ¬¿, «»αÑñѽѡ¡δÑ ß »«¼«Θ∞ε ñ¿αѬ-
  443. Γ¿óδ EQU, »ÑαÑ«»αÑñѽ∩Γ∞ ¡Ñ ñ«»π߬áÑΓß∩ (ó φΓ«¼ ß½πτáÑ »α«¿ßσ«ñ¿Γ
  444. «Φ¿í¬á), ¼ÑΓ¬π, «»αÑñѽѡ¡πε ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ =, ¼«ª¡« ßó«í«ñ-
  445. ¡« »ÑαÑ«»αÑñѽ∩Γ∞.
  446.  
  447.      ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ ñ¿αÑ¬Γ¿óá = ¿ß»«½∞ºπÑΓß∩ ñ½∩
  448. úÑ¡Ñαᵿ¿ Γáí½¿µδ »Ñαóδσ 100 »α«¿ºóÑñÑ¡¿⌐ τ¿ß½á 10:
  449.  
  450.              .
  451.              .
  452.              .
  453.              .DATA
  454.  MultipleOf10   LABEL  WORD
  455.  TEMP        =   0
  456.              REPT  100
  457.              DW    TEMP
  458.  TEMP        =   TEMP+10
  459.              ENDM
  460.              .
  461.              .
  462.              .
  463.              shl   bx,1      ; BX - τ¿ß½«, ¬«Γ«α«Ñ ¡πª¡«
  464.                              ; π¼¡«ª¿Γ∞ ¡á 10
  465.                              ; ßñó¿ú ó½Ñó« ñ½∩ π¼¡«ªÑ¡¿∩
  466.                              ; ¡á 2 (ñ½∩ Σ«α¼¿α«óá¡¿∩
  467.                              ; Γáí½¿µδ ß½«ó)
  468.              mov   ax,[MultipleOf10+bx] ; »«½πτ¿Γ∞ τ¿ß½«
  469.                              ; * 10
  470.              .
  471.              .
  472.              .
  473.  
  474.      Åα¿ óδτ¿ß½Ñ¡¿¿ óßÑσ «»Ñαá¡ñ«ó ñ¿αÑ¬Γ¿óδ = ñ«½ª¡«  »«½πτáΓ∞ß∩
  475. τ¿ß½«ó«Ñ º¡áτÑ¡¿Ñ - ó «Γ½¿τ¿Ñ «Γ ñ¿αÑ¬Γ¿óδ EQU ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿-
  476. óδ = ¼ÑΓ¬á¼ ¡Ñ½∞º∩ »α¿ßóá¿óáΓ∞ ΓѬßΓ«óδÑ ßΓ᫬¿.
  477.  
  478.  
  479.  
  480.  
  481. æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿
  482. -----------------------------------------------------------------
  483.  
  484.      ÆÑ»Ñα∞ ¼δ »«ñ«Φ½¿ ¬ αáßß¼«ΓαÑ¡¿ε ¡á¿í«½ÑÑ ¼«Θ¡δσ ¿ ¡Ñ«íδτ¡δσ
  485. ¿¡ßΓαπ¬µ¿⌐  »α«µÑßß«αá  8086 - ¿¡ßΓαπ¬µ¿⌐ ñ½∩ αáí«Γδ ß« ßΓα«¬á¼¿.
  486. æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ «Γ½¿τáεΓß∩ «Γ »α«τ¿σ  ¿¡ßΓαπ¬µ¿⌐  »α«µÑßß«αá
  487. 8086. Ä¡¿ ¼«úπΓ (ó «ñ¡«⌐ ¿¡ßΓαπ¬µ¿¿) «íαáΘáΓ∞ß∩ ¬ »á¼∩Γ¿ ¿ πóѽ¿-
  488. τ¿óáΓ∞ ¿½¿ π¼Ñ¡∞ΦáΓ∞ αÑú¿ßΓα-π¬áºáΓѽ∞. Äñ¡á ßΓ᫬«óá∩ ¿¡ßΓαπ¬µ¿∩
  489. ¼«ªÑΓ «íαáΘáΓ∞ß∩ ¬ »á¼∩Γ¿ 130000 αáº.
  490.  
  491.      èᬠ∩ß¡« ¿º ¿σ ¡áºóá¡¿∩, ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿  «ß«íÑ¡¡«  »«-
  492. ½Ñº¡δ  »α¿ αáí«ΓÑ ß ΓѬßΓ«ó묨 ßΓα«¬á¼¿. êσ ¼«ª¡« ΓᬪѠ¿ß»«½∞º«-
  493. óáΓ∞ »α¿ αáí«ΓÑ ß ¼áßß¿óἿ,  íπΣÑαἿ  ñá¡¡δσ  ¿  ½εí묨  Γ¿»á¼¿
  494. ßΓ᫬ íá⌐Γ ¿½¿ ß½«ó. æΓ᫬«ó묨 ¿¡ßΓαπ¬µ¿∩¼¿ ß½ÑñπÑΓ »«½∞º«óáΓ∞ß∩
  495. Γá¼,  úñÑ Γ«½∞¬« φΓ« ó«º¼«ª¡«, »«ß¬«½∞¬π «¡¿, ¬á¬ »αá󿽫, ¬«α«τÑ
  496. ¿ αáí«ΓáεΓ íδßΓαÑÑ,  τѼ φ¬ó¿óá½Ñ¡Γ¡á∩ ¿¼ ¬«¼í¿¡áµ¿∩ «íδτ¡δσ ¿¡ß-
  497. Γαπ¬µ¿⌐ »α«µÑßß«αá 8086, Γᬿσ, ¬á¬ MOV, INC ¿ LOOP.
  498.  
  499.      îδ αáßß¼«Γα¿¼ ñóÑ αẽ¿τ¡δÑ  »«  Σπ¡¬µ¿«¡á½∞¡«¼π  ¡áº¡áτÑ¡¿ε
  500. úαπ»»δ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐: ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ ñ½∩ »ÑαѼÑΘÑ¡¿∩
  501. ñá¡¡δσ (LODS, STOS ¿ MOVS) ¿ ßΓ᫬«óδÑ  ¿¡ßΓαπ¬µ¿¿,  ¿ß»«½∞ºπѼδÑ
  502. ñ½∩ »«¿ß¬á ¿ ßαáó¡Ñ¡¿∩ ñá¡¡δσ (SCAS ¿ CMPS).
  503.  
  504.  
  505. æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ »ÑαѼÑΘÑ¡¿∩ ñá¡¡δσ
  506. -----------------------------------------------------------------
  507.  
  508.      æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ »ÑαѼÑΘÑ¡¿∩ ñá¡¡δσ ó« ¼¡«ú«¼ á¡á½«ú¿τ¡δ
  509. ¿¡ßΓαπ¬µ¿¿ MOV, ¡« ¼«úπΓ óδ»«½¡∩Γ∞ í«½∞ΦÑ Σπ¡¬µ¿⌐, τѼ ¿¡ßΓαπ¬µ¿∩
  510. MOV ¿ αáí«ΓáεΓ íδßΓαÑÑ. îδ αáßß¼«Γα¿¼  ß¡áτá½á  ¿¡ßΓαπ¬µ¿ε  LODS.
  511. çá¼ÑΓ¿¼,  τΓ« ó« óßÑσ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ Σ½áú π¬áºá¡¿∩ ¡á»αáó-
  512. ½Ñ¡¿∩ ºáñáÑΓ ¡á»αáó½Ñ¡¿Ñ, ó ¬«Γ«α«¼ ¿º¼Ñ¡∩εΓß∩  αÑú¿ßΓαδ-π¬áºáΓÑ-
  513. ½¿.
  514.  
  515.                             ê¡ßΓαπ¬µ¿∩ LODS
  516. -----------------------------------------------------------------
  517.  
  518.      ê¡ßΓαπ¬µ¿∩ LODS, ¬«Γ«αá∩ ºáúαπªáÑΓ íá⌐Γ ¿½¿ ß½«ó« ¿º  »á¼∩Γ¿
  519. ó  á¬¬π¼π½∩Γ«α  (¡á¬«»¿Γѽ∞),  »«ñαáºñѽ∩ÑΓß∩ ¡á ñóÑ ¿¡ßΓαπ¬µ¿¿ -
  520. LODSB ¿ LODSW. ê¡ßΓαπ¬µ¿∩ LODSB ºáúαπªáÑΓ íá⌐Γ, áñαÑßπѼδ⌐ ß  »«-
  521. ¼«Θ∞ε   »áαδ  αÑú¿ßΓα«ó  DS:SI,  ó  αÑú¿ßΓα  AL  ¿ π¼Ñ¡∞ΦáÑΓ  ¿½¿
  522. πóѽ¿τ¿óáÑΓ αÑú¿ßΓα SI (ó ºáó¿ß¿¼«ßΓ¿ «Γ ß«ßΓ«∩¡¿∩ Σ½áúá  ¡á»αáó-
  523. ½Ñ¡¿∩). àß½¿ Σ½áú ¡á»αáó½Ñ¡¿∩ αáóÑ¡ 0 (πßΓá¡«ó½Ñ¡ ß »«¼«Θ∞ε ¿¡ßΓ-
  524. απ¬µ¿¿ CLD), Γ« αÑú¿ßΓα SI πóѽ¿τ¿óáÑΓß∩, á Ñß½¿ Σ½áú ¡á»αáó½Ñ¡¿∩
  525. αáóÑ¡  1  (πßΓá¡«ó½Ñ¡  ß  »«¼«Θ∞ε  ¿¡ßΓαπ¬µ¿¿ STD), Γ« αÑú¿ßΓα SI
  526. π¼Ñ¡∞ΦáÑΓß∩. ê φΓ« óÑα¡« ¡Ñ Γ«½∞¬«  ñ½∩  ¿¡ßΓαπ¬µ¿¿  LODSB,  Σ½áú
  527. ¡á»αáó½Ñ¡¿∩  π»αáó½∩ÑΓ ¡á»αáó½Ñ¡¿Ñ¼, ó ¬«Γ«α«¼ ¿º¼Ñ¡∩εΓß∩ óßÑ αÑ-
  528. ú¿ßΓαδ-π¬áºáΓѽ¿ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐.
  529.  
  530.      ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ:
  531.  
  532.              .
  533.              .
  534.              .
  535.              cld
  536.              mov   si,0
  537.              lodsb
  538.              .
  539.              .
  540.              .
  541.  
  542. ¿¡ßΓαπ¬µ¿∩ LODSB ºáúαπªáÑΓ αÑú¿ßΓα AL ß«ñÑন¼δ¼ íá⌐Γá ß«  ß¼ÑΘÑ-
  543. ¡¿Ñ¼ 0 ó ßÑú¼Ñ¡ΓÑ ñá¡¡δσ ¿ πóѽ¿τ¿óáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá SI ¡á 1.
  544. ¥Γ« φ¬ó¿óá½Ñ¡Γ¡« óδ»«½¡Ñ¡¿ε ß½ÑñπεΘ¿σ ¿¡ßΓαπ¬µ¿⌐:
  545.  
  546.              .
  547.              .
  548.              .
  549.              mov   si,0
  550.              mov   al,[si]
  551.              inc   si
  552.              .
  553.              .
  554.              .
  555.  
  556. «ñ¡á¬« ¿¡ßΓαπ¬µ¿∩ LODSB αáí«ΓáÑΓ ßπΘÑßΓóÑ¡¡« íδßΓαÑÑ (¿  ºá¡¿¼áÑΓ
  557. ¡á ñóá íá⌐Γᠼѡ∞ΦÑ), τѼ ¿¡ßΓαπ¬µ¿¿:
  558.  
  559.              mov   al,[si]
  560.              inc   si
  561.  
  562.      ê¡ßΓαπ¬µ¿∩ LODSW á¡á½«ú¿τ¡á ¿¡ßΓαπ¬µ¿¿ LODSB. Ä¡á  ß«σαá¡∩ÑΓ
  563. ó αÑú¿ßΓαÑ AX ß½«ó«, áñαÑßπѼ«Ñ »áα«⌐ αÑú¿ßΓα«ó DS:SI, á º¡áτÑ¡¿Ñ
  564. αÑú¿ßΓαá SI π¼Ñ¡∞ΦáÑΓß∩ ¿½¿ πóѽ¿τ¿óáÑΓß∩ ¡á 2, á ¡Ñ ¡á 1. ìá»α¿-
  565. ¼Ñα, ¿¡ßΓαπ¬µ¿¿:
  566.  
  567.              .
  568.              .
  569.              .
  570.              std
  571.              mov   si,0
  572.              lodsw
  573.              .
  574.              .
  575.              .
  576.  
  577. ºáúαπªáεΓ ß½«ó« ß« ß¼ÑΘÑ¡¿Ñ¼ 10 ó ßÑú¼Ñ¡ΓÑ ñá¡¡δσ ó αÑú¿ßΓα RU, á
  578. ºáΓѼ º¡áτÑ¡¿Ñ SI π¼Ñ¡∞ΦáÑΓß∩ ¡á 2.
  579.  
  580.                             ê¡ßΓαπ¬µ¿∩ STOS
  581. -----------------------------------------------------------------
  582.  
  583.      ê¡ßΓαπ¬µ¿∩ STOS - φΓ« ñ«»«½¡Ñ¡¿Ñ ¿¡ßΓαπ¬µ¿¿ LODS. Ä¡á  ºá»¿-
  584. ßδóáÑΓ º¡áτÑ¡¿Ñ αẼÑα«¼ ó íá⌐Γ ¿½¿ ß½«ó« ¿º á¬¬π¼π½∩Γ«αá ó ∩τÑ⌐-
  585. ¬π »á¼∩Γ¿, ¡á ¬«Γ«απε π¬áºδóáÑΓ »áαá  αÑú¿ßΓα«ó  ES:DI,  á  ºáΓѼ
  586. πóѽ¿τ¿óáÑΓ ¿½¿ π¼Ñ¡∞ΦáÑΓ DI. ê¡ßΓαπ¬µ¿∩ STOSB  ºá»¿ßδóáÑΓ  íá⌐Γ,
  587. ß«ñÑαªáΘ¿⌐ß∩ ó αÑú¿ßΓαÑ AL, ó ∩τÑ⌐¬π »á¼∩Γ¿ »«  áñαÑßπ  ES:DI,  á
  588. ºáΓѼ πóѽ¿τ¿óáÑΓ ¿½¿ π¼Ñ¡∞ΦáÑΓ αÑú¿ßΓα DI, ó ºáó¿ß¿¼«ßΓ¿ «Γ Σ½áúá
  589. ¡á»αáó½Ñ¡¿∩. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿¿:
  590.  
  591.              .
  592.              .
  593.              .
  594.              std
  595.              mov   di,0ffffh
  596.              mov   al,55h
  597.              stosb
  598.              .
  599.              .
  600.              .
  601.  
  602. ºá»¿ßδóáεΓ º¡áτÑ¡¿Ñ 55h ó íá⌐Γ ß« ß¼ÑΘÑ¡¿Ñ¼ 0FFFFh ó ßÑú¼Ñ¡ΓÑ, ¡á
  603. ¬«Γ«αδ⌐ π¬áºδóáÑΓ  αÑú¿ßΓα  ES,  á ºáΓѼ π¼Ñ¡∞ΦáÑΓ DI ñ« º¡áτÑ¡¿∩
  604. 0FFFEh.
  605.  
  606.      ê¡ßΓαπ¬µ¿∩ STOSW  αáí«ΓáÑΓ  á¡á½«ú¿τ¡«,  ºá»¿ßδóá∩  º¡áτÑ¡¿Ñ
  607. αẼÑα«¼  ó ß½«ó«, ß«ñÑαªáΘÑÑß∩ ó αÑú¿ßΓαÑ AX, »« áñαÑßπ ES:DI, á
  608. ºáΓѼ πóѽ¿τ¿óáÑΓ ¿½¿ π¼Ñ¡∞ΦáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DI ¡á 2. ìá»α¿-
  609. ¼Ñα, ¿¡ßΓαπ¬µ¿¿:
  610.  
  611.              .
  612.              .
  613.              .
  614.              cld
  615.              mov   di,0ffeh
  616.              mov   al,102h
  617.              stosw
  618.              .
  619.              .
  620.              .
  621.  
  622. ºá»¿ßδóáεΓ º¡áτÑ¡¿Ñ 102h αẼÑα«¼ ó ß½«ó«, ºá»¿ßá¡¡«Ñ ó  αÑú¿ßΓαÑ
  623. AX,  »«  ß¼ÑΘÑ¡¿ε  0FFEh ó ßÑú¼Ñ¡ΓÑ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα
  624. ES, á ºáΓѼ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DI πóѽ¿τ¿óáÑΓß∩ ñ« 1000h.
  625.  
  626.      ê¡ßΓαπ¬µ¿¿ LODS ¿ STOS ¼«ª¡« »αѬαáß¡«  ¿ß»«½∞º«óáΓ∞  ó¼ÑßΓÑ
  627. ñ½∩ ¬«»¿α«óá¡¿∩ íπΣÑα«ó. ìá»α¿¼Ñα, ß½ÑñπεΘá∩ »«ñ»α«úαἼᠬ«»¿απ-
  628. ÑΓ ºáóÑαΦáεΘπεß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼ ßΓ᫬π,  ºá»¿ßá¡¡πε  »«  áñαÑßπ
  629. DS:SI, ó ßΓ᫬𠻫 áñαÑßπ ES:DI:
  630.  
  631. ;
  632. ; Å«ñ»α«úαá¼¼á ñ½∩ ¬«»¿α«óá¡¿∩ ºáóÑαΦáεΘÑ⌐ß∩ ¡π½Ñ¼ ßΓ᫬¿
  633. ; ó ñαπúπε ßΓ᫬π
  634. ;
  635. ; éó«ñ:
  636. ;      DS:SI - ßΓ᫬á, ¿º ¬«Γ«α«⌐ óδ»«½¡∩ÑΓß∩ ¬«»¿α«óá¡¿Ñ
  637. ;      ES:DI - ßΓ᫬á, ó ¬«Γ«απε óδ»«½¡∩ÑΓß∩ ¬«»¿α«óá¡¿Ñ
  638. ;
  639. ; éδó«ñ: ¡ÑΓ
  640. ;
  641. ; êº¼Ñ¡∩ѼδÑ αÑú¿ßΓαδ: AL, SI, DI
  642. ;
  643. CopyString        PROC
  644.              cld                ; «íÑß»Ñτ¿Γ∞ πóѽ¿τÑ¡¿Ñ SI ¿
  645.                                 ; DI ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ
  646. CopyStringLoop:
  647.              lodsb              ; »«½πτ¿Γ∞ ß¿¼ó«½ ¿ßσ«ñ¡«⌐
  648.                                 ; ßΓ᫬¿
  649.              stosb              ; ºá»¿ßáΓ∞ ß¿¼ó«½ ó óδσ«ñ¡πε
  650.                                 ; ßΓ᫬π
  651.              cmp   al,0         ; »«ß½Ññ¡¿¼ ß¿¼ó«½«¼ ßΓ᫬¿
  652.                                 ; íδ½ 0?
  653.              jnz   CopyStringLoop ; ¡ÑΓ, «íαáí«ΓáΓ∞ ß½Ññπε-
  654.                                 ; Θ¿⌐ ß¿¼ó«½
  655.              ret                ; ñá, óδ»«½¡Ñ¡«
  656. CopyString   ENDP
  657.  
  658.      Ç¡á½«ú¿τ¡« óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬µ¿¿ LODS ¿ STOS ñ½∩
  659. ¬«»¿α«óá¡¿∩ í½«¬á íá⌐Γ,  ¬«Γ«αδÑ ¡Ñ ºáóÑαΦáεΓß∩ ¡π½Ñ¼,  ¿ß»«½∞ºπ∩
  660. ñ½∩ φΓ«ú« µ¿¬½:
  661.  
  662.              .
  663.              .
  664.              .
  665.              mov   cx,ARRAY_LENGTH_IN_WORDS ; αẼÑα ¼áßß¿óá
  666.              mov   si,OFFSET SourceArray    ; ¿ßσ«ñ¡δ⌐ ¼áßß¿ó
  667.              mov   ax,SEG SourceArray
  668.              mov   dx,ax
  669.              mov   di,OFFSET DestArray      ; µÑ½Ñó«⌐ ¼áßß¿ó
  670.              mov   ax,SEG DestArray
  671.              mov   es,ax
  672.              cld
  673.  CopyLoop:
  674.              lodsw
  675.              stosw
  676.              loop  CopyLoop
  677.              .
  678.              .
  679.              .
  680.  
  681.      Äñ¡á¬« ñ½∩ »ÑαѼÑΘÑ¡¿∩ íá⌐Γá ¿½¿ ß½«óá ¿º «ñ¡«ú« ¼ÑßΓá ó »á-
  682. ¼∩Γ¿ ó ñαπú«Ñ ÑßΓ∞ ÑΘÑ í«½ÑÑ ½πτΦ¿⌐ ß»«ß«í. ¥Γ« ¿¡ßΓαπ¬µ¿∩ MOVS.
  683.  
  684.  
  685.  
  686.                             ê¡ßΓαπ¬µ¿∩ MOVS
  687. -----------------------------------------------------------------
  688.  
  689.      ê¡ßΓαπ¬µ¿∩ MOVS á¡á½«ú¿τ¡á ¿¡ßΓαπ¬µ¿∩¼ LODS ¿ STOS, Ñß½¿  ¿σ
  690. «íΩÑñ¿¡¿Γ∞  ó  «ñ¡π ¿¡ßΓαπ¬µ¿ε. ¥Γá ¿¡ßΓαπ¬µ¿∩ ßτ¿ΓδóáÑΓ íá⌐Γ ¿½¿
  691. ß½«ó«, ºá»¿ßá¡¡«Ñ »« áñαÑßπ DS:SI, á ºáΓѼ ºá»¿ßδóáÑΓ φΓ«  º¡áτÑ-
  692. ¡¿Ñ »« áñαÑßπ,  «»αÑñѽ∩Ѽ«¼π »áα«⌐ αÑú¿ßΓα«ó  ES:DI.  æ½«ó«  ¿½¿
  693. íá⌐Γ  ¡Ñ  »ÑαÑñáÑΓß∩ »α¿ φΓ«¼ τÑαѺ αÑú¿ßΓαδ,  »«φΓ«¼π ß«ñÑন¼«Ñ
  694. αÑú¿ßΓαá AX ¡Ñ ¿º¼Ñ¡∩ÑΓß∩. ê¡ßΓαπ¬µ¿∩ MOVSB ¿¼ÑÑΓ ¼¿¡¿¼á½∞¡« ó«º-
  695. ¼«ª¡πε ñ½∩ ¿¡ßΓαπ¬µ¿¿ ñ½¿¡π. Ä¡á ºá¡¿¼áÑΓ Γ«½∞¬« «ñ¿¡ íá⌐Γ, á αá-
  696. í«ΓáÑΓ ÑΘÑ íδßΓαÑÑ, τѼ ¬«¼í¿¡áµ¿∩ ¿¡ßΓαπ¬µ¿⌐ LODS ¿ STOS. æ »α¿-
  697. ¼Ñ¡Ñ¡¿Ñ¼ ¿¡ßΓαπ¬µ¿¿ MOVS »«ß½Ññ¡¿⌐ »α¿¼Ñα »α¿«íαÑΓáÑΓ ó¿ñ:
  698.  
  699.              .
  700.              .
  701.              .
  702.              mov   cx,ARRAY_LENGTH_IN_WORDS
  703.              mov   si,OFFSET SourceArray
  704.              mov   ax,SEG SourceArray
  705.              mov   ds,ax
  706.              mov   di,OFFSET DestArray
  707.              mov   ax,SEG DestArray
  708.              mov   es,ax
  709.              cld
  710.    CopyLoop:
  711.              movsw
  712.              loop  CopyLoop
  713.              .
  714.              .
  715.              .
  716.  
  717.                     Å«óΓ«αÑ¡¿Ñ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿
  718. -----------------------------------------------------------------
  719.  
  720.      ò«Γ∩ ó »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ ¬«ñ óδú½∩ñ¿Γ ñ«ó«½∞¡«  φΣΣÑ¬Γ¿ó¡δ¼,
  721. ¡Ñ»½«σ«  í佫  íδ ¿ºíáó¿Γ∞ß∩ «Γ ¿¡ßΓαπ¬µ¿¿ LOOP ¿ »ÑαѼÑΘáΓ∞ óÑß∞
  722. ¼áßß¿ó ß »«¼«Θ∞ε «ñ¡«⌐  ¿¡ßΓαπ¬µ¿¿.  ê¡ßΓαπ¬µ¿¿  »α«µÑßß«αá  8086
  723. »αÑñ«ßΓáó½∩εΓ Γá¬πε ó«º¼«ª¡«ßΓ∞. ¥Γ« Σ«α¼á ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ ß
  724. »αÑΣ¿¬ß«¼ REP.
  725.  
  726.      ÅαÑΣ¿¬ß »«óΓ«αÑ¡¿∩ REP - φΓ« ¡Ñ ¿¡ßΓαπ¬µ¿∩,  á »αÑΣ¿¬ß  ¿¡ß-
  727. Γαπ¬µ¿¿.  ÅαÑΣ¿¬ß ¿¡ßΓαπ¬µ¿¿ ¿º¼Ñ¡∩ÑΓ αáí«Γπ »«ß½ÑñπεΘÑ⌐ ¿¡ßΓαπ¬-
  728. µ¿¿.  ÅαÑΣ¿¬ß REP ñѽáÑΓ ß½ÑñπεΘÑÑ: «¡ π¬áºδóáÑΓ, τΓ« »«ß½ÑñπεΘπε
  729. ¿¡ßΓαπ¬µ¿ε  ¡πª¡« »«óΓ«α¡« óδ»«½¡∩Γ∞ ñ« ΓÑσ »«α,  »«¬á ß«ñÑন¼«Ñ
  730. αÑú¿ßΓαá CX ¡Ñ ßΓá¡ÑΓ αáó¡δ¼ 0. (àß½¿ αÑú¿ßΓα CX αáóÑ¡ 0 ó ¡áτá½Ñ
  731. óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿,  Γ« ¿¡ßΓαπ¬µ¿∩ óδ»«½¡∩ÑΓß∩ 0 αáº,  ñαπú¿¼¿
  732. ß½«óἿ, ¡¿¬á¬¿σ ñÑ⌐ßΓó¿⌐ ¡Ñ »α«¿ºó«ñ¿Γß∩.)
  733.  
  734.      êß»«½∞ºπ∩ »αÑΣ¿¬ß REP, ¼«ª¡« ºá¼Ñ¡¿Γ∞  ó  »«ß½Ññ¡Ñ¼  »α¿¼ÑαÑ
  735. ¿¡ßΓαπ¬µ¿¿:
  736.  
  737.    CopyLoop:
  738.              movsw
  739.              loop  CopyLoop
  740.  
  741. ¡á ¿¡ßΓαπ¬µ¿ε:
  742.  
  743.         rep  movsb
  744.  
  745.      ¥Γá ¿¡ßΓαπ¬µ¿∩ íπñÑΓ »ÑαѼÑΘáΓ∞ í½«¬ ¿º 65535 ß½«ó  (0FFFFh)
  746. ¿º  »á¼∩Γ¿,  ¡áτ¿¡áεΘÑ⌐ß∩ ß áñαÑßá DS:SI ó »á¼∩Γ∞, ¡áτ¿¡áεΘπεß∩ ß
  747. áñαÑßá, «»αÑñѽ∩Ѽ«ú« αÑú¿ßΓαἿ ES:DI.
  748.  
  749.      è«¡Ñτ¡«, ñ½∩ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿ 65535 αẠ»«ΓαÑíπÑΓß∩ ú«-
  750. αáºñ«  í«½∞ΦÑ  óαѼѡ¿,  τѼ  ñ½∩ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿ «ñ¿¡ αáº,
  751. óÑñ∞ ñ½∩ «íαáΘÑ¡¿∩ ¬« óßÑ⌐ φΓ«⌐ »á¼∩Γ¿  ΓαÑíπÑΓß∩  óαѼ∩.  Äñ¡á¬«
  752. ¬áªñ«Ñ  »«óΓ«αÑ¡¿Ñ  (ß »«¼«Θ∞ε »αÑΣ¿¬ßá) ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ óδ-
  753. »«½¡∩ÑΓß∩ íδßΓαÑÑ, τѼ óδ»«½¡Ñ¡¿Ñ «ñ¡«⌐ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿. ¥Γ«
  754. »«ºó«½∩ÑΓ  »«½πτ¿Γ∞ «τÑ¡∞ íδßΓαδ⌐ ß»«ß«í τΓÑ¡¿∩ ¿º »á¼∩Γ¿, ºá»¿ß¿
  755. ó »á¼∩Γ∞ ¿ ¬«»¿α«óá¡¿∩.
  756.  
  757.      ÅαÑΣ¿¬ß REP ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ¡Ñ Γ«½∞¬« ß ¿¡ßΓαπ¬µ¿Ñ⌐ MOVS,
  758. ¡« ΓᬪѠ¿ ß ¿¡ßΓαπ¬µ¿∩¼¿ LODS ¿ STOS (¿ ¿¡ßΓαπ¬µ¿∩¼¿ SCAS ¿ CMPS
  759. - φΓ« ¼δ «íßπñ¿¼ »«ºñ¡ÑÑ). ê¡ßΓαπ¬µ¿ε STOS ¼«ª¡« ß πß»Ñσ«¼ »«óΓ«-
  760. α∩Γ∞ ñ½∩ «τ¿ßΓ¬¿ ¿½¿ ºá»«½¡Ñ¡¿∩ í½«¬«ó »á¼∩Γ¿, ¡á»α¿¼Ñα:
  761.  
  762.              .
  763.              .
  764.              .
  765.              cld
  766.              mov   ax,SEG WordArray
  767.              mov   es,ax
  768.              mov   di,OFFSET WordArray
  769.              sub   ax,ax
  770.              mov   cx,WORD_ARRAY_LENGTH
  771.              rep   stosw
  772.              .
  773.              .
  774.              .
  775.  
  776.      çñÑß∞ ¼áßß¿ó WordArray ºá»«½¡∩ÑΓß∩  ¡π½∩¼¿.  ä½∩  »«óΓ«αÑ¡¿∩
  777. ¿¡ßΓαπ¬µ¿¿  LODS  ß««ΓóÑΓßΓóπεΘÑÑ  »«½Ñº¡«Ñ  »α¿½«ªÑ¡¿Ñ »α¿ñπ¼áΓ∞
  778. Γαπñ¡«.
  779.  
  780.      ÅαÑΣ¿¬ß REP óδºδóáÑΓ »«óΓ«αÑ¡¿Ñ Γ«½∞¬« ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿.
  781. ê¡ßΓαπ¬µ¿∩ Γ¿»á:
  782.  
  783.              rep  mov   ax,[bx]
  784.  
  785. ¡Ñ ¿¼ÑÑΓ ß¼δß½á. é φΓ«¼ ß½πτáÑ »αÑΣ¿¬ß REP ¿ú¡«α¿απÑΓß∩ ¿  óδ»«½-
  786. ¡∩ÑΓß∩ ¿¡ßΓαπ¬µ¿∩:
  787.  
  788.              mov   ax,[bx]
  789.  
  790.  
  791.  
  792.  
  793. éδσ«ñ π¬áºáΓѽ∩ ºá úαá¡¿µδ ßΓ᫬¿
  794. -----------------------------------------------------------------
  795.  
  796.      çá¼ÑΓ¿¼, τΓ« »α¿ óδ»«½¡Ñ¡¿¿ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿  πóѽ¿τÑ¡¿Ñ
  797. ¿½¿  π¼Ñ¡∞ΦÑ¡¿Ñ  αÑú¿ßΓα«ó SI  ¿ DI óδ»«½¡∩ÑΓß∩ »«ß½Ñ «íαáΘÑ¡¿∩ ¬
  798. »á¼∩Γ¿. ¥Γ« «º¡áτáÑΓ, τΓ« »«ß½Ñ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿ αÑú¿ßΓαδ ¡Ñ
  799. π¬áºδóáεΓ  ¡á Γπ ∩τÑ⌐¬π, ¬ ¬«Γ«α«⌐ Γ«½∞¬« τΓ« óδ»«½¡∩½«ß∞ «íαáΘÑ-
  800. ¡¿Ñ, «¡¿ π¬áºδóáεΓ ¡á ß½ÑñπεΘπε ∩τÑ⌐¬π, ¬ ¬«Γ«α«⌐ ¡πª¡« «íαáΓ¿Γ∞-
  801. ß∩.  é ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ φΓ« «τÑ¡∞ πñ«í¡«, »«ß¬«½∞¬π »«ºó«½∩ÑΓ óá¼
  802. φΣΣÑ¬Γ¿ó¡« «αúá¡¿º«óδóáΓ∞ µ¿¬½δ, á¡á½«ú¿τ¡δÑ ΓѼ, ¬«Γ«αδÑ  »α¿óÑ-
  803. ñÑ¡δ  ó »α¿¼Ñαáσ »«ß½Ññ¡Ñú« αáºñѽá. Äñ¡á¬« ¿¡«úñá φΓ« ¼«ªÑΓ »α¿-
  804. ó«ñ¿Γ∞ ¬ »πΓá¡¿µÑ, «ß«íÑ¡¡« ¬«úñá ß »«¼«Θ∞ε ßΓ᫬«ó«⌐  ¿¡ßΓαπ¬µ¿¿
  805. óδ»«½¡∩ÑΓß∩ »«¿ß¬ ñá¡¡δσ.
  806.  
  807.  
  808. Å«¿ß¬ ñá¡¡δσ ß »«¼«Θ∞ε ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿
  809. -----------------------------------------------------------------
  810.  
  811.      èᬠαáí«ΓáεΓ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ »ÑαѼÑΘÑ¡¿∩ ñá¡¡δσ, óδ πªÑ
  812. ó¿ñѽ¿.  ÆÑ»Ñα∞  ¼δ  αáßß¼«Γα¿¼  ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ »α«ß¼«Γαá ¿
  813. ßαáó¡Ñ¡¿∩ - SCAS ¿ CMPS. ¥Γ¿ ¿¡ßΓαπ¬µ¿¿ ¿ß»«½∞ºπεΓß∩ ñ½∩ »α«ß¼«Γ-
  814. αá ¿ ßαáó¡Ñ¡¿∩ í½«¬«ó »á¼∩Γ¿.
  815.  
  816.                             ê¡ßΓαπ¬µ¿∩ SCAS
  817. -----------------------------------------------------------------
  818.  
  819.      ê¡ßΓαπ¬µ¿∩ SCAS ¿ß»«½∞ºπÑΓß∩ ñ½∩ »α«ß¼«Γαá »á¼∩Γ¿  ¿  »«¿ß¬á
  820. ß«ó»áñÑ¡¿∩  ¿½¿  ¡Ñß«ó»áñÑ¡¿∩  ß  ¬«¡¬αÑΓ¡δ¼ º¡áτÑ¡¿Ñ¼ αẼÑα«¼ ó
  821. íá⌐Γ ¿½¿ ß½«ó«. èᬠ¿ óßÑ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿,  ¿¡ßΓαπ¬µ¿∩  SCAS
  822. ¿¼ÑÑΓ ñóÑ Σ«α¼δ - SCASB ¿ SCASW.
  823.  
  824.      ê¡ßΓαπ¬µ¿∩ SCASB ßαáó¡¿óáÑΓ ß«ñÑন¼«Ñ αÑú¿ßΓαá AL ß  íá⌐Γ«-
  825. óδ¼ º¡áτÑ¡¿Ñ¼ »« áñαÑßπ ES:DI, πßΓá¡áó½¿óá∩ »α¿ φΓ«¼ Σ½áú¿, «Γαá-
  826. ªáεΘ¿Ñ αѺπ½∞ΓáΓ ßαáó¡Ñ¡¿∩ (¬á¬ »α¿ óδ»«½¡Ñ¡¿¿  ¿¡ßΓαπ¬µ¿¿  CMP).
  827. èᬠ¿ »α¿ óδ»«½¡Ñ¡¿¿ ¿¡ßΓαπ¬µ¿¿ STOSB,  »α¿ óδ»«½¡Ñ¡¿¿ ¿¡ßΓαπ¬µ¿¿
  828. SCASB πóѽ¿τ¿óáÑΓß∩ ¿½¿ π¼Ñ¡∞ΦáÑΓß∩ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DI.  ìá»α¿-
  829. ¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ ¡áσ«ñ¿Γß∩ »Ñαó«Ñ t (ßΓα«τ¡á∩
  830. íπ¬óá) ó ßΓα«¬Ñ TextString:
  831.  
  832.              .
  833.              .
  834.              .
  835.              .DATA
  836. TextString             DB   'Test text',0
  837. TEXT_STRING_LENGTH     EQU  ($-TextString) ; ñ½¿¡á ßΓ᫬¿
  838.              .
  839.              .
  840.              .
  841.              .CODE
  842.              .
  843.              .
  844.              .
  845.              mov   ax,@Data
  846.              mov   es,ax
  847.              mov   di,OFFSET TextString   ; ES:DI π¬áºδóáÑΓ
  848.                                           ; ¡á ¡áτὫ ßΓ᫬¿
  849.                                           ; TextString
  850.              mov   al,'t'                 ; ¿ß¬«¼δ⌐ ß¿¼ó«½
  851.              mov   cx,TEXT_STRING_LENGTH  ; ñ½¿¡á »α«ß¼áΓα¿-
  852.                                           ; óáѼ«⌐ ßΓ᫬¿
  853.              cld                          ; πóѽ¿τ¿óáΓ∞ DI
  854.                                           ; »α¿ »α«ß¼«ΓαÑ
  855. Scan_For_t_Loop:
  856.              csasb                        ; ES:DI ß«ó»áñáÑΓ
  857.                                           ; c AL?
  858.              je   Found_t                 ; ñá, ¼δ ¡áΦ½¿ "t"
  859.              loop Scan_For_t_Loop         ; ¡ÑΓ, á¡á½¿º¿α«óáΓ∞
  860.                                           ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  861. ; æ¿¼ó«½ "t" ¡Ñ ¡á⌐ñÑ¡
  862.              .
  863.              .
  864.              .
  865. ; æ¿¼ó«½ "t" ¡á⌐ñÑ¡
  866. Fount_t:
  867.              dec   di                     ; ßßδ½¬á «íαáΓ¡« ¡á
  868.                                           ; ß¼ÑΘÑ¡¿Ñ "t"
  869.              .
  870.              .
  871.              .
  872.  
  873.      çá¼ÑΓ¿¼, τΓ« ó ñá¡¡«¼ »α¿¼ÑαÑ »«ß½Ñ Γ«ú«, ¬á¬ ¡á⌐ñÑ¡  ß¿¼ó«½
  874. t,  αÑú¿ßΓα  DI πóѽ¿τÑ¡, τΓ« «ΓαáªáÑΓ óδσ«ñ π¬áºáΓѽ∩ ºá úαá¡¿µδ
  875. ßΓ᫬¿ (¬á¬ ¼δ πªÑ «íßπªñ὿ φΓ« αá¡ÑÑ). è«úñá ó ñá¡¡«⌐ »α«úαá¼¼Ñ
  876. πß»ÑΦ¡«  óδ»«½¡∩ÑΓß∩  »«ß½Ññ¡∩∩ ¿¡ßΓαπ¬µ¿∩ SCASB, »«ß½Ñ ßαáó¡Ñ¡¿∩
  877. DI πóѽ¿τ¿óáÑΓß∩, »«ß¬«½∞¬π »«ß½Ññ¡ÑÑ ñÑ⌐ßΓó¿Ñ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬-
  878. µ¿¿ ß«ßΓ«¿Γ ó πóѽ¿τÑ¡¿¿ π¬áºáΓѽ∩ (π¬áºáΓѽÑ⌐). é αѺπ½∞ΓáΓÑ αÑ-
  879. ú¿ßΓα DI π¬áºδóáÑΓ ¡á íá⌐Γ »«ß½Ñ ß¿¼ó«½á t ¿ Ñú« ¡πª¡« óδα«ó¡∩Γ∞,
  880. τΓ«íδ  ¬«¼»Ñ¡ß¿α«óáΓ∞  φëàóδσ«ñ ºá »αÑñÑ½δ ¡á⌐ñÑ¡¡«ú« ß¿¼ó«½á ¿
  881. ßñѽáΓ∞ Γá¬, τΓ«íδ «¡ π¬áºδóá½ ¡á t.
  882.  
  883.      ïπτΦÑ »«¡∩Γ∞ ñÑ⌐ßΓó¿Ñ ¿¡ßΓαπ¬µ¿¿ SCAS óá¼ »«¼«ªÑΓ  ßαáó¡Ñ¡¿Ñ
  884. »«ß½Ññ¡Ñú«  »α¿¼Ñα ß á¡á½«ú¿τ¡δ¼ Σαáú¼Ñ¡Γ«¼ »α«úαá¼¼δ, ¡« íѺ ¿ß-
  885. »«½∞º«óá¡¿∩ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐:
  886.  
  887.              .
  888.              .
  889.              .
  890. Scan_For_t_Loop:
  891.              cmp   es:[di],al          ; ES:DI ß«ó»áñáÑΓ ß AL?
  892.              je   Found_t              ; ñá, ¼δ ¡áΦ½¿ "t"
  893.              inc  di
  894.              loop Scan_For_t_Loop      ; ¡ÑΓ, á¡á½¿º¿α«óáΓ∞
  895.                                        ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  896.              .
  897.              .
  898.              .
  899.  
  900.      Å«ß½Ññ¡¿⌐ »α¿¼Ñα ¡Ñ ß«ó»áñáÑΓ ó Γ«τ¡«ßΓ¿ ß »α¿¼Ñα«¼, ó ¬«Γ«-
  901. α«¼  ¿ß»«½∞ºπÑΓß∩  ¿¡ßΓαπ¬µ¿∩ SCASB, Γᬠ¬á¬ SCASB πóѽ¿τ¿óáÑΓ DI
  902. ßαáºπ, á ó »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ DI  πóѽ¿τ¿óáÑΓß∩  »«ß½Ñ  ¿¡ßΓαπ¬µ¿¿
  903. JE,  τΓ«íδ  ¿ºíѪáΓ∞  ¿º¼Ñ¡Ñ¡¿∩ Σ½áú«ó, πßΓá¡«ó½Ñ¡¡δσ ¿¡ßΓαπ¬µ¿Ñ⌐
  904. CMP.
  905.  
  906.      ¥Γ« »«ºó«½∩ÑΓ ßñѽáΓ∞ ó᪡«Ñ ºá¼Ñτá¡¿Ñ, ¬áßáεΘÑÑß∩ ßΓ᫬«óδσ
  907. ¿¡ßΓαπ¬µ¿⌐ ó µÑ½«¼. æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ ¡¿¬«úñá ¡Ñ πßΓá¡áó½¿óáεΓ
  908. Σ½áú¿ Γᬿ¼  «íαẫ¼,  τΓ«íδ  «¡¿ «Γαáªá½¿ ¿º¼Ñ¡Ñ¡¿∩ º¡áτÑ¡¿⌐ αÑ-
  909. ú¿ßΓα«ó SI, DI ¿/¿½¿ CX. ê¡ßΓαπ¬µ¿¿ STOS ¿ MOVS ó««íΘÑ ¡Ñ ¿º¼Ñ¡∩-
  910. εΓ ¡¿¬á¬¿σ Σ½áú«ó, á ¿¡ßΓαπ¬µ¿¿ SCAS ¿ CMPS ¿º¼Ñ¡∩εΓ Σ½áú¿ Γ«½∞¬«
  911. ó ß««ΓóÑΓßΓó¿¿ ß αѺπ½∞ΓáΓ«¼ óδ»«½¡∩Ѽ«ú« ¿¼¿ ßαáó¡Ñ¡¿∩.
  912.  
  913.      Ä»αÑñѽѡ¡«, í佫 íδ πñ«í¡« ßóÑßΓ¿ ó »αÑñδñπΘѼ »α¿¼ÑαÑ óÑß∞
  914. µ¿¬½ ¬ «ñ¡«⌐ ¿¡ßΓαπ¬µ¿¿. èᬠóδ πªÑ ó«º¼«ª¡« ñ«úáñ὿ß∞, φΓ« »«º-
  915. ó«½∩ÑΓ ßñѽáΓ∞ ¿¡ßΓαπ¬µ¿∩ REP. Äñ¡á¬«, ¼«ªÑΓ «¬áºáΓ∞ß∩  ªÑ½áΓѽ∞-
  916. ¡δ¼  »αѬαáΓ¿Γ∞ óδ»«½¡Ñ¡¿Ñ µ¿¬½á ó ß½πτáÑ ß«ó»áñÑ¡¿∩ ¿½¿ ¡Ñß«ó»á-
  917. ñÑ¡¿∩. ä½∩ φΓ«ú« ßπΘÑßΓóπÑΓ ñóÑ Σ«α¼δ »αÑΣ¿¬ßá REP, ¬«Γ«αδÑ ¼«ª¡«
  918. ¿ß»«½∞º«óáΓ∞ ß ¿¡ßΓαπ¬µ¿Ñ⌐ SCAS (¿ ß CMPS) - REPE ¿ REPNE.
  919.  
  920.      ÅαÑΣ¿¬ß REPE (¬«Γ«αδ⌐ ΓᬪѠ¡áºδóáÑΓß∩ »αÑΣ¿¬ß«¼ REPZ)  π¬á-
  921. ºδóáÑΓ »α«µÑßß«απ 8086, τΓ« ¿¡ßΓαπ¬µ¿ε SCAS (¿½¿ CMPS) ¡πª¡« »«ó-
  922. Γ«α∩Γ∞ ñ« ΓÑσ »«α, »«¬á αÑú¿ßΓα CX ¡Ñ  ßΓá¡ÑΓ  αáó¡δ¼  ¡π½ε,  ¿½¿
  923. »«¬á  ¡Ñ  »α«¿º«⌐ñÑΓ ¡Ñß«ó»áñÑ¡¿Ñ.  ÅαÑΣ¿¬ß REPE ¼«ª¡« αáßß¼áΓα¿-
  924. óáΓ∞, ¬á¬ »αÑΣ¿¬ß,  «º¡áτáεΘ¿⌐ "»«óΓ«α∩Γ∞, »«¬á αáó¡«". Ç¡á½«ú¿τ-
  925. ¡«, »αÑΣ¿¬ß REPNE (REPNZ) π¬áºδóáÑΓ »α«µÑßß«απ 8086, τΓ« ¿¡ßΓαπ¬-
  926. µ¿ε  SCAS  (CMPS) ¡πª¡« »«óΓ«α∩Γ∞,  »«¬á CX ¡Ñ ßΓá¡ÑΓ αáó¡δ¼ ¡π½ε
  927. ¿½¿ »«¬á ¡Ñ »α«¿º«⌐ñÑΓ ß«ó»áñÑ¡¿∩. ÅαÑΣ¿¬ß REPNE ¼«ª¡« αáßß¼áΓα¿-
  928. óáΓ∞, ¬á¬ »αÑΣ¿¬ß "»«óΓ«α∩Γ∞, »«¬á ¡Ñ αáó¡«".
  929.  
  930.      Åα¿óÑñѼ »α¿¼Ñα Σαáú¼Ñ¡Γá »α«úαá¼¼δ, ó ¬«Γ«α«¼ ñ½∩ »«¿ß¬á  ó
  931. ßΓα«¬Ñ TextString ß¿¼ó«½á t ¿ß»«½∞ºπÑΓß∩ «ñ¡á ¿¡ßΓαπ¬µ¿∩ SCASB:
  932.  
  933.              .
  934.              .
  935.              .
  936.              .DATA
  937. TextString             DB   'Test text',0
  938. TEXT_STRING_LENGTH     EQU  ($-TextString) ; ñ½¿¡á ßΓ᫬¿
  939.              .
  940.              .
  941.              .
  942.              .CODE
  943.              .
  944.              .
  945.              .
  946.              mov   ax,@Data
  947.              mov   es,ax
  948.              mov   di,OFFSET TextString      ; ES:DI π¬áºδóáÑΓ
  949.                                              ; ¡á ¡áτὫ ßΓ᫬¿
  950.                                              ; TextString
  951.              mov   al,'t'                    ; ¿ß¬«¼δ⌐ ß¿¼ó«½
  952.              mov   cx,TEXT_STRING_LENGTH     ; ñ½¿¡á »α«ß¼áΓα¿-
  953.                                              ; óáѼ«⌐ ßΓ᫬¿
  954.              cld                             ; πóѽ¿τ¿óáΓ∞ DI
  955.                                              ; »α¿ »α«ß¼«ΓαÑ
  956.              repne csasb                     ; ¿ß¬áΓ∞ ó« óßÑ⌐
  957.                                              ; ßΓα«¬Ñ ß¿¼ó«½ "t"
  958.              je   Found_t                    ; ñá, ¼δ ¡áΦ½¿ "t"
  959.              loop Scan_For_t_Loop            ; ¡ÑΓ, á¡á½¿º¿α«óáΓ∞
  960.                                              ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  961. ; æ¿¼ó«½ "t" ¡Ñ ¡á⌐ñÑ¡
  962.              .
  963.              .
  964.              .
  965. ; æ¿¼ó«½ "t" ¡á⌐ñÑ¡
  966. Fount_t:
  967.              dec   di                        ; ßßδ½¬á «íαáΓ¡« ¡á
  968.                                              ; ß¼ÑΘÑ¡¿Ñ "t"
  969.              .
  970.              .
  971.              .
  972.  
  973.      èᬠ¿ óßÑ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿, ¿¡ßΓαπ¬µ¿∩ SCAS  πóѽ¿τ¿óáÑΓ
  974. αÑú¿ßΓα-π¬áºáΓѽ∞ DI, Ñß½¿ Σ½áú ¡á»αáó½Ñ¡¿∩ αáóÑ¡ 0 («τ¿ΘÑ¡ ß »«-
  975. ¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ CLD), ¿ πóѽ¿τ¿óáÑΓ DI,  Ñß½¿  Σ½áú  ¡á»αáó½Ñ¡¿∩
  976. αáóÑ¡ 1 (πßΓá¡«ó½Ñ¡ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ STD).
  977.  
  978.      ê¡ßΓαπ¬µ¿∩ SCASW - φΓ« Σ«α¼á ¿¡ßΓαπ¬µ¿¿ SCASB ñ½∩ αáí«Γδ  ß«
  979. ß½«ó«¼. Ä¡á ßαáó¡¿óáÑΓ ß«ñÑন¼«Ñ αÑú¿ßΓαá AX ß ß«ñÑন¼δ¼ »á¼∩Γ¿
  980. »« áñαÑßπ  ES:DI ¿ πóѽ¿τ¿óáÑΓ ¿½¿ π¼Ñ¡∞ΦáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DI
  981. 󠬫¡µÑ ¬áªñ«ú« óδ»«½¡Ñ¡¿∩ ¡á 2, á ¡Ñ ¡á 1. é ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ
  982. »α«úαá¼¼δ ¿¡ßΓαπ¬µ¿∩ REPE SCASW ¿ß»«½∞ºπÑΓß∩, τΓ«íδ ¡á⌐Γ¿ »«ß½Ññ-
  983. ¡εε ¡Ñ¡π½Ñóπε ºá»¿ß∞ ó ¼áßß¿óÑ µÑ½δσ τ¿ßѽ αẼÑα«¼ ó ß½«ó«:
  984.  
  985.              .
  986.              .
  987.              .
  988.              mov   ax,SEG ShortIntArray
  989.              mov   es,ax
  990.              mov   di,OFFSET
  991.  ShortIntArray+(ARRAY_LEN_IN_WORDS-1)*2)
  992.                                         ; ES:DI π¬áºδóáÑΓ ¡á
  993.                                         ; ¬«¡Ñµ
  994.                                         ; ¼áßß¿óá ShortIntArray
  995.              mov   cx,ARRAY_LEN_IN_WORDS ; ñ½¿¡á ¼áßß¿óá ó ß½«óáσ
  996.              sub   ax,ax                ; »«¿ß¬ ¡á ¡Ñß«ó»áñÑ¡¿Ñ
  997.                                         ; ß ¡π½Ñ¼
  998.              std                        ; »«¿ß¬ ó «íαáΓ¡«¼
  999.                                         ; ¡á»αáó½Ñ¡¿¿, DI
  1000.                                         ; π¼Ñ¡∞ΦáÑΓß∩
  1001.              repe  scasw                ; óδ»«½¡∩Γ∞ »«¿ß¬, »«¬á
  1002.                                         ; ¼δ ¡Ñ óßΓαÑΓ¿¼ ¡Ñ¡π½Ñ-
  1003.                                         ; ó«Ñ ß½«ó« ¿½¿ ¡Ñ óδ⌐-
  1004.                                         ; ñѼ ºá úαá¡¿µδ ¼áßß¿óá
  1005.              jne   FondNonZero
  1006. ; éÑß∞ ¼áßß¿ó ºá»«½¡Ñ¡ ¡π½∩¼¿.
  1007.              .
  1008.              .
  1009.              .
  1010. ; îδ ¡áΦ½¿ ¡Ñ¡π½Ñó«⌐ φ½Ñ¼Ñ¡Γ - ¡áßΓα«¿Γ∞ DI, τΓ«íδ «¡
  1011. ; π¬áºδóá½ ¡á φëàφ½Ñ¼Ñ¡Γ.
  1012.              inc   di
  1013.              inc   di
  1014.              .
  1015.              .
  1016.              .
  1017.  
  1018.  
  1019.  
  1020.                             ê¡ßΓαπ¬µ¿∩ CMPS
  1021. -----------------------------------------------------------------
  1022.  
  1023.      ê¡ßΓαπ¬µ¿∩ CMPS  »«ºó«½∩ÑΓ óδ»«½¡∩Γ∞ ßαáó¡Ñ¡¿Ñ ñóπσ íá⌐Γ ¿½¿
  1024. ß½«ó. Åα¿ «ñ¡«¼ óδ»«½¡Ñ¡¿¿ ¿¡ßΓαπ¬µ¿¿ CMPS ßαáó¡¿óáεΓß∩ ñóÑ ∩τÑ⌐-
  1025. ¬¿  »á¼∩Γ¿,  á  ºáΓѼ πóѽ¿τ¿óáεΓß∩ αÑú¿ßΓαδ SI ¿ DI.  ê¡ßΓαπ¬µ¿ε
  1026. CMPS ¼«ª¡« αáßß¼áΓα¿óáΓ∞,  ¬á¬ á¡á½«ú  ¿¡ßΓαπ¬µ¿¿  MOVS,  ¬«Γ«αδ⌐
  1027. ó¼ÑßΓ«  ¬«»¿α«óá¡¿∩  «ñ¡«⌐  ∩τÑ⌐¬¿ »á¼∩Γ¿ ó ñαπúπε ßαáó¡¿óáÑΓ ñóÑ
  1028. ∩τÑ⌐¬¿ »á¼∩Γ¿.
  1029.  
  1030.      ê¡ßΓαπ¬µ¿∩ CMPSB ßαáó¡¿óáÑΓ íá⌐Γ »« áñαÑßπ DS:SI ß íá⌐Γ«¼ »«
  1031. áñαÑßπ ES:DI, πßΓá¡áó½¿óá∩ ß««ΓóÑΓßΓóπεΘ¿¼ «íαẫ¼ Σ½áú¿ ¿ πóѽ¿-
  1032. τ¿óá∩ ¿½¿ π¼Ñ¡∞Φá∩ αÑú¿ßΓαδ SI ¿ DI (ó ºáó¿ß¿¼«ßΓ¿ «Γ Σ½áúá  ¡á»-
  1033. αáó½Ñ¡¿∩). ÉÑú¿ßΓα AX »α¿ φΓ«¼ ¡Ñ ¿º¼Ñ¡∩ÑΓß∩.
  1034.  
  1035.      èᬠ¿ óßÑ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿, ¿¡ßΓαπ¬µ¿∩  CMPS  ¿¼ÑÑΓ  ñóÑ
  1036. Σ«α¼δ  (ñ½∩ αáí«Γδ ß íá⌐ΓἿ ¿ ñ½∩ αáí«Γδ ß« ß½«óἿ), ¼«ªÑΓ πóÑ-
  1037. ½¿τ¿óáΓ∞ ¿½¿ π¼Ñ¡∞ΦáΓ∞ αÑú¿ßΓαδ SI ¿ DI  ¿ íπñÑΓ »«óΓ«α∩Γ∞ß∩  »α¿
  1038. ¡á½¿τ¿¿  »αÑΣ¿¬ßá REP. Åα¿óÑñѼ »α¿¼Ñα Σαáú¼Ñ¡Γá »α«úαá¼¼δ, ó ¬«-
  1039. Γ«α«¼ »α«óÑα∩ÑΓß∩ ¿ñÑ¡Γ¿τ¡«ßΓ∞ »Ñαóδσ 50 φ½Ñ¼Ñ¡Γ«ó ñóπσ  ¼áßß¿ó«ó
  1040. φ½Ñ¼Ñ¡Γ«ó  αẼÑα«¼  ó ß½«ó«, ¿ ñ½∩ φΓ«ú« ¿ß»«½∞ºπÑΓß∩ ¿¡ßΓαπ¬µ¿∩
  1041. CMPSW:
  1042.  
  1043.              .
  1044.              .
  1045.              .
  1046.              mov   si,OFFSET Array1
  1047.              mov   ax,SEG Array1
  1048.              mov   ds,ax
  1049.              mov   di,OFFSET Array2
  1050.              mov   ax,SEG Array2
  1051.              mov   es,ax
  1052.              mov   cx,50              ; ßαáó¡¿Γ∞ »ÑαóδÑ 50
  1053.                                       ; φ½Ñ¼Ñ¡Γ«ó
  1054.              cd
  1055.              repe  cmpsw
  1056.              jne   ArraysAreDifferent ; ¼áßß¿óδ αẽ¿τ¡δ
  1057. ; ÅÑαóδÑ 50 φ½Ñ¼Ñ¡Γ«ó ß«ó»áñáεΓ.
  1058.              .
  1059.              .
  1060.              .
  1061. ; é ¼áßß¿óáσ «Γ½¿τáεΓß∩ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ñóá φ½Ñ¼Ñ¡Γá.
  1062. ArraysAreDifferent:
  1063.              dec   si
  1064.              dec   si                 ; «íÑß»Ñτ¿Γ∞, τΓ«íδ
  1065.              dec   di                 ; SI ¿ DI π¬áºδó὿ ¡á
  1066.              dec   di                 ; «Γ½¿τáεΘ¿Ñß∩
  1067.                                       ; φ½Ñ¼Ñ¡Γδ
  1068.              .
  1069.              .
  1070.              .
  1071.  
  1072.  
  1073.  
  1074.             êß»«½∞º«óá¡¿Ñ ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ «»Ñαá¡ñ«ó
  1075. -----------------------------------------------------------------
  1076.  
  1077.      îδ Γ«½∞¬« τΓ« αáßß¼«Γαѽ¿ ∩ó¡δÑ Σ«α¼δ (ñ½∩ αáí«Γδ ß  íá⌐ΓἿ
  1078. ¿  ß« ß½«óἿ) ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐. äαπú¿¼¿ ß½«óἿ, ¼δ πó¿ñѽ¿,
  1079. ¬á¬ αáí«ΓáεΓ ¿¡ßΓαπ¬µ¿¿ LODSB ¿ LODSW, ¡« ¡Ñ  ¿ß»«½∞º«ó὿  ¿¡ßΓ-
  1080. απ¬µ¿ε LODS. ä«»π߬áÑΓß∩ ΓᬪѠ¿ß»«½∞º«óá¡¿Ñ Γᬿσ Σ«α¼ ßΓ᫬«óδσ
  1081. ¿¡ßΓαπ¬µ¿⌐, úñÑ αẼÑα «»Ñαá¡ñá ∩ó¡«  ¡Ñ  π¬áºδóáÑΓß∩.  Åα¿  φΓ«¼
  1082. ¡πª¡« «íÑß»Ñτ¿Γ∞ ºáñá¡¿Ñ «»Ñαá¡ñ«ó Γᬿ¼ «íαẫ¼, τΓ«íδ Æπαí« Çß-
  1083. ßѼí½Ñα º¡á½, αáí«ΓáÑΓ «¡ ß íá⌐ΓἿ ¿½¿ ß« ß½«óἿ.
  1084.  
  1085.      î«ª¡« »α¿óÑßΓ¿ ß½ÑñπεΘ¿⌐ »α¿¼Ñα, φ¬ó¿óá½Ñ¡Γ¡δ⌐ ¿ß»«½∞º«óá¡¿ε
  1086. ¿¡ßΓαπ¬µ¿¿ MOVSB:
  1087.  
  1088.              .
  1089.              .
  1090.              .
  1091.              .DATA
  1092. String1      LABEL   BYTE
  1093.              db      'abcdefghi'
  1094. STRING1_LENGTH   EQU   ($-String1)
  1095. String2      DB      50  DUP (?)
  1096.              .
  1097.              .
  1098.              .
  1099.              .CODE
  1100.              mov   ax,@Data
  1101.              mov   ds,ax
  1102.              mov   es,ax
  1103.              mov   si,OFFSET String1
  1104.              mov   di,OFFSET String2
  1105.              mov   cx,STRING1_LENGTH
  1106.              cld
  1107.              rep   movs  es:[String2],[String2]
  1108.              .
  1109.              .
  1110.              .
  1111.  
  1112.      Å«ß½Ñ Γ«ú«, ¬á¬ óδ ó ¬áτÑßΓóÑ «»Ñαá¡ñ«ó ¿¡ßΓαπ¬µ¿¿ MOVS  ºá-
  1113. ñáñ¿ΓÑ  String1  ¿ String2, Æπαí« ÇßßѼí½Ñα ¿ß»«½∞ºπÑΓ ó ¬áτÑßΓóÑ
  1114. αẼÑαá ñá¡¡δσ αẼÑα «»Ñαá¡ñ«ó  (ó ñá¡¡«¼ ß½πτáÑ íá⌐Γ).
  1115.  
  1116.      Äñ¡á¬« ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ ¿ß»«½∞º«óá¡¿Ñ  «»Ñαá¡ñ«ó ¿¼Ñ-
  1117. ÑΓ «ß«íδ⌐ ß¼δß½. Ä»Ñαá¡ñδ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ -  φΓ« "¡Ñ ¡áßΓ«∩-
  1118. Θ¿Ñ" «»Ñαá¡ñδ ó Γ«¼ ß¼δß½Ñ,  τΓ«  «¡¿  óßΓα«Ñ¡δ  ó  ¿¡ßΓαπ¬µ¿ε, á
  1119. ßΓ᫬«óá∩ ¿¡ßΓαπ¬µ¿∩  αáí«ΓáÑΓ  ó  ß««ΓóÑΓßΓó¿¿  ß π¬áºáΓѽ∩¼¿ SI
  1120. ¿/¿½¿ DI. Ä»Ñαá¡ñδ ¿ß»«½∞ºπεΓß∩ Γ«½∞¬« ñ½∩ ºáñá¡¿∩  αẼÑαá  ñá¡-
  1121. ¡δσ, á ¡Ñ ñ½∩ ñÑ⌐ßΓó¿Γѽ∞¡«⌐ ºáúαπº¬¿ π¬áºáΓѽÑ⌐. éºú½∩¡Ñ¼ ¡á φΓ«
  1122. Γá¬: ¬«úñá óδ ¿ß»«½∞ºπÑΓÑ ¿¡ßΓαπ¬µ¿ε Γ¿»á:
  1123.  
  1124.              mov   al,[String1]
  1125.  
  1126. ß¼ÑΘÑ¡¿Ñ String1 "óßΓαá¿óáÑΓß∩" »α∩¼« ó  ¿¡ßΓαπ¬µ¿ε  ¡á  ¼áΦ¿¡¡«¼
  1127. ∩ºδ¬Ñ, ß««ΓóÑΓßΓóπεΘπε ¿¡ßΓαπ¬µ¿¿ MOV. Äñ¡á¬«, ¬«úñá óδ ¿ß»«½∞ºπ-
  1128. ÑΓÑ ¿¡ßΓαπ¬µ¿ε:
  1129.  
  1130.              lods   [String1]
  1131.  
  1132. ¿¡ßΓαπ¬µ¿∩ ¡á ¼áΦ¿¡¡«¼ ∩ºδ¬Ñ íπñÑΓ ºá¡¿¼áΓ∞ 1 íá⌐Γ ¿ ß««ΓóÑΓßΓó«-
  1133. óáΓ∞  ¿¡ßΓαπ¬µ¿¿  LODSB:  Stirng1 ó ¿¡ßΓαπ¬µ¿ε ¡Ñ óßΓαá¿óáÑΓß∩. é
  1134. φΓ«¼ ß½πτáÑ óδ ñ«½ª¡δ «íÑß»Ñτ¿Γ∞, τΓ«íδ αÑú¿ßΓαδ DS:SI  π¬áºδó὿
  1135. ¡á ¡áτὫ String1.
  1136.  
  1137.      Ä»Ñαá¡ñδ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ á¡á½«ú¿τ¡δ ΓѼ «»Ñαá¡ñá¼,  ¬«-
  1138. Γ«αδÑ  ¿ß»«½∞ºπεΓß∩  ó ñ¿αÑ¬Γ¿óÑ ASSUME ó ¬áτÑßΓóÑ ßÑú¼Ñ¡Γ«ó. ä¿-
  1139. αÑ¬Γ¿óá ASSUME ¡Ñ πßΓá¡áó½¿óáÑΓ ßÑú¼Ñ¡Γ¡δ⌐  αÑú¿ßΓα,  «¡á  »α«ßΓ«
  1140. ß««íΘáÑΓ  Æπαí« ÇßßѼí½Ñαπ, τΓ« óδ πßΓᡫ󿽿 ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα,
  1141. »«φΓ«¼π Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ óδ»«½¡¿Γ∞ ñ½∩ óáß »α«óÑα¬π ¡á ¡á½¿-
  1142. τ¿Ñ «Φ¿í«¬. Ç¡á½«ú¿τ¡«, «»Ñαá¡ñδ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ ¡Ñ πßΓá¡áó-
  1143. ½¿óáεΓ αÑú¿ßΓαδ, «¡¿ »α«ßΓ« π¬áºδóáεΓ Æπαí«  ÇßßѼí½Ñαπ,  τΓ«  óδ
  1144. πßΓᡫ󿽿  SI ¿/¿½¿ DI, í½áú«ñáα∩ τѼπ Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ «»-
  1145. αÑñѽ¿Γ∞ αẼÑα «»Ñαá¡ñá ¿ óδ»«½¡¿Γ∞ »α«óÑα¬π ¡á ¡á½¿τ¿Ñ  «Φ¿í«¬.
  1146. äá½∞¡Ñ⌐ΦÑÑ  «íßπªñÑ¡¿Ñ «»Ñαá¡ñ«ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ »α¿óÑñÑ¡« ó
  1147. αáºñѽѠ"Ä»Ñαá¡ñδ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐".
  1148.  
  1149.      é αáºñѽѠ"ÄΦ¿í¬¿ »α¿ αáí«ΓÑ ß« ßΓ᫬«ó묨 ¿¡ßΓαπ¬µ¿∩¼¿"  ¼δ
  1150. «íßπñ¿¼  ¡Ñ¬«Γ«αδÑ  ¼«¼Ñ¡Γδ,  ¬áßáεΘ¿Ñß∩  ¿ß»«½∞º«óá¡¿∩ ßΓ᫬«óδσ
  1151. ¿¡ßΓαπ¬µ¿⌐.
  1152.  
  1153.  
  1154.  
  1155.               Åα«úαá¼¼δ, ß«ßΓ«∩Θ¿Ñ ¿º ¡Ñ߬«½∞¬¿σ ¼«ñπ½Ñ⌐
  1156. -----------------------------------------------------------------
  1157.  
  1158.      Éá¡« ¿½¿ »«ºñ¡« óδ »«ñ«⌐ñÑΓÑ ¬ Γ«¼π,  τΓ«  σαá¡¿Γ∞  ¿ßσ«ñ¡δ⌐
  1159. ΓѬßΓ  ¬áªñ«⌐  »α«úαá¼¼δ ßΓá¡ÑΓ ºáΓαπñ¡¿Γѽ∞¡«. êß»«½∞º«óá¡¿Ñ ñ½∩
  1160. ¿ßσ«ñ¡«ú« ¬«ñá »α«úαá¼¼δ «ñ¡«ú« Σá⌐½á »αѬαáß¡« »«ñσ«ñ¿Γ ñ½∩  ¡Ñ-
  1161. í«½∞Φ¿σ »α«úαá¼¼, Γᬿσ, ¬á¬ »α¿¼Ñαδ ñá¡¡«ú« απ¬«ó«ñßΓóá, ¡« ñáªÑ
  1162. »α«úαá¼¼δ ßαÑñ¡Ñú« αẼÑαá »α¿σ«ñ¿Γß∩ αáºí¿óáΓ∞ ¡á ¡Ñ߬«½∞¬« Σá⌐-
  1163. ½«ó  ¿½¿  ¼«ñπ½Ñ⌐,  ¬«Γ«αδÑ áßßÑ¼í½¿απεΓß∩ «Γñѽ∞¡« ¿ ¬«¼»«¡πεΓß∩
  1164. ó¼ÑßΓÑ.  Äß¡«ó¡«Ñ »αÑ¿¼πΘÑßΓó« »α«úαá¼¼,  ß«ßΓ«∩Θ¿σ ¿º ¡Ñ߬«½∞¬¿σ
  1165. ¼«ñπ½Ñ⌐, ß«ßΓ«¿Γ ó Γ«¼, τΓ« »«ß½Ñ Γ«ú«, ¬á¬ óδ «ΓαÑñá¬Γ¿απÑΓÑ ¿ß-
  1166. σ«ñ¡δ⌐ ¬«ñ,  óá¼ »«ΓαÑíπÑΓß∩ »ÑαÑáßßÑ¼í½¿α«óáΓ∞ Γ«½∞¬« ΓÑ ¼«ñπ½¿,
  1167. ¬«Γ«αδÑ óδ ¿º¼Ñ¡¿½¿,  ¡Ñ ºáΓαáú¿óá∩ «ßΓá½∞¡δσ ¼«ñπ½Ñ⌐ »α«úαá¼¼δ.
  1168. è Γ«¼π ªÑ ú«αáºñ« »α«ΘÑ «α¿Ñ¡Γ¿α«óáΓ∞ß∩ ßαÑñ¿  ¡Ñ߬«½∞¬¿σ  ßΓ᫬,
  1169. τѼ ó «ñ¡«¼ í«½∞Φ«¼ Σá⌐½Ñ.
  1170.  
  1171.      æ«ºñáΓ∞ »α«úαá¼¼π, ß«ßΓ«∩Θπε ¿º  ¡Ñ߬«½∞¬¿σ  ¼«ñπ½Ñ⌐,  «τÑ¡∞
  1172. ½Ñú¬«.  ä½∩ «íÑß»ÑτÑ¡¿∩ Γᬿσ »α«úαá¼¼ Æπαí« ÇßßѼí½Ñα »αÑñπß¼áΓ-
  1173. α¿óáÑΓ Γα¿ ñ¿αÑ¬Γ¿óδ: PUBLIC, EXTRN ¿ GLOBAL.  îδ  αáßß¼«Γα¿¼  ¿σ
  1174. »««τÑαÑñ¡«, ¡« ß¡áτá½á ¼δ »α«á¡á½¿º¿απѼ »α¿¼Ñα »α«úαá¼¼δ, ß«ßΓ«-
  1175. ∩ΘÑ⌐ ¿º ñóπσ ¼«ñπ½Ñ⌐, »«ß½Ñ τÑú« óá¼ íπñÑΓ ∩ßÑ¡ ¬«¡ΓѬßΓ, ó ¬«Γ«-
  1176. α«¼  ¼δ  íπñÑΓ «íßπªñáΓ∞ π¬áºá¡¡δÑ óδΦÑ ñ¿αÑ¬Γ¿óδ. Äß¡«ó¡á∩ »α«ú-
  1177. αá¼¼á MAIN.ASM ¿¼ÑÑΓ ß½ÑñπεΘ¿⌐ ó¿ñ:
  1178.  
  1179.              DOSSEG
  1180.              .MODEL   SMALL
  1181.              .STACK   200h
  1182.              .DATA
  1183. String1               DB  'ä«íαδ⌐ ',0
  1184. String2               DB  'ñÑ¡∞!',0dh,0ah,'$',0
  1185.              GLOBEL   FinalString:BYTE
  1186. FinalString           DB  50 DUP (?)
  1187.              .CODE
  1188.              EXTRN    ConcatenateStrings:PROC
  1189. ProgramStart:
  1190.              mov   ax,@Data
  1191.              mov   ds,ax
  1192.              mov   ax,OFFSET String1
  1193.              mov   bx,OFFSET String2
  1194.              call  ConcatenateStrings  ; «íΩÑñ¿¡Ñ¡¿Ñ ñóπσ
  1195.                                        ; ßΓ᫬ ó «ñ¡π ßΓ᫬π
  1196.              mov   ah,9
  1197.              mov   dx,OFFSET FinalString
  1198.              int   21h                 ; »ÑτáΓ∞ ßΓ᫬¿-
  1199.                                        ; αѺπ½∞ΓáΓá
  1200.              mov   ax,4ch
  1201.              int   21h                 ; óδ»«½¡¿Γ∞
  1202.              END   ProgramStart
  1203.  
  1204.      Ç ó«Γ ñαπú«⌐ ¼«ñπ½∞ »α«úαá¼¼δ, SUB1.ASM:
  1205.  
  1206.              DOSSEG
  1207.              .MODEL   SMALL
  1208.              .DATA
  1209.              GLOBAL   FinalString:BYTE
  1210.              .CODE
  1211. ;
  1212. ; Å«ñ»α«úαἼᠬ«»¿απÑΓ ß¡áτá½á «ñ¡π ßΓ᫬π,
  1213. ; ºáΓѼ ñαπúπε, ó ßΓ᫬π FinalString
  1214. ;
  1215. ; éó«ñ:
  1216. ;    DS:AX = π¬áºáΓѽ∞ ¡á »Ñαóπε ¬«»¿απѼπε ßΓ᫬π
  1217. ;    DS:BX = π¬áºáΓѽ∞ ¡á óΓ«απε ¬«»¿απѼπε ßΓ᫬π
  1218. ;
  1219. ; éδó«ñ: «ΓßπΓßΓóπÑΓ
  1220. ;
  1221. ; êº¼Ñ¡∩ѼδÑ αÑú¿ßΓαδ: AL, SI, DI, ES
  1222. ;
  1223.              PUBLIC   ConcatenateStrings
  1224. ConcatenateStrings    PROC
  1225.              cld                   ; «ΓßτÑΓ ó »α∩¼«¼
  1226.                                    ; ¡á»αáó½Ñ¡¿¿
  1227.              mov   di,SEG FinelString
  1228.              mov   es,di
  1229.              mov   di,OFFSET FinelString ; ES:DI π¬áºδóáÑΓ
  1230.                                    ; ¡á µÑ½Ñóπε ßΓ᫬π
  1231.              mov   si,ax           ; »Ñαóá∩ ßΓ᫬á ñ½∩
  1232.                                    ; ¬«»¿α«óá¡¿∩ ó StringLoop
  1233.              lodsb                 ; »«½πτ¿Γ∞ ß¿¼ó«½ ßΓ᫬¿ 1
  1234.              and   al,al           ; φΓ« 0?
  1235.              jz    DoString2       ; ñá, ß« ßΓ᫬«⌐ 1 »«¬«¡τÑ¡«
  1236.              stosb                 ; ß«σαá¡¿Γ∞ ß¿¼ó«½ ßΓ«¬¿ 1
  1237.              jmp   StringLoop
  1238. DoString2:
  1239.              mov   si,bx           ; óΓ«αá∩ ßΓ᫬á ñ½∩ ¬«»¿α«-
  1240.                                    ; óá¡¿∩ ó µ¿¬½Ñ String2Loop
  1241.              lodsb                 ; »«½πτ¿Γ∞ ß¿¼ó«½ ßΓ᫬¿ 2
  1242.              stosb                 ; ß«σαá¡¿Γ∞ ß¿¼ó«½ ßΓ᫬¿ 2
  1243.                                    ; (ó¬½ετá∩ 0, ¬«úñá ¼δ
  1244.                                    ; Ñú« óßΓαÑΓ¿¼)
  1245.              and   al,al           ; φΓ« 0?
  1246.              jnz   String2Loop     ; ¡ÑΓ, «íαáí«ΓáΓ∞ ß½ÑñπεΘ¿⌐
  1247.                                    ; ß¿¼ó«½
  1248.              ret                   ; óδ»«½¡Ñ¡«
  1249. ConcatenateString  ENDP
  1250.              END
  1251.  
  1252.      ¥Γ¿ ñóá ¼«ñπ½∩ ¼«ª¡« áßßÑ¼í½¿α«óáΓ∞ «Γñѽ∞¡« ß  »«¼«Θ∞ε  ¬«-
  1253. ¼á¡ñ:
  1254.  
  1255.        TASM main
  1256. ¿
  1257.        TASM sub1
  1258.  
  1259. á ºáΓѼ ß¬«¼»«¡«óáΓ∞ ¿σ ó »α«úαá¼¼π MAIN.EXE ß »«¼«Θ∞ε ¬«¼á¡ñδ:
  1260.  
  1261.        TLINK main+sib1
  1262.  
  1263.      Åα¿ ºá»π߬Ѡ¬«¼á¡ñ«⌐:
  1264.  
  1265.        main
  1266.  
  1267. »α«úαá¼¼á MAIN.EXE, ¬á¬ ¼«ª¡« ñ«úáñáΓ∞ß∩, óδó«ñ¿Γ ¡á φ¬αá¡  ßΓα«-
  1268. ¬π:
  1269.  
  1270.         ä«íαδ⌐ ñÑ¡∞!
  1271.  
  1272.      ÆÑ»Ñα∞, ¬«úñá óδ πó¿ñѽ¿ »α«úαá¼¼π, ß«ßΓ«∩Θπε ¿º  ¡Ñ߬«½∞¬¿σ
  1273. ¼«ñπ½Ñ⌐,  ó ñÑ⌐ßΓó¿¿, ñáóá⌐ΓÑ αáßß¼«Γα¿¼ Γα¿ ñ¿αÑ¬Γ¿óδ, «íÑß»Ñτ¿-
  1274. óáεΘ¿Ñ ΓᬫѠ»α«úαá¼¼¿α«óá¡¿Ñ.
  1275.  
  1276.  
  1277.  
  1278.                            ä¿αÑ¬Γ¿óá PUBLIC
  1279. -----------------------------------------------------------------
  1280.  
  1281.      äÑ⌐ßΓó¿Ñ ñ¿αÑ¬Γ¿óδ PUBLIC ñ«ßΓáΓ«τ¡« »α«ßΓ«.  Ä¡á  π¬áºδóáÑΓ
  1282. Æπαí«  ÇßßѼí½Ñαπ, τΓ« ß««ΓóÑΓßΓóπεΘπε ¼ÑΓ¬π ¿½¿ ¼ÑΓ¬¿ ¡πª¡« ßñÑ-
  1283. ½áΓ∞ ñ«ßΓπ»¡δ¼¿ ñ½∩  ñαπú¿σ  ¼«ñπ½Ñ⌐.  çñÑß∞  ¼«ª¡«  ¿ß»«½∞º«óáΓ∞
  1284. »αá¬Γ¿τÑ߬¿  ½εíδÑ ¼ÑΓ¬¿, ó¬½ετá∩ ¿¼Ñ¡á »α«µÑñπα ¿ »ÑαѼѡ¡δσ »á-
  1285. ¼∩Γ¿, á ΓᬪѠ»α¿αáó¡Ñ¡¡δÑ ¼ÑΓ¬¿. ä¿αÑ¬Γ¿óá  PUBLIC  «íÑß»Ñτ¿óáÑΓ
  1286. ñ«ßΓπ»¡«ßΓ∞ φΓ¿σ ¼ÑΓ«¬ ñαπú¿¼ ¼«ñπ½∩¼. ìá»α¿¼Ñα:
  1287.  
  1288.              .
  1289.              .
  1290.              .
  1291.              .DATA
  1292.              PUBLIC   MemVar, Array1, ARRAY_LENGTH
  1293. ARRAY_LENGTH EQU      100
  1294. MemVar       DW       10
  1295. Array1       DB       ARRAY_LENGTH DUP (?)
  1296.              .
  1297.              .
  1298.              .
  1299.              .CODE
  1300.              PUBLIC   NearProc, FarProc
  1301. NearProc     PROC  NEAR
  1302.              .
  1303.              .
  1304.              .
  1305. NearProc     ENDP          ; í½¿ª¡∩∩ »α«µÑñπαá
  1306.              .
  1307.              .
  1308.              .
  1309. FarProc      LABEL PROC    ; ñá½∞¡∩∩ »α«µÑñπαá
  1310.              .
  1311.              .
  1312.              .
  1313.              END
  1314.  
  1315.      çñÑß∞ ¿¼Ñ¡á »α¿αáó¡Ñ¡¡«⌐ ¼ÑΓ¬¿, »ÑαѼѡ¡«⌐ αẼÑα«¼ ó ß½«ó«,
  1316. ¼áßß¿óá  ¿  »α«µÑñπαδ  ß í½¿ª¡Ñ¼ Γ¿»«¼ «íαáΘÑ¡¿∩ ñ«ßΓπ»¡δ ñαπú«¼π
  1317. ¼«ñπ½ε, ¬«Γ«αδ⌐ íπñÑΓ ¬«¼»«¡«óáΓ∞ß∩ ß ñá¡¡δ¼ ¼«ñπ½Ñ¼.
  1318.  
  1319.      Äñ¡á¬« ¿¼ÑÑΓß∩ «ñ¿¡ Γ¿» ¼ÑΓ«¬, ¬«Γ«αδÑ ¡Ñ½∞º∩ ßñѽáΓ∞  «íΘÑ-
  1320. ñ«ßΓπ»¡δ¼¿. ¥Γ« »α¿αáó¡Ñ¡¡δÑ ¼ÑΓ¬¿, ¬«Γ«αδÑ αáó¡δ º¡áτÑ¡¿∩¼-¬«¡ß-
  1321. Γá¡Γá¼ ß αẼÑαἿ,  «Γ½¿τ¡δ¼¿ «Γ 1 ¿½¿ 2 íá⌐Γ. ìá»α¿¼Ñα, ß½Ññπε-
  1322. Θ¿Ñ ¼ÑΓ¬¿ «íΘÑñ«ßΓπ»¡δ¼¿ ßñѽáΓ∞ ¡Ñ½∞º∩:
  1323.  
  1324.  LONG_VALUE  EQU   1000h
  1325.  TEXT_SYMBOL EQU   <TextString>
  1326.  
  1327.      Åα¿ áßßÑ¼í½¿α«óá¡¿¿ Æπαí« ÇßßѼí½Ñα  «íδτ¡«  ¿ú¡«α¿απÑΓ  αÑ-
  1328. ú¿ßΓα íπ¬óδ, »«φΓ«¼π óßÑ «íΘÑñ«ßΓπ»¡δÑ ¼ÑΓ¬¿ »αÑ«íαáºπεΓß∩ ó »α«-
  1329. »¿ß¡δÑ ß¿¼ó«½δ (óÑασ¡¿⌐ αÑú¿ßΓα). àß½¿ óδ σ«Γ¿ΓÑ, τΓ«íδ  ó  «íΘÑ-
  1330. ñ«ßΓπ»¡δσ  ¼ÑΓ¬áσ αẽ¿τ὿ß∞ íπ¬óδ óÑασ¡Ñú« ¿ ¡¿ª¡Ñú« αÑú¿ßΓα«ó,
  1331. Γ« »α¿ áßßÑ¼í½¿α«óá¡¿¿ óßÑσ ¼«ñπ½Ñ⌐, ß«ñÑαªáΘ¿σ ßß佬¿  ¡á  «íΘÑ-
  1332. ñ«ßΓπ»¡δÑ  ¼ÑΓ¬¿, ¡πª¡« ¿ß»«½∞º«óáΓ∞ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ Æπαí« Çß-
  1333. ßѼí½Ñαá »áαá¼ÑΓα /ML ¿½¿ /MX.
  1334.  
  1335.      ìá»α¿¼Ñα, íѺ »áαá¼ÑΓαá /MX ¿½¿ /ML ó ñαπú¿σ ¼«ñπ½∩σ ß½Ññπε-
  1336. Θ¿Ñ ñóÑ ¼ÑΓ¬¿ íπñπΓ φ¬ó¿óá½Ñ¡Γ¡δ¼¿:
  1337.  
  1338.         PUBLIC    Symbol1, SYMBOL1
  1339.  
  1340.      Åα¿ ¿ß»«½∞º«óá¡¿¿ ñ½∩ «íÑß»ÑτÑ¡¿∩  αẽ¿τ¿¼«ßΓ¿  ßΓα«τ¡δσ  ¿
  1341. »α«»¿ß¡δσ íπ¬ó ó «íΘÑñ«ßΓπ»¡δσ ¿ ó¡ÑΦ¡¿σ ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ »áαá¼ÑΓ-
  1342. αá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /MX ¡πª¡« ó¡¿¼áΓѽ∞¡« π¬áºδóáΓ∞ íπ¬óδ óÑασ¡Ñ-
  1343. ú« ¿½¿ ¡¿ª¡Ñú« αÑú¿ßΓα«ó ó ñ¿αÑ¬Γ¿óáσ PUBLIC ¿½¿ EXTRN. Æπαí« Çß-
  1344. ßѼí½Ñα ñѽáÑΓ ñ«ßΓπ»¡δ¼ ñ½∩ ñαπú¿σ  ¼«ñπ½Ñ⌐  Γ«Γ  ¿ñÑ¡Γ¿Σ¿¬áΓ«α,
  1345. ¬«Γ«αδ⌐ π¬áºδóáÑΓ ó ñ¿αÑ¬Γ¿óÑ PUBLIC ¿½¿ EXTRN, á ¡Ñ Γ«Γ ¡á ¬«Γ«-
  1346. αδ⌐ ñѽáÑΓß∩ ßßδ½¬á ¿½¿ ¬«Γ«αδ⌐ »ÑαÑ«»αÑñѽ∩ÑΓß∩  ó¡πΓα¿  ¼«ñπ½∩.
  1347. ìá»α¿¼Ñα, ñ¿αÑ¬Γ¿óá:
  1348.  
  1349.         PUBLIC  Abc
  1350.  abC    Dw
  1351.  
  1352. »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« «íΘÑñ«ßΓπ»¡δ¼ íπñÑΓ ¿¼∩ Abc, á ¡Ñ abC.
  1353.  
  1354.      ä½∩ ¬áªñ«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ó ñ¿αÑ¬Γ¿óÑ  PUBLIC  ¼«ª¡«  ΓᬪÑ
  1355. ºáñáΓ∞ ∩ºδ¬:  C, FORTRAN, PASCAL, BASIC, PROLOG ¿ NOLANGUAGE (¡ÑΓ
  1356. ∩ºδ¬á).  ¥Γ« »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« ¬ ¿¼Ñ¡¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ñ« Γ«ú«,
  1357. ¬á¬  «ñ¡«  ó «íΩÑ¬Γ¡«¼ Σá⌐½Ñ ßΓá¡ÑΓ «íΘÑñ«ßΓπ»¡δ¼,  áóΓ«¼áΓ¿τÑ߬¿
  1358. »α¿¼Ñ¡∩εΓß∩ »αáó¿½á ¬«¡¬αÑΓ¡«ú« ∩ºδ¬á. ìá»α¿¼Ñα, Ñß½¿ óδ «»¿ß὿:
  1359.  
  1360.         PUBLIC C myprog
  1361.  
  1362. Γ« ¿ñÑ¡Γ¿Σ¿¬áΓ«α myprog ó ¿ßσ«ñ¡«¼  Σá⌐½Ñ  ßΓá¡ÑΓ  «íΘÑñ«ßΓπ»¡δ¼,
  1363. ¬á¬ _myproc,  »«ß¬«½∞¬π  »«  ß«ú½áΦÑ¡¿∩¼  ∩ºδ¬á  æ¿ »ÑαÑñ ¿¼Ñ¡á¼¿
  1364. ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ß½ÑñπÑΓ ß¿¼ó«½ »«ñτÑનóá¡¿∩. êß»«½∞º«óá¡¿Ñ ¿ñÑ¡-
  1365. Γ¿Σ¿¬áΓ«αá ∩ºδ¬á ó ñ¿αÑ¬Γ¿óÑ PUBLIC óαѼѡ¡« «Γ¼Ñ¡∩ÑΓ ΓѬπΘÑÑ ºá-
  1366. ñá¡¿Ñ ∩ºδ¬á (¿ß»«½∞ºπѼ«Ñ »« π¼«½τá¡¿ε ¿½¿ ºáñá¡¡«Ñ ó ñ¿αÑ¬Γ¿óÑ .
  1367. MODEL). (ùΓ«íδ αáí«ΓὫ ñá¡¡«Ñ ßαÑñßΓó«,  ¡Ñ  «í∩ºáΓѽ∞¡«  ñ«½ª¡á
  1368. ñÑ⌐ßΓó«óáΓ∞ ñ¿αÑ¬Γ¿óá .MODEL.)
  1369.  
  1370.                             ä¿αÑ¬Γ¿óá EXTRN
  1371. -----------------------------------------------------------------
  1372.  
  1373.      é »«ß½Ññ¡Ñ¼ αáºñѽÑ, τΓ«íδ  ßñѽáΓ∞  ¼ÑΓ¬¿  MemVar,  Array1,
  1374. ARRAY_LENGTH,  NearProc  ¿ FarProc ñ«ßΓπ»¡δ¼¿ ñ½∩ ñαπú¿σ ¼«ñπ½Ñ⌐,
  1375. ¼δ ¿ß»«½∞º«ó὿ ñ¿αÑ¬Γ¿óπ PUBLIC. ìá ñá½ÑѠ󫺡¿¬áÑΓ ó«»α«ß,  ¬á-
  1376. ¬¿¼ «íαẫ¼ ñαπú¿Ñ ¼«ñπ½¿ ¼«úπΓ ßßδ½áΓ∞ß∩ ¡á φΓ¿ ¼ÑΓ¬¿?
  1377.  
  1378.      ä½∩ Γ«ú«, τΓ«íδ ßñѽáΓ∞ ¼ÑΓ¬¿ ¿º ñαπú«ú« ¼«ñπ½∩ ñ«ßΓπ»¡δ¼¿ ó
  1379. ñá¡¡«¼  ¼«ñπ½Ñ, ¿ß»«½∞ºπÑΓß∩ ñ¿αÑ¬Γ¿óá EXTRN. Å«ß½Ñ Γ«ú«, ¬á¬ ñ¿-
  1380. αÑ¬Γ¿óá EXTRN íπñÑΓ ¿ß»«½∞º«óá¡á, τΓ«íδ ßñѽáΓ∞ ñ«ßΓπ»¡δ¼  ó ñá¡-
  1381. ¡«¼ ¼«ñπ½Ñ ¼ÑΓ¬π ¿º ñαπú«ú« ¼«ñπ½∩,  φΓπ ¼ÑΓ¬π ¼«ª¡« ¿ß»«½∞º«óáΓ∞
  1382. ΓᬪÑ, ¬á¬ Ñß½¿ íδ «¡á íδ½á «»αÑñѽѡá ó ΓѬπΘѼ  ¼«ñπ½Ñ.  Åα¿óÑ-
  1383. ñѼ »α¿¼Ñα ñαπú«ú« ¼«ñπ½∩, ó ¬«Γ«α«¼ ñ¿αÑ¬Γ¿óá EXTERN ¿ß»«½∞ºπÑΓ-
  1384. ß∩ ñ½∩ ßß佫¬ ¡á «íΘÑñ«ßΓπ»¡δÑ ¼ÑΓ¬¿, «»¿ßá¡¡δÑ ó »«ß½Ññ¡Ñ¼  αáº-
  1385. ñѽÑ:
  1386.  
  1387.              .
  1388.              .
  1389.              .
  1390.              .DATA
  1391.              EXTRN   MemVar:WORD,Array1:BYTE,ARRAY_LENGTH:ABS
  1392.              .
  1393.              .
  1394.              .
  1395.              .CODE
  1396.              EXTRN  NearProc:NEAR,FarProc:FAR
  1397.              .
  1398.              .
  1399.              .
  1400.              mov   ax,[MemVar]
  1401.              mov   bx,OFFSET Array1
  1402.              mov   cx,ARRAY_LENGTH
  1403.              .
  1404.              .
  1405.              .
  1406.              call  NearProc
  1407.              .
  1408.              .
  1409.              .
  1410.              call  FarProc
  1411.              .
  1412.              .
  1413.              .
  1414.  
  1415.      çá¼ÑΓ¿¼, τΓ« óßÑ »∩Γ∞ ¼ÑΓ«¬ ¿ß»«½∞ºπεΓß∩ ¬á¬ «íδτ¡«. àñ¿¡ßΓ-
  1416. óÑ¡¡«Ñ  «Γ½¿τ¿Ñ  «Γ  »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ, ß«ßΓ«∩ΘÑ⌐ ¿º «ñ¡«ú«
  1417. ¼«ñπ½∩, ∩ó½∩ÑΓß∩ ñ¿αÑ¬Γ¿óá EXTRN.
  1418.  
  1419.      çá ¬áªñ«⌐ ¼ÑΓ¬«⌐, «íΩ∩ó½Ñ¡¡«⌐  ó  ñ¿αÑ¬Γ¿óÑ  EXTRN,  ß½ÑñπÑΓ
  1420. ñó«ÑΓ«τ¿Ñ  ¿ Γ¿». Æ¿» ¡Ñ«íσ«ñ¿¼« π¬áºδóáΓ∞, ¿¡áτÑ Æπαí« ÇßßѼí½Ñα
  1421. ¡Ñ íπñÑΓ º¡áΓ∞ ¬á¬πε ¿¼Ñ¡¡«  ¼ÑΓ¬π óδ «íΩ∩ó½∩ÑΓÑ ß »«¼«Θ∞ε ñ¿αѬ-
  1422. Γ¿óδ EXTRN.   çá  «ñ¡¿¼  ¿ß¬½ετÑ¡¿Ñ¼   ¿ß»«½∞ºπѼδÑ  ñ½∩  ó¡ÑΦ¡¿σ
  1423. (external) ¼ÑΓ«¬ Γ¿»δ ß«ó»áñáεΓ ß Γ¿»á¼¿, ¬«Γ«αδÑ ¼«úπΓ ¿ß»«½∞º«-
  1424. óáΓ∞ß∩ ó ñ¿αÑ¬Γ¿óÑ LABEL. ä«»πßΓ¿¼δ ß½ÑñπεΘ¿Ñ Γ¿»δ:
  1425.  
  1426.    ABS           - áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ;
  1427.    BYTE          - »ÑαѼѡ¡á∩ (ñá¡¡δÑ) αẼÑα«¼ ó íá⌐Γ;
  1428.    DWORD         - »ÑαѼѡ¡á∩ (ñá¡¡δÑ) αẼÑα«¼ ó ñó«⌐¡«Ñ
  1429.                    ß½«ó« (4 íá⌐Γá);
  1430.    DATAPTR       - π¬áºáΓѽ∞ ¡á ñá¡¡δÑ í½¿ª¡Ñú« ¿½¿ ñá½∞¡Ñú« Γ¿-
  1431.                    »á, ó ºáó¿ß¿¼«ßΓ¿ «Γ ¼«ñѽ¿ »á¼∩Γ¿;
  1432.  
  1433.    FAR           - ¼ÑΓ¬á ¬«ñá ß ñá½∞¡¿¼ Γ¿»«¼ «íαáΘÑ¡¿∩
  1434.                    (»ÑαÑσ«ñ «ßπΘÑßΓó½∩ÑΓß∩ ºáúαπº¬«⌐
  1435.                    αÑú¿ßΓα«ó CS:IP);
  1436.    FWORD         - 6-íá⌐Γ«óá∩ »ÑαѼѡ¡á∩ (ñá¡¡δÑ);
  1437.    NEAR          - ¼ÑΓ¬á ¬«ñá ß í½¿ª¡¿¼ Γ¿»«¼ «íαáΘÑ¡¿∩
  1438.                    (»α¿ »ÑαÑσ«ñÑ ºáúαπªáÑΓß∩ Γ«½∞¬«
  1439.                    αÑú¿ßΓα IP);
  1440.    PROC          - ¼ÑΓ¬á »α«µÑñπαδ (NEAR ¿½¿ FAR, ó
  1441.                    ß««ΓóÑΓßΓó¿¿ ß ñ¿αÑ¬Γ¿ó«⌐ .MODEL);
  1442.    QWORD         - »ÑαѼѡ¡á∩ (ñá¡¡δÑ) αẼÑα«¼ ó
  1443.                    τÑΓóÑα¡«Ñ ß½«ó« (8 íá⌐Γ);
  1444.    ê¼∩ ßΓαπ¬Γπαδ - ¿¼∩ «»αÑñѽѡ¡«ú« »«½∞º«óáΓѽѼ Γ¿»á STRUC;
  1445.    TBYTE         - 10-íá⌐Γ«óá∩ »ÑαѼѡ¡á∩ (ñá¡¡δÑ);
  1446.    UNKNOWN       - ¡Ñ¿ºóÑßΓ¡δ⌐ Γ¿»;
  1447.    WORD          - »ÑαѼѡ¡á∩ (ñá¡¡δÑ) αẼÑα«¼ ó ß½«ó«
  1448.                    (2 íá⌐Γá).
  1449.  
  1450.      àñ¿¡ßΓóÑ¡¡δ¼ ¡Ñº¡á¬«¼δ¼ Γ¿»«¼ ó¡ÑΦ¡¿σ  ñá¡¡δσ  ∩ó½∩ÑΓß∩  Γ¿»
  1451. ABS, ¬«Γ«αδ⌐ ¿ß»«½∞ºπÑΓß∩ ñ½∩ «íΩ∩ó½Ñ¡¿∩ ¼ÑΓ¬¿, «»αÑñѽѡ¡«⌐ ó ÑÑ
  1452. ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EQU ¿½¿ =.  äαπú¿¼¿  ß½«óἿ,
  1453. φΓ« ¼ÑΓ¬á,  ¬«Γ«αá∩  »α«ßΓ« »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¿¼∩ ¬«¡ßΓá¡Γδ ¿ ¡Ñ
  1454. ßó∩ºá¡á ß áñαÑßἿ ¬«ñá ¿½¿ ñá¡¡δσ.
  1455.  
  1456.      ÄτÑ¡∞ ó᪡«, τΓ«íδ ñ½∩ ó¡ÑΦ¡¿σ ¼ÑΓ«¬ óδ ºáñáó὿  ¬«ααÑ¬Γ¡δ⌐
  1457. Γ¿» ñá¡¡δσ, Γᬠ¬á¬ Æπαí« ÇßßѼí½Ñα íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ ¬«ñ ¡á «ß-
  1458. ¡«óÑ ºáñá¡¡δσ óἿ Γ¿»«ó ñá¡¡δσ, ¿ π ¡Ñú« ¡ÑΓ ñαπú«ú« ß»«ß«íá «»-
  1459. αÑñѽ¿Γ∞,  τΓ«  óáΦᠠ߻ѵ¿Σ¿¬áµ¿∩ ¡Ñ¬«ααÑ¬Γ¡á. ìá»α¿¼Ñα, Ñß½¿ óδ
  1460. ß½πτá⌐¡« óóѽ¿:
  1461.  
  1462.              .
  1463.              .
  1464.              .
  1465.              .CODE
  1466.              EXTRN   FarProc:NEAR
  1467.              .
  1468.              .
  1469.              .
  1470.              call   FarProc
  1471.              .
  1472.              .
  1473.              .
  1474.  
  1475. á ó ñαπú«¼ ¼«ñπ½Ñ ß«ñÑনΓß∩:
  1476.  
  1477.              .
  1478.              .
  1479.              .
  1480.              PUBLIC   FarProc
  1481.  FARPROC     PROC     FAR
  1482.              .
  1483.              .
  1484.              .
  1485.              ret
  1486.  FarProc     ENDP
  1487.              .
  1488.              .
  1489.              .
  1490.  
  1491. Γ« Æπαí« ÇßßѼí½Ñα ó ß««ΓóÑΓßΓó¿Ñ ß Γ¿»«¼ ñá¡¡δσ, ºáñá¡¡δ¼ óἿ ó
  1492. ñ¿αÑ¬Γ¿óÑ EXTRN,  ßúÑ¡Ñα¿απÑΓ  í½¿ª¡ÑÑ  «íαáΘÑ¡¿Ñ   ¬   »α«µÑñπαÑ
  1493. FarProc.  î«ª¡«  ß  «»αÑñѽѡ¡«ßΓ∞ε ß¬áºáΓ∞,  τΓ« Γá¬á∩ »α«úαá¼¼á
  1494. ¬«ααÑ¬Γ¡« αáí«ΓáΓ∞ ¡Ñ íπñÑΓ,  »«ß¬«½∞¬π FarProc ¡á ßἫ¼ ñѽѠ∩ó-
  1495. ½∩ÑΓß∩  »α«µÑñπα«⌐  ß ñá½∞¡¿¼ Γ¿»«¼ «íαáΘÑ¡¿∩ ¿ ºáóÑαΦáÑΓß∩ ß««Γ-
  1496. óÑΓßΓóπεΘÑ⌐ ¿¡ßΓαπ¬µ¿Ñ⌐ RET.
  1497.  
  1498.      èᬠπªÑ «»¿ßδóὫß∞ ó  »«ß½Ññ¡Ñ¼  αáºñѽÑ,  Æπαí«  ÇßßѼí½Ñα
  1499. «íδτ¡«  (»«  π¼«½τá¡¿ε)  ¡Ñ  αẽ¿τáÑΓ  óÑασ¡¿⌐ ¿ ¡¿ª¡¿⌐ αÑú¿ßΓαδ
  1500. íπ¬ó, »«φΓ«¼π «íΘÑñ«ßΓπ»¡δÑ ¼ÑΓ¬¿  »αÑ«íαáºπεΓß∩  ó  óÑασ¡¿⌐  αÑ-
  1501. ú¿ßΓα.  ¥Γ« «º¡áτáÑΓ, τΓ« ó «íδτ¡«¼ ß«ßΓ«∩¡¿¿ ó¡ÑΦ¡¿Ñ ¼ÑΓ¬¿ íπñπΓ
  1502. ¿¡ΓÑα»αÑΓ¿α«óáΓ∞ß∩ ó óÑασ¡Ñ¼ αÑú¿ßΓαÑ. àß½¿ óδ σ«ñ¿ΓÑ,  τΓ«íδ  ó«
  1503. ó¡ÑΦ¡¿σ  ¼ÑΓ¬áσ  αÑú¿ßΓαδ íπ¬ó αẽ¿τ὿ß∞, ¿ß»«½∞ºπ⌐ΓÑ »áαá¼ÑΓαδ
  1504. ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /ML ¿½¿ /MX.
  1505.  
  1506.      ä½∩ ¬áªñ«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ó ñ¿αÑ¬Γ¿óÑ EXTRN óδ ¼«ªÑΓÑ ΓᬪÑ
  1507. ºáñáΓ∞ ∩ºδ¬:  C,  PASCAL,  BASIC,  FORTRAN, PROLOG ¿½¿ NOLANGUAGE
  1508. (ó »«ß½Ññ¡Ñ¼ ß½πτáÑ ∩ºδ¬ ¡Ñ ¿ß»«½∞ºπÑΓß∩).  ¥Γ« »α¿ó«ñ¿Γ ¬  Γ«¼π,
  1509. τΓ« »ÑαÑñ  ΓѼ,¬á¬ ¿¼∩ ßΓá¡ÑΓ ó «íΩÑ¬Γ¡«¼ Σá⌐½Ñ «íΘÑñ«ßΓπ»¡δ¼,  ¬
  1510. ¡Ñ¼π áóΓ«¼áΓ¿τÑ߬¿ »α¿¼Ñ¡∩εΓß∩ »αáó¿½á π¬áºá¡¡«ú«  ∩ºδ¬á.  ìá»α¿-
  1511. ¼Ñα, Ñß½¿ óδ «»¿ß὿:
  1512.  
  1513.        EXTRN C myprog:NEAR
  1514.  
  1515. Γ« ¿ñÑ¡Γ¿Σ¿¬áΓ«α myprog ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ »αÑ«íαáºπÑΓß∩ ó« ó¡ÑΦ¡¿⌐
  1516. ¿ñÑ¡Γ¿Σ¿¬áΓ«α _myprog. êß»«½∞º«ó᡿Ѡ߻ѵ¿Σ¿¬áΓ«αá ∩ºδ¬á ó ñ¿αѬ-
  1517. Γ¿óÑ EXTRN  óαѼѡ¡«  «Γ¼Ñ¡∩ÑΓ ΓѬπΘÑÑ ºáñá¡¿Ñ ∩ºδ¬á (¬«Γ«αδ⌐ ¿ß-
  1518. »«½∞ºπÑΓß∩ »« π¼«½τá¡¿ε ¿½¿ ºáñá¡  ó  ñ¿αÑ¬Γ¿óÑ  .MODEL).  (ùΓ«íδ
  1519. αáí«ΓὫ ñá¡¡«Ñ ßαÑñßΓó«,  ñ¿αÑ¬Γ¿óá .MODEL ¡Ñ «í∩ºáΓѽ∞¡« ñ«½ª¡á
  1520. ñÑ⌐ßΓó«óáΓ∞.)
  1521.  
  1522.  
  1523.  
  1524.                            ä¿αÑ¬Γ¿óá GLOBAL
  1525. -----------------------------------------------------------------
  1526.  
  1527.      Åα«τ¿Γáó »«ß½Ññ¡¿Ñ αáºñѽδ, óδ ¼«ªÑΓÑ πñ¿ó¿Γ∞ß∩,  ºáτѼ  ñ½∩
  1528. óδ»«½¡Ñ¡¿∩  «ñ¡«⌐  αáí«Γδ  («íÑß»ÑτÑ¡¿∩ ß«ó¼ÑßΓ¡«ú« ¿ß»«½∞º«óá¡¿∩
  1529. ¼ÑΓ«¬ αáº¡δ¼¿ ¼«ñπ½∩¼¿) ¡πª¡δ ñóÑ ñ¿αÑ¬Γ¿óδ - PUBLIC ¿  EXTRN?  é
  1530. ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ Ññ¿¡ßΓóÑ¡¡á∩ »α¿τ¿¡á ¿ß»«½∞º«óá¡¿∩ ñóπσ ñ¿αÑ¬Γ¿ó
  1531. ºá¬½ετáÑΓß∩ ó ¡Ñ«íσ«ñ¿¼«ßΓ¿ «íÑß»Ñτ¿Γ∞ ß«ó¼ÑßΓ¿¼«ßΓ∞ ß í«½ÑÑ αá¡-
  1532. ¡¿¼¿  áßßѼí½ÑαἿ.  é Æπαí« ÇßßѼí½ÑαÑ ¿¼ÑÑΓß∩ ñ¿αÑ¬Γ¿óá GLOBAL,
  1533. ¬«Γ«αá∩ ñѽáÑΓ óßÑ Γ«, τΓ« ñѽáεΓ ñ¿αÑ¬Γ¿óδ PUBLIC ¿ EXTRN.
  1534.  
  1535.      àß½¿ ß »«¼«Θ∞ε ñá¡¡«⌐ ñ¿αÑ¬Γ¿óδ óδ «íΩ∩ó¿ΓÑ  ¼ÑΓ¬π  ú½«íá½∞-
  1536. ¡«⌐,  á  ºáΓѼ  «»αÑñѽ¿ΓÑ  ÑÑ  (ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿ó DB, DW, PROC,
  1537. LABEL ¿½¿ ñαπú¿σ »«ñ«í¡δσ ñ¿αÑ¬Γ¿ó), Γ«  ¼ÑΓ¬á  ßΓá¡ÑΓ  ñ«ßΓπ»¡«⌐
  1538. ñαπú¿¼  ¼«ñπ½∩¼  á¡á½«ú¿τ¡« Γ«¼π, ¬á¬ Ñß½¿ íδ óδ ó¼ÑßΓ« ñ¿αÑ¬Γ¿óδ
  1539. GLOBAL ¿ß»«½∞º«ó὿ ñ¿αÑ¬Γ¿óπ PUBLIC. àß½¿ ªÑ óδ, ß ñαπú«⌐ ßΓ«α«-
  1540. ¡δ,  «íΩ∩ó½∩ÑΓÑ ¼ÑΓ¬π ú½«íá½∞¡«, á ºáΓѼ ¿ß»«½∞ºπÑΓÑ ÑÑ íѺ «»αÑ-
  1541. ñѽѡ¿∩, Γ« φΓá ¼ÑΓ¬á ¿¡ΓÑα»αÑΓ¿απÑΓß∩, ¬á¬ ó¡ÑΦ¡∩∩ ¼ÑΓ¬á, á¡á½«-
  1542. ú¿τ¡« Γ«¼π, ¬á¬ Ñß½¿ íδ óδ «íΩ∩󿽿 ÑÑ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EXTRN.
  1543.  
  1544.      Éáßß¼«Γα¿¼, ¡á»α¿¼Ñα, ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ:
  1545.  
  1546.              .
  1547.              .
  1548.              .
  1549.              .DATA
  1550.              GLOBAL   FinalCount:WORD,PromptString:BYTE
  1551. FinalCount            DW  ?
  1552.              .
  1553.              .
  1554.              .
  1555.              .CODE
  1556.              GLOBAL   DoReport:NEAR,TallyUp:FAR
  1557. TallyUp      PROC     FAR
  1558.              .
  1559.              .
  1560.              .
  1561.              call  DoReport
  1562.              .
  1563.              .
  1564.              .
  1565.  
  1566.      çñÑß∞ ¼ÑΓ¬¿ FinalCount ¿  TallyUp  «»αÑñѽѡδ,  »«φΓ«¼π  «¡¿
  1567. ßΓá¡«ó∩Γß∩  «íΘÑñ«ßΓπ»¡δ¼¿ (ñ½∩ ñαπú¿σ ¼«ñπ½Ñ⌐) ¼ÑΓ¬á¼¿ (public).
  1568. îÑΓ¬¿ PromptString ¿ DoReport ¡Ñ «»αÑñѽѡδ, »«φΓ«¼π »«ñαáºπ¼Ñóá-
  1569. ÑΓß∩,  τΓ«  φΓ« ó¡ÑΦ¡¿Ñ (external) ¼ÑΓ¬¿, ¬«Γ«αδÑ «íΩ∩ó½Ñ¡δ «íΘÑ-
  1570. ñ«ßΓπ»¡δ¼¿ ó ñαπú¿σ ¼«ñπ½∩σ.
  1571.  
  1572.      ä¿αÑ¬Γ¿óπ GLOBAL «τÑ¡∞  πñ«í¡«  ¿ß»«½∞º«óáΓ∞,  ¡á»α¿¼Ñα,  ó«
  1573. ó¬½ετáѼδσ  Σá⌐½áσ  (φΓ¿  Σá⌐½δ  ¼δ «íßπñ¿¼ ó ß½ÑñπεΘѼ αáºñѽÑ).
  1574. ÅαÑñ»«½«ª¿¼, π óáß ÑßΓ∞ ¼¡«ªÑßΓó« ¼ÑΓ«¬, ¬«Γ«αδÑ óδ  σ«Γ¿ΓÑ  ßñÑ-
  1575. ½áΓ∞ ñ«ßΓπ»¡δ¼¿ ó »α«úαἼѠ(ß«ßΓ«∩ΘÑ⌐ ¿º ¡Ñ߬«½∞¬¿σ ¼«ñπ½Ñ⌐) ñ½∩
  1576. ñαπú¿σ ¼«ñπ½Ñ⌐. ìÑ»½«σ« í佫 íδ, Ñß½¿ íδ ¼δ ß¼«ú½¿ «»αÑñѽ¿Γ∞ óßÑ
  1577. φΓ¿  ¼ÑΓ¬¿ ó« ó¬½ετáѼ«¼ Σá⌐½Ñ, á ºáΓѼ ó¬½ετ¿Γ∞ φëàΣá⌐½ ó ¬áª-
  1578. ñδ⌐ ¼«ñπ½∞. è ß«ªá½Ñ¡¿ε, ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿ó PUBLIC  ¿  EXTRN  φΓ«
  1579. ¡Ñ󫺼«ª¡«, Γᬠ¬á¬ ñ¿αÑ¬Γ¿óá EXTRN ¡Ñ íπñÑΓ αáí«ΓáΓ∞ ó Γ«¼ ¼«ñπ-
  1580. ½Ñ, ó ¬«Γ«α«¼ «»αÑñѽѡá ñá¡¡á∩ ¼ÑΓ¬á, á ñ¿αÑ¬Γ¿óá PUBLIC   íπñÑΓ
  1581. αáí«ΓáΓ∞  Γ«½∞¬« ó Γ«¼ ¼«ñπ½Ñ, ó ¬«Γ«α«¼ ñá¡¡á∩ ¼ÑΓ¬á «»αÑñѽѡá.
  1582. Äñ¡á¬« ñ¿αÑ¬Γ¿óá GLOBAL ñ«»πßΓ¿¼á ó« óßÑσ ¼«ñπ½∩σ, »«φΓ«¼π óδ ¼«-
  1583. ªÑΓÑ ßΣ«α¼¿α«óáΓ∞ ó¬½ετáѼδ⌐ Σá⌐½, úñÑ óßÑ ¡πª¡δÑ ¼ÑΓ¬¿ «íΩ∩ó½Ñ¡δ
  1584. ú½«íá½∞¡δ¼¿, á ºáΓѼ ó¬½ετ¿Γ∞ ñá¡¡δ⌐ Σá⌐½ ó« óßÑ óáΦ¿ ¼«ñπ½¿.
  1585.  
  1586.      ä½∩ ¬áªñ«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ó ñ¿αÑ¬Γ¿óÑ GLOBAL, ¬á¬ ¿ ñ½∩ ñ¿-
  1587. αÑ¬Γ¿ó  PUBLIC ¿½¿ EXTRN,  ¼«ª¡« ΓᬪѠºáñáΓ∞ ∩ºδ¬:  C,  FORTRAN,
  1588. PASCAL,  BASIC,  PROLOG ¿ NOLANGUAGE (¡ÑΓ ∩ºδ¬á).  ¥Γ« »α¿ó«ñ¿Γ ¬
  1589. Γ«¼π,  τΓ«  ¬ ¿¼Ñ¡¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ñ« Γ«ú«,  ¬á¬ «ñ¡« ó «íΩÑ¬Γ¡«¼
  1590. Σá⌐½Ñ  ßΓá¡ÑΓ  «íΘÑñ«ßΓπ»¡δ¼,  áóΓ«¼áΓ¿τÑ߬¿  »α¿¼Ñ¡∩εΓß∩ »αáó¿½á
  1591. ¬«¡¬αÑΓ¡«ú« ∩ºδ¬á. ìá»α¿¼Ñα, Ñß½¿ óδ «»¿ß὿:
  1592.  
  1593.          GLOBAL C myprog
  1594.  
  1595. Γ« ¿ñÑ¡Γ¿Σ¿¬áΓ«α myprog ó ¿ßσ«ñ¡«¼  Σá⌐½Ñ  ßΓá¡ÑΓ  «íΘÑñ«ßΓπ»¡δ¼,
  1596. ¬á¬ _myproc,  »«ß¬«½∞¬π  »«  ß«ú½áΦÑ¡¿∩¼  ∩ºδ¬á  æ¿ »ÑαÑñ ¿¼Ñ¡á¼¿
  1597. ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ß½ÑñπÑΓ ß¿¼ó«½ »«ñτÑનóá¡¿∩. êß»«½∞º«óá¡¿Ñ ¿ñÑ¡-
  1598. Γ¿Σ¿¬áΓ«αá ∩ºδ¬á ó ñ¿αÑ¬Γ¿óÑ PUBLIC óαѼѡ¡« «Γ¼Ñ¡∩ÑΓ ΓѬπΘÑÑ ºá-
  1599. ñá¡¿Ñ ∩ºδ¬á (¿ß»«½∞ºπѼ«Ñ »« π¼«½τá¡¿ε ¿½¿  ºáñá¡¡«Ñ ó  ñ¿αÑ¬Γ¿óÑ
  1600. .MODEL). (ùΓ«íδ  αáí«ΓὫ ñá¡¡«Ñ ßαÑñßΓó«,  ¡Ñ «í∩ºáΓѽ∞¡« ñ«½ª¡á
  1601. ñÑ⌐ßΓó«óáΓ∞ ñ¿αÑ¬Γ¿óá .MODEL.)
  1602.  
  1603.  
  1604.  
  1605.                            é¬½ετáѼδÑ Σá⌐½δ
  1606. -----------------------------------------------------------------
  1607.  
  1608.      ùáßΓ« «¬áºδóáÑΓß∩ ªÑ½áΓѽ∞¡δ¼ ó¬½ετ¿Γ∞ «ñ¿¡ ¿  Γ«Γ  ªÑ  í½«¬
  1609. ¿ßσ«ñ¡«ú« ¬«ñá ÇßßѼí½Ñαá ó ¡Ñ߬«½∞¬« ¿ßσ«ñ¡δσ ¼«ñπ½Ñ⌐. éδ ¼«ªÑΓÑ
  1610. ºáσ«ΓÑΓ∞ ¿ß»«½∞º«óáΓ∞ ó αẽ¿τ¡δσ  ¼«ñπ½∩σ  «ñ¡«⌐  »α«úαá¼¼δ  ¬á-
  1611. ¬¿Ñ-½¿í«  »α¿ßóá¿óá¡¿∩  ¿½¿  ¼á¬α«¬«¼á¡ñδ,  ¿½¿ ¿ß»«½∞º«óáΓ∞ ¿σ ó
  1612. αạδσ »α«úαá¼¼áσ. Åα¿ φΓ«¼ »α¿Φ½«ß∞ íδ ¡á»¿ßáΓ∞ ñ½¿¡¡πε »α«úαá¼-
  1613. ¼π, ¬«Γ«απε ¡ÑªÑ½áΓѽ∞¡« αáºí¿óáΓ∞ ¡á ¡Ñ߬«½∞¬« ¬«¼»«¡πѼδσ ¼«ñπ-
  1614. ½Ñ⌐ (¡á»α¿¼Ñα, »α«úαá¼¼π, ¬«Γ«αá∩ ñ«½ª¡á ºá»¿ßδóáΓ∞ß∩ ó Åçô),  ¡«
  1615. Γá¬á∩  »α«úαá¼¼á ß½¿Φ¬«¼ óѽ¿¬á ¿ ÑÑ ¡Ñπñ«í¡« íπñÑΓ σαá¡¿Γ∞ ó «ñ-
  1616. ¡«¼ Σá⌐½Ñ. é φΓ«¼ ß½πτáÑ ταѺóδτá⌐¡« πñ«í¡«⌐ «¬áºδóáÑΓß∩ ñ¿αÑ¬Γ¿-
  1617. óá INCLUDE.
  1618.  
  1619.      è«úñá Æπαí« ÇßßѼí½Ñα  óßΓαÑτáÑΓ  ñ¿αÑ¬Γ¿óπ  INCLUDE  (ó¬½ε-
  1620. τ¿Γ∞), «¡ »«¼ÑτáÑΓ φΓ« ¼ÑßΓ« ó ΓѬπΘѼ ¼«ñπ½Ñ ÇßßѼí½Ñαá, «íαáΘá-
  1621. ÑΓß∩ ¬ ñ¿ß¬π ¿ ¡áσ«ñ¿Γ π¬áºá¡¡δ⌐ ó¬½ετáѼδ⌐ Σá⌐½ ¿  ¡áτ¿¡áÑΓ  áß-
  1622. ßÑ¼í½¿α«óá¡¿Ñ  φΓ«ú«  Σá⌐½á,  ¬á¬  Ñß½¿ íδ óßÑ ßΓ᫬¿ ó¬½ετáѼ«ú«
  1623. Σá⌐½á í뫨 ºá»¿ßá¡δ »α∩¼« ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ. Åα¿ ñ«ßΓ¿ªÑ¡¿¿ ¬«¡µá
  1624. ó¬½ετáѼ«ú«  Σá⌐½á Æπαí« ÇßßѼí½Ñα ó«ºóαáΘáÑΓß∩ ¬ ßΓ᫬Ñ, ß½Ññπε-
  1625. ΘÑ⌐ ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ ºá ñ¿αÑ¬Γ¿ó«⌐ INCLUDE, ¿  ó«º«í¡«ó½∩ÑΓ  áß-
  1626. ßÑ¼í½¿α«óá¡¿Ñ  ß  φΓ«⌐ Γ«τ¬¿. Æá¬¿¼ «íαẫ¼, Γá¼, úñÑ óßΓαÑτáÑΓß∩
  1627. ñ¿αÑ¬Γ¿óá INCLUDE, ΓѬßΓ ó¬½ετáѼ«ú« Σá⌐½á ó¬½ετáÑΓß∩ ó áßßÑ¼í½¿-
  1628. α«óá¡¿Ñ ΓѬπΘÑú« ¿ßσ«ñ¡«ú« ¼«ñπ½∩ ÇßßѼí½Ñαá.
  1629.  
  1630.      ìá»α¿¼Ñα, Ñß½¿ Σá⌐½ MAINPROG.ASM ß«ñÑনΓ:
  1631.  
  1632.              .
  1633.              .
  1634.              .
  1635.              .CODE
  1636.              mov   ax,1
  1637.              INCLUDE   INCPROG.ASM
  1638.              push  ax
  1639.              .
  1640.              .
  1641.              .
  1642.  
  1643. á Σá⌐½ INCPROG.ASM ß«ñÑনΓ:
  1644.  
  1645.              mov   bx,5
  1646.              add   ax,bx
  1647.  
  1648. Γ« αѺπ½∞ΓáΓ áßßÑ¼í½¿α«óá¡¿∩ Σá⌐½á MAINPROG.ASM íπñÑΓ ó  Γ«τ¡«ßΓ¿
  1649. φ¬ó¿óá½Ñ¡ΓÑ¡ áßßÑ¼í½¿α«óá¡¿ε ¬«ñá:
  1650.  
  1651.              .
  1652.              .
  1653.              .
  1654.              .CODE
  1655.              mov   ax,1
  1656.              mov   bx,5
  1657.              add   ax,bx
  1658.              push  ax
  1659.              .
  1660.              .
  1661.              .
  1662.  
  1663.      ä«»π߬áÑΓß∩ ó½«ªÑ¡¡«ßΓ∞  ó¬½ετáѼδσ  Σá⌐½«ó  ¡á »α«¿ºó«½∞¡πε
  1664. ú½πí¿¡π,  ñαπú¿¼¿ ß½«óἿ, ó¬½ετáѼδÑ Σá⌐½δ ΓᬪѠ¼«úπΓ ß«ñÑαªáΓ∞
  1665. ñ¿αÑ¬Γ¿óδ INCLUDE (ó¬½ετáΓ∞ ñαπú¿Ñ Σá⌐½δ). é¬½ετÑ¡¡δÑ ßΓ᫬¿ ¼«ª-
  1666. ¡« ½Ñú¬« «í¡áαπª¿Γ∞ ó Σá⌐½Ñ ½¿ßΓ¿¡úá,  Γᬠ ¬á¬  Æπαí«  ÇßßѼí½Ñα
  1667. ß½Ñóá  «Γ  ¬áªñ«⌐  ó¬½ετÑ¡¡«⌐ ßΓ᫬¿ »«¼ÑΘáÑΓ ¡«¼Ñα,  π¬áºδóáεΘ¿⌐
  1668. ú½πí¿¡π ó½«ªÑ¡¡«ßΓ¿ Σá⌐½«ó ¼«ñπ½Ñ⌐ (ó¬½ετáѼδÑ Σá⌐½δ  ¼«úπΓ ¿¼ÑΓ∞
  1669. »α«¿ºó«½∞¡πε ó½«ªÑ¡¡«ßΓ∞).
  1670.  
  1671.      ÄΓ¬πñá Æπαí« ÇßßѼí½Ñα º¡áÑΓ, úñÑ ¿ß¬áΓ∞  ó¬½ετáѼδÑ  Σá⌐½δ?
  1672. àß½¿  ó  «»Ñαá¡ñÑ ñ¿αÑ¬Γ¿óδ INCLUDE, «»αÑñѽ∩εΘ¿¼ ¿¼∩ ó¬½ετáѼ«ú«
  1673. Σá⌐½á, π¬áªÑΓÑ ñ¿ß¬ ¿½¿ ¼áαΦαπΓ ñ«ßΓπ»á ¬ Σá⌐½π, Γ« Æπαí« ÇßßѼí-
  1674. ½Ñα íπñÑΓ ¿ß¬áΓ∞ Σá⌐½ Γ«½∞¬« ó π¬áºá¡¡«¼ óἿ ¼ÑßΓÑ.  àß½¿ ªÑ  óδ
  1675. ºáñáñ¿ΓÑ  ¿¼∩  Σá⌐½á íѺ π¬áºá¡¿∩ ¼áαΦαπΓá ¿ ñ¿ß¬á,  Γ« Æπαí« Çß-
  1676. ßѼí½Ñα ß¡áτá½á ¿ΘÑΓ Σá⌐½ ó ΓѬπΘѼ ¬áΓὫúÑ.  àß½¿ «¡  ¡Ñ  ¼«ªÑΓ
  1677. ¡á⌐Γ¿  ºáñá¡¡δ⌐ Σá⌐½ ó ΓѬπΘѼ ¬áΓὫúÑ,  Γ« »«¿ß¬ »α«ñ«½ªáÑΓß∩ ó
  1678. ¬áΓὫúáσ, ºáñá¡¡δσ ó »áαá¼ÑΓαÑ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ -I (Ñß½¿ «¡ π¬á-
  1679. ºδóáÑΓß∩). ìá»α¿¼Ñα, »α¿ ºáñá¡¿¿ ¬«¼á¡ñδ:
  1680.  
  1681.            TASM  -ic:\include testprog
  1682.  
  1683. ¿ ßΓ᫬¿:
  1684.  
  1685.            INCLUDE    MYMACROS.ASM
  1686.  
  1687. (ó Σá⌐½Ñ TESTPROG.ASM) Æπαí« ÇßßѼí½Ñα íπñÑΓ ß¡áτá½á ¿ß¬áΓ∞ ó ΓÑ-
  1688. ¬πΘѼ  ¬áΓὫúÑ Σá⌐½ MYMACROS.ASM, á ¡Ñ ¡á⌐ñ∩ Ñú«, óδ»«½¡¿Γ »«¿ß¬
  1689. ó ¬áΓὫúÑ C:\INCLUDE. àß½¿ Σá⌐½ MYMACROS.ASM ¡Ñ íπñÑΓ  ¡á⌐ñÑ¡  ¿
  1690. Γá¼, Γ« Æπαí« ÇßßѼí½Ñα óδóÑñÑΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ.
  1691.  
  1692.      èßΓáΓ¿, ó ß»Ñµ¿Σ¿¬áµ¿¿ ¼áαΦαπΓá ó  ñ¿αÑ¬Γ¿óÑ  INCLUDE  ¼«ª¡«
  1693. π¬áºδóáΓ∞  «íαáΓ¡πε  ¬«ßπε  τÑαΓπ (\). ¥Γ« «íÑß»Ñτ¿óáÑΓ ß«ó¼ÑßΓ¿-
  1694. ¼«ßΓ∞ ß MASM.
  1695.  
  1696.      é¬½ετáѼδÑ Σá⌐½δ »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ñ½∩  «íÑß»ÑτÑ¡¿∩  ñ«ß-
  1697. Γπ»¡«ßΓ¿  óáΦ¿σ í¿í½¿«ΓѬ ¿ ¼á¬α«¬«¼á¡ñ ó ßá¼δσ αẽ¿τ¡δσ ¼«ñπ½∩σ
  1698. ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá. é¬½ετáѼδÑ Σá⌐½δ ΓᬪѠ«¬áºδóáεΓß∩ «τÑ¡∞ »«-
  1699. ½Ñº¡δ¼¿ »α¿ ß«ó¼ÑßΓ¡«¼ ¿ß»«½∞º«óá¡¿¿ ó αẽ¿τ¡δσ ¼«ñπ½∩σ »α«úαá¼-
  1700. ¼δ ßΓ᫬«óδσ »α¿ßóá¿óá¡¿⌐, «íΩ∩ó½Ñ¡¿⌐ ú½«íá½∞¡δσ ¼ÑΓ«¬ ¿  ßÑú¼Ñ¡-
  1701. Γ«ó  ñá¡¡δσ. é« ó¬½ετáѼδσ Σá⌐½áσ ¿ßσ«ñ¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ¿ß»«½∞-
  1702. ºπÑΓß∩ αÑñ¬«, »«ß¬«½∞¬π «Γñѽ∞¡δÑ  ¼«ñπ½¿  ¿ßσ«ñ¡«ú«  ¬«ñá  ¼«ª¡«
  1703. »α«ßΓ«  ¬«¼»«¡«óáΓ∞ ó¼ÑßΓÑ, ¡« ó« ó¬½ετáѼδσ Σá⌐½áσ ó»«½¡Ñ ñ«»πß-
  1704. Γ¿¼« ¿ß»«½∞º«óáΓ∞ ßΓ᫬¿ ¿ßσ«ñ¡«ú« ¬«ñá (½εíδÑ ñ«»πßΓ¿¼δÑ  ßΓ᫬¿
  1705. ÇßßѼí½Ñαá).
  1706.  
  1707.  
  1708.  
  1709.                             öá⌐½δ ½¿ßΓ¿¡úá
  1710. -----------------------------------------------------------------
  1711.  
  1712.      Äíδτ¡« Æπαí« ÇßßѼí½Ñα ß«ºñáÑΓ ó αѺπ½∞ΓáΓÑ  áßßÑ¼í½¿α«óá¡¿∩
  1713. Γ«½∞¬« «íΩÑ¬Γ¡δ⌐  Σá⌐½  (Σá⌐½  ß αáßΦ¿αÑ¡¿Ñ¼ .OBJ),  ¿¼∩ ¬«Γ«α«ú«
  1714. ß«ó»áñáÑΓ ß ¿¼Ñ¡Ñ¼ ¿ßσ«ñ¡«ú« (.ASM) Σá⌐½á.
  1715.  
  1716.      àß½¿ óδ σ«Γ¿ΓÑ, ¼«ª¡« ΓᬪѠπ¬áºáΓ∞  Æπαí«  ÇßßѼí½Ñαπ,  τΓ«
  1717. ¡πª¡« ß«ºñáΓ∞ Σá⌐½ ½¿ßΓ¿¡úá (ß αáßΦ¿αÑ¡¿Ñ¼ .LST). ä½∩ φΓ«ú« ó ¬«-
  1718. ¼á¡ñ¡«⌐ ßΓα«¬Ñ »α«ßΓ« óó«ñ∩Γß∩ ñóÑ  ñ«»«½¡¿Γѽ∞¡δÑ  ºá»∩ΓδÑ  (¿½¿
  1719. ¿¼Ñ¡¿ Σá⌐½á). ìá»α¿¼Ñα, Ñß½¿ ¬«¼á¡ñá:
  1720.  
  1721.                TASM  hello
  1722.  
  1723. áßßÑ¼í½¿απÑΓ Σá⌐½ HELLO.ASM ¿ ß«ºñáÑΓ «íΩÑ¬Γ¡δ⌐  Σá⌐½  HELLO.OBJ,
  1724. Γ« ¬«¼á¡ñ¡á∩ ßΓ᫬á:
  1725.  
  1726.  
  1727.                TASM  hello,,
  1728.  
  1729. úÑ¡Ñα¿απÑΓ Σá⌐½ ½¿ßΓ¿¡úá HELLO.LST.  é¼ÑßΓ«  »«ß½Ññ¡Ñ⌐  ¬«¼á¡ñ¡«⌐
  1730. ßΓ᫬¿ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ß½ÑñπεΘ¿Ñ φ¬ó¿óá½Ñ¡Γ¡δÑ ¬«¼á¡ñδ:
  1731.  
  1732.                TASM  hello,hello,hello
  1733.  ¿
  1734.                TASM  /L hello
  1735.  
  1736.      ÉѺπ½∞ΓáΓ »α¿ φΓ«¼ íπñÑàëàªÑ.
  1737.  
  1738.      ê¼Ñ¡á «íΩÑ¬Γ¡«ú« Σá⌐½á ¿/¿½¿ Σá⌐½á ½¿ßΓ¿¡úá  ¡Ñ  «í∩ºáΓѽ∞¡«
  1739. ñ«½ª¡δ  ß«ó»áñáΓ∞ ß ¿¼Ñ¡Ñ¼ ¿ßσ«ñ¡«ú« Σá⌐½á, «ñ¡á¬« ñ«ó«½∞¡« αÑñ¬«
  1740. 󫺡¿¬áÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ∞ ºáñáóáΓ∞ ñ½∩ ¡¿σ αạδÑ ¿¼Ñ¡á.
  1741.  
  1742.      Äß¡«óπ ß«ñÑαªá¡¿∩ Σá⌐½á ½¿ßΓ¿¡úá ß«ßΓáó½∩ÑΓ  ß«ñÑαªá¡¿Ñ  ¿ß-
  1743. σ«ñ¡«ú«  Σá⌐½á,  ñ«»«½¡Ñ¡¡«ú« αẽ¿τ¡«⌐ ¿¡Σ«α¼áµ¿Ñ⌐ « αѺπ½∞ΓáΓáσ
  1744. áßßÑ¼í½¿α«óá¡¿∩.  ä½∩  ¬áªñ«⌐  ¿ßσ«ñ¡«⌐  ßΓ᫬¿  Æπαí«  ÇßßѼí½Ñα
  1745. ó¬½ετáÑΓ  ó  ½¿ßΓ¿¡ú  ß««ΓóÑΓßΓóπεΘπε ¿¡ßΓαπ¬µ¿ε ¼áΦ¿¡¡«ú« ¬«ñá ¿
  1746. ß¼ÑΘÑ¡¿Ñ ¬áªñ«⌐ ßΓ᫬¿ ¼áΦ¿¡¡«ú« ¬«ñá ó ΓѬπΘѼ  ßÑú¼Ñ¡ΓÑ.  èα«¼Ñ
  1747. Γ«ú«,  Æπαí«  ÇßßѼí½Ñα óδó«ñ¿Γ ó Σá⌐½Ñ ½¿ßΓ¿¡úá Γáí½¿µδ, úñÑ ß«-
  1748. ñÑনΓß∩ ¿¡Σ«α¼áµ¿∩ « ¼ÑΓ¬áσ ¿ ßÑú¼Ñ¡Γáσ, ¿ß»«½∞ºπѼδσ ó »α«úαá¼-
  1749. ¼Ñ,  ó¬½ετá∩  º¡áτÑ¡¿Ñ ¿ Γ¿» ¬áªñ«⌐ ¼ÑΓ¬¿ ¿ áΓα¿íπΓδ ¬áªñ«ú« ßÑú-
  1750. ¼Ñ¡Γá.
  1751.  
  1752.      Æπαí« ÇßßѼí½Ñα ¼«ªÑΓ ΓᬪѠ(»«  ºá»α«ßπ)  úÑ¡Ñα¿α«óáΓ∞  ñ½∩
  1753. óßÑσ ¼ÑΓ«¬ ¿ßσ«ñ¡«ú« Σá⌐½á Γáí½¿µπ »ÑαѬαÑßΓ¡δσ ßß佫¬, ó ¬«Γ«α«⌐
  1754. π¬áºδóáÑΓß∩, úñÑ íδ½á «»αÑñѽѡᠬáªñá∩ ¼ÑΓ¬á ¿ úñÑ ¡á  ¡ÑÑ  ÑßΓ∞
  1755. ßß佬á (ß¼. «»¿ßá¡¿Ñ »áαá¼ÑΓαá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /C ó â½áóÑ 3).
  1756.  
  1757.      Éáßß¼«Γα¿¼ ß¡áτá½á «ß¡«ó¡δÑ φ½Ñ¼Ñ¡Γδ ½¿ßΓ¿¡úá -  áßßÑ¼í½¿α«-
  1758. óá¡¡δ⌐ ¼áΦ¿¡¡δ⌐ ¬«ñ ¿ ß¼ÑΘÑ¡¿Ñ ¬áªñ«⌐ ¿¡ßΓαπ¬µ¿¿.
  1759.  
  1760.  
  1761.  
  1762.                          Åα¿¼Ñα Σá⌐½á ½¿ßΓ¿¡úá
  1763. -----------------------------------------------------------------
  1764.  
  1765.      Åα¿óÑñѼ ½¿ßΓ¿¡ú »α¿¼Ñαá »α«úαá¼¼δ HELLO.ASM.
  1766.  
  1767. Turbo Assembler Version 2.0    06-29-90  16:21:27          Page 1
  1768.  
  1769. Hello.ASM
  1770.  
  1771. 1                         DOSSEG
  1772. 2 0000                    .MODEL SMALL
  1773. 3 0000                    .STACK 100h
  1774. 4 0100                    .DATA
  1775. 5 0000  48 65 6C 6C 6F 2C 20 + Message DB 'Hello, word',13,10,12
  1776. 6       77 6F 72 6C 64 0D 0A +
  1777. 7       0C
  1778. 8       = 000F            HELLO_MESSAGE_LENGTH EQU $-Message
  1779. 9 000F                    .CODE
  1780. 10 0000 B8 0000s          mov  ax,@Data
  1781. 11 0003 8E D8             mov  ds,ax   ; πßΓá¡«ó¿Γ∞ DS ó º¡áτÑ¡¿Ñ
  1782. 12                                     ; ßÑú¼Ñ¡Γá ñá¡¡δσ
  1783. 13 0005 B4 40             mov  ah,40h  ; Σπ¡¬µ¿∩ DOS óδó«ñá ¡á
  1784. 14                                     ; πßΓα«⌐ßΓó«
  1785. 15 0007 BB 0001           mov  bx,1    ; ßΓá¡ñáαΓ¡δ⌐ π¬áºáΓѽ∞
  1786. 16                                     ; óδó«ñá
  1787. 17 000A B9 000F           mov  cx,HELLO_MESSAGE_LENGTH ; τ¿ß½«
  1788. 18                                     ; óδó«ñ¿¼δσ ß¿¼ó«½«ó
  1789. 19 000D BA 000F           mov  dx,OFFSET Message ; óδó«ñ¿¼á∩
  1790. 20                                     ; ßΓ᫬á
  1791. 21 001D CD 21             int  21h     ; óδóÑßΓ¿ "Hello"
  1792. 22 0012 B4 4C             mov  ah,4ch  ; Σπ¡¬µ¿∩ DOS ºáóÑαΦÑ¡¿∩
  1793. 23                                     ; »α«úαá¼¼δ
  1794. 24                        END
  1795.  
  1796. Turbo Assembler  Version 2.0    06-29-90  16:21:27         Page 2
  1797.  
  1798. Symbol Table
  1799.  
  1800. Symbol Name                     Type       Value
  1801.  
  1802. ??DATE                          Text       "06-29-88"
  1803. ??FILENAME                      Text       "HELLO   "
  1804. ??TIME                          Text       "16:21:26"
  1805. ??VERSION                       Number     004A
  1806. @CODE                           Text       _TEXT
  1807. @CODESIZE                       Text       0
  1808. @CPU                            Text       0101H
  1809. @CURSEG                         Text       _TEXT
  1810. @DATA                           Text       DGROUP
  1811. @DATASIZE                       Text       0
  1812. @FILENAME                       Text       HELLO
  1813. @WODRSIZE                       Text       2
  1814. MESSAGE                         Byte       DGROUP:0000
  1815. HELLO_MESSAGE_LENGTH            Number     000F
  1816.  
  1817. Groups  &  Segments      Bit  Size  Align  Combine  Class
  1818.  
  1819. DGROUP                   Group
  1820.   STASK                  16   0100  Para   Stack    STASK
  1821.   _DATA                  16   000F  Word   Public   DATA
  1822. _TEXT                    16   0016  Word   Public   CODE
  1823.  
  1824.      é óÑασ¡Ñ⌐ τáßΓ¿ ¬áªñ«⌐ ßΓαá¡¿µδ ½¿ßΓ¿¡úá  óδó«ñ¿Γß∩  ºáú«½«-
  1825. ó«¬, ß«ßΓ«∩Θ¿⌐ ¿º óÑαß¿¿ Æπαí« ÇßßѼí½Ñαá (ß »«¼«Θ∞ε ¬«Γ«α«ú« óδ-
  1826. »«½¡Ñ¡« áßßÑ¼í½¿α«óá¡¿Ñ Σá⌐½á), ñáΓδ ¿ óαѼѡ¿ áßßÑ¼í½¿α«óá¡¿∩  ¿
  1827. ¡«¼Ñαá ßΓαá¡¿µδ ½¿ßΓ¿¡úá.
  1828.  
  1829.      ï¿ßΓ¿¡ú ß«ßΓ«¿Γ ¿º ñóπσ τáßΓÑ⌐: αáßΦ¿αÑ¡¡«ú« ¿ßσ«ñ¡«ú«  ¬«ñá
  1830. ¿  Γáí½¿µδ  ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó (Symbol Table). æ¡áτá½á óδó«ñ¿Γß∩ ¿ß-
  1831. σ«ñ¡δ⌐ ¬«ñ ÇßßѼí½Ñαá, ß ºáú«½«ó¬«¼ ¿ ¿¼∩ Σá⌐½á, ó ¬«Γ«α«¼  ¡áσ«-
  1832. ñ¿Γß∩ ¿ßσ«ñ¡δ⌐ ¬«ñ. êßσ«ñ¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ß«»α«ó«ªñáÑΓß∩ ¿¡Σ«α-
  1833. ¼áµ¿Ñ⌐ « ¼áΦ¿¡¡«¼ ¬«ñÑ ¿¡ßΓαπ¬µ¿⌐, ¿º ¬«Γ«αδσ Æπαí« ÇßßѼí½Ñα óδ-
  1834. »«½¡¿½  Γαá¡ß½∩µ¿ε. éßÑ «Φ¿í¬¿ ¿ »αÑñπ»αѪñÑ¡¿∩, «í¡áαπªÑ¡¡δÑ »α¿
  1835. áßßÑ¼í½¿α«óá¡¿¿, ó¬½ετáεΓß∩  ó  ½¿ßΓ¿¡ú  ¡Ñ»«ßαÑñßΓóÑ¡¡«  ºá  Γ«⌐
  1836. ßΓ᫬«⌐, úñÑ «¡¿ óßΓαÑΓ¿½¿ß∞.
  1837.  
  1838.      æΓ᫬¿ ¬«ñá ó ½¿ßΓ¿¡úÑ ¿¼ÑεΓ ß½ÑñπεΘ¿⌐ Σ«α¼áΓ:
  1839.  
  1840. <ú½πí¿¡á> <¡«¼Ñα_ßΓ᫬¿> <ß¼ÑΘÑ¡¿Ñ> <¼áΦ¿¡¡δ⌐_¬«ñ> <¿ßσ«ñ¡δ⌐_¬«ñ>
  1841.  
  1842.      "â½πí¿¡á" π¬áºδóáÑΓ πα«óÑ¡∞ ó½«ªÑ¡¡«ßΓ¿ ó¬½ετáѼδσ Σá⌐½«ó  ¿
  1843. ¼á¬α«¬«¼á¡ñ ó óáΦѼ Σá⌐½Ñ ½¿ßΓ¿¡úá.
  1844.  
  1845.      "쫼Ñα_ßΓ᫬¿" »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¡«¼Ñα ßΓ᫬¿ Σá⌐½á ½¿ßΓ¿¡-
  1846. úá  (¿ß¬½ετá∩  ßΓ᫬¿ ºáú«½«ó¬á ¿ Γ¿Γπ½∞¡δÑ ßΓ᫬¿). ì«¼Ñαá ßΓ᫬
  1847. «ß«íÑ¡¡« »«½Ñº¡δ »α¿ ¿ß»«½∞º«óá¡¿¿ ßαÑñßΓóá Æπαí« ÇßßѼí½Ñαá  úÑ-
  1848. ¡Ñαᵿ¿  »ÑαѬαÑßΓ¡δσ  ßß佫¬,  úñÑ  ó ßß佬áσ π¬áºδóáεΓß∩ ¡«¼Ñαá
  1849. ßΓ᫬. é Σá⌐½Ñ HELLO.LST ñ¿αÑ¬Γ¿óá DOSSEG ß«ñÑনΓß∩ ¡á ßΓα«¬Ñ  1
  1850. Σá⌐½á ½¿ßΓ¿¡úá, ñ¿αÑ¬Γ¿óá .MODEL - ¡á ßΓα«¬Ñ 2 ¿ Γ.ñ.
  1851.  
  1852.      ôτΓ¿ΓÑ, τΓ« ¡«¼Ñαá ßΓ᫬¿ ó »«½Ñ "¡«¼Ñα_ßΓ᫬¿" - φΓ« ¡Ñ ¡«-
  1853. ¼Ñαá ßΓ᫬ ¿ßσ«ñ¡«ú« ¼«ñπ½∩. ìá»α¿¼Ñα, »α¿ αáßΦ¿αÑ¡¿¿ ¼á¬α«¬«¼á¡-
  1854. ñδ ¿½¿ ó¬½ετÑ¡¿¿ Σá⌐½á «ΓßτÑΓ ßΓ᫬  »α«ñ«½ªáÑΓß∩,  σ«Γ∩  ΓѬπΘá∩
  1855. ßΓα«¬á  ó  ¿ßσ«ñ¡«¼  Σá⌐½Ñ «ßΓáÑΓß∩ Γ«⌐ ªÑ. ùΓ«íδ »ÑαÑóÑßΓ¿ ¡«¼Ñα
  1856. ßΓ᫬¿ (ßúÑ¡Ñα¿α«óá¡¡δ⌐, ¡á»α¿¼Ñα, »α¿ ß«ºñá¡¿¿ »ÑαѬαÑßΓ¡δσ ßßδ-
  1857. ½«¬),  óδ ñ«½ª¡δ ¡á⌐Γ¿ ß««ΓóÑΓßΓóπεΘπε ßΓ᫬π ó ½¿ßΓ¿¡úÑ, á ºáΓѼ
  1858. (»« ¡«¼Ñαπ ¿½¿ ¡á ú½áº) ¡á⌐Γ¿ ÑÑ ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ.
  1859.  
  1860.      "æ¼ÑΘÑ¡¿Ñ" - φΓ« ß¼ÑΘÑ¡¿Ñ ó ΓѬπΘѼ ßÑú¼Ñ¡ΓÑ («Γ ¡áτá½á) ¼á-
  1861. Φ¿¡¡«ú«  ¬«ñá,  úÑ¡Ñα¿απѼ«ú«  ß««ΓóÑΓßΓóπεΘÑ⌐  ßΓ᫬«⌐ ¿ßσ«ñ¡«ú«
  1862. ¬«ñá. ìá»α¿¼Ñα, Message ¡áτ¿¡áÑΓß∩ ß« ß¼ÑΘÑ¡¿∩ 0 ó ßÑú¼Ñ¡ΓÑ  ñá¡-
  1863. ¡δσ.
  1864.  
  1865.      "îáΦ¿¡¡δ⌐_¬«ñ" »αÑñßΓáó½∩ÑΓ ß«í«⌐ ñÑ⌐ßΓó¿Γѽ∞¡πε  »«ß½Ññ«óá-
  1866. Γѽ∞¡«ßΓ∞ ΦÑßΓ¡áñµáΓ¿α¿τ¡«ú«  º¡áτÑ¡¿∩  íá⌐Γ ¿ ß½«ó,  ¬«Γ«αδÑ áß-
  1867. ßÑ¼í½¿απεΓß∩ ¿º ß««ΓóÑΓßΓóπεΘÑ⌐ ¿ßσ«ñ¡«⌐ ßΓ᫬¿ ÇßßѼí½Ñαá.  ìá»-
  1868. α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩ MOV AX,@Data ¡áτ¿¡áÑΓß∩ »« ß¼ÑΘÑ¡¿ε 0 ó ßÑú¼Ñ¡-
  1869. ΓÑ ¬«ñá.  ê¡Σ«α¼áµ¿∩ ß»αáóá «Γ ñá¡¡«⌐ ¿¡ßΓαπ¬µ¿¿ -  φΓ«  ¼áΦ¿¡¡δ⌐
  1870. ¬«ñ,  ó ¬«Γ«αδ⌐ áßßÑ¼í½¿απÑΓß∩ ¿¡ßΓαπ¬µ¿∩, Γ« ÑßΓ∞ ¿¡ßΓαπ¬µ¿∩ MOV
  1871. AX,@Data áßßÑ¼í½¿απÑΓß∩ ó B8 0000s (ó ΦÑßΓ¡áñµáΓ¿α¿τ¡«¼ »αÑñßΓáó-
  1872. ½Ñ¡¿¿).  0B8h  - φΓ« ¿¡ßΓαπ¬µ¿∩ ¡á ¼áΦ¿¡¡«¼ ∩ºδ¬Ñ,  ºáúαπªáεΘá∩ ó
  1873. αÑú¿ßΓα AX º¡áτÑ¡¿Ñ-¬«¡ßΓá¡Γπ,  á 0000s - φΓ« »«ßΓ«∩¡¡«Ñ º¡áτÑ¡¿Ñ
  1874. @Data,  ¬«Γ«α«Ñ ºáúαπªáÑΓß∩ ó AX. éß∩ ¿¡ßΓαπ¬µ¿∩ MOV AX,@Data áß-
  1875. ßÑ¼í½¿απÑΓß∩ ó Γα¿ íá⌐Γá ¼áΦ¿¡¡«ú« ¬«ñá.
  1876.  
  1877.      çá¼ÑΓ¿¼, τΓ« ó Σá⌐½Ñ ½¿ßΓ¿¡úá π¬áºá¡«, τΓ« ß½ÑñπεΘá∩ ºá  MOV
  1878. AX,@Data ¿¡ßΓαπ¬µ¿∩ (¬«Γ«α«⌐ ∩ó½∩ÑΓß∩ ¿¡ßΓαπ¬µ¿∩ MOV DS,AX) ¡áτ¿-
  1879. ¡áÑΓß∩ ß« ß¼ÑΘÑ¡¿∩ 3 ó ßÑú¼Ñ¡ΓÑ ¬«ñá. ê φΓ« ¿¼ÑÑΓ ß«óÑαΦÑ¡¡« τÑΓ-
  1880. ¬¿⌐ ß¼δß½, »«ß¬«½∞¬π ¿¡ßΓαπ¬µ¿∩ MOV AX,@Data ¡áτ¿¡áÑΓß∩ ß« ß¼ÑΘÑ-
  1881. ¡¿∩  0  ¿  ¿¼ÑÑΓ  ñ½¿¡π  3  íá⌐Γá.  îáΦ¿¡¡δÑ ¬«ñ,  »«½πτáεΘ¿⌐ß∩ ó
  1882. αѺπ½∞ΓáΓÑ áßßÑ¼í½¿α«óá¡¿∩ ¿¡ßΓαπ¬µ¿¿ (8 D8) ¿¼ÑÑΓ ñ½¿¡π 2 íá⌐Γá,
  1883. »«φΓ«¼π  ß½ÑñπεΘá∩ ¿¡ßΓαπ¬µ¿∩ ¡áτ¿¡áÑΓß∩ ß« ß¼ÑΘÑ¡¿∩ 5.  éºú½∩¡πó
  1884. ¡á Σá⌐½ ½¿ßΓ¿¡úá, ¼δ ¼«ªÑ¼ πíÑñ¿Γ∞ß∩, τΓ« φΓ« ¿¼Ñ¡¡« Γá¬.
  1885.  
  1886.      èᬠóδ ¼«ªÑΓÑ ºá¼ÑΓ¿Γ∞, ó Σá⌐½Ñ ½¿ßΓ¿¡úᠺᠻ«¬áºá¡δ  Γ«½∞¬«
  1887. »ÑαóδÑ 7 íá⌐Γ ¼áΦ¿¡¡«ú« ¬«ñá (ºá ¬«Γ«α묨 ß½ÑñπÑΓ ß¿¼ó«½ +),  úÑ-
  1888. ¡Ñα¿απѼδÑ ßΓ᫬«⌐:
  1889.  
  1890. Message      DB    'Hello, word',13,10,'$'
  1891.  
  1892.      Å«½∩ ¼áΦ¿¡¡«ú« ¬«ñá, ¬«Γ«αδÑ ¿¼ÑεΓ  ß½¿Φ¬«¼  í«½∞Φπε  ñ½¿¡π,
  1893. τΓ«íδ π¼ÑßΓ¿Γ∞ß∩ ó »«½Ñ "¼áΦ¿¡¡δ⌐_¬«ñ", «íδτ¡« πßѬáεΓß∩ ¿ ºáóÑα-
  1894. ΦáεΓß∩ ß¿¼ó«½«¼ +, τΓ« ú«ó«α¿Γ « Γ«¼, áßßÑ¼í½¿α«óá¡δ ñ«»«½¡¿Γѽ∞-
  1895. ¡δÑ  íá⌐Γδ,  ¡«  «¡¿  ¡Ñ π¬áºá¡δ. àß½¿ óá¼ ¡Ñ«íσ«ñ¿¼« πó¿ñÑΓ∞ óßÑ
  1896. íá⌐Γδ ¼áΦ¿¡¡«ú« ¬«ñá, ¼«ª¡« ¿ß»«½∞º«óáΓ∞  ñ¿αÑ¬Γ¿óπ  %NOTHING  («
  1897. ¡Ñ⌐  ¼δ αáß߬áªÑ¼ ñá½∞ΦÑ). Åα¿ π¬áºá¡¿¿ ñá¡¡«⌐ ñ¿αÑ¬Γ¿óδ ¡Ñ ó¼Ñß-
  1898. Γ¿óΦ¿⌐ß∩ ¬«ñ íπñÑΓ »ÑαÑ¡«ß¿Γ∞ß∩ ¡á ß½ÑñπεΘ¿Ñ ßΓ᫬¿.
  1899.  
  1900.      ìᬫ¡Ñµ,»«½Ñ "¿ßσ«ñ¡δ⌐_¬«ñ" - φΓ« »α«ßΓ« ¿ßσ«ñ¡á∩ ßΓ᫬á Çß-
  1901. ßѼí½Ñαá (ó¼ÑßΓÑ ß ¬«¼¼Ñ¡Γáα¿∩¼¿). ìѬ«Γ«αδÑ ßΓ᫬¿ ¡á  ÇßßѼí½Ñ-
  1902. αÑ (¡á»α¿¼Ñα, ßΓ᫬¿, ß«ñÑαªáΘ¿Ñ Γ«½∞¬« ¬«¼¼Ñ¡Γáα¿¿) ¡Ñ úÑ¡Ñα¿απ-
  1903. εΓ  ¡¿¬á¬«ú« ¼áΦ¿¡¡«ú« ¬«ñá, ¿ »«½∩ "ß¼ÑΘÑ¡¿Ñ" ¿ "¼áΦ¿¡¡δ⌐_¬«ñ" ó
  1904. Γᬿσ ßΓ᫬áσ «ΓßπΓßΓóπεΓ. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ ¡«¼Ñα ßΓ᫬¿ ¿¼  »α¿ßóá¿-
  1905. óáÑΓß∩.
  1906.  
  1907.      ç¡áτÑ¡¿Ñ 0000s, ß««ΓóÑΓßΓóπεΘÑÑ @Data, φΓ« Γ«½∞¬«  "ºá¼ÑßΓ¿-
  1908. ΓÑΓ∞" ñ½∩ ñÑ⌐ßΓó¿Γѽ∞¡«ú« º¡áτÑ¡¿∩ ¿¡ßΓαπ¬µ¿¿:
  1909.  
  1910.               mov   ax,@Data
  1911.  
  1912.      ¥Γ« »α«¿ßσ«ñ¿Γ »«Γ«¼π, τΓ« º¡áτÑ¡¿∩ ßÑú¼Ñ¡Γ«ó  »α¿ßóá¿óáεΓß∩
  1913. ¬«¼»«¡«óΘ¿¬«¼, á ¡Ñ Æπαí« ÇßßѼí½Ñα«¼, »«φΓ«¼π Æπαí« ÇßßѼí½Ñα ¡Ñ
  1914. ¼«ªÑΓ ºá¡ÑßΓ¿ ßεñá ¬«ααÑ¬Γ¡«Ñ º¡áτÑ¡¿Ñ. éßÑ,  τΓ«  ¼«ªÑΓ  ßñѽáΓ∞
  1915. Æπαí«  ÇßßѼí½Ñα - φΓ« ñáΓ∞ óá¼ »«¡∩Γ∞, τΓ« ñá¡¡«Ñ º¡áτÑ¡¿Ñ ∩ó½∩-
  1916. ÑΓß∩ º¡áτÑ¡¿Ñ¼ ßÑú¼Ñ¡Γá, ¬«Γ«α«Ñ íπñÑΓ  óδτ¿ß½Ñ¡«  ¬«¼»«¡«óΘ¿¬«¼.
  1917. Äí  φΓ«¼ ú«ó«α¿Γ íπ¬óδ s ó ¬«¡µÑ úÑ¡Ñα¿απѼ«ú« ñá¡¡«⌐ ¿¡ßΓαπ¬µ¿Ñ⌐
  1918. ¼áΦ¿¡¡«ú« ¬«ñá.
  1919.  
  1920.      Ç¡á½«ú¿τ¡«, ß¼ÑΘÑ¡¿Ñ ó ¼áΦ¿¡¡«¼ ¬«ñÑ, »«½πτÑ¡¡«¼ ¿º ¿¡ßΓαπ¬-
  1921. 樨:
  1922.  
  1923.              mov   dx,OFFSET Message
  1924.  
  1925. ºáóÑαΦáÑΓß∩ íπ¬ó«⌐ r, ¬«Γ«αá∩ π¬áºδóáÑΓ, τΓ« ß¼ÑΘÑ¡¿Ñ ¼«ªÑΓ  íδΓ∞
  1926. »ÑαѼÑΘáÑ¼δ¼ ó¡πΓα¿ ßÑú¼Ñ¡Γá »α¿ ¬«¼í¿¡¿α«óá¡¿¿ Ñú« ¬«¼»«¡«óΘ¿¬«¼
  1927. ß ñαπú¿¼¿ ßÑú¼Ñ¡ΓἿ.
  1928.  
  1929.      Åα¿óÑñѼ »«½¡δ⌐ ß»¿ß«¬ «í«º¡áτÑ¡¿⌐, ¿ß»«½∞ºπѼδσ  Æπαí«  Çß-
  1930. ßѼí½Ñα«¼  ñ½∩ π¬áºá¡¿∩ σáαá¬ΓÑα¿ßΓ¿¬ áßßÑ¼í½¿α«óá¡¿∩ (Γᬿσ, ¬á¬
  1931. »ÑαѼÑßΓ¿¼«ßΓ∞):
  1932.  
  1933. -----------------------------------------------------------------
  1934. Äí«º¡áτÑ¡¿Ñ              ç¡áτÑ¡¿Ñ
  1935. -----------------------------------------------------------------
  1936.    r           ô¬áºδóáÑΓ Γ¿» ¬«ααѬµ¿¿ ß¼ÑΘÑ¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó
  1937.                ó ¼«ñπ½Ñ.
  1938.  
  1939.    s           ô¬áºδóáÑΓ Γ¿» ¬«ααѬµ¿¿ ßÑú¼Ñ¡Γ«ó ñ½∩ ¿ñÑ¡Γ¿Σ¿¬á-
  1940.                Γ«α«ó  ó ¼«ñπ½Ñ.
  1941.  
  1942.    sr          ô¬áºδóáÑΓ Γ¿» ¬«ααѬµ¿¿ ß¼ÑΘÑ¡¿⌐ ¿ ßÑú¼Ñ¡Γ«ó ñ½∩
  1943.                ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ó ¼«ñπ½Ñ.
  1944.  
  1945.    e           Å«¬áºδóáÑΓ ¬«ααѬµ¿ε ß¼ÑΘÑ¡¿∩ ñ½∩ ó¡ÑΦ¡¿σ ¿ñÑ¡Γ¿-
  1946.                Σ¿¬áΓ«α«ó.
  1947.  
  1948.    se          Å«¬áºδóáÑΓ ¬«ααѬµ¿ε π¬áºáΓѽ∩ ñ½∩ ó¡ÑΦ¡¿σ ¿ñÑ¡-
  1949.                Γ¿Σ¿¬áΓ«α«ó.
  1950.  
  1951.    so          Å«¬áºδóáÑΓ ¬«ααѬµ¿ε Γ«½∞¬« ßÑú¼Ñ¡Γá.
  1952.  
  1953.    +           Å«¬áºδóáÑΓ, τΓ« «íΩÑ¬Γ¡δ⌐ ¬«ñ πßÑτÑ¡.
  1954. -----------------------------------------------------------------
  1955.  
  1956.      é ½¿ßΓ¿¡úÑ «íΩÑ¬Γ¡«ú« ¬«ñá «í«º¡áτÑ¡¿∩ r, s ¿ sr ¿ß»«½∞ºπεΓ-
  1957. ß∩  ñ½∩ «í«º¡áτÑ¡¿∩ Γ¿»á ¬«ααѬµ¿¿ ß¼ÑΘÑ¡¿∩, ßÑú¼Ñ¡Γá ¿ π¬áºáΓѽ∩
  1958. (ßÑú¼Ñ¡Γá ¿ ß¼ÑΘÑ¡¿∩) ñ½∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ¼«ñπ½∩.  Äí«º¡áτÑ¡¿Ñ  e
  1959. »«¬áºδóáÑΓ  ¬«ααѬµ¿ε  ß¼ÑΘÑ¡¿∩ ñ½∩ ó¡ÑΦ¡¿σ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, á ¡e
  1960. π¬áºδóáÑΓ ¬«ααѬµ¿ε π¬áºáΓѽ∩ ó¡ÑΦ¡Ñú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá.  è«ααѬµ¿∩
  1961. ßÑú¼Ñ¡Γ«ó  ñ½∩ ó¡ÑΦ¡¿σ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó («í«º¡áτáѼá∩, ¬á¬ s) á¡á-
  1962. ½«ú¿τ¡á ½«¬á½∞¡δ¼ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá¼. ÄíΩÑ¬Γ¡δ⌐ ¬«ñ ¼«ªÑΓ ΓᬪѠ ß«-
  1963. ñÑαªáΓ∞  ó  »«ß½Ññ¡Ñ¼  ßΓ«½íµÑ ß¿¼ó«½ +, π¬áºδóáεΘ¿⌐, τΓ« ¿¼ÑÑΓß∩
  1964. ñ«»«½¡¿Γѽ∞¡δ⌐ «íΩÑ¬Γ¡δ⌐ ¬«ñ, ¬«Γ«αδ⌐ ¡πª¡« óδóÑßΓ¿, ¡«  «¡  πßÑ-
  1965. 祭.
  1966.  
  1967.      æá¼«Ñ ½Ñó«Ñ »«½Ñ ½¿ßΓ¿¡úá »αÑñßΓáó½∩ÑΓ ß«í«⌐ ßτÑΓτ¿¬ πα«ó¡∩.
  1968. Åα¿  áßßÑ¼í½¿α«óá¡¿¿ ¿º «ß¡«ó¡«ú« Σá⌐½á φΓ« »«½Ñ «ßΓáÑΓß∩ »πßΓδ¼.
  1969. Åα¿ áßßÑ¼í½¿α«óá¡¿¿ ¿º ó¬½ετáѼδσ Σá⌐½«ó φΓ« »«½Ñ »α¿¡¿¼áÑΓ  º¡á-
  1970. τÑ¡¿Ñ 1 ¿½¿ 2, 3 ¿ Γ.ñ., ó ºáó¿ß¿¼«ßΓ¿ «Γ πα«ó¡∩ ó½«ªÑ¡¡«ßΓ¿ ¬áª-
  1971. ñ«ú« ó¬½ετáѼ«ú« Σá⌐½á. Æ«ªÑ ßἫѠ»α«¿ßσ«ñ¿Γ »α¿ αáßΦ¿αÑ¡¿¿ ¼á¬-
  1972. ᫬«¼á¡ñ.
  1973.  
  1974.      èᬠóδ ¼«ªÑΓÑ ºá¼ÑΓ¿Γ∞, ó Σá⌐½Ñ ½¿ßΓ¿¡úᠡѬ«Γ«αδÑ ºá»¿ß¿  ó
  1975. ¼áΦ¿¡¡«¼  ¬«ñÑ  »«¬áºá¡δ, ¬á¬ íá⌐Γ«óδÑ º¡áτÑ¡¿∩ (ñóÑ ΦÑßΓ¡áñµáΓ¿-
  1976. α¿τ¡δÑ µ¿Σαδ), á ñαπú¿Ñ - ¬á¬ º¡áτÑ¡¿∩, αẼÑα«ó ó ß½«ó«. é  φΓ«¼
  1977. ÑßΓ∞  «»αÑñѽѡ¡á∩  ½«ú¿¬á: ¬«úñá Æπαí« ÇßßѼí½Ñα Γαá¡ß½¿απÑΓ ¼á-
  1978. Φ¿¡¡δ⌐ ¬«ñ, »αÑñßΓáó½∩εΘ¿⌐ ß«í«⌐ º¡áτÑ¡¿Ñ αẼÑα«¼ ó ß½«ó«  (¡á»-
  1979. α¿¼Ñα, OFFSET Message, »αÑñßΓáó½∩εΘÑÑ ß«í«⌐ 16-í¿Γ«ó«Ñ ß¼ÑΘÑ¡¿Ñ),
  1980. Γ« φΓ« ß¼ÑΘÑ¡¿Ñ »«¬áºδóáÑΓß∩, ¬á¬ º¡áτÑ¡¿Ñ αẼÑα«¼ ó ß½«ó«.  ¥Γ«
  1981. íδóáÑΓ «τÑ¡∞ »«½Ñº¡«, »«ß¬«½∞¬π ó »α«Γ¿ó¡«¼ ß½πτáÑ ¿ß»«½∞ºπεΘ¿⌐ß∩
  1982. ó »α«µÑßß«αÑ 8086 ñ½∩ σαá¡Ñ¡¿∩ ß½«ó ¼Ñσá¡¿º¼ "¼½áñΦ¿⌐  íá⌐Γ  »Ñα-
  1983. óδ¼" »α¿ó«ñ¿½ íδ ¬ Γ«¼π, τΓ« »«α∩ñ«¬ íá⌐Γ ó ß½«óáσ íδ½ íδ ¿º¼Ñ¡Ñ¡
  1984. ¡á «íαáΓ¡δ⌐.
  1985.  
  1986.      ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩:
  1987.  
  1988.               mov   ax,1234h
  1989.  
  1990. áßßÑ¼í½¿απÑΓß∩ ó 3 íá⌐Γá ¼áΦ¿¡¡«ú« ¬«ñá: 0B8h, 034Hh  ¿  012h  (á
  1991. Γᬫ¼  »«α∩ñ¬Ñ).  àß½¿  Æπαí«  ÇßßѼí½Ñα óδóÑñÑΓ φΓπ ¿¡ßΓαπ¬µ¿ε ó
  1992. ó¿ñÑ ΓαÑσ íá⌐Γ, Γ« «¡á íπñÑΓ »«¬áºá¡á, ¬á¬:
  1993.  
  1994.    B8 34 12
  1995.  
  1996.      Åα¿ φΓ«¼ íá⌐Γδ º¡áτÑ¡¿∩ αẼÑα«¼ ó ß½«ó« íπñÑΓ »ÑαÑßΓáó½Ñ¡δ.
  1997. Æπαí« ÇßßѼí½Ñα óδó«ñ¿Γ Γᬫ⌐ ¼áΦ¿¡¡δ⌐ ¬«ñ, ¬á¬:
  1998.  
  1999.    B8 1234
  2000.  
  2001. τΓ« «»αÑñѽѡ¡« ½ÑúτÑ τ¿ΓáÑΓß∩.
  2002.  
  2003.      è«úñá ¼δ αáß߬áºδó὿ « »«½Ñ "ß¼ÑΘÑ¡¿Ñ", ¼δ πªÑ  ú«ó«α¿½¿  «
  2004. ß¼ÑΘÑ¡¿¿ ó ΓѬπΘѼ ßÑú¼Ñ¡ΓÑ ¼ÑΓ«¬ ¿ ßΓ᫬ »α«úαá¼¼δ. ÄΓ¬πñᠪѠ¼δ
  2005. ¼«ªÑ¼ πº¡áΓ∞, ó ¬á¬«¼ ¿¼Ñ¡¡« ßÑú¼Ñ¡ΓÑ ¡áσ«ñ¿Γß∩ ¼ÑΓ¬á? ä½∩  φΓ«ú«
  2006. ß½πªáΓ Γáí½¿µδ ½¿ßΓ¿¡ú«ó, « ¬«Γ«αδσ ¼δ ñá½ÑÑ αáß߬áªÑ¼.
  2007.  
  2008.  
  2009.  
  2010.  
  2011. Æáí½¿µδ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ½¿ßΓ¿¡úá
  2012. -----------------------------------------------------------------
  2013.  
  2014.      éΓ«αá∩ τáßΓ∞ Σá⌐½á ½¿ßΓ¿¡úá ¡áτ¿¡áÑΓß∩ ß  ºáú«½«ó¬á  "Symbol
  2015. Table"  (Γáí½¿µá ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó). ¥Γá τáßΓ∞ ß«ßΓ«¿Γ ¿º ñóπσ Γáí-
  2016. ½¿µ, ó «ñ¡«⌐ ¿º ¬«Γ«αδσ «»¿ßδóáεΓß∩ ¿ß»«½∞ºπѼδÑ ó ¿ßσ«ñ¡«¼  ¬«ñÑ
  2017. ¼ÑΓ¬¿, á ó ñαπú«⌐ »ÑαÑτ¿ß½∩εΓß∩ ¿ß»«½∞ºπѼδÑ ßÑú¼Ñ¡Γδ.
  2018.  
  2019.      èßΓáΓ¿, Ñß½¿ óδ ¡Ñ σ«Γ¿ΓÑ, τΓ«íδ ó  ½¿ßΓ¿¡úÑ  úÑ¡Ñα¿α«óá½áß∞
  2020. Γáí½¿µá  ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, óδ ¼«ªÑΓÑ π¬áºáΓ∞ Æπαí« ÇßßѼí½Ñαπ, τΓ«
  2021. ¡πª¡« úÑ¡Ñα¿α«óáΓ∞ Γ«½∞¬« αáßΦ¿αÑ¡¡δ⌐  ½¿ßΓ¿¡ú  ¬«ñá  (φΓ«  ¼«ª¡«
  2022. ßñѽáΓ∞ ß »«¼«Θ∞ε »áαá¼ÑΓαá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /N).
  2023.  
  2024.  
  2025.  
  2026.                              Æáí½¿µá ¼ÑΓ«¬
  2027. -----------------------------------------------------------------
  2028.  
  2029.      é »Ñαó«⌐ Γáí½¿µÑ, ¬«Γ«απε ¼δ ¡áºδóáѼ Γáí½¿µÑ⌐ ¼ÑΓ«¬, »α¿óÑ-
  2030. ñÑ¡  ß»¿ß«¬  óßÑσ  ¼ÑΓ«¬ ¿ßσ«ñ¡«ú« ¬«ñá (ó á½Σáó¿Γ¡«¼ »«α∩ñ¬Ñ), á
  2031. ΓᬪѠΓᬪѠ¿σ Γ¿»δ ¿ º¡áτÑ¡¿∩. ìá»α¿¼Ñα, Σá⌐½ ½¿ßΓ¿¡úá HELLO.LST
  2032. ß«ñÑαª¿Γ ß½ÑñπεΘπε ºá»¿ß∞:
  2033.  
  2034.  MESSAGE        BYTE        DGROUP:0000
  2035.  
  2036.      çñÑß∞  MESSAGE - φΓ« ¿¼∩ ¼ÑΓ¬¿ ¿½¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«α. Ä¡« π¬áºδ-
  2037. óáÑΓß∩ »α«»¿ß¡δ¼¿ íπ¬óἿ, Γᬠ¬á¬ Ñß½¿ óδ ¡Ñ π¬áºδóáÑΓÑ »áαá¼ÑΓ-
  2038. αδ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /MX ¿½¿ /ML, Æπαí« ÇßßѼí½Ñα »αÑ«íαáºπÑΓ  óßÑ
  2039. ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ  ó  óÑασ¡¿⌐  αÑú¿ßΓα. BYTE π¬áºδóáÑΓ αẼÑα ñá¡¡δσ
  2040. ñ½∩ Γ«ú«  φ½Ñ¼Ñ¡Γá  ñá¡¡δσ,  ¡á  ¬«Γ«αδ⌐  ßßδ½áÑΓß∩  ¿¼∩  Message
  2041. (íá⌐Γ). DGROUP:0000 - φΓ« º¡áτÑ¡¿Ñ ¼ÑΓ¬¿ Message, «º¡áτáεΘÑÑ, τΓ«
  2042. φΓá ¼ÑΓ¬á ¡áτ¿¡áÑΓß∩ ß« ß¼ÑΘÑ¡¿∩  0  ó  ßÑú¼Ñ¡ΓÑ  ñá¡¡δσ  DGROUP.
  2043. (Å«¼¡¿ΓÑ, «ñ¡á¬«, τΓ« ßßδ½¬á ¡á Message ó »«ß½Ññ¡Ñ¼ αáºñѽѠ»«¼Ñ-
  2044. τÑ¡á ß¿¼ó«½«¼ r. ¥Γ« «º¡áτáÑΓ, τΓ« ¼ÑΓ¬á  ¼«ªÑΓ  íδΓ∞  »ÑαѼÑΘÑ¡á
  2045. ¬«¼»«¡«óΘ¿¬«¼  »« ñαπú«¼π ß¼ÑΘÑ¡¿ε, ¬«úñá ó »α«úαἼѠóδ»«½¡∩ÑΓß∩
  2046. ¬«¼»«¡«ó¬á ñαπú¿σ ßÑú¼Ñ¡Γ«ó  DGROUP.  ê¡Σ«α¼áµ¿∩  «  »ÑαѼÑΘÑ¡¿∩σ
  2047. ßÑú¼Ñ¡Γ«ó  ß«ñÑনΓß∩ ó Σá⌐½Ñ ¬áαΓδ »á¼∩Γ¿, ß«ºñáóáѼ«¼ ¬«¼»«¡«ó-
  2048. Θ¿¬«¼.)
  2049.  
  2050.      Ç¡á½«ú¿τ¡«, ProgramStart »«¬áºá¡á, ¬á¬ ¼ÑΓ¬á  í½¿ª¡Ñú«  Γ¿»á
  2051. ß«  º¡áτÑ¡¿Ñ¼ _TEXT:0000.  _TEXT »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¿¼∩ ßÑú¼Ñ¡Γá,
  2052. «»αÑñѽѡ¡«ú« ß »«¼«Θ∞ε  ñ¿αÑ¬Γ¿óδ  .CODE,  »«φΓ«¼π  ProgramStart
  2053. αáß»«½«ªÑ¡á  »«  »Ñαó«¼π  áñαÑßπ  ó ßÑú¼Ñ¡ΓÑ ¬«ñá. îδ «ΓóÑΓ¿½¿ ¡á
  2054. 󫺡¿¬áóΦ¿⌐ αá¡ÑÑ ó«»α«ß « Γ«¼, ¬á¬  ¼«ª¡«  «»αÑñѽ¿Γ∞,  ó  ¬á¬«¼
  2055. ßÑú¼Ñ¡ΓÑ ¡áσ«ñ¿Γß∩ ¬áªñá∩ ¼ÑΓ¬á, Γᬠ¬á¬ φΓ« π¬áºδóáÑΓß∩ º¡áτÑ¡¿-
  2056. Ѽ ß««ΓóÑΓßΓóπεΘÑú« »«½∩ Γáí½¿µδ ¼ÑΓ«¬ (»«½∩ Value).
  2057.  
  2058.      äαπú¿Ñ »ÑαÑτ¿ß½Ñ¡¡δѠ󠽿ßΓ¿¡úÑ Σá⌐½á HELLO.ASM ¼ÑΓ¬¿ -  φΓ«
  2059. ¼ÑΓ¬¿, »αÑñ«»αÑñѽѡ¡δÑ Æπαí« ÇßßѼí½Ñα«¼ »α¿ ¿ß»«½∞º«óá¡¿¿ π»α«-
  2060. ΘÑ¡¡δσ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó. éßÑ φΓ¿ ¼ÑΓ¬¿ πßΓá¡áó½¿óá-
  2061. εΓß∩  ó  º¡áτÑ¡¿∩,  ß««ΓóÑΓßΓóπεΘ¿Ñ ΓѬßΓ«óδ¼ ßΓ᫬á¼, ¿ ß«ñÑαªáΓ
  2062. ΓᬿѠº¡áτÑ¡¿∩, ¬á¬ _TEXT ¿ DGROUP  (»«½Ñ  Value  Γáí½¿µδ  Symbol
  2063. Table).
  2064.  
  2065.      îÑΓ¬¿ ¼«úπΓ ¿¼ÑΓ∞ «ñ¿¡ ¿º ß½ÑñπεΘ¿σ Γ¿»«ó ñá¡¡δσ  (ß¼.  »«½Ñ
  2066. Type):
  2067.  
  2068.        ABS           DWORD           NUMBER          TBYTE
  2069.        ALIAS         FAR             QWORD           TEXT
  2070.        BYTE          NEAR            STRUCT          WORD
  2071.  
  2072.      èᬠ¼δ «íßπªñ὿ ó ¡áτá½Ñ ñá¡¡«⌐ ú½áóδ, ß »«¼«Θ∞ε »α¿ßóá¿óá-
  2073. ¡¿∩ ¼ÑΓ¬¿ ¼«ª¡« »α¿αáó¡∩Γ∞ ¬ ½εí«¼π »«ßΓ«∩¡¡«¼π º¡áτÑ¡¿ε ¿½¿ ΓѬ-
  2074. ßΓ«ó«⌐ ßΓ᫬Ñ.  é »«½Ñ º¡áτÑ¡¿∩ (Value) Γáí½¿µδ ¼ÑΓ«¬ π¬áºδóáεΓß∩
  2075. ΓÑ º¡áτÑ¡¿∩ ¼ÑΓ«¬,  ¬«Γ«αδÑ óδ ºáñ὿. ä½∩ ¼ÑΓ«¬, ßó∩ºá¡¡δσ ß áñ-
  2076. αÑßἿ »á¼∩Γ¿ (Γᬿσ,  ¬á¬ Message),  ó »«½Ñ º¡áτÑ¡¿∩ π¬áºδóáÑΓß∩
  2077. áñαÑß ¼ÑΓ¬¿.
  2078.  
  2079.      Æáí½¿µá ¼ÑΓ«¬ - φΓ« Γ« ¼ÑßΓ« ó ½¿ßΓ¿¡úÑ, úñÑ ¼«ª¡« ¡á⌐Γ¿ ¿¡-
  2080. Σ«α¼áµ¿ε  « Γ¿»Ñ ¿ º¡áτÑ¡¿¿ ¬áªñ«⌐ ¼ÑΓ¬¿, ¿ß»«½∞º«óá¡¡«⌐ ó ¿ßσ«ñ-
  2081. ¡«¼ ¬«ñÑ.
  2082.  
  2083.  
  2084.  
  2085.                        Æáí½¿µá ßÑú¼Ñ¡Γ«ó ¿ úαπ»»
  2086. -----------------------------------------------------------------
  2087.  
  2088.      äαπú«⌐ Γáí½¿µÑ⌐ ó φΓ«⌐ τáßΓ¿ ½¿ßΓ¿¡úá ∩ó½∩ÑΓß∩ Γáí½¿µá  ßÑú-
  2089. ¼Ñ¡Γ«ó ¿ úαπ»»  (Groups & Segments). âαπ»»δ ßÑú¼Ñ¡Γ«ó, ΓᬿÑ, ¬á¬
  2090. DGROUP, »α«ßΓ« π¬áºδóáεΓß∩ ºñÑß∞, ¬á¬  úαπ»»δ,  »«ß¬«½∞¬π  úαπ»»δ
  2091. ßÑú¼Ñ¡Γ«ó  ßἿ ¡Ñ ¿¼ÑεΓ áΓα¿íπΓ«ó, á ß«ßΓ«∩Γ ¿º «ñ¡«ú« ¿½¿ í«½ÑÑ
  2092. ßÑú¼Ñ¡Γ«ó. æÑú¼Ñ¡Γδ, «íαáºπεΘ¿Ñ ó ñá¡¡«¼ ¼«ñπ½Ñ úαπ»»π,  π¬áºδóá-
  2093. εΓß∩ ó Γáí½¿µÑ ßÑú¼Ñ¡Γ«ó ¿ úαπ»» ¡Ñ»«ßαÑñßΓóÑ¡¡« »«ñ ¿¼Ñ¡Ñ¼ úαπ»-
  2094. »δ, »α¿ φΓ«¼ ñóá »αÑñΦÑßΓóπεΘ¿σ »α«íѽᠻ«¬áºδóáεΓ ¿σ  »α¿¡áñ½Ñª-
  2095. ¡«ßΓ∞ ¬ úαπ»»Ñ. é Σá⌐½Ñ HELLO.LST ßÑú¼Ñ¡Γδ STACK ¿ _DATA ∩ó½∩εΓß∩
  2096. τ½Ñ¡á¼¿ úαπ»»δ ßÑú¼Ñ¡Γ«ó DGROUP.
  2097.  
  2098.      æÑú¼Ñ¡Γδ ¿¼ÑεΓ áΓα¿íπΓδ, ¿ ó Γáí½¿µÑ ßÑú¼Ñ¡Γ«ó ¿  úαπ»»  ñ½∩
  2099. ¬áªñ«ú« ßÑú¼Ñ¡Γá »α¿óÑñÑ¡ ß»¿ß«¬ ¿º 5 áΓα¿íπΓ«ó. àß½¿ τ¿ΓáΓ∞ ß½Ñ-
  2100. óá, Γ« ó Γáí½¿µÑ π¬áºδóáεΓß∩ ß½ÑñπεΘ¿Ñ  áΓα¿íπΓδ:  αẼÑα  ñá¡¡δσ
  2101. (Bit),  «íΘ¿⌐ αẼÑα (Size), óδαáó¡¿óá¡¿Ñ (Align), Γ¿» ¬«¼í¿¡¿α«-
  2102. óá¡¿∩ (Combine) ¿ ¬½áßß (Class). Éáßß¼«Γα¿¼ ¬áªñδ⌐ ¿º ¡¿σ  ó  «Γ-
  2103. ñѽ∞¡«ßΓ¿.
  2104.  
  2105.      ÉẼÑα ñá¡¡δσ óßÑúñá αáóÑ¡ 16 (ºá ¿ß¬½ετÑ¡¿Ñ¼ ßÑú¼Ñ¡Γ«ó, áß-
  2106. ßÑ¼í½¿απѼδσ  ß  ñ¿αÑ¬Γ¿ó«⌐  USE32  ñ½∩ »α«µÑßß«αá 80386; «í φΓ«¼
  2107. αáß߬áºδóáÑΓß∩ ó â½áóÑ 9).
  2108.  
  2109.      ÉẼÑα ßÑú¼Ñ¡Γá ºáñáÑΓß∩ ó  ó¿ñÑ  τÑΓδαÑσ  ΦÑßΓ¡áñµáΓ¿α¿τ¡δσ
  2110. µ¿Σα. ìá»α¿¼Ñα,  ßÑú¼Ñ¡Γ STACK ¿¼ÑÑΓ αẼÑα 0200h íá⌐Γ (512 ó ñÑ-
  2111. ß∩Γ¿τ¡«¼ ó¿ñÑ).
  2112.  
  2113.      Æ¿» óδαáó¡¿óá¡¿∩ «»¿ßδóáÑΓ, ¡á ¬á¬«⌐  úαá¡¿µÑ  »á¼∩Γ¿  ¼«ªÑΓ
  2114. ¡áτ¿¡áΓ∞ß∩ ßÑú¼Ñ¡Γ. ê¼ÑεΓß∩ ß½ÑñπεΘ¿Ñ Γ¿»δ óδαáó¡¿óá¡¿∩:
  2115.  
  2116.    BYTE        - ßÑú¼Ñ¡Γ ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ ß ½εí«ú« áñαÑßá;
  2117.    DWORD       - ßÑú¼Ñ¡Γ ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ ß ½εí«ú« áñαÑßá,
  2118.                  ¬αáΓ¡«ú« 4;
  2119.    PAGE        - ßÑú¼Ñ¡Γ ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ ß ½εí«ú« áñαÑßá,
  2120.                  ¬αáΓ¡«ú« 256;
  2121.    PARA        - ßÑú¼Ñ¡Γ ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ ß ½εí«ú« áñαÑßá,
  2122.                  ¬αáΓ¡«ú« 16 (óδαáó¡¿óáÑΓß∩ ¡á úαá¡¿µπ ß½«óá);
  2123.    WORD        - ßÑú¼Ñ¡Γ ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ ß ½εí«ú« τÑΓ¡«ú«
  2124.                  áñαÑßá.
  2125.  
  2126.      é Σá⌐½Ñ HELLO.LST ßÑú¼Ñ¡Γ STACK ¡áτ¿¡áÑΓß∩ ¡á úαá¡¿µÑ »áαáú-
  2127. αáΣá,  á  ßÑú¼Ñ¡Γδ  _DATA  ¿ _TEXT óδαáó¡¿óáεΓß∩ ¡á úαá¡¿µπ ß½«óá
  2128. (í«½ÑÑ »«ñα«í¡á∩ ¿¡Σ«α¼áµ¿∩ « óδαáó¡¿óá¡¿¿ »α¿óÑñÑ¡á ó â½áóÑ 9).
  2129.  
  2130.      Æ¿» ¬«¼í¿¡¿α«óá¡¿∩ «»αÑñѽ∩ÑΓ, ¬á¬ ßÑú¼Ñ¡Γδ ß Γᬿ¼ ªÑ  ¿¼Ñ-
  2131. ¡Ñ¼  íπñπΓ ¬«¼í¿¡¿α«óáΓ∞ß∩ ß ñá¡¡δ¼ ßÑú¼Ñ¡Γ«¼. ìá»α¿¼Ñα, ßÑú¼Ñ¡Γδ
  2132. ß ¿ñÑ¡Γ¿τ¡δ¼¿ ¿¼Ñ¡á¼¿ ß Γ¿»«¼ ¬«¼í¿¡¿α«óá¡¿∩ PUBLIC  «íΩÑñ¿¡∩εΓß∩
  2133. (¬«¡¬áΓÑ¡¿απεΓß∩)  ó  «ñ¿¡  ßÑú¼Ñ¡Γ  í«½∞ΦÑú« αẼÑαá, á Ñß½¿ φΓ¿
  2134. ßÑú¼Ñ¡Γδ íπñπΓ ¿¼ÑΓ∞ Γ¿» ¬«¼í¿¡¿α«óá¡¿∩ COMMON, Γ« «¡¿ íπñπΓ ß½¿-
  2135. óáΓ∞ß∩ ó «ñ¿¡ «íΘ¿⌐ ßÑú¼Ñ¡Γ (»ÑαѬαδΓ¿Ñ). ü«½ÑÑ »«ñα«í¡« « ¬«¼í¿-
  2136. ¡¿α«óá¡¿¿ Γ¿»«ó ¿ ¬½áßß«ó ßÑú¼Ñ¡Γ«ó αáß߬áºδóáÑΓß∩ ó â½áóÑ 9.
  2137.  
  2138.      ìᬫ¡Ñµ, ¬½áßß  ßÑú¼Ñ¡Γá «»αÑñѽ∩ÑΓ «íΘ¿⌐ ¬½áßß,  ¬ ¬«Γ«α«¼π
  2139. »α¿¡áñ½Ñª¿Γ ßÑú¼Ñ¡Γ (¡á»α¿¼Ñα, CODE, DATA ¿½¿ STACK). è«¼»«¡«óΘ¿¬
  2140. ¿ß»«½∞ºπÑΓ φΓπ ¿¡Σ«α¼áµ¿ε ñ½∩ π»«α∩ñ«τ¿óá¡¿∩ ßÑú¼Ñ¡Γ«ó »α¿ ¬«¼»«-
  2141. ¡«ó¬¿ ¿σ ó »α«úαá¼¼π (ß¼. â½áóπ 9).
  2142.  
  2143.  
  2144.  
  2145.                       Æáí½¿µá »ÑαѬαÑßΓ¡δσ ßß佫¬
  2146. -----------------------------------------------------------------
  2147.  
  2148.      é Γáí½¿µÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó Σá⌐½á  ½¿ßΓ¿¡úá  »α¿ó«ñ¿Γß∩  ¼áßßá
  2149. ¿¡Σ«α¼áµ¿¿  « ¼ÑΓ¬áσ, úαπ»»áσ ¿ ßÑú¼Ñ¡Γáσ, ¡« ¿¼ÑÑΓß∩ 2 óÑΘ¿, ¬«-
  2150. Γ«αδÑ ºñÑß∞ ¡Ñ π¬áºá¡δ: úñÑ «»αÑñÑ½Ñ¡δ ¼ÑΓ¬¿, úαπ»»δ ¿ ßÑú¼Ñ¡Γδ ¿
  2151. úñÑ  «¡¿ ¿ß»«½∞ºπεΓß∩. äαπú¿¼¿ ß½«óἿ, ó Γáí½¿µÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó
  2152. «ΓßπΓßΓóπεΓ »ÑαѬαÑßΓ¡δÑ ßß佬¿ ñ½∩ ¼ÑΓ«¬, úαπ»» ¿ ßÑú¼Ñ¡Γ«ó. ê¡-
  2153. Σ«α¼áµ¿∩  « »ÑαѬαÑßΓ¡δσ ßß佬áσ «í½ÑúτáÑΓ ¡áσ«ªñÑ¡¿Ñ ¼ÑΓ«¬ ¿ «Γ-
  2154. ߽Ѫ¿óá¡¿Ñ »«φΓỡ«ú« óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ »α¿ ÑÑ «Γ½áñ¬Ñ.
  2155.  
  2156.      æπΘÑßΓóπÑΓ ñóá ß»«ß«íá π¬áºá¡¿∩ Æπαí« ÇßßѼí½Ñαπ ¡á  ¡Ñ«íσ«-
  2157. ñ¿¼«ßΓ∞  úÑ¡Ñαᵿ¿ ó ¬«¡µÑ Σá⌐½á ½¿ßΓ¿¡úá ¿¡Σ«α¼áµ¿¿ « »ÑαѬαÑßΓ-
  2158. ¡δσ ßß佬áσ. Äñ¡¿¼ ¿º ¡¿σ ∩ó½∩ÑΓß∩ »áαá¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿  /C,
  2159. ¡á»α¿¼Ñα:
  2160.  
  2161.               TASM  /c  hello,,
  2162.  
  2163.      Åα¿ φΓ«¼ ó Σá⌐½Ñ ½¿ßΓ¿¡úá HELLO.LST íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ß∩ ¿¡-
  2164. Σ«α¼áµ¿∩  «  »ÑαѬαÑßΓ¡δσ ßß佬áσ. çá¼ÑΓ¿¼, «ñ¡á¬«, τΓ« ßá¼ »áαá-
  2165. ¼ÑΓα /C ¡Ññ«ßΓáΓ«τÑ¡  ñ½∩  úÑ¡Ñαᵿ¿  ¿¡Σ«α¼áµ¿¿  «  »ÑαѬαÑßΓ¡δσ
  2166. ßß佬áσ. éδ ñ«½ª¡δ ΓᬪѠπ¬áºáΓ∞ Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡« ß«º-
  2167. ñáóáΓ∞ Σá⌐½ ½¿ßΓ¿¡úá, ó ¬«Γ«αδ⌐ φΓá ¿¡Σ«α¼áµ¿∩ íπñÑΓ »«¼ÑΘÑ¡á.
  2168.  
  2169.      çá»α«ß¿Γ∞ π Æπαí« ÇßßѼí½Ñαá ¡Ñ«íσ«ñ¿¼«ßΓ∞ úÑ¡Ñαᵿ¿  ¿¡Σ«α-
  2170. ¼áµ¿¿  á  »ÑαѬαÑßΓ¡δσ ßß佬áσ ¼«ª¡« ΓᬪѠߠ»«¼«Θ∞ε ñ«íáó½Ñ¡¿∩ ó
  2171. ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ τÑΓóÑαΓ«ú« »«½∩, ¡á»α¿¼Ñα:
  2172.  
  2173.               TASM  hello,hello,hello,hello
  2174.  ¿½¿
  2175.               TASM  hello,,,
  2176.  
  2177.      ÅαÑñ»«½«ª¿¼, óδ áßßÑ¼í½¿απÑΓÑ Σá⌐½ REVERSE.ASM  (ß¼.  óΓ«απε
  2178. »α«úαá¼¼π ó â½áóÑ 5), π¬áºδóá∩ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ »áαá¼ÑΓα /C:
  2179.  
  2180.                TASM  /C reverse,,
  2181.  
  2182.      Æπαí« ÇßßѼí½Ñα ß«ºñáÑΓ ß½ÑñπεΘ¿⌐ Σá⌐½  ½¿ßΓ¿¡úá  (ß  ¿¼Ñ¡Ñ¼
  2183. REVERSE.LST):
  2184.  
  2185. 1                    DOSSEG
  2186. 2                    .MODEL SMALL
  2187. 3                    .STACK 100h
  2188. 4                    .DATA
  2189. 5     = 03EB     MAXIMUM_STRING_LENGTH  EQU  1000
  2190. 6 0000 03EB*(??) StringToReverse DB MAXIMUM_STRING_LENGTH  DUP
  2191.  (?)
  2192. 7 03E8 03E8*(??) ReverseString   DB MAXIMUM_STRING_LENGTH  DUP
  2193.  (?)
  2194. 8                    .CODE
  2195. 9                ProgramStart:
  2196. 10 0000 B8 0000s     mov    ax,@Data
  2197. 11 0003 8E D8        mov    dx,ax           ; πßΓá¡«ó¿Γ∞ αÑú¿ßΓα
  2198.                                               DS Γᬿ¼ «íαẫ¼,
  2199.                                               τΓ«íδ «¡ π¬áºδóá½
  2200.                                               ¡á ßÑú¼Ñ¡Γ ñá¡¡δσ
  2201. 13 0005 B4 3F        mov    ah,3fh          ; Σπ¡¬µ¿∩ DOS τΓÑ¡¿∩
  2202.                                               óó«ñá
  2203. 14 0007 àà 0000      mov    bx,0            ; «»¿ßáΓѽ∞ ßΓá¡ñáαΓ-
  2204.                                               ¡«ú« óó«ñá
  2205. 15 000A B9 03E8      mov    cx,MAXIMUM_STRING_LENGTH ; ßτ¿Γá¡« ñ«
  2206. 16                                          ; ¼á¬ß¿¼á½∞¡«ú«
  2207.                                               τ¿ß½á ß¿¼ó«½«ó
  2208. 17 000D BA 0000r     mov    dx,OFFSET StringToReverse ; ß«σαá¡¿Γ∞
  2209. 18                                          ; ßΓ᫬π
  2210. 19 0010 OD 21        int    21h             ; »«½πτ¿Γ∞ ßΓ᫬π
  2211. 20 0012 23 C0        and    ax,ax           ; í뫨 ßτ¿Γá¡δ
  2212.                                               ß¿¼ó«½δ?
  2213. 21 0014 74 1F        jz     Done            ; ¡ÑΓ, ¬«¡Ñµ
  2214. 22 0016 8B C8        mov    cx,ax           ; »«¼ÑßΓ¿Γ∞ ñ½¿¡π
  2215. 23                                          ; ßΓ᫬¿ ó αÑú¿ßΓα
  2216.                                               æò, ¬«Γ«αδ⌐
  2217.                                               ¼«ª¡« ¿ß»«½∞º«óáΓ∞,
  2218.                                               ¬á¬ ßτÑΓτ¿¬
  2219. 24 0018 51           push   cx              ; ß«σαá¡¿Γ∞ ó ßΓѬÑ
  2220.                                               ñ½¿¡π ßΓ᫬¿
  2221. 25 0019 BB 0000r     mov    bx,OFFSET StringToReverse
  2222. 26 001C BE 03E8r     mov    si,OFFSET ReverseString
  2223. 27 001F 03 F1        add    si,cx
  2224. 28 0021 4E           dec    si              ; π¬áºδóáÑΓ ¡á ¬«¡Ñµ
  2225. 29                                          ; íπΣÑαá ßΓ᫬¿
  2226. 30                ReverseLoop:
  2227. 31 0022 8A 07        mov    al,[bx]         ; »«½πτ¿Γ∞ ß½Ññπ-
  2228.                                               εΘ¿⌐ ß¿¼ó«½
  2229. 32 0024 88 04        mov    [si],al         ; ß«σαá¡¿Γ∞ ß¿¼ó«½δ
  2230.                                               ó «íαáΓ¡«¼
  2231.                                               »«α∩ñ¬Ñ
  2232. 33 0026 43           inc    bx              ; π¬áºáΓѽ∞ ¡á
  2233.                                               ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  2234. 34 0027 4E           dec    si              ; π¬áºáΓѽ∞ ¡á
  2235. 35                                          ; »αÑñδñπΘπε ∩τÑ⌐¬π
  2236.                                               buffer
  2237. 36 0028 E2 F8        loop   ReverseLoop     ; »ÑαѼÑßΓ¿Γ∞
  2238.                                               ß½ÑñπεΘ¿⌐ ß¿¼ó«½,
  2239.                                               Ñß½¿ «¡ ¿¼ÑÑΓß∩
  2240. 37 002ä 59           pop    cx              ; ¿ºó½Ñτ∞ ñ½¿¡π
  2241.                                               ßΓ᫬¿
  2242. 38 002à à4 40        mov    ax,40h          ; Σπ¡¬µ¿∩ ºá»¿ß¿
  2243.                                               DOS
  2244. 39 002D BB 0001      mov    bx,1            ; «»¿ßáΓѽ∞
  2245.                                               ßΓá¡ñáαΓ¡«ú«
  2246.                                               óδó«ñá
  2247. 40 00030 àä 03ç8π    mov    dx,OFFSET ReverseString ; ¡á»ÑτáΓáΓ∞
  2248.                                               ßΓ᫬π
  2249. 41 0037 àå 21        ¬»σ    21⌐             ; ¡á»ÑτáΓáΓ∞ ßΓ᫬π
  2250. 42                Done:
  2251. 43 0035 B4 4C        mov    ah,4ch          ; Σπ¡¬µ¿∩ DOS
  2252.                                               ºáóÑαΦÑ¡¿∩
  2253.                                               »α«úαá¼¼δ
  2254. 44 0037 àå 21        int    21h             ; ºáóÑαΦ¿Γ∞
  2255.                                               »α«úαá¼¼π
  2256. 45                   END
  2257.  
  2258. Symbol Table
  2259.  
  2260. Symbol Name             Type      Value       Cref defined at #
  2261.  
  2262. @Code                   Text      _TEXT       #2  #8
  2263. @Curseg                 Text      _TEXT       #2  #3  #4  #8
  2264. DONE                    Near      _TEXT:0035  21  #42
  2265. MAXIMUM_STRING_LENGTH   Number    03E8        #5  6  7  15
  2266. PROGRAMSTART            Near      _TEXT:0000  #9  45
  2267. REVERSELOOP             Near      _Text:0022  #30 36
  2268. REVERSESTRING           Byte      DGROUP:03E8 #7 26 40
  2269. STRINGTOREVERSE         Byte      DGROUP:0000 #6 17 25
  2270.  
  2271. Groups & Segments  Bit  Size Align Combine Class  Cref defined at
  2272.  
  2273. DGROUP             Group                             #2 2 10
  2274.   STASK            16   0200 Para  Stack   STASK  #3
  2275.   _DATA            16   07D0 Word  Public  DATA   #2 #4
  2276. _TEXT              16   0039 Word  Public  CODE   #2 2 #8 8
  2277.  
  2278.      ¥Γ«Γ Σá⌐½ ½¿ßΓ¿¡úá ΓᬪѠ߫ñÑαª¿Γ αáßΦ¿αÑ¡¡δ⌐ ¿ßσ«ñ¡δ⌐ ¬«ñ ¿
  2279. Γáí½¿µδ  ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó. Äñ¡á¬« ó Γáí½¿µÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó »«∩ó¿-
  2280. ½«ß∞ ¡«ó«Ñ »«½Ñ - »«½Ñ  »ÑαѬαÑßΓ¡δσ  ßß佫¬  (»«½Ñ  ß  ¡áºó᡿Ѽ
  2281. "Cref defined at").
  2282.  
  2283.      é »«½Ñ »ÑαѬαÑßΓ¡δσ ßß佫¬ π¬áºδóáεΓß∩ ñ½∩ ¬áªñ«ú« ¿ñÑ¡Γ¿Σ¿-
  2284. ¬áΓ«αá (¼ÑΓ¬¿, úαπ»»δ ¿½¿ ßÑú¼Ñ¡Γá) ¡«¼Ñαá óßÑσ ΓÑσ ßΓ᫬ ó »α«ú-
  2285. αá¼¼Ñ, úñÑ ¿¼ÑÑΓß∩ ßßδ½¬á ¡á ñá¡¡δ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α. ÅÑαÑñ  ßΓ᫬á-
  2286. ¼¿, ¡á ¬«Γ«αδσ íδ½ «»αÑñѽѡ ¿ñÑ¡Γ¿Σ¿¬áΓ«α, π¬áºδóáÑΓß∩ ß¿¼ó«½ #.
  2287.  
  2288.      ìá»α¿¼Ñα, ñáóá⌐ΓÑ ¡á⌐ñѼ, úñÑ  «»αÑñѽ∩ÑΓß∩  ¿  ¿ß»«½∞ºπÑΓß∩
  2289. ¼ÑΓ¬á  MAXIMUM_STRING_LENGTH.  é  Σá⌐½Ñ ½¿ßΓ¿¡úá π¬áºδóáÑΓß∩, τΓ«
  2290. «¡á íδ½á «»αÑñѽѡᠡá ßΓα«¬Ñ 5. àß½¿ óδ  »«ß¼«Γα¿ΓÑ  ¡á  ½¿ßΓ¿¡ú
  2291. ¿ßσ«ñ¡«ú« ¬«ñá, Γ« πíÑñ¿ΓÑß∞, τΓ« φΓ« ¿¼Ñ¡¡« Γá¬. (ÄΓ¼ÑΓ¿¼, ¬ßΓá-
  2292. Γ¿,   τΓ«   ó   Γáí½¿µÑ   ¼ÑΓ«¬   π¬áºδóáÑΓß∩,    τΓ«    º¡áτÑ¡¿Ñ
  2293. MAXIMUM_STRING_LENGTH  »αÑñßΓáó½∩ÑΓ ß«í«⌐ τ¿ß½« 03à8h, ñÑß∩Γ¿τ¡«Ñ
  2294. º¡áτÑ¡¿Ñ ¬«Γ«α«ú« 1000.)
  2295.  
  2296.      é »«½Ñ  »ÑαѬαÑßΓ¡δσ  ßß佫¬ ñ½∩ ¼ÑΓ¬¿ MAXIMUM_STRING_LENGTH
  2297. ΓᬪѠπ¬áºδóáÑΓß∩,  τΓ« ßß佬¿ ¡á φΓπ ¼ÑΓ¬π  (¡«  ¡Ñ  «»αÑñѽѡ¿∩
  2298. ¼ÑΓ¬¿)  ¿¼ÑεΓß∩  ¡á  ßΓ᫬áσ 6,  7 ¿ 15. àß½¿ óºú½∩¡πΓ∞ ¡« »Ñαóπε
  2299. τáßΓ∞ ½¿ßΓ¿¡úá, Γ« ¼«ª¡« πó¿ñÑΓ∞, τΓ« φΓ« Γá¬.
  2300.  
  2301.      ìπª¡« ¿¼ÑΓ∞ ó ó¿ñπ, τΓ« ¼Ñªñπ Γáí½¿µÑ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ß »Ñ-
  2302. αѬαÑßΓ¡δ¼¿  ßßδ½¬á¼¿ ¿ Γáí½¿µÑ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó íѺ »ÑαѬαÑßΓ¡δσ
  2303. ßß佫¬ ßπΘÑßΓóπÑΓ «ñ¡« «Γ½¿τ¿Ñ. êñÑ¡Γ¿Σ¿¬áΓ«α, ¬«Γ«αδ⌐ íδ½  «»αÑ-
  2304. ñѽѡ,  ¡«  ¡á  ¬«Γ«αδÑ ¡ÑΓ ßß佫¬ ó »α«úαá¼¼Ñ, ó Γáí½¿µÑ ¼ÑΓ«¬ ß
  2305. »ÑαѬαÑßΓ¡δ¼¿ ßßδ½¬á¼¿ »«¬áºá¡ ¡Ñ íπñÑΓ,  »«ß¬«½∞¬π  »ÑαѬαÑßΓ¡δÑ
  2306. ßß佬¿ ¡á ¡Ñú« «ΓßπΓßΓóπεΓ. Äñ¡á¬« Γᬫ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α π¬áºδóáÑΓ-
  2307. ß∩ ó «íδτ¡«⌐ Γáí½¿µÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó (íѺ »ÑαѬαÑßΓ¡δσ ßß佫¬).
  2308.  
  2309.      ÉáºαÑΦ¿Γ∞ úÑ¡Ñαáµ¿ε »ÑαѬαÑßΓ¡δσ ßß佫¬ ñ½∩ óßÑú« Σá⌐½á ¼«ª-
  2310. ¡«  ß »«¼«Θ∞ε »áαá¼ÑΓαá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /C. î«ª¡« ß πóÑαÑ¡¡«ßΓ∞ε
  2311. ߬áºáΓ∞, τΓ« óδ ¡Ñ ºáσ«Γ¿ΓÑ »«½πτáΓ∞ ½¿ßΓ¿¡ú »ÑαѬαÑßΓ¡δσ  ßß佫¬
  2312. ñ½∩  ¬áªñ«ú«  ¿ñÑ¡Γ¿Σ¿¬áΓ«αá.  ä½∩  í«½∞Φ¿σ ¿ßσ«ñ¡δσ Σá⌐½«ó ΓᬿÑ
  2313. ½¿ßΓ¿¡ú¿ íπñπΓ ¿¼ÑΓ∞ «úα«¼¡δÑ αẼÑαδ. é Æπαí« ÇßßѼí½ÑαÑ »αÑñπß-
  2314. ¼«ΓαÑ¡δ  ñ¿αÑ¬Γ¿óδ,  »«ºó«½∩εΘ¿Ñ óá¼ αáºαÑΦáΓ∞ ¿ ºá»αÑΘáΓ∞ »ÑαѬ-
  2315. αÑßΓ¡δÑ ßß佬¿ ñ½∩ óδíαá¡¡δσ τáßΓÑ⌐ ¿ßσ«ñ¡«ú« Σá⌐½á.
  2316.  
  2317.      ä¿αÑ¬Γ¿óá %CREF αáºαÑΦáÑΓ αáºαÑΦáÑΓ úÑ¡Ñαᵿε ñ½∩  »«ß½Ññπε-
  2318. Θ¿σ ßΓ᫬ ΓѬßΓá »ÑαѬαÑßΓ¡δσ ßß佫¬. ä¿αÑ¬Γ¿óδ %NOCREF ºá»αÑΘáÑΓ
  2319. ¿σ úÑ¡Ñαᵿε. ïεíá∩ ¿º φΓ¿σ ñ¿αÑ¬Γ¿ó «Γ¼Ñ¡∩ÑΓ ñÑ⌐ßΓó¿Ñ, π¬áºá¡¡«Ñ
  2320. ó  ¬«¼á¡ñ¡«⌐  ßΓα«¬Ñ  ß  »«¼«Θ∞ε  »áαá¼ÑΓαá /C. àß½¿ »ÑαѬαÑßΓ¡δÑ
  2321. ßß佬¿ αáºαÑΦÑ¡δ úñÑ-½¿í« ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ, Γ« ó Γáí½¿µÑ ¿ñÑ¡Γ¿-
  2322. Σ¿¬áΓ«α«ó π¬áºδóáεΓß∩ ßΓ᫬¿, ¡á ¬«Γ«αδσ í뫨 «»αÑñѽѡδ óßÑ ßÑú-
  2323. ¼Ñ¡Γδ, úαπ»»δ ¿ ¼ÑΓ¬¿. Äñ¡á¬« ó  ºá»¿ß¿  «  »ÑαѬαÑßΓ¡δσ  ßß佬áσ
  2324. »α¿ó«ñ∩Γß∩  Γ«½∞¬«  ΓÑ ßΓ᫬¿, ¡á ¬«Γ«αδσ ¿¼ÑεΓß∩ ßß佬¿ ¡á ß««Γ-
  2325. óÑΓßΓóπεΘ¿Ñ ßÑú¼Ñ¡Γδ, úαπ»»δ ¿ ¼ÑΓ¬¿ ¿  ñ½∩  ¬«Γ«αδσ  ó  ¿ßσ«ñ¡«¼
  2326. Σá⌐½Ñ αáºαÑΦÑ¡á úÑ¡Ñαᵿ∩ »ÑαѬαÑßΓ¡δσ ßß佫¬.
  2327.  
  2328.      Éáßß¼«Γα¿¼, ¡á»α¿¼Ñα, ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
  2329.  
  2330.             .
  2331.             .
  2332.             .
  2333.             #NOCREF
  2334.  ProgrammStart    PROC                    ; ßΓ᫬á 1
  2335.             .
  2336.             .
  2337.             .
  2338.             jmp   LoopTop                 ; ßΓ᫬á 2
  2339.             .
  2340.             .
  2341.             .
  2342.             #CREF
  2343.  LoopTop:                                 ; ßΓ᫬á 3
  2344.             .
  2345.             .
  2346.             .
  2347.             loop  LoopTop                 ; ßΓ᫬á 4
  2348.             #NOCREF
  2349.             mov   ax,OFFSET ProgramStart  ; ßΓ᫬á 5
  2350.             .
  2351.             .
  2352.             .
  2353.  
  2354.      ä½∩ ¼ÑΓ¬¿ ProgramStart ßΓ᫬á 1 íπñÑΓ  π¬áºá¡á,  ¬á¬  ßΓ᫬á
  2355. «»αÑñѽѡ¿∩ (ß ß¿¼ó«½«¼ #), σ«Γ∩ «¡á ¿ ¡áσ«ñ¿Γß∩ ó «í½áßΓ¿, úÑ¡Ñ-
  2356. αᵿ∩ »ÑαѬαÑßΓ¡δσ ßß佫¬ "ó䬽ετÑ¡á". ¥Γ« »α«¿ßσ«ñ¿Γ »«Γ«¼π, τΓ«
  2357. Ñß½¿ úñÑ-½¿í« ó ¼«ñπ½Ñ úÑ¡Ñαᵿ∩ »ÑαѬαÑßΓ¡δσ ßß佫¬ ºáñáÑΓß∩, Γ«
  2358. ó »ÑαѬαÑßΓ¡δσ ßß佬áσ π¬áºδóáεΓß∩ óßÑ ßΓ᫬¿ «»αÑñѽѡ¿∩  ¼ÑΓ«¬.
  2359. ǡὫú¿τ¡«,  ßΓ᫬á 3 íπñÑΓ π¬áºá¡á, ¬á¬ ßΓα«¬á «»αÑñѽѡ¿∩ ¼ÑΓ¬¿
  2360. LoopTop.
  2361.  
  2362.      æΓ᫬á 4 íπñÑΓ π¬áºá¡á ó »ÑαѬαÑßΓ¡δσ ßß佬áσ  ñ½∩  LoopTop,
  2363. Γᬠ ¬á¬  «¡á  ¡áσ«ñ¿Γß∩ »«ß½Ñ ñ¿αÑ¬Γ¿óδ %CREF ¿ »ÑαÑñ ñ¿αÑ¬Γ¿ó«⌐
  2364. %NOCREF. Äñ¡á¬«, ßΓ᫬á 2 ó »ÑαѬαÑßΓ¡δσ ßß佬áσ ñ½∩ LoopTop π¬á-
  2365. ºá¡á ¡Ñ íπñÑΓ, »«Γ«¼π τΓ« «¡á ¡áσ«ñ¿Γß∩ ó º«¡Ñ ºá»αÑΘÑ¡¿∩ úÑ¡Ñαá-
  2366. µ¿¿ »ÑαѬαÑßΓ¡δσ ßß佫¬. Å« Γ«⌐ ªÑ »α¿τ¿¡Ñ ó »ÑαѬαÑßΓ¡δσ ßß佬áσ
  2367. ñ½∩ ProgramStart ¡Ñ íπñÑΓ π¬áºá¡á ßΓ᫬á 5.
  2368.  
  2369.      ä½∩ ß«ó¼ÑßΓ¿¼«ßΓ¿ ß ñαπú¿¼¿ áßßѼí½ÑαἿ ó Æπαí«  ÇßßѼí½ÑαÑ
  2370. »αÑñπß¼«ΓαÑ¡δ  ñ¿αÑ¬Γ¿óδ  .CREF  ¿ .XCREF, π»αáó½∩εΘ¿Ñ úÑ¡ÑαᵿÑ⌐
  2371. »ÑαѬαÑßΓ¡δσ ßß佫¬ á¡á½«ú¿τ¡« ñ¿αÑ¬Γ¿óá¼ %CREF ¿ %NOCREF.
  2372.  
  2373.  
  2374.  
  2375.  
  2376. ô»αáó½Ñ¡¿Ñ ß«ñÑন¼δ¼ ¿ Σ«α¼áΓ«¼ ½¿ßΓ¿¡ú«ó
  2377. -----------------------------------------------------------------
  2378.  
  2379.      Æπαí« ÇßßѼí½Ñα »αÑñ«ßΓáó½∩ÑΓ óá¼ Φ¿α«¬¿Ñ ó«º¼«ª¡«ßΓ¿ »« π»-
  2380. αáó½Ñ¡¿ε óδó«ñ«¼ ó ½¿ßΓ¿¡úáσ ßΓ᫬ ¿ßσ«ñ¡«ú« ¬«ñá ¿ Σ«α¼áΓ«¼ ½¿ß-
  2381. Γ¿¡úá ó µÑ½«¼. ä¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼ ¼«ª¡« αáºñѽ¿Γ∞  ¡á
  2382. ñóÑ ¬áΓÑú«α¿¿:  ñ¿αÑ¬Γ¿óδ  π»αáó½Ñ¡¿∩ ß«ñÑন¼δ¼ ½¿ßΓ¿¡úá,  ß »«-
  2383. ¼«Θ∞ε ¬«Γ«αδσ óδí¿αáÑΓß∩ ó¬½ετáѼá∩ ó Σá⌐½ ½¿ßΓ¿¡úá ¿¡Σ«α¼áµ¿∩, ¿
  2384. ñ¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼ ½¿ßΓ¿¡úá,  «»αÑñѽ∩εΘ¿Ñ Σ«α¼áΓ Σá⌐-
  2385. ½«ó ½¿ßΓ¿¡úá.
  2386.  
  2387.  
  2388. ä¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ß«ñÑন¼δ¼ ½¿ßΓ¿¡úá
  2389. -----------------------------------------------------------------
  2390.  
  2391.      ä¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ß«ñÑন¼δ¼ ½¿ßΓ¿¡úá αáºαÑΦáεΓ ¿½¿  ºá»-
  2392. αÑΘáεΓ  ó¬½ετÑ¡¿Ñ ó Σá⌐½ ½¿ßΓ¿¡úá «Γñѽ∞¡δσ ßΓ᫬. é «íΘѼ ß½πτáÑ
  2393. φΓ¿ ñ¿αÑ¬Γ¿óδ »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ »«ñáó½Ñ¡¿∩ óδó«ñá  ó  Σá⌐½
  2394. ½¿ßΓ¿¡úá Γ«⌐ ¿¡Σ«α¼áµ¿¿, ¬«Γ«αá∩ óáß ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ ¡Ñ ¿¡ΓÑαÑßπ-
  2395. ÑΓ, τΓ« »«ºó«½∩ÑΓ π¼Ñ¡∞Φ¿Γ∞ «íΩѼ Σá⌐½á ½¿ßΓ¿¡úá ¿ π»α«ßΓ¿Γ∞  αá-
  2396. í«Γπ ß ¡¿¼.
  2397.  
  2398.                        ä¿αÑ¬Γ¿óδ %LIST ¿ %NOLIST
  2399. -----------------------------------------------------------------
  2400.  
  2401.      ä¿αÑ¬Γ¿óδ %LIST ¿ %NOLIST - φΓ« «ß¡«ó¡δÑ ñ¿αÑ¬Γ¿óδ, π»αáó½∩-
  2402. εΘ¿Ñ óδó«ñ«¼ ßΓ᫬ ½¿ßΓ¿¡úá.  Ä¡¿ αáºαÑΦáεΓ (ñ¿αÑ¬Γ¿óá %LIST) ¿½¿
  2403. ºá»αÑΘáεΓ (ñ¿αÑ¬Γ¿óá %NOLIST) ó¬½ετÑ¡¿Ñ »«ß½ÑñπεΘ¿σ ßΓ᫬ ½¿ßΓ¿¡-
  2404. úá ó Σá⌐½ ½¿ßΓ¿¡úá. ìá»α¿¼Ñα, »α¿ π¬áºá¡¿¿ ñ¿αÑ¬Γ¿ó:
  2405.  
  2406.             .
  2407.             .
  2408.             .
  2409.             %NOLIST
  2410.             mov   ax,1
  2411.             %LIST
  2412.             mov   bx,2
  2413.             %NOLIST
  2414.             add   ax,bx
  2415.             .
  2416.             .
  2417.             .
  2418.  
  2419. ó Σá⌐½ ½¿ßΓ¿¡úá íπñÑΓ ó¬½ετÑ¡á Γ«½∞¬« ßαÑñ¡∩∩ ßΓ᫬á mov bx,2. Å«
  2420. π¼«½τá¡¿ε óδí¿αáÑΓß∩ ñ¿αÑ¬Γ¿óá %LIST.
  2421.  
  2422.                        ä¿αÑ¬Γ¿óδ %COND ¿ %NOCOND
  2423. -----------------------------------------------------------------
  2424.  
  2425.      ä¿αÑ¬Γ¿óδ %COND ¿ %NOCOND »«ºó«½∩εΓ óá¼ αáºαÑΦáΓ∞ (ñ¿αÑ¬Γ¿óá
  2426. %COND) ¿½¿ ºá»αÑΘáΓ∞ (ñ¿αÑ¬Γ¿óá %NOCOND) ó¬½ετÑ¡¿Ñ ó ½¿ßΓ¿¡ú í½«-
  2427. ¬«ó πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩ ß ¡Ñπñ«ó½ÑΓó«αÑ¡¡δ¼ πß½«ó¿Ñ¼.  ï¿ß-
  2428. Γ¿¡ú  Γᬿσ  í½«¬«ó «íδτ¡« (»« π¼«½τá¡¿ε) »«ñáó½∩ÑΓß∩.  ìá»α¿¼Ñα,
  2429. »α¿ ¡á½¿τ¿¿ ñ¿αÑ¬Γ¿ó:
  2430.  
  2431.        .
  2432.        .
  2433.        .
  2434.      %CONDS
  2435.      IFE IS8086
  2436.        shl ax,7
  2437.      ELSE
  2438.        mov cl,7
  2439.        shl ax,cl
  2440.      ENDIF
  2441.        .
  2442.        .
  2443.        .
  2444.  
  2445. ó Σá⌐½ ½¿ßΓ¿¡úá íπñπΓ »«¼ÑΘÑ¡δ «íá πß½«ó¡δσ í½«¬á ó¼ÑßΓÑ   ñ¿αѬ-
  2446. Γ¿óἿ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩, á ¡Ñ Γ«½∞¬« Γ«Γ  í½«¬ πß½«ó¡«ú«
  2447. áßßÑ¼í½¿α«óá¡¿∩, ¬«Γ«αδ⌐ ó« óαѼ∩ Γαá¡ß½∩µ¿¿ ¿¼ÑÑΓ ¿ßΓ¿¡¡«Ñ  º¡á-
  2448. τÑ¡¿Ñ.
  2449.  
  2450.  
  2451. ä¿αÑ¬Γ¿óδ %INCL ¿ %NOINCL
  2452. -----------------------------------------------------------------
  2453.  
  2454.      ä¿αÑ¬Γ¿óδ %INCL ¿ %NOINCL »«ºó«½∩εΓ óá¼ αáºαÑΦáΓ∞ (ñ¿αÑ¬Γ¿óá
  2455. %INCL) ¿½¿ ºá»αÑΘáΓ∞ (%NOINCL) óδó«ñ ó ½¿ßΓ¿¡úÑ ßΓ᫬, ó¬½ετáѼδσ
  2456. ¿º ñαπú¿σ Σá⌐½«ó »« ñ¿αÑ¬Γ¿óÑ INCLUDE.  Å« π¼«½τá¡¿ε óδó«ñ ó ½¿ß-
  2457. Γ¿¡úÑ ó¬½ετáѼ«ú« ΓѬßΓá αáºαÑΦÑ¡. ìá»α¿¼Ñα, »« ñ¿αÑ¬Γ¿óá¼:
  2458.  
  2459.             .
  2460.             .
  2461.             .
  2462.             %NOINCL
  2463.             INCLUDE   HEADER.ASM
  2464.             %INCL
  2465.             INCLUDE   INIT.ASM
  2466.             .
  2467.             .
  2468.             .
  2469.  
  2470. ßΓ᫬¿, ó¬½ετáѼδÑ ¿º Σá⌐½á HEADER.ASM, ¡Ñ íπñπΓ »«¼ÑΘÑ¡δ ó  Σá⌐½
  2471. ½¿ßΓ¿¡úá,  á  ßΓ᫬¿ ¿º Σá⌐½á INIT.ASM - íπñπΓ («ñ¡á¬« ó ½¿ßΓ¿¡úÑ
  2472. íπñπΓ π¬áºá¡δ «íÑ ñ¿αÑ¬Γ¿óδ INCLUDE).
  2473.  
  2474.                        ä¿αÑ¬Γ¿óδ %MACS ¿ %NOMACS
  2475. -----------------------------------------------------------------
  2476.  
  2477.      ä¿αÑ¬Γ¿óδ %MACS ¿ %NOMACS »«ºó«½∩εΓ óá¼ αáºαÑΦ¿Γ∞ (ñ¿αÑ¬Γ¿óá
  2478. %MACS) ¿½¿  ºá»αÑΓ¿Γ∞  (ñ¿αÑ¬Γ¿óá  %NOMACS)  ó¬½ετÑ¡¿Ñ  ó ½¿ßΓ¿¡ú
  2479. ΓѬßΓá ¼á¬α«αáßΦ¿αÑ¡¿⌐. ï¿ßΓ¿¡ú ¼á¬α«αáßΦ¿αÑ¡¿⌐ «íδτ¡« »«ñáó½∩ÑΓ-
  2480. ß∩. ìá»α¿¼Ñα, ó αѺπ½∞ΓáΓÑ áßßÑ¼í½¿α«óá¡¿∩ ¿ßσ«ñ¡«ú« ¬«ñá:
  2481.  
  2482.             .
  2483.             .
  2484.             .
  2485.  MAKE_BYTE  MACRO  VALUE
  2486.             DB     VALUE
  2487.             ENDM
  2488.             .
  2489.             .
  2490.             .
  2491.             %NOMACS
  2492.             MAKE_BYTE 1
  2493.             %MACS
  2494.             MAKE_BYTE 1
  2495.             .
  2496.             .
  2497.             .
  2498.  
  2499. ΓѬßΓ,  úÑ¡Ñα¿απѼδ⌐   »Ñαóδ¼    ¼á¬α«αáßΦ¿αÑ¡¿Ñ¼    ¼á¬α«¬«¼á¡ñδ
  2500. MAKE_BYTE,  DB  1,   ó Σá⌐½ ½¿ßΓ¿¡úá ó¬½ετÑ¡ ¡Ñ íπñÑΓ («ñ¡á¬« «íÑ
  2501. ñ¿αÑ¬Γ¿óδ MACRO íπñπΓ ó¬½ετÑ¡δ ó Σá⌐½ ½¿ßΓ¿¡úá).
  2502.  
  2503.                        ä¿αÑ¬Γ¿óδ %CTLS ¿ %NOCTLS
  2504. -----------------------------------------------------------------
  2505.  
  2506.      ä¿αÑ¬Γ¿óδ %CTLS ¿ %NOCTLS »«ºó«½∩εΓ  óá¼  αáºαÑΦ¿Γ∞  (%CTLS)
  2507. ¿½¿ ºá»αÑΓ¿Γ∞ (ñ¿αÑ¬Γ¿óá %NOCTLS) ó¬½ετÑ¡¿Ñ ó ½¿ßΓ¿¡ú  ßἿσ  π»-
  2508. αáó½∩εΘ¿σ ñ¿αÑ¬Γ¿ó.  Å« π¼«½τá¡¿ε ó¬½ετÑ¡¿Ñ ó ½¿ßΓ¿¡ú π»αáó½∩εΘ¿σ
  2509. ñ¿αÑ¬Γ¿ó ºá»αÑΘÑ¡«. ìá»α¿¼Ñα, ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ ñ¿αÑ¬Γ¿ó:
  2510.  
  2511.             .
  2512.             .
  2513.             .
  2514.             %NOCTLS
  2515.             %NOINCL
  2516.             %CTLS
  2517.             %NOMACS
  2518.             .
  2519.             .
  2520.             .
  2521.  
  2522. ñ¿αÑ¬Γ¿óá π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼ %NOINCL ó ½¿ßΓ¿¡ú ó¬½ετѡᠡᠠíπ-
  2523. ñÑΓ, á ñ¿αÑ¬Γ¿óá %NOMACS - íπñÑΓ.
  2524.  
  2525.      ä¿αÑ¬Γ¿óδ %UREF ¿ %NOUREF »«ºó«½∩εΓ óá¼ αáºαÑΦáΓ∞ ¿½¿ ºá»αÑ-
  2526. ΘáΓ∞  ó¬½ετÑ¡¿Ñ  ó Γáí½¿µπ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ½¿ßΓ¿¡úá ¿ñÑ¡Γ¿Σ¿¬áΓ«-
  2527. α«ó, ¡á ¬«Γ«αδÑ ¡ÑΓ ßß佫¬ (ñαπú¿¼¿ ß½«óἿ, ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, ¬«-
  2528. Γ«αδÑ «»αÑñѽ∩εΓß∩, ¡« ¡Ñ ¿ß»«½∞ºπεΓß∩). Å« π¼«½τá¡¿ε ó¬½ετÑ¡¿Ñ ó
  2529. ½¿ßΓ¿¡ú Γᬿσ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó αáºαÑΦÑ¡«. ùΓ«íδ φΓ¿ ñ¿αÑ¬Γ¿óδ ñÑ⌐-
  2530. ßΓó«ó὿, ¡πª¡« ºáñáΓ∞ ß«ºñá¡¿Ñ ½¿ßΓ¿¡úá »ÑαѬαÑßΓ¡δσ ßß佫¬.
  2531.  
  2532.      ä¿αÑ¬Γ¿óδ %SYMS ¿ %NOSYMS »«ºó«½∩εΓ óá¼ αáºαÑΦáΓ∞ ¿½¿ ºá»αÑ-
  2533. ΘáΓ∞  ó¬½ετÑ¡¿Ñ ó Σá⌐½ ½¿ßΓ¿¡úá Γáí½¿µδ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó. Å« π¼«½-
  2534. τá¡¿ε ó¬½ετÑ¡¿Ñ ó ½¿ßΓ¿¡ú Γᬫ⌐ Γáí½¿µδ (¬á¬ óδ πªÑ ¡áóÑα¡«Ñ  ºá-
  2535. ¼ÑΓ¿½¿) αáºαÑΦÑ¡«.
  2536.  
  2537.  
  2538.  
  2539.                 ä¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼ ½¿ßΓ¿¡úá
  2540. -----------------------------------------------------------------
  2541.  
  2542.      ä¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼ ½¿ßΓ¿¡úá ¿º¼Ñ¡∩εΓ Σ«α¼áΓ Σá⌐½á
  2543. ½¿ßΓ¿¡úá.  ¥Γ¿  ñ¿αÑ¬Γ¿óδ  ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ úÑ¡Ñαᵿ¿ Σá⌐½á
  2544. ½¿ßΓ¿¡úá Γᬫú« Σ«α¼áΓá, ¬«Γ«αδ⌐ óáß í«½∞ΦÑ πßΓαá¿óáÑΓ.
  2545.  
  2546.      ä¿αÑ¬Γ¿óá %TITLE ºáñáÑΓ ºáú«½«ó«¬, óδó«ñ¿¼δ⌐ ó óÑασ¡Ñ⌐ τáßΓ¿
  2547. ¬áªñ«⌐  ßΓαá¡¿µδ αáßΦ¿αÑ¡¡«ú« ½¿ßΓ¿¡úá ¿ßσ«ñ¡«ú« ¬«ñá. ä½∩ ¬áªñ«⌐
  2548. »α«úαá¼¼δ ¼«ª¡« ºáñáΓ∞ Γ«½∞¬« «ñ¿¡ ºáú«½«ó«¬.  ä¿αÑ¬Γ¿óá  %SUBTTL
  2549. ºáñáÑΓ  »«ñºáú«½«ó«¬, ¬«Γ«αδ⌐ ñ«½ªÑ¡ óδó«ñ¿Γ∞ß∩ »«ñ ºáú«½«ó¬«¼ ¡á
  2550. ¬áªñ«⌐ ßΓαá¡¿µÑ ½¿ßΓ¿¡úá. é »α«úαἼѠτ¿ß½«  »«ñºáú«½«ó¬«¼  ¼«ªÑΓ
  2551. íδΓ∞  ½εíδ¼. ìá»α¿¼Ñα, Ñß½¿ ó ¿ßσ«ñ¡«¼ ¼«ñπ½Ñ SPACEWAR.ASM ß«ñÑα-
  2552. ªáΓß∩ ñ¿αÑ¬Γ¿óδ:
  2553.  
  2554.             .
  2555.             .
  2556.             .
  2557.             %TITLE  'Åα«úαἼᠿúαδ  ç ó Ñ º ñ ¡ δ Ñ  ó « ⌐ ¡ δ'
  2558.             %SUBTTL 'Å«ñ»α«úαá¼¼δ úαáó¿Γᵿ«¡¡δσ φΣΣÑ¬Γ«ó'
  2559.             .
  2560.             .
  2561.             .
  2562.  
  2563. Γ« ¡á ¬áªñ«⌐ ßΓαá¡¿µÑ αáßΦ¿αÑ¡¡«ú« ½¿ßΓ¿¡úá ¿ßσ«ñ¡«ú« ¬«ñá  íπñπΓ
  2564. ß«ñÑαªáΓ∞ß∩ ß½ÑñπεΘ¿Ñ ßΓ᫬¿:
  2565.  
  2566. Turbo Assembler  Version 2.0    06-29-90  16:21:27         Page 1
  2567. SPACEWAR.ASM
  2568. Åα«úαἼᠿúαδ  ç ó Ñ º ñ ¡ δ Ñ  ó « ⌐ ¡ δ
  2569. Å«ñ»α«úαá¼¼δ úαáó¿Γᵿ«¡¡δσ φΣΣÑ¬Γ«ó
  2570.  
  2571.      ä¿αÑ¬Γ¿óá %NEWPAGE π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ«  ó  Σá⌐½Ñ
  2572. ½¿ßΓ¿¡úá ¡πª¡« ¡áτáΓ∞ ¡«óπε ßΓαá¡¿µπ.
  2573.  
  2574.      ä¿αÑ¬Γ¿óá %TRUNC π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡«  πßÑ-
  2575. ¬áΓ∞  »«½∩,  »αÑóδΦáεΘ¿Ñ  ¼á¬ß¿¼á½∞¡πε  ñ½¿¡π. ä¿αÑ¬Γ¿óá %NOTRUNC
  2576. π¬áºδóáÑΓ, τΓ« ΓᬿѠ»«½∩ ¡πª¡« »ÑαÑ¡«ß¿Γ∞ ¡á  ß½ÑñπεΘπε  ßΓ᫬π.
  2577. Å« π¼«½τá¡¿ε φΓ¿ »«½∩ πßѬáεΓß∩.
  2578.  
  2579.      ä¿αÑ¬Γ¿óá %PAGESIZE ºáñáÑΓ óÑαΓ¿¬á½∞¡δ⌐ (τ¿ß½« ßΓ᫬) ¿  ú«-
  2580. ਧ«¡Γá½∞¡δ⌐  (τ¿ß½« »«º¿µ¿⌐) αẼÑα ßΓαá¡¿µ ½¿ßΓ¿¡úá, úÑ¡Ñα¿απÑ-
  2581. ¼δσ Æπαí« ÇßßѼí½Ñα«¼. ìá»α¿¼Ñα, ñ¿αÑ¬Γ¿óá:
  2582.  
  2583.         %PAGESIZE  66,132
  2584.  
  2585. π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡« ß«ºñáóáΓ∞ ßΓαá¡¿µδ ½¿ßΓ¿¡úá
  2586. ß  αẼÑα«¼ 66 ßΓ᫬ ¡á ßΓαá¡¿µπ ¿ 132 »«º¿µ¿¿ ó ßΓ᫬Ñ. ÄΓ¼ÑΓ¿¼,
  2587. τΓ« ñ¿αÑ¬Γ¿óá %PAGESIZE ¡Ñ »«ßδ½áÑΓ ¡á  »α¿¡ΓÑα  ¬«¼á¡ñδ  ºáñá¡¿∩
  2588. αẼÑαá  ßΓαá¡¿µδ,  »«φΓ«¼π »ÑαÑñ »ÑτáΓ∞ε ½¿ßΓ¿¡úá óδ ñ«½ª¡δ ßἿ
  2589. πßΓá¡«ó¿Γ∞  »áαá¼ÑΓαδ  »α¿¡ΓÑαá,  ºáΓѼ  ¿ß»«½∞º«óáΓ∞   ñ¿αÑ¬Γ¿óπ
  2590. %PAGESIZE ñ½∩ úÑ¡Ñαᵿ¿ Æπαí« ÇßßѼí½Ñα«¼ ßΓαá¡¿µ, αẼÑα ¬«Γ«αδσ
  2591. ß«ó»áñáÑΓ ß ΓѼ¿ αẼÑαἿ, ¬«Γ«αδÑ óδ πßΓᡫ󿽿 ¡á »α¿¡ΓÑαÑ.
  2592.  
  2593.  
  2594.  
  2595.  
  2596. ä¿αÑ¬Γ¿óδ ºáñá¡¿∩ αẼÑαá »«½Ñ⌐
  2597. -----------------------------------------------------------------
  2598.  
  2599.      ÉẼÑα«¼ »∩Γ¿ »«½Ñ⌐ αáßΦ¿αÑ¡¡«ú« ½¿ßΓ¿¡úá ¿ßσ«ñ¡«ú« ¬«ñá π»-
  2600. αáó½∩εΓ »∩Γ∞ ñ¿αÑ¬Γ¿ó. Å«½¡δ⌐ Σ«α¼áΓ ßΓ᫬¿ ñá¡¡«⌐ τáßΓ¿ ½¿ßΓ¿¡úá
  2601. ¿¼ÑÑΓ ó¿ñ:
  2602.  
  2603. <ú½πí¿¡á> <¡«¼Ñα_ßΓ᫬¿> <ß¼ÑΘÑ¡¿Ñ> <¼áΦ¿¡¡δ⌐_¬«ñ> <¿ßσ«ñ¡δ⌐_¬«ñ>
  2604.  
  2605.      ùÑΓδαÑ ¿º φΓ¿σ »«½Ñ⌐ ¼δ «»¿ßδó὿ αá¡ÑÑ,  »∩Γδ¼  »«½Ñ¼ ∩ó½∩-
  2606. ÑΓß∩ »«½Ñ "ú½πí¿¡á", ¬«Γ«α«Ñ π¬áºδóáÑΓ, ¬á¬«óá ñ½∩ ΓѬπΘÑ⌐ ßΓ᫬¿
  2607. ú½πí¿¡á ó½«ªÑ¡¡«ßΓ¿ ¼á¬α«¬«¼á¡ñ ¿½¿ ó¬½ετáѼδσ Σá⌐½«ó.  ìá»α¿¼Ñα,
  2608. Ñß½¿ ñá¡¡á∩ ßΓ᫬á úÑ¡Ñα¿απÑΓß∩ ¼á¬α«¬«¼á¡ñ«⌐, ¬«Γ«αá∩ ßá¼á óδºδ-
  2609. óáÑΓß∩ ¿º ñαπú«⌐ ¼á¬α«¬«¼á¡ñδ, Γ« »«½Ñ "ú½πí¿¡á" íπñÑΓ ¿¼ÑΓ∞ º¡á-
  2610. τÑ¡¿Ñ 2.
  2611.  
  2612.      ÉẼÑα ó ß¿¼ó«½áσ »«½∩ "ú½πí¿¡á"  ºáñáÑΓ  ñ¿αÑ¬Γ¿óá  %DEPTH.
  2613. ä¿αÑ¬Γ¿óá  %LINUM  ºáñáÑΓ ñ½¿¡π ó  ß¿¼ó«½áσ  »«½∩ "¡«¼Ñα_ßΓ᫬¿".
  2614. ä¿αÑ¬Γ¿óá %PCNT «»αÑñѽ∩ÑΓ αẼÑα »«½∩ "ß¼ÑΘÑ¡¿Ñ". ä¿αÑ¬Γ¿óá %BIN
  2615. «»αÑñѽ∩ÑΓ óѽ¿τ¿¡π »«½∩ "¼áΦ¿¡¡δ⌐_¬«ñ". ìᬫ¡Ñµ, ñ¿αÑ¬Γ¿óá %TEXT
  2616. ºáñáÑΓ ñ½¿¡π »«½∩ ¬«¼¼Ñ¡Γáα¿∩.
  2617.  
  2618.                     ä¿αÑ¬Γ¿óδ %PUSHLCTL ¿ %POPLCTL
  2619. -----------------------------------------------------------------
  2620.  
  2621.      ê¡«úñá óá¼, ó«º¼«ª¡«, »«ΓαÑíπÑΓß∩ ¿º¼Ñ¡¿Γ∞ ¡á óαѼ∩  ΓѬπΘÑÑ
  2622. ß«ßΓ«∩¡¿Ñ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼, á ºáΓѼ ó«ßßΓá¡«ó¿Γ∞ Ñú«. é«º¼«ª-
  2623. ¡«, τΓ«íδ ó¬½ετ¿Γ∞ ó ½¿ßΓ¿¡ú ¬áªñδ⌐ íá⌐Γ Γáí½¿µδ ñá¡¡δσ, óá¼ »«Γ-
  2624. αÑíπÑΓß∩  αáºαÑΦ¿Γ∞  »ÑαÑ¡«ß  ¡á ñαπúπε ßΓα«¬π ¿ ¿º¼Ñ¡¿Γ∞ αẼÑαδ
  2625. »«½Ñ⌐, ¿½¿ ªÑ óδ ºáσ«Γ¿ΓÑ ó µÑ½∩σ «Γ½áñ¬¿ αáºαÑΦ¿Γ∞  ó¬½ετÑ¡¿Ñ  ó
  2626. ½¿ßΓ¿¡ú  óßÑσ  Γ¿»«ó ßΓ᫬. Å«ß½Ñ Γ«ú«, ¬á¬ óδ ¿º¼Ñ¡¿ΓÑ ß«ßΓ«∩¡¿Ñ
  2627. π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼, í佫 íδ  «τÑ¡∞  ¡Ñ»½«σ«  ¿¼ÑΓ∞  ó«º¼«ª¡«ßΓ∞
  2628. ßαáºπ  ó«ßßΓá¡«ó¿Γ∞ π»αáó½∩εΘ¿Ñ »áαá¼ÑΓαδ ó ¿σ «»αÑñѽѡ¡δÑ αá¡ÑÑ
  2629. º¡áτÑ¡¿∩, «ß«íÑ¡¡«, Ñß½¿ φΓ¿ º¡áτÑ¡¿∩ ºáñáεΓß∩ ó« ó¬½ετáѼ«¼ Σá⌐-
  2630. ½Ñ ¿½¿ ó ¬á¬«⌐-¡¿íπñ∞ ñá½∞¡Ñ⌐ τáßΓ¿ ¿ßσ«ñ¡«ú« ¼«ñπ½∩.
  2631.  
  2632.      ä½∩ π»αáó½Ñ¡¿∩ Γᬫ⌐ ß¿ΓπᵿÑ⌐ ó Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«Γ-
  2633. αÑ¡δ  ñ¿αÑ¬Γ¿óδ %PUSHLCTL ¿ %POPLCTL. ä¿αÑ¬Γ¿óá %PUSHLCTL ºá¡«ß¿Γ
  2634. ΓѬπΘÑÑ ß«ßΓ«∩¡¿Ñ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼ ó« ó¡πΓαÑ¡¡¿⌐ ßΓѬ, á  ñ¿-
  2635. αÑ¬Γ¿óá %POPLCTL ¿ºó½Ñ¬áÑΓ Ñú« ¿º ßΓѬá («íÑ ñ¿αÑ¬Γ¿óδ ¿¼ÑεΓ ¼á¬-
  2636. ß¿¼π¼ 16 πα«ó¡Ñ⌐). ¥Γ¿ ñ¿αÑ¬Γ¿óδ Γ«½∞¬« ß«σαá¡∩εΓ ¿  ó«ßßΓá¡áó½¿-
  2637. óáεΓ  ß«ßΓ«∩¡¿Ñ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼, ¬«Γ«αδ⌐ ¼«ªÑΓ íδΓ∞ αáºαÑΦÑ¡
  2638. ¿½¿ ºá»αÑΘÑ¡ (á¡á½«ú¿τ¡« ñ¿αÑ¬Γ¿óá¼ %TRUNC ¿ %NOTRUNC), ¿ ¡Ñ ΓαÑ-
  2639. íπεΓ  τ¿ß½«óδσ  áαúπ¼Ñ¡Γ«ó.  ìá»α¿¼Ñα,  ó ß½ÑñπεΘѼ ¿ßσ«ñ¡«¼ ¬«ñÑ
  2640. ß«ßΓ«∩¡¿Ñ  π»αáó½Ñ¡¿∩  ½¿ßΓ¿¡ú«¼   »«ß½Ñ   óδ»«½¡Ñ¡¿∩   ñ¿αÑ¬Γ¿óδ
  2641. %POPLCTL Γ« ªÑ, τΓ« ¿ »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ ñ¿αÑ¬Γ¿óδ %PUCHLCTL:
  2642.  
  2643.             .
  2644.             .
  2645.             .
  2646.             %LIST
  2647.             %TRUNC
  2648.             %PUSHLCTL
  2649.             %NOLIST
  2650.             %NOTRUNC
  2651.             %NEWPAGE
  2652.             .
  2653.             .
  2654.             .
  2655.             %POPLCTL
  2656.             .
  2657.             .
  2658.             .
  2659.  
  2660.  
  2661. äαπú¿Ñ ñ¿αÑ¬Γ¿óδ π»αáó½Ñ¡¿∩ ½¿ßΓ¿¡ú«¼
  2662. -----------------------------------------------------------------
  2663.  
  2664.      ùΓ«íδ «íÑß»Ñτ¿Γ∞ ß«ó¼ÑßΓ¿¼«ßΓ∞  ß  ñαπú¿¼¿  áßßѼí½ÑαἿ,  ó
  2665. Æπαí«  ÇßßѼí½ÑαÑ »αÑñπß¼«ΓαÑ¡δ ¡Ñ¬«Γ«αδÑ ñαπú¿Ñ ñ¿αÑ¬Γ¿óδ π»αáó-
  2666. ½Ñ¡¿∩ ½¿ßΓ¿¡úἿ. Ä¡¿ ó¬½ετáεΓ ó ßÑí∩ ñ¿αÑ¬Γ¿óδ  TITLT,  SUBTTTL,
  2667. PAGE,  .LST,  .XLST,  .LFCOND,  .SFCOND,  .TFCOND, .LALL, .SALL ¿
  2668. .XALL. (Å«ñα«í¡«Ñ «»¿ßá¡¿Ñ ñá¡¡δσ ñ¿αÑ¬Γ¿ó »α¿óÑñÑ¡«  ó  â½áóÑ  2
  2669. "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá").
  2670.  
  2671.  
  2672.  
  2673.                éδó«ñ ß««íΘÑ¡¿∩ ó« óαѼ∩ áßßÑ¼í½¿α«óá¡¿∩
  2674. -----------------------------------------------------------------
  2675.  
  2676.      é Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«ΓαÑ¡δ ñóÑ ñ¿αÑ¬Γ¿óδ,  »«ºó«½∩εΘ¿Ñ
  2677. óδó«ñ¿Γ∞  ßΓ᫬π ¡á φ¬αá¡ ñ¿ß»½Ñ∩ ó« óαѼ∩ áßßÑ¼í½¿α«óá¡¿∩ (Γαá¡-
  2678. ß½∩µ¿¿). ¥Γ¿ ñ¿αÑ¬Γ¿óδ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ óδó«ñá ¿¡Σ«α¼áµ¿¿ «
  2679. σ«ñÑ  áßßÑ¼í½¿α«óá¡¿∩,  τΓ«íδ  óδ  ¼«ú½¿  «»αÑñѽ¿Γ∞, ¬á¬á∩ τáßΓ∞
  2680. »α«úαá¼¼δ πªÑ «ΓΓαá¡ß½¿α«óá¡á ¿½¿ « Γ«¼, τΓ« ÇßßѼí½Ñα ñ«ßΓ¿ú «»-
  2681. αÑñѽѡ¡«⌐ τáßΓ¿ ¿ßσ«ñ¡«ú« ¬«ñá.
  2682.  
  2683.      ä¿αÑ¬Γ¿óá DISPLAY óδó«ñ¿Γ ºá¬½ετÑ¡¡πε ó  ¬áóδτ¬¿  ßΓα«¬π  ¡á
  2684. φ¬αá¡.  ä¿αÑ¬Γ¿óá  %OUT óδó«ñ¿Γ ¡á φ¬αá¡ ßΓ᫬π, ¡Ñ ºá¬½ετÑ¡¡πε ó
  2685. ¬áóδτ¬¿. ìá»α¿¼Ñα, ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ ß½ÑñπεΘ¿σ ñ¿αÑ¬Γ¿ó:
  2686.  
  2687.             .
  2688.             .
  2689.             .
  2690.             DISPLAY  'éδóÑñÑ¡« »« ñ¿αÑ¬Γ¿óÑ DISPLAY'
  2691.             %OUT      éδóÑñÑ¡« »« ñ¿αÑ¬Γ¿óÑ OUT
  2692.             .
  2693.             .
  2694.             .
  2695.  
  2696. ¡á φ¬αá¡ óδóÑñπΓß∩ ß««íΘÑ¡¿∩:
  2697.  
  2698.             éδóÑñÑ¡« »« ñ¿αÑ¬Γ¿óÑ DISPLAY
  2699.             éδóÑñÑ¡« »« ñ¿αÑ¬Γ¿óÑ OUT
  2700.  
  2701.                 ôß½«ó¡«Ñ áßßÑ¼í½¿α«óá¡¿Ñ ¿ßσ«ñ¡«ú« ¬«ñá
  2702. -----------------------------------------------------------------
  2703.  
  2704.      ìáßΓá¡ÑΓ ¼«¼Ñ¡Γ, ¬«úñá óδ »«⌐¼ÑΓÑ,  τΓ«  ταѺóδτá⌐¡«  πñ«í¡«
  2705. ¿¼ÑΓ∞ «ñ¿¡ ¿ßσ«ñ¡δ⌐ ¼«ñπ½∞ ¡á ÇßßѼí½ÑαÑ, ó αѺπ½∞ΓáΓÑ Γαá¡ß½∩µ¿¿
  2706. ¬«Γ«α«ú« »«½πτáÑΓß∩ ¡Ñ߬«½∞¬« αẽ¿τ¡δσ óÑαß¿⌐ »α«úαá¼¼δ.  ìá»α¿-
  2707. ¼Ñα, ñ½∩ «ñ¡«⌐ »α«úαá¼¼δ ¿¡«úñᠪѽáΓѽ∞¡« ¿¼ÑΓ∞ ñóÑ óÑαß¿¿, «ñ¡á
  2708. ¿º ¬«Γ«αδσ ¿ß»«½∞ºπÑΓ ßΓá¡ñáαΓ¡δÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá  8086,  á
  2709. ñαπúá∩ - αáßΦ¿αÑ¡¡δ⌐ ¡áí«α ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«α«ó 80186  (80286).
  2710. (è«¡Ñτ¡«,  ó φΓ«¼ ß½πτáÑ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñóá  ¿ßσ«ñ¡δσ  ¼«ñπ½∩
  2711. (ñ½∩ ¬áªñ«⌐ óÑαß¿¿ ßó«⌐),  ¡« ó¡«ß¿Γ∞ ó ¡¿σ, ¡á»α¿¼Ñα, ¿º¼Ñ¡Ñ¡¿∩,
  2712. ó φΓ«¼ ß½πτáÑ í佫 íδ «τÑ¡∞ ¡Ñπñ«í¡«).
  2713.  
  2714.      Æπαí« ÇßßѼí½Ñα »αÑñ«ßΓáó½∩ÑΓ óá¼ Γá¬πε ó«º¼«ª¡«ßΓ∞ (¿  ñáªÑ
  2715. í«½ÑÑ). Éáßß¼«Γα¿¼, ¡á»α¿¼Ñα, ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
  2716.  
  2717.             .
  2718.             .
  2719.             .
  2720.    IF      IS8086
  2721.             mov   ax,3dah
  2722.             push  ax
  2723.    ELSE
  2724.             push  3dah
  2725.    ENDIF
  2726.             call  GetAdapterStatus
  2727.             .
  2728.             .
  2729.             .
  2730.  
  2731.      àß½¿ º¡áτÑ¡¿Ñ ¼ÑΓ¬¿ IS8086 íπñÑΓ ¡Ñ¡π½Ñóδ¼, Γ« º¡áτÑ¡¿Ñ  »á-
  2732. αá¼ÑΓαá  3dah  ºá¡«ß¿Γß∩  ó  ßΓѬ »«φΓỡ« (ºá ñóá Φáúá), ¬á¬ φΓ«
  2733. ΓαÑíπÑΓß∩ ó »α«µÑßß«αÑ 8086. àß½¿ ªÑ, «ñ¡á¬«, IS8086 ¿¼ÑÑΓ  ¡π½Ñ-
  2734. ó«Ñ  º¡áτÑ¡¿Ñ, Γ« º¡áτÑ¡¿Ñ »áαá¼ÑΓαᠺᡫ߿Γß∩ ó ßΓѬ ¡Ñ»«ßαÑñßΓ-
  2735. óÑ¡¡«, ß »«¼«Θ∞ε ß»Ñµ¿á½∞¡«⌐ Σ«α¼δ ¿¡ßΓαπ¬µ¿¿ PUSH, ¬«Γ«απε ¼«ª¡«
  2736. ¿ß»«½∞º«óáΓ∞ »α¿ αáí«ΓÑ ¡á »α«µÑßß«αáσ 80186 ¿  80286  (¡«  ¡Ñ  ó
  2737. »α«µÑßß«αÑ 8086).
  2738.  
  2739.      Æπαí« ÇßßѼí½Ñα »«ññÑনóáÑΓ  ¼¡«ªÑßΓó«  ñ¿αÑ¬Γ¿ó  πß½«ó¡«ú«
  2740. áßßÑ¼í½¿α«óá¡¿∩,  á ΓᬪѠñáÑΓ óἠ󫺼«ª¡«ßΓ∞ ¡Ñ߬«½∞¬¿¼¿ ß»«ß«-
  2741. íἿ úÑ¡Ñα¿α«óáΓ∞ «Φ¿í¬¿ áßßÑ¼í½¿α«óá¡¿∩. äáóá⌐ΓÑ αáßß¼«Γα¿¼ ß¡á-
  2742. τá½á ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩.
  2743.  
  2744.  
  2745. ä¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩
  2746. -----------------------------------------------------------------
  2747.  
  2748.      Åα«ßΓÑ⌐Φ¿¼¿ ¿ ßá¼δ¼¿ »«½Ñº¡δ¼¿ ñ¿αÑ¬Γ¿óἿ πß½«ó¡«ú« áßßѼí-
  2749. ½¿α«óá¡¿∩ ∩ó½∩εΓß∩ ñ¿αÑ¬Γ¿óδ  IF ¿  ENDIF,  ¬«Γ«αδÑ  ¿ß»«½∞ºπεΓß∩
  2750. ß«ó¼ÑßΓ¡« ß ñ¿αÑ¬Γ¿óἿ ENDIF ¿ (¡Ñ«í∩ºáΓѽ∞¡«) ELSE. ùáßΓ« ΓᬪÑ
  2751. ¿ß»«½∞ºπεΓß∩  ñ¿αÑ¬Γ¿óδ IFDEF ¿ IFNDEF, á ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áß-
  2752. ßÑ¼í½¿α«óá¡¿∩ IFB, IFNB, IFIDN, IFDIF, IF1 ¿ IF2 »«½Ñº¡δ Γ«½∞¬« ó
  2753. «Γñѽ∞¡δσ ß½πτá∩σ.
  2754.  
  2755.  
  2756.  
  2757.                           ä¿αÑ¬Γ¿óδ IF ¿ IFE
  2758. -----------------------------------------------------------------
  2759.  
  2760.      ä¿αÑ¬Γ¿óá πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩ IF »α¿ó«ñ¿Γ ¬ Γ«¼π,  τΓ«
  2761. »«ß½ÑñπεΘ¿⌐  í½«¬  ¿ßσ«ñ¡«ú«  ¬«ñá  (ñ« ß««ΓóÑΓßΓóπεΘÑ⌐ ñ¿αÑ¬Γ¿óδ
  2762. ELSE ¿½¿ ENDIF) íπñÑΓ áßßÑ¼í½¿α«óáΓ∞ß∩ Γ«½∞¬« ó Γ«¼ ß½πτáÑ,  Ñß½¿
  2763. º¡áτÑ¡¿Ñ «»Ñαá¡ñá íπñÑΓ ¡Ñ¡π½Ñóδ¼. Ä»Ñαá¡ñ ¼«ªÑΓ »αÑñßΓáó½∩Γ∞ ß«-
  2764. í«⌐ ¬«¡ßΓá¡Γπ ¿½¿ óδαáªÑ¡¿Ñ, »α¿ óδτ¿ß½Ñ¡¿¿  ¬«Γ«α«ú«  »«½πτáÑΓß∩
  2765. ¬«¡ßΓá¡Γá. ìá»α¿¼Ñα, ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ ñ¿αÑ¬Γ¿ó:
  2766.  
  2767.             .
  2768.             .
  2769.             .
  2770.       IF  REPORT_ASSEMBLY_STATUS
  2771.            DISPLAY 'ÇßßÑ¼í½¿α«óá¡¿Ñ ñ«ßΓ¿ú½« ¬«¡Γα«½∞¡«⌐ Γ«τ¬¿ 1'
  2772.       ENDIF
  2773.             .
  2774.             .
  2775.             .
  2776.  
  2777. ó Γ«¼ ß½πτáÑ, Ñß½¿ REPORT_ASSEMBLY_STATUS  ¿¼ÑÑΓ  »α¿  ñ«ßΓ¿ªÑ¡¿¿
  2778. ñ¿αÑ¬Γ¿óδ IF ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, ¡á φ¬αá¡ óδó«ñ¿Γß∩ ß««íΘÑ¡¿Ñ:
  2779.  
  2780.         ÇßßÑ¼í½¿α«óá¡¿Ñ ñ«ßΓ¿ú½« ¬«¡Γα«½∞¡«⌐ Γ«τ¬¿ 1
  2781.  
  2782.      ôß½«ó¿Ñ IF (Ñß½¿) ¼«ªÑΓ ºáóÑαΦáΓ∞ß∩ ñ¿αÑ¬Γ¿óἿ ENDIF (¬«¡Ñµ
  2783. í½«¬á)  ¿½¿  ELSE (¿¡áτÑ). àß½¿ πß½«ó¿Ñ IF ºáóÑαΦáÑΓß∩ ñ¿αÑ¬Γ¿ó«⌐
  2784. ELSE, Γ« ß½ÑñπεΘ¿⌐ ºá ELSE ¿ßσ«ñ¡δ⌐ ¬«ñ áßßÑ¼í½¿απÑΓß∩  Γ«½∞¬«  ó
  2785. Γ«¼ ß½πτáÑ, Ñß½¿ «»Ñαá¡ñ ß««ΓóÑΓßΓóπεΘÑ⌐  ñ¿αÑ¬Γ¿óδ  IF íδ½ ¡π½Ñ-
  2786. óδ¼. ü½«¬ ¬«ñá, ß½ÑñπεΘÑú« ºá ñ¿αÑ¬Γ¿ó«⌐ ELSE, ñ«½ªÑ¡ ºáóÑαΦáΓ∞ß∩
  2787. ñ¿αÑ¬Γ¿ó«⌐ ENDIF. ôß½«ó¿∩  IF  ¼«úπΓ íδΓ∞ ó½«ªÑ¡¡δ¼¿, ¡á»α¿¼Ñα, ó
  2788. »α«úαá¼¼Ñ:
  2789.  
  2790.             .
  2791.             .
  2792.             .
  2793.  ; Åα«óÑα¿Γ∞, ¡πª¡« ½¿ «»αÑñѽ∩Γ∞ ¼áßß¿óδ (ó »α«Γ¿ó¡«¼ ß½πτáÑ
  2794.  ; «¡¿ αáß»αÑñѽ∩εΓß∩ ñ¿¡á¼¿τÑ߬¿).
  2795.       IF DEFINE_ARRAY
  2796.  ; ôíÑñ¿Γ∞ß∩, τΓ« ¼áßß¿ó ¡Ñ ß½¿Φ¬«¼ ñ½¿¡¡δ⌐
  2797.       IF (ARRAY_LENGTH GT MAX_ARRAY_LENGTH)
  2798.         ARRAY_LENGTH     =   MAX_ARRAY_LENGTH
  2799.       ENDIF
  2800.  ; àß½¿ φΓ« π¬áºá¡«, πßΓá¡«ó¿Γ∞ ¼áßß¿ó ó ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ
  2801.         IF INITIALIZE_ARRAY
  2802.          Array    DB  ARRAY_LENGTH  DUP (?)
  2803.         ENDIF
  2804.       ENDIF
  2805.             .
  2806.             .
  2807.             .
  2808.  
  2809. ñ¿αÑ¬Γ¿óδ IF ¿ IF...ELSE ó½«ªÑ¡δ ó¡πΓα¿ ñαπú«ú« í½«¬á IF.
  2810.  
  2811.      ä¿αÑ¬Γ¿óá IFE á¡á½«ú¿τ¡á ñ¿αÑ¬Γ¿óÑ IF,  ¡«  »«ß½ÑñπεΘ¿⌐  ¬«ñ
  2812. áßßÑ¼í½¿απÑΓß∩  ó  Γ«¼  ß½πτáÑ, Ñß½¿ «»Ñαá¡ñ ¡π½Ñó«⌐. é ß½ÑñπεΘѼ
  2813. »α¿¼ÑαÑ ¿ßσ«ñ¡δ⌐ ¬«ñ »«ß½Ñ ñ¿αÑ¬Γ¿óδ IFE áßßÑ¼í½¿απÑΓß∩ óßÑúñá:
  2814.  
  2815.             .
  2816.             .
  2817.             .
  2818.         IF  0
  2819.             .
  2820.             .
  2821.             .
  2822.         ENDIF
  2823.             .
  2824.             .
  2825.             .
  2826.  
  2827.      èᬠ¿ ñ¿αÑ¬Γ¿óá IF, ñ¿αÑ¬Γ¿óá IFE ¼«ªÑΓ ¿¼ÑΓ∞  ß««ΓóÑΓßΓóπε-
  2828. Θπε ñ¿αÑ¬Γ¿óπ ELSE.
  2829.  
  2830.      ìÑ«íσ«ñ¿¼« »«¡¿¼áΓ∞, τΓ« ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩
  2831. αáí«ΓáεΓ  Γ«½∞¬« ó« óαѼ∩ áßßÑ¼í½¿α«óá¡¿∩, á ¡Ñ ó« óαѼ∩ óδ»«½¡Ñ-
  2832. ¡¿∩ »α«úαá¼¼δ. ¥Γ« ¡Ñ Γ« ªÑ ßἫÑ, τΓ« «»ÑαáΓ«αδ ó ∩ºδ¬Ñ  æ¿, óδ-
  2833. »«½¡∩εΘ¿Ñ  αẽ¿τ¡δ⌐ ¬«ñ ó ºáó¿ß¿¼«ßΓ¿ «Γ αẽ¿τ¡δσ πß½«ó¿⌐ φΓá»á
  2834. óδ»«½¡Ñ¡¿∩.  ä¿αÑ¬Γ¿óδ  πß½«ó¡«ú«  áßßÑ¼í½¿α«óá¡¿∩   «íÑß»Ñτ¿óáεΓ
  2835. Γαá¡ß½∩µ¿ε αẽ¿τ¡«ú« ¬«ñá ó ºáó¿ß¿¼«ßΓ¿ «Γ πß½«ó¿⌐ áßßÑ¼í½¿α«óá-
  2836. ¡¿∩.
  2837.  
  2838.  
  2839.  
  2840.                        ä¿αÑ¬Γ¿óδ IFDEF ¿ IFNDEF
  2841. -----------------------------------------------------------------
  2842.  
  2843.      ä¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩ IFDEF ¿ IFNDEF - φΓ« óáΦ
  2844. «ß¡«ó¡«⌐  ¿¡ßΓαπ¼Ñ¡Γ ñ½∩ »«ßΓα«Ñ¡¿∩ »α«úαá¼¼, »α¿ áßßÑ¼í½¿α«óá¡¿¿
  2845. ¬«Γ«αδσ »«½πτáÑΓß∩ ¡Ñ߬«½∞¬« óÑαß¿⌐. ä¿αÑ¬Γ¿óδ IFDEF ¿  IFNDEF  ó
  2846. φΓ«¼ ß½πτáÑ ταѺóδτá⌐¡« »«½Ñº¡δ.
  2847.  
  2848.      ü½«¬ ¿ßσ«ñ¡«ú« ¬«ñá, ºá¬½ετÑ¡¡δ⌐ ¼Ñªñπ  ñ¿αÑ¬Γ¿ó«⌐  IFDEF  ¿
  2849. ß««ΓóÑΓßΓóπεΘÑ⌐  Ñ⌐ ñ¿αÑ¬Γ¿ó«⌐ ENDIF, áßßÑ¼í½¿απÑΓß∩ Γ«½∞¬« ó Γ«¼
  2850. ß½πτáÑ, Ñß½¿ ¼ÑΓ¬á, ∩ó½∩εΘá∩ß∩ «»Ñαá¡ñ«¼ ñ¿αÑ¬Γ¿óδ IFDEF, ßπΘÑßΓ-
  2851. óπÑΓ  (ñαπú¿¼¿ ß½«óἿ, Ñß½¿ »α¿ óδ»«½¡Ñ¡¿¿ ñ¿αÑ¬Γ¿óδ IFDEF ¼ÑΓ¬á
  2852. πªÑ «»αÑñѽѡá). ìá»α¿¼Ñα, »α¿ Γαá¡ß½∩µ¿¿ ¿ßσ«ñ¡«ú« ¬«ñá:
  2853.  
  2854.             .
  2855.             .
  2856.             .
  2857.   DEFINED_LABEL  EQU  0
  2858.             .
  2859.             .
  2860.             .
  2861.   IFDEF DEFINED_LABEL
  2862.             DB   0
  2863.   ENDIF
  2864.             .
  2865.             .
  2866.             .
  2867.  
  2868. íπñÑΓ áßßÑ¼í½¿α«óáΓ∞ß∩ ñ¿αÑ¬Γ¿óá DB. àß½¿ ªÑ óδ πñ὿ΓÑ ñ¿αÑ¬Γ¿óπ
  2869. EQU,  ¬«Γ«αá∩ πßΓá¡áó½¿óáÑΓ º¡áτÑ¡¿Ñ ñ½∩ DEFINED_LABEL (¿ ó »αÑñ-
  2870. »«½«ªÑ¡¿¿, τΓ« φΓá ¼ÑΓ¬á ¡¿úñÑ í«½∞ΦÑ ó »α«úαἼѠ¡Ñ  «»αÑñѽ∩ÑΓ-
  2871. ß∩), Γ« ñ¿αÑ¬Γ¿óá DB áßßÑ¼í½¿α«óáΓ∞ß∩ ¡Ñ íπñÑΓ. çá¼ÑΓ¿¼, τΓ« º¡á-
  2872. τÑ¡¿Ñ ¼ÑΓ¬¿ DEFINED_LABEL ñ½∩ ñ¿αÑ¬Γ¿óδ IFDEF ¡Ñ ó᪡«.
  2873.  
  2874.      äÑ⌐ßΓó¿Ñ ñ¿αÑ¬Γ¿óδ IFNDEF «íαáΓ¡« ñÑ⌐ßΓó¿ε ñ¿αÑ¬Γ¿óδ  IFDEF.
  2875. æ««ΓóÑΓßΓóπεΘ¿⌐  ¬«ñ áßßÑ¼í½¿απÑΓß∩ Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ ∩ó-
  2876. ½∩εΘá∩ß∩ «»Ñαá¡ñ«¼ ¼ÑΓ¬á ¡Ñ «»αÑñѽѡá.
  2877.  
  2878.      ô óáß ¼«ªÑΓ ó«º¡¿¬¡πΓ∞ ó«»α«ß, ñ½∩ τÑú« ¿ß»«½∞ºπεΓß∩  ñ¿αѬ-
  2879. Γ¿óδ  IFDEF  ¿ IFNDEF? Äñ¡¿¼ ¿º »α¿¼Ñ¡Ñ¡¿⌐ ∩ó½∩ÑΓß∩ »αÑñ«σαá¡Ñ¡¿Ñ
  2880. «Γ »«óΓ«α¡«ú« «»αÑñѽѡ¿∩ ¼ÑΓ¬¿ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EQU ó ß½«ª¡«⌐
  2881. »α«úαá¼¼Ñ:  Ñß½¿  ¼ÑΓ¬á πªÑ «»αÑñѽѡá, Γ« τΓ«íδ ¿ºíѪáΓ∞ ÑÑ »«ó-
  2882. Γ«α¡«ú« «»αÑñѽѡ¿∩ (τΓ« ó맮óÑΓ «Φ¿í¬π), óδ ¼«ªÑΓÑ  ¿ß»«½∞º«óáΓ∞
  2883. ñ¿αÑ¬Γ¿óπ  IFDEF. äαπú«Ñ ¿ß»«½∞º«óá¡¿Ñ ñá¡¡«⌐ ñ¿αÑ¬Γ¿óδ - φΓ« óδ-
  2884. í«α óÑαß¿¿ áßßÑ¼í½¿απѼ«⌐ »α«úαá¼¼δ (á¡á½«ú¿τ¡« Γ«¼π, ¬á¬ φΓ« ñÑ-
  2885. ½á½«ß∞  αá¡ÑÑ  ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ IF). é¼ÑßΓ« Γ«ú«, τΓ«íδ »α«óÑ-
  2886. α∩Γ∞, ß¬áªÑ¼, ∩ó½∩ÑΓß∩ ½¿ ¼áßß¿ó  INITIALIZE_ARRAYS  ¡π½Ñóδ¼  ¿½¿
  2887. ¡Ñ¡π½Ñóδ¼, óδ ¼«ªÑΓÑ »α«ßΓ« »α«óÑα¿Γ∞, «»αÑñѽѡ ½¿ «¡ ó««íΘÑ.
  2888.  
  2889.      ôñ«í¡δ⌐ ß»«ß«í óδí«αá óÑαß¿¿ »α«úαá¼¼δ  »αÑñ«ßΓáó½∩ÑΓ  »áαá-
  2890. ¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ Æπαí« ÇßßѼí½Ñαá /D. Åáαá¼ÑΓα /D «»αÑñѽ∩ÑΓ
  2891. ß««ΓóÑΓßΓóπεΘπε ½«¬á½∞¡πε ¼ÑΓ¬π  ¿  (󫺼«ª¡«)  »α¿ßóá¿óáÑΓ  φΓ«⌐
  2892. ¼ÑΓ¬Ñ º¡áτÑ¡¿Ñ. Å«φΓ«¼π óδ, ¡á»α¿¼Ñα, ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ß½Ññπε-
  2893. Θπε ¬«¼á¡ñπ:
  2894.  
  2895.         TASM /dINITIALIZE_ARRAYS=1 test
  2896.  
  2897.      Åα¿  φΓ«¼  »α¿  áßßÑ¼í½¿α«óá¡¿¿  »α«úαá¼¼δ  TEST.ASM   ¼ÑΓ¬á
  2898. INITIALIZE_ARRAYS íπñÑΓ πßΓá¡«ó½Ñ¡á ó º¡áτÑ¡¿Ñ 1.
  2899.  
  2900.      ò«Γ∩ φΓ« «»αÑñѽѡ¡« »«½Ñº¡«, ºñÑß∞ ¼«úπΓ ó«º¡¿¬¡πΓ∞ αẽ¿τ-
  2901. ¡δÑ  »α«í½Ñ¼δ.  ùΓ« íπñÑΓ ó Γ«¼ ß½πτáÑ, Ñß½¿ óδ íπñÑΓÑ »«½áúáΓ∞ß∩
  2902. ¡á «»αÑñѽѡ¿Ñ INITIALIZE_ARRAYS ó ¬«¼á¡ñ¡«⌐ ßΓ᫬Ñ, ¡«  ºáíπñÑΓÑ
  2903. π¬áºáΓ∞  ß««ΓóÑΓßΓóπεΘ¿⌐  »áαá¼ÑΓα  /D? ÅαÑñ»«½«ª¿¼ ΓᬪÑ, τΓ« óδ
  2904. σ«Γ¿ΓÑ ¿¡¿µ¿á½¿º¿α«óáΓ∞ ¼áßß¿óδ ó «ß«í«¼ ß½πτáÑ  ¿  ¡Ñ  σ«Γ¿ΓÑ  ó
  2905. ñαπú¿σ ß½πτá∩σ óó«ñ¿Γ∞ /dINITIALIZE_ARRAYS.
  2906.  
  2907.      é φΓ«¼ ß½πτáÑ óá¼ ¡á óδαπτ¬π »α¿ñÑΓ ñ¿αÑ¬Γ¿óδ IFNDEF. éδ ¼«-
  2908. ªÑΓÑ    ¿ß»«½∞º«óáΓ∞    ÑÑ   ñ½∩   »α«óÑન   Γ«ú«,   τΓ«   ¼ÑΓ¬á
  2909. INITIALIZE_ARRAYS πªÑ «»αÑñѽѡá (󠬫¼á¡ñ¡«⌐  ßΓ᫬Ñ),  á  ºáΓѼ
  2910. ¿¡¿µ¿á½¿º¿α«óáΓ∞  ÑÑ Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ ÑÑ º¡áτÑ¡¿Ñ ÑΘÑ ¡Ñ
  2911. ºáñá¡«. Æá¬¿¼ «íαẫ¼, «»αÑñѽѡ¿Ñ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ ¿¼ÑÑΓ »αÑ¿-
  2912. ¼πΘÑßΓó« (ßΓáαΦ¿¡ßΓó«), ¡« Ñß½¿ «»αÑñѽѡ¿Ñ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ ¡Ñ
  2913. ºáñá¡«, Γ« ñ½∩ ¼ÑΓ¬¿ ¿¼ÑÑΓß∩ ß«ßΓ«∩¡¿Ñ, ¿ß»«½∞ºπѼ«Ñ  »«  π¼«½τá-
  2914. ¡¿ε.    Åα¿óÑñѼ    »α¿¼Ñα    »α«úαá¼¼δ,    ó    ¬«Γ«α«⌐   ¼áßß¿ó
  2915. INITIALIZE_ARRAYS «»αÑñѽ∩ÑΓß∩ Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿  «¡  ÑΘÑ
  2916. ¡Ñ «»αÑñѽѡ:
  2917.  
  2918.                .
  2919.                .
  2920.                .
  2921.  IFNDEF   INITIALIZE__ARRAYS
  2922.  INITIALIZE__ARRAYS  EQU  0   ; »« π¼«½τá¡¿ε ¡Ñ ¿¡¿µ¿á½¿º¿απÑΓß∩
  2923.  ENDIF
  2924.                .
  2925.                .
  2926.                .
  2927.  
  2928.      è«úñá óδ Γᬿ¼ «íαẫ¼ ¿ß»«½∞ºπÑΓÑ ñ¿αÑ¬Γ¿óπ IFNDEF ñ½∩  «»-
  2929. αÑñѽѡ¿∩  ¿ñÑ¡Γ¿Σ¿¬áΓ«αá, ¬«Γ«αδ⌐ ÑΘÑ ¡Ñ íδ½ «»αÑñѽѡ, óδ »«½π-
  2930. τ¿ΓÑ »αÑñπ»αѪñáεΘÑÑ ß««íΘÑ¡¿Ñ, »«¬áºδóáεΘÑÑ, τΓ« óδ  ¿ß»«½∞ºπÑΓÑ
  2931. ¬«¡ßΓαπ¬µ¿ε,  ºáó¿ß∩Θπε  «Γ  »α«σ«ñá.  àß½¿ óδ »α«ßΓ« «»αÑñѽ∩ÑΓÑ
  2932. ó¡πΓα¿ πß½«ó¡«ú« í½«¬á IFNDEF  ¿ñÑ¡Γ¿Σ¿¬áΓ«α,  Γ«  φΓ«  ß««íΘÑ¡¿Ñ
  2933. ¼«ª¡«  ¿ú¡«α¿α«óáΓ∞. äá¡¡«Ñ ß««íΘÑ¡¿Ñ óδó«ñ¿Γß∩ »«Γ«¼π, τΓ« Æπαí«
  2934. ÇßßѼí½Ñα ¡Ñ  ¼«ªÑΓ ß««íΘ¿Γ∞ óá¼,  τΓ« óδ ß«í¿αáÑΓÑß∞ »«¼ÑßΓ¿Γ∞ ó
  2935. í½«¬ ñ¿αÑ¬Γ¿óδ ¿½¿ ¿¡ßΓαπ¬µ¿¿.  àß½¿ óδ ñѽáÑΓÑ  ó  í½«¬Ñ  τΓ«-Γ«
  2936. ÑΘÑ, á  ¡Ñ  »α«ßΓ« «»αÑñѽ∩ÑΓÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«α,  Γ« óδ ñ«½ª¡δ ß »«-
  2937. ¼«Θ∞ε »áαá¼ÑΓαá /m αáºαÑΦ¿Γ∞ óδ»«½¡Ñ¡¿Ñ ¡Ñ߬«½∞¬¿σ »α«σ«ñ«ó. àß½¿
  2938. óδ Γ«½∞¬«  «»αÑñѽ∩ÑΓÑ  ¿ñÑ¡Γ¿Σ¿¬áΓ«α,  Γ«  αáºαÑΦÑ¡¿Ñ óδ»«½¡Ñ¡¿∩
  2939. ¡Ñ߬«½∞¬¿σ »α«σ«ñ«ó ¡Ñ »α¿óÑñÑΓ ¬ óδó«ñπ »αÑñπ»αѪñáεΘÑú« ß««íΘÑ-
  2940. ¡¿∩.
  2941.  
  2942.  
  2943.  
  2944.               äαπú¿Ñ ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩
  2945. -----------------------------------------------------------------
  2946.  
  2947.      ä½∩ »α«óÑન »áαá¼ÑΓα«ó, »ÑαÑñáóáѼδσ  ó  ¼á¬α«¬«¼á¡ñδ,  ¿ß-
  2948. »«½∞ºπεΓß∩ ñ¿αÑ¬Γ¿óδ IFB,  IFNB,  IFIDN ¿ IFDIF. (Ä ¼á¬α«¬«¼á¡ñáσ
  2949. αáß߬áºδóáÑΓß∩  ó â½áóÑ 9 "Éáºó¿Γ«Ñ »α«úαá¼¼¿α«óá¡¿Ñ ¡á Æπαí« Çß-
  2950. ßѼí½ÑαÑ").  ä¿αÑ¬Γ¿óá IFB »α¿ó«ñ¿Γ ¬ Γ«¼π,  τΓ«  ß««ΓóÑΓßΓóπεΘ¿⌐
  2951. ¿ßσ«ñ¡δ⌐ ¬«ñ íπñÑΓ áßßÑ¼í½¿α«óá¡ ó Γ«¼ ß½πτáÑ, Ñß½¿ »áαá¼ÑΓα, ∩ó-
  2952. ½∩εΘ¿⌐ß∩ «»Ñαá¡ñ«¼ ñ¿αÑ¬Γ¿óδ,  »πßΓ«⌐ (»α«íѽ). Å« ñ¿αÑ¬Γ¿óÑ IFNB
  2953. ¿ßσ«ñ¡δ⌐  ¬«ñ  íπñÑΓ áßßÑ¼í½¿α«óáΓ∞ß∩,  Ñß½¿ »áαá¼ÑΓα ¡Ñ »πßΓ (¡Ñ
  2954. ∩ó½∩ÑΓß∩ »α«íѽ«¼).  ä¿αÑ¬Γ¿óδ IFNB ¿ IFB - φΓ« ßó«Ñú« α«ñá φ¬ó¿-
  2955. óá½Ñ¡Γ ñ¿αÑ¬Γ¿ó IFNDEF ¿ IFDEF ñ½∩ »áαá¼ÑΓα«ó ¼á¬α«¬«¼á¡ñ.
  2956.  
  2957.      Éáßß¼«Γα¿¼ ó ¬áτÑßΓóÑ »α¿¼Ñαá ß½ÑñπεΘπε  ¼á¬α«¬«¼á¡ñπ  TEST,
  2958. ¬«Γ«αá∩ «»αÑñѽѡá ß½ÑñπεΘ¿¼ «íαẫ¼:
  2959.  
  2960. ;
  2961. ; îá¬α«¬«¼á¡ñá ñ½∩ «»αÑñѽѡ¿∩ íá⌐Γá ¿½¿ ß½«óá
  2962. ;
  2963. ; éó«ñ:
  2964. ;    VALUE = º¡áτÑ¡¿Ñ íá⌐Γá ¿½¿ ß½«óá
  2965. ;    DEFINE_WIRD = 1 ñ½∩ «»αÑñѽѡ¿∩ ß½«óá ¿ 0 ñ½∩ «»αÑñѽѡ¿∩
  2966. ;    íá⌐Γá
  2967. ;
  2968. ; Åα¿¼Ñτá¡¿Ñ: àß½¿ »áαá¼ÑΓα PARM2 ¡Ñ ºáñá¡, Γ« «»αÑñѽ∩ÑΓß∩ íá⌐Γ.
  2969.  
  2970. ;
  2971. TEST MACRO       VALUE, DEFINE_WORD
  2972. IFB  <DEFINE_WORD>
  2973.      DB   VALUE     ; «»αÑñѽ¿Γ∞ íá⌐Γ, Ñß½¿ PARM2 - »α«íѽ, ¿¡áτÑ
  2974.   IF DEFINE_WORD
  2975.      DW   VALUE     ; «»αÑñѽ¿Γ∞ ß½«óá, Ñß½¿ PARM2 ¡Ñ = 0
  2976.   ELSE
  2977.      DB   VALUE     ; «»αÑñѽ¿Γ∞ íá⌐Γ, Ñß½¿ PARM2 = 0
  2978.   ENDIF
  2979. ENDIF
  2980.      ENDM
  2981.  
  2982.      àß½¿ ¼á¬α«¬«¼á¡ñá TEST óδºδóáÑΓß∩ «»ÑαáΓ«α«¼:
  2983.  
  2984.         TEST 19
  2985.  
  2986. Γ« «»αÑñѽ∩ÑΓß∩ íá⌐Γ ß« º¡áτÑ¡¿Ñ¼ 19, á Ñß½¿ ¼á¬α«¬«¼á¡ñá óδºδóá-
  2987. ÑΓß∩ ß »«¼«Θ∞ε «»ÑαáΓ«αá:
  2988.  
  2989.         TEST 19,1
  2990.  
  2991. Γ« «»αÑñѽ∩ÑΓß∩ ß½«ó« ß« º¡áτÑ¡¿Ñ¼ 19.
  2992.  
  2993.      Å« ñ¿αÑ¬Γ¿óÑ IFIDN ß««ΓóÑΓßΓóπεΘ¿⌐ ¿ßσ«ñ¡δ⌐ ¬«ñ íπñÑΓ áßßѼ-
  2994. í½¿α«óáΓ∞ß∩ ó Γ«¼ ß½πτáÑ,  Ñß½¿ ñóá ÑÑ »áαá¼ÑΓαá ß«ó»áñáεΓ,  á »«
  2995. ñ¿αÑ¬Γ¿óÑ IFDIF - Ñß½¿ »áαá¼ÑΓαδ  αẽ¿τ¡δ.  ìá»α¿¼Ñα,  ß½ÑñπεΘá∩
  2996. ¼á¬α«¬«¼á¡ñá,  »αÑ«íαáºπεΘá∩  íá⌐Γ  ß« º¡á¬«¼ ó ß½«ó« ß« º¡á¬«¼ ó
  2997. αÑú¿ßΓαÑ AX,  ¡Ñ ¬«»¿απÑΓ ¿ßσ«ñ¡δ⌐ «»Ñαá¡ñ,  Ñß½¿ «¡ ¡áσ«ñ¿Γß∩  ó
  2998. αÑú¿ßΓαÑ AL:
  2999.  
  3000. ;
  3001. ; îá¬α«¬«¼á¡ñá ñ½∩ »αÑ«íαẫóá¡¿∩ íá⌐Γá ß« º¡á¬«¼ ó 8-í¿Γ«ó«¼
  3002. ; αÑú¿ßΓαÑ ¿½¿ ∩τÑ⌐¬Ñ »á¼∩Γ¿ ó ß½«ó« ß« º¡á¬«¼ ó αÑú¿ßΓαÑ AX.
  3003. ;
  3004. ; éó«ñ:
  3005. ;    SIGNED_BYTE - ¿¼∩ αÑú¿ßΓαá ¿½¿ ∩τÑ⌐¬¿ »á¼∩Γ¿,
  3006. ;                  ó ¬«Γ«α«⌐ ß«ñÑনΓß∩ íá⌐Γ ß« º¡á¬«¼,
  3007. ;                  »αÑ«íαáºπѼδ⌐ ó ß½«ó« ß« º¡á¬«¼.
  3008. ;
  3009. MAKE_SIGNED_WORD   MACRO   SIGNED_BYTE
  3010. IFDIFI   <AL>,<SIGNED_BYTE>        ; πíÑñ¿Γ∞ß∩, τΓ« «»Ñαá¡ñ«¼
  3011.                                    ; ¡Ñ ∩ó½∩ÑΓß∩ αÑú¿ßΓα AL
  3012.          mov   al,SIGNED_BYTE
  3013. ENDIF
  3014.          cwb
  3015.          ENDM
  3016.  
  3017.      é áαúπ¼Ñ¡Γáσ ñ¿αÑ¬Γ¿ó IFDIF ¿  IFIDN  ßΓα«τ¡δÑ  ¿  »α«»¿ß¡δÑ
  3018. íπ¬óδ αẽ¿τáεΓß∩. ùΓ«íδ ¿¡ΓÑα»αÑΓ¿α«óáΓ∞ φΓ¿ íπ¬óδ, ¬á¬ ß«ó»áñá-
  3019. εΘ¿Ñ, ¿¼ÑεΓß∩ ñóÑ  ñαπú¿Ñ  φ¬ó¿óá½Ñ¡Γ¡δÑ  ñ¿αÑ¬Γ¿óδ  -  IFINDI  ¿
  3020. IFDIFI.
  3021.  
  3022.      çá¼ÑΓ¿¼, τΓ« óßÑ «»Ñαá¡ñδ ñ¿αÑ¬Γ¿ó IFB, IFNB, IFIDN ¿  IFDIF
  3023. ΓαÑíπÑΓß∩ ºá¬½ετáΓ∞ ó πú½«óδѠ߬«í¬¿.
  3024.  
  3025.      àß½¿ óδ  ¡Ñ  π¬áºδóáÑΓÑ ñ½∩ αáºαÑΦÑ¡¿∩ óδ»«½¡Ñ¡¿∩ ¡Ñ߬«½∞¬¿σ
  3026. »α«σoñ«ó »áαá¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /m, Γ« πß½«ó¿Ñ IF1 óßÑúñá »α¿-
  3027. ¡¿¼áÑΓ  ¿ßΓ¿¡¡«Ñ º¡áτÑ¡¿Ñ,  á IF2 - ½«ª¡«Ñ (Γᬠ¬á¬ óΓ«α«⌐ »α«σ«ñ
  3028. ¡Ñ óδ»«½¡∩ÑΓß∩). àß½¿ Æπαí« ÇßßѼí½Ñα óßΓαÑτáÑΓ ñ¿αÑ¬Γ¿óπ IF1 ¿½¿
  3029. IF2, Γ« óδó«ñ¿Γß∩ »αÑñπ»αѪñáεΘÑÑ ß««íΘÑ¡¿Ñ:
  3030.  
  3031.      "Pass dependent construction encountered"
  3032.      («í¡áαπªÑ¡á ¬«¡ßΓαπ¬µ¿∩, ºáó¿ß∩Θá∩ «Γ »α«σ«ñá)
  3033.  
  3034.      Eß½¿ óδ ¿ß»«½∞ºπÑΓÑ »áαá¼ÑΓα /m, Γ« Ñß½¿ ó ¼«ñπ½Ñ ß«ñÑαªáΓß∩
  3035. ñ¿αÑ¬Γ¿óδ IF1 ¿½¿ IF2,  áóΓ«¼áΓ¿τÑ߬¿ óδ»«½¡∩ÑΓß∩ ñóá »α«σ«ñá.  é
  3036. φΓ«¼ ß½πτáÑ  ñ¿αÑ¬Γ¿óá  IF1 »α¿¡¿¼áÑΓ ¿ßΓ¿¡¡«Ñ º¡áτÑ¡¿Ñ ¡á »Ñαó«¼
  3037. »α«σ«ñÑ, á IF2 - ¡á óΓ«α«¼. Åα¿ φΓ«¼ ΓᬪѠóδó«ñ¿Γß∩ »αÑñπ»αѪñá-
  3038. εΘÑÑ ß««íΘÑ¡¿Ñ:
  3039.  
  3040.      "Module is pass dependent - compatibility pass was done"
  3041.      (¼«ñπ½∞ ºáó¿ß¿Γ «Γ »α«σ«ñá - óδ»«½¡Ñ¡ »α«σ«ñ  ñ½∩  ß«ó¼ÑßΓ¿-
  3042.       ¼«ßΓ¿)
  3043.  
  3044.  
  3045.  
  3046.                        æÑ¼Ñ⌐ßΓó« ñ¿αÑ¬Γ¿ó ELSEIF
  3047. -----------------------------------------------------------------
  3048.  
  3049.      èáªñá∩ ¿º ñ¿αÑ¬Γ¿ó IF (IF, IFB, IFIDN ¿  Γ.ñ.)  ¿¼ÑÑΓ  ß««Γ-
  3050. óÑΓßΓóπεΘπε  ñ¿αÑ¬Γ¿óπ  ßѼÑ⌐ßΓóá ELSEIF (¡á»α¿¼Ñα, ELSEIF, ELSE-
  3051. IFB, ELSEIFIDN). Ä¡¿ αáí«ΓáεΓ, ¬á¬ ß«τÑΓá¡¿Ñ ñ¿αÑ¬Γ¿óδ ELSE ß «ñ-
  3052. ¡«⌐  ¿º  ñ¿αÑ¬Γ¿ó IF. éδ ¼«ªÑΓÑ ¿σ ¿ß»«½∞º«óáΓ∞, τΓ«íδ «íÑß»Ñτ¿Γ∞
  3053. ½πτΦπε τ¿ΓáѼ«ßΓ∞ ¿ßσ«ñ¡«ú« ¬«ñá, ¬«úñá ΓαÑíπÑΓß∩ »α«óÑα∩Γ∞  ¼¡«-
  3054. ªÑßΓó«  πß½«ó¿⌐  ¿½¿  º¡áτÑ¡¿⌐  ¿ áßßÑ¼í½¿α«óáΓ∞ Γ«½∞¬« «Γñѽ∞¡δ⌐
  3055. í½«¬ ¬«ñá. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
  3056.  
  3057. IF  BUFLENGHT GT 1000
  3058.         CALL  DOBIGBUF  ; í«½∞Φ«⌐ íπΣÑα
  3059. ELSE
  3060.         IF BUFLENGTH GT 100  ; ßαÑñ¡¿⌐ íπΣÑα
  3061.                CALL  MEDIUMBUF
  3062.         ELSE
  3063.                IF BUFLENGTH GT 10  ; ¡Ñí«½∞Φ«⌐ íπΣÑα
  3064.                       CALL  SMALLBUF
  3065.                ELSE
  3066.                       CALL  TINYBUFP  ; ¼á½Ñ¡∞¬¿⌐ íπΣÑα
  3067.                ENDIF
  3068.         ENDIF
  3069. ENDIF
  3070.  
  3071.      ùΓ«íδ π½πτΦ¿Γ∞ τ¿ΓáѼ«ßΓ∞ ¬«ñá, óδ ¼«ªÑΓÑ  ¿ß»«½∞º«óáΓ∞  ñ¿-
  3072. αÑ¬Γ¿óπ ELSEIF:
  3073.  
  3074. IF  BUFLENGHT GT 1000
  3075.         CALL  DOBIGBUF       ; í«½∞Φ«⌐ íπΣÑα
  3076. ELSE
  3077. ELSEIF BUFLENGTH GT 100      ; ßαÑñ¡¿⌐ íπΣÑα
  3078.         CALL  MEDIUMBUF
  3079. ELSEIF BUFLENGTH GT 10       ; ¡Ñí«½∞Φ«⌐ íπΣÑα
  3080.         CALL  SMALLBUF
  3081. ELSE
  3082.         CALL  TINYBUFP       ; ¼á½Ñ¡∞¬¿⌐ íπΣÑα
  3083.         ENDIF
  3084.  
  3085.      ¥Γ« »α¿í½¿º¿Γѽ∞¡« ß««ΓóÑΓßΓóπÑΓ «»ÑαáΓ«αá¼ case ¿½¿  switch
  3086. ó  Åá߬á½Ñ ¿ æ¿. Äñ¡á¬«, Γá¬á∩ ¬«¡ßΓαπ¬µ¿∩ ∩ó½∩ÑΓß∩ ú«αáºñ« í«½ÑÑ
  3087. «íΘÑ⌐, »«ß¬«½∞¬π  ó«  óßѼ í½«¬Ñ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩ óá¼ ¡Ñ
  3088. ΓαÑíπÑΓß∩ ¿ß»«½∞º«óáΓ∞ «ñ¿¡ ¿ Γ«Γ ªÑ ó¿ñ »α«óÑ᫬ ELSEIF.  ä«»πß-
  3089. Γ¿¼«, ¡á»α¿¼Ñα, ß½ÑñπεΘÑÑ:
  3090.  
  3091. PUSHREG  MACRO ARG
  3092.      IFIDN <ARG>,<INDEX>
  3093.            PUSH SI
  3094.            PUSH DI
  3095.      ELSEIFB <ARG>
  3096.            PUSH AX
  3097.      ENDIF
  3098.      ENDM
  3099.  
  3100.  
  3101.  
  3102.             ôß½«ó¡δÑ ñ¿αÑ¬Γ¿óδ óδó«ñá ß««íΘÑ¡¿⌐ «í «Φ¿í¬áσ
  3103. -----------------------------------------------------------------
  3104.  
  3105.      Æπαí« ÇßßѼí½Ñα »«ºó«½∩ÑΓ óá¼ óδ»«½¡∩Γ∞ πß½«ó¡πε (»«  óδ»«½-
  3106. ¡Ñ¡¿ε  ¿½¿  ¡Ñóδ»«½¡Ñ¡¿ε  «»αÑñѽѡ¡«ú« πß½«ó¿∩) úÑ¡Ñαáµ¿ε «Φ¿í«¬
  3107. áßßÑ¼í½¿α«óá¡¿∩. ä½∩ φΓ«ú« ¿ß»«½∞ºπεΓß∩ πß½«ó¡δÑ ñ¿αÑ¬Γ¿óδ óδó«ñá
  3108. ß««íΘÑ¡¿⌐ «í «Φ¿í¬áσ .ERR, .ERR1, ERR2, .ERRDEF, .ERRNDEF, .ERRB,
  3109. .ERRNB, .ERRIDN, .ERRIDNI, .ERRDIFI, .ERRE, .ERRNZ ¿ .ERRDIF. ä½∩
  3110. τÑú« ¡πª¡« »αÑñ¡á¼ÑαÑ¡¡« úÑ¡Ñα¿α«óáΓ∞ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ áßßѼí-
  3111. ½¿α«óá¡¿∩?  ôß½«ó¡δÑ ñ¿αÑ¬Γ¿óδ óδó«ñá ß««íΘÑ¡¿⌐ «í «Φ¿í¬áσ »«ºó«-
  3112. ½∩εΓ óá¼ »ÑαÑσóáΓδóáΓ∞ ó »α«úαá¼¼áσ ¼¡«ªÑßΓó«  «Φ¿í«¬,  ¡á»α¿¼Ñα,
  3113. »α¿ßóá¿óá¡¿Ñ ¼ÑΓ¬á¼ ß½¿Φ¬«¼ í«½∞Φ¿σ ¿½¿ ¼á½δσ º¡áτÑ¡¿⌐, ¿ß»«½∞º«-
  3114. óá¡¿Ñ ¡Ñ«»αÑñѽѡ¡δσ ¼ÑΓ«¬ ¿ »α«»π߬ áαúπ¼Ñ¡Γ«ó ¼á¬α«¬«¼á¡ñ.
  3115.  
  3116.      àß½¿ óú½∩¡πΓ∞ ¡á »ÑαÑτÑ¡∞ πß½«ó¡δσ ñ¿αÑ¬Γ¿ó óδó«ñá ß««íΘÑ¡¿⌐
  3117. «í  «Φ¿í¬áσ, Γ« ¼«ª¡« ºá¼ÑΓ¿Γ∞, τΓ« φΓ¿ ñ¿αÑ¬Γ¿óδ «τÑ¡∞ »«σ«ª¿ ¡á
  3118. ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩. ê φΓ« ¡Ñ ß½πτá⌐¡«Ñ  ß«ó»áñÑ-
  3119. ¡¿Ñ,  »«ß¬«½∞¬π í«½∞Φ¿¡ßΓó« πß½«ó¡δσ ñ¿αÑ¬Γ¿ó óδó«ñá ß««íΘÑ¡¿⌐ «í
  3120. «Φ¿í¬áσ »α«óÑα∩εΓ ΓÑ ªÑ πß½«ó¿∩. ìá»α¿¼Ñα, ñ¿αÑ¬Γ¿óá .ERRNDEF úÑ-
  3121. ¡Ñα¿απÑΓ  «Φ¿í¬π  ó Γ«¼ ß½πτáÑ, Ñß½¿ ¼ÑΓ¬á, ∩ó½∩εΘá∩ß∩ ÑÑ «»Ñαá¡-
  3122. ñ«¼, ¡Ñ «»αÑñѽѡá, ΓᬠªÑ ¬á¬ ñ¿αÑ¬Γ¿óá IFNDEF áßßÑ¼í½¿απÑΓ  ß«-
  3123. «ΓóÑΓßΓóπεΘ¿⌐ ¬«ñ ó Γ«¼ ß½πτáÑ, Ñß½¿ ¼ÑΓ¬á ¡Ñ «»αÑñѽѡá.
  3124.  
  3125.  
  3126.  
  3127.                      ä¿αÑ¬Γ¿óδ .ERR, .ERR1 ¿ .ERR2
  3128. -----------------------------------------------------------------
  3129.  
  3130.      è«úñá Æπαí« ÇßßѼí½Ñα «í¡áαπª¿óáÑΓ ñ¿αÑ¬Γ¿óπ .ERR, Γ«  úÑ¡Ñ-
  3131. α¿απÑΓß∩  «Φ¿í¬á. æá¼« »« ßÑíÑ φΓ« ¡Ñ ∩ó½∩ÑΓß∩ »«½Ñº¡«⌐ Σπ¡¬µ¿Ñ⌐,
  3132. «ñ¡á¬« ñ¿αÑ¬Γ¿óπ .ERR »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ó ß«τÑΓá¡¿¿ ß ñ¿αÑ¬Γ¿-
  3133. ó«⌐ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩.
  3134.  
  3135.      ìá»α¿¼Ñα, »αÑñ»«½«ª¿¼, óδ σ«Γ¿ΓÑ σ«Γ¿ΓÑ ßúÑ¡Ñα¿α«óáΓ∞ «Φ¿í¬π
  3136. ó Γ«¼ ß½πτáÑ, Ñß½¿ ó »α¿ßóá¿óá¡¿¿ ñ½¿¡δ ñ½∩ ñá¡¡«ú« ¼áßß¿óá πßΓá-
  3137. ¡áó½¿óáÑΓß∩ ß½¿Φ¬«¼ í«½∞Φ«Ñ º¡áτÑ¡¿Ñ. ¥Γ« ¼«ª¡« ßñѽáΓ∞ ß½ÑñπεΘ¿¼
  3138. «íαẫ¼:
  3139.  
  3140. IF  (ARRAY_LENGTH GT MAX_ARRAY_LENGTH)
  3141.     .ERR
  3142. ENDIF
  3143.  
  3144.      àß½¿ ¼áßß¿ó ¡Ñ ∩ó½∩ÑΓß∩ ñ«ßΓáΓ«τ¡«  ñ½¿¡¡δ¼  (ñ½¿¡á  ¼áßß¿óá
  3145. ARRAY_LENGTH  ¡Ñ »αÑó«ßσ«ñ¿Γ ¼á¬ß¿¼á½∞¡«ú« º¡áτÑ¡¿∩ ñ½¿¡δ ¼áßß¿óá
  3146. MAX_ARRAY_LENGTH), Γ« Æπαí« ÇßßѼí½Ñα ¡Ñ íπñÑΓ  úÑ¡Ñα¿α«óáΓ∞  ¬«ñ
  3147. ó¡πΓα¿ í½«¬á IF ¿ «Φ¿í¬á úÑ¡Ñα¿α«óáΓ∞ß∩ ¡Ñ íπñÑΓ.
  3148.  
  3149.      ä¿αÑ¬Γ¿óδ .ERR1 ¿ .ERR2 αáí«ΓáεΓ Γ«τ¡« ΓᬪÑ, ¬á¬  ñ¿αÑ¬Γ¿óá
  3150. .ERR,  ¡«  Γ«½∞¬«,  ß««ΓóÑΓßΓóÑ¡¡«,  ¡á »Ñαó«¼ ¿ óΓ«α«¼ »α«σ«ñáσ.
  3151. àß½¿ ñ½∩  αáºαÑΦÑ¡¿∩ óδ»«½¡Ñ¡¿∩ ¡Ñ߬«½∞¬¿σ »α«σ«ñ«ó óδ ¡Ñ ¿ß»«½∞-
  3152. ºπÑΓÑ »áαá¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /m,  Γ« »« ñ¿αÑ¬Γ¿óÑ .ERR1 óßÑúñá
  3153. íπñÑΓ óδó«ñ¿Γ∞ß∩ «Φ¿í¬á, á »« ñ¿αÑ¬Γ¿óÑ .ERR2 - ¡Ñ íπñÑΓ (Γᬠ¬á¬
  3154. óΓ«α«⌐ »α«σ«ñ ¡Ñ óδ»«½¡∩ÑΓß∩). é Γ«¼ ß½πτáÑ, Ñß½¿ Æπαí« ÇßßѼí½Ñα
  3155. «í¡áαπª¿óáÑΓ ó ¼«ñπ½Ñ ñ¿αÑ¬Γ¿óδ .ERR1 ¿½¿ .ERR2, «¡ óδó«ñ¿Γ ß««í-
  3156. ΘÑ¡¿Ñ:
  3157.  
  3158.      "Pass dependent construction encountered"
  3159.      («í¡áαπªÑ¡á ¬«¡ßΓαπ¬µ¿∩, ºáó¿ß¿¼á∩ «Γ »α«σ«ñá)
  3160.  
  3161.      àß½¿ óδ  ¿ß»«½∞ºπÑΓÑ »áαá¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /m,  Γ« ¬«úñá
  3162. óáΦ ¼«ñπ½∞ ß«ñÑαª¿Γ ñ¿αÑ¬Γ¿óπ .ERR1 ¿½¿ .ERR2,  áóΓ«¼áΓ¿τÑ߬¿ óδ-
  3163. »«½¡∩ÑΓß∩ ñóá »α«σ«ñá.  é φΓ«¼ ß½πτáÑ ñ¿αÑ¬Γ¿óá .ERR1 íπñÑΓ óδó«-
  3164. ñ¿Γ∞ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ ¡á »Ñαó«¼ »α«σ«ñÑ,  á ñ¿αÑ¬Γ¿óÑ .ERR2  -
  3165. ¡á óΓ«α«¼ »α«σ«ñÑ.  èα«¼Ñ Γ«ú«, óδó«ñ¿Γß∩ »αÑñπ»αѪñáεΘÑÑ ß««íΘÑ-
  3166. ¡¿Ñ:
  3167.  
  3168.      "Module is pass dependent - compatibility pass was done"
  3169.      (¼«ñπ½∞ ºáó¿ß¿Γ  «Γ  »α«σ«ñá - óδ»«½¡Ñ¡ »α«σ«ñ ñ½∩ ß«ó¼ÑßΓ¿-
  3170.      ¼«ßΓ¿)
  3171.  
  3172.  
  3173.                        ä¿αÑ¬Γ¿óδ .ERRE ¿ .ERRNZ
  3174. -----------------------------------------------------------------
  3175.  
  3176.      ä¿αÑ¬Γ¿óá .ERRE úÑ¡Ñα¿απÑΓ «Φ¿í¬π ó Γ«¼ ß½πτáÑ, Ñß½¿ ÑÑ «»Ñ-
  3177. αá¡ñ,  »α¿ óδτ¿ß½Ñ¡¿¿ ¬«Γ«α«ú« ñ«½ª¡á »«½πτáΓ∞ß∩ ¬«¡ßΓá¡Γá, αáóÑ¡
  3178. ¡π½ε. ä¿αÑ¬Γ¿óá .ERRE φ¬ó¿óá½Ñ¡Γá óδ»«½¡Ñ¡¿ε ñ¿αÑ¬Γ¿óδ .IFE ó ß«-
  3179. τÑΓá¡¿¿ ß ñ¿αÑ¬Γ¿ó«⌐ .ERR. ìá»α¿¼Ñα:
  3180.  
  3181.    .ERRE       TEST_LABEL-1
  3182.  
  3183. φ¬ó¿óá½Ñ¡Γ¡«:
  3184.  
  3185.    IFE     TEST_LEBEL-1
  3186.            .ERRE
  3187.    ENDIF
  3188.  
  3189.      ä¿αÑ¬Γ¿óπ .ERRE ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ óδó«ñá «Φ¿í¬¿  ó  Γ«¼
  3190. ß½πτáÑ,  ¬«úñá ó óδαáªÑ¡¿¿ «Γ¡«ΦÑ¡¿∩ úÑ¡Ñα¿απÑΓß∩ ½«ª¡«Ñ º¡áτÑ¡¿Ñ
  3191. (Γᬠ¬á¬ ½«ª¡«Ñ óδαáªÑ¡¿Ñ αáó¡« 0).
  3192.  
  3193.      Ç¡á½«ú¿τ¡«, ñ¿αÑ¬Γ¿óá .ERRNZ úÑ¡Ñα¿απÑΓ «Φ¿í¬π ó Γ«¼ ß½πτáÑ,
  3194. Ñß½¿  ÑÑ «»Ñαá¡ñ ¡Ñ αáóÑ¡ ¡π½ε. ¥Γ« φ¬ó¿óá½Ñ¡Γ¡« ñ¿αÑ¬Γ¿óÑ IF, ºá
  3195. ¬«Γ«α«⌐ ß½ÑñπÑΓ ñ¿αÑ¬Γ¿óá .ERR. ä¿αÑ¬Γ¿óπ .ERRNZ ¼«ª¡«  ¿ß»«½∞º«-
  3196. óáΓ∞  ñ½∩ óδó«ñá «Φ¿í¬¿ ó Γ«¼ ß½πτáÑ, ¬«úñá ó óδαáªÑ¡¿¿ «Γ¡«ΦÑ¡¿∩
  3197. úÑ¡Ñα¿απÑΓß∩ ¿ßΓ¿¡¡«Ñ º¡áτÑ¡¿Ñ (Γᬠ ¬á¬  ¿ßΓ¿¡¡«Ñ  óδαáªÑ¡¿Ñ  ¡Ñ
  3198. αáó¡« 0). ìá»α¿¼Ñα:
  3199.  
  3200.        .ERRNZ   ARRAY_LENGTH GT MAX_ARRAY_LENGTH
  3201.  
  3202. óδ»«½¡∩ÑΓ Γ« ªÑ ñÑ⌐ßΓó¿Ñ, τΓ« ¿ ñ¿αÑ¬Γ¿óδ IF  ¿  .ERR  ó  »α¿¼ÑαÑ
  3203. »«ß½Ññ¡Ñú« αáºñѽá.
  3204.  
  3205.  
  3206.  
  3207.  
  3208. ä¿αÑ¬Γ¿óδ .ERRDEF ¿ .ERRNDEF
  3209. -----------------------------------------------------------------
  3210.  
  3211.      ä¿αÑ¬Γ¿óá .ERRDEF úÑ¡Ñα¿απÑΓ «Φ¿í¬π ó Γ«¼ ß½πτáÑ, Ñß½¿  ¼ÑΓ-
  3212. ¬á, ∩ó½∩εΘá∩ß∩ ÑÑ «»Ñαá¡ñ«¼, «»αÑñѽѡá, á ñ¿αÑ¬Γ¿óá .ERRNDEF úÑ-
  3213. ¡Ñα¿απÑΓ «Φ¿í¬π ó Γ«¼ ß½πτáÑ, Ñß½¿ ¼ÑΓ¬á-«»Ñαá¡ñ ∩ó½∩ÑΓß∩ ¡Ñ«»αÑ-
  3214. ñѽѡ¡«⌐.  ¥Γ¿ ñ¿αÑ¬Γ¿óδ »«ºó«½∩εΓ ó «ñ¡«⌐ ßΓα«¬Ñ αÑ὿º«óáΓ∞ φ¬-
  3215. ó¿óá½Ñ¡Γ ß«τÑΓá¡¿∩ ñ¿αÑ¬Γ¿ó IFDEF ¿½¿  IFNDEF ¿  ñ¿αÑ¬Γ¿óδ  .ERR.
  3216. ìá»α¿¼Ñα:
  3217.  
  3218.       .ERRNDEF   MAX_PATH_LENGTH
  3219.  
  3220. φ¬ó¿óá½Ñ¡Γ¡«:
  3221.  
  3222.       IFNDEF   MAX_PATH_LENGTH
  3223.         .ERR
  3224.       ENDIF
  3225.  
  3226.  
  3227.  
  3228.         äαπú¿Ñ πß½«ó¡δÑ ñ¿αÑ¬Γ¿óδ úÑ¡Ñαᵿ¿ ß««íΘÑ¡¿∩ «í «Φ¿í¬Ñ
  3229. -----------------------------------------------------------------
  3230.  
  3231.      ùÑΓδαÑ «ßΓáóΦ¿Ñß∩ πß½«ó¡δÑ  ñ¿αÑ¬Γ¿óδ  »αÑñ¡áº¡áτÑ¡δ  Γ«½∞¬«
  3232. ñ½∩  ¿ß»«½∞º«óá¡¿∩  ó  ¼á¬α«¬«¼á¡ñáσ  ¿ ∩ó½∩εΓß∩ ¡Ñ»«ßαÑñßΓóÑ¡¡δ¼
  3233. á¡á½«ú«¼ τÑΓδαÑσ ñ¿αÑ¬Γ¿ó πß½«ó¡«ú«  áßßÑ¼í½¿α«óá¡¿∩,  ¿ß»«½∞ºπε-
  3234. Θ¿σß∩  ó  ¼á¬α«¬«¼á¡ñáσ  ¿  «íßπªñáóΦ¿σß∩  ó  »αÑñδñπΘѼ  αáºñѽÑ
  3235. "äαπú¿Ñ ñ¿αÑ¬Γ¿óδ πß½«ó¡«ú« áßßÑ¼í½¿α«óá¡¿∩".
  3236.  
  3237.      ä¿αÑ¬Γ¿óá .ERRB úÑ¡Ñα¿απÑΓ «Φ¿í¬π ó Γ«¼ ß½πτáÑ, Ñß½¿  ∩ó½∩ε-
  3238. Θ¿⌐ß∩ ÑÑ «»Ñαá¡ñ«¼ »áαá¼ÑΓα ¼á¬α«¬«¼á¡ñδ »πßΓ, á ñ¿αÑ¬Γ¿óá .ERRNB
  3239. - ó Γ«¼ ß½πτáÑ, Ñß½¿ φëà»áαá¼ÑΓα ¡Ñ »πßΓ«⌐.  ä¿αÑ¬Γ¿óá  .ERRIDN
  3240. úÑ¡Ñα¿απÑΓ «Φ¿í¬π, Ñß½¿ ñóá »áαá¼ÑΓαá ¼á¬α«¬«¼á¡ñδ, ¬«Γ«αδÑ ∩ó½∩-
  3241. εΓß∩ ÑÑ «»Ñαá¡ñἿ, ß«ó»áñáεΓ, á ñ¿αÑ¬Γ¿óá .ERRDIF - ó  Γ«¼  ß½π-
  3242. τáÑ, Ñß½¿ «¡¿ αẽ¿τ¡δ.
  3243.  
  3244.      ìá»α¿¼Ñα, ó ß½ÑñπεΘÑ⌐ ¼á¬α«¬«¼á¡ñÑ «Φ¿í¬á úÑ¡Ñα¿απÑΓß∩ ó Γ«¼
  3245. ß½πτáÑ,  Ñß½¿  «¡á óδºδóáÑΓß∩ ß ½εíδ¼ τ¿ß½«¼ »áαá¼ÑΓα«ó, «Γ½¿τ¡δ¼
  3246. «Γ ñóπσ. ¥Γ« αÑ὿º«óá¡« ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿ó .ERRB ¿  .ERRNB  («¡¿
  3247. »«ºó«½∩εΓ  »α«óÑα¿Γ∞,  τΓ«  PARM2 ¡Ñ »πßΓ, á PARM3 - »πßΓ«⌐ »áαá-
  3248. ¼ÑΓα). ùΓ«íδ πíÑñ¿Γ∞ß∩, τΓ« ó ¬áτÑßΓóÑ PARM2 ¡Ñ ¿ß»«½∞ºπÑΓß∩  αÑ-
  3249. ú¿ßΓα  DX,  ó  ¼á¬α«¬«¼á¡ñÑ ¿ß»«½∞ºπÑΓß∩ ΓᬪѠñ¿αÑ¬Γ¿óá .ERRIND.
  3250. îá¬α«¬«¼á¡ñδ óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «íαẫ¼:
  3251.  
  3252. ;
  3253. ; îá¬α«¬«¼á¡ñá ñ½∩ ß½«ªÑ¡¿∩ ñóπ󠬫¡ßΓá¡Γ, αÑú¿ßΓα«ó ¿½¿
  3254. ; ¿¼Ñ¡«óá¡¡δσ ∩τÑѬ »á¼∩Γ¿ ¿ ß«σαá¡Ñ¡¿∩ αѺπ½∞ΓáΓá ó DX.
  3255. ;
  3256. ; éó«ñ:
  3257. ;    PARM1 - «ñ¿¡ «»Ñαá¡ñ-ß½áúáѼ«Ñ
  3258. ;    PARM2 - ñαπú«⌐ «»Ñαá¡ñ-ß½áúáѼ«Ñ
  3259. ;
  3260. ADD_TWO_OPERANDS  MACRO   PARM1,PARM2,PARM3
  3261.      .ERRB   <PARM2>       ; ñ«½ª¡« íδΓ∞ ñóá »áαá¼ÑΓαá,
  3262.      .ERRNB  <PARM3>       ; ¡« ¡Ñ Γα¿
  3263.      .ERRIDN <PARM2>,<DX>  ; óΓ«α«⌐ »áαá¼ÑΓα ¡Ñ ¼«ªÑΓ
  3264.                            ; íδΓ∞ αÑú¿ßΓα«¼ DX
  3265.      mov   dx,PARM1
  3266.      add   dx,PARM2
  3267.      ENDM
  3268.  
  3269.      ÄíαáΓ¿ΓѠ󡿼᡿Ѡ ¡á ¿ß»«½∞º«óá¡¿Ñ ó ¼á¬α«¬«¼á¡ñÑ ñ¿αÑ¬Γ¿óδ
  3270. .ERRIDN, τΓ«íδ «íÑß»Ñτ¿Γ∞, τΓ« PARM2 «Γ½¿τÑ¡ «Γ DX (ó φΓ«¼ ß½πτáÑ
  3271. »α¿ ºáúαπº¬Ñ PARM1 «¡ íπñÑΓ «Γíα«ΦÑ¡).
  3272.  
  3273.  
  3274.  
  3275. Æ¿»¿τ¡δÑ «Φ¿í¬¿ »α¿ »α«úαá¼¼¿α«óá¡¿¿ ¡á ÇßßѼí½ÑαÑ
  3276. -----------------------------------------------------------------
  3277.  
  3278.      é ¬áªñ«¼ ∩ºδ¬Ñ ¿¼ÑÑΓß∩ ßó«Ñ ¼¡«ªÑßΓó« «Φ¿í«¬, ¬«Γ«αδÑ «íδτ¡«
  3279. «τÑ¡∞  ½Ñú¬« ßñѽáΓ∞, ¡« ¡Ñ óßÑúñá »α«ßΓ« «í¡áαπª¿Γ∞. ìÑ ∩ó½∩ÑΓß∩
  3280. ¿ß¬½ετÑ¡¿Ñ¼ ¿ ∩ºδ¬ ÇßßѼí½Ñαá. îδ αáßß¼«Γα¿¼  ¡Ñ¬«Γ«αδÑ  Γ¿»¿τ¡δÑ
  3281. «Φ¿í¬¿, ¬«Γ«αδÑ ñ«»π߬áεΓß∩ »α¿ »α«úαá¼¼¿α«óá¡¿¿ ¡á ÇßßѼí½ÑαÑ, ¿
  3282. ñáñ¿¼ αѬ«¼Ñ¡ñᵿ¿, ¬á¬ ¼«ª¡« ¿σ ¿ºíѪáΓ∞.
  3283.  
  3284.                  Åα«úαá¼¼¿ßΓ ºáíδóáÑΓ « ó«ºóαáΓÑ ó DOS
  3285. -----------------------------------------------------------------
  3286.  
  3287.      é Åá߬á½Ñ, æ¿ ¿ ñαπú¿σ ∩ºδ¬áσ »α«úαἼᠺáóÑαΦáÑΓß∩ ¿  ó«ºó-
  3288. αáΘáÑΓß∩  ó  «»Ñαᵿ«¡¡πε  ß¿ßΓѼπ  DOS  áóΓ«¼áΓ¿τÑ߬¿, ¬«úñá ¡ÑΓ
  3289. í«½∞ΦÑ óδ»«½¡∩Ѽ«ú« ¬«ñá, ñáªÑ Ñß½¿ ó »α«úαἼѠ«ΓßπΓßΓóπÑΓ ∩ó¡á∩
  3290. ¬«¼á¡ñá  ÑÑ  ºáóÑαΦÑ¡¿∩. é ∩ºδ¬Ñ ÇßßѼí½Ñαá φΓ« ¡Ñ Γá¬. ÇßßѼí½Ñα
  3291. óδ»«½¡∩ÑΓ Γ«½∞¬« ΓÑ ñÑ⌐ßΓó¿∩, ¬«Γ«αδÑ óδ ∩ó¡«  π¬áºδóáÑΓÑ.  è«úñá
  3292. óδ ºá»π߬áÑΓÑ »α«úαá¼¼π, ó ¬«Γ«α«⌐ «ΓßπΓßΓóπÑΓ ¬«¼á¡ñá ó«ºóαáΓá ó
  3293. DOS, «¡á »α«ßΓ« »α«ñ«½ªáÑΓ αáí«ΓáΓ∞ ñ«  ¬«¡µá  óδ»«½¡∩Ѽ«ú«  ¬«ñá
  3294. »α«úαá¼¼δ  ¿ »ÑαÑσ«ñ¿Γ ó ¬«ñ, ¬«Γ«αδ⌐ ¡áσ«ñ¿Γß∩ ó »α¿¼δ¬áεΘÑ⌐ »á-
  3295. ¼∩Γ¿.
  3296.  
  3297.      Éáßß¼«Γα¿¼, ¡á»α¿¼Ñα, ß½ÑñπεΘπε »α«úαá¼¼π:
  3298.  
  3299.    DOSSEG
  3300.    .MODEL   SMALL
  3301.    .CODE
  3302. DoNothing PROC NEAR
  3303.    nop
  3304. DoNothing ENDP
  3305.    END    DoNothing
  3306.  
  3307.      ê¼ÑεΘ¿⌐ß∩ «»δΓ ¼«ªÑΓ »«ñ߬áºδóáΓ∞ óá¼,  τΓ«  ñ¿αÑ¬Γ¿óδ  ENDP
  3308. ¿½¿  END  ñ«½ª¡δ¼ «íαẫ¼ ºáóÑαΦáΓ »α«úαá¼¼π, á¡á½«ú¿τ¡« } ¿ end.
  3309. do ó Åá߬á½Ñ ¿ æ¿, ¡« φΓ« ¡Ñ Γá¬. éδ»«½¡∩Ѽδ⌐ ¬«ñ,  ßúÑ¡Ñα¿α«óá¡-
  3310. ¡δ⌐  »α¿  áßßÑ¼í½¿α«óá¡¿¿  ¿ ¬«¼»«¡«ó¬Ñ ñá¡¡«⌐ »α«úαá¼¼δ, ß«ßΓ«¿Γ
  3311. Γ«½∞¬« ¿º «Γñѽ∞¡«⌐ ¿¡ßΓαπ¬µ¿¿ NOP. é ÇßßѼí½ÑαÑ  ñ¿αÑ¬Γ¿óá  ENDP
  3312. (¬á¬  ¿ óßÑ ñαπú¿Ñ ñ¿αÑ¬Γ¿óδ) ¡Ñ úÑ¡Ñα¿απÑΓ ¬«ñá, «¡á »α«ßΓ« πóÑ-
  3313. ñ«¼½∩ÑΓ ÇßßѼí½Ñα, τΓ« ¬«ñ ñ½∩  »α«µÑñπαδ  DoNothing  ºá¬«¡τ¿½ß∩.
  3314. ǡὫú¿τ¡«,  ñ¿αÑ¬Γ¿óá  END DoNothing »α«ßΓ« ß««íΘáÑΓ ÇßßѼí½Ñαπ,
  3315. τΓ« ¬«ñ ñá¡¡«ú« ¼«ñπ½∩ ºá¬«¡τ¿½ß∩, ¿ »α«úαá¼¼á ñ«½ª¡á ¡áτáΓ∞  óδ-
  3316. »«½¡Ñ¡¿Ñ ß ¼ÑΓ¬¿ DoNothing. ì¿úñÑ ó óδ»«½¡∩Ѽ«¼ ¬«ñÑ ¡Ñ ß«ñÑনΓ-
  3317. ß∩ ¿¡ßΓαπ¬µ¿¿ ñ½∩ »ÑαÑñáτ¿ π»αáó½Ñ¡¿∩ «íαáΓ¡« ó «»Ñαᵿ«¡¡πε ß¿ß-
  3318. ΓѼπ DOS,  ¬«úñá »α«úαἼᠺᬫ¡τ¿Γß∩.  é αѺπ½∞ΓáΓÑ, ¬«úñá »α«ú-
  3319. αá¼¼á íπñÑΓ ºá»πΘÑ¡á,  Γ« »«ß½Ñ ¿¡ßΓαπ¬µ¿¿ NOP íπñπΓ  óδ»«½¡∩Γ∞ß∩
  3320. ¿¡ßΓαπ¬µ¿¿, ¬«Γ«αδÑ ß½πτá⌐¡« «¬áªπΓß∩ ó »á¼∩Γ¿ ¡Ñ»«ßαÑñßΓóÑ¡¡« ºá
  3321. NOP. é φΓ«⌐ Γ«τ¬Ñ π»αáó½Ñ¡¿Ñ íπñÑΓ »«ΓÑα∩¡« ¿ ñ½∩ ó«ºóαáΓá ó «»Ñ-
  3322. αᵿ«¡¡πε ß¿ßΓѼπ  DOS  ¼«ªÑΓ »«ΓαÑí«óáΓ∞ß∩ »α«úαá¼¼¡á∩ ¿½¿ á»»á-
  3323. αáΓ¡á∩ »ÑαѺáúαπº¬á.
  3324.  
  3325.      ò«Γ∩ ¿¼ÑÑΓß∩ ¡Ñ߬«½∞¬« ß»«ß«í«ó, ß »«¼«Θ∞ε ¬«Γ«αδσ »α«úαá¼¼á
  3326. ¡á ÇßßѼí½ÑαÑ ¼«ªÑΓ óÑα¡πΓ∞ß∩ ó DOS, αѬ«¼Ñ¡ñπÑ¼δ¼ ß»«ß«í«¼ ó«ºó-
  3327. αáΓá ó DOS ∩ó½∩ÑΓß∩ Σπ¡¬µ¿∩ 4Ch. Åαáó¿½∞¡« ºáóÑαΦáΓ∞ αáí«Γπ íπñÑΓ
  3328. ß½ÑñπεΘá∩ óÑαß¿∩ »αÑñδñπΘÑ⌐ »α«úαá¼¼δ:
  3329.  
  3330.    DOSSEG
  3331.    .MODEL   SMALL
  3332.    .CODE
  3333. DoNothing PROC NEAR
  3334.    nop
  3335.    mov   ah,4Ch            ; Σπ¡¬µ¿∩ DOS ºáóÑαΦÑ¡¿∩ »α«µÑßßá
  3336.    int   21h               ; óδºóáΓ∞ DOS ñ½∩ ºáóÑαΦÑ¡¿∩ »α«úαá¼¼δ
  3337. DoNothing ENDP
  3338.    END    DoNothing
  3339.  
  3340.      éßÑúñá ¡πª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« ñ¿αÑ¬Γ¿óδ ¡Ñ úÑ¡Ñα¿απεΓ  ¬«-
  3341. ñá,  ¿  τΓ«  Æπαí« ÇßßѼí½Ñα úÑ¡Ñα¿απÑΓ »α«úαá¼¼δ, ¬«Γ«αδÑ ñѽáεΓ
  3342. Γ«½∞¬« Γ«, τΓ« ¿¼ π¬áºδóáÑΓ ¿ßσ«ñ¡δ⌐ ¬«ñ, ¡Ñ í«½∞ΦÑ ¿ ¡Ñ ¼Ñ¡∞ΦÑ.
  3343.  
  3344.                 Åα«úαá¼¼¿ßΓ ºáíδóáÑΓ «í ¿¡ßΓαπ¬µ¿¿ RET
  3345. -----------------------------------------------------------------
  3346.  
  3347.      çá¼ÑΓ¿¼, τΓ« »αáó¿½∞¡δ⌐ óδº«ó »«ñ»α«úαá¼¼δ ß«ßΓ«¿Γ ¿º ó맮óá
  3348. »«ñ»α«úαá¼¼δ  ¿º  ñαπú«⌐  τáßΓ¿  ¬«ñá,  óδ»«½¡Ñ¡¿∩ »«ñ»α«úαá¼¼δ ¿
  3349. ó«ºóαáΓá ¿º »«ñ»α«úαá¼¼δ  ó  óδºδóáεΘπε  »α«úαá¼¼π.  ìÑ  ºáíπñ∞ΓÑ
  3350. ó¬½ετáΓ∞  ó ¬áªñπε »«ñ»α«úαá¼¼π ¿¡ßΓαπ¬µ¿ε RET, »« ¬«Γ«α«⌐ π»αáó-
  3351. ½Ñ¡¿Ñ íπñÑΓ »ÑαÑñáóáΓ∞ß∩ ó óδºδóáεΘ¿⌐ ¬«ñ. Åα¿  ¡áí«αÑ  »α«úαá¼¼δ
  3352. φΓπ ñ¿αÑ¬Γ¿óπ ½Ñú¬« »α«»πßΓ¿Γ∞ ¿ ºá¬«¡τ¿Γ∞ ¬«ñ ß½ÑñπεΘ¿¼ «íαẫ¼:
  3353.  
  3354. ;
  3355. ; Å«ñ»α«úαá¼¼á ñ½∩ π¼¡«ªÑ¡¿∩ º¡áτÑ¡¿∩ ¡á 80
  3356. ; éó«ñ:   AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ¡πª¡« π¼¡«ª¿Γ∞ ¡á 80
  3357. ; éδó«ñ:  DX:AX - »α«¿ºóÑñÑ¡¿Ñ
  3358. ;
  3359. MultiplyBy80   PROC NEAR
  3360.                 mov   dx,80
  3361.                 mul   dx
  3362. MultiplyBy80   ENDP
  3363.  
  3364. ; Å«ñ»α«úαá¼¼á ñ½∩ »«½πτÑ¡¿∩ ß½ÑñπεΘÑ ¡áªáΓ«⌐ ¬½áó¿Φ¿
  3365. ; éδó«ñ: AL - ß½ÑñπεΘá∩ ¡áªáΓá∩ ¬½áó¿Φá
  3366. ; æ«ñÑন¼«Ñ αÑú¿ßΓαá AH ΓÑα∩ÑΓß∩
  3367. ;
  3368. GetKey      PROC NEAR
  3369.              mov  ah,1
  3370.              int  21h
  3371.              ret
  3372. GetKey      PROC NEAR
  3373.  
  3374.      ä¿αÑ¬Γ¿óá MultipleBy80 ENDP ¼«ªÑΓ óóÑßΓ¿ óáß ó  ºáí½πªñÑ¡¿Ñ,
  3375. ¿  óδ »«ñπ¼áÑΓÑ, τΓ« »«ñ»α«úαá¼¼á MultipleBy80 πªÑ ºáóÑαΦѡᠬ«α-
  3376. αÑ¬Γ¡«,  Γ«úñá  ¬á¬  »α¿  ó맮óÑ φΓ« »«ñ»α«úαá¼¼δ ¡Ñ Γ«½∞¬« íπñÑΓ
  3377. ß«ñÑন¼«Ñ AX π¼¡«ªáΓ∞ß∩ ¡á 80, ¡« ¿ »α«ñ«½ª¿Γ∞ß∩ óδ»«½¡Ñ¡¿Ñ »«ñ-
  3378. »α«úαá¼¼δ GetKey,  ¿ ó αÑú¿ßΓαÑ AL íπñÑΓ ó«ºóαáΘáΓ∞ß∩ ¬«ñ ß½Ññπε-
  3379. ΘÑ⌐ ¡áªáΓ«⌐ ¬½áó¿Φ¿.  è«ααÑ¬Γ¡«⌐ φΓá »«ñ»α«úαá¼¼á íπñÑΓ ó ß½Ññπε-
  3380. ΘѼ ó¿ñÑ:
  3381.  
  3382. ;
  3383. ; Å«ñ»α«úαá¼¼á ñ½∩ π¼¡«ªÑ¡¿∩ º¡áτÑ¡¿∩ ¡á 80
  3384. ; éó«ñ:   AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ¡πª¡« π¼¡«ª¿Γ∞ ¡á 80
  3385. ; éδó«ñ:  DX:AX - »α«¿ºóÑñÑ¡¿Ñ
  3386. ;
  3387. MultiplyBy80   PROC NEAR
  3388.                 mov   dx,80
  3389.                 mul   dx
  3390.                 ret
  3391. MultiplyBy80   ENDP
  3392.  
  3393. ; Å«ñ»α«úαá¼¼á ñ½∩ »«½πτÑ¡¿∩ ß½ÑñπεΘÑ⌐ ¡áªáΓ«⌐ ¬½áó¿Φ¿
  3394. ; éδó«ñ: AL - ß½ÑñπεΘá∩ ¡áªáΓá∩ ¬½áó¿Φá
  3395. ; æ«ñÑন¼«Ñ αÑú¿ßΓαá AH ΓÑα∩ÑΓß∩
  3396. ;
  3397. GetKey      PROC NEAR
  3398.              mov  ah,1
  3399.              int  21h
  3400.              ret
  3401. GetKey      PROC NEAR
  3402.  
  3403.  
  3404.  
  3405.                    âÑ¡Ñαᵿ∩ ¡ÑóÑα¡«ú« Γ¿»á ó«ºóαáΓá
  3406. -----------------------------------------------------------------
  3407.  
  3408.      ä¿αÑ¬Γ¿óá PROC ñÑ⌐ßΓóπÑΓ ñó«∩¬«. é«-»Ñαóδσ,  «¡á  «»αÑñѽ∩ÑΓ
  3409. ¿¼∩,  »«  ¬«Γ«α«¼π íπñÑΓ óδºδóáΓ∞ß∩ »α«µÑñπαá. é«-óΓ«αδσ, «¡á π»-
  3410. αáó½∩ÑΓ Γ¿»«¼ (í½¿ª¡¿¼ ¿½¿ ñá½∞¡¿¼) »α«µÑñπαδ.
  3411.  
  3412.      Æ¿» »α«µÑñπαδ ¿ß»«½∞ºπÑΓß∩ Æπαí« ÇßßѼí½Ñα«¼ ñ½∩ «»αÑñѽѡ¿∩
  3413. Γ«ú«,  ¬á¬«⌐  Γ¿» ó맮ó«ó ¡πª¡« úÑ¡Ñα¿α«óáΓ∞ »α¿ ó맮óÑ »α«µÑñπαδ
  3414. ¿º Γ«ú« ªÑ ¿ßσ«ñ¡«ú« Σá⌐½á. Æ¿» »α«µÑñπαδ ΓᬪѠ¿ß»«½∞ºπÑΓß∩  ñ½∩
  3415. «»αÑñѽѡ¿∩  Γ¿»á ¿¡ßΓαπ¬µ¿¿ RET, ¬«Γ«αá∩ óδ»«½¡∩ÑΓß∩, ¬«úñá »α«-
  3416. µÑñπαá ó«ºóαáΘáÑΓ π»αáó½Ñ¡¿Ñ ó óδºδóáεΘ¿⌐ ¬«ñ. Éáßß¼«Γα¿¼ ß½Ññπε-
  3417. Θ¿⌐ »α¿¼Ñα:
  3418.  
  3419. ; Å«ñ»α«úαá¼¼á í½¿ª¡Ñú« Γ¿»á ñ½∩ ßñó¿úá DX:AX ó»αáó« ¡á 2 íá⌐Γá
  3420. ;
  3421. LongShiftRight2   PROC NEAR
  3422.      shr   dx,1
  3423.      rcr   ax,1   ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
  3424.      shr   dx,1
  3425.      rcr   ax,1   ; ßñó¿ú DX:AX ó»αáó« ÑΘÑ ¡á 1 í¿Γ
  3426.      ret
  3427. LongShiftRight2   ENDP
  3428.  
  3429.      Æπαí« ÇßßѼí½Ñα «íÑß»Ñτ¿óáÑΓ, τΓ« ¿¡ßΓαπ¬µ¿∩ RET íπñÑΓ í½¿ª-
  3430. ¡Ñú«  Γ¿»á, Γᬠ¬á¬ LongShiftRight2 - φΓ« »α«µÑñπαá í½¿ª¡Ñú« Γ¿»á
  3431. (NEAR). Äñ¡á¬«, Ñß½¿ ñ¿αÑ¬Γ¿óπ PROC ¿º¼Ñ¡¿Γ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
  3432.  
  3433. LongShiftRight2   PROC FAR
  3434.  
  3435. Γ« íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ß∩ ¿¡ßΓαπ¬µ¿∩ RET ñá½∞¡Ñú« Γ¿»á (FAR).
  3436.  
  3437.      Æá¬¿¼ «íαẫ¼, ¿ñÑ∩ ºñÑß∞ «τÑó¿ñ¡á. ê¡ßΓαπ¬µ¿¿ RET ó  »α«µÑ-
  3438. ñπαÑ ñ«½ª¡δ ß««ΓóÑΓßΓó«óáΓ∞ ÑÑ Γ¿»π, ¡Ñ »αáóñá ½¿?
  3439.  
  3440.      ¥Γ¿ ¿ Γᬠ¿ ¡Ñ Γá¬. Åα«í½Ñ¼á ß«ßΓ«¿Γ ó  Γ«¼,  τΓ«  ¼«ª¡«  (¿
  3441. τáßΓ«  ªÑ½áΓѽ∞¡«)  úαπ»»¿α«óáΓ∞  ó «ñ¡«⌐ ¿ Γ«⌐ ªÑ »α«µÑñπαÑ ¡Ñß-
  3442. ¬«½∞¬« »α«µÑñπα. Å«ß¬«½∞¬π ó φΓ¿σ  »α«µÑñπαáσ  «ΓßπΓßΓóπÑΓ  ß««Γ-
  3443. óÑΓßΓóπεΘá∩ ñ¿αÑ¬Γ¿óá PROC, ¿σ ¿¡ßΓαπ¬µ¿¿ RET íπñπΓ ¿¼ÑΓ∞ Γ¿» Γ«⌐
  3444. »α«µÑñπαδ, ó ¬«Γ«απε «¡¿ ºá¬½ετÑ¡δ, á ñ½∩ ¬«¡¬αÑΓ¡δσ  »«ñ»α«úαá¼¼
  3445. φΓ«Γ Γ¿» ¡Ñ óßÑúñá ¼«ªÑΓ «¬áºáΓ∞ß∩ ¬«ααÑ¬Γ¡δ¼. ìá»α¿¼Ñα, »α«úαá¼-
  3446. ¼á:
  3447.  
  3448. ; Å«ñ»α«úαá¼¼á ñá½∞¡Ñú« Γ¿»á ñ½∩ ßñó¿úá DX:AX ¡á 2 í¿Γá.
  3449. ;
  3450. LongShiftRight2    PROC FAR
  3451.      call   LongShiftRight      ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
  3452.      call   LongShiftRight      ; ßñó¿ú DX:AX ó»αáó« ÑΘÑ ¡á 1 í¿Γ
  3453.      ret
  3454. LongShiftRight:
  3455.      shr    dx,1
  3456.      rcr    ax,1                ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
  3457.      ret
  3458. LongShiftRight2    ENDP
  3459.  
  3460. αáí«ΓáÑΓ ¡Ñ»αáó¿½∞¡«.  Åα«µÑñπαá LongShiftRight2 «íαáΘáÑΓß∩ ß óδ-
  3461. º«ó«¼ í½¿ª¡Ñú« Γ¿»á ¬ LongShiftRight (Γᬠ¬á¬ «¡¿ ¡áσ«ñ∩Γß∩ ó «ñ-
  3462. ¡«¼  ßÑú¼Ñ¡ΓÑ  ¬«ñá).  Äñ¡á¬«,  Γᬠ¬á¬ LongShiftRight óßΓα«Ñ¡á ó
  3463. »α«µÑñπαπ  LongShiftRight2,  Γ«  ó«ºóαáΓ  ó  ¬«¡µÑ   »«ñ»α«úαá¼¼δ
  3464. LongShiftRight ßΓá¡«ó¿Γß∩ ó«ºóαáΓ«¼ ñá½∞¡Ñú« Γ¿»á, á ¬«úñá ó맮óπ
  3465. í½¿ª¡Ñú« Γ¿»á ß««ΓóÑΓßΓóπÑΓ ó«ºóαáΓ ñá½∞¡Ñú« Γ¿»á,  φΓ« ß í«½∞Φ«⌐
  3466. óÑα«∩Γ¡«ßΓ∞ε  ¼«ªÑΓ  »α¿óÑßΓ¿ ¬ ßí«ε (áóáα¿⌐¡«¼π ºáóÑαΦÑ¡¿ε »α«ú-
  3467. αá¼¼δ).
  3468.  
  3469.      ò«α«Φ¿¼ αÑΦÑ¡¿Ñ¼ ºñÑß∞ íπñÑΓ ¡á½¿τ¿Ñ ó  ¬áªñ«⌐  »«ñ»α«úαá¼¼Ñ
  3470. ñ¿αÑ¬Γ¿óδ PROC. é½«ªÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ PROC »αѬαáß¡« αáí«ΓáεΓ:
  3471.  
  3472. ; Å«ñ»α«úαá¼¼á ñá½∞¡Ñú« Γ¿»á ñ½∩ ßñó¿úá DX:AX ¡á 2 í¿Γá.
  3473. ;
  3474. LongShiftRight2    PROC FAR
  3475.      call   LongShiftRight      ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
  3476.      call   LongShiftRight      ; ßñó¿ú DX:AX ó»αáó« ÑΘÑ ¡á 1 í¿Γ
  3477.      ret
  3478. LongShiftRight     PROC NEAR
  3479.      shr    dx,1
  3480.      rcr    ax,1                ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
  3481.      ret
  3482. LongShiftRight2    ENDP
  3483. LongShiftRight     ENDP
  3484.  
  3485. ΓᬪѠ¬á¬ ¿ »«ß½Ññ«óáΓѽ∞¡δÑ »α«µÑñπαδ:
  3486.  
  3487. ; Å«ñ»α«úαá¼¼á ñá½∞¡Ñú« Γ¿»á ñ½∩ ßñó¿úá DX:AX ¡á 2 í¿Γá.
  3488. ;
  3489. LongShiftRight2    PROC FAR
  3490.      call   LongShiftRight      ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
  3491.      call   LongShiftRight      ; ßñó¿ú DX:AX ó»αáó« ÑΘÑ ¡á 1 í¿Γ
  3492.      ret
  3493. LongShiftRight2    ENDP
  3494. LongShiftRight     PROC NEAR
  3495.      shr    dx,1
  3496.      rcr    ax,1                ; ßñó¿ú DX:AX ó»αáó« ¡á 1 í¿Γ
  3497.      ret
  3498. LongShiftRight     ENDP
  3499.  
  3500.      ä½∩ ∩ó¡«⌐ úÑ¡Ñαᵿ¿ í½¿ª¡Ñú« ¿½¿ ñá½∞¡Ñú« ó«ºóαáΓá ¼«ª¡« ¿ß-
  3501. »«½∞º«óáΓ∞, ß««ΓóÑΓßΓóÑ¡¡«,  ¿¡ßΓαπ¬µ¿¿ RETN ¿  RETF.  éδ  ¼«ªÑΓÑ
  3502. «íÑß»Ñτ¿Γ∞ ß ¿σ »«¼«Θ∞ε ¬«ααÑ¬Γ¡πε úÑ¡Ñαáµ¿ε ¿¡ßΓαπ¬µ¿⌐ ó«ºóαáΓá.
  3503.  
  3504.                     ìÑ»αáó¿½∞¡δ⌐ »«α∩ñ«¬ «»Ñαá¡ñ«ó
  3505. -----------------------------------------------------------------
  3506.  
  3507.      î¡«ú¿Ñ »α«úαá¼¼¿ßΓδ «Φ¿íáεΓß∩ ¿ ¿º¼Ñ¡∩εΓ »«α∩ñ«¬ «»Ñαá¡ñ«ó ó
  3508. ¿¡ßΓαπ¬µ¿∩σ »α«µÑßß«αá 8086 ¡á «íαáΓ¡δ⌐. ¥Γ«, óÑα«∩Γ¡«, ßó∩ºá¡« ß
  3509. ΓѼ, τΓ« ßΓ᫬á:
  3510.  
  3511.         mov ax,bx
  3512.  
  3513. ¬«Γ«αá∩ «º¡áτáÑΓ "»«¼ÑßΓ¿Γ∞ AX ó BX", τ¿ΓáÑΓß∩ ß½Ñóá  ¡á»αáó«,  ¿
  3514. ¼¡«ú¿Ñ  ß«ºñáΓѽ¿ ¼¿¬α«»α«µÑßß«α«ó ßΓα«∩Γ ß««ΓóÑΓßΓóπεΘ¿¼ «íαẫ¼
  3515. ßó«¿ áßßѼí½Ñαδ. Äñ¡á¬« ó ∩ºδ¬Ñ ÇßßѼí½Ñαá »α«µÑßß«αá 8086  Σ¿α¼á
  3516. Intel  ¿ß»«½∞º«óá½á ñαπú«⌐ »«ñσ«ñ, »«φΓ«¼π ñ½∩ ¡áß φΓá ßΓα«¬á «º-
  3517. ¡áτáÑΓ "»«¼ÑßΓ¿Γ∞ BX ó AX", τΓ« ¿¡«úñá »α¿ó«ñ¿Γ ¬ »πΓá¡¿µÑ.
  3518.  
  3519.      Å«α∩ñ«¬ «»Ñαá¡ñ«ó, »α¿¡∩Γδ⌐ Σ¿α¼«⌐ Intel, «ß¡«óá¡ ¡á »«α∩ñ¬Ñ
  3520. «»Ñαá¡ñ«ó,  »α¿¡∩Γ«⌐  ó Åá߬á½Ñ ¿ æ¿, úñÑ µÑ½Ñó«⌐ «»Ñαá¡ñ (»α¿Ñ¼-
  3521. ¡¿¬) ¡áσ«ñ¿Γß∩ ß½Ñóá. Æá¬¿¼ «íαẫ¼, τΓ«íδ ¡Ñ »ÑαÑ»πΓáΓ∞  »«α∩ñ«¬
  3522. «»Ñαá¡ñ«ó  ó ∩ºδ¬Ñ ÇßßѼí½Ñαá »α«µÑßß«αá 8086, ¡πª¡« ¡á ¼ÑßΓ« ºá-
  3523. »∩Γ«⌐, αáºñѽ∩εΘÑ⌐ «»Ñαá¡ñδ,  »«¼ÑßΓ¿Γ∞  º¡á¬  αáóÑ¡ßΓóá,  »α¿ñáó
  3524. ßΓα«¬Ñ Σ«α¼π »α¿ßóá¿óá¡¿∩. ìá»α¿¼Ñα, ßΓ᫬π:
  3525.  
  3526.         mov ax,bx
  3527.  
  3528. ¼«ª¡« αáßß¼áΓα¿óáΓ∞, ¬á¬
  3529.  
  3530.         ax = bx
  3531.  
  3532.      Ä»Ñαá¡ñδ-¬«¡ßΓá¡Γδ, ΓᬿÑ, ¬á¬:
  3533.  
  3534.         add bx,(OFFSET BaseTble * 4) + 2
  3535.  
  3536. ¼«ª¡« »αÑñßΓáó¿Γ∞ ó ó¿ñÑ:
  3537.  
  3538.         bx += (OFFSET BaseTable * 4) + 2
  3539.  
  3540.  
  3541.  
  3542.       Åα«úαá¼¼¿ßΓ ºáíδóáÑΓ « ßΓѬѠ¿½¿ αѺÑαó¿απÑΓ ¼á½Ñ¡∞¬¿⌐ ßΓѬ
  3543. -----------------------------------------------------------------
  3544.  
  3545.      é í«½∞Φ¿¡ßΓóÑ ß½πτáÑó ¡Ñ óδñѽ∩Γ∞ ∩ó¡« »α«ßΓαá¡ßΓó« ñ½∩ ßΓÑ-
  3546. ¬á,  φΓ« óßÑ αáó¡«, τΓ« σ«ñ¿Γ∞ »« Γ«¡¬«¼π ½∞ñπ. ê¡«úñá »α«úαá¼¼δ,
  3547. ó ¬«Γ«αδσ ¡Ñ óδñѽ∩ÑΓß∩ »α«ßΓαá¡ßΓó« ñ½∩ ßΓѬá,  íπñπΓ  αáí«ΓáΓ∞,
  3548. »«ß¬«½∞¬π  ¼«ªÑΓ «¬áºáΓ∞ß∩ Γá¬, τΓ« ¡áº¡áτÑ¡¡δ⌐ »« π¼«½τá¡¿ε ßΓѬ
  3549. »«»áñÑΓ ó ¡Ñ¿ß»«½∞ºπѼπε «í½áßΓ∞ »á¼∩Γ¿. ì« ¡ÑΓ ¡¿¬á¬«⌐ úáαá¡Γ¿¿,
  3550. τΓ«  ΓᬿѠ »α«úαá¼¼δ  íπñÑΓ  αáí«ΓáΓ∞ »α¿ ½εíδσ «íßΓ«∩Γѽ∞ßΓóáσ,
  3551. »«ß¬«½∞¬π ¡ÑΓ úáαá¡Γ¿¿, τΓ« ñ½∩ ßΓѬá íπñÑΓ ñ«ßΓπ»Ñ¡  »«  ¬αá⌐¡Ñ⌐
  3552. ¼ÑαÑ  «ñ¿¡ íá⌐Γ. é í«½∞Φ¿¡ßΓóÑ »α«úαá¼¼ ñ½∩ αѺÑαó¿α«óá¡¿∩ »α«ßΓ-
  3553. αá¡ßΓóá ñ½∩ ßΓѬá ñ«½ª¡á »α¿ßπΓßΓó«óáΓ∞ ñ¿αÑ¬Γ¿óá .STACK,  ¿  ñ½∩
  3554. ½εí«⌐  »α«úαá¼¼δ  φΓá  ñ¿αÑ¬Γ¿óá ñ«½ª¡á αѺÑαó¿α«óáΓ∞ ñ«ßΓáΓ«τ¡«Ñ
  3555. »α«ßΓαá¡ßΓó«, τΓ«íδ Ñú« σóáΓ¿½« ñ½∩ ¼á¬ß¿¼á½∞¡δσ  »«ΓαÑí¡«ßΓÑ⌐  ó
  3556. »α«úαá¼¼Ñ.
  3557.  
  3558.      Å«τѼπ φΓ« »α«ßΓαá¡ßΓó« ñ«½ª¡« íδΓ∞ í«½ÑÑ τѼ ñ«ßΓáΓ«τ¡δ¼, á
  3559. ¡Ñ »α«ßΓ« ñ«ßΓáΓ«τ¡δ¼? Æαπñ¡« ¿¼ÑΓ∞ πóÑαÑ¡¡«ßΓ∞ ó Γ«¼, ¬á¬«⌐ «íΩ-
  3560. Ѽ ßΓѬᠼ«ªÑΓ «¬áºáΓ∞ß∩ ó »α«úαἼѠ¡Ñ«íσ«ñ¿¼δ¼. ÄΦ¿í¬¿, ¬«Γ«αδÑ
  3561. 󫺡¿¬áεΓ,  ¬«úñá  πóѽ¿τ¿óáεΘ¿⌐ß∩  ßΓѬ »ÑαÑσ«ñ¿Γ ó ñαπú¿Ñ τáßΓ¿
  3562. »α«úαá¼¼δ ¿ »«αΓ¿Γ ¼áΓ ¿¡Σ«α¼áµ¿ε, «íδτ¡« íδóáÑΓ Γαπñ¡« ó«ß»α«¿º-
  3563. óÑßΓ¿  ¿  «Γ߽Ѫ¿óáΓ∞.  èα«¼Ñ Γ«ú«, ¼¡«ú¿Ñ «Γ½áñτ¿¬¿ ñ½∩ ó«ºóαáΓá
  3564. π»αáó½Ñ¡¿∩  ¿º  »α«úαá¼¼δ  ¿ß»«½∞ºπεΓ  ¡Ñí«½∞Φ«Ñ   ñ«»«½¡¿Γѽ∞¡«Ñ
  3565. »α«ßΓαá¡ßΓó«  ó ßΓѬÑ. Å«φΓ«¼π ¡Ñ ß½ÑñπÑΓ ß¬π»¿Γ∞ß∩ »α¿ óδñѽѡ¿¿
  3566. »α«ßΓαá¡ßΓóá ñ½∩ ßΓѬá. ¥Γ« ¿ºíáó¿Γ óáß «Γ ¼¡«ú¿σ ó«º¼«ª¡δσ  ¡Ñ»-
  3567. α¿∩Γ¡«ßΓÑ⌐.  ò«α«Φ¿¼ »αá󿽫¼ ∩ó½∩ÑΓß∩ óδñѽѡ¿Ñ ßΓѬá, ¼¿¡¿¼á½∞-
  3568. ¡δ⌐ αẼÑα ¬«Γ«α«ú« ß«ßΓáó½∩ÑΓ 512 íá⌐Γ.
  3569.  
  3570.      àñ¿¡ßΓóÑ¡¡δ¼ ó¿ñ«¼ »α«úαá¼¼ ¡á ÇßßѼí½ÑαÑ,  úñÑ  ¡Ñ  ß½ÑñπÑΓ
  3571. óδñѽ∩Γ∞  ßΓѬ, ∩ó½∩εΓß∩ »α«úαá¼¼δ, ¬«Γ«αδÑ »αÑñ»«½áúáÑΓß∩ »αÑ«í-
  3572. αẫóáΓ∞ ó Σá⌐½δ Γ¿»á .COM ¿½¿ .BIN. öá⌐½δ .BIN ß«ñÑαªáΓ ¬«ñ, ¬«-
  3573. Γ«αδ⌐  ªÑßΓ¬«  »α¿ó∩ºá¡ ¬ «Γñѽ∞¡δ¼ áñαÑßá¼,  ¿,  »«ß¬«½∞¬π Σá⌐½δ
  3574. .BIN ¿ß»«½∞ºπεΓß∩  «íδτ¡«,  ¬á¬  ¿¡ΓÑα»αÑΓ¿α«óá¡¡δÑ  »«ñ»α«úαá¼¼δ
  3575. üÑ⌐ß¿¬á,  «¡¿ ¿ß»«½∞ºπεΓ ßΓѬ üÑ⌐ß¿¬á.  öá⌐½δ .COM óδ»«½¡∩εΓß∩ ß«
  3576. ßΓѬ«¼,  αáß»«½«ªÑ¡¡δ¼ ó ßἫ⌐ óÑαΦ¿¡Ñ »α«úαá¼¼¡«ú« ßÑú¼Ñ¡Γá (¬«-
  3577. Γ«αδ⌐ ¿¼ÑÑΓ αẼÑα 64è ¿½¿ ¼Ñ¡∞ΦÑ, Ñß½¿ ñ«ßΓπ»¡« ¼Ñ¡∞ΦÑ 64è), »«-
  3578. φΓ«¼π ¼á¬ß¿¼á½∞¡δ⌐ αẼÑα ßΓѬá ó φΓ«¼ ß½πτáÑ »α«ßΓ« αáóÑ¡ «íΩѼπ
  3579. »á¼∩Γ¿, «ßΓáóΦÑ⌐ß∩ ó »α«úαá¼¼¡«¼ ßÑú¼Ñ¡ΓÑ. Åα¿ ¡á»¿ßá¡¿¿ »α«úαá¼¼
  3580. ó Σ«α¼áΓÑ .COM ß½ÑñπÑΓ ¿¼ÑΓ∞ ó ó¿ñπ φëàαẼÑα ó  64è,  Γᬠ ¬á¬
  3581. »α¿  πóѽ¿τÑ¡¿¿ »α«úαá¼¼δ ß««ΓóÑΓßΓóÑ¡¡« π¼Ñ¡∞ΦáÑΓß∩ ßΓѬ.  ìπª¡«
  3582. ΓᬪѠπτ¿ΓδóáΓ∞,  τΓ« »α¿ αáí«ΓÑ í«½∞Φ¿σ »α«úαá¼¼ ó Σ«α¼áΓÑ .COM,
  3583. óδ»«½¡∩εΘ¿Ñß∩  ¡á ¬«¼»∞εΓÑαáσ ß ¡Ñí«½∞Φ«⌐ ñ«ßΓπ»¡«⌐ »á¼∩Γ∞ε,  ¿½¿
  3584. ºá»πΘÑ¡¡δσ ¿º «»Ñαᵿ«¡¡«⌐ ßαÑñδ DOS ¡áα∩ñπ ß ñαπú¿¼¿  »α«úαá¼¼á-
  3585. ¼¿,  ¼«úπΓ ó«º¡¿¬¡πΓ∞ »α«í½Ñ¼δ ß« ßΓѬ«¼. Åα«ßΓÑ⌐Φ¿⌐ ß»«ß«í ¿ºíÑ-
  3586. ªáΓ∞ φΓ¿σ »«ΓÑ¡µ¿á½∞¡δσ »α«í½Ñ¼ ß«ßΓ«¿Γ ó  ¡á»¿ßá¡¿¿  »α«úαá¼¼  ó
  3587. Σ«α¼áΓÑ .EXE, á ¡Ñ ó Σ«α¼áΓÑ .COM, ¿ αѺÑαó¿α«óá¡¿¿ ßΓѬá í«½∞Φ«-
  3588. ú« «íΩѼá.
  3589.  
  3590.  
  3591.  
  3592.     éδº«ó »«ñ»α«úαá¼¼δ, ¬«Γ«αá∩ »«αΓ¿Γ ß«ñÑন¼«Ñ ¡πª¡δσ αÑú¿ßΓα«ó
  3593. -----------------------------------------------------------------
  3594.  
  3595.      Åα¿ αáºαáí«Γ¬Ñ »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ αÑú¿ßΓαδ πñ«í¡« αáßß-
  3596. ¼áΓα¿óáΓ∞, ¬á¬ ½«¬á½∞¡δÑ »ÑαѼѡ¡δÑ, óδñѽѡ¡δÑ ñ½∩ ¿ß»«½∞º«óá¡¿∩
  3597. ó »α«µÑñπαÑ, ß ¬«Γ«α«⌐ óδ ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ αáí«ΓáÑΓÑ. é τáßΓ¡«ßΓ¿,
  3598. ¡ÑαÑñ¬« »«ñαáºπ¼ÑóáεΓ,  τΓ« »α¿ «íαáΘÑ¡¿¿ ¬ ñαπú¿¼ »α«µÑñπαá¼ αÑ-
  3599. ú¿ßΓαδ «ßΓáεΓß∩ ¡Ñ¿º¼Ñ¡Ñ¡¡δ¼¿. ìá ßἫ¼ ñѽѠφΓ« ¡Ñ Γá¬. ÉÑú¿ßΓαδ
  3600. - φΓ« ú½«íá½∞¡δÑ »ÑαѼѡ¡δÑ,  ¿ ¬áªñá∩ »α«µÑñπαá ¼«ªÑΓ  ß«σαá¡¿Γ∞
  3601. ¿½¿ π¡¿τΓ«ª¿Γ∞ ß«ñÑন¼«Ñ ½εí«ú« ¿º αÑú¿ßΓα«ó.
  3602.  
  3603.      Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ »α¿¼Ñα:
  3604.  
  3605.          .
  3606.          .
  3607.          .
  3608.          mov   bx,[TableBase]  ; BX π¬áºδóáÑΓ ¡á ¡áτὫ Γáí½¿µδ
  3609.          mov   ax,[Element]    ; »«½πτ¿Γ∞ φ½Ñ¼Ñ¡Γ
  3610.          call  DivideBy10      ; αáºñѽ¿Γ∞ φ½Ñ¼Ñ¡Γ ¡á 10
  3611.          add   bx,ax           ; ßßδ½¬á ¡á ß««ΓóÑΓßΓóπεΘπε ºá»¿ß∞
  3612.          .
  3613.          .
  3614.          .
  3615. ; Å«ñ»α«úαá¼¼á ñ½∩ ñѽѡ¿∩ º¡áτÑ¡¿∩ ¡á 10.
  3616. ;
  3617. ; éó«ñ:  AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ αáºñѽ¿Γ∞ ¡á 10
  3618. ; éδó«ñ: AX - º¡áτÑ¡¿Ñ, αáºñѽѡ¡«Ñ ¡á 10
  3619. ;        DX - «ßΓáΓ«¬ º¡áτÑ¡¿∩, ñѽѡ¡«ú« ¡á 10
  3620. DivideBy10     PROC NEAR
  3621.          mov   dx,0            ; »«ñú«Γ«ó¿Γ∞ DX:AX, ¬á¬
  3622.                                ; 32-í¿Γ«ó«Ñ ñѽ¿¼«Ñ
  3623.          mov   bx,10           ; BX - 16-í¿Γ«óδ⌐ ñѽ¿Γѽ∞
  3624.          div   dx
  3625.          ret
  3626. DivideBy10     ENDP
  3627.  
  3628.      é óδºδóáεΘÑ⌐ »α«úαἼѠ»«ñαáºπ¼ÑóáÑΓß∩, τΓ« BX  ó  »α«µÑñπαÑ
  3629. DivideBy10 ß«σαá¡∩ÑΓß∩, σ«Γ∩ Σá¬Γ¿τÑ߬¿ «Γ πßΓá¡áó½¿óáÑΓß∩ »α«µÑ-
  3630. ñπα«⌐ DivideBy10 ó º¡áτÑ¡¿Ñ 10. é φΓ«¼ ¬«¡¬αÑΓ¡«¼ ß½πτáÑ  ßπΘÑßΓ-
  3631. óπÑΓ  ¡Ñ߬«½∞¬«  ó«º¼«ª¡δσ  αÑΦÑ¡¿⌐. ìá»α¿¼Ñα, ó ¡áτá½Ñ »α«µÑñπαδ
  3632. DivideBy10 BX ¼«ª¡« ºá¡«ß¿Γ∞ ó ßΓѬ, á »α¿ óδσ«ñÑ ¿º »α«µÑñπαδ  -
  3633. ¿ºó½Ñ¬áΓ∞ ¿º ßΓѬá:
  3634.  
  3635.          .
  3636.          .
  3637.          .
  3638.          mov   bx,[TableBase]   ; BX π¬áºδóáÑΓ ¡á ¡áτὫ
  3639.                                 ; Γáí½¿µδ
  3640.          mov   ax,[Element]     ; »«½πτ¿Γ∞ φ½Ñ¼Ñ¡Γ
  3641.          call  DivideBy10       ; αáºñѽ¿Γ∞ φ½Ñ¼Ñ¡Γ ¡á 10
  3642.          add   bx,ax            ; ßßδ½¬á ¡á ß««ΓóÑΓßΓóπεΘπε
  3643.                                 ; ºá»¿ß∞
  3644.          .
  3645.          .
  3646.          .
  3647. ; Å«ñ»α«úαá¼¼á ñ½∩ ñѽѡ¿∩ º¡áτÑ¡¿∩ ¡á 10.
  3648. ;
  3649. ; éó«ñ:  AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ αáºñѽ¿Γ∞ ¡á 10
  3650. ; éδó«ñ: AX - º¡áτÑ¡¿Ñ, αáºñѽѡ¡«Ñ ¡á 10
  3651. ;        DX - «ßΓáΓ«¬ º¡áτÑ¡¿∩, ñѽѡ¡«ú« ¡á 10
  3652. DivideBy10     PROC NEAR
  3653.          push  bx              ; ß«σαá¡¿Γ∞ BX
  3654.          mov   dx,0            ; »«ñú«Γ«ó¿Γ∞ DX:AX, ¬á¬
  3655.                                ; 32-í¿Γ«ó«Ñ ñѽ¿¼«Ñ
  3656.          mov   bx,10           ; BX - 16-í¿Γ«óδ⌐ ñѽ¿Γѽ∞
  3657.          div   dx
  3658.          pop   bx              ; ó«ßßΓá¡«ó¿Γ∞ BX
  3659.          ret
  3660. DivideBy10     ENDP
  3661.  
  3662. ¿½¿ ßñѽáΓ∞ φΓ« ó óδºδóáεΘÑ⌐ »α«úαἼѠñ«  (ß«σαá¡Ñ¡¿Ñ)  ¿  »«ß½Ñ
  3663. (ó«ßßΓá¡«ó½Ñ¡¿Ñ) ó맮óá »α«µÑñπαδ DivideBy10:
  3664.  
  3665.          .
  3666.          .
  3667.          .
  3668.          mov   bx,[TableBase]   ; BX π¬áºδóáÑΓ ¡á ¡áτὫ
  3669.                                 ; Γáí½¿µδ
  3670.          mov   ax,[Element]     ; »«½πτ¿Γ∞ φ½Ñ¼Ñ¡Γ
  3671.          push  bx               ; ß«σαá¡¿Γ∞ BX
  3672.          call  DivideBy10       ; αáºñѽ¿Γ∞ φ½Ñ¼Ñ¡Γ ¡á 10
  3673.          pop   bx               ; ó«ßßΓá¡«ó¿Γ∞ BX
  3674.          add   bx,ax            ; ßßδ½¬á ¡á ß««ΓóÑΓßΓóπεΘπε
  3675.                                 ; ºá»¿ß∞
  3676.          .
  3677.          .
  3678.          .
  3679. ; Å«ñ»α«úαá¼¼á ñ½∩ ñѽѡ¿∩ º¡áτÑ¡¿∩ ¡á 10.
  3680. ;
  3681. ; éó«ñ:  AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ αáºñѽ¿Γ∞ ¡á 10
  3682. ; éδó«ñ: AX - º¡áτÑ¡¿Ñ, αáºñѽѡ¡«Ñ ¡á 10
  3683. ;        DX - «ßΓáΓ«¬ º¡áτÑ¡¿∩, ñѽѡ¡«ú« ¡á 10
  3684. DivideBy10     PROC NEAR
  3685.          mov   dx,0            ; »«ñú«Γ«ó¿Γ∞ DX:AX, ¬á¬
  3686.                                ; 32-í¿Γ«ó«Ñ ñѽ¿¼«Ñ
  3687.          mov   bx,10           ; BX - 16-í¿Γ«óδ⌐ ñѽ¿Γѽ∞
  3688.          div   dx
  3689.          ret
  3690. DivideBy10     ENDP
  3691.  
  3692. ½¿í« αÑú¿ßΓα BX ¼«ª¡« ºáúαπº¿Γ∞ »«ß½Ñ ó맮óá »α«µÑñπαδ, á ¡Ñ  »Ñ-
  3693. αÑñ ¡¿¼:
  3694.  
  3695.          .
  3696.          .
  3697.          .
  3698.          mov   ax,[Element]     ; »«½πτ¿Γ∞ φ½Ñ¼Ñ¡Γ
  3699.          call  DivideBy10       ; αáºñѽ¿Γ∞ φ½Ñ¼Ñ¡Γ ¡á 10
  3700.          mov   bx,[TableBase]   ; BX π¬áºδóáÑΓ ¡á ¡áτὫ
  3701.                                 ; Γáí½¿µδ
  3702.          add   bx,ax            ; ßßδ½¬á ¡á ß««ΓóÑΓßΓóπεΘπε
  3703.                                 ; ºá»¿ß∞
  3704.          .
  3705.          .
  3706.          .
  3707. ; Å«ñ»α«úαá¼¼á ñ½∩ ñѽѡ¿∩ º¡áτÑ¡¿∩ ¡á 10.
  3708. ;
  3709. ; éó«ñ:  AX - º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ αáºñѽ¿Γ∞ ¡á 10
  3710. ; éδó«ñ: AX - º¡áτÑ¡¿Ñ, αáºñѽѡ¡«Ñ ¡á 10
  3711. ;        DX - «ßΓáΓ«¬ º¡áτÑ¡¿∩, ñѽѡ¡«ú« ¡á 10
  3712. DivideBy10     PROC NEAR
  3713.          mov   dx,0            ; »«ñú«Γ«ó¿Γ∞ DX:AX, ¬á¬
  3714.                                ; 32-í¿Γ«ó«Ñ ñѽ¿¼«Ñ
  3715.          mov   bx,10           ; BX - 16-í¿Γ«óδ⌐ ñѽ¿Γѽ∞
  3716.          div   dx
  3717.          ret
  3718. DivideBy10     ENDP
  3719.  
  3720.      ÄíΘÑÑ αÑΦÑ¡¿Ñ φΓ«⌐ »α«í½Ñ¼δ ß«ßΓ«¿Γ ó Γ«¼,  τΓ«íδ  óßÑ  »«ñ-
  3721. »α«úαá¼¼δ, ¬«Γ«αδÑ ¼«úπΓ ¿º¼Ñ¡∩Γ∞ ß«ñÑন¼«Ñ αÑú¿ßΓα«ó, ß«σαá¡∩½¿
  3722. ¿σ, á ºáΓѼ ó«ßßΓá¡áó½¿ó὿. è ß«ªá½Ñ¡¿ε ñ½∩ φΓ«ú« ΓαÑíπÑΓß∩  ñ«-
  3723. »«½¡¿Γѽ∞¡«Ñ  óαѼ∩ ¿ ΓᬿѠ«»Ñαᵿ¿ πóѽ¿τ¿óáεΓ «íΩѼ »α«úαá¼¼δ,
  3724. τΓ« »α¿ó«ñ¿Γ ¬ ¡Ñ¬«Γ«αδ¼ »«ΓÑα∩¼ ó »αÑ¿¼πΘÑßΓóáσ »α«úαá¼¼¿α«óá¡¿∩
  3725. ¡á ÇßßѼí½ÑαÑ. äαπú«⌐ »«ñσ«ñ ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ ¬áªñá∩ »«ñ»α«ú-
  3726. αá¼¼á ß«»α«ó«ªñá½áß∞ ¬«¼¼Ñ¡Γáα¿Ñ¼, ó ¬«Γ«α«¼  π¬áºδóáÑΓß∩,  ¬á¬¿Ñ
  3727. αÑú¿ßΓαδ ß«σαá¡∩εΓß∩, á ¬á¬¿Ñ αáºαπΦáεΓß∩, ¿ á¬¬παáΓ¡« »α«óÑα∩Γ∞,
  3728. ¬«úñá óδ »«ñαáºπ¼ÑóáÑΓÑ, τΓ« ó »«ñ»α«úαἼѠαÑú¿ßΓα ¡Ñ  ¿º¼Ñ¡∩ÑΓ-
  3729. ß∩. àΘÑ «ñ¿¡ »«ñσ«ñ ºá¬½ετáÑΓß∩ ó ∩ó¡«¼ ß«σαá¡Ñ¡¿¿ ¡πª¡δσ αÑú¿ßΓ-
  3730. α«ó »α¿ ó맮óÑ »«ñ»α«úαá¼¼.
  3731.  
  3732.  
  3733.  
  3734.               ÄΦ¿í¬¿ »α¿ ¿ß»«½∞º«óá¡¿¿ πß½«ó¡δσ »ÑαÑσ«ñ«ó
  3735. -----------------------------------------------------------------
  3736.  
  3737.      êß»«½∞º«óá¡¿Ñ ó ∩ºδ¬Ñ ÇßßѼí½Ñαá ¿¡ßΓαπ¬µ¿⌐ πß½«ó¡δσ »ÑαÑσ«-
  3738. ñ«ó  (JE,  JNE,  JC,  JNC, JA, JB, JG ¿ Γ.ñ) «íÑß»Ñτ¿óáÑΓ í«½∞Φπε
  3739. ú¿í¬«ßΓ∞ ó »α«úαá¼¼¿α«óá¡¿¿, ¡« »α¿ φΓ«¼ ΓᬪѠ«τÑ¡∞ »α«ßΓ«  «Φ¿-
  3740. í¿Γ∞ß∩,  óδíαáó  ¡ÑóÑα¡δ⌐  »ÑαÑσ«ñ. èα«¼Ñ Γ«ú«, »«ß¬«½∞¬π ó ∩ºδ¬Ñ
  3741. ÇßßѼí½Ñαá á¡á½¿º πß½«ó¿∩ ¿ »ÑαÑσ«ñ ΓαÑíπεΓ »« ¬αá⌐¡Ñ⌐ ¼Ñαπ  ñóπσ
  3742. ßΓ᫬  ¿ßσ«ñ¡«ú«  ¬«ñá  (á  ß½«ª¡δσ πß½«ó¡δσ »ÑαÑσ«ñ«ó ¡Ñ߬«½∞¬¿σ
  3743. ßΓ᫬), πß½«ó¡δÑ »ÑαÑσ«ñδ ó ∩ºδ¬Ñ  ÇßßѼí½Ñαá  ¼Ñ¡ÑÑ  «τÑó¿ñ¡δ  ¿
  3744. í«½∞ΦÑ ß»«ß«íßΓóπεΓ «Φ¿í¬á¼, τѼ ß««ΓóÑΓßΓóπεΘ¿Ñ «»ÑαáΓ«αδ Åá߬á-
  3745. ½∩ ¿ æ¿.
  3746.  
  3747.      1.  Äñ¡«⌐ ¿º «íΘ¿σ «Φ¿í«¬ ∩ó½∩ÑΓß∩ ¿ß»«½∞º«óá¡¿Ñ  ¿¡ßΓαπ¬µ¿⌐
  3748.          JA,  JB,  JAE  ¿½¿  JBE ñ½∩ ßαáó¡Ñ¡¿∩ º¡áτÑ¡¿⌐ ß« º¡á¬«¼
  3749.          ¿½¿, ß««ΓóÑΓßΓóÑ¡¡«, ¿¡ßΓαπ¬µ¿⌐ JG, JL, JGE ¿½¿ JLE  ñ½∩
  3750.          ßαáó¡Ñ¡¿∩ íѺº¡á¬«óδσ º¡áτÑ¡¿⌐.
  3751.  
  3752.      2.  àΘÑ «ñ¡á «íΘá∩ «Φ¿í¬á ºá¬½ετáÑΓß∩ ó ¿ß»«½∞º«óá¡¿¿,  ß¬á-
  3753.          ªÑ¼, ¿¡ßΓαπ¬µ¿¿ JA Γá¼, úñÑ ¡πª¡« ¿ß»«½∞º«óáΓ∞ JAE. ìπª-
  3754.          ¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« íѺ íπ¬óδ E ó ¬«¡µÑ  ¿¡ßΓαπ¬µ¿¿  ó
  3755.          ßαáó¡Ñ¡¿¿ ¡Ñ πτ¿ΓδóáÑΓß∩ ß½πτá⌐, ¬«úñá ñóá «»Ñαá¡ñá αáó-
  3756.          ¡δ.
  3757.  
  3758.      3.  àΘÑ «ñ¡«⌐ «íΘÑ⌐ «Φ¿í¬«⌐ ∩ó½∩ÑΓß∩ ¿ß»«½∞º«óá¡¿Ñ  ¿¡óÑαΓ¿-
  3759.          α«óá¡¡«⌐ ½«ú¿¬¿, ¡á»α¿¼Ñα, »α¿¼Ñ¡Ñ¡¿Ñ ¿¡ßΓαπ¬µ¿¿ JS Γá¼,
  3760.          úñÑ ¡πª¡« ¿ß»«½∞º«óáΓ∞ JNS.
  3761.  
  3762.      Äñ¿¡ ¿º »«ñσ«ñ«ó, »«ºó«½∩εΘ¿⌐ ¼¿¡¿¼¿º¿α«óáΓ∞ «Φ¿í¬¿ »α¿  ¿ß-
  3763. »«½∞º«óá¡¿¿  πß½«ó¡δσ »ÑαÑσ«ñ«ó ß«ßΓ«¿Γ ó ¬«¼¼Ñ¡Γ¿α«óá¡¿¿ »ÑαÑσ«-
  3764. ñ«ó ó ß««ΓóÑΓßΓó¿¿ ß «í«º¡áτÑ¡¿∩¼¿, á¡á½«ú¿τ¡δ¼¿ ∩ºδ¬π æ¿. ìá»α¿-
  3765. ¼Ñα:
  3766.  
  3767.          .
  3768.          .
  3769.          .
  3770. ;
  3771. ; if ( Length > MaxLength ) (
  3772. ;
  3773.          mov   ax,[Length]
  3774.          cmp   ax,[MaxLength]
  3775.          jng   LengthIsLessThanMax
  3776.          .
  3777.          .
  3778.          .
  3779.          jng   EndMaxLengthTest
  3780. ;
  3781. ; ) else (
  3782. ;
  3783. LengthIsLessThanMax:
  3784.          .
  3785.          .
  3786.          .
  3787. ;
  3788. ; )
  3789. ;
  3790. EndMaxLengthTest:
  3791.          .
  3792.          .
  3793.          .
  3794.  
  3795.  
  3796.  
  3797.  
  3798. ÄΦ¿í¬¿ ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ
  3799. -----------------------------------------------------------------
  3800.  
  3801.      æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ - φΓ« ßá¼δÑ ¼«Θ¡δÑ ¿  π¡¿¬á½∞¡δÑ  ¿¡ßΓ-
  3802. απ¬µ¿¿  ßαÑñ¿  ¡áí«αá  ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 8086. ¥Γ¿ «ß«íÑ¡¡«ß-
  3803. Γ¿ »«α«ªñáεΓ ¡Ñ߬«½∞¬« «»¿ßδóáѼδσ ñá½ÑÑ »α«í½Ñ¼.
  3804.  
  3805.  
  3806.  
  3807.                 ìÑóÑα¡«Ñ »«¡¿¼á¡¿Ñ αáí«Γδ »αÑΣ¿¬ßá REP
  3808. -----------------------------------------------------------------
  3809.  
  3810.      æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ «í½áñáεΓ ½εí«»δΓ¡«⌐ «ß«íÑ¡¡«ßΓ∞ε: »«ß½Ñ
  3811. ¿σ óδ»«½¡Ñ¡¿∩ ¿ß»«½∞ºπѼδÑ ¿¼¿ π¬áºáΓѽ¿ ßßδ½áεΓß∩ ¡á áñαÑß, »αÑ-
  3812. óδΦáεΘ¿Ñ ¡á 1 íá⌐Γ (¿½¿ ¡á ñóá íá⌐Γá ó ß½πτáÑ ¿¡ßΓαπ¬µ¿¿ ñ½∩  αá-
  3813. í«Γδ  ß«  ß½«óἿ)  »«ß½Ññ¡¿⌐ «íαáí«Γá¡¡δ⌐ áñαÑß. ìá»α¿¼Ñα, »«ß½Ñ
  3814. óδ»«½¡Ñ¡¿∩ ß½ÑñπεΘÑú« ¬«ñá:
  3815.  
  3816.          .
  3817.          .
  3818.          .
  3819.          cld            ; «ΓßτÑΓ ó ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿
  3820.                         ; ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
  3821.          mov   si,0     ; ßßδ½¬á ¡á ß¼ÑΘÑ¡¿Ñ 0
  3822.          lodsb          ; ßτ¿ΓáΓ∞ íá⌐Γ »« ß¼ÑΘÑ¡¿ε 0
  3823.          .
  3824.          .
  3825.          .
  3826.  
  3827. αÑú¿ßΓα SI íπñÑΓ ß«ñÑαªáΓ∞ ¡Ñ 0, á 1. ¥Γ« ¿¼ÑÑΓ ß¼δß½,  »«ß¬«½∞¬π
  3828. ó  ß½ÑñπεΘÑ⌐ ¿¡ßΓαπ¬µ¿¿ LODSB óδ, óÑα«∩Γ¡«, ºáσ«Γ¿ΓÑ «íαáΓ¿Γ∞ß∩ ¬
  3829. áñαÑßπ 1, á ó ÑΘÑ «ñ¡«⌐ - ¬ áñαÑßπ 2. ì« »α¿ »«óΓ«αÑ¡¿¿ ßΓ᫬«óδσ
  3830. ¿¡ßΓαπ¬µ¿⌐  φΓ«  ¼«ªÑΓ  óδºóáΓ∞ ¡Ñ¬«Γ«απε  »πΓá¡¿µπ, «ß«íÑ¡¡« »α¿
  3831. ¿ß»«½∞º«óá¡¿¿ REP SCAS ¿ REP CMPS. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐  Σαáú¼Ñ¡Γ
  3832. »α«úαá¼¼δ:
  3833.  
  3834.          .
  3835.          .
  3836.          .
  3837.          cld                         ; «ΓßτÑΓ ó ßΓ᫬«ó«⌐
  3838.                                      ; ¿¡ßΓαπ¬µ¿¿ ó »α∩¼«¼
  3839.                                      ; ¡á»αáó½Ñ¡¿¿
  3840.          les   di,[bp+ScanString]    ; ES:DI π¬áºδóáεΓ ¡á
  3841.                                      ; »α«ß¼áΓα¿óáѼπε ßΓ᫬π
  3842.          mov   cx,MAX_STRING_LEN     ; »α«óÑα¿Γ∞ ñ« ßἫ⌐
  3843.                                      ; ñ½¿¡¡«⌐ ßΓ᫬¿
  3844.          mov   al,0                  ; »«¿ß¬ ºáóÑαΦáεΘÑú« ¡π½∩
  3845.          repne scasb                 ; óδ»«½¡¿Γ∞ »«¿ß¬
  3846.          .
  3847.          .
  3848.          .
  3849.  
  3850.      ÅαÑñ»«½«ª¿¼, º¡áτÑ¡¿Ñ αÑú¿ßΓαá ES αáó¡« 2000h, DI = 0, á »á-
  3851. ¼∩Γ∞, ¡áτ¿¡áεΘá∩ß∩ »« áñαÑßπ 2000:0000 ß«ñÑαª¿Γ º¡áτÑ¡¿∩:
  3852.  
  3853.      41h   61h   72h   64h   00h
  3854.  
  3855.      Å«ß½Ñ óδ»«½¡Ñ¡¿∩ φΓ«ú« ¬«ñá αÑú¿ßΓα DI íπñÑΓ ß«ñÑαªáΓ∞  º¡á-
  3856. τÑ¡¿Ñ 5 - ß¼ÑΘÑ¡¿Ñ íá⌐Γá »«ß½Ñ Γ«ú« íá⌐Γá, ó ¬«Γ«α«¼ ¡á⌐ñÑ¡« º¡á-
  3857. τÑ¡¿Ñ 0. ùΓ«íδ ó«ºóαáΓ¿Γ∞ π¬áºáΓѽ∞ ¡á »«ß½Ññ¡¿⌐  ß¿¼ó«½  ßΓ᫬¿,
  3858. »αÑñδñπΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ ñ«½ªÑ¡ ¿¼ÑΓ∞ ß½ÑñπεΘ¿⌐ ó¿ñ:
  3859.  
  3860.          .
  3861.          .
  3862.          .
  3863.          cld                         ; «ΓßτÑΓ ó ßΓ᫬«ó«⌐
  3864.                                      ; ¿¡ßΓαπ¬µ¿¿ ó »α∩¼«¼
  3865.                                      ; ¡á»αáó½Ñ¡¿¿
  3866.          les   di,[bp+ScanString]    ; ES:DI π¬áºδóáεΓ ¡á
  3867.                                      ; »α«ß¼áΓα¿óáѼπε ßΓ᫬π
  3868.          mov   cx,MAX_STRING_LEN     ; »α«óÑα¿Γ∞ ñ« ßἫ⌐
  3869.                                      ; ñ½¿¡¡«⌐ ßΓ᫬¿
  3870.          mov   al,0                  ; »«¿ß¬ ºáóÑαΦáεΘÑú« ¡π½∩
  3871.          repne scasb                 ; óδ»«½¡¿Γ∞ »«¿ß¬
  3872.          jne   NoMatch               ; «Φ¿í¬á: ºáóÑαΦáεΘ¿⌐ 0
  3873.                                      ; ¡Ñ ¡á⌐ñÑ¡
  3874.          dec   di                    ; ßßδ½¬á «íαáΓ¡« ¡á 0
  3875.          dec   di                    ; ccδ½¬á «íαáΓ¡« ¡á
  3876.                                      ; »«ß½Ññ¡¿⌐ ß¿¼ó«½
  3877.          ret
  3878. NoMatch:
  3879.          mov   di,0                  ; ó«ºóαáΓ¿Γ∞ ¡π½Ñó«⌐
  3880.                                      ; π¬áºáΓѽ∞
  3881.          mov   es,di
  3882.          ret
  3883.          .
  3884.          .
  3885.          .
  3886.  
  3887.      ìπª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« ¬«úñá Σ½áú  ¡á»αáó½Ñ¡¿∩  πßΓá¡«ó½Ñ¡
  3888. Γᬿ¼  «íαẫ¼,  τΓ« ó ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ íπñÑΓ óδ»«½¡∩Γ∞ß∩ «í-
  3889. αáΓ¡δ⌐ «ΓßτÑΓ, αÑú¿ßΓα DI íπñÑΓ π¬áºδóáΓ∞ ¡á »αÑñδñπΘ¿⌐  íá⌐Γ,  á
  3890. ¡Ñ ¡á »«ß½ÑñπεΘ¿⌐ (»«ß½Ñ »«ß½Ññ¡Ñú« ¡á⌐ñÑ¡¡«ú« ß¿¼ó«½á).
  3891.  
  3892.      Ç¡á½«ú¿τ¡á∩ »πΓá¡¿µá ¼«ªÑΓ »α«¿º«⌐Γ¿, ¬«úñá »α¿  ¿ß»«½∞º«óá-
  3893. ¡¿¿ ¿¡ßΓαπ¬µ¿⌐ REP SCAS ¿ REP CMPS αÑú¿ßΓα CX π¼Ñ¡∞ΦáÑΓß∩ ¡á Ññ¿-
  3894. ¡¿µπ í«½∞ΦÑ, τѼ φΓ«ú« ¼«ª¡« «ª¿ñáΓ∞. ç¡áτÑ¡¿Ñ αÑú¿ßΓαá CX π¼Ñ¡∞-
  3895. ΦáÑΓß∩ ¡Ñ Γ«½∞¬«  ñ½∩  ¬áªñ«ú«  íá⌐Γá,  πñ«ó½ÑΓó«α∩εΘÑú«  πß½«ó¿ε
  3896. "»«óΓ«α∩Γ∞,  »«¬á  αáó¡« (¿½¿ ¡Ñ αáó¡«)",  ¡« ¿ ÑΘÑ ¡á 1 ñ½∩ Γ«ú«
  3897. íá⌐Γá,  ñ½∩ ¬«Γ«α«ú« πß½«ó¿Ñ ¡Ñ óδ»«½¡Ñ¡« (τΓ« »α¿ó«ñ¿Γ ¬ »αѬαá-
  3898. ΘÑ¡¿ε óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿).
  3899.  
  3900.      ìá»α¿¼Ñα, Ñß½¿ ó »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ íá⌐Γ  2000:0000  ß«ñÑনΓ
  3901. 0, Γ« »«ß½Ñ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿¿ αÑú¿ßΓα CX ß«ñÑαªá½ íδ º¡áτÑ¡¿Ñ
  3902. MAX_STRING_LEN-1, ñáªÑ  Ñß½¿  ¡¿  «ñ¿¡  ¡Ñ¡π½Ñó«⌐ ß¿¼ó«½  ¡Ñ  íδ½
  3903. ¡á⌐ñÑ¡. æ πτÑΓ«¼ óßÑú« ß¬áºá¡¡«ú« »«ñ»α«úαá¼¼á ñ½∩ »«ñßτÑΓá τ¿ß½á
  3904. ß¿¼ó«½«ó ó ßΓα«¬Ñ ñ«½ª¡á ¿¼ÑΓ∞ ß½ÑñπεΘ¿⌐ ó¿ñ:
  3905.  
  3906. ; é«ºóαáΘáÑΓ ñ½¿¡π ó íá⌐Γáσ ßΓ᫬¿, ºáóÑαΦáεΘÑ⌐ß∩ ¡π½Ñ¼.
  3907. ; éó«ñ:  ES:DI - ¡áτὫ ßΓ᫬¿
  3908. ; éδó«ñ: AX - ñ½¿¡á ßΓ᫬¿, ¿ß¬½ετá∩ ºáóÑαΦáεΘ¿⌐ 0
  3909. ;        ES:DI - π¬áºδóáεΓ ¡á »«ß½Ññ¡¿⌐ íá⌐Γ ßΓ᫬¿ ¿½¿
  3910. ;        ß«ñÑαªáΓ 0000:0000, Ñß½¿ ºáóÑαΦáεΘ¿⌐ 0 ¡Ñ íδ½
  3911. ;        ¡á⌐ñÑ¡
  3912. ;
  3913. StringLength   PROC NEAR
  3914.          cld                  ; «ΓßτÑΓ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
  3915.          push   cx            ; ß«σαá¡¿Γ∞ º¡áτÑ¡¿Ñ CX
  3916.          mov    cx,0FFFFh     ; ¼á¬ß¿¼á½∞¡á∩ ñ½¿¡á »«¿ß¬á
  3917.          mov    al,0          ; ºáóÑαΦáεΘ¿⌐ íá⌐Γ, ñ« ¬«Γ«α«ú«
  3918.                               ; ¡πª¡« óδ»«½¡∩Γ∞ »«¿ß¬
  3919.          repne  scasb         ; »«¿ß¬ ºáóÑαΦáεΘÑú« ¡π½∩
  3920.          jne    StringLengthError ; «Φ¿í¬á, Ñß½¿ ¬«¡Ñµ ßΓ᫬¿
  3921.                               ; ¡Ñ ¡á⌐ñÑ¡
  3922.          mov   ax,0FFFFh      ; ¼á¬ß¿¼á½∞¡á∩ ñ½¿¡á
  3923.                               ; »α«ß¼áΓα¿óáѼ«⌐ ßΓ᫬¿
  3924.          sub   ax,cx          ; »«ß¼«ΓαÑΓ∞, ß¬«½∞¬« íá⌐Γ
  3925.                               ; í佫 »«ñßτ¿Γá¡«
  3926.          dec   ax             ; ¡Ñ ßτ¿ΓáΓ∞ ºáóÑαΦáεΘ¿⌐ 0
  3927.          dec   di             ; »ÑαѼÑßΓ¿Γ∞ π¬áºáΓѽ∞ «íαáΓ¡«
  3928.                               ; ¡á ºáóÑαΦáεΘ¿⌐ 0
  3929.          dec   di             ; »ÑαѼÑßΓ¿Γ∞ π¬áºáΓѽ∞ ¡á
  3930.                               ; »«ß½Ññ¡¿⌐ ß¿¼ó«½
  3931.          jmp   short StringLengthEnd
  3932. StringLenghtError:
  3933.          mov   di,0           ; ó«ºóαáΓ¿Γ∞ ¡π½Ñó«⌐ π¬áºáΓѽ∞
  3934.          mov   es,di
  3935. StringLengthEnd:
  3936.          pop   cx             ; ó«ßßΓá¡«ó¿Γ∞ ¿ßσ«ñ¡«Ñ º¡áτÑ¡¿Ñ CX
  3937.          ret
  3938. StringLength   ENDP
  3939.  
  3940.      äαπúá∩ »«ΓÑ¡µ¿á½∞¡á∩ »α«í½Ñ¼á, ó«º¡¿¬áεΘá∩ ¿º-ºá  Γ«ú«,  τΓ«
  3941. αÑú¿ßΓα CX π¬áºδóáÑΓ ß« ß¼ÑΘÑ¡¿Ñ¼ ¡á «ñ¿¡ íá⌐Γ  »«ß½Ñ  óδ»«½¡Ñ¡¿∩
  3942. ¿¡ßΓαπ¬µ¿⌐  REP SCAS ¿½¿ REP CMPS,  ß«ßΓ«¿Γ ó Γ«¼,  º¡áτÑ¡¿Ñ CX ó
  3943. ¬«¡µÑ ßαáó¡Ñ¡¿∩ ¼«ªÑΓ íδΓ∞ ¡π½Ñóδ¼,  ñáªÑ Ñß½¿ πß½«ó¿Ñ ºáóÑαΦÑ¡¿∩
  3944. ¡Ñ «í¡áαπªÑ¡«.  æ½ÑñπεΘ¿⌐ ¬«ñ ¡Ñ íπñÑΓ ¬«ααÑ¬Γ¡« «»αÑñѽ∩Γ∞, ß«ó-
  3945. »áñáεΓ ½¿ ñóá ¼áßß¿óá,  Γᬠ¬á¬ αÑú¿ßΓα CX »α¿¼ÑΓ º¡áτÑ¡¿Ñ 0  »α¿
  3946. ßαáó¡Ñ¡¿¿ ñóπσ ¡Ñß«ó»áñáεΘ¿σ ¼áßß¿ó«ó,  ¬«Γ«αδÑ «Γ½¿τáεΓß∩ Γ«½∞¬«
  3947. »«ß½Ññ¡¿¼ íá⌐Γ«¼:
  3948.  
  3949.          .
  3950.          .
  3951.          .
  3952.          repz   cmpsb
  3953.          jcxz   ArraysAreTheSame
  3954.          .
  3955.          .
  3956.          .
  3957.  
  3958.      è«ααÑ¬Γ¡δ¼¿ ¿¡ßΓαπ¬µ¿∩¼¿, »α«óÑα∩εΘ¿¼¿  αáóÑ¡ßΓó«  ¼áßß¿ó«ó,
  3959. íπñπΓ ß½ÑñπεΘ¿Ñ:
  3960.  
  3961.          .
  3962.          .
  3963.          .
  3964.          repz   cmpsb
  3965.          jz     ArraysAreTheSame
  3966.          .
  3967.          .
  3968.          .
  3969.  
  3970.      è«α«τÑ ú«ó«α∩, αÑú¿ßΓα CX ß½ÑñπÑΓ  ¿ß»«½∞º«óáΓ∞  Γ«½∞¬«  ¬á¬
  3971. ßτÑΓτ¿¬ íá⌐Γ,  »α«ß¼áΓα¿óáѼδσ ó ¿¡ßΓαπ¬µ¿∩σ REP SCAS ¿ REP CMPS,
  3972. á  ¡Ñ  ¬á¬  π¬áºáΓѽ∞ Γ«ú«,  τΓ« »α«ß¼áΓα¿óáѼδÑ ¿½¿ ßαáó¡¿óáѼδÑ
  3973. ñá¡¡δÑ «¬áºá½¿ß∞ αáó¡δ ¿½¿ ¡Ñ αáó¡δ.
  3974.  
  3975.      àß½¿ »α¿ αáí«ΓÑ ó  óáΦ¿σ  »α«úαá¼¼áσ  »«óΓ«α∩Ѽδσ  ßΓ᫬«óδσ
  3976. ¿¡ßΓαπ¬µ¿⌐  óδ  óßΓαÑΓ¿ΓÑ ºáΓαπñ¡Ñ¡¿∩, Γ« ½πτΦÑ óßÑú« íπñÑΓ ß »«-
  3977. ¼«Θ∞ε ¬áαá¡ñáΦá ¿ íπ¼áú¿ ¿½¿ «Γ½áñτ¿¬á «Γß½Ññ¿Γ∞  »«  Φáúá¼,  τΓ«
  3978. ñѽáÑΓ óáΦá »«óΓ«α∩εΘá∩ß∩ ßΓ᫬«óá∩ ¿¡ßΓαπ¬µ¿∩.
  3979.  
  3980.  
  3981.  
  3982.        ìπ½Ñó«Ñ ß«ñÑন¼«Ñ αÑú¿ßΓαá CX ¿ αáí«Γá ß µÑ½δ¼ ßÑú¼Ñ¡Γ«¼
  3983. -----------------------------------------------------------------
  3984.  
  3985.      Åα¿ óδ»«½¡Ñ¡¿¿ ½εí«⌐ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ ß  ß«ñÑন¼δ¼  αÑ-
  3986. ú¿ßΓαá CX,  αáó¡δ¼ 0,  ¡Ñ íπñÑΓ óδ»«½¡∩Γ∞ß∩ ¡¿¬á¬¿σ Σπ¡¬µ¿⌐.  ¥Γ«
  3987. ¼«ªÑΓ «¬áºáΓ∞ß∩ πñ«í¡δ¼, Γᬠ¬á¬ »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ ßΓ᫬«ó«⌐ ¿¡ß-
  3988. Γαπ¬µ¿¿ ¡Ñ ¡πª¡« ñѽáΓ∞ »α«óÑα¬π ¡á 0. æ ñαπú«⌐ ßΓ«α«¡δ, ¡ÑΓ ß»«-
  3989. ß«íá »«½πτ¿Γ∞ ñ«ßΓπ» ¬ ¬áªñ«¼π íá⌐Γπ ßÑú¼Ñ¡Γá ß  »«¼«Θ∞ε íá⌐Γ«ó«⌐
  3990. ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿.  ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ ¬«ñá »α«ß-
  3991. ¼áΓα¿óáÑΓß∩ ßÑú¼Ñ¡Γ, ºáñá¡¡δ⌐ αÑú¿ßΓα«¼ ES, ¿ ¿ΘÑΓß∩ »Ñαó«Ñ óσ«ª-
  3992. ñÑ¡¿Ñ íπ¬óδ A:
  3993.  
  3994.          .
  3995.          .
  3996.          .
  3997.          cld             ; »«¿ß¬ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
  3998.          sub   di,di     ; ¡áτáΓ∞ »« ß¼ÑΘÑ¡¿ε 0
  3999.          mov   al,'A'    ; ñ« «í¡áαπªÑ¡¿∩ íπ¬óδ 'A'
  4000.          mov   cx,0FFFFh ; ß¡áτá½á »α«óÑα¿Γ∞ »ÑαóδÑ 64è
  4001.          repne SCASb     ; »α«ß¼«ΓαÑΓ∞ »ÑαóδÑ 64è-1 íá⌐Γ
  4002.          je    AFound    ; ¡á⌐Γ¿ A
  4003.          scasb           ; ÑΘÑ ¡Ñ ¡á⌐ñÑ¡á: »α«ß¼«ΓαÑΓ∞
  4004.                          ; »«ß½Ññ¡¿⌐ íá⌐Γ
  4005.          je    AFound    ; ¡á⌐Γ¿ ÑÑ ó »«ß½Ññ¡Ñ¼ íá⌐ΓÑ
  4006.          .               ; ó ñá¡¡«¼ ßÑú¼Ñ¡ΓÑ ¡ÑΓ íπ¬óδ 'A'
  4007.          .
  4008.          .
  4009. AFound:                  ; DI - 1 π¬áºδóáÑΓ ¡á íπ¬óπ 'A'
  4010.          .
  4011.          .
  4012.          .
  4013.  
  4014.      é ¿ß»«½∞º«óá¡¿¿ »α¿ «ΓßτÑΓÑ ¡π½Ñóδσ º¡áτÑ¡¿⌐ αÑú¿ßΓαá  CX  ó
  4015. ¡áí«αÑ  ¿¡ßΓαπ¬µ¿⌐  »α«µÑßß«αá  8086  ¿¼ÑÑΓß∩ "¡Ñß¿¼¼ÑΓα¿∩". é Γ«
  4016. óαѼ∩, ¬á¬ »«óΓ«α∩εΘá∩ß∩ ßΓ᫬«óá∩ ¿¡ßΓαπ¬µ¿∩ »α¿ ¡π½Ñó«¼  º¡áτÑ-
  4017. ¡¿¿  CX ó««íΘÑ ¡Ñ óδ»«½¡∩ÑΓ ¡¿¬á¬¿σ «»Ñαᵿ⌐, ¿¡ßΓαπ¬µ¿∩ LOOP »α¿
  4018. º¡áτÑ¡¿¿ CX, αáó¡δ¼  0,  óδ»«½¡∩ÑΓß∩,  π¼Ñ¡∞Φá∩  CX  ñ«  º¡áτÑ¡¿∩
  4019. 0FFFFh  ¿ «ßπΘÑßΓó½∩∩ »ÑαÑσ«ñ ¡á áñαÑß µ¿¬½á. ¥Γ« «º¡áτáÑΓ, τΓ« ó
  4020. «ñ¡«¼ µ¿¬½Ñ ¼«ª¡« «íαáí«ΓáΓ∞ óßÑ 64è. ÅαÑñδñπΘ¿⌐ »α¿¼Ñα, úñÑ  ß«-
  4021. ñÑন¼«Ñ  ßÑú¼Ñ¡Γá,  ºáñá¡¡«ú«  αÑú¿ßΓα«¼  CX, »α«ß¼áΓα¿óáÑΓß∩ ¡á
  4022. »αÑñ¼ÑΓ ¡á½¿τ¿∩ íπ¬óδ A, ¼«ª¡« αÑ὿º«óáΓ∞ ß  »«¼«Θ∞ε  ¿¡ßΓαπ¬µ¿¿
  4023. LOOP ß½ÑñπεΘ¿¼ «íαẫ¼:
  4024.  
  4025.          .
  4026.          .
  4027.          .
  4028.          cld             ; »α«ß¼«Γα ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
  4029.          sub   di,di     ; ¡áτáΓ∞ ß« ß¼ÑΘÑ¡¿∩ 0
  4030.          mov   al,'A'    ;
  4031.          sub   cx,cx     ; »«¿ß¬ ó 64è
  4032. ASearchLoop:
  4033.          scasb           ; »α«óÑα¿Γ∞ ß½ÑñπεΘ¿⌐ íá⌐Γ
  4034.          je    AFound    ; φΓ« íπ¬óá 'A'
  4035.          loop  ASearchLoop ; ó φΓ«¼ ßÑú¼Ñ¡ΓÑ ¡ÑΓ íπ¬óδ 'A'
  4036.          .
  4037.          .
  4038.          .
  4039. AFound:                  ; ¡á íπ¬óπ 'A' π¬áºδóáÑΓ DI - 1
  4040.          .
  4041.          .
  4042.          .
  4043.  
  4044.      æ ñαπú«⌐ ßΓ«α«¡δ, ß½πτá⌐, ¬«úñá CX = 0, ΓαÑíπÑΓ  ß»Ñµ¿á½∞¡«⌐
  4045. »α«óÑન  »α¿  ¿ß»«½∞º«óá¡¿¿  ¿¡ßΓαπ¬µ¿¿ LOOP (ó »α«Γ¿ó¡«¼ ß½πτáÑ
  4046. íπñπΓ «íαáí«Γá¡δ 64è ¬«ñá ß ó«º¼«ª¡« ¬áΓáßΓα«Σ¿τÑ߬¿¼¿ ñ½∩  »α«ú-
  4047. αá¼¼δ  »«ß½ÑñßΓó¿∩¼¿). é Γᬿσ ß½πτá∩σ »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ¿¡ßΓ-
  4048. απ¬µ¿ε JCXZ:
  4049.  
  4050. ; Å«ñ»α«úαá¼¼á ñ½∩ ºá»«½¡Ñ¡¿∩ 64è - 1 íá⌐Γ ºáñá¡¡δ¼ º¡áτÑ¡¿Ñ¼.
  4051. ; éó«ñ:  AL - ºáñá¡¡«Ñ º¡áτÑ¡¿Ñ-ºá»«½¡¿Γѽ∞
  4052. ;        CX - ¬«½¿τÑßΓ󫠺ừ½¡∩Ѽδσ íá⌐Γ
  4053. ;        DS:BX - ¡áτá½∞¡δ⌐ áñαÑß ºá»«½¡Ñ¡¿∩
  4054. ; ÉÑú¿ßΓαδ BX ¿ CX ¿º¼Ñ¡∩εΓß∩.
  4055. ;
  4056. FillBytes    PROC NEAR
  4057.          jcxz FillBytesEnd        ; Ñß½¿ τ¿ß½« ºá»«½¡∩Ѽδσ íá⌐Γ
  4058.                                   ; αáó¡« 0, óδ»«½¡¿Γ∞
  4059. FillBytesLoop:
  4060.          mov   [bx],al            ; ºá»«½¡¿Γ∞ íá⌐Γ
  4061.          inc   bx                 ; ßßδ½¬á ¡á ß½ÑñπεΘ¿⌐ íá⌐Γ
  4062.          loop  FillBytesLoop      ; óδ»«½¡¿Γ∞ ñ½∩ ºáñá¡¡«ú«
  4063.                                   ; τ¿ß½á íá⌐Γ
  4064. FillBytesEnd:
  4065.          ret
  4066. FillBytes      ENDP
  4067.  
  4068.      üѺ ¿¡ßΓαπ¬µ¿¿ JCXZ, ¬«úñá º¡áτÑ¡¿Ñ CX  αáó¡«  0,  »α«µÑñπαá
  4069. FillBytes ºá»«½¡¿½á íδ óÑß∞ ßÑú¼Ñ¡Γ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ αÑú¿ßΓα
  4070. ES, º¡áτÑ¡¿Ñ¼ ó αÑú¿ßΓαÑ AL, ó¼ÑßΓ« Γ«ú«, τΓ«íδ  «ßΓáó¿Γ∞  »á¼∩Γ∞
  4071. íѺ ¿º¼Ñ¡Ñ¡¿⌐.
  4072.  
  4073.  
  4074.          êß»«½∞º«óá¡¿Ñ ¡Ñ¬«ααÑ¬Γ¡« ºáñá¡¡«ú« Σ½áúá ¡á»αáó½Ñ¡¿∩
  4075. -----------------------------------------------------------------
  4076.  
  4077.      Åα¿ óδ»«½¡Ñ¡¿¿ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ ó ºáó¿ß¿¼«ßΓ¿ «Γ ß«ßΓ«∩-
  4078. ¡¿∩ Σ½áúá ¡á»αáó½Ñ¡¿∩ ß««ΓóÑΓßΓóπεΘ¿Ñ αÑú¿ßΓαδ-π¬áºáΓѽ¿ (¿½¿ αÑ-
  4079. ú¿ßΓα) SI, DI ¿½¿ «íá αÑú¿ßΓαá πóѽ¿τ¿óáεΓß∩ ¿½¿ π¼Ñ¡∞ΦáεΓß∩.
  4080.  
  4081.      ö½áú ¡á»αáó½Ñ¡¿∩ ¼«ª¡« «τ¿ßΓ¿Γ∞ ß  »«¼«Θ∞ε  ¿¡ßΓαπ¬µ¿¿  CLD,
  4082. »α¿ φΓ«¼ π¬áºáΓѽ¿ íπñπΓ πóѽ¿τ¿óáΓ∞ß∩ («ΓßτÑΓ ó »α∩¼«¼ ¡á»αáó½Ñ-
  4083. ¡¿¿), ¿½¿ πßΓá¡«ó¿Γ∞ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ STD, »α¿ φΓ«¼ π¬áºáΓѽ¿
  4084. íπñπΓ π¼Ñ¡∞ΦáΓ∞ß∩ («ΓßτÑΓ ó «íαáΓ¡«¼ ¡á»αáó½Ñ¡¿¿). üπñπτ¿ «τ¿ΘÑ¡-
  4085. ¡δ¼ ¿½¿ πßΓá¡«ó½Ñ¡¡δ¼, Σ½áú ¡á»αáó½Ñ¡¿∩ «ßΓáÑΓß∩ ó Γᬫ¼  ß«ßΓ«∩-
  4086. ¡¿¿  ñ« óδ»«½¡Ñ¡¿∩ ß½ÑñπεΘÑ⌐ ¿¡ßΓαπ¬µ¿¿ CLD ¿½¿ STD ¿½¿ ñ« ¿ºó½Ñ-
  4087. τÑ¡¿∩ Σ½áú«ó ¿º ßΓѬá ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ POPF  ¿½¿  IRET.  ò«Γ∩
  4088. «τÑ¡∞  πñ«í¡« íδóáÑΓ πßΓá¡«ó¿Γ∞ «ñ¿¡ αẠó »α«úαá¼¼Ñ Σ½áú ¡á»αáó-
  4089. ½Ñ¡¿∩, á ºáΓѼ óδ»«½¡∩Γ∞ ßÑα¿ε ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐, αáí«ΓáεΘ¿σ ó
  4090. «ñ¡«¼  ¡á»αáó½Ñ¡¿¿, ¿º-ºá ¡Ñú« ¼«úπΓ ó«º¡¿¬áΓ∞ ΓᬪѠΓαπñ¡« «í¡á-
  4091. απª¿óáѼδÑ «Φ¿í¬¿, τΓ« »α¿ó«ñ¿Γ ¬ ¡Ñ«ª¿ñá¡¡«¼π »«óÑñÑ¡¿ε  ßΓ᫬«-
  4092. óδσ ¿¡ßΓαπ¬µ¿⌐, ó ºáó¿ß¿¼«ßΓ¿ «Γ ¬«ñá, ¬«Γ«αδ⌐ óδ»«½¡∩½ß∩ ¡á¼¡«ú«
  4093. αá¡∞ΦÑ.
  4094.  
  4095.      Å«τѼπ φΓ« »α«¿ßσ«ñ¿Γ?  é í«½∞Φ¿¡ßΓóÑ »α«úαá¼¼ Σ½áú  ¡á»αáó-
  4096. ½Ñ¡¿∩  »«τΓ¿  óßÑúñá ßíαáßδóáÑΓß∩, »«ß¬«½∞¬π «ΓßτÑΓ ó »α∩¼«¼ ¡á»-
  4097. αáó½Ñ¡¿¿ ¿¡Γπ¿Γ¿ó¡« »α«ΘÑ, τѼ «ΓßτÑΓ ó «íαáΓ¡«¼  ¡á»αáó½Ñ¡¿¿,  ¿
  4098. αáí«ΓáÑΓ  «¡ ó« ¼¡«ú¿σ ß½πτá∩σ »αѬαáß¡«. Äñ¡á¬«, ¿¼ÑεΓß∩ «Γñѽ∞-
  4099. ¡δÑ ß¿Γπᵿ¿, ¬«úñá ¼«ª¡« ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« «ΓßτÑΓ  ó  «íαáΓ¡«¼
  4100. ¡á»αáó½Ñ¡¿¿.  àß½¿  óδ »« »α¿óδτ¬Ñ íπñÑΓÑ »«ñαáºπ¼ÑóáΓ∞, τΓ« Σ½áú
  4101. ¡á»αáó½Ñ¡¿∩ óßÑúñá «τ¿ΘÑ¡, ¡« ºáíπñÑΓÑ «τ¿ßΓ¿Γ∞ Σ½áú »«ß½Ñ  «ñ¡«⌐
  4102. (¿½¿ ¡Ñ߬«½∞¬¿σ) ¿º »α«µÑñπα, úñÑ Σ½áú ¡á»αáó½Ñ¡¿∩ πßΓá¡áó½¿óáÑΓ-
  4103. ß∩, Γ« ó αѺπ½∞ΓáΓÑ Γá τáßΓ∞ óáΦÑ⌐ »α«úαá¼¼δ, úñÑ «ΓßτÑΓ  óÑñÑΓß∩
  4104. ó  »α∩¼«¼ ¡á»αáó½Ñ¡¿¿, íπñÑΓ αáí«ΓáΓ∞ »αѬαáß¡«, ñ« Γ«ú« ¼«¼Ñ¡Γá,
  4105. »«¬á ¡Ñ óδ»«½¡¿Γß∩ »α«µÑñπαá, πßΓá¡áó½¿óáεΘá∩ Σ½áú ¡á»αáó½Ñ¡¿∩.
  4106.  
  4107.      éδσ«ñ «τÑó¿ñÑ¡. ÅÑαÑñ ¿ß»«½∞º«ó᡿Ѽ  ßΓ᫬«óδσ  ¿¡ßΓαπ¬µ¿⌐,
  4108. Ñß½¿  ÑßΓ∞  ñáªÑ ¡Ñí«½∞Φá∩ óÑα«∩Γ¡«ßΓ∞ Γ«ú«, τΓ« Σ½áú ¡á»αáó½Ñ¡¿∩
  4109. ¡Ñ πßΓá¡«ó½Ñ¡ ñ«½ª¡δ¼ «íαẫ¼, Ñú« óßÑúñá ¡πª¡«  πßΓá¡áó½¿óáΓ∞  ó
  4110. ¡πª¡«Ñ ß«ßΓ«∩¡¿Ñ. é «íΘѼ ß½πτáÑ σ«α«Φ¿¼ ßΓ¿½Ñ¼ ∩ó½∩ÑΓß∩ πßΓá¡«ó-
  4111. ¬á Σ½áúá ó ß««ΓóÑΓßΓóπεΘÑÑ º¡áτÑ¡¿Ñ ó ¡áτá½Ñ ½εí«⌐ »α«µÑñπαδ, úñÑ
  4112. ¿ß»«½∞ºπεΓß∩ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿.
  4113.  
  4114.  
  4115.  
  4116. ìÑ»αáó¿½∞¡«Ñ ¿ß»«½∞º«óá¡¿Ñ »«óΓ«α∩Ѽ«ú« ßαáó¡Ñ¡¿∩ ßΓ᫬
  4117. -----------------------------------------------------------------
  4118.  
  4119.      ê¡ßΓαπ¬µ¿∩ CMPS ßαáó¡¿óáÑΓ ñóÑ «í½áßΓ¿ »á¼∩Γ¿, ó  Γ«  óαѼ∩,
  4120. ¬á¬  ¿¡ßΓαπ¬µ¿∩  SCAS ßαáó¡¿óáÑΓ á¬¬π¼π½∩Γ«α «í½áßΓ¿ »á¼∩Γ¿. àß½¿
  4121. »ÑαÑñ ¿¡ßΓαπ¬µ¿Ñ⌐ ß½ÑñπÑΓ »αÑΣ¿¬ß REPE, Γ« ¬áªñá∩ ¿º  φΓ¿σ  ¿¡ßΓ-
  4122. απ¬µ¿⌐  ¼«ªÑΓ óδ»«½¡∩Γ∞ ßαáó¡Ñ¡¿Ñ, »«¬á ¡Ñ ßΓá¡ÑΓ αáó¡δ¼ ß«ñÑন-
  4123. ¼«Ñ αÑú¿ßΓαá CX ¿½¿ ¡Ñ  «í¡áαπª¿Γß∩  ¡Ñß«ó»áñÑ¡¿Ñ.  è  ß«ªá½Ñ¡¿ε,
  4124. ½Ñú¬«  ¼«ª¡« ß»πΓáΓ∞, ¬á¬«⌐ ¿º »αÑΣ¿¬ß«ó »«óΓ«αÑ¡¿∩ REP τΓ« ñѽá-
  4125. ÑΓ.
  4126.  
  4127.      ò«α«Φ¿⌐ ß»«ß«í ºá»«¼¡¿Γ∞ Σπ¡¬µ¿ε ñá¡¡«ú« »αÑΣ¿¬ßá REP ß«ßΓ«-
  4128. ¿Γ  ó ¼δ߽ѡ¡«¼ ó¬½ετÑ¡¿¿ »«ß½Ñ REP (»«óΓ«α¿Γ∞) ß½«óá "»«¬á". Åα¿
  4129. φΓ«¼, ¡á»α¿¼Ñα, REPE »α¿¡¿¼áÑΓ ó¿ñ "»«óΓ«α∩Γ∞, »«¬á E"  (Γ«  ÑßΓ∞
  4130. "»«óΓ«α∩Γ∞,  »«¬á  αáó¡«"),  REPNE - "»«óΓ«α∩Γ∞, »«¬á ¡Ñ αáó¡«" ¿
  4131. Γ.ñ.
  4132.  
  4133.  
  4134.  
  4135.      Åα«úαá¼¼¿ßΓ ºáíδóáÑΓ «í ¿ß»«½∞º«óá¡¿¿ ßÑú¼Ñ¡Γ«ó »« π¼«½τá¡¿ε
  4136. -----------------------------------------------------------------
  4137.  
  4138.      é ¬áªñ«⌐ ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ ¿ß»«½∞ºπÑΓß∩ (Ñß½¿ «¡ ¿¼ÑÑΓß∩)
  4139. ¿ßσ«ñ¡δ⌐  ßÑú¼Ñ¡Γ  (¿ßΓ«τ¡¿¬),  ºáñá¡¡δ⌐  αÑú¿ßΓα«¼ DS, ¿ µÑ½Ñó«⌐
  4140. ßÑú¼Ñ¡Γ (»α¿Ñ¼¡¿¬), ºáñá¡¡δ⌐ αÑú¿ßΓα«¼ ES. Äí φΓ«¼ ½Ñú¬« ºáíδΓ∞ ¿
  4141. »«»δΓáΓ∞ß∩ »α¿¼Ñ¡¿Γ∞, ß¬áªÑ¼, ¿¡ßΓαπ¬µ¿ε STOSB ¬ ßÑú¼Ñ¡Γπ ñá¡¡δσ,
  4142. »«ß¬«½∞¬π ¿¼Ñ¡¡« Γá¼ «íδτ¡« ¡áσ«ñ∩Γß∩ óßÑ ñá¡¡δÑ, ¬«Γ«αδÑ óδ  «í-
  4143. αáíáΓδóáÑΓÑ  ß  »«¼«Θ∞ε ¡ÑßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐. î«ª¡« ½Ñú¬« ¡á»¿-
  4144. ßáΓ∞ ß½ÑñπεΘÑÑ:
  4145.  
  4146.          .
  4147.          .
  4148.          .
  4149.          cld             ; «ΓßτÑΓ »α¿ »«¿ß¬Ñ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
  4150.          mov   al,0
  4151.          mov   cx,80     ; ñ½¿¡á íπΣÑαá
  4152.          repe  scasb     ; ¡á⌐Γ¿ »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐ ß¿¼ó«½, Ñß½¿ «¡
  4153.  
  4154.                          ; ¿¼ÑÑΓß∩
  4155.          jz    AllZero   ; ¡ÑΓ ¡Ñ¡π½Ñó«ú« ß¿¼ó«½á
  4156.          dec   di        ; ßßδ½¬á «íαáΓ¡« ¡á »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐
  4157.                          ; ß¿¼ó«½
  4158.          mov   al,[dl]   ; »«½πτ¿Γ∞ »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐ ß¿¼ó«½
  4159.          .
  4160.          .
  4161.          .
  4162.  AllZero:
  4163.          .
  4164.          .
  4165.          .
  4166.  
  4167.      Åα«í½Ñ¼á ºñÑß∞ ß«ßΓ«¿Γ ó Γ«¼, τΓ« Ñß½¿ DS ¿ ES ¡Ñ ß«ó»áñáεΓ,
  4168. »«ß½Ññ¡∩∩  ¿¡ßΓαπ¬µ¿∩ MOV ¡Ñ íπñÑΓ ºáúαπªáΓ∞ ó AL ¬«ααÑ¬Γ¡«Ñ º¡á-
  4169. τÑ¡¿Ñ, Γᬠ¬á¬ ¿¡ßΓαπ¬µ¿∩ STOSB  αáí«ΓáÑΓ  «Γ¡«ß¿Γѽ∞¡«  αÑú¿ßΓαá
  4170. ES,  á  MOV - «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá DS. é »αáó¿½∞¡«¼ ¬«ñÑ ó ¿¡ßΓ-
  4171. απ¬µ¿¿ MOV ß½Ññ«óὫ íδ ¿ß»«½∞º«óáΓ∞ »αÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩ ßÑú-
  4172. ¼Ñ¡Γá (»«∩ߡѡ¿Ñ φΓ«ú« »α¿ó«ñ¿Γß∩ ó â½áóÑ 9).
  4173.  
  4174.          .
  4175.          .
  4176.          .
  4177.          cld             ; «ΓßτÑΓ »α¿ »«¿ß¬Ñ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
  4178.          mov   al,0
  4179.          mov   cx,80     ; ñ½¿¡á íπΣÑαá
  4180.          repe  scasb     ; ¡á⌐Γ¿ »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐ ß¿¼ó«½, Ñß½¿ «¡
  4181.                          ; ¿¼ÑÑΓß∩
  4182.          jz    AllZero   ; ¡ÑΓ ¡Ñ¡π½Ñó«ú« ß¿¼ó«½á
  4183.          dec   di        ; ßßδ½¬á «íαáΓ¡« ¡á »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐
  4184.                          ; ß¿¼ó«½
  4185.          mov   al,es:[dl]  ; »«½πτ¿Γ∞ »Ñαóδ⌐ ¡Ñ¡π½Ñó«⌐ ß¿¼ó«½
  4186.                          ; (¿º ES!)
  4187.          .
  4188.          .
  4189.          .
  4190.  AllZero:
  4191.          .
  4192.          .
  4193.          .
  4194.  
  4195.      ìπª¡« ΓᬪѠ»«¼¡¿Γ∞ « Γ«¼,  τΓ«  σ«Γ∩  ¼«ª¡«  »ÑαÑ«»αÑñѽ¿Γ∞
  4196. ßÑú¼Ñ¡Γ DS, ¿ß»«½∞ºπѼδ⌐ ó ¬áτÑßΓóÑ ßÑú¼Ñ¡Γá-¿ßΓ«τ¡¿¬á, ¡á»α¿¼Ñα:
  4197.  
  4198.          .
  4199.          .
  4200.          .
  4201.          lods  es:[SourceArray]
  4202.          .
  4203.          .
  4204.          .
  4205.  
  4206. ßÑú¼Ñ¡Γ-»α¿Ñ¼¡¿¬ ES »ÑαÑ«»αÑñѽ¿Γ∞ ¡Ñ½∞º∩. Å«φΓ«¼π ß½ÑñπεΘ¿⌐  óá-
  4207. α¿á¡Γ αáí«ΓáΓ∞ ¡Ñ íπñÑΓ:
  4208.  
  4209.          .
  4210.          .
  4211.          .
  4212.          stos  DS:[DestArray]
  4213.          .
  4214.          .
  4215.          .
  4216.  
  4217.      Æá¬¿Ñ «Φ¿í¬¿ Æπαí« ÇßßѼí½Ñα αáß»«º¡áÑΓ ¡á φΓá»Ñ áßßÑ¼í½¿α«-
  4218. óá¡¿∩.
  4219.  
  4220.  
  4221.  
  4222.    ÄΦ¿í¬¿ »α¿ ¿ß»«½∞º«óá¡¿¿ íá⌐Γ«óδσ «»Ñαᵿ⌐ ¿ «»Ñαᵿ⌐ ß« ß½«óἿ
  4223. -----------------------------------------------------------------
  4224.  
  4225.      é «íΘѼ ß½πτáÑ ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ ªÑ½áΓѽ∞¡«  ¿ß»«½∞º«-
  4226. óáΓ∞  ¼á¬ß¿¼á½∞¡«  ó«º¼«ª¡δ⌐ αẼÑα ñá¡¡δσ («íδτ¡« φΓ« ß½«ó«, ¿½¿
  4227. ñó«⌐¡«Ñ ß½«ó« »α¿ αáí«ΓÑ ß »α«µÑßß«α«¼  80386),  »«ß¬«½∞¬π  ΓᬿÑ
  4228. ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ «íδτ¡« óδ»«½¡∩εΓß∩ íδßΓαÑÑ. ìá»α¿¼Ñα:
  4229.  
  4230.          .
  4231.          .
  4232.          .
  4233.          mov   cx,200   ; τ¿ß½« »ÑαѼÑΘáѼδσ íá⌐Γ
  4234.          .
  4235.          .
  4236.          .
  4237.          shr   cx,1     ; »αÑ«íαẫóáΓ∞ ¿º íá⌐Γ ó ß½«óá
  4238.          rep   movsw    ; »ÑαѼÑßΓ¿Γ∞ í½«¬ αẼÑα«¼ ó ß½«ó«
  4239.          .
  4240.          .
  4241.          .
  4242.  
  4243.      ìá »α«µÑßß«αÑ 8088 φΓ« αáí«ΓáÑΓ »«τΓ¿ ¡á 50% íδßΓαÑÑ, τѼ:
  4244.  
  4245.          .
  4246.          .
  4247.          .
  4248.          mov   cx,200   ; τ¿ß½« »ÑαѼÑΘáѼδσ íá⌐Γ
  4249.          .
  4250.          .
  4251.          .
  4252.          rep   movsw    ; »ÑαѼÑßΓ¿Γ∞ í½«¬ αẼÑα«¼ ó íá⌐Γ
  4253.          .
  4254.          .
  4255.          .
  4256.  
  4257.      Äñ¡á¬« ºñÑß∞ ¿¼ÑÑΓß∩ »áαá »«ΓÑ¡µ¿á½∞¡δσ  «Φ¿í«¬.  é«-»Ñαóδσ,
  4258. »α¿ »αÑ«íαẫóá¡¿¿ ßτÑΓτ¿¬á íá⌐Γ ó ßτÑΓτ¿¬ ß½«ó »α«ßΓ«  ß »«¼«Θ∞ε
  4259. «»Ñαᵿ¿:
  4260.  
  4261.          shr   cx,1
  4262.  
  4263. ΓÑα∩ÑΓß∩ íá⌐Γ, Ñß½¿ αÑú¿ßΓα CX ¡ÑτÑΓ¡δ⌐, »«ß¬«½∞¬π »α¿ ßñó¿úÑ ¡á-
  4264. ¿¼Ñ¡ÑÑ º¡áτáΘ¿⌐ í¿Γ íπñÑΓ »«ΓÑα∩¡.  æ½πτá¿, ¬«úñá º¡áτÑ¡¿Ñ CX ¼«-
  4265. ªÑΓ «¬áºáΓ∞ß∩ ¡ÑτÑΓ¡δ¼, ¼«ª¡« «íαáíáΓδóáΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
  4266.  
  4267.          .
  4268.          .
  4269.          .
  4270.          shr   cx,1     ; »αÑ«íαẫóáΓ∞ ó ßτÑΓτ¿¬ ß½«ó
  4271.          jnc   MoveWord ; ßτÑΓτ¿¬ íá⌐Γ ¡ÑτÑΓ¡δ⌐?
  4272.          movsb          ; ñá, «¡ ¡ÑτÑΓ¡δ⌐ - »ÑαѼÑßΓ¿Γ∞
  4273.                         ; ¡ÑτÑΓ¡δ⌐ íá⌐Γ
  4274.    MoveWord:
  4275.          rep   movsw    ; »ÑαѼÑΘÑ¡¿Ñ τÑΓ¡«ú« τ¿ß½á íá⌐Γ
  4276.                         ; »«ß½«ó¡«
  4277.          .
  4278.          .
  4279.          .
  4280.  
  4281.      é«-óΓ«αδσ, ¡πª¡« »«¼¡¿Γ∞ « Γ«¼,  τΓ«  ¿¡ßΓαπ¬µ¿∩  SHR  ñѽ¿Γ
  4282. ßτÑΓτ¿¬ íá⌐Γ ¡á 2.  êß»«½∞º«óá¡¿Ñ,  ß¬áªÑ¼,  ¿¡ßΓαπ¬µ¿¿ STOSW  ß«
  4283. ßτÑΓτ¿¬«¼ íá⌐Γ,  á  ¡Ñ ß« ßτÑΓτ¿¬«¼ ß½«ó,  ¼«ªÑΓ «Γíα«ß¿Γ∞ ñαπú¿Ñ
  4284. ñá¡¡δÑ ¿ »α¿óÑßΓ¿ ¬ αẽ¿τ¡δ¼ »α«í½Ñ¼á¼.  ìá»α¿¼Ñα, »α¿ ¿ß»«½∞º«-
  4285. óá¡¿¿ ¿¡ßΓαπ¬µ¿⌐:
  4286.  
  4287.          .
  4288.          .
  4289.          .
  4290.          mov   cx,200      ; τ¿ß½« »ÑαѼÑΘáѼδσ ñá¡¡δσ
  4291.          .
  4292.          .
  4293.          .
  4294.          rep   movsv       ; »ÑαѼÑΘáΓ∞ »« í½«¬π αẼÑα«¼
  4295.                            ; ó ß½«ó«
  4296.          .
  4297.          .
  4298.          .
  4299.  
  4300. íπñÑΓ «Γíα«ΦÑ¡« 200 íá⌐Γ (100 ß½«ó),  ¬«Γ«αδÑ ß½ÑñπεΓ  ¡Ñ»«ßαÑñß-
  4301. ΓóÑ¡¡« ºá µÑ½Ñóδ¼ í½«¬«¼.
  4302.  
  4303.  
  4304.  
  4305.                   êß»«½∞º«óá¡¿Ñ ¡Ñ߬«½∞¬¿σ »αÑΣ¿¬ß«ó
  4306. -----------------------------------------------------------------
  4307.  
  4308.      æΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿ ß ¡Ñ߬«½∞¬¿¼¿ »αÑΣ¿¬ßἿ ¡áñѪ¡«  αáí«-
  4309. ΓáΓ∞  ¡Ñ  íπñπΓ.  é  «íΘѼ ß½πτáÑ ¿σ ß½ÑñπÑΓ ¿ºíÑúáΓ∞. é ¬áτÑßΓóÑ
  4310. »α¿¼Ñαá ¼«ª¡« »α¿óÑßΓ¿ ¿¡ßΓαπ¬µ¿ε:
  4311.  
  4312.          .
  4313.          .
  4314.          .
  4315.          rep   movs es:[DestArray],ss:[SourceArray]
  4316.          .
  4317.          .
  4318.          .
  4319.  
  4320. úñÑ »α¿ßπΓßΓóπÑΓ ¬á¬ »αÑΣ¿¬ß REP, Γᬠ¿  »αÑΣ¿¬ß  »ÑαÑ«»αÑñѽѡ¿∩
  4321. ßÑú¼Ñ¡Γá SS. î¡«ªÑßΓóÑ¡¡δÑ »αÑΣ¿¬ßδ ¼«úπΓ »α¿óÑßΓ¿ ¬ «Φ¿í¬á¼, Γá¬
  4322. ¬á¬ »« á»»áαáΓ¡«¼π »αÑαδóá¡¿ε ßΓ᫬«óá∩ ¿¡ßΓαπ¬µ¿∩ ¼«ªÑΓ  »αѬαá-
  4323. Γ¿Γ∞  αáí«Γπ ó »α«µÑßßÑ µ¿¬½á »«óΓ«αÑ¡¿∩. é ¡Ñ¬«Γ«αδσ »α«µÑßß«αáσ
  4324. Σ¿α¼δ Intel, ó¬½ετá∩ »α«µÑßß«αδ 8086  ¿  8088,  »«ß½Ñ  Γ«ú«,  ¬á¬
  4325. ßΓ᫬«óá∩  ¿¡ßΓαπ¬µ¿∩ ó«º«í¡«ó½∩ÑΓ αáí«Γπ »«ß½π «íß½πª¿óá¡¿∩ »αÑ-
  4326. αδóá¡¿∩, óßÑ »αÑΣ¿¬ßδ, ¬α«¼Ñ »«ß½Ññ¡Ñú«, ¿ú¡«α¿απεΓß∩. é  αѺπ½∞-
  4327. ΓáΓÑ ¿¡ßΓαπ¬µ¿∩ ¼«ªÑΓ ¡Ñ «Γαáí«ΓáΓ∞ ºáñá¡¡«Ñ τ¿ß½« αáº, ¿½¿ »α«¿-
  4328. º«⌐ñÑΓ «íαáΘÑ¡¿Ñ ¬ ¡ÑóÑα¡«¼π ßÑú¼Ñ¡Γπ.
  4329.  
  4330.      àß½¿ óá¼ áíß«½εΓ¡« ¡Ñ«íσ«ñ¿¼« ¿ß»«½∞º«óáΓ∞  ßΓ᫬«óδÑ  ¿¡ßΓ-
  4331. απ¬µ¿¿  ß ¡Ñ߬«½∞¬¿¼¿ »αÑΣ¿¬ßἿ, Γ« ¡á óαѼ∩ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬-
  4332. µ¿¿ ¡πª¡« ºá»αÑΓ¿Γ∞ »αÑαδóá¡¿∩. ìá»α¿¼Ñα:
  4333.  
  4334.          .
  4335.          .
  4336.          .
  4337.          cli
  4338.          rep   mov   es:[DestArray],ss:[SourceArray]
  4339.          sti
  4340.          .
  4341.          .
  4342.          .
  4343.  
  4344.  
  4345.  
  4346.         ÄΦ¿í¬¿ »α¿ ¿ß»«½∞º«óá¡¿¿ «»Ñαá¡ñ«ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐
  4347. -----------------------------------------------------------------
  4348.  
  4349.      ìÑ«í∩ºáΓѽ∞¡δ⌐ «»Ñαá¡ñ ¿½¿ «»Ñαá¡ñδ ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿⌐ ¿ß-
  4350. »«½∞ºπεΓß∩  Γ«½∞¬«  ñ½∩  ºáñá¡¿∩ αẼÑαá ñá¡¡δσ ¿ »ÑαÑ«»αÑñѽѡ¿∩
  4351. ßÑú¼Ñ¡Γá ¿ ¡Ñ «íÑß»Ñτ¿óáεΓ Γ«ú«, τΓ« ß««ΓóÑΓßΓóπεΘ¿Ñ ∩τÑ⌐¬¿ »á¼∩-
  4352. Γ¿ ñÑ⌐ßΓó¿Γѽ∞¡« íπñπΓ ñ«ßΓπ»¡δ. ìá»α¿¼Ñα, ó »α«úαá¼¼Ñ:
  4353.  
  4354.          .
  4355.          .
  4356.          .
  4357. DestArray  DW   256  dup (?)
  4358.          .
  4359.          .
  4360.          .
  4361.          cld                     ; «ΓßτÑΓ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
  4362.                                  ; »α¿ ºá»«½¡Ñ¡¿¿
  4363.          mov   al,'*'            ; íá⌐Γ ñ½∩ ºá»«½¡Ñ¡¿∩
  4364.          mov   cx,256            ; τ¿ß½« ºá»«½¡∩Ѽδσ ß½«ó
  4365.          mov   di,0              ; áñαÑß ¡áτá½á ºá»«½¡Ñ¡¿∩
  4366.          rep   stos es:[DestArray] ; óδ»«½¡¿Γ∞ ºá»«½¡Ñ¡¿Ñ
  4367.          .
  4368.          .
  4369.          .
  4370.  
  4371. 256 íá⌐Γ, ¡áτ¿¡á∩ ß« ß¼ÑΘÑ¡¿∩ 0 ó ßÑú¼Ñ¡ΓÑ ES, ºá»«½¡∩εΓß∩ ß¿¼ó«-
  4372. ½«¼ '*',  ¡Ñºáó¿ß¿¼« «Γ Γ«ú«,  úñÑ  ¡áσ«ñ¿Γß∩  ¼áßß¿ó  DestArray.
  4373. ES:[DestArray]  »α«ßΓ« π¬áºδóáÑΓ ÇßßѼí½Ñαπ,  τΓ« ¡πª¡« ¿ß»«½∞º«-
  4374. óáΓ∞ ¿¡ßΓαπ¬µ¿ε STOSW, Γᬠ¬á¬ DestArray - φΓ« ¼áßß¿ó ß½«ó. ê¼Ñ¡-
  4375. ¡« ß«ñÑন¼«Ñ SI ¿/¿½¿ DI,  á ¡Ñ «»Ñαá¡ñδ,  «»αÑñѽ∩ÑΓ, »« ¬á¬«¼π
  4376. ß¼ÑΘÑ¡¿ε íπñÑΓ «ßπΘÑßΓó½∩Γ∞ß∩ ñ«ßΓπ» ó ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ. ÆÑ¼
  4377. ¡Ñ  ¼Ñ¡ÑÑ,  ¿ß»«½∞º«óá¡¿Ñ  ¡Ñ«í∩ºáΓѽ∞¡δσ  «»Ñαá¡ñ«ó («»Ñαá¡ñá) ó
  4378. ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ «íÑß»Ñτ¿óáÑΓ, τΓ« óδ, ¡á»α¿¼Ñα, ß½πτá⌐¡« ¡Ñ
  4379. íπñÑΓÑ  ß½πτá⌐¡« «ßπΘÑßΓó½∩Γ∞ »«ß½«ó¡δ⌐ ñ«ßΓπ» ¬ íá⌐Γ«ó«¼π ¼áßß¿-
  4380. óπ.
  4381.  
  4382.      Ç¡á½«ú¿τ¡«, ¡Ñ«í∩ºáΓѽ∞¡δ⌐ «»Ñαá¡ñ ó ¿¡ßΓαπ¬µ¿¿ XLAT ¿ß»«½∞-
  4383. ºπÑΓß∩ Γ«½∞¬« ñ½∩ »α«óÑન Γ¿»á ¿ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá. Åα«ú-
  4384. αá¼¼á:
  4385.  
  4386.          .
  4387.          .
  4388.          .
  4389. LookUpTable    LABEL   BYTE
  4390.          .
  4391.          .
  4392.          .
  4393. ASCIITable     LABEL   BYTE
  4394.          .
  4395.          .
  4396.          .
  4397.          mov   bx,OFFSET ASCIITabel      ; ßßδ½¬á ¡á Γáí½¿µπ
  4398.                                          ; »α«ß¼«Γαá
  4399.          mov   al,[CharacterToTranslate] ; »«½πτ¿Γ∞ íá⌐Γ
  4400.          xlat  [LookUpTable]             ; «Γ«íαếΓ∞ Ñú«
  4401.          .
  4402.          .
  4403.          .
  4404.  
  4405. «Γ«íαáªáÑΓ  íá⌐Γ,  ºáñáóáѼδ⌐ αÑú¿ßΓα«¼ AL, ó Γáí½¿µÑ ASCIITable,
  4406. á  ¡Ñ ó LookUpTable, ¡« ÇßßѼí½Ñα ºñÑß∞ íπñÑΓ αáí«ΓáΓ∞ »αáó¿½∞¡«,
  4407. »«ß¬«½∞¬π óßÑ, τΓ« ñѽáÑΓ «»Ñαá¡ñ ó ¿¡ßΓαπ¬µ¿¿ XLAT - φΓ« «íÑß»Ñ-
  4408. τÑ¡¿Ñ  íá⌐Γ«ó«ú«  αẼÑαá  ¿ »ÑαÑ«»αÑñѽѡ¿Ñ ßÑú¼Ñ¡Γá. ê¡ßΓαπ¬µ¿∩
  4409. XLAT óßÑúñá «Γ«íαáªáÑΓ (Γαá¡ß½¿απÑΓ) ß«ñÑন¼«Ñ »« ß¼ÑΘÑ¡¿ε BX  +
  4410. AL, ¡Ñºáó¿ß¿¼« «Γ ¿ß»«½∞ºπѼ«ú« «»Ñαá¡ñá.
  4411.  
  4412.  
  4413.  
  4414.  
  4415. Åα«úαá¼¼¿ßΓ ºáíδóáÑΓ « ¡Ñ«íδτ¡δσ »«í«τ¡δσ φΣΣѬΓáσ
  4416. -----------------------------------------------------------------
  4417.  
  4418.      Å«ß¬«½∞¬π »α«úαá¼¼δ ÇßßѼí½Ñαᠺỿßá¡δ  ¡á  "α«ñ¡«¼"  ∩ºδ¬Ñ
  4419. »α«µÑßß«αá 8086, ½εíδÑ ¿º¼Ñ¡Ñ¡¿∩ ó ß«ßΓ«∩¡¿¿ αÑú¿ßΓα«ó ¿½¿ Σ½áú«ó
  4420. »α«µÑßß«αá 8086 ñ«½ª¡δ »αÑñßΓáó½∩Γ∞ ñ½∩ αáí«ΓáεΘÑú« ¡á ÇßßѼí½ÑαÑ
  4421. »α«úαá¼¼¿ßΓá  «ß«íδ⌐ ¿¡ΓÑαÑß. ü«½∞Φ¿¡ßΓó« ß»«ß«í«ó, ß »«¼«Θ∞ε ¬«-
  4422. Γ«αδσ »α«úαἼᠡá ÇßßѼí½ÑαÑ ¼«ªÑΓ ¿º¼Ñ¡¿Γ∞ ß«ßΓ«∩¡¿Ñ  »α«µÑßß«-
  4423. αá, ñ«ßΓáΓ«τ¡« ¡Ñ»«ßαÑñßΓóÑ¡¡δ ¿ «τÑó¿ñ¡δ. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩:
  4424.  
  4425.              add   bx,[Grade]
  4426.  
  4427. »α¿íáó½∩ÑΓ 16-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ »« áñαÑßπ Grade ¬ BX ¿, τΓ«íδ  «Γ-
  4428. αếΓ∞  αѺπ½∞ΓáΓ  ß½«ªÑ¡¿∩,  ¿º¼Ñ¡∩ÑΓ Σ½áú¿ »ÑαÑ»«½¡Ñ¡¿∩, º¡á¬á,
  4429. ¡π½∩, ñ«»«½¡¿Γѽ∞¡«ú« »ÑαÑ¡«ßá, τÑΓ¡«ßΓ¿ ¿ »ÑαÑ¡«ßá. Äñ¡á¬« ¡Ñ¬«-
  4430. Γ«αδÑ  ¿¡ßΓαπ¬µ¿¿  ¿º¼Ñ¡∩εΓ  ß«ßΓ«∩¡¿Ñ »α«µÑßß«αᠼѡÑÑ «τÑó¿ñ¡δ¼
  4431. «íαẫ¼. Éáßß¼«Γα¿¼ ¬αáΓ¬« ¡Ñ¬«Γ«αδÑ ¿º Γá¬¿σ ¿¡ßΓαπ¬µ¿⌐.
  4432.  
  4433.  
  4434.  
  4435.                Å«ΓÑα∩ ß«ñÑন¼«ú« αÑú¿ßΓαá »α¿ π¼¡«ªÑ¡¿¿
  4436. -----------------------------------------------------------------
  4437.  
  4438.      Åα¿  π¼¡«ªÑ¡¿¿  (8-αáºα∩ñ¡«ú«   º¡áτÑ¡¿∩   ¡á   8-αáºα∩ñ¡«Ñ,
  4439. 16-αáºα∩ñ¡«ú« º¡áτÑ¡¿∩ ¡á 16-αáºα∩ñ¡«Ñ ¿½¿ 32-αáºα∩ñ¡«ú« º¡áτÑ¡¿∩
  4440. ¡á 32-αáºα∩ñ¡«Ñ) óßÑúñá ΓÑα∩ÑΓß∩ ß«ñÑন¼«Ñ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ «ñ¡«-
  4441. ú« αÑú¿ßΓαá, «Γ½¿τ¡«ú« «Γ Γ«⌐ τáßΓ¿ á¬¬π¼π½∩Γ«αá, ¬«Γ«αá∩ ¿ß»«½∞-
  4442. ºπÑΓß∩ ó ¬áτÑßΓóÑ «»Ñαá¡ñá-¿ßΓ«τ¡¿¬á. ¥Γ«  ¡Ñ¿ºíѪ¡«  »α¿ó«ñ¿Γ  ¬
  4443. Γ«¼π,  τΓ« αѺπ½∞ΓáΓ »ÑαѼ¡«ªÑ¡¿∩ ñóπσ 8-αáºα∩ñ¡δσ º¡áτÑ¡¿⌐ íπñÑΓ
  4444. ºá¡¿¼áΓ∞ 16  í¿Γ,  αѺπ½∞ΓáΓ »ÑαѼ¡«ªÑ¡¿∩ 16-αáºα∩ñ¡δσ º¡áτÑ¡¿⌐ -
  4445. 32 í¿Γá, á 32-αáºα∩ñ¡δσ º¡áτÑ¡¿⌐ - 64 í¿Γá. ÅÑαѼ¡«ªÑ¡¿Ñ «»Ñαá¡ñá
  4446. -¿ßΓ«τ¡¿¬á ¿ «»Ñαá¡ñá-»α¿Ñ¼¡¿¬á »«¬áºá¡« ó Æáí½¿µÑ 6.1.
  4447.  
  4448.                                                       Æáí½¿µá 6.1
  4449.         êßΓ«τ¡¿¬ ¿ »α¿Ñ¼¡¿¬ ó «»Ñαᵿ∩σ MUL ¿ IMUL
  4450. -----------------------------------------------------------------
  4451. êßΓ«τ¡¿¬               êßΓ«τ¡¿¬                 Åα¿Ñ¼¡¿¬
  4452. ÉẼÑα «»Ñαá¡ñá  ƒó¡δ⌐    ìÑ∩ó¡δ⌐
  4453. ó íá⌐Γáσ        «»Ñαá¡ñ   «»Ñαá¡ñ     æΓáαΦ¿⌐  î½áñΦ¿⌐    Åα¿¼Ñα
  4454. -----------------------------------------------------------------
  4455.  8σ8            reg8 (*)    AL          AH       AL       mul dl
  4456.  
  4457. 16σ16          reg16 (**)   AX          DX       AX      imul bx
  4458.  
  4459. 32σ32 (***)    reg32 (****) EAX         EDX      EAX     mul esi
  4460. -----------------------------------------------------------------
  4461.  
  4462. *     reg8 ¼«ªÑΓ »αÑñßΓáó½∩Γ∞ ß«í«⌐ ½εí«⌐ ¿º ß½ÑñπεΘ¿σ αÑú¿ßΓα«ó:
  4463.       AH, AL, BH, BL, CH, CL, DH ¿½¿ DL.
  4464.  
  4465. **    reg16 ¼«ªÑΓ íδΓ∞ ½εíδ¼ ¿º ß½ÑñπεΘ¿σ αÑú¿ßΓα«ó:  AX, BX, CX,
  4466.       DX, SI, DI, BP ¿½¿ SP.
  4467.  
  4468. ***   Ä»Ñαᵿ∩  π¼¡«ªÑ¡¿∩  32σ32  »α«µÑßß«αἿ 8086, 8088, 80186,
  4469.       80188 ¿ 80286 ¡Ñ »«ññÑনóáÑΓß∩.0
  4470.  
  4471. ****  reg32 ¼«ªÑΓ íδΓ∞ ½εíδ¼ ¿º  ß½ÑñπεΘ¿σ  αÑú¿ßΓα«ó:  EAX, EBX,
  4472.       ECX, EDX, ESI, EDI, EBP ¿½¿ ESP.
  4473.  
  4474.      ò«Γ∩ óßÑ φΓ« óδú½∩ñ¿Γ ñ«ßΓáΓ«τ¡« »α«ßΓδ¼,  ó ß¿¡Γá¬ß¿ßÑ ¿¡ß-
  4475. Γαπ¬µ¿⌐ MUL ¿ IMUL ß¬αδΓ« ¼¡«ú« ñÑΓá½Ñ⌐, Γᬠ¬á¬ ∩ó¡« π¬áºδóáÑΓß∩
  4476. Γ«½∞¬« «ñ¿¡ ¿º «»Ñαá¡ñ«ó ¿ αẼÑα,  á αÑú¿ßΓαδ ¿ß»«½∞ºπѼδÑ ó ¬á-
  4477. τÑßΓóÑ «»Ñαá¡ñá-»α¿Ñ¼¡¿¬á,  »α«ßΓ« »«ñαáºπ¼ÑóáεΓß∩.  ¥Γ¿  ß¬αδΓδÑ
  4478. ñÑΓ὿ »α¿ó«ñ∩Γ ¬ Γ«¼π,  τΓ« ½Ñú¬« ¼«ª¡« π»πßΓ¿Γ∞ ¿º ó¿ñπ ¿ß»«½∞-
  4479. º«óá¡¿Ñ ¬á¬«ú«-½¿í« ¡Ñ∩ó¡«ú« αÑú¿ßΓαá.  àßΓ∞ ¼¡«ú« ß½πτáÑó, ó ¬«-
  4480. Γ«αδσ,  ß¬áªÑ¼,  »α«úαá¼¼¿ßΓ  º¡áÑΓ,  τΓ«  αѺπ½∞ΓáΓ »ÑαѼ¡«ªÑ¡¿∩
  4481. 16-αáºα∩ñ¡«ú« º¡áτÑ¡¿∩ ¡á 16-αáºα∩ñ¡πε óѽ¿τ¿¡π, »«¼ÑßΓ¿Γß∩ ó αÑ-
  4482. ú¿ßΓα  AX.  Åα¿ φΓ«¼ τáßΓ« ºáíδóáεΓ,  τΓ« ΓÑα∩ÑΓß∩ ß«ñÑন¼«Ñ αÑ-
  4483. ú¿ßΓαá CX.  Å«φΓ«¼π óßÑúñá ¡πª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« »α¿ ¿ß»«½∞º«-
  4484. óá¡¿¿  ¿¡ßΓαπ¬µ¿⌐  MUL  ¿  IMUL π¡¿τΓ«ªáÑΓß∩ ß«ñÑন¼«Ñ ¡Ñ Γ«½∞¬«
  4485. αÑú¿ßΓα«ó AL, AX, ¿½¿ EAX, ¡« ΓᬪѠ¿ AH, DX ¿½¿ EDX.
  4486.  
  4487.  
  4488.  
  4489.  
  4490. é ßΓ᫬«óδσ ¿¡ßΓαπ¬µ¿∩σ ¿º¼Ñ¡∩ÑΓß∩ ¡Ñ߬«½∞¬« αÑú¿ßΓα«ó
  4491. -----------------------------------------------------------------
  4492.  
  4493.      Åα¿ óδ»«½¡Ñ¡¿¿ Γ«½∞¬« «ñ¡«⌐ ¿º ßΓ᫬«óδσ  ¿¡ßΓαπ¬µ¿⌐  (MOVS,
  4494. STOS, LODS, CMPS ¿½¿ SCAS) ¼«ªÑΓ ¿º¼Ñ¡∩Γ∞ß∩ ß«ñÑন¼«Ñ ¡Ñ߬«½∞¬¿σ
  4495. Σ½áú«ó ¿ ñ« ΓαÑσ αÑú¿ßΓα«ó. èᬠ¿ ó ¿¡ßΓαπ¬µ¿¿ MUL,  ó  ßΓ᫬«óδσ
  4496. ¿¡ßΓαπ¬µ¿∩σ  ¼¡«ú¿Ñ  φΣΣѬΓδ ¡Ñ óδαáªáεΓß∩  ∩ó¡« ó «»Ñαá¡ñáσ φΓ¿σ
  4497. ¿¡ßΓαπ¬µ¿⌐. Åα¿ ¿ß»«½∞º«óá¡¿¿ ñá¡¡δσ ¿¡ßΓαπ¬µ¿⌐ ¡πª¡«  »«¼¡¿Γ∞  «
  4498. Γ«¼,  τΓ« SI ¿½¿ DI (¿½¿ «íá αÑú¿ßΓαá) πóѽ¿τ¿óáεΓß∩ ¿½¿ π¼Ñ¡∞Φá-
  4499. εΓß∩ (ó ºáó¿ß¿¼«ßΓ¿ «Γ ß«ßΓ«∩¡¿∩ Σ½áúá  ¡á»αáó½Ñ¡¿∩)  »α¿  ¬áªñ«¼
  4500. óδ»«½¡Ñ¡¿¿  ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿. ÉÑú¿ßΓα CX ΓᬪѠπ¼Ñ¡∞ΦáÑΓß∩ »«
  4501. ¬αá⌐¡Ñ⌐ ¼ÑαÑ «ñ¿¡ αáº, á »α¿ ¿ß»«½∞º«óá¡¿¿ »αÑΣ¿¬ßá REP - ó«º¼«ª-
  4502. ¡« ñ« ΓÑσ »«α, »«¬á Ñú« ß«ñÑন¼«Ñ ¡Ñ ßΓá¡ÑΓ αáó¡δ¼ ¡π½ε.
  4503.  
  4504.            êº¼Ñ¡Ñ¡¿Ñ «Γñѽ∞¡δ¼¿ ¿¡ßΓαπ¬µ¿∩¼¿ Σ½áúá »ÑαÑ¡«ßá
  4505. -----------------------------------------------------------------
  4506.  
  4507.      é Γ« óαѼ∩ ¬á¬ ¡Ñ¬«Γ«αδÑ ¿¡ßΓαπ¬µ¿¿ "¡Ñ»αÑñó¿ñÑ¡¡δ¼" «íαẫ¼
  4508. ¿º¼Ñ¡∩εΓ  ß«ñÑন¼«Ñ  αÑú¿ßΓα«ó  ¿½¿ Σ½áú«ó, ñαπú¿Ñ ¿¡ßΓαπ¬µ¿¿ ¡Ñ
  4509. ó½¿∩εΓ ¡á óßÑ ΓÑ Σ½áú¿, ¿º¼Ñ¡Ñ¡¿∩ ¬«Γ«αδσ óδ «ª¿ñáÑΓÑ.  ìá»α¿¼Ñα,
  4510. ¿¡ßΓαπ¬µ¿∩:
  4511.  
  4512.             inc   ah
  4513.  
  4514. óδú½∩ñ¿Γ ½«ú¿τÑ߬¿ φ¬ó¿óá½Ñ¡Γ¡«⌐ ¿¡ßΓαπ¬µ¿¿:
  4515.  
  4516.             add   ah,1
  4517.  
  4518. ¿ φΓ« ñÑ⌐ßΓó¿Γѽ∞¡« Γá¬, ¡« ß «ñ¡¿¼ ¿ß¬½ετÑ¡¿Ñ¼. é Γ«  óαѼ∩  ¬á¬
  4519. ¿¡ßΓαπ¬µ¿∩  ADD  ó ß½πτáÑ ß½¿Φ¬«¼ í«½∞Φ«ú« ñ½∩ «»Ñαá¡ñá-»α¿Ñ¼¡¿¬á
  4520. αѺπ½∞ΓáΓá πßΓá¡áó½¿óáÑΓ Σ½áú »ÑαÑ¡«ßá, ¿¡ßΓαπ¬µ¿∩ INC ¡¿¬«¿¼ «í-
  4521. αẫ¼ ¡Ñ ¡Ñú« ¡Ñ ó½¿∩ÑΓ. é αѺπ½∞ΓáΓÑ ¿¡ßΓαπ¬µ¿¿:
  4522.  
  4523.             .
  4524.             .
  4525.             .
  4526.             add   ax,1
  4527.             adc   dx,0
  4528.             .
  4529.             .
  4530.             .
  4531.  
  4532. ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ πóѽ¿τÑ¡¿∩ 32-í¿Γ«ó«ú« º¡áτÑ¡¿∩,  σαá¡∩ΘÑ-
  4533. ú«ß∩ ó αÑú¿ßΓαáσ DX:AX, á ¿¡ßΓαπ¬µ¿¿:
  4534.  
  4535.             .
  4536.             .
  4537.             .
  4538.             inc   ax
  4539.             adc   dx,0
  4540.             .
  4541.             .
  4542.             .
  4543.  
  4544. ¡Ñ½∞º∩. Æ«ªÑ ßἫѠ¿¼ÑÑΓ ¼ÑßΓ« ñ½∩ ¿¡ßΓαπ¬µ¿¿ DEC, ó Γ« óαѼ∩ ¬á¬
  4545. ¿¡ßΓαπ¬µ¿¿ LOOP, LOOPZ ¿ LOOPNZ ¡Ñ ó½¿∩εΓ ¡á ß«ßΓ«∩¡¿Ñ Σ½áú«ó. ìá
  4546. »αá¬Γ¿¬Ñ φΓ« ¿¡«úñá ¼«ª¡« óδú«ñ¡« ¿ß»«½∞º«óáΓ∞, Γᬠ¬á¬ ó «Γñѽ∞-
  4547. ¡δσ  ß½πτá∩σ ¼«ªÑΓ «¬áºáΓ∞ß∩ πñ«í¡δ¼ óδ»«½¡¿Γ∞ «ñ¡π ¿º φΓ¿σ ¿¡ßΓ-
  4548. απ¬µ¿⌐ íѺ ¡áαπΦÑ¡¿∩ πßΓá¡«ó¬¿ Σ½áúá »ÑαÑ¡«ßá. éßÑúñá ó᪡« Γ«τ¡«
  4549. º¡áΓ∞, τΓ« ñѽáÑΓ ¬áªñá∩ ¿ß»«½∞ºπѼá∩ óἿ ¿¡ßΓαπ¬µ¿∩. àß½¿ π óáß
  4550. ÑßΓ∞ ß«¼¡Ñ¡¿∩ «Γ¡«ß¿Γѽ∞¡« Γ«ú«, ¬á¬ ó½¿∩ÑΓ ¬«¡¬αÑΓ¡á∩ ¿¡ßΓαπ¬µ¿∩
  4551. ¡á ß«ñÑন¼«Ñ Σ½áú«ó, ½πτΦÑ «íαáΓ¿ΓÑß∞ ¬ ß»αáó«τ¡¿¬π.
  4552.  
  4553.  
  4554.  
  4555.            Åα«úαá¼¼¿ßΓ ñ«½ú« ¡Ñ ¿ß»«½∞ºπÑΓ ß«ßΓ«∩¡¿Ñ Σ½áú«ó
  4556. -----------------------------------------------------------------
  4557.  
  4558.      æ«ßΓ«∩¡¿Ñ Σ½áú«ó ß«σαá¡∩ÑΓß∩  ñ«  ΓÑσ  »«α,  »«¬á  ß½ÑñπεΘá∩
  4559. ¿¡ßΓαπ¬µ¿∩  ¿σ  ¡Ñ ¿º¼Ñ¡¿Γ. Äíδτ¡« φΓ« ¡Ñ ß½¿Φ¬«¼ ñ«½ú¿⌐ ¿¡ΓÑαóá½
  4560. óαѼѡ¿. ò«α«ΦÑ⌐  »αá¬Γ¿¬«⌐  »α«úαá¼¼¿α«óá¡¿∩  ∩ó½∩ÑΓß∩  ó«º¼«ª¡«
  4561. ߬«αÑ⌐ΦÑÑ  ¿ß»«½∞º«óá¡¿Ñ Σ½áú«ó ¿σ πßΓá¡«ó¬¿, τΓ« »«ºó«½∩ÑΓ ¿ºíÑ-
  4562. ªáΓ∞ ¼¡«ú¿σ »«ΓÑ¡µ¿á½∞¡δσ «Φ¿í«¬. ìá»α¿¼Ñα, τáßΓ« σ«τÑΓß∩  »α«óÑ-
  4563. α¿Γ∞  πß½«ó¿Ñ,  ºáñáΓ∞ ß«ñÑন¼«Ñ «ñ¡«ú«-ñóπσ αÑú¿ßΓα«ó, ¿ Γ«½∞¬«
  4564. »«ß½Ñ φΓ«ú« ó ß««ΓóÑΓßΓó¿¿ ß αѺπ½∞ΓáΓ«¼ »α«óÑન óδ»«½¡¿Γ∞ »ÑαÑ-
  4565. σ«ñ. ê¡ßΓαπ¬µ¿¿:
  4566.  
  4567.             .
  4568.             .
  4569.             .
  4570.             cmp   ax,1
  4571.             mov   ax,0
  4572.             jg    HandlePositive
  4573.             .
  4574.             .
  4575.             .
  4576.  
  4577. »αÑñßΓáó½∩εΓ ß«í«⌐ ó»«½¡Ñ ñ«»πßΓ¿¼δ⌐  ß»«ß«í  »α«óÑન  ß«ßΓ«∩¡¿∩
  4578. αÑú¿ßΓαá AX, ºáΓѼ πßΓᡫ󬿠Ñú« ó º¡áτÑ¡¿Ñ 0 ¿ «íαáí«Γ¬¿ αѺπ½∞-
  4579. ΓáΓá. æ ñαπú«⌐ ßΓ«α«¡δ, ¿¡ßΓαπ¬µ¿¿:
  4580.  
  4581.             .
  4582.             .
  4583.             .
  4584.             cmp   ax,1
  4585.             sub   ax,ax
  4586.             jg    HandlePositive
  4587.             .
  4588.             .
  4589.             .
  4590.  
  4591. ¬«Γ«αδÑ óδú½∩ñ∩Γ í«½ÑÑ »α¿ó½Ñ¬áΓѽ∞¡«, »«ß¬«½∞¬π Γᬫ⌐ ¬«ñ ¬«α«τÑ
  4592. ¿  óδ»«½¡∩εΓß∩  íδßΓαÑÑ, »αáó¿½∞¡« αáí«ΓáΓ∞ ¡Ñ íπñπΓ, Γᬠ¬á¬ »α¿
  4593. óδτ¿Γá¡¿¿ ΓÑα∩ÑΓß∩  ß«ñÑন¼«Ñ  óßÑσ  Σ½áú«ó,  πßΓá¡«ó½Ñ¡¡δσ  »α¿
  4594. ßαáó¡Ñ¡¿¿.  ¥Γ« Γ¿»¿τ¡á∩ »α«í½Ñ¼á, ó«º¡¿¬áεΘá∩, ¬«úñá óδ ¡Ñ Γ«α«-
  4595. »¿ΓÑß∞ ¿ß»«½∞º«óáΓ∞ ß«ßΓ«∩¡¿Ñ Σ½áú«ó.
  4596.  
  4597.  
  4598.  
  4599.        ìÑ »πΓá⌐ΓÑ «»Ñαá¡ñδ ó »á¼∩Γ¿ ¿ ¡Ñ»«ßαÑñßΓóÑ¡¡δÑ «»Ñαá¡ñδ
  4600. -----------------------------------------------------------------
  4601.  
  4602.      Åα«úαἼᠡá ÇßßѼí½ÑαÑ ¼«ªÑΓ ßßδ½áΓ∞ß∩ ½¿í«  ¡á  »ÑαѼѡ¡πε
  4603. »á¼∩Γ¿  »« ß¼ÑΘÑ¡¿ε, ½¿í« ¡á º¡áτÑ¡¿Ñ, σαá¡∩ΘÑÑß∩ ó φΓ«⌐ »ÑαѼѡ-
  4604. ¡«⌐. è ß«ªá½Ñ¡¿ε, ó ∩ºδ¬Ñ ÇßßѼí½Ñαá  «ΓßπΓßΓóπÑΓ  ßΓα«ú«ßΓ∞  ¿½¿
  4605. «τÑó¿ñ¡«ßΓ∞  ó  «Γ¡«ΦÑ¡¿¿  Γ«ú«, ¬á¬ ¼«ª¡« óδ»«½¡∩Γ∞ φΓ¿ ñóá ó¿ñá
  4606. ßß佫¬. é αѺπ½∞ΓáΓÑ ßß佬¿ ¡á »ÑαѼѡ¡πε ó »á¼∩Γ¿ »« ß¼ÑΘÑ¡¿ε  ¿
  4607. »« º¡áτÑ¡¿ε τáßΓ« »πΓáεΓ.
  4608.  
  4609.      ìá É¿ß. 6.1 »«¬áºá¡« αẽ¿τ¿Ñ ¼Ñªñπ  ß¼ÑΘÑ¡¿Ñ¼  ¿  º¡áτÑ¡¿Ñ¼
  4610. »ÑαѼѡ¡«⌐  ó »á¼∩Γ¿. ÅÑαѼѡ¡á∩ ó »á¼∩Γ¿ αẼÑα«¼ ó ß½«ó« MemLoc
  4611. ¿¼ÑÑΓ ß¼ÑΘÑ¡¿Ñ 5002h, á º¡áτÑ¡¿Ñ ÑÑ αáó¡« 1234h.
  4612.  
  4613.                                      |
  4614.                               ---------------
  4615.                    3000 4FFE  |    0001     |
  4616.                               |-------------|  ç¡áτÑ¡¿Ñ MemLoc
  4617.                    3000 5000  |    205F     |         |
  4618.      æ¼ÑΘÑ¡¿Ñ                 |-------------|         |
  4619.      MemLoc        3000 5002  |    1234 <---|----------
  4620.        |                ----  |-------------|
  4621.        |                 ^    |             |
  4622.        |                 |    |             |
  4623.        -------------------    |             |
  4624.                    3000 5004  |    9145     |
  4625.                               |-------------|
  4626.                    3000 5006  |    0000     |
  4627.                               ---------------
  4628.  
  4629.      É¿ß. 6.1 ÅÑαѼѡ¡δÑ ó »á¼∩Γ¿: º¡áτÑ¡¿Ñ ¿ ß¼ÑΘÑ¡¿Ñ.
  4630.  
  4631.      ìá É¿ß. 6.1 ß¼ÑΘÑ¡¿Ñ »ÑαѼѡ¡«⌐ ó »á¼∩Γ¿  αẼÑα«¼  ó  ß½«ó«
  4632. MemLoc  »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¬«¡ßΓá¡Γπ 5002, ¬«Γ«απε ¼«ª¡« »«½πτ¿Γ∞
  4633. ß »«¼«Θ∞ε «»ÑαáΓ«αá OFFSET. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩:
  4634.  
  4635.              mov   bx,OFFSET MemLoc
  4636.  
  4637. ºáúαπªáÑΓ º¡áτÑ¡¿Ñ 5002h ó αÑú¿ßΓα BX. ç¡áτÑ¡¿Ñ 5002h »αÑñßΓáó½∩-
  4638. ÑΓ  ß«í«⌐ ¡Ñ»«ßαÑñßΓóÑ¡¡δ⌐ «»Ñαá¡ñ. äαπú¿¼¿ ß½«óἿ, «¡« óßΓα«Ñ¡«
  4639. ¡Ñ»«ßαÑñßΓóÑ¡¡« ó ¿¡ßΓαπ¬µ¿ε ¿ ¡Ñ ¿º¼Ñ¡∩ÑΓß∩.
  4640.  
  4641.      ç¡áτÑ¡¿Ñ¼ MemLoc ∩ó½∩ÑΓß∩ 1234h. Ä¡« ßτ¿ΓδóáÑΓß∩  ¿º  »á¼∩Γ¿
  4642. ß« ß¼ÑΘÑ¡¿Ñ¼ 5002h ó ßÑú¼Ñ¡ΓÑ ñá¡¡δσ. Äñ¿¡ ¿º ß»«ß«í«ó ßτ¿Γδóá¡¿∩
  4643. ñá¡¡«ú« º¡áτÑ¡¿∩ ß«ßΓ«¿Γ ó ºáúαπº¬Ñ ó αÑú¿ßΓα BX, SI, DI  ¿½¿  BP
  4644. ß¼ÑΘÑ¡¿∩  MemLoc ¿ ¿ß»«½∞º«óá¡¿∩ ñá¡¡«ú« αÑú¿ßΓαá ñ½∩ áñαÑßᵿ¿ ¬
  4645. »á¼∩Γ¿. ê¡ßΓαπ¬µ¿¿:
  4646.  
  4647.              mov   bx,OFFSET MemLoc
  4648.              mov   ax,[bx]
  4649.  
  4650. ºáúαπªáεΓ º¡áτÑ¡¿Ñ MemLoc ó αÑú¿ßΓα  AX.  ç¡áτÑ¡¿Ñ  MemLoc  ¼«ª¡«
  4651. ΓᬪѠºáúαπº¿Γ∞ ¡Ñ»«ßαÑñßΓóÑ¡¡« ó AX ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿:
  4652.  
  4653.              mov   ax,MemLoc
  4654.  ¿½¿
  4655.              mov   ax,[MemLoc]
  4656.  
  4657.      çñÑß∞ º¡áτÑ¡¿Ñ 1234h »«½πτáÑΓß∩, ¬á¬ »α∩¼«⌐, á ¡Ñ ¬á¬ ¡Ñ»«ß-
  4658. αÑñßΓóÑ¡¡δ⌐  «»Ñαá¡ñ:  ¿¡ßΓαπ¬µ¿∩ MOV ¿ß»«½∞ºπÑΓ óßΓα«Ñ¡¡«Ñ ó ¡ÑÑ
  4659. ß¼ÑΘÑ¡¿Ñ 5002h ¿ ºáúαπªáÑΓ ó AX º¡áτÑ¡¿Ñ »« ß¼ÑΘÑ¡¿ε 5002h, ¬«Γ«-
  4660. α«Ñ ó ñá¡¡«¼ ß½πτáÑ αáó¡« 1234h.
  4661.  
  4662.      é ¿Γ«úÑ º¡áτÑ¡¿Ñ 1234h ¡Ñ ßó∩ºδóáÑΓß∩ »«ßΓ«∩¡¡« ß »ÑαѼѡ¡«⌐
  4663. MemLoc. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿¿:
  4664.  
  4665.              mov   [MemLoc],5555h
  4666.              mov   ax,[MemLoc]
  4667.  
  4668. ºáúαπªáεΓ ó αÑú¿ßΓα AX º¡áτÑ¡¿Ñ 5555h, á ¡Ñ 1234h.
  4669.  
  4670.      Äß¡«ó¡á∩ ¿ñÑ∩ ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ« Ñß½¿ ß¼ÑΘÑ¡¿Ñ  »ÑαѼѡ-
  4671. ¡«⌐  MemLoc »αÑñßΓáó½∩ÑΓ ß«í«⌐ º¡áτÑ¡¿Ñ-¬«¡ßΓá¡Γπ, ¬«Γ«αá∩ «»¿ßδ-
  4672. óáÑΓß∩ Σ¿¬ß¿α«óá¡¡δ¼  áñαÑß«¼  ó  ßÑú¼Ñ¡ΓÑ  ñá¡¡δσ,  Γ«  º¡áτÑ¡¿Ñ
  4673. MemLoc - φΓ« ¿º¼Ñ¡∩Ѽ«Ñ τ¿ß½«, σαá¡∩ΘÑÑß∩ »« ñá¡¡«¼π áñαÑßπ. Å«ß-
  4674. ½Ñ óδ»«½¡Ñ¡¿∩ ¿¡ßΓαπ¬µ¿⌐:
  4675.  
  4676.              mov   [MemLoc],1
  4677.              add   [MemLoc],3
  4678.  
  4679. »ÑαѼѡ¡á∩ MemLoc »«½πτáÑΓ º¡áτÑ¡¿Ñ 3, ¡« ¿¡ßΓαπ¬µ¿∩:
  4680.  
  4681.              add   OFFSET MemLoc,2
  4682.  
  4683. φ¬ó¿óá½Ñ¡Γ¡á ¿¡ßΓαπ¬µ¿¿:
  4684.  
  4685.              add   5002h,2
  4686.  
  4687. ¬«Γ«αá∩ ¡Ñ ¿¼ÑÑΓ ß¼δß½á, Γᬠ¬á¬  ¡Ñ󫺼«ª¡«  óδ»«½¡¿Γ∞  «»Ñαᵿε
  4688. ADD, »α¿íáó¿ó «ñ¡π ¬«¡ßΓá¡Γπ ¬ ñαπú«⌐.
  4689.  
  4690.      ôñ¿ó¿Γѽ∞¡« τáßΓ« óßΓαÑτáεΘÑ⌐ß∩ «Φ¿í¬«⌐ ∩ó½∩ÑΓß∩ Γ«, τΓ« πó-
  4691. ½Ñ¬Φ¿ß∞ ¡á»¿ß᡿Ѽ »α«úαá¼¼δ τáßΓ« ºáíδóáεΓ ¿ß»«½∞º«óáΓ∞ «»Ñαᵿε
  4692. OFFSET, ¡á»α¿¼Ñα:
  4693.  
  4694.              mov   si,MemLoc
  4695.  
  4696. úñÑ ¡πª¡« ¿ß»«½∞º«óáΓ∞ ß¼ÑΘÑ¡¿Ñ MemLoc. ¡á »Ñαóδ⌐  óºú½∩ñ  ñá¡¡á∩
  4697. ßΓα«¬á  ¡Ñ óδú½∩ñ¿Γ ¡Ñ»αáó¿½∞¡«⌐, ¿ Γᬠ¬á¬ MemLoc - φΓ« »ÑαѼѡ-
  4698. ¡á∩ αẼÑα«¼ ó ß½«ó«, Γ« φΓá ßΓα«¬á ¡Ñ »α¿óÑñÑΓ ¬  «Φ¿í¬Ñ  áßßѼ-
  4699. í½¿α«óá¡¿∩. Äñ¡á¬« »α¿ óδ»«½¡Ñ¡¿¿ ó SI íπñπΓ ºáúαπªÑ¡δ ß«ñÑαªáΘ¿-
  4700. Ñß∩ ó »ÑαѼѡ¡«⌐ MemLoc ñá¡¡δÑ (1234h), á ¡Ñ ÑÑ ß¼ÑΘÑ¡¿Ñ (5002h),
  4701. ¿ αѺπ½∞ΓáΓδ íπñπΓ ¡Ñ»αÑñ߬áºπѼδ.
  4702.  
  4703.      ìáñѪ¡«ú« ß»«ß«íá ¿ºíѪáΓ∞ φΓ«⌐ »α«í½Ñ¼δ ¡ÑΓ, ¡« ¼«ª¡«  »α¿-
  4704. ¡∩Γ∞ ºá »αá󿽫 ºá¬½ετáΓ∞ óßÑ ßß佬¿ ¡á »á¼∩Γ∞ ó ¬óáñαáΓ¡δѠ߬«í-
  4705. ¬¿. è«úñá »ÑαÑñ ßßδ½¬á¼¿ ¡á áñαÑß¡δÑ ¬«¡ßΓá¡Γδ íπñÑΓ  π¬áºδóáΓ∞ß∩
  4706. »αÑΣ¿¬ß  OFFSET,  á  ßß佬¿  ¡á »á¼∩Γ∞ - ºá¬½ετáΓ∞ß∩ ó ¬óáñαáΓ¡δÑ
  4707. ߬«í¬¿, φΓ« πßΓαá¡¿Γ ñóπß¼δ߽ѡ¡«ßΓ∞ ¿ ¡Ñ«»αÑñѽѡ¡«ßΓ∞  »α¿  ¿ß-
  4708. »«½∞º«óá¡¿¿  ¿¼Ñ¡  »ÑαѼѡ¡δσ »á¼∩Γ¿. Åα¿ Γᬫ¼ ß«ú½áΦÑ¡¿¿ αáí«Γá
  4709. ¿¡ßΓαπ¬µ¿⌐:
  4710.  
  4711.              mov   si,OFFSET MemLoc
  4712.  ¿
  4713.              mov   si,[MemLoc]
  4714.  
  4715. ßΓá¡«ó¿Γß∩ ß«óÑαΦÑ¡¡« »«¡∩Γ¡«⌐, ó Γ« óαѼ∩ ¬á¬ ¿¡ßΓαπ¬µ¿∩:
  4716.  
  4717.              mov   si,MemLoc
  4718.  
  4719. íπñÑΓ ¡áßΓ«αᪿóáΓ∞.
  4720.  
  4721.  
  4722.  
  4723.                            âαá¡¿µδ ßÑú¼Ñ¡Γ«ó
  4724. -----------------------------------------------------------------
  4725.  
  4726.      Äñ¿¡ ¿º ¡á¿í«½ÑÑ Γαπñ¡δσ ¼«¼Ñ¡Γ«ó »α¿  »α«úαá¼¼¿α«óá¡¿¿  ñ½∩
  4727. »α«µÑßß«α«ó 8086 ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ« ¬ »á¼∩Γ¿ ¡Ñ½∞º∩ «íαáΘáΓ∞-
  4728. ß∩, ¬á¬ ¬ «ñ¡«¼π í«½∞Φ«¼π ¼áßß¿óπ íá⌐Γ.  Ä¡á ñ«ßΓπ»¡á  Γ«½∞¬«  »«
  4729. τáßΓ∩¼,  ¬áªñá∩  ¿º  ¬«Γ«αδσ αáó¡á 64è ¿ ßó∩ºá¡á ß ßÑú¼Ñ¡Γ¡δ¼ αÑ-
  4730. ú¿ßΓα«¼. êß»«½∞º«óá¡¿Ñ ßÑú¼Ñ¡Γ«ó ¼«ªÑΓ »α¿ó«ñ¿Γ∞ ¬ Γαπñ¡«π½«ó¿¼δ¼
  4731. «Φ¿í¬á¼,  Γᬠ ¬á¬ Ñß½¿ »α«úαἼᠻδΓáÑΓß∩ «íαáΓ¿Γ∞ß∩ ¬ áñαÑßπ ºá
  4732. ¬«¡µ«¼ ßÑú¼Ñ¡Γá,  «¡á ó ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ óÑα¡ÑΓß∩ ¡áºáñ  ¿  íπñÑΓ
  4733. «íαáΘáΓ∞ß∩ ¬ ¡áτá½π ßÑú¼Ñ¡Γá.
  4734.  
  4735.      é ¬áτÑßΓóÑ »α¿¼Ñαá »αÑñ»«½«ª¿¼, τΓ« »á¼∩Γ∞,  ¡áτ¿¡áεΘá∩ß∩  ß
  4736. áñαÑßá 10000h, ß«ñÑαª¿Γ ñá¡¡δÑ, »«¬áºá¡¡δÑ ¡á É¿ß. 6.2. è«úñá αÑ-
  4737. ú¿ßΓα DS πßΓá¡áó½¿óáÑΓß∩ ó º¡áτÑ¡¿Ñ 1000h, »α«úαá¼¼á, ¬«Γ«αá∩ «í-
  4738. αáΘáÑΓß∩  ¬ ßΓα«¬Ñ "Testing" »« áñαÑßπ 1000:FFF9, »«ß½Ñ ß¿¼ó«½á g
  4739. »«  áñαÑßπ  1000:FFFF,  ó«ºóαáΘáÑΓß∩  ¡áºáñ  ¬  íá⌐Γπ  »«  áñαÑßπ
  4740. 1000:0000, Γᬠ¬á¬ ß¼ÑΘÑ¡¿Ñ ¡Ñ ¼«ªÑΓ »αÑóδΦáΓ∞ 0FFFFh (¼á¬ß¿¼á½∞-
  4741. ¡«Ñ 16-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ).
  4742.  
  4743.                              ÅÑαóδ⌐ íá⌐Γ, áñαÑßπѼδ⌐ «Γ¡«ß¿Γѽ∞¡«
  4744.                              DS, αáóÑ¡ 1000h (áñαÑß 1000 0000)
  4745.                   |                       |
  4746.            ---------------                |
  4747.     10000  |     21      |<----------------
  4748.            |-------------|
  4749.     10001  |     90      |
  4750.            |-------------|
  4751.     10002  |     29      |
  4752.            |-------------|
  4753.     10003  |     52      |
  4754.            |-------------|
  4755.     10004  |     7F      |
  4756.            ---------------
  4757.  
  4758.            ---------------
  4759.     1FFF9  |   54 ('T')  |
  4760.            |-------------|
  4761.     1FFFA  |   65 ('e')  |
  4762.            |-------------|
  4763.     1FFFB  |   73 ('s')  |
  4764.            |-------------|
  4765.     1FFFC  |   74 ('t')  |
  4766.            |-------------|
  4767.     1FFFD  |   69 ('i')  |    Å«ß½Ññ¡¿⌐ íá⌐Γ, áñαÑßπѼδ⌐
  4768.            |-------------|     «Γ¡«ß¿Γѽ∞¡« DS = 1000h
  4769.     1FFFE  |   6E ('n')  |       (áñαÑß 1000 FFFF)
  4770.            |-------------|               |
  4771.     1FFFF  |   67 ('g')  |<---------------
  4772.            |-------------|
  4773.     20000  |   00 (NULL) |
  4774.            ---------------
  4775.  
  4776.      É¿ß. 6.2 Åα¿¼Ñα ñ«ßΓ¿ªÑ¡¿∩ úαá¡¿µδ ßÑú¼Ñ¡Γá.
  4777.  
  4778.      ÅαÑñ»«½«ª¿¼ ΓÑ»Ñα∞, τΓ« »α¿ DS:SI, αáó¡«¼ 1000:FFF9, óδºδóá-
  4779. ÑΓß∩  »«ñ»α«úαἼᠠñ½∩ »αÑ«íαẫóá¡¿∩ ßΓ᫬¿ "Testing" ó óÑασ¡¿⌐
  4780. αÑú¿ßΓα:
  4781.  
  4782. ; Å«ñ»α«úαá¼¼á ñ½∩ »αÑ«íαẫóá¡¿∩ ºáóÑαΦáεΘÑ⌐ß∩ ¡π½Ñóδ¼
  4783. ; ß¿¼ó«½«¼ ßΓ᫬¿ ó óÑασ¡¿⌐ αÑú¿ßΓα.
  4784. ;
  4785. ; éó«ñ:   DS:DI - π¬áºáΓѽ∞ ¡á ßΓ᫬π.
  4786. ;
  4787. ToUpper   PROC NEAR
  4788.           mov   ax,[si]         ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  4789.           cmp   al,0            ; Ñß½¿ 0...
  4790.           jz    ToUpperDone     ; ...»αÑ«íαẫóáΓ∞ ßΓ᫬π
  4791.           cmp   al,'a'          ; φΓ« ßΓα«τ¡á∩ íπ¬óá?
  4792.           jb    ToUpperCase     ; ¡Ñ ßΓα«τ¡á∩ íπ¬óá
  4793.           cmp   al,'z'
  4794.           ja    ToUpperNext     ; ¡Ñ ßΓα«τ¡á∩ íπ¬óá
  4795.           and   al,NOT 20h      ; ßΓα«τ¡á∩ íπ¬óá, »αÑ«íαẫóáΓ∞
  4796.                                 ; ÑÑ ó óÑασ¡¿⌐ αÑú¿ßΓα
  4797.           mov   [si],al         ; ß«σαá¡¿Γ∞ »α«»¿ß¡πε íπ¬óπ
  4798. ToUpperNext:
  4799.           inc   si              ; ßßδ½¬á ¡á ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  4800.           jmp   ToUpper
  4801. ToUpperDone:
  4802.           ret
  4803. ToUpper   ENDP
  4804.  
  4805.      Å«ß½Ñ Γ«ú«, ¬á¬ »α«µÑñπαá  ToUpper  «íαáí«ΓáÑΓ  »ÑαóδÑ  ßѼ∞
  4806. ß¿¼ó«½«ó  ßΓ᫬¿,  SI  ¿º¼Ñ¡¿Γ  º¡áτÑ¡¿Ñ ß 0FFFFh ¡á 0. (SI - φΓ«
  4807. 16-αáºα∩ñ¡δ⌐  αÑú¿ßΓα,  »«φΓ«¼π  «ΓßτÑΓ  ß  »αÑóδΦÑ¡¿Ñ¼  º¡áτÑ¡¿∩
  4808. 0FFFFh  óδ»«½¡¿Γ∞ ¡Ñ½∞º∩.) çáóÑαΦáεΘ¿⌐ ßΓ᫬π ¡π½Ñó«⌐ íá⌐Γ, ºá»¿-
  4809. ßá¡¡δ⌐ »« áñαÑßπ 20000h, ñ«ßΓ¿ú¡πΓ ¡Ñ íπñÑΓ. é¼ÑßΓ« φΓ«ú«  »α«µÑ-
  4810. ñπαá ¡áτ¡ÑΓ »αÑ«íαẫóδóáΓ∞ ¡Ñ «Γ¡«ß∩Θ¿Ñß∩ ¬ ñѽπ íá⌐Γδ »« áñαÑßπ
  4811. 10000h ¿ ¡Ñ «ßΓá¡«ó¿Γß∩, »«¬á ¡Ñ óßΓαÑΓ¿Γ ¡π½Ñó«⌐ íá⌐Γ. ìá  í«½ÑÑ
  4812. »«ºñ¡Ñ¼ φΓá»Ñ φΓ¿ ¿º¼Ñ¡Ñ¡¡δÑ íá⌐Γδ ¼«úπΓ óδºóáΓ∞ ¡Ñ¬«ααÑ¬Γ¡πε αá-
  4813. í«Γπ »α«úαá¼¼δ. ùáßΓ« ΓᬿѠ«Φ¿í¬¿, óδºóá¡¡δÑ ß½πτá⌐¡δ¼ ¿º¼Ñ¡Ñ¡¿-
  4814. Ѽ íá⌐Γ »α¿ ñ«ßΓ¿ªÑ¡¿¿ »α«úαá¼¼δ  ¬«¡µá  ßÑú¼Ñ¡Γá,  íδóáÑΓ  «τÑ¡∞
  4815. Γαπñ¡« «Γß½Ññ¿Γ∞, »«ß¬«½∞¬π φΓ¿ «Φ¿í¬¿ ¼«úπΓ »α«∩ó½∩Γ∞ß∩ ß«óßѼ ó
  4816. ñαπú«¼ ¼ÑßΓÑ »α«úαá¼¼δ ¿ ó ñαπú«Ñ óαѼ∩.
  4817.  
  4818.      Åα«ßΓπε αѬ«¼Ñ¡ñáµ¿ε ºñÑß∞ ñáΓ∞ Γαπñ¡«. ìπª¡« »α«ßΓ« «íÑß»Ñ-
  4819. τ¿óáΓ∞, τΓ«íδ óáΦá »α«úαἼᠡѻαÑñ¡á¼ÑαÑ¡¡« ¡Ñ óδσ«ñ¿½á ºá ¬«¡Ñµ
  4820. ßÑú¼Ñ¡Γá. èα«¼Ñ Γ«ú« ¡Ñ ß½ÑñπÑΓ  «íαáΘáΓ∞ß∩  ¬  ß½«óπ  ß  áñαÑß«¼
  4821. 0FFFFh. îáΦ¿¡á ¼«ªÑΓ "ºáó¿ß¡πΓ∞".
  4822.  
  4823.  
  4824.  
  4825.         ìÑ»«½¡«Ñ ß«σαá¡Ñ¡¿Ñ ß«ßΓ«∩¡¿∩ ó «íαáí«Γτ¿¬Ñ »αÑαδóá¡¿⌐
  4826. -----------------------------------------------------------------
  4827.  
  4828.      Äíαáí«Γτ¿¬ »αÑαδóá¡¿⌐ - φΓ«  »α«úαá¼¼á,  ¡á  ¬«Γ«απε  «ßπΘÑ-
  4829. ßΓó½∩ÑΓß∩ »ÑαÑσ«ñ »α¿ á»»áαáΓ¡«¼ »αÑαδóá¡¿¿, ¡á»α¿¼Ñα, »αÑαδóá¡¿¿
  4830. «Γ ¬½áó¿áΓπαδ. Äíαáí«Γτ¿¬ »αÑαδóá¡¿⌐ óδ»«½¡∩ÑΓ ¼¡«ªÑßΓó« Σπ¡¬µ¿⌐,
  4831. Γᬿσ,  ¬á¬  íπΣÑα¿ºáµ¿∩ ¬½áó¿Φ ¿½¿ ¿º¼Ñ¡Ñ¡¿Ñ ß¿ßΓѼ¡«ú« Γá⌐¼Ñαá.
  4832. ÅαÑαδóá¡¿Ñ ¼«ªÑΓ »α«¿º«⌐Γ¿ ó ½εí«Ñ óαѼ∩ ó »α«µÑßßÑ αáí«Γδ  ½εí«⌐
  4833. »α«úαá¼¼δ,  »«φΓ«¼π «íαáí«Γτ¿¬ »αÑαδóá¡¿⌐ »«ß½Ñ ºáóÑαΦÑ¡¿∩ αáí«Γδ
  4834. (óδσ«ñ ¿º «íαáí«Γτ¿¬á) ñ«½ªÑ¡ óÑα¡πΓ∞ αÑú¿ßΓαδ ¿ Σ½áú¿ »α«µÑßß«αá
  4835. ó Γ«τ¡«ßΓ¿ ó Γ«ªÑ ßἫѠ߫ßΓ«∩¡¿Ñ, ¬«Γ«α«Ñ í佫 »α¿ óσ«ñÑ ó «íαá-
  4836. í«Γτ¿¬ »αÑαδóá¡¿⌐. àß½¿ φΓ« ¡Ñ ñѽáÑΓß∩, Γ« »α«úαá¼¼á, »α¿ óδ»«½-
  4837. ¡Ñ¡¿¿ ¬«Γ«α«⌐ »α«¿º«Φ½« »αÑαδóá¡¿Ñ, ¼«ªÑΓ «í¡áαπª¿Γ∞, τΓ« ß«ßΓ«∩-
  4838. ¡¿Ñ »α«µÑßß«αá ¡Ñ»αÑñó¿ñÑ¡¡δ¼ «íαẫ¼ ¿º¼Ñ¡¿½«ß∞.
  4839.  
  4840.      ìá»α¿¼Ñα, »α¿ óδ»«½¡Ñ¡¿¿ »α«úαá¼¼δ:
  4841.  
  4842.               .
  4843.               .
  4844.               .
  4845.               mov   ax,[ReturnValue]
  4846.               ret
  4847.               .
  4848.               .
  4849.               .
  4850.  
  4851. »αÑαδóá¡¿Ñ ¼«ªÑΓ »α«¿º«⌐Γ¿ ¼Ñªñπ φΓ¿¼¿ ñóπ¼∩  ¿¡ßΓαπ¬µ¿∩¼¿.  àß½¿
  4852. «íαáí«Γτ¿¬ »αÑαδóá¡¿⌐ ¡Ñ ß«σαá¡¿Γ ß«ñÑন¼«Ñ AX,  Γ« ó«ºóαáΘáѼ«Ñ
  4853. ó óδºδóáεΘπε  »α«úαá¼¼π  º¡áτÑ¡¿Ñ  íπñÑΓ «ß¡«óδóáΓ∞ß∩ ¡á Γ«¼, τΓ«
  4854. ñѽὠ  «íαáí«Γτ¿¬  »αÑαδóá¡¿⌐,   á  ¡Ñ  ¡á  º¡áτÑ¡¿¿  »ÑαѼѡ¡«⌐
  4855. ReturnValue.
  4856.  
  4857.      Å«φΓ«¼π ¬áªñδ⌐  «íαáí«Γτ¿¬  »αÑαδóá¡¿⌐  ñ«½ªÑ¡ ∩ó¡δ¼ «íαẫ¼
  4858. ß«σαá¡∩Γ∞ ß«ñÑন¼«Ñ óßÑσ αÑú¿ßΓα«ó.  ò«Γ∩ ñ«»π߬áÑΓß∩  ß«σαá¡∩Γ∞
  4859. Γ«½∞¬« ΓÑ αÑú¿ßΓαδ, ¬«Γ«αδÑ ¿º¼Ñ¡∩ÑΓ «íαáí«Γτ¿¬  »αÑαδóá¡¿⌐,  ñ½∩
  4860. í«½∞ΦÑ⌐ úáαá¡Γ¿¿ ½πτΦÑ »α¿ óσ«ñÑ ó «íαáí«Γτ¿¬ ºá¡ÑßΓ¿ óßÑ αÑú¿ßΓ-
  4861. αδ ó ßΓѬ, á »α¿ óδσ«ñÑ - ó«ßßΓá¡«ó¿Γ∞ ¿σ ¿º ßΓѬá.  éÑñ∞ ó  «ñ¿¡
  4862. »αѬαáß¡δ⌐ ñÑ¡∞ óδ ¼«ªÑΓÑ óÑα¡πΓ∞ß∩ ¬ ¬«ñπ  «íαáí«Γτ¿¬á  »αÑαδóá-
  4863. ¡¿⌐, ¼«ñ¿Σ¿µ¿απÑΓÑ Ñú« ¿ ¿ß»«½∞ºπÑΓÑ ñ«»«½¡¿Γѽ∞¡δÑ αÑú¿ßΓαδ, ºá-
  4864. íδó »α¿ φΓ«¼ ñá¡¡δÑ αÑú¿ßΓαδ ß«σαá¡¿Γ∞.
  4865.  
  4866.      æ«σαá¡Ñ¡¿Ñ  Σ½áú«ó  ó  «íαáí«Γτ¿¬Ñ »αÑαδóá¡¿⌐ ¡Ñ«íσ«ñ¿¼δ¼ ¡Ñ
  4867. ∩ó½∩ÑΓß∩. è«úñá »α«¿ßσ«ñ¿Γ »αÑαδóá¡¿Ñ,  óßÑ  Σ½áú¿  áóΓ«¼áΓ¿τÑ߬¿
  4868. ºá¡«ß∩Γß∩ ó ßΓѬ, á ¬«úñá «íαáí«Γτ¿¬ »αÑαδóá¡¿⌐  óδ»«½¡∩ÑΓ  ¿¡ßΓ-
  4869. απ¬µ¿ε IRET, τΓ«íδ óÑα¡πΓ∞ß∩ ó »αÑαóá¡¡πε »α«úαá¼¼π, Σ½áú¿  áóΓ«-
  4870. ¼áΓ¿τÑ߬¿ ó«ßßΓá¡áó½¿óáεΓß∩ ¿º ßΓѬá. êΓ«ú«¼ áíß«½εΓ¡«⌐ ¡Ñ«íσ«ñ¿-
  4871. ¼«ßΓ¿ ß«σαá¡Ñ¡¿∩ ó «íαáí«Γτ¿¬Ñ »αÑαδóá¡¿⌐ óßÑσ αÑú¿ßΓα«ó ∩ó½∩ÑΓß∩
  4872. ß½ÑñπεΘÑÑ »αá󿽫: ¡Ñ½∞º∩ ñѽáΓ∞ »αÑñ»«½«ªÑ¡¿∩  «  ß«ßΓ«∩¡¿¿  αÑ-
  4873. ú¿ßΓα«ó ¿½¿ Σ½áú«ó »α¿ óσ«ñÑ ó «íαáí«Γτ¿¬ »αÑαδóá¡¿⌐.  è½áßß¿τÑß-
  4874. ¬¿¼ »α¿¼Ñα«¼ φΓ«ú« ∩ó½∩ÑΓß∩ «íαáí«Γτ¿¬  »αÑαδóá¡¿⌐,  ¬«Γ«αδ⌐  óδ-
  4875. »«½¡∩ÑΓ ßΓ᫬«óδÑ  ¿¡ßΓαπ¬µ¿¿, ¡Ñ πßΓá¡«ó¿ó »αÑñóáα¿Γѽ∞¡«  ∩ó¡δ¼
  4876. «íαẫ¼ Σ½áú ¡á»αáó½Ñ¡¿∩. ìπª¡« »«¼¡¿Γ∞ « Γ«¼, τΓ« ¬«úñá »α«¿ßσ«-
  4877. ñ¿Γ »αÑαδóá¡¿Ñ,  ¼«ªÑΓ óδ»«½¡∩Γ∞ß∩ ½εíá∩ »α«úαá¼¼á, »«φΓ«¼π »«ß½Ñ
  4878. Γ«ú«,  ¬á¬ óδ ß«σαá¡¿ΓÑ αÑú¿ßΓαδ »αÑαóá¡¡«⌐ »α«úαá¼¼δ,  óδ ñ«½ª¡δ
  4879. πßΓá¡«ó¿Γ∞  αÑú¿ßΓαδ  (ó¬½ετá∩ ßÑú¼Ñ¡Γ¡δÑ αÑú¿ßΓαδ) ¿ Σ½áú¿ Γᬿ¼
  4880. «íαẫ¼,  ¬á¬ φΓ« ¡Ñ«íσ«ñ¿¼«. Æ«½∞¬« »«ß½Ñ φΓ«ú« óδ ¼«ªÑΓÑ óδ»«½-
  4881. ¡∩Γ∞ ñαπú¿Ñ Σπ¡¬µ¿¿.
  4882.  
  4883.  
  4884.  
  4885.    ìÑ ºáíδóá⌐ΓÑ «í «»αÑñѽѡ¿¿ úαπ»»δ ó «»Ñαá¡ñáσ ¿ Γáí½¿µáσ ñá¡¡δσ
  4886. -----------------------------------------------------------------
  4887.  
  4888.      è«¡µÑ»µ¿∩ úαπ»»δ ßÑú¼Ñ¡Γ«ó »α«ßΓá ¿ »«½Ñº¡á. éδ ¼«ªÑΓÑ «»αÑ-
  4889. ñѽ¿Γ∞,  τΓ«  ¡Ñ߬«½∞¬«  ßÑú¼Ñ¡Γ«ó  »α¿¡áñ½ÑªáΓ  ¬ «ñ¡«⌐ ¿ Γ«⌐ ªÑ
  4890. úαπ»»Ñ, á ¬«¼»«¡«óΘ¿¬ ¬«¼í¿¡¿απÑΓ φΓ¿ ßÑú¼Ñ¡Γδ  ó  «ñ¿¡  ßÑú¼Ñ¡Γ.
  4891. Åα¿  φΓ«¼ óßÑ ñá¡¡δÑ ó ßúαπ»»¿α«óá¡¡δσ ßÑú¼Ñ¡Γáσ áñαÑßπεΓß∩ «Γ¡«-
  4892. ß¿Γѽ∞¡« «ñ¡«ú« ¿ Γ«ú« ªÑ ßÑú¼Ñ¡Γ¡«ú« αÑú¿ßΓαá. ìá É¿ß. 6.3 »«¬á-
  4893. ºá¡« Γα¿ ßÑú¼Ñ¡Γá: Seg1, Seg2 ¿ Seg3, ßúαπ»»¿α«óá¡¡δÑ ó GroupSeg.
  4894. ÇñαÑßᵿ∩ ¬« óßѼ ΓαѼ ßÑú¼Ñ¡Γá¼ «ßπΘÑßΓó½∩ÑΓß∩ «ñ¡«óαѼѡ¡«  «Γ-
  4895. ¡«ß¿Γѽ∞¡«  «ñ¡«ú« ßÑú¼Ñ¡Γ¡«ú« αÑú¿ßΓαá, ºáúαπªÑ¡¡«ú« íẫóδ¼ áñ-
  4896. αÑß«¼ GroupSeg.
  4897.  
  4898.                                      æ¼ÑΘÑ¡¿Ñ 0 ó GroupSeg
  4899.                                      = ß¼ÑΘÑ¡¿ε 0 ó Seg1
  4900.                                              |
  4901.              / ---------------------- <-------
  4902.             |  |                    |
  4903.             |  |                    |
  4904.             |  |       Seg1         |     æ¼ÑΘÑ¡¿Ñ 2000h ó
  4905.             |  |    (αẼÑα 8K)     |     GroupSeg = ß¼ÑΘÑ¡¿ε 0
  4906.             |  |                    |     ó Seg2
  4907.             |  |                    |        |
  4908.             |  |--------------------| <-------
  4909.             |  |                    |
  4910.             |  |                    |
  4911.             |  |       Seg2         |
  4912.             |  |    (αẼÑα 12K)    |
  4913.   GroupSeg  |  |                    |     æ¼ÑΘÑ¡¿Ñ 5000h ó
  4914.             |  |                    |     GroupSeg = ß¼ÑΘÑ¡¿ε 0
  4915.             |  |                    |     ó Seg3
  4916.             |  |                    |        |
  4917.             |  |--------------------| <-------
  4918.             |  |                    |
  4919.             |  |                    |
  4920.             |  |       Seg3         |
  4921.             |  |    (αẼÑα 64K)    |
  4922.             |  |                    |
  4923.             |  |                    |
  4924.             |  |                    |
  4925.             |  |                    |
  4926.              \ ----------------------
  4927.  
  4928.      É¿ß. 6.3 Æα¿ ßÑú¼Ñ¡Γá, «íΩÑñ¿¡Ñ¡¡δÑ ó «ñ¡π úαπ»»π ßÑú¼Ñ¡Γ«ó.
  4929.  
  4930.      âαπ»»δ ßÑú¼Ñ¡Γ«ó »«ºó«½∩εΓ óá¼ ½«ú¿τÑ߬¿ αáºñѽ¿Γ∞ ñá¡¡δÑ ¡á
  4931. α∩ñ  «í½áßΓÑ⌐ íѺ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ºáúαπªáΓ∞ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα ¬áª-
  4932. ñδ⌐ αáº, ¬«úñá óδ σ«Γ¿ΓÑ »ÑαÑ⌐Γ¿ «Γ «ñ¡«⌐ ½«ú¿τÑ߬«⌐ «í½áßΓ¿ ñá¡-
  4933. ¡δσ ¬ ñαπú«⌐.
  4934.  
  4935.      è ß«ªá½Ñ¡¿ε, ó «íαáí«Γ¬Ñ  úαπ»» ßÑú¼Ñ¡Γ«ó  ó îá¬α«áßßѼí½ÑαÑ
  4936. Σ¿α¼δ  Microsoft  MASM ¿¼ÑÑΓß∩ α∩ñ »α«í½Ñ¼, »«φΓ«¼π, »«¬á ¡Ñ »«∩-
  4937. ó¿½ß∩ Æπαí« ÇßßѼí½Ñα, úαπ»»δ ßÑú¼Ñ¡Γ«ó ¼«ú½¿ »α¿óÑßΓ¿ ¬ ¡Ñ»α¿∩Γ-
  4938. ¡«ßΓ∩¼. âαπ»»δ ßÑú¼Ñ¡Γ«ó ¿ß»«½∞º«ó὿ß∞ ñ½∩ ¬«¼»«¡«ó¬¿  ¬«ñá  Çß-
  4939. ßѼí½Ñαá ß ∩ºδ¬á¼¿ óδß«¬«ú« πα«ó¡∩ (¡á»α¿¼Ñα, æ¿).
  4940.  
  4941.      ô½πτΦÑ¡¡δ⌐  αѪ¿¼ Æπαí« ÇßßѼí½Ñαá (Ideal mode) ¿ºíáó¿Γ  óáß
  4942. «Γ  »α«í½Ñ¼,  ßó∩ºá¡¡δσ  ß  «»αÑñѽѡ¿Ñ¼ úαπ»» ßÑú¼Ñ¡Γ«ó. ¥Γ« ÑΘÑ
  4943. «ñ¿¡ ñ«ó«ñ ó »«½∞ºπ »ÑαÑσ«ñá «Γ »α«úαá¼¼¿α«óá¡¿∩ ó ßΓ¿½Ñ  MASM  ¬
  4944. π½πτΦÑ¡¡«¼π αѪ¿¼π.
  4945.  
  4946.      Åα«í½Ñ¼á, ¬«Γ«απε »«α«ªñáÑΓ MASM »α¿ αáí«ΓÑ ß úαπ»»á¼¿  ßÑú-
  4947. ¼Ñ¡Γ«ó ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ« MASM ¿¡ΓÑα»αÑΓ¿απÑΓ ß¼ÑΘÑ¡¿∩, »«½π-
  4948. τÑ¡¡δÑ ß »«¼«Θ∞ε «»Ñαᵿ¿ OFFSET ó ñá¡¡«¼  ßÑú¼Ñ¡ΓÑ  úαπ»»δ,  ¬á¬
  4949. ß¼ÑΘÑ¡¿Ñ  ó  φΓ«¼ ßÑú¼Ñ¡ΓÑ, á ¡Ñ ¬á¬ ß¼ÑΘÑ¡¿Ñ ó úαπ»»Ñ ßÑú¼Ñ¡Γ«ó.
  4950. ìá»α¿¼Ñα, Ñß½¿ ¼δ ¿¼ÑÑΓ úαπ»»π ßÑú¼Ñ¡Γ«ó, »«¬áºá¡¡πε ¡á É¿ß. 6.3,
  4951. Γ« ÇßßѼí½Ñα Γαá¡ß½¿α«óá½ íδ ¿¡ßΓαπ¬µ¿ε:
  4952.  
  4953.                mov   ax,OFFSET Var1
  4954. ó
  4955.                mov   ax,0
  4956.  
  4957. Γᬠ¬á¬ Var1  - φΓ« ß¼ÑΘÑ¡¿Ñ 0 ó Seg2, σ«Γ∩ Var1 »αÑñßΓáó½∩ÑΓ ß«-
  4958. í«⌐ ß¼ÑΘÑ¡¿Ñ 2000h ó GroupSeg. Å«ß¬«½∞¬π »αÑñ»«½áúáÑΓß∩, τΓ« ñá¡-
  4959. ¡δÑ ó úαπ»»Ñ  ßÑú¼Ñ¡Γ«ó áñαÑßπεΓß∩ «Γ¡«ß¿Γѽ∞¡« úαπ»»δ ßÑú¼Ñ¡Γ«ó,
  4960. á ¡Ñ «Γ¡«ß¿Γѽ∞¡« «Γñѽ∞¡«ú« ßÑú¼Ñ¡Γá, φΓ« »«α«ªñáÑΓ α∩ñ »α«í½Ñ¼.
  4961.  
  4962.      ÉÑΦÑ¡¿Ñ¼ ºñÑß∞ ∩ó½∩ÑΓß∩ ¿ß»«½∞º«óá¡¿Ñ  »αÑΣ¿¬ßá  «»αÑñѽѡ¿∩
  4963. úαπ»»δ. æΓ᫬á:
  4964.  
  4965.                mov   ax,OFFSET GroupSeg:Var1
  4966.  
  4967. »«ºó«½∩ÑΓ óδ»«½¡¿Γ∞ ¬«ααÑ¬Γ¡«Ñ áßßÑ¼í½¿α«óá¡¿Ñ Var1, óδτ¿ß½∩∩ Ñú«
  4968. «Γ¡«ß¿Γѽ∞¡« úαπ»»δ ßÑú¼Ñ¡Γ«ó GruopSeg.
  4969.  
  4970.      é MASM ÑßΓ∞ ñαπú¿Ñ á¡á½«ú¿τ¡δÑ »α«í½Ñ¼δ, ¬áßáεΘ¿Ñß∩  ¿ß»«½∞-
  4971. ºπѼδσ  ó úαπ»»áσ ßÑú¼Ñ¡Γ«ó Γáí½¿µ ñá¡¡δσ. èᬠ¿ «»Ñαᵿ∩ OFFSET,
  4972. ß¼ÑΘÑ¡¿∩, áßßÑ¼í½¿απѼδÑ ó Γáí½¿µδ ñá¡¡δσ,  úÑ¡Ñα¿απεΓß∩  «Γ¡«ß¿-
  4973. Γѽ∞¡«  ßÑú¼Ñ¡Γ«ó,  á  ¡Ñ «Γ¡«ß¿Γѽ∞¡« úαπ»» ßÑú¼Ñ¡Γ«ó. æπΓ∞ φΓ«⌐
  4974. »α«í½Ñ¼δ »«¬áºá¡á ó ß½ÑñπεΘѼ »α¿¼ÑαÑ:
  4975.  
  4976. Stack            SEGMENT WORD STASK 'STACK'
  4977.         DB       512 DUP (?)         ; ºáαѺÑαó¿α«óáΓ∞ »α«ßΓαá¡-
  4978.                                      ; ßΓó« ñ½∩ ßΓѬá αẼÑα«ó
  4979.                                      ; 1/2 è
  4980. Stack            ENDS
  4981.  
  4982. ;
  4983. ; Ä»αÑñѽ¿Γ∞ úαπ»»π ßÑú¼Ñ¡Γá ñá¡¡δσ DGROUP, ß«ßΓ«∩Θπε
  4984. ; ¿º Data1 ¿ Data2
  4985. ;
  4986. DGROUP           GROUP   Data1, Data2
  4987.  
  4988. ;
  4989. ; ÅÑαóδ⌐ ßÑú¼Ñ¡Γ ó DGROUP.
  4990. ;
  4991. Data1            SEGMENT WORD PUBLIC 'DATA'
  4992. Scratch          DB      100h DUP (0)   ; íπΣÑα αẼÑα«¼ 256K
  4993. Data1            ENDS
  4994.  
  4995. ;
  4996. ; éΓ«α«⌐ ßÑú¼Ñ¡Γ ó DGROUP.
  4997. ;
  4998. Data2            SEGMENT WORD PUBLIC 'DATA'
  4999. Buffer           DB      100h DUP ('@') ; íπΣÑα αẼÑα«¼ 256è,
  5000.                                         ; ºá»«½¡Ñ¡¡δ⌐ º¡á¬á¼¿ @
  5001. BufferPtr        DW      Buffer         ; π¬áºáΓѽ∞ ¡á íπΣÑα
  5002. Data2            ENDS
  5003.  
  5004. Code             SEGMENT PARA PUBLIC 'CODE'
  5005.                  ASSUME  CS:Code, DS:DGROUP
  5006.  
  5007. ;
  5008. Start            PROC NEAR
  5009.          mov   ax,DGROUP
  5010.          mov   ds,ax          ; DS π¬áºδóáÑΓ ¡á DGROUP
  5011.          mov   bx,OFFSET GROUP:BufferPtr ; ßßδ½¬á ¡á π¬áºáΓѽ∞
  5012.                               ; íπΣÑαá
  5013.                               ; (ñ½∩ »«½πτÑ¡¿∩ ¬«ααÑ¬Γ¡«ú«
  5014.                               ; ß¼ÑΘÑ¡¿∩ ¿ß»«½∞ºπÑΓß∩
  5015.                               ; «»αÑñѽѡ¿Ñ úαπ»»δ)
  5016.          mov   bx,[bx]        ; ccδ½¬á ¡á ßá¼ íπΣÑα
  5017.  
  5018. ;
  5019. ; (çñÑß∞ ñ«½ªÑ¡ ß½Ññ«óáΓ∞ ¬«ñ ñ½∩ «íαáí«Γ¬¿ íπΣÑαá)
  5020. ;
  5021.          mov   ah,4Ch         ; Σπ¡¬µ¿∩ DOS ºáóÑαΦÑ¡¿∩
  5022.                               ; »α«úαá¼¼δ
  5023.          int   21h            ; ºáóÑαΦ¿Γ∞ »α«úαá¼¼π ¿
  5024.                               ; óδ⌐Γ¿ ó DOS
  5025. Start          ENDP
  5026. Code           ENDS
  5027.          END   Start
  5028.  
  5029.      é ñá¡¡«⌐ »α«úαἼѠ߼ÑΘÑ¡¿Ñ BufferPtr ó ¿¡ßΓαπ¬µ¿¿:
  5030.  
  5031.          mov   bx,OFFSET DGROUP:BufferPtr
  5032.  
  5033. áßßÑ¼í½¿απÑΓß∩ ¬«ααÑ¬Γ¡«, Γᬠ¬á¬ ¿ß»«½∞ºπÑΓß∩ »αÑΣ¿¬ß  «»αÑñѽÑ-
  5034. ¡¿∩ DGROUP:úαπ»»á. Äñ¡á¬« ñαπúá∩ ßßδ½¬á ¡á ß¼ÑΘÑ¡¿Ñ:
  5035.  
  5036. BufferPtr      DW   Buffer
  5037.  
  5038. ¬«Γ«αá∩ ñ«½ª¡á »α¿ó«ñ¿Γ∞ ¬ ¿¡¿µ¿á½¿ºáµ¿¿ º¡áτÑ¡¿∩ BufferPtr  ß¼Ñ-
  5039. ΘÑ¡¿Ñ¼  Buffer, ¡Ñ íπñÑΓ ¬«ααÑ¬Γ¡« áßßÑ¼í½¿α«óáΓ∞ß∩, Γᬠ¬á¬ ß¼Ñ-
  5040. ΘÑ¡¿Ñ Buffer íÑαÑΓß∩ «Γ¡«ß¿Γѽ∞¡« ßÑú¼Ñ¡Γá Data2,  á  ¡Ñ  «Γ¡«ß¿-
  5041. Γѽ∞¡« úαπ»»δ ßÑú¼Ñ¡Γ«ó DGROUP. ÉÑΦÑ¡¿Ñ¼ ºñÑß∞ «»∩Γ∞ ∩ó½∩ÑΓß∩ ¿ß-
  5042. »«½∞º«óá¡¿Ñ »αÑΣ¿¬ßá «»αÑñѽѡ¿∩ DGROUP, ñ½∩ τÑú« ¡πª¡« ¿º¼Ñ¡¿Γ∞
  5043.  
  5044. BufferPtr      DW   Buffer
  5045.  
  5046. ¡á
  5047.  
  5048. BufferPtr      DW   DGROUP:Buffer  ; π¬áºáΓѽ∞ ¡á Buffer
  5049.                                    ; (ñ½∩ »«½πτÑ¡¿∩
  5050.                                    ; ¬«ααÑ¬Γ¡«ú« π¬áºáΓѽ∩
  5051.                                    ; ¿ß»«½∞ºπÑΓß∩
  5052.                                    ; «»αÑñѽѡ¿Ñ úαπ»»δ)
  5053.  
  5054.      Åα«»π߬ »αÑΣ¿¬ßá «»αÑñѽѡ¿∩ úαπ»»δ »α¿ ¿ß»«½∞º«óá¡¿¿  úαπ»»
  5055. ßÑú¼Ñ¡Γ«ó  ó αѪ¿¼Ñ MASM »α¿ó«ñ¿Γ ¬ ¡Ñ¬«Γ«αδ¼ ¡Ñ»α¿∩Γ¡δ¼ «Φ¿í¬á¼,
  5056. Γᬠ¬á¬ óáΦá »α«úαἼᠼ«ªÑΓ »α¿ φΓ«¼ óδ»«½¡∩Γ∞  τΓÑ¡¿Ñ,  »ÑαÑσ«ñ
  5057. ¿½¿  ¼«ñ¿Σ¿¬áµ¿ε ¡ÑóÑα¡δσ «í½áßΓÑ⌐ »á¼∩Γ¿. é ¬áτÑßΓóÑ «íΘÑú« »αá-
  5058. ó¿½á ¼«ª¡« »«αѬ«¼Ñ¡ñ«óáΓ∞ ¡Ñ ¿ß»«½∞º«óáΓ∞ úαπ»»δ »α¿ áßßÑ¼í½¿α«-
  5059. óá¡¿¿  ó  αѪ¿¼Ñ  MASM,  Ñß½¿ íѺ φΓ«ú« ¼«ª¡« «í«⌐Γ¿ß∞. è«úñá óá¼
  5060. »α¿σ«ñ¿Γß∩ ¿ß»«½∞º«óáΓ∞ úαπ»»δ ßÑú¼Ñ¡Γ«ó (¡á»α¿¼Ñα, »α¿ «αúá¡¿ºá-
  5061. µ¿¿ ¿¡ΓÑαΣÑ⌐ßá ß ∩ºδ¬«¼ óδß«¬«ú« πα«ó¡∩) ¡Ñ ºáíδóá⌐ΓÑ »α¿ ºáñá¡¿¿
  5062. ß¼ÑΘÑ¡¿⌐ ñ½∩ óßÑσ ñá¡¡δσ úαπ»»δ ¿ß»«½∞º«óáΓ∞ »αÑΣ¿¬ß  «»αÑñѽѡ¿∩
  5063. úαπ»»δ.  ¥Γ¿¼ »αÑΣ¿¬ß«¼ ñ«ó«½∞¡« ½Ñú¬« »«½∞º«óáΓ∞ß∩, ¡πª¡« Γ«½∞¬«
  5064. ¡Ñ ºáíδóáΓ∞ «í φΓ«¼.
  5065.  
  5066.      Å«½Ñº¡δ¼ ¼ÑΓ«ñ«¼ »α¿ αáí«ΓÑ ß  úαπ»»«⌐  ßÑú¼Ñ¡Γ«ó  ó  αѪ¿¼Ñ
  5067. MASM  ∩ó½∩ÑΓß∩  ¿ß»«½∞º«óá¡¿Ñ  ó¼ÑßΓ«  MOV OFFSET ¿¡ßΓαπ¬µ¿¿ LEA.
  5068. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩:
  5069.  
  5070.                lea   ax,Var1
  5071.  
  5072. óδ»«½¡∩ÑΓ Γ« ªÑ ñÑ⌐ßΓó¿Ñ, τΓ« ¿ ¿¡ßΓαπ¬µ¿∩:
  5073.  
  5074.                mov   ax,OFFSET GroupSeg:Var1
  5075.  
  5076. ¡Ñ ΓαÑíπ∩ ¿ß»«½∞º«óá¡¿∩ »αÑΣ¿¬ßá «»αÑñѽѡ¿∩ úαπ»»δ. Äñ¡á¬« ¿¡ßΓ-
  5077. απ¬µ¿∩  LEA  ¡á  íá⌐Γ ñ½¿¡¡ÑÑ ¿ óδ»«½¡∩ÑΓß∩ ¡Ñ߬«½∞¬« ñ«½∞ΦÑ, τѼ
  5078. ¿¡ßΓαπ¬µ¿∩ MOV OFFSET.
  5079.  
  5080.      èßΓáΓ¿, »α¿ ¿ß»«½∞º«óá¡¿¿  úαπ»»  ßÑú¼Ñ¡Γ«ó  »α«í½Ñ¼δ  ¼«úπΓ
  5081. 󫺡¿¬áΓ∞ Γ«½∞¬« ß« ß¼ÑΘÑ¡¿∩¼¿, á ¡Ñ ß ñ«ßΓπ»«¼ ¬ »á¼∩Γ¿. é Γᬿσ
  5082. ßΓ᫬áσ, ¬á¬:
  5083.  
  5084.                 mov   ax,[Var1]
  5085.  
  5086. ¡Ñ ΓαÑíπÑΓß∩ ¿ß»«½∞º«óáΓ∞ »αÑΣ¿¬ß «»αÑñѽѡ¿∩ úαπ»»δ.
  5087.  
  5088.  
  5089.  
  5090.  
  5091.                  â½áóá 7. ê¡ΓÑαΣÑ⌐ß Æπαí« ÇßßѼí½Ñαá ¿ Æπαí« æ¿
  5092. -----------------------------------------------------------------
  5093.  
  5094.      ò«Γ∩ ¡Ñ¬«Γ«αδÑ »α«úαá¼¼¿ßΓδ  ¼«úπΓ  αáºαáíáΓδóáΓ∞  »α«úαá¼¼δ
  5095. µÑ½¿¬«¼  ¡á  ∩ºδ¬Ñ ÇßßѼí½Ñαá (¿ ñѽáεΓ φΓ«), ñαπú¿Ñ »αÑñ»«τ¿ΓáεΓ
  5096. »¿ßáΓ∞ «ß¡«ó¡πε τáßΓ∞ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ óδß«¬«ú« πα«ó¡∩, «íαáΘá-
  5097. ∩ß∞ ¬ ∩ºδ¬π ÇßßѼí½Ñαá Γ«½∞¬« ñ½∩ «ßπΘÑßΓó½Ñ¡¿∩ π»αáó½Ñ¡¿∩ ¡¿ª¡Ñ-
  5098. ú« πα«ó¡∩ ¿½¿ ¬«úñá ΓαÑíπÑΓß∩ óδß«¬á∩ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ∞. ìѬ«Γ«-
  5099. αδÑ  »αÑñ»«τ¿ΓáεΓ  »¿ßáΓ∞  »αÑ¿¼πΘÑßΓóÑ¡¡«  ¡á ÇßßѼí½ÑαÑ, Γ«½∞¬«
  5100. ¿¡«úñá ¿ß»«½∞ºπ∩ ¬«¡ßΓαπ¬µ¿¿ ¿ í¿í½¿«ΓÑτ¡δÑ ßαÑñßΓóá ∩ºδ¬«ó óδß«-
  5101. ¬«ú« πα«ó¡∩.
  5102.  
  5103.      ä½∩ ß¼ÑΦá¡¡«ú« »α«úαá¼¼¿α«óá¡¿∩ ¡á ∩ºδ¬Ñ óδß«¬«ú«  πα«ó¡∩  ¿
  5104. ÇßßѼí½ÑαÑ  »αѬαáß¡« »«ñσ«ñ¿Γ Æπαí« æ¿. ä½∩ «íΩÑñ¿¡Ñ¡¿∩ ¬«ñá Çß-
  5105. ßѼí½Ñαá ¿ æ¿ ó ¡Ñ¼ »αÑñπß¼«ΓαÑ¡ ¡Ñ «ñ¿¡, á µÑ½δσ ñóá  ¼Ñσá¡¿º¼á.
  5106. æαÑñßΓó« óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ó Æπαí« æ¿ «íÑß»Ñτ¿óáÑΓ íδßΓαδ⌐ ¿
  5107. πñ«í¡δ⌐ ß»«ß«í ñ½∩ ó¬½ετÑ¡¿∩ ¬«ñá  ÇßßѼí½Ñαá  ¡Ñ»«ßαÑñßΓóÑ¡¡«  ó
  5108. Σπ¡¬µ¿ε æ¿. ä½∩ ΓÑσ, ¬Γ« »αÑñ»«τ¿ΓáÑΓ »α¿ »α«úαá¼¼¿α«óá¡¿¿ ¡á Çß-
  5109. ßѼí½ÑαÑ ¿ß»«½∞º«óáΓ∞ «Γñѽ∞¡δÑ  ¼«ñπ½¿,  µÑ½¿¬«¼  ¡á»¿ßá¡¡δÑ  ¡á
  5110. φΓ«¼  ∩ºδ¬Ñ,  ΓᬿѠ¼«ñπ½¿ ¼«ª¡« áßßÑ¼í½¿α«óáΓ∞ «Γñѽ∞¡«, á ºáΓѼ
  5111. ¬«¼»«¡«óáΓ∞ ß »α«úαἼἿ Æπαí« æ¿.
  5112.  
  5113.      æ¡áτá½á ¼δ αáßß¼«Γα¿¼ ¿ß»«½∞º«óá¡¿Ñ ó Æπαí«  æ¿  óßΓα«Ñ¡¡«ú«
  5114. ÇßßѼí½Ñαá.  çáΓѼ ¼δ »«ñα«í¡« «íßπñ¿¼ ¬«¼»«¡«ó¬π «Γñѽ∞¡« áßßѼ-
  5115. í½¿α«óá¡δσ ¼«ñπ½Ñ⌐  Æπαí« ÇßßѼí½Ñαá ß ¼«ñπ½∩¼¿ Æπαí« æ¿ ¿ ¿ßß½Ñ-
  5116. ñπѼ »α«µÑßß ó맮óá Σπ¡¬µ¿⌐ Æπαí« ÇßßѼí½Ñαá ¿ ¬«ñá Æπαí« æ¿. ìá-
  5117. ¬«¡Ñµ,  ¼δ αáßß¼«Γα¿¼ ó맮ó Σπ¡¬µ¿⌐ Æπαí« æ¿ ¿º Æπαí« ÇßßѼí½Ñαá.
  5118.  
  5119.            Åα¿¼Ñτá¡¿Ñ: è«úñá ¼δ ú«ó«α¿¼ « Æπαí« æ¿, αÑτ∞  ¿ñÑΓ  «
  5120.                        Æπαí« æ¿ óÑαß¿¿ 1.5 ¿ óδΦÑ.
  5121.  
  5122.             êß»«½∞º«óá¡¿Ñ ó Æπαí« æ¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
  5123. -----------------------------------------------------------------
  5124.  
  5125.      àß½¿ óá¼ »α¿σ«ñ¿½«ß∞ ¿ß¬áΓ∞ ¿ñÑá½∞¡δ⌐  ß»«ß«í  ¿ß»«½∞º«óá¡¿∩
  5126. ÇßßѼí½Ñαá ñ½∩ Γ«¡¬«⌐ ñ«ó«ñ¬¿ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿,  π óáß, ó«º-
  5127. ¼«ª¡«,  ó«º¡¿¬á½«  ªÑ½á¡¿Ñ  ¿¼ÑΓ∞ ó«º¼«ª¡«ßΓ∞ ó¬½ετáΓ∞ ¿¡ßΓαπ¬µ¿¿
  5128. ÇßßѼí½Ñαá ó ΓÑ ¬α¿Γ¿τÑ߬¿Ñ ¼ÑßΓá »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿, úñѠ߬«-
  5129. α«ßΓ∞ ÇßßѼí½Ñαá ¿ Ñú« ó«º¼«ª¡«ßΓ¿ π»αáó½Ñ¡¿∩ ¡¿ª¡Ñú« πα«ó¡∩ »α¿-
  5130. óѽ¿ íδ ¬ ßπΘÑßΓóÑ¡¡«¼π π½πτΦÑ¡¿ε  »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿.  àß½¿  φΓ«
  5131. Γá¬,  óἠ󫺼«ª¡« ¡Ñ σ«Γѽ«ß∞ ΓᬪѠßó∩ºδóáΓ∞ß∩ ß «íδτ¡δ¼¿ ß½«ª-
  5132. ¡«ßΓ∩¼¿ «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá Æπαí« ÇßßѼí½Ñαá ¿ æ¿. ü«½ÑÑ Γ«ú«,
  5133. óδ,  óÑα«∩Γ¡«, σ«Γѽ¿ íδ óßÑ φΓ« ßñѽáΓ∞, ¡Ñ ¼Ñ¡∩∩ ¡¿ «ñ¡«ú« í¿Γá
  5134. ó «ßΓá½∞¡«⌐ τáßΓ¿ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿,  Γ« ÑßΓ∞ τΓ«íδ πªÑ «Γ½á-
  5135. ªÑ¡¡πε τáßΓ∞ »α«úαá¼¼δ ¡á æ¿ ¡Ñ »α¿Φ½«ß∞ íδ ¿º¼Ñ¡∩Γ∞.
  5136.  
  5137. TASM2 #2-5/䫬              = 141 =
  5138.  
  5139.  
  5140.      é Æπαí« æ¿ óßÑ φΓ« ¼«ª¡« «ßπΘÑßΓó¿Γ∞ ß  »«¼«Θ∞ε  óßΓα«Ñ¡¡«ú«
  5141. ÇßßѼí½Ñαá.  éßΓα«Ñ¡¡δ⌐  ÇßßѼí½Ñα - φΓ« ¡Ñ τΓ« ¿¡«Ñ, ¬á¬ ó«º¼«ª-
  5142. ¡«ßΓ∞ »«¼ÑΘáΓ∞ »αá¬Γ¿τÑ߬¿ ½εí«⌐ ¬«ñ ÇßßѼí½Ñαá  ó  »α«úαá¼¼δ  ¡á
  5143. ∩ºδ¬Ñ æ¿, »α¿ ß«σαá¡Ñ¡¿¿ »«½¡«ú« ñ«ßΓπ»á ¬ ¬«¡ßΓá¡Γá¼, »ÑαѼѡ¡δ¼
  5144. ¿ ñáªÑ Σπ¡¬µ¿∩¼ æ¿.  ìá ßἫ¼ ñѽѠóßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα »αѬαáß¡«
  5145. »«ñσ«ñ¿Γ ¡Ñ Γ«½∞¬« ñ½∩ Γ«¡¬«⌐  ñ«ó«ñ¬¿  »α«úαá¼¼δ,  »«ß¬«½∞¬π  »«
  5146. ßó«¿¼  ó«º¼«ª¡«ßΓ∩¼  «¡ »α¿í½¿ªáÑΓß∩ ¬ »α«úαá¼¼¿α«óá¡¿ε ¡á τ¿ßΓ«¼
  5147. ÇßßѼí½ÑαÑ.  ìá»α¿¼Ñα,  óδß«¬«»α«¿ºó«ñ¿Γѽ∞¡δ⌐ ¬«ñ ó  í¿í½¿«ΓѬáσ
  5148. Æπαí« æ¿ ¡á»¿ßá¡ ß ¿ß»«½∞º«ó᡿Ѽ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá.  éßΓα«-
  5149. Ñ¡¡δ⌐ ÇßßѼí½Ñα »«ºó«½∩ÑΓ óá¼ ñѽáΓ∞ ó óáΦ¿σ »α«úαá¼¼áσ Γ«τ¡« Γ«,
  5150. τΓ« óδ ºáσ«Γ¿ΓÑ.  Åα¿ φΓ«¼ óá¼ ¡Ñ »α¿ñÑΓß∩ íÑß»«¬«¿Γ∞ß∩ « ñÑΓá½∩σ
  5151. ß¼ÑΦÑ¡¿∩ ∩ºδ¬«ó.
  5152.  
  5153.      Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ ¬«ñ ¡á æ¿, ¬«Γ«αδ⌐ ß½πª¿Γ »α¿¼Ñα«¼  ¿ß-
  5154. »«½∞º«óá¡¿Ñ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá:
  5155.  
  5156.           .
  5157.           .
  5158.           .
  5159.           i = 0;       /* πßΓá¡«ó¿Γ∞ i ó º¡áτÑ¡¿Ñ 0 (¡á æ¿) */
  5160.           asm dec   WORD PTR i; /* π¼Ñ¡∞Φ¿Γ∞ º¡áτÑ¡¿Ñ i (¡á
  5161.                           ÇßßѼí½ÑαÑ */
  5162.           i++;         /* πóѽ¿τ¿Γ∞ i (¡á æ¿) */
  5163.           .
  5164.           .
  5165.           .
  5166.  
  5167.      ÅÑαóá∩ ¿ »«ß½Ññ¡∩∩ ßΓ᫬¿ óδú½∩ñ∩Γ ñ«ßΓáΓ«τ¡« «íδτ¡«, á  τΓ«
  5168. »αÑñßΓáó½∩ÑΓ  ß«í«⌐  ßαÑñ¡∩∩  ßΓ᫬á? èᬠóδ πªÑ ¡áóÑα¡«Ñ ñ«úáñá-
  5169. ½¿ß∞, ßΓ᫬á, ¡áτ¿¡áεΘá∩ß∩ ß asm, - φΓ« óßΓα«Ñ¡¡δ⌐ ¬«ñ ¡á ÇßßѼí-
  5170. ½ÑαÑ.  àß½¿ óá¼ »α¿σ«ñ¿½«ß∞ ¿ß»«½∞º«óáΓ∞ «Γ½áñτ¿¬ ¿ »α«ß¼áΓα¿óáΓ∞
  5171. óδ»«½¡∩Ѽδ⌐ ¬«ñ ¡á æ¿,  »«½πτÑ¡¡δ⌐ »α¿ ¬«¼»¿½∩µ¿¿ ¿ßσ«ñ¡«ú« ¬«ñá,
  5172. Γ« »α¿¼Ñ¡¿ó Ñú«, óδ ¼«ªÑΓÑ «í¡áαπª¿Γ∞, τΓ« ¼Ñªñπ ß¬«¼»¿½¿α«óá¡¡δ¼
  5173. ¬«ñ«¼ «»ÑαáΓ«α«ó:
  5174.  
  5175.          i = 0;
  5176. ¿
  5177.          i++;
  5178.  
  5179. íπñπΓ ó¬½ετÑ¡δ ¿¡ßΓαπ¬µ¿¿:
  5180.  
  5181.           .
  5182.           .
  5183.           .
  5184.           mov   WORD PTR [bp-02],0000
  5185.  
  5186. TASM2 #2-5/䫬              = 142 =
  5187.  
  5188.           dec   WORD PTR [bp-02]
  5189.           inc   WORD PTR [bp-02]
  5190.           .
  5191.           .
  5192.           .
  5193.  
  5194. úñÑ ¼«ª¡« ó¿ñÑΓ∞ óßΓα«Ñ¡¡πε ¿¡ßΓαπ¬µ¿ε ÇßßѼí½Ñαá DEC.
  5195.  
  5196.      èáªñδ⌐ αáº, ¬«úñá Æπαí« æ¿ «í¡áαπª¿óáÑΓ ¬½ετÑó«Ñ ß½«ó«  asm,
  5197. π¬áºδóáεΘÑÑ, τΓ« φΓ« ßΓ᫬á ÇßßѼí½Ñαá, «¡ »«¼ÑΘáÑΓ ñá¡¡πε ßΓ᫬π
  5198. ÇßßѼí½Ñαá ¡Ñ»«ßαÑñßΓóÑ¡¡« ó ß¬«¼»¿½¿α«óá¡¡δ⌐ ¬«ñ ß «ñ¡¿¼ ¿º¼Ñ¡Ñ-
  5199. ¡¿Ñ¼: ßß佬¿ ¡á »ÑαѼѡ¡δÑ æ¿ »αÑ«íαáºπεΓß∩ ó ß««ΓóÑΓßΓóπεΘ¿⌐ φ¬-
  5200. ó¿óá½Ñ¡Γ ¡á ÇßßѼí½ÑαÑ (ßßδ½¬á ¡á i ó »αÑñδñπΘѼ »α¿¼ÑαÑ íδ½á ºá-
  5201. ¼Ñ¡Ñ¡á WORD PTR [BP-2]). è«α«τÑ ú«ó«α∩, ¬½ετÑó«Ñ ß½«ó« asm »«ºó«-
  5202. ½∩ÑΓ óá¼ ó¬½ετáΓ∞ ó »α«úαá¼¼π ¡á æ¿ »αá¬Γ¿τÑ߬¿ ½εí«⌐ ¬«ñ ¡á  Çß-
  5203. ßѼí½ÑαÑ  («ñ¡á¬«  ºñÑß∞ ÑßΓ∞ ¡Ñ¬«Γ«αδÑ «úαá¡¿τÑ¡¿∩, « ¬«Γ«αδσ ¼δ
  5204. αáß߬áªÑ¼ ñá½ÑÑ ó αáºñѽѠ"Äúαá¡¿τÑ¡¿∩ »α¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡-
  5205. ¡«ú« ÇßßѼí½Ñαá").
  5206.  
  5207.      é«º¼«ª¡«ßΓ∞ ó¬½ετáΓ∞ ¬«ñ ÇßßѼí½Ñαá  ¡Ñ»«ßαÑñßΓóÑ¡¡«  ó  ¬«ñ
  5208. Æπαí« æ¿ óδú½∩ñ¿Γ ¡á »Ñαóδ⌐ óºú½∩ñ ¡Ñ߬«½∞¬« α¿ß¬«óá¡¡«⌐. é ßἫ¼
  5209. ñѽÑ,  «»αÑñѽѡ¡δ⌐ α¿ß¬ »α¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
  5210. ÑßΓ∞. ì« Æπαí« æ¿ ¬«¼»¿½¿απÑΓ ßó«⌐ ¬«ñ Γᬿ¼ «íαẫ¼, τΓ«íδ ¿ºíÑ-
  5211. ªáΓ∞ ¼¡«ú¿σ »«ΓÑ¡µ¿á½∞¡« «»áß¡δσ óºá¿¼«ñÑ⌐ßΓó¿⌐ ß« óßΓα«Ñ¡¡δ¼ Çß-
  5212. ßѼí½Ñα«¼.  ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ,  ¡Ñ»αáó¿½∞¡« Σπ¡¬µ¿«¡¿απεΘ¿⌐ óßΓα«Ñ¡¡δ⌐
  5213. ¬«ñ ÇßßѼí½Ñαá «»αÑñѽѡ¡« ¼«ªÑΓ »α¿óÑßΓ¿ ¬ ßÑα∞Ѻ¡δ¼ «Φ¿í¬á¼.
  5214.  
  5215.      æ ñαπú«⌐ ßΓ«α«¡δ, ½εí«⌐ ¡Ñ»αáó¿½∞¡« ¡á»¿ßá¡¡δ⌐ ¬«ñ ÇßßѼí½Ñ-
  5216. αá (óßΓα«Ñ¡¡δ⌐ ¿½¿ ó «Γñѽ∞¡«¼ ¼«ñπ½Ñ) »«ΓÑ¡µ¿á½∞¡« ¼«ªÑΓ »«óÑßΓ¿
  5217. ßÑí∩ ¡Ñ»αáó¿½∞¡«: φΓ« Γᠵѡá, ¬«Γ«απε  ó  ÇßßѼí½ÑαÑ  »α¿σ«ñ¿Γß∩
  5218. »½áΓ¿Γ∞  ºá  ß¬«α«ßΓ∞  ¿ ó«º¼«ª¡«ßΓ∞ π»αáó½Ñ¡¿∩ ¡á ¡¿ª¡Ñ¼ πα«ó¡Ñ.
  5219. Äñ¡á¬« «Φ¿í¬¿ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ÇßßѼí½Ñαá ú«αáºñ« ¼Ñ¡ÑÑ óÑα«∩Γ-
  5220. ¡δ,  τѼ ó »α«úαá¼¼Ñ, µÑ½¿¬«¼ ¡á»¿ßá¡¡«⌐ ¡á ÇßßѼí½ÑαÑ, »«ß¬«½∞¬π
  5221. Æπαí« æ¿  íÑαÑΓ  ¡á ßÑí∩ ¼¡«ªÑßΓó« "¼Ñ½«τÑ⌐",  Γᬿσ,  ¬á¬ óσ«ñ ó
  5222. Σπ¡¬µ¿¿ ¿ óδσ«ñ ¿º ¡¿σ,  »ÑαÑñáτπ »áαá¼ÑΓα«ó ¿  óδñѽѡ¿Ñ  »á¼∩Γ¿
  5223. ñ½∩ »ÑαѼѡ¡δσ.  Å«ñó«ñ∩ ¿Γ«ú¿,  ¼«ª¡« ß¬áºáΓ∞,  τΓ« »αÑ¿¼πΘÑßΓóá
  5224. ¿ß»«½∞º«óá¡¿Ñ ó æ¿ óßΓα«Ñ¡¡«ú«  ¬«ñá  ÇßßѼí½Ñαá  »ÑαѬαδóáεΓ  ΓÑ
  5225. ¡Ñ»α¿∩Γ¡«ßΓ¿, ß ¬«Γ«α묨 ¼«ª¡« ßΓ«½¬¡πΓ∞ß∩ ¿º-ºá ß½πτá⌐¡«⌐ «Φ¿í¬¿
  5226. 󠬫ñÑ ÇßßѼí½Ñαá.
  5227.  
  5228.      Ä »α«úαá¼¼¿α«óá¡¿¿ ß ¿ß»«½∞º«ó᡿Ѽ  óßΓα«Ñ¡¡«ú«  ÇßßѼí½Ñαá
  5229. ¼«ª¡« ßñѽáΓ∞ ¡Ñ߬«½∞¬« ó᪡δσ ºá¼Ñτá¡¿⌐:
  5230.  
  5231.      1.  ùΓ«íδ ¿ß»«½∞º«óáΓ∞ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα, óδ  ñ«½ª¡δ  óδ-
  5232.          ºóáΓ∞ TCC.EXE, ¬«¼á¡ñ¡πε óÑαß¿ε Æπαí« æ¿. TC.EXE (ñ¿á½«-
  5233.          ú«óá∩ óÑαß¿∩ Æπαí« æ¿) ¡Ñ »«ññÑনóáÑΓ óßΓα«Ñ¡¡δ⌐ ÇßßѼ-
  5234.  
  5235. TASM2 #2-5/䫬              = 143 =
  5236.  
  5237.          í½Ñα.
  5238.  
  5239.      2.  éÑß∞¼á ó«º¼«ª¡«, τΓ« óÑαß¿∩ πΓ¿½¿Γδ TLINK, ¬«Γ«αá∩  »«ß-
  5240.          Γáó½∩ÑΓß∩  ß óáΦÑ⌐ ¬«»¿Ñ⌐ Æπαí« ÇßßѼí½Ñαá, ¡Ñ ß«ó»áñáÑΓ
  5241.          ó óÑαß¿Ñ⌐ φΓ«⌐ πΓ¿½¿Γδ, ¬«Γ«αá∩ »«ßΓáó½∩ÑΓß∩ ó ¬«¼»½Ñ¬ΓÑ
  5242.          Æπαí«  æ¿.  ä½∩ «íÑß»ÑτÑ¡¿∩ »«ññÑ᪬¿ Æπαí« ÇßßѼí½Ñαá ó
  5243.          πΓ¿½¿Γπ TLINK í뫨  ó¡ÑßÑ¡δ  ßπΘÑßΓóÑ¡¡δÑ  ¿º¼Ñ¡Ñ¡¿∩  ¿,
  5244.          »«ß¬«½∞¬π φΓ¿  ¿º¼Ñ¡Ñ¡¿∩ íѺ ß«¼¡Ñ¡¿∩ íπñπΓ »α«ñ«½ªáΓ∞ß∩
  5245.          ó ñá½∞¡Ñ⌐ΦѼ, ó᪡« »α¿ ¬«¼»«¡«ó¬Ñ ¼«ñπ½Ñ⌐ Æπαí« æ¿, ß«-
  5246.          ñÑαªáΘ¿σ  óßΓα«Ñ¡¡δÑ ¿¡ßΓαπ¬µ¿¿ ÇßßѼí½Ñαá, ¿ß»«½∞º«óáΓ∞
  5247.          ßá¼πε »«ß½Ññ¡εε óÑαß¿ε TLINK, ¬«Γ«αá∩ π óáß ¿¼ÑÑΓß∩. æá-
  5248.          ¼δ¼  ¡áñѪ¡δ¼ ß»«ß«í«¼ úáαá¡Γ¿α«óáΓ∞ φΓ« ∩ó½∩ÑΓß∩ σαá¡Ñ-
  5249.          ¡¿Ñ ¡á  ñ¿ß¬Ñ,  ¿ß»«½∞ºπѼ«¼  ñ½∩  ºá»π߬ᠠ¬«¼»«¡«óΘ¿¬á
  5250.          TLINK, Γ«½∞¬« «ñ¡«ú« Σá⌐½á TLINK.EXE. ì«¼Ñα óÑαß¿¿ φΓ«ú«
  5251.          Σá⌐½á ñ«½ªÑ¡ íδΓ∞ ßá¼δ¼ »«ß½Ññ¡¿¼  ßαÑñ¿  óßÑσ  »«ñ«í¡δσ
  5252.          Σá⌐½«ó, ¬«Γ«αδÑ óδ »«½πτ὿ «Γ Σ¿α¼δ Borland.
  5253.  
  5254.  
  5255.  
  5256.  
  5257. TASM2 #2-5/䫬              = 144 =
  5258.  
  5259.                    èᬠαáí«ΓáÑΓ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα
  5260. -----------------------------------------------------------------
  5261.  
  5262.      Äíδτ¡« Æπαí« æ¿ ¬«¼»¿½¿απÑΓ ¬áªñδ⌐ Σá⌐½  ¿ßσ«ñ¡«ú«  ¬«ñá  ¡á
  5263. ∩ºδ¬Ñ  æ¿  ó  «íΩÑ¬Γ¡δ⌐  Σá⌐½, á ºáΓѼ óδºδóáÑΓ πΓ¿½¿Γπ TLINK ñ½∩
  5264. ¬«¼»«¡«ó¬¿ «íΩÑ¬Γ¡δσ Σá⌐½«ó ó óδ»«½¡∩Ѽπε »α«úαá¼¼π.  Æá¬«⌐  µ¿¬½
  5265. ¬«¼»¿½∩µ¿¿  ¿  ¬«¼»«¡«ó¬¿ »«¬áºá¡ ¡á É¿ß. 7.1 ùΓ«íδ ¡áτáΓ∞ ñá¡¡δ⌐
  5266. µ¿¬½, ¡πª¡« óóÑßΓ¿ ¬«¼á¡ñπ:
  5267.  
  5268.         tcc ¿¼∩_Σá⌐½á
  5269.  
  5270. ¬«Γ«αá∩ π¬áºδóáÑΓ Æπαí« æ¿, τΓ« ¡πª¡« ß¡áτá½á ¬«¼»¿½¿α«óáΓ∞  Σá⌐½
  5271. ¿¼∩_Σá⌐½á.æ  ó Σá⌐½ ¿¼∩_Σá⌐½á.OBJ, á ºáΓѼ óδºóáΓ∞ TLINK ñ½∩ ¬«¼-
  5272. »«¡«ó¬¿ Σá⌐½á ¿¼∩_Σá⌐½á.OBJ ó Σá⌐½ ¿¼∩_Σá⌐½á.EXE.
  5273.  
  5274.                ----------------------------------
  5275.                |   êßσ«ñ¡δ⌐ Σá⌐½ ¡á ∩ºδ¬Ñ æ¿    |
  5276.                |          ¿¼∩_Σá⌐½á.æ           |
  5277.                ----------------------------------
  5278.                               |
  5279.                               V
  5280.                          ------------
  5281.                         (  Æπαí« æ¿  )      è«¼»¿½∩µ¿∩
  5282.                          ------------
  5283.                               |
  5284.                               V
  5285.                ----------------------------------
  5286.                |     ÄíΩÑ¬Γ¡δ⌐ Σá⌐½ ∩ºδ¬á æ¿    |
  5287.                |          ¿¼∩_Σá⌐½á.OBJ         |
  5288.                ----------------------------------
  5289.                               |
  5290.                               V
  5291.                          ------------
  5292.                         (   TLINK    )      è«¼»«¡«ó¬á
  5293.                          ------------
  5294.                               |
  5295.                               V
  5296.                ----------------------------------
  5297.                |         éδ»«½¡∩Ѽδ⌐ Σá⌐½       |
  5298.                |          ¿¼∩_Σá⌐½á.EXE         |
  5299.                ----------------------------------
  5300.  
  5301.      É¿ß. 7.1 û¿¬½ ¬«¼»¿½∩µ¿¿ ¿ ¬«¼»«¡«ó¬¿ Æπαí« æ¿.
  5302.  
  5303.      Äñ¡á¬« »α¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá Æπαí« æ¿ ñ«-
  5304. íáó½∩ÑΓ ó µ¿¬½ ¬«¼»¿½∩µ¿¿ ¿ ¬«¼»«¡«ó¬¿ ñ«»«½¡¿Γѽ∞¡δ⌐ Φáú.
  5305.  
  5306. TASM2 #2-5/䫬              = 145 =
  5307.  
  5308.  
  5309.      Åα¿ «íαáí«Γ¬Ñ ¬«¼»¿½∩Γ«α«¼ Æπαí« æ¿ ¬áªñ«ú« ¼«ñπ½∩,  úñÑ ß«-
  5310. ñÑনΓß∩ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá,  ß¡áτá½á óÑß∞ ¼«ñπ½∞ ¬«¼»¿½¿-
  5311. απÑΓß∩ ó ¿ßσ«ñ¡δ⌐ Σá⌐½ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá,  á ºáΓѼ ñ½∩ Γαá¡ß½∩-
  5312. µ¿¿  »«½πτÑ¡¡«ú« ¬«ñá ÇßßѼí½Ñαá á «íΩÑ¬Γ¡δ⌐ ¬«ñ óδºδóáÑΓß∩ Æπαí«
  5313. ÇßßѼí½Ñα. Å«ß½Ñ φΓ«ú« ñ½∩ ¬«¼»«¡«ó¬¿ «íΩÑ¬Γ¡δσ Σá⌐½«ó óδºδóáÑΓß∩
  5314. πΓ¿½¿Γá TLINK.  ¥Γ«Γ »α«µÑßß »«¬áºá¡ ¡á É¿ß.  7.2. çá»πßΓ¿Γ∞ φΓ«Γ
  5315. µ¿¬½ ¼«ª¡« ß »«¼«Θ∞ε ¬«¼á¡ñ¡«⌐ ßΓ᫬¿:
  5316.  
  5317.         tcc ¿¼∩_Σá⌐½á
  5318.  
  5319. ¬«Γ«αá∩ π¬áºδóáÑΓ Æπαí« æ¿, τΓ« ß¡áτá½á ¡πª¡« ¬«¼»¿½¿α«óáΓ∞  Σá⌐½
  5320. ¿¼∩_Σá⌐½á.æ  ó  Σá⌐½ ¿¼∩_Σá⌐½á.ASM, »«Γ«¼ óδºóáΓ∞ Æπαí« ÇßßѼí½Ñα
  5321. ñ½∩ áßßÑ¼í½¿α«óá¡¿∩ Σá⌐½á ¿¼∩_Σá⌐½á.ASM ó Σá⌐½  ¿¼∩_Σá⌐½á.OBJ,  á
  5322. ºáΓѼ óδºóáΓ∞  πΓ¿½¿Γπ TLINK ñ½∩ ¬«¼»«¡«ó¬¿ Σá⌐½á ¿¼∩_Σá⌐½á.OBJ ó
  5323. Σá⌐½ ¿¼∩_Σá⌐½á.EXE.
  5324.  
  5325.                ----------------------------------
  5326.                |   êßσ«ñ¡δ⌐ Σá⌐½ ¡á ∩ºδ¬Ñ æ¿    |
  5327.                |          ¿¼∩_Σá⌐½á.æ           |
  5328.                ----------------------------------
  5329.                               |
  5330.                               V
  5331.                          ------------
  5332.                         (  Æπαí« æ¿  )      è«¼»¿½∩µ¿∩
  5333.                          ------------
  5334.                               |
  5335.                               V
  5336.                ----------------------------------
  5337.                |   êßσ«ñ¡δ⌐ Σá⌐½ ¡á ÇßßѼí½ÑαÑ  |
  5338.                |          ¿¼∩_Σá⌐½á.ASM         |
  5339.                ----------------------------------
  5340.                               |
  5341.                               V
  5342.                       ------------------
  5343.                      (  Æπαí« ÇßßѼí½Ñα )      ÇßßÑ¼í½¿α«óá¡¿Ñ
  5344.                       ------------------
  5345.                               |
  5346.                               V
  5347.                ----------------------------------
  5348.                |     ÄíΩÑ¬Γ¡δ⌐ Σá⌐½ ∩ºδ¬á æ¿    |
  5349.                |          ¿¼∩_Σá⌐½á.OBJ         |
  5350.                ----------------------------------
  5351.                               |
  5352.                               V
  5353.                          ------------
  5354.  
  5355. TASM2 #2-5/䫬              = 146 =
  5356.  
  5357.                         (   TLINK    )      è«¼»«¡«ó¬á
  5358.                          ------------
  5359.                               |
  5360.                               V
  5361.                ----------------------------------
  5362.                |         éδ»«½¡∩Ѽδ⌐ Σá⌐½       |
  5363.                |          ¿¼∩_Σá⌐½á.EXE         |
  5364.                ----------------------------------
  5365.  
  5366.      É¿ß. 7.2 û¿¬½ ¬«¼»¿½∩µ¿¿, áßßÑ¼í½¿α«óá¡¿∩ ¿ ¬«¼»«¡«ó¬¿ Æπαí«
  5367. æ¿.
  5368.  
  5369.      éßΓα«Ñ¡¡δ⌐ ¬«ñ  ÇßßѼí½Ñαá  »α«ßΓ«  »ÑαÑñáÑΓß∩  ¬«¼»¿½∩Γ«α«¼
  5370. Æπαí« æ¿ ó Σá⌐½ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá.  ÅαѽÑßΓ∞ φΓ« ßσÑ¼δ ºá¬½ετá-
  5371. ÑΓß∩ ó Γ«¼, τΓ« Æπαí« æ¿ ¡Ñ ¡πª¡« ¡¿τÑú« º¡áΓ∞ «í áßßÑ¼í½¿α«óá¡¿¿
  5372. óßΓα«Ñ¡¡«ú« ¬«ñá,  ó¼ÑßΓ« φΓ«ú« Æπαí« æ¿ ¬«¼»¿½¿απÑΓ ¿ßσ«ñ¡δ⌐ ¬«ñ
  5373. ∩ºδ¬á æ¿ ¡á Γ«Γ ªÑ πα«óÑ¡∞, τΓ« ¿ óßΓα«Ñ¡¡δ⌐ ¬«ñ (πα«óÑ¡∞ ÇßßѼí-
  5374. ½Ñαá), á ºáΓѼ »«ºó«½∩ÑΓ Æπαí« ÇßßѼí½Ñαπ óδ»«½¡¿Γ∞ Γαá¡ß½∩µ¿ε.
  5375.  
  5376.      ùΓ«íδ πó¿ñÑΓ∞, ¬á¬ Æπαí« æ¿ αáí«ΓáÑΓ ß« óßΓα«Ñ¡¡δ¼ ÇßßѼí½Ñ-
  5377. α«¼, óóÑñѼ »«ñ ¿¼Ñ¡Ñ¼ PLUSONE.C ß½ÑñπεΘπε »α«úαá¼¼π:
  5378.  
  5379. #include  <stdio.h>
  5380.  
  5381. int   main(void)
  5382. {
  5383.      int  TestValue;
  5384.  
  5385.      scanf('%d, &testValue);    /* »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ
  5386.                                    ñ½∩ πóѽ¿τÑ¡¿∩ */
  5387.      asm   inc    WORD PTR TestValue; /* πóѽ¿τ¿Γ∞ Ñú«
  5388.                                    (¡á ÇßßѼí½ÑαÑ) */
  5389.      printf("%d",TestValue);    /* ¡á»ÑτáΓáΓ∞ πóѽ¿τÑ¡¡«Ñ
  5390.                                    º¡áτÑ¡¿Ñ */
  5391. }
  5392.  
  5393. ¿ ß¬«¼»¿½¿απѼ ÑÑ ß »«¼«Θ∞ε ¬«¼á¡ñ¡«⌐ ßΓ᫬¿:
  5394.  
  5395.         tcc -s plusone
  5396.  
  5397.      Åáαá¼ÑΓα -s π¬áºδóáÑΓ Æπαí«  æ¿,  τΓ«  ¡πª¡«  ß¬«¼»¿½¿α«óáΓ∞
  5398. »α«úαá¼¼π  ó  ¬«ñ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ¿ «ßΓá¡«ó¿Γ∞ß∩. Å«ß½Ñ φΓ«ú«
  5399. ¡á óáΦѼ ñ¿ß¬Ñ «¬áªÑΓß∩ Σá⌐½ PLUSONE.ASM:
  5400.  
  5401.               ifndef  ??version
  5402. ?debug        macro
  5403.  
  5404. TASM2 #2-5/䫬              = 147 =
  5405.  
  5406.               endm
  5407.               endif
  5408.               name   Plusone
  5409. _TEXT         SEGMENT BYTE PUBLIC 'CODE'
  5410. DGROUP        GROUP _DATA, _BSS
  5411.               ASSUME cs:_TEXT,ds:DGROUP,ss:DGROUP
  5412. _TEXT         ENDS
  5413. _DATA         SEGMENT WORD PUBLIC 'DATA'
  5414. _d@           label   BYTE
  5415. _d@w          label   WORD
  5416. _DATA         ENDS
  5417. _BSS          SEGMENT WORD PUBLIC 'BSS'
  5418. _b@           label   BYTE
  5419. _b@w          label   WORD
  5420.   ?debug  C E90156E11009706C75736F6E652E6
  5421.   ?debug  C E90009B9100F696E66C7564655C737464696F2E68
  5422.   ?debug  C E90009B9101010696E636C754655C7564655C7374646172672E68
  5423. _BSS          ENDS
  5424. _TEXT         SEGMENT BYTE PUBLIC 'CODE'
  5425. ;             ?debug  L 3
  5426. _main         PROC    NEAR
  5427.               push    bp
  5428.               mov     bp,sp
  5429.               dec     sp
  5430.               dec     sp
  5431.               ?debug  L 8
  5432.               lea     ax,WORD PTR [bp-2]
  5433.               push    ax
  5434.               mov     ax,OFFSET DGROUP:_s@
  5435.               push    ax
  5436.               call    NEAR PTR _scanf
  5437.               pop     cx
  5438.               pop     cx
  5439. ;             debug   L 9
  5440.               inc     WORD PTR [bp-2]
  5441. ;             ?debug  L 10
  5442.               push    WORD PTR [bp-2]
  5443.               mov     ax,OFFSET GDROUP:_s@+3
  5444.               push    ax
  5445.               call    NEAR PTR _printf
  5446.               pop     cx
  5447.               pop     cx
  5448. @1:
  5449. ;             debug   L 12
  5450.               mov     sp,bp
  5451.               pop     bp
  5452.  
  5453. TASM2 #2-5/䫬              = 148 =
  5454.  
  5455.               ret
  5456. _main         ENDP
  5457. _TEXT         ENDS
  5458. _DATA         SEGMENT WORD PUBLIC 'DATA'
  5459. -s@           label   BYTE
  5460.               db      37
  5461.               db      100
  5462.               db      0
  5463.               db      37
  5464.               db      100
  5465.               db      0
  5466. _DATA         ENDS
  5467. _TEXT         SEGMENT BYTE PUBLIC CODE
  5468.               EXTRN   _printf:NEAR
  5469.               EXTRN   _scanf:NEAR
  5470. _TEXT         ENDS
  5471.               PUBLIC  _main
  5472.               END
  5473.  
  5474.      éºú½∩¡πó ¡á ñá¡¡δ⌐ ¬«ñ, óδ ¼«ªÑΓÑ  ó  »«½¡«⌐  ¼ÑαÑ  «µÑ¡¿Γ∞,
  5475. ߬«½∞¬« πß¿½¿⌐ »«¼«úáÑΓ óá¼ ßφ¬«¡«¼¿Γ∞ Æπαí« æ¿, «íÑß»Ñτ¿óá∩ »«ñ-
  5476. ñÑ᪬π óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá.
  5477.  
  5478.      é ¬«¼¼Ñ¡Γáα¿¿:
  5479.  
  5480. ;            ?debug  L 8
  5481.  
  5482. óδ ¼«ªÑΓÑ ó¿ñÑΓ∞ ¬«ñ ÇßßѼí½Ñαá ñ½∩ ó맮óá scanf. äá½ÑÑ ß½ÑñπÑΓ:
  5483.  
  5484. ;            ?debug  L 9
  5485.              inc     WORD PTR [bp-2]
  5486.  
  5487. τΓ« »αÑñßΓáó½∩ÑΓ ß«í«⌐ óßΓα«Ñ¡¡πε ¿¡ßΓαπ¬µ¿ε ÇßßѼí½Ñαá ñ½∩  πóÑ-
  5488. ½¿τÑ¡¿∩ º¡áτÑ¡¿∩ »ÑαѼѡ¡«⌐ TestValue. (çá¼ÑΓ¿¼, τΓ« Æπαí« æ¿ áó-
  5489. Γ«¼áΓ¿τÑ߬¿  óδ»«½¡∩ÑΓ  »αÑ«íαẫóá¡¿Ñ  »ÑαѼѡ¡«⌐ æ¿ TestValue ó
  5490. ß««ΓóÑΓßΓóπεΘπε áñαÑßᵿε φΓ«⌐ »ÑαѼѡ¡«⌐ ¡á  ÇßßѼí½ÑαÑ [BP-2].)
  5491. çá ßΓ᫬«⌐ óßΓα«Ñ¡¡«⌐ ¿¡ßΓαπ¬µ¿¿ ÇßßѼí½Ñαá ß½ÑñπÑΓ ¬«ñ ÇßßѼí½Ñ-
  5492. αá ñ½∩ ó맮óá Σπ¡¬µ¿¿ printf.
  5493.  
  5494.      ÄíαáΓ¿ΓѠ󡿼᡿Ñ,  τΓ« Æπαí« æ¿ ¬«¼»¿½¿απÑΓ Σπ¡¬µ¿ε scanf ó
  5495. ∩ºδ¬ ÇßßѼí½Ñαá,  »«¼ÑΘá∩ óßΓα«Ñ¡¡πε ¿¡ßΓαπ¬µ¿ε ÇßßѼí½Ñαá ¡Ñ»«ß-
  5496. αÑñßΓóÑ¡¡« ó óδσ«ñ¡«⌐ Σá⌐½ ¡á ÇßßѼí½ÑαÑ,  á ºáΓѼ Γαá¡ß½¿απÑΓ ¡á
  5497. ∩ºδ¬  ÇßßѼí½Ñαá  Σπ¡¬µ¿ε  printf.  Å«½πτÑ¡¡δ⌐  ó αѺπ½∞ΓáΓÑ Σá⌐½
  5498. »αÑñßΓáó½∩ÑΓ ß«í«⌐ Σá⌐½ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá,  ú«Γ«óδ⌐ ¬ «íαáí«Γ¬Ñ
  5499. Æπαí« ÇßßѼí½Ñα«¼.
  5500.  
  5501.  
  5502. TASM2 #2-5/䫬              = 149 =
  5503.  
  5504.      àß½¿ íδ óδ ¡Ñ ¿ß»«½∞º«ó὿ »áαá¼ÑΓα -s, Æπαí«  æ¿  »α«ñ«½ª¿½
  5505. íδ αáí«Γπ, óδºóáó ñ½∩ áßßÑ¼í½¿α«óá¡¿∩ Σá⌐½á PLUSONE.ASM Æπαí« Çß-
  5506. ßѼí½Ñα, á ºáΓѼ ñ½∩ ¬«¼»«¡«ó¬¿ »«½πτÑ¡¡«ú« ó  αѺπ½∞ΓáΓÑ  «íΩѬ-
  5507. Γ¡«ú«  Σá⌐½á  -  πΓ¿½¿Γπ  TLINK  (íπñÑΓ  »«½πτÑ¡ óδ»«½¡∩Ѽδ⌐ Σá⌐½
  5508. PLUSONE.EXE). ¥Γ« «íδτ¡δ⌐ αѪ¿¼ αáí«Γδ Æπαí« æ¿ ß« óßΓα«Ñ¡¡δ¼ Çß-
  5509. ßѼí½Ñα«¼. Åáαá¼ÑΓα-s ¼δ ¿ß»«½∞º«ó὿ Γ«½∞¬« ñ½∩ ñѼ«¡ßΓαᵿ«¡¡δσ
  5510. µÑ½Ñ⌐, τΓ«íδ óδ ¼«ú½¿ «º¡á¬«¼¿Γ∞ß∩ ß »α«¼ÑªπΓ«τ¡δ¼ φΓừ¼,  ¬«Γ«-
  5511. αδ⌐  óδ»«½¡∩ÑΓ  Æπαí«  ÇßßѼí½Ñα.  è«úñá ¬«¼»¿½¿απѼδ⌐ ¬«ñ ñ«½ªÑ¡
  5512. ¬«¼»«¡«óáΓ∞ß∩ ß ñαπú¿¼¿ »α«úαἼἿ, »áαá¼ÑΓα -s »αá¬Γ¿τÑ߬¿ íÑß-
  5513. »«½ÑºÑ¡,  ¡« Ñú« ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ó Γ«¼ ß½πτáÑ, ¬«úñá óδ σ«Γ¿ΓÑ
  5514. «º¡á¬«¼¿Γ∞ß∩ ß ¬«ñ«¼, «¬απªáεΘ¿¼ óáΦ óßΓα«Ñ¡¡δ⌐ ¬«ñ ¡á  ÇßßѼí½Ñ-
  5515. αÑ,  ¿ ß ¬«ñ«¼, úÑ¡Ñα¿απÑ¼δ¼ Æπαí« æ¿ ó µÑ½«¼. àß½¿ óδ ¡Ñ πóÑαÑ¡δ
  5516. ó αѺπ½∞ΓáΓáσ, úÑ¡Ñα¿απѼδσ »α¿  ¿ß»«½∞º«óá¡¿¿  óßΓα«Ñ¡¡«ú«  ¬«ñá
  5517. ÇßßѼí½Ñαá,  »α«óÑα∞ΓÑ  »«½πτÑ¡¡δ⌐  ß  »«¼«Θ∞ε  »áαá¼ÑΓαá -s Σá⌐½
  5518. ß αáßΦ¿αÑ¡¿Ñ¼ .ASM.
  5519.  
  5520.  
  5521.  
  5522.  
  5523. TASM2 #2-5/䫬              = 150 =
  5524.  
  5525.        ÄΓ¬πñá Æπαí« æ¿ º¡áÑΓ «í ¿ß»«½∞º«óá¡¿¿ αѪ¿¼á ÇßßѼí½Ñαá?
  5526. -----------------------------------------------------------------
  5527.  
  5528.      Äíδτ¡« Æπαí« æ¿ ¬«¼»¿½¿απÑΓ ¿ßσ«ñ¡δ⌐ ¬«ñ  ¡Ñ»«ßαÑñßΓóÑ¡¡«  ó
  5529. «íΩÑ¬Γ¡δ⌐  ¬«ñ.  æπΘÑßΓóπÑΓ ¡Ñ߬«½∞¬« ß»«ß«í«ó, ß »«¼«Θ∞ε ¬«Γ«αδσ
  5530. ¼«ª¡« ß««íΘ¿Γ∞ Æπαí« æ¿, τΓ« ¡πª¡« »«ññÑনóáΓ∞ óßΓα«Ñ¡¡δ⌐ ÇßßѼ-
  5531. í½Ñα  »πΓѼ  ¬«¼»¿½∩µ¿¿  ¡á ∩ºδ¬ ÇßßѼí½Ñαá ¿ »«ß½ÑñπεΘÑú« ó맮óá
  5532. πΓ¿½¿Γδ TLINK.
  5533.  
  5534.      Åáαá¼ÑΓα ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ -s π¬áºδóáÑΓ Æπαí« æ¿,  τΓ«  ¡πª¡«
  5535. Γαá¡ß½¿α«óáΓ∞  ¿ßσ«ñ¡δ⌐  ¬«ñ ó ¬«ñ ÇßßѼí½Ñαá, »«ß½Ñ τÑú« »αѬαá-
  5536. Γ¿Γ∞ αáí«Γπ. öá⌐½ ß αáßΦ¿αÑ¡¿Ñ¼ .ASM,  ßúÑ¡Ñα¿α«óá¡¡δ⌐  Æπαí«  æ¿
  5537. »α¿  ¿ß»«½∞º«óá¡¿¿  »áαá¼ÑΓαá -s, ¼«ª¡« «Γñѽ∞¡« áßßÑ¼í½¿α«óáΓ∞ ¿
  5538. ߬«¼»«¡«óáΓ∞ ß ñαπú¿¼¿ ¼«ñπ½∩¼¿ æ¿ ¿  ÇßßѼí½Ñαá.  éδºóáΓ∞  Æπαí«
  5539. ÇßßѼí½Ñα  áóΓ«¼áΓ¿τÑ߬¿  »«ºó«½∩ÑΓ  »áαá¼ÑΓα -b. àß½¿ óá¼ φΓ« ¡Ñ
  5540. ΓαÑíπÑΓß∩ ñ½∩ «Γ½áñ¬¿ ¿½¿ »α«ßΓ« ó µÑ½∩σ «º¡á¬«¼½Ñ¡¿∩ ß ¬«ñ«¼ Çß-
  5541. ßѼí½Ñαá, »áαá¼ÑΓα -s »ÑαÑñ »áαá¼ÑΓα«¼ -b π¬áºδóáΓ∞ ¡Ñ ¡πª¡«.
  5542.  
  5543.      ä¿αÑ¬Γ¿óá #pragma ó¿ñá:
  5544.  
  5545.         #pragma inline
  5546.  
  5547. ñÑ⌐ßΓóπεΓ á¡á½«ú¿τ¡« »áαá¼ÑΓαπ -b, π¬áºδóá∩ ¬«¼»¿½∩Γ«απ Æπαí« æ¿,
  5548. τΓ« ¡πª¡« óδ»«½¡¿Γ∞ Γαá¡ß½∩µ¿ε ó ÇßßѼí½Ñα,  á ºáΓѼ ñ½∩ Γαá¡ß½∩-
  5549. µ¿¿  »«½πτÑ¡¡«ú« αѺπ½∞ΓáΓá óδºóáΓ∞ Æπαí« ÇßßѼí½Ñα.  è«úñá Æπαí«
  5550. æ¿ óßΓαÑτáÑΓ π¬áºá¡¿Ñ (ñ¿αÑ¬Γ¿óπ) #pragma inline, ¬«¼»¿½∩µ¿∩ »α«-
  5551. ñ«½ªáÑΓß∩  ó  αѪ¿¼Ñ  óδó«ñá ÇßßѼí½Ñαá.  ïπτΦÑ »«¼ÑΘáΓ∞ π¬áºá¡¿Ñ
  5552. #pragma inline ó«º¼«ª¡« í½¿ªÑ ¬ ¡áτá½π ¿ßσ«ñ¡«ú« ¬«ñá  ∩ºδ¬á  æ¿,
  5553. Γᬠ¬á¬ ½εí«⌐ ¿ßσ«ñ¡δ⌐ ¬«ñ ∩ºδ¬á æ¿, »«ß½Ñ ¬«Γ«αδ¼ ß½ÑñπÑΓ ß½Ññπ-
  5554. ÑΓ ñá¡¡á∩ ñ¿αÑ¬Γ¿óá,  íπñÑΓ ¬«¼»¿½¿α«óáΓ∞ß∩ ñóáªñδ:  «ñ¿¡  αẠ ó
  5555. «íδτ¡«¼ αѪ¿¼Ñ (æ¿ -> «íΩÑ¬Γ¡δ⌐ Σá⌐½) á ñαπú«⌐ αẠó αѪ¿¼Ñ æ¿ ->
  5556. ÇßßѼí½Ñα.  ò«Γ∩ φΓ« ¿ ¡Ñ »«óαÑñ¿Γ, ¡Ñ ßΓ«¿Γ »«»πßΓπ ΓαáΓ¿Γ∞ óαÑ-
  5557. ¼∩.
  5558.  
  5559.      ìᬫ¡Ñµ, Ñß½¿ Æπαí« æ¿ «í¡áαπª¿óáÑΓ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñ-
  5560. αá »α¿ «ΓßπΓßΓó¿¿ »áαá¼ÑΓαá -b ¿½¿ -s ¿ π¬áºá¡¿∩  #pragma inline,
  5561. Γ« óδñáÑΓß∩ »αÑñπ»αѪñáεΘÑÑ ß««íΘÑ¡¿Ñ:
  5562.  
  5563.      Warning test.c 6: Restarting compile using assembly in func-
  5564.      tion main
  5565.      (¬«¼»¿½∩µ¿∩ ¡áτ¿¡áÑΓß∩ »«óΓ«α¡« ß ¿ß»«½∞º«ó᡿Ѽ áßßÑ¼í½¿α«-
  5566.      óá¡¿∩ ó «ß¡«ó¡«⌐ Σπ¡¬µ¿¿)
  5567.  
  5568. »«ß½Ñ τÑú« ¬«¼»¿½∩µ¿∩ ó«º«í¡«ó½∩ÑΓß∩ ó αѪ¿¼Ñ óδó«ñá  ÇßßѼí½Ñαá,
  5569. ¬á¬ Ñß½¿ íδ ó ñá¡¡«⌐ Γ«τ¬Ñ  í佫 «í¡áαπªÑ¡« π¬áºá¡¿Ñ #pragma. êº-
  5570. íѪáΓ∞ ñá¡¡«ú« ß««íΘÑ¡¿∩ ¼«ª¡«, Ñß½¿ óδ íπñÑΓÑ ¿ß»«½∞º«óáΓ∞ »áαá-
  5571.  
  5572. TASM2 #2-5/䫬              = 151 =
  5573.  
  5574. ¼ÑΓα -b ¿½¿ π¬áºá¡¿Ñ  #pragma inline. é »α«Γ¿ó¡«¼ ß½πτáÑ ¬«¼»¿½∩-
  5575. µ¿∩ íπñÑΓ óδ»«½¡∩Γ∞ß∩ ¼Ññ½Ñ¡¡ÑÑ.
  5576.  
  5577.       é맮ó ñ½∩ áßßÑ¼í½¿α«óá¡¿∩ óßΓα«Ñ¡¡«ú« ¬«ñá Æπαí« ÇßßѼí½Ñαá
  5578. -----------------------------------------------------------------
  5579.  
  5580.      ä½∩ Γ«ú«, τΓ«íδ Æπαí« æ¿ ß¼«ú óδºóáΓ∞ Æπαí« ÇßßѼí½Ñα, ¡πª¡«
  5581. ß¡áτá½á, τΓ«íδ «¡ ß¼«ú ¡á⌐Γ¿ Æπαí« ÇßßѼí½Ñα. é αẽ¿τ¡δσ óÑαß¿∩σ
  5582. Æπαí« æ¿ φΓ« »α«¿ßσ«ñ¿Γ »«-αạ«¼π.
  5583.  
  5584.      é óÑαß¿¿ ßΓáαΦÑ 1.5 »αÑñ»«½áúáÑΓß∩, τΓ« Æπαí« ÇßßѼí½Ñα  ¡á-
  5585. σ«ñ¿Γß∩  ó Σá⌐½Ñ ß ¿¼Ñ¡Ñ¼ TASM.EXE, ¬«Γ«αδ⌐ ºá»¿ßá¡ ó ΓѬπΘѼ ¬á-
  5586. ΓὫúÑ ¿½¿ ó «ñ¡«¼ ¿º ¬áΓὫú«ó, π¬áºá¡¡δ⌐ ß  »«¼«Θ∞ε  »ÑαѼѡ¡«⌐
  5587. «»Ñαᵿ«¡¡«⌐  ßαÑñδ  DOS PATH. é «íΘѼ ß½πτáÑ Æπαí« æ¿ ß¼«ªÑΓ óδ-
  5588. ºóáΓ∞ Æπαí« ÇßßѼí½Ñα ó Γ«¼ ß½πτáÑ, Ñß½¿ ¼«ª¡« óδ»«½¡¿Γ∞  ¬«¼á¡ñπ
  5589. (óóÑñÑ¡¡πε  ó  «ΓóÑΓ  ¡á »«ñ߬Ậπ DOS) TASM. Å«φΓ«¼π, Ñß½¿ Æπαí«
  5590. ÇßßѼí½Ñα ¡áσ«ñ¿Γß∩ ó ΓѬπΘѼ ¬áΓὫúÑ ¿½¿ ó «ñ¡«¼ ¿º  ¬áΓὫú«ó,
  5591. «»αÑñѽѡ¡δσ  ß »«¼«Θ∞ε PATH, Æπαí« æ¿ áóΓ«¼áΓ¿τÑ߬¿ ¡á⌐ñÑΓ ¿ ºá-
  5592. »πßΓ¿Γ Ñú« ñ½∩ óδ»«½¡Ñ¡¿∩ óßΓα«Ñ¡¡«ú« áßßÑ¼í½¿α«óá¡¿∩.
  5593.  
  5594.      éÑαß¿¿ 1.0 ¿ 1.5 Æπαí« æ¿ óÑñπΓ ßÑí∩  ¡Ñ߬«½∞¬«  »«-ñαπú«¼π.
  5595. ū߬«½∞¬π  ñá¡¡δÑ  óÑαß¿¿  Æπαí« æ¿ í뫨 ß«ºñá¡δ ñ« Γ«ú«, ¬á¬ íδ½
  5596. αáºαáí«Γá¡ Æπαí« ÇßßѼí½Ñα, ñ½∩ óδ»«½¡Ñ¡¿∩ áßßÑ¼í½¿α«óá¡¿∩ óßΓα«-
  5597. Ñ¡¡«ú« ¬«ñá «¡¿ óδºδóáεΓ ¼á¬α«áßßѼí½Ñα Σ¿α¼δ Microsoft MASM. Å«-
  5598. φΓ«¼π ñá¡¡δÑ óÑαß¿¿ íπñπΓ ¿ß¬áΓ∞ ó ΓѬπΘѼ ¬áΓὫúÑ ¿ ó ¬áΓὫúÑ,
  5599. ºáñá¡¡«¼ »ÑαѼѡ¡«⌐ PATH, Σá⌐½ ß ¿¼Ñ¡Ñ¼ MASM.EXE, á ¡Ñ TASM.EXE.
  5600.  
  5601.            Åα¿¼Ñτá¡¿Ñ: Ä Γ«¼, ¬á¬ ß¬«ααÑ¬Γ¿α«óáΓ∞  ñá¡¡δÑ  óÑαß¿¿
  5602.       ¬«¼»¿½∩Γ«αá  TCC,  τΓ«íδ ¼«ª¡« í佫 ¿ß»«½∞º«óáΓ∞ TASM, αáß-
  5603.       ß¬áºδóáÑΓß∩ ó Σá⌐½Ñ README ¡á  ñ¿ßΓα¿íπΓ¿ó¡«¼  ñ¿ß¬Ñ  Æπαí«
  5604.       ÇßßѼí½Ñαá.
  5605.  
  5606.  
  5607.  
  5608.  
  5609. TASM2 #2-5/䫬              = 152 =
  5610.  
  5611.          è«úñá Æπαí« æ¿ Γαá¡ß½¿απÑΓ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá
  5612. -----------------------------------------------------------------
  5613.  
  5614.      éßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá  ¼«ªÑΓ  ºá¬á¡τ¿óáΓ∞ß∩  ó  ßÑú¼Ñ¡ΓÑ
  5615. ¬«ñá  ¿½¿ ßÑú¼Ñ¡ΓÑ ñá¡¡δσ Æπαí« æ¿. éßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ¼«-
  5616. ªÑΓ ¡áσ«ñ¿Γ∞ß∩ ó Σπ¡¬µ¿¿ ¿ áßßÑ¼í½¿α«óáΓ∞ß∩ ó ßÑú¼Ñ¡Γ ¬«ñá  Æπαí«
  5617. æ¿,  á  óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá, αẼÑΘÑ¡¡δ⌐ ó¡Ñ Σπ¡¬µ¿¿, ¼«ªÑΓ
  5618. áßßÑ¼í½¿α«óáΓ∞ß∩ ó ßÑú¼Ñ¡Γ ñá¡¡δσ Æπαí« æ¿.
  5619.  
  5620.      ìá»α¿¼Ñα, »α«úαá¼¼á:
  5621.  
  5622. /* Æáí½¿µá ¬óáñαáΓ«ó º¡áτÑ¡¿⌐ */
  5623.  
  5624. asm   SquareLookUpTable   label  word;
  5625. asm   dw  0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100;
  5626.  
  5627. /* öπ¡¬µ¿∩ ñ½∩ »«¿ß¬á ¬óáñαáΓá º¡áτÑ¡¿∩ ¼Ñªñπ 0 ¿ 10 */
  5628.  
  5629. int LookUpSquare(int Value)
  5630. {
  5631.       asm  mov   bx,Value;    /* »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ ñ½∩ ó«ºóÑñÑ¡¿∩
  5632.                                  ó ¬óáñαáΓ */
  5633.       asm  shl   bx,1;        /* π¼¡«ª¿Γ∞ ¡á 2 ñ½∩ »«¿ß¬á ó
  5634.                                  Γáí½¿µÑ φ½Ñ¼Ñ¡Γ«ó αẼÑα«¼ ó
  5635.                                  ß½«ó« */
  5636.       asm  mov   ax,[SquareLookUpTable+bx]; /* »«¿ß¬ ó Γáí½¿µÑ */
  5637.       return(_AX);
  5638. }
  5639.  
  5640. »«¼ÑΘáÑΓ ñá¡¡δÑ ñ½∩ Γáí½¿µδ SquareLookUpTable  ó  ßÑú¼Ñ¡Γ  ñá¡¡δσ
  5641. Æπαí«  æ¿,  á  óßΓα«Ñ¡¡δ⌐  ¬«ñ ÇßßѼí½Ñαá ó LookUpTable ó ßÑú¼Ñ¡Γ
  5642. ¬«ñá Æπαí« æ¿.  æ αáó¡δ¼ πß»Ñσ«¼ ñá¡¡δÑ ¼«ª¡« í佫  íδ  »«¼ÑßΓ¿Γ∞
  5643. ñá¡¡δÑ ó ßÑú¼Ñ¡Γ  ¬«ñá.  Éáßß¼«Γα¿¼,  ¡á»α¿¼Ñα,  ß½ÑñπεΘπε óÑαß¿ε
  5644. »α«úαá¼¼δ LookUpSquare, úñÑ SquareLookUpTable ¡áσ«ñ¿Γß∩ ó ßÑú¼Ñ¡-
  5645. ΓÑ ¬«ñá Æπαí« æ¿:
  5646.  
  5647. /* öπ¡¬µ¿∩ ñ½∩ »«¿ß¬á ¬óáñαáΓá º¡áτÑ¡¿∩ ¼Ñªñπ 0 ¿ 10 */
  5648.  
  5649. int LookUpSquare(int Value)
  5650. {
  5651.       asm  jmp   SkipAroundData /* »α«»πßΓ¿Γ∞ Γáí½¿µπ ñá¡¡δσ */
  5652.  
  5653. /* Æáí½¿µá ¬óáñαáΓ«ó º¡áτÑ¡¿⌐ */
  5654.  
  5655. asm   SquareLookUpTable   label  word;
  5656. asm   dw  0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100;
  5657.  
  5658. TASM2 #2-5/䫬              = 153 =
  5659.  
  5660. a
  5661. SkipAroundData:
  5662.       asm  mov   bx,Value;    /* »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ ñ½∩ ó«ºóÑñÑ¡¿∩
  5663.                                  ó ¬óáñαáΓ */
  5664.       asm  shl   bx,1;        /* π¼¡«ª¿Γ∞ ¡á 2 ñ½∩ »«¿ß¬á ó
  5665.                                  Γáí½¿µÑ φ½Ñ¼Ñ¡Γ«ó αẼÑα«¼ ó
  5666.                                  ß½«ó« */
  5667.       asm  mov   ax,[SquareLookUpTable+bx]; /* »«¿ß¬ ó Γáí½¿µÑ */
  5668.       return(_AX);
  5669. }
  5670.  
  5671.      Æá¬ ¬á¬ SquareLookUpTable ¡áσ«ñ¿Γß∩ ó Γáí½¿µÑ ¬«ñá Æπαí« æ¿,
  5672. Γ«  τΓ«íδ  ¿º ¡ÑÑ ¼«ª¡« í佫 ßτ¿ΓδóáΓ∞, ¬áºá½«ß∞ íδ ΓαÑíπÑΓß∩ ¿ß-
  5673. »«½∞º«óáΓ∞ »αÑΣ¿¬ß »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá CS:.  öá¬Γ¿τÑ߬¿  ñ½∩
  5674. ñ«ßΓπ»á  ¬ SquareLookUpTable ñá¡¡δ⌐ ¬«ñ áóΓ«¼áΓ¿τÑ߬¿ áßßÑ¼í½¿απ-
  5675. ÑΓß∩ ß »αÑΣ¿¬ß«¼ CS:. Æπαí« æ¿ úÑ¡Ñα¿απÑΓ ¬«ααÑ¬Γ¡δ⌐  ¬«ñ  ÇßßѼ-
  5676. í½Ñαá,  τΓ«íδ  Æπαí«  ÇßßѼí½Ñα  º¡á½, ¬ ¬á¬«¼ ßÑú¼Ñ¡ΓÑ ¡áσ«ñ¿Γß∩
  5677. SquareLookUpTable, á Æπαí« ÇßßѼí½Ñα ºáΓѼ úÑ¡Ñα¿απÑΓ ¡Ñ«íσ«ñ¿¼δÑ
  5678. »αÑΣ¿¬ßδ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó.
  5679.  
  5680.  
  5681.  
  5682.  
  5683. TASM2 #2-5/䫬              = 154 =
  5684.  
  5685.      Åáαá¼ÑΓα -1 ñ½∩ úÑ¡Ñαᵿ¿ ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«α«ó 80186/80286
  5686. -----------------------------------------------------------------
  5687.  
  5688.      àß½¿ óδ σ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ π¡¿¬á½∞¡δÑ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá
  5689. 80186, ΓᬿѠ¬á¬:
  5690.  
  5691.              shr   ax,3
  5692. ¿
  5693.              push  1
  5694.  
  5695. Γ« »α«ΘÑ óßÑú« ¿ß»«½∞º«óáΓ∞ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ Æπαí« æ¿  »áαá¼ÑΓα
  5696. -1, ¡á»α¿¼Ñα:
  5697.  
  5698.         tcc -1 -b heapmgr
  5699.  
  5700. úñÑ HEAPMGR.C - φΓ« »α«úαá¼¼á, ¬«Γ«αá∩ ß«ñÑαª¿Γ óßΓα«Ñ¡¡δÑ  ¿¡ßΓ-
  5701. απ¬µ¿¿ ÇßßѼí½Ñαá, π¡¿¬á½∞¡δÑ ñ½∩ »α«µÑßß«αá 80186.
  5702.  
  5703.      Äß¡«ó¡«Ñ ¡áº¡áτÑ¡¿Ñ »áαá¼ÑΓαá  -1 ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ  π¬á-
  5704. ºáΓ∞ Æπαí« æ¿, τΓ« »α¿ ¬«¼»¿½∩µ¿¿ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ »«½¡δ⌐ ¡áí«α
  5705. ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80186. Åáαá¼ÑΓα -1 »α¿ó«ñ¿Γ ΓᬪѠ ¬  Γ«¼π,
  5706. τΓ« ¡áτὫ óδσ«ñ¡«ú« Σá⌐½á ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá íπñÑΓ ó¬½ετÑ¡á ñ¿-
  5707. αÑ¬Γ¿óá .186. ¥Γ« π¬áªÑΓ Æπαí«  ÇßßѼí½Ñαπ,  τΓ«  áßßÑ¼í½¿α«óá¡¿Ñ
  5708. ¡πª¡«  óδ»«½¡∩Γ∞  ß ¿ß»«½∞º«ó᡿Ѽ »«½¡«ú« ¡áí«αá ¿¡ßΓαπ¬µ¿⌐. üѺ
  5709. ñá¡¡«⌐ ñ¿αÑ¬Γ¿óδ Æπαí« ÇßßѼí½Ñα »«¼ÑΓ¿Γ óßÑ óßΓα«Ñ¡¡δÑ  ¿¡ßΓαπ¬-
  5710. µ¿¿,  π¡¿¬á½∞¡δÑ ñ½∩ »α«µÑßß«αá 80186, ¬á¬ «Φ¿í«τ¡δÑ. àß½¿ óδ σ«-
  5711. Γ¿ΓÑ áßßÑ¼í½¿α«óáΓ∞ ¿¡ßΓαπ¬µ¿¿  »α«µÑßß«αá  80186,  ¡Ñ  »α¿¡πªñá∩
  5712. Æπαí«  æ¿  ¿ß»«½∞º«óáΓ∞ »«½¡δ⌐ ¡áí«α ¿¡ßΓαπ¬µ¿⌐ »α«µÑßß«αá 80186,
  5713. ó¬½ετ¿ΓÑ ó ¡áτὫ ¬áªñ«ú« ¼«ñπ½∩ Æπαí« æ¿, ß«ñÑαªáΘÑú« óßΓα«Ñ¡¡δÑ
  5714. ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«αá 80186, ßΓ᫬π:
  5715.  
  5716.          asm   .186
  5717.  
  5718.      äá¡¡á∩ ßΓ᫬á íπñÑΓ »ÑαÑñá¡á ó Σá⌐½ ÇßßѼí½Ñαá, úñÑ «¡á π¬á-
  5719. ªÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡« ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬µ¿¿ »α«µÑßß«-
  5720. αá 80186.
  5721.  
  5722.      é ¬«¼»¿½∩Γ«αÑ Æπαí« æ¿ ¡Ñ »αÑñπß¼«ΓαÑ¡á óßΓα«Ñ¡¡á∩ »«ññÑ᪬á
  5723. »α«µÑßß«α«ó 80286,  80386,  80287 ¿ 80387. é« óßΓα«Ñ¡¡«¼ ¬«ñÑ Çß-
  5724. ßѼí½Ñαá, úñÑ ¿ß»«½∞ºπεΓß∩ ¿¡ßΓαπ¬µ¿¿ φΓ¿σ »α«µÑßß«α«ó, αáºαÑΦ¿Γ∞
  5725. ¿σ ¿ß»«½∞º«óá¡¿Ñ ¼«ª¡« á¡á½«ú¿τ¡δ¼ ß»«ß«í«¼,  ß »«¼«Θ∞ε ¬½ετÑó«ú«
  5726. ß½«óá asm ¿ ñ¿αÑ¬Γ¿ó Æπαí« ÇßßѼí½Ñαá .286,  .286æ, .286É,  .386,
  5727. .386æ, .386É, .287 ¿ .387.
  5728.  
  5729.      æΓ᫬á:
  5730.  
  5731.  
  5732. TASM2 #2-5/䫬              = 155 =
  5733.  
  5734.         asm   .186
  5735.  
  5736. »«¬áºδóáÑΓ ó᪡δ⌐ ¼«¼Ñ¡Γ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ÇßßѼí½Ñαá: ß »«¼«Θ∞ε
  5737. »αÑΣ¿¬ßá  asm  ó  Σá⌐½ ÇßßѼí½Ñαá ¼«ª¡« »ÑαÑñáΓ∞ ½εíπε ñ«»πßΓ¿¼πε
  5738. ñ¿αÑ¬Γ¿óπ ÇßßѼí½Ñαá, ó¬½ετá∩  ñ¿αÑ¬Γ¿óδ  «»αÑñѽѡ¿∩  ßÑú¼Ñ¡Γ«ó,
  5739. »α¿αáó¡¿óá¡¿∩, ¼á¬α«¬«¼á¡ñδ ¿ Γ.ñ.
  5740.  
  5741.  
  5742.  
  5743.  
  5744. TASM2 #2-5/䫬              = 156 =
  5745.  
  5746.            ö«α¼áΓ óßΓα«Ñ¡¡δσ «»ÑαáΓ«α«ó ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá
  5747. -----------------------------------------------------------------
  5748.  
  5749.      éßΓα«Ñ¡¡δÑ «»ÑαáΓ«αδ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ó« ¼¡«ú«¼ »«σ«ª¿ ¡á
  5750. «íδτ¡δÑ ßΓ᫬¿ ÇßßѼí½Ñαá, ¡« ¿¼ÑÑΓß∩ ¡Ñ߬«½∞¬« «Γ½¿τ¿⌐. éßΓα«Ñ¡-
  5751. ¡δ⌐ «»ÑαáΓ«α ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ¿¼ÑÑΓ ß½ÑñπεΘ¿⌐ Σ«α¼áΓ:
  5752.  
  5753. asm [<¼ÑΓ¬á>] <¿¡ßΓαπ¬µ¿∩/ñ¿αÑ¬Γ¿óá> <«»Ñαá¡ñ><; ¿½¿ ¡«ó. ßΓ᫬á>
  5754.  
  5755. úñÑ:
  5756.  
  5757.      - ¬½ετÑó«Ñ ß½«ó« asm ñ«½ª¡« ¡áτ¿¡áΓ∞ ¬áªñδ⌐ óßΓα«Ñ¡¡δ⌐  «»Ñ-
  5758. αáΓ«α ¡á ÇßßѼí½ÑαÑ;
  5759.  
  5760.      - [<¼ÑΓ¬á>] ∩ó½∩ÑΓß∩ ñ«»πßΓ¿¼«⌐ ¼ÑΓ¬«⌐ ÇßßѼí½Ñαá.  èóáñαáΓ-
  5761. ¡δѠ߬«í¬¿ »«¬áºδóáεΓ, τΓ« ¼ÑΓ¬á ∩ó½∩ÑΓß∩ ¡Ñ«í∩ºáΓѽ∞¡«⌐, ΓᬠªÑ,
  5762. ¬á¬ ó ÇßßѼí½ÑαÑ. (æ¼. αáºñѽ  "Åá¼∩Γ∞  ¿  «úαá¡¿τÑ¡¿∩  áñαÑßᵿ¿
  5763. «»Ñαá¡ñá", úñÑ »α¿ó«ñ¿Γß∩ ¿¡Σ«α¼áµ¿∩ « ¼ÑΓ¬áσ ÇßßѼí½Ñαá ¿ æ¿.);
  5764.  
  5765.      - <¿¡ßΓαπ¬µ¿∩/ñ¿αÑ¬Γ¿óá> »αÑñßΓáó½∩ÑΓ ß«í«⌐ ½εíπε ñ«»πßΓ¿¼πε
  5766. ñ¿αÑ¬Γ¿óπ ÇßßѼí½Ñαá;
  5767.  
  5768.      - <«»Ñαá¡ñδ> ß«ñÑαª¿Γ «»Ñαá¡ñδ, ó«ß»α¿¡¿¼áѼδÑ ó  ¿¡ßΓαπ¬µ¿¿
  5769. ¿½¿  ñ¿αÑ¬Γ¿óÑ.  çñÑß∞ ¼«ªÑΓ ΓᬪѠ»α¿ßπΓßΓó«óáΓ∞ ßßδ½¬á ¡á ¬«¡ß-
  5770. Γá¡Γδ, »ÑαѼѡ¡δÑ ¿ ¼ÑΓ¬¿ æ¿ (»α¿ ß«í½εñÑ¡¿¿ «úαá¡¿τÑ¡¿⌐, «»¿ßá¡-
  5771. ¡δσ ó αáºñѽѠ"Äúαá¡¿τÑ¡¿∩ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá");
  5772.  
  5773.      - <; ¿½¿ ¡«ó. ßΓ᫬á> φΓ« Γ«τ¬á ß ºá»∩Γ«⌐ ¿½¿  ¡«óá∩  ßΓ᫬á
  5774. (¿ Γ« ¿ ñαπú«Ñ ú«ó«α¿Γ « ºáóÑαΦÑ¡¿¿ «»ÑαáΓ«αá asm.
  5775.  
  5776.            Åα¿¼Ñτá¡¿Ñ: é᪡á∩ ¿¡Σ«α¼áµ¿∩ «Γ¡«ß¿Γѽ∞¡«  ¼ÑΓ«¬  ß«-
  5777.       ñÑনΓß∩  ó  αáºñѽѠ "Åá¼∩Γ∞ ¿ «úαá¡¿τÑ¡¿∩ »α¿ áñαÑßᵿ¿ ¬
  5778.       «»Ñαá¡ñπ".
  5779.  
  5780.  
  5781.  
  5782.  
  5783. TASM2 #2-5/䫬              = 157 =
  5784.  
  5785.  
  5786. êß»«½∞º«óá¡¿Ñ ó« óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ Γ«τ¬¿ ß ºá»∩Γ«⌐
  5787. -----------------------------------------------------------------
  5788.  
  5789.      é ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ÑßΓ∞ «ñ¿¡ á߻ѬΓ, ¬«-
  5790. Γ«αδ⌐ ¼«ªÑΓ π»πßΓ¿Γ∞ ¿º ó¿ñá »α«úαá¼¼¿ßΓ, αáí«ΓáεΘ¿⌐ ¡á ∩ºδ¬Ñ æ¿:
  5791. Γ«τ¬á ß ºá»∩Γ«⌐,  ó «Γ½¿τ¿Ñ «Γ ñαπú¿σ «»ÑαáΓ«α«ó ∩ºδ¬á æ¿, ó «»Ñ-
  5792. αáΓ«αáσ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¡Ñ ∩ó½∩ÑΓß∩ «í∩ºáΓѽ∞¡«⌐, σ«Γ∩ «¡á
  5793. ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ñ½∩ ¿σ ºáóÑαΦÑ¡¿∩.  Åα¿ ÑÑ «ΓßπΓßΓó¿¿ ¬«¡µ«¼
  5794. «»ÑαáΓ«αá ßτ¿ΓáÑΓß∩ ¡áτὫ ¡«ó«⌐ ßΓ᫬¿. Å«φΓ«¼π, Ñß½¿ óδ ¡Ñ αáº-
  5795. ¼ÑΘáÑΓÑ ¡á «ñ¡«⌐ ßΓα«¬Ñ ¡Ñ߬«½∞¬« «»ÑαáΓ«α«ó óßΓα«Ñ¡¡«ú«  ÇßßѼí-
  5796. ½Ñαá (τÑú« ñѽáΓ∞ ¡Ñ ßΓ«¿Γ,  Γᬠ¬á¬ ΓѬßΓ íπñÑΓ ¼Ñ¡ÑÑ »«¡∩Γ¡δ¼),
  5797. Γ«τ¬á ß ºá»∩Γ«⌐ ¡Ñ«í∩ºáΓѽ∞¡á.  ò«Γ∩ ¼«ªÑΓ »«¬áºáΓ∞ß∩, τΓ« φΓ« ¡Ñ
  5798. ß««ΓóÑΓßΓóπÑΓ »α¿¡µ¿»á¼ æ¿, ¡« ºñÑß∞ ß«í½εñáεΓß∩ ß«ú½áΦÑ¡¿∩, »α¿-
  5799. ¡∩ΓδÑ ó ¡Ñ¬«Γ«αδ󠬫¼»¿½∩Γ«αáσ,  αáí«ΓáεΘ¿σ ó ßαÑñÑ  «»Ñαᵿ«¡¡«⌐
  5800. ß¿ßΓѼδ UNIX.
  5801.  
  5802.                  è«¼¼Ñ¡Γáα¿¿ ó« óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ
  5803. -----------------------------------------------------------------
  5804.  
  5805.      é »αÑñδñπΘѼ «»¿ßá¡¿¿ Σ«α¼áΓá «»ÑαáΓ«αá  óßΓα«Ñ¡¡«ú«  ÇßßѼ-
  5806. í½Ñαá  «ΓßπΓßΓóπÑΓ «ñ¿¡ ¬½ετÑó«⌐ φ½Ñ¼Ñ¡Γ - »«½Ñ ¬«¼¼Ñ¡Γáα¿∩. ò«Γ∩
  5807. ¬«¼¼Ñ¡Γáα¿¿ ¼«ª¡« »«¼ÑΘáΓ∞ ó ¬«¡µÑ «»ÑαáΓ«α«ó óßΓα«Ñ¡¡«ú«  ÇßßѼ-
  5808. í½Ñαá,  «¡¿  Γ«½∞¬« «Γ¼ÑτáεΓ ¬«¡Ñµ óßΓα«Ñ¡¡«ú« «»ÑαáΓ«αá, ¬á¬ ¿ ó
  5809. ñαπú¿σ «»ÑαáΓ«αáσ ∩ºδ¬á æ¿, óÑñ∞ ó«  óßΓα«Ñ¡¡«¼  ¬«ñÑ  ÇßßѼí½Ñαá
  5810. ¬«¼¼Ñ¡Γáα¿¿ ¡Ñ ¡áτ¿¡áεΓß∩ ß Γ«τ¬¿ ß ºá»∩Γ«⌐.
  5811.  
  5812.      èᬠªÑ Γ«úñá ¬«¼¼Ñ¡Γ¿α«óáΓ∞ ¬«ñ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá?  èá¬
  5813. φΓ«  ¡¿  ßΓαá¡¡«,  ñѽáΓ∞ φΓ« ¼«ª¡« ß »«¼«Θ∞ε ¬«¼¼Ñ¡Γáα¿Ñó æ¿. ìá
  5814. ßἫ¼ ñѽѠφΓ« ÑßΓÑßΓóÑ¡¡«, »«ß¬«½∞¬π »αÑ»α«µÑßß«α ∩ºδ¬á æ¿ «íαá-
  5815. íáΓδóáÑΓ  óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ΓᬠªÑ, ¬á¬ ¿ «ßΓá½∞¡πε τáßΓ∞
  5816. ¬«ñá ¡á æ¿. ü½áú«ñáα∩ φΓ«¼π ó« óßÑ⌐ »α«úαἼѠ¡á æ¿,  úñÑ  ß«ñÑα-
  5817. ª¿Γß∩  ¬«ñ  ÇßßѼí½Ñαá, ¼«ª¡« ¿ß»«½∞º«óáΓ∞ «ñ¿¡ ¿ Γ«Γ ªÑ Γ¿» ¬«¼-
  5818. ¼Ñ¡Γ¿α«óá¡¿∩. ê ó ¬«ñÑ ¡á ∩ºδ¬Ñ æ¿, ¿ ó ¬«ñÑ  ÇßßѼí½Ñαá  ó  φΓ«¼
  5819. ß½πτáÑ  ¼«ª¡«  ΓᬪѠ¿ß»«½∞º«óáΓ∞ «»αÑñѽѡ¡δÑ ó æ¿ ß¿¼ó«½¿τÑ߬¿Ñ
  5820. ¿¼Ñ¡á. ìá»α¿¼Ñα, ó »α«úαá¼¼Ñ:
  5821.  
  5822.                .
  5823.                .
  5824.                .
  5825.    #define  CONSTANT 51
  5826.                int i;
  5827.                .
  5828.                .
  5829.                .
  5830.                i = CONSTANT;        /* »α¿ßó«¿Γ∞ i
  5831.  
  5832. TASM2 #2-5/䫬              = 158 =
  5833.  
  5834.                                     »«ßΓ«∩¡¡«Ñ º¡áτÑ¡¿Ñ */
  5835.                asm  sub  WORD PTR i,CONSTANT; /* óδτÑßΓ∞
  5836.                                     ¿º i »«ßΓ«∩¡¡«Ñ
  5837.                                     º¡áτÑ¡¿Ñ */
  5838.                .
  5839.                .
  5840.                .
  5841.  
  5842. ¿ ó ¬«ñÑ æ¿, ¿ ó ¬«ñÑ ÇßßѼí½Ñαá ¿ß»«½∞ºπÑΓß∩ «»αÑñѽѡ¡δ⌐ ó ∩ºδ-
  5843. ¬Ñ  æ¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«α CONSTANT, ¿ »α¿ óδτ¿ß½Ñ¡¿¿ i »«½πτáÑΓß∩ º¡á-
  5844. τÑ¡¿Ñ 0.
  5845.  
  5846.      Å«ß½Ññ¡¿⌐  »α¿¼Ñα  »«¬áºδóáÑΓ  «ñ¡«  ºá¼ÑτáΓѽ∞¡«Ñ  ßó«⌐ßΓó«
  5847. óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá, ¬«Γ«α«Ñ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ó »«½Ñ «»Ñαá¡-
  5848. ñá ¼«úπΓ  ß«ñÑαªáΓ∞ß∩  ¡Ñ Γ«½∞¬« ßß佬¿ ¡á ¿¼Ñ¡á ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó,
  5849. «»αÑñѽѡ¡δÑ ó æ¿,  ¡« ¿ ¡á »ÑαѼѡ¡δÑ æ¿. èᬠóδ πó¿ñ¿ΓÑ ñá½ÑÑ ó
  5850. ñá¡¡«⌐ ú½áóÑ, «íδτ¡« ñ«ßΓπ» ¬ »ÑαѼѡ¡δ¼ æ¿ ó ÇßßѼí½ÑαÑ »α«í½Ñ¼δ
  5851. ¡Ñ ß«ßΓáó½∩ÑΓ,  »«φΓ«¼π πñ«íßΓó« ßß佫¬ ¡á ΓᬿѠ»ÑαѼѡ¡δÑ - φΓ«
  5852. «ß¡«ó¡á∩ »α¿τ¿¡á, »«τѼπ ó í«½∞Φ¿¡ßΓóÑ »α¿¬½áñ¡δσ ºáñáτ ßΓ«¿Γ ¿ß-
  5853. »«½∞º«óáΓ∞ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα, á ¡Ñ »α«ßΓ« «íΩÑñ¿¡∩Γ∞ ÇßßѼí½Ñα
  5854. ¿ æ¿.
  5855.  
  5856.               ÄíαáΘÑ¡¿Ñ ¬ φ½Ñ¼Ñ¡Γá¼ ßΓαπ¬Γπαδ/«íΩÑñ¿¡Ñ¡¿∩
  5857. -----------------------------------------------------------------
  5858.  
  5859.      éßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ¼«ªÑΓ ßßδ½áΓ∞ß∩ ¡Ñ»«ßαÑñßΓóÑ¡¡« ¡á
  5860. φ½Ñ¼Ñ¡Γδ ßΓαπ¬Γπαδ. ìá»α¿¼Ñα, ó ß½ÑñπεΘѼ Σαáú¼Ñ¡ΓÑ »α«úαá¼¼δ:
  5861.  
  5862.              .
  5863.              .
  5864.              .
  5865.     struct  Student {
  5866.          char Teacher[30];
  5867.          int  Grade;
  5868.     }    JohnQPublic;
  5869.              .
  5870.              .
  5871.              .
  5872.              asm   mov  ax,JohnQPublic.Grade;
  5873.              .
  5874.              .
  5875.              .
  5876.  
  5877. ó αÑú¿ßΓα AX  ºáúαπªáÑΓß∩  ß«ñÑন¼«Ñ  φ½Ñ¼Ñ¡Γá  Grade  ßΓαπ¬Γπαδ
  5878. JohnQPublic Γ¿»á Student.
  5879.  
  5880. TASM2 #2-5/䫬              = 159 =
  5881.  
  5882.  
  5883.      éßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ¼«ªÑΓ ΓᬪѠ«íαáΘáΓ∞ß∩ ¬ φ½Ñ¼Ñ¡Γá¼
  5884. ßΓαπ¬Γπαδ,  áñαÑßπ∩ß∞  ¬ ¡¿¼ «Γ¡«ß¿Γѽ∞¡« íẫó«ú« ¿½¿ ¿¡ñѬߡ«ú«
  5885. αÑú¿ßΓαá. ìá»α¿¼Ñα:
  5886.  
  5887.              .
  5888.              .
  5889.              .
  5890.              asm   mov   bx,OFFSET JohnQPublic;
  5891.              asm   mov   ax,[bx].Grade;
  5892.              .
  5893.              .
  5894.              .
  5895.  
  5896.      çñÑß∞ ó αÑú¿ßΓα AX ΓᬪѠºáúαπªáÑΓß∩ φ½Ñ¼Ñ¡Γ Grade ßΓαπ¬Γπαδ
  5897. JohnQPublic.  Å«ß¬«½∞¬π  Grade  ¡áσ«ñ¿Γß∩  ó ßΓαπ¬ΓπαÑ Student »«
  5898. ß¼ÑΘÑ¡¿ε 30, »«ß½Ññ¡¿⌐ »α¿¼Ñα ¡á ßἫ¼ ñѽѠ»α¿¡¿¼áÑΓ ó¿ñ:
  5899.  
  5900.              .
  5901.              .
  5902.              .
  5903.              asm   mov   bx,OFFSET JohnQPublic;
  5904.              asm   mov   ax,[bx]+30
  5905.              .
  5906.              .
  5907.              .
  5908.  
  5909.      é«º¼«ª¡«ßΓ∞ «íαáΘáΓ∞ß∩ ¬  φ½Ñ¼Ñ¡Γá¼  ßΓαπ¬Γπαδ  «Γ¡«ß¿Γѽ∞¡«
  5910. αÑú¿ßΓαá-π¬áºáΓѽ∩ ∩ó½∩ÑΓß∩ ñ«ßΓáΓ«τ¡« ¼«Θ¡δ¼ ßαÑñßΓó«¼, »«ºó«½∩-
  5911. εΘ¿¼ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ÇßßѼí½Ñαá αáí«ΓáΓ∞ ß ¼áßß¿óἿ ¿  ßΓαπ¬-
  5912. ΓπαἿ ¿ ¿ß»«½∞º«óáΓ∞ π¬áºáΓѽ¿ ¡á ßΓαπ¬Γπαδ.
  5913.  
  5914.      àß½¿ ªÑ, «ñ¡á¬«, ñóÑ ¿½¿ í«½ÑÑ ßΓαπ¬Γπαδ, ¬ ¬«Γ«αδ¼ óδ «íαá-
  5915. ΘáÑΓÑß∞ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ÇßßѼí½Ñαá, ß«ñÑαªáΓ φ½Ñ¼Ñ¡Γ ß «ñ¡¿¼ ¿
  5916. ΓѼ ªÑ ¿¼Ñ¡Ñ¼, óδ ñ«½ª¡δ ó¬½ετ¿Γ∞ ß½ÑñπεΘÑÑ:
  5917.  
  5918.             asm  mov   bx,[di].(struct tm) tm_hour > alt
  5919.  
  5920.      ìá»α¿¼Ñα:
  5921.  
  5922.             .
  5923.             .
  5924.             .
  5925.     struct  Student {
  5926.          char Teacher[30];
  5927.          int  Grade;
  5928.  
  5929. TASM2 #2-5/䫬              = 160 =
  5930.  
  5931.     }    JohnQPublic;
  5932.              .
  5933.              .
  5934.              .
  5935.     struct  Teacher {
  5936.          int  Grade;
  5937.          long Income;
  5938.     };
  5939.              .
  5940.              .
  5941.              .
  5942.        asm   mov  ax,JohnQPublic.(struct Student) Grade
  5943.              .
  5944.              .
  5945.              .
  5946.  
  5947.  
  5948.  
  5949.  
  5950.  
  5951. TASM2 #2-5/䫬              = 161 =
  5952.  
  5953.               Åα¿¼Ñα ¿ß»«½∞º«óá¡¿∩ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
  5954. -----------------------------------------------------------------
  5955.  
  5956.      ÆÑ»Ñα∞, ¬«úñá óδ πó¿ñѽ¿ ¡Ñ߬«½∞¬«  Σαáú¼Ñ¡Γ«ó  »α«úαá¼¼,  ó
  5957. ¬«Γ«αδσ  ¿ß»«½∞ºπÑΓß∩ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα, ¼«ª¡« »«º¡á¬«¼¿Γ∞ß∩ ß
  5958. αÑá½∞¡«⌐ αáí«ΓáεΘÑ⌐ »α«úαá¼¼«⌐ ß«  óßΓα«Ñ¡¡δ¼  ¬«ñ«¼  ÇßßѼí½Ñαá.
  5959. ¥Γ«  ¼δ  ¿ ßñѽáѼ ó ñá¡¡«¼ αáºñѽÑ. é »αÑñßΓáó½Ñ¡¡«⌐ ºñÑß∞ »α«ú-
  5960. αἼѠóßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ¿ß»«½∞ºπÑΓß∩ ñ½∩  πóѽ¿τÑ¡¿∩  ß¬«α«ßΓ¿
  5961. αáí«Γδ  (»αÑ«íαẫóá¡¿∩  ΓѬßΓá ó óÑασ¡¿⌐ αÑú¿ßΓα). ¥Γá »α«úαá¼¼á
  5962. ¼«ªÑΓ ß½πª¿Γ∞ ¿ »α¿¼Ñα«¼ Γ«ú«, τΓ« ¼«ª¡« ñѽáΓ∞ ß »«¼«Θ∞ε  óßΓα«-
  5963. Ñ¡¡«ú« ÇßßѼí½Ñαá, ¿ Γ«⌐ ßσѼ«⌐, ¡á «ß¡«óÑ ¬«Γ«α«⌐ óδ ¼«ªÑΓÑ αáº-
  5964. αáíáΓδóáΓ∞ ßó«¿ ß«íßΓóÑ¡¡δÑ »α«úαá¼¼δ ß« óßΓα«Ñ¡¡δ¼ ¬«ñ«¼  ÇßßѼ-
  5965. í½Ñαá.
  5966.  
  5967.      äáóá⌐ΓÑ »«ß¼«Γα¿¼ ß¡áτá½á, ¬á¬á∩ ºáñáτá αÑΦáÑΓß∩  ß  »«¼«Θ∞ε
  5968. ñá¡¡«⌐ »α«úαá¼¼δ-»α¿¼Ñαá. ìá¼ σ«Γѽ«ß∞ íδ ¡á»¿ßáΓ∞ Σπ¡¬µ¿ε ß ¿¼Ñ-
  5969. ¡Ñ¼ StringToUpper, ¬«Γ«αá∩ ¬«»¿απÑΓ «ñ¡π ßΓ᫬π ó ñαπúπε,  »αÑ«í-
  5970. αáºπ∩  ó  »α«µÑßßÑ  αáí«Γδ óßÑ ß¿¼ó«½δ ¡¿ª¡Ñú« αÑú¿ßΓαá (ßΓα«τ¡δÑ
  5971. íπ¬óδ) ó ß¿¼ó«½δ óÑασ¡Ñú« αÑú¿ßΓαá (»α«»¿ß¡δÑ íπ¬óδ). ò«Γѽ«ß∞ íδ
  5972. ΓᬪÑ, τΓ«íδ φΓá Σπ¡¬µ¿∩ αáí«Γá½á «ñ¿¡á¬«ó« σ«α«Φ« ñ½∩ óßÑσ ßΓ᫬
  5973. ¿  óßÑσ  ¼«ñѽÑ⌐ »á¼∩Γ¿.  Äñ¿¡ ¿º σ«α«Φ¿σ ß»«ß«í«ó «íÑß»Ñτ¿Γ∞ φΓ«
  5974. ºá¬½ετáÑΓß∩ ó »ÑαÑñáτÑ ó Σπ¡¬µ¿ε π¬áºáΓѽÑ⌐  ñá½∞¡Ñú«  Γ¿»á,  Γá¬
  5975. ¬á¬  π¬áºáΓѽ¿ í½¿ª¡Ñú« Γ¿»á (NEAR) óßÑúñá ¼«úπΓ íδΓ∞ »α¿óÑñÑ¡δ ¬
  5976. π¬áºáΓѽ∩¼ ñá½∞¡Ñú« Γ¿»á (FAR), á «íαáΓ¡«Ñ óÑα¡« ¡Ñ óßÑúñá.
  5977.  
  5978.      è ß«ªá½Ñ¡¿ε,  ºñÑß∞ ó«º¡¿¬áÑΓ »α«í½Ñ¼á »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿. é
  5979. Γ«  óαѼ∩,  ¬á¬  Æπαí«  ÇßßѼí½Ñα αáí«ΓáÑΓ ß ñá½∞¡¿¼¿ π¬áºáΓѽ∩¼¿
  5980. ñ«ßΓáΓ«τ¡« σ«α«Φ«,  «íαáí«Γ¬á π¬áºáΓѽÑ⌐ ñá½∞¡Ñú« Γ¿»á ó Æπαí« æ¿
  5981. óδ»«½¡∩ÑΓß∩ ßπΘÑßΓóÑ¡¡« ¼Ññ½Ñ¡¡ÑÑ, τѼ «íαáí«Γ¬á π¬áºáΓѽÑ⌐ í½¿ª-
  5982. ¡Ñú« Γ¿»á. ¥Γ« ¡Ñ ∩ó½∩ÑΓß∩ ¡Ññ«ßΓáΓ¬«¼ Æπαí« æ¿, ß¬«αÑÑ φΓ« ¡Ñ¿º-
  5983. íѪ¡«Ñ  ß½ÑñßΓó¿Ñ  ¿ß»«½∞º«óá¡¿∩  ñ½∩ »α«úαá¼¼¿α«óá¡¿∩ »α«µÑßß«αá
  5984. 8086 ∩ºδ¬á óδß«¬«ú« πα«ó¡∩.
  5985.  
  5986.      æ ñαπú«⌐ ßΓ«α«¡δ, «íαáí«Γ¬á ßΓ᫬ ¿ ñá½∞¡¿σ π¬áºáΓѽÑ⌐ - φΓ«
  5987. Γá  «í½áßΓ∞, ó ¬«Γ«α«⌐ ßÑí∩ »αÑó«ßσ«ñ¡« »«¬áºδóáÑΓ ÇßßѼí½Ñα. Æá-
  5988. ¬¿¼ «íαẫ¼, ½«ú¿τÑ߬«Ñ αÑΦÑ¡¿Ñ ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ ¿ß»«½∞º«óáΓ∞
  5989. ñ½∩ αáí«Γδ ß ñá½∞¡¿¼¿ π¬áºáΓѽ∩¼¿ ¿ ¬«»¿α«óá¡¿∩ ßΓ᫬¿ óßΓα«Ñ¡¡δ⌐
  5990. ÇßßѼí½Ñα, á «ßΓá½∞¡πε τáßΓ∞ »¿ßáΓ∞ ¡á ∩ºδ¬Ñ æ¿. ¥Γ« ¿ αÑ὿º«óá-
  5991. ¡« ó ß½ÑñπεΘÑ⌐ »α«úαá¼¼Ñ, ¬«Γ«αá∩ ¡áºδóáÑΓß∩ STRINGUP.C:
  5992.  
  5993. /* Åα«úαá¼¼á ñ½∩ ñѼ«¡ßΓαᵿ¿ ¿ß»«½∞º«óá¡¿∩ StringToUpper().
  5994.    ä½∩ »αÑ«íαẫóá¡¿∩ ßΓ᫬¿ TestString ó óÑασ¡¿⌐ αÑú¿ßΓα
  5995.    óδºδóáÑΓß∩ Σπ¡¬µ¿∩ StringToUpper, »«ß½Ñ τÑú« »ÑτáΓáÑΓß∩
  5996.    »«½πτÑ¡¡á∩ ó αѺπ½∞ΓáΓÑ ßΓ᫬á UpperCaseString ¿ ÑÑ ñ½¿¡á. */
  5997.  
  5998. #pragma inline
  5999.  
  6000. TASM2 #2-5/䫬              = 162 =
  6001.  
  6002. #include <stdio.h>
  6003.  
  6004. /* Åα«Γ«Γ¿» Σπ¡¬µ¿¿ ñ½∩ StringToUpper() */
  6005. extern unsigned int StringToUpper(
  6006. unsigned char far  * DestFarString,
  6007. unsigned char far  * SourceFarString);
  6008.  
  6009. #define MAX_STRING_LENGTH 100
  6010.  
  6011. char *TestString = "This started Out At Lowercase!";
  6012. /* ßΓ᫬á, »αÑ«íαáºπѼá∩ ó óÑασ¡¿⌐ αÑú¿ßΓα */
  6013.  
  6014. char UpperCaseString[MAX_STRING_LENGTH];
  6015.  
  6016. main()
  6017. {
  6018.    unsigned int StringLength;
  6019.  
  6020.    /* æ¬«»¿α«óáΓ∞ ßΓ᫬π TestString ó óÑασ¡Ñ¼ αÑú¿ßΓαÑ ó
  6021.        UpperCaseString */
  6022.    StringLength = StringToUpper(UpperCaseString, TestString);
  6023.  
  6024.    /* éδóÑßΓ¿ αѺπ½∞ΓáΓδ »αÑ«íαẫóá¡¿∩ */
  6025.    printf("êßσ«ñ¡á∩ ßΓ᫬á:\n%s\n\n", TestString);
  6026.    printf("æΓ᫬á ó óÑασ¡Ñ¼ αÑú¿ßΓαÑ:\n%s\n\n", UpperCaseString);
  6027.    printf("ù¿ß½« ß¿¼ó«½«ó: %d\n\n", StringLength);
  6028. }
  6029. /* öπ¡¬µ¿∩ ñ½∩ óδ»«½¡Ñ¡¿∩ íδßΓα«ú« »αÑ«íαẫóá¡¿∩ ó óÑασ¡¿⌐
  6030.    αÑú¿ßΓα «ñ¡«⌐ ßΓ᫬¿ ñá½∞¡Ñú« Γ¿»á ó ñαπúπε
  6031.  
  6032.    :
  6033.    DestFarString  - ¼áßß¿ó ñ½∩ σαá¡Ñ¡¿∩ »αÑ«íαẫóá¡¡«⌐
  6034.                     ó óÑασ¡¿⌐ αÑú¿ßΓα ßΓ᫬¿ (íπñÑΓ
  6035.                     ºáóÑαΦáΓ∞ß∩ ¡π½Ñ¼)
  6036.    SourceFarString - ßΓ᫬á, ß«ñÑαªáΘá∩ ß¿¼ó«½δ, ¬«Γ«αδÑ
  6037.                     ¡πª¡« »αÑ«íαẫóáΓ∞ ó óÑασ¡¿⌐ αÑú¿ßΓα
  6038.                     (ñ«½ª¡á ºáóÑαΦáΓ∞ß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼)
  6039.  
  6040.    é«ºóαáΘáѼδÑ αѺπ½∞ΓáΓδ:
  6041.         ä½¿¡á ¿ßσ«ñ¡«⌐ ßΓ᫬¿ ó ß¿¼ó«½áσ, íѺ πτÑΓá
  6042.         ºáóÑαΦáεΘÑú« ¡π½Ñó«ú« ß¿¼ó«½á. */
  6043.  
  6044. unsigned int StringToUpper(unsigned char far  * DestFarSring,
  6045.                         unsigned char far  * SourceFarString)
  6046. {
  6047.    unsigned int  CharacterCount;
  6048.  
  6049. TASM2 #2-5/䫬              = 163 =
  6050.  
  6051.  
  6052.    #define LOWER_CASE_A 'a'
  6053.    #define LOWER_CASE_Z 'z'
  6054.       asm  ADJUST_VALUE  EQU  20h;  /* τ¿ß½«, ¬«Γ«α«Ñ ¡πª¡«
  6055.                                        óδτÑßΓ∞ ¿º º¡áτÑ¡¿⌐
  6056.                                        íπ¬ó ó ¡¿ª¡Ñ¼ αÑú¿ßΓ-
  6057.                                        αÑ, τΓ«íδ »αÑ«íαá-
  6058.                                        º«óáΓ∞ */
  6059.       asm  cld;
  6060.       asm  push ds;       /* ß«σαá¡¿Γ∞ ßÑú¼Ñ¡Γ ñá¡¡δσ æ¿ */
  6061.       asm  lds  si,SourceFarString; /* ºáúαπº¿Γ∞ ñá½∞¡¿⌐
  6062.                              π¬áºáΓѽ∞ ¡á ¿ßσ«ñ¡πε ßΓ᫬π */
  6063.       asm  les  di,DestFarString; /* ºáúαπº¿Γ∞ π¬áºáΓѽ∞
  6064.                              ñá½∞¡Ñú« Γ¿»á ¡á µÑ½Ñóπε
  6065.                              ßΓ᫬π */
  6066.       CharacterCount = 0; /* τ¿ß½« ß¿¼ó«½«ó */
  6067. StringToUpperLoop:
  6068.       asm  lodsb;         /* »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½ */
  6069.       asm  cmp  al,LOWER_CASE_A; /* Ñß½¿ < á, Γ« φΓ« ¡Ñ
  6070.                              ßΓα«τ¡á∩ íπ¬óá (¡¿ª¡¿⌐
  6071.                              αÑú¿ßΓα) */
  6072.       asm  jb   SaveCharacter;
  6073.       asm  cmp  al,LOWER_CASE_Z; /* Ñß½¿ > z, Γ« φΓ« ¡Ñ
  6074.                              ßΓα«τ¡á∩ íπ¬óá */
  6075.       asm  ja   SaveCharacter;
  6076.       asm  sub  al,ADJUST_VALUE; /* φΓ« ¡¿ª¡¿⌐ αÑú¿ßΓα,
  6077.                              »αÑ«íαẫóáΓ∞ ó óÑασ¡¿⌐
  6078.                              αÑú¿ßΓα */
  6079. SaveCharacter:
  6080.       asm  stosb;         /* ß«σαá¡¿Γ∞ ß¿¼ó«½ */
  6081.       CharacterCount++;   /* »«ñßτ¿ΓáΓ∞ φΓ«Γ ß¿¼ó«½ */
  6082.       asm  and  al,al;    /* φΓ« ºáóÑαΦáεΘ¿⌐ ß¿¼ó«½?
  6083.                              (¡«½∞) */
  6084.       asm  jnz  StringToUpperLoop; /* ¡ÑΓ, «íαáí«ΓáΓ∞
  6085.                              ß½ÑñπεΘ¿⌐ ß¿¼ó«½, Ñß½¿ «¡
  6086.                              ¿¼ÑÑΓß∩ */
  6087.       CharacterCount--;   /* ¡Ñ πτ¿ΓδóáΓ∞ ºáóÑαΦáεΘ¿⌐ ¡«½∞ */
  6088.       asm  pop  ds;       /* ó«ßßΓá¡«ó¿Γ∞ ßÑú¼Ñ¡Γ ñá¡¡δσ
  6089.                              æ¿ */
  6090.       return(CharacterCount);
  6091. }
  6092.  
  6093.      Æ«úñá »α¿ ºá»π߬ѠSTRINGUP.C ¡á φ¬αá¡ óδó«ñ¿Γß∩:
  6094.  
  6095.      êßσ«ñ¡á∩ ßΓ᫬á:
  6096.      String to convert to uppercase
  6097.  
  6098. TASM2 #2-5/䫬              = 164 =
  6099.  
  6100.  
  6101.      æΓ᫬á ó óÑασ¡Ñ¼ αÑú¿ßΓαÑ:
  6102.      STRING TO CONVERT TO UPPERCASE
  6103.  
  6104.      ù¿ß½« ß¿¼ó«½«ó: 30
  6105.  
  6106.      ¥Γ« »«¬áºδóáÑΓ, τΓ« ñÑ⌐ßΓó¿Γѽ∞¡« óßÑ ßΓα«τ¡δÑ íπ¬óδ (¡¿ª¡¿⌐
  6107. αÑú¿ßΓα) »αÑ«íαáºπεΓß∩ ó »α«»¿ß¡δÑ (óÑασ¡¿⌐ αÑú¿ßΓα).
  6108.  
  6109.      Äß¡«óπ    »α«úαá¼¼δ    STRINGUP.C     ß«ßΓáó½∩ÑΓ     Σπ¡¬µ¿∩
  6110. StringToUpper,  ¬«Γ«αá∩ óδ»«½¡∩ÑΓ óÑß∞ »α«µÑßß ¬«»¿α«óá¡¿∩ ßΓ᫬¿
  6111. ¿ »αÑ«íαẫóá¡¿∩ ÑÑ ó óÑασ¡¿⌐ αÑú¿ßΓα. ¥Γá Σπ¡¬µ¿∩ ¡á»¿ßá¡á ¡á æ¿
  6112. ¿  óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ ¿ ó«ß»α¿¡¿¼áÑΓ ó ¬áτÑßΓóÑ »áαá¼ÑΓα«ó ñóá
  6113. π¬áºáΓѽ∩ ñá½∞¡Ñú« Γ¿»á. Äñ¿¡ ¿º π¬áºáΓѽÑ⌐ ñá½∞¡Ñú« Γ¿»á  ßßδ½á-
  6114. ÑΓß∩  ¡á  ßΓ᫬π,  ß«ñÑαªáΘπε ΓѬßΓ. äαπú«⌐ π¬áºδóáÑΓ ¡á ÑΘÑ «ñ¡π
  6115. ßΓ᫬π, ó ¬«Γ«απε íπñÑΓ ß¬«»¿α«óá¡ óÑß∞ ΓѬßΓ ¿º  »Ñαó«⌐  ßΓ᫬¿,
  6116. ßΓα«τ¡δÑ  ß¿¼ó«½δ ¬«Γ«α«ú« íπñπΓ »αÑ«íαẫóá¡δ ó óÑασ¡¿⌐ αÑú¿ßΓα.
  6117. Ä»¿ßá¡¿Ñ Σπ¡¬µ¿¿ ¿ «»αÑñѽѡ¿Ñ »áαá¼ÑΓα«ó «íαáíáΓδóáεΓß∩  ¡á  æ¿:
  6118. ñÑ⌐ßΓó¿Γѽ∞¡«, »α«Γ«Γ¿» Σπ¡¬µ¿¿ StringToUpper π¬áºδóáÑΓß∩ ó ¡áτá-
  6119. ½Ñ »α«úαá¼¼δ. Äß¡«ó¡á∩ »α«úαá¼¼á óδºδóáÑΓ  Σπ¡¬µ¿ε  StringToUpper
  6120. ΓᬪÑ,  ¬á¬  Ñß½¿ íδ «¡á íδ½á ¡á»¿ßá¡á µÑ½¿¬«¼ ¡á ∩ºδ¬Ñ æ¿. Æá¬¿¼
  6121. «íαẫ¼, ¼«ª¡« ¿ß»«½∞º«óáΓ∞ óßÑ »αÑ¿¼πΘÑßΓóá »α«úαá¼¼¿α«óá¡¿∩  ¡á
  6122. Æπαí«  æ¿, σ«Γ∩ Σπ¡¬µ¿∩ StringToUpper ß«ñÑαª¿Γ óßΓα«Ñ¡¡δ⌐ ¬«ñ Çß-
  6123. ßѼí½Ñαá.
  6124.  
  6125.      ÆÑ½« Σπ¡¬µ¿¿ StringToUpper ß«ñÑαª¿Γ ß¼Ñß∞ ¬«ñá æ¿  ¿  ÇßßѼ-
  6126. í½Ñαá.  ÇßßѼí½Ñα  ¿ß»«½∞ºπÑΓß∩ ñ½∩ ßτ¿Γδóá¡¿∩ ¬áªñ«ú« ß¿¼ó«½á ¿º
  6127. ¿ßσ«ñ¡«⌐ ßΓ᫬¿, »α«óÑન Ñú«, ¿, Ñß½¿ φΓ« ¡Ñ«íσ«ñ¿¼«, »αÑ«íαẫ-
  6128. óá¡¿∩ ß¿¼ó«½á ó óÑασ¡¿⌐ αÑú¿ßΓα, »«ß½Ñ τÑú« ß¿¼ó«½ ºá»¿ßδóáÑΓß∩ ó
  6129. µÑ½Ñóπε ßΓ᫬π (»α¿Ñ¼¡¿¬). éßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα »«ºó«½∩ÑΓ ¿ß»«½∞-
  6130. º«óáΓ∞ ó Σπ¡¬µ¿¿ StringToUpper ΓᬿѠ¼«Θ¡δÑ ßΓ᫬«óδÑ ¿¡ßΓαπ¬µ¿¿,
  6131. ¬á¬ LODSB ¿ STOSB, ¬«Γ«αδÑ ßτ¿ΓδóáεΓ ¿ ºá»¿ßδóáεΓ ß¿¼ó«½δ.
  6132.  
  6133.      Åα¿ αáºαáí«Γ¬Ñ Σπ¡¬µ¿¿ StringToUpper ¼δ º¡á½¿,  τΓ«  ¡á¼  ¡Ñ
  6134. »«ΓαÑíπÑΓß∩  «íαáΘáΓ∞ß∩  ¬  ßÑú¼Ñ¡Γπ  ñá¡¡δσ Æπαí« æ¿, »«φΓ«¼π ¼δ
  6135. »α«ßΓ« ºá¡Ñß½¿ ó ¡áτá½Ñ Σπ¡¬µ¿¿ αÑú¿ßΓα DS ó ßΓѬ ¿  ¿ß»«½∞º«ó὿
  6136. Ñú« ñ½∩ ßß佬¿ ¡á ¿ßσ«ñ¡πε ßΓ᫬π (¿ßΓ«τ¡¿¬), ¡Ñ ¿º¼Ñ¡∩∩ ß«ñÑন-
  6137. ¼«Ñ DS ó «ßΓá½∞¡«⌐ τáßΓ¿ Σπ¡¬µ¿¿. Äñ¡« ¿º í«½∞Φ¿σ »αÑ¿¼πΘÑßΓó ¿ß-
  6138. »«½∞º«óá¡¿∩ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá »« ßαáó¡Ñ¡¿ε ß τ¿ßΓδ¼ »α«úαá¼-
  6139. ¼¿α«ó᡿Ѽ ¡á ∩ºδ¬Ñ æ¿ ß«ßΓ«¿Γ  ó  ó«º¼«ª¡«ßΓ¿  ºáúαπº¬¿  ñá½∞¡¿σ
  6140. π¬áºáΓѽÑ⌐ ó ¡áτá½Ñ Σπ¡¬µ¿¿ íѺ »«ß½ÑñπεΘÑ⌐ ¿σ »ÑαѺáúαπº¬¿ ó «ß-
  6141. Γá½∞¡«⌐ τáßΓ¿ Σπ¡¬µ¿¿. é «Γ½¿τ¿Ñ «Γ φΓ«ú« Æπαí« æ¿ ¿ ñαπú¿Ñ ∩ºδ¬¿
  6142. óδß«¬«ú« πα«ó¡∩ »ÑαѺáúαπªáεΓ ñá½∞¡¿Ñ π¬áºáΓѽ¿ óß∩¬¿⌐ αáº, ¬«úñá
  6143. «¡¿ ¿ß»«½∞ºπεΓß∩. é«º¼«ª¡«ßΓ∞ ºáúαπªáΓ∞  ñá½∞¡¿⌐  π¬áºáΓѽ∞  «ñ¿¡
  6144. αẠ«º¡áτáÑΓ, τΓ« Σπ¡¬µ¿∩ StringToUpper «íαáíáΓδóáÑΓ ßΓ᫬¿ ñá½∞-
  6145. ¡Ñú« Γ¿»á ΓᬠªÑ íδßΓα«, ¬á¬ ¿ ßΓ᫬¿ í½¿ª¡Ñú« Γ¿»á.
  6146.  
  6147. TASM2 #2-5/䫬              = 165 =
  6148.  
  6149.  
  6150.      äαπú«Ñ ¿¡ΓÑαÑß¡«Ñ ºá¼Ñτá¡¿Ñ »« Σπ¡¬µ¿¿ StringToUpper ¬áßáÑΓ-
  6151. ß∩ Γ«ú«,  ¬á¬¿¼  «íαẫ¼  τÑαÑñπεΓß∩ «»ÑαáΓ«αδ ÇßßѼí½Ñαá ¿ ∩ºδ¬á
  6152. æ¿. ä½∩ Γ«ú«, τΓ«íδ πßΓá¡«ó¿Γ∞ º¡áτÑ¡¿Ñ LOWER_CASE_A ¿ LOWER_CASE
  6153. _Z ¿ß»«½∞ºπÑΓß∩ ñ¿αÑ¬Γ¿óá #define, á ñ½∩ ºáñá¡¿∩ º¡áτÑ¡¿∩ ADJUST_
  6154. VALUE - ñ¿αÑ¬Γ¿óá ÇßßѼí½Ñαá EQU.  Äñ¡á¬« ó ¬«ñÑ óßΓα«Ñ¡¡«ú«  Çß-
  6155. ßѼí½Ñαá  óßÑ Γα¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ¿ß»«½∞ºπεΓß∩ «ñ¿¡á¬«ó«.  Å«ñßΓá-
  6156. ¡«ó¬¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, «»αÑñѽ∩Ѽδσ ó ∩ºδ¬Ñ æ¿, óδ»«½¡∩εΓß∩ »αÑ»-
  6157. α«µÑßß«α«¼  Æπαí« æ¿,  á »«ñßΓá¡«ó¬á ñ½∩ ADJUST_VALUE - Æπαí« Çß-
  6158. ßѼí½Ñα«¼.  Åα¿ φΓ«¼ «íá  ¿ñÑ¡Γ¿Σ¿¬áΓ«αá  ¼«ª¡«  ¿ß»«½∞º«óáΓ∞  ó«
  6159. óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ.
  6160.  
  6161.      é  ΓѽѠ Σπ¡¬µ¿¿  StringToUpper  ñ½∩  αáí«Γδ  ß«   ßτÑΓτ¿¬«¼
  6162. CharacterCount ¿ß»«½∞ºπεΓß∩ «»ÑαáΓ«αδ ∩ºδ¬á æ¿. ¥Γ« ßñѽᡫ Γ«½∞-
  6163. ¬« ñ½∩ Γ«ú«, τΓ«íδ »«¬áºáΓ∞, τΓ« ¬«ñ ∩ºδ¬á æ¿ ¿ óßΓα«Ñ¡¡δ⌐ ÇßßѼ-
  6164. í½Ñα ¼«úπΓ τÑαÑñ«óáΓ∞ß∩. ç¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐ CharacterCount ¼«ª¡«
  6165. í佫  íδ ¿º¼Ñ¡∩Γ∞ ¿ ó ¬«ñÑ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá,  ¿ß»«½∞ºπ∩ ñ½∩
  6166. φΓ«ú« ßó«í«ñ¡δ⌐ αÑú¿ßΓα (¡á»α¿¼Ñα,  αÑú¿ßΓα CX ¿½¿  DX).  öπ¡¬µ¿∩
  6167. StringToUpper αáí«Γá½á íδ ó φΓ«¼ ß½πτáÑ ñáªÑ íδßΓαÑÑ.
  6168.  
  6169.      æó«í«ñ¡«Ñ τÑαÑñ«óá¡¿Ñ ¬«ñá ∩ºδ¬á æ¿ ¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
  6170. ñ«ó«½∞¡«  α¿ß¬«óá¡¡«, Ñß½¿ óδ ¡Ñ »«¡¿¼áÑΓÑ τÑΓ¬«, ¬á¬«⌐ ¬«ñ úÑ¡Ñ-
  6171. α¿απÑΓ Æπαí« æ¿ ¼Ñªñπ «»ÑαáΓ«αἿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá. êß»«½∞-
  6172. º«óá¡¿Ñ »áαá¼ÑΓαá ¬«¼»¿½∩Γ«αá Æπαí« æ¿ -s »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¡á¿-
  6173. ½πτΦ¿⌐ ß»«ß«í ¿ßß½Ññ«óáΓ∞, τΓ«  »α«¿ßσ«ñ¿Γ,  ¬«úñá  óδ  τÑαÑñπÑΓÑ
  6174. óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ¿ ¬«ñ ∩ºδ¬á æ¿. ìá»α¿¼Ñα, óδ ¼«ªÑΓÑ ¿ßß½Ññ«-
  6175. óáΓ∞, ¡á߬«½∞¬« ß««ΓóÑΓßΓóπεΓ ñαπú ñαπú𠬫ñ æ¿ ¿ óßΓα«Ñ¡¡«ú« Çß-
  6176. ßѼí½Ñαá, Ñß½¿ ß¬«¼»¿½¿απÑΓÑ »α«úαá¼¼π STRINGUP.C ß »áαá¼ÑΓα«¼ -s
  6177. ¿ »α«ß¼«Γα¿ΓÑ »«½πτÑ¡¡δ⌐ αѺπ½∞ΓáΓÑ Σá⌐½ STRINGUP.ASM.
  6178.  
  6179.      Åα«úαá¼¼á STRINGUP.C ∩ß¡« ñѼ«¡ßΓα¿απÑΓ »αÑó«ßσ«ñ¡δÑ ¬áτÑßΓ-
  6180. óá  óßΓα«Ñ¡¡«ú«  ÇßßѼí½Ñαá. é¬½ετÑ¡¿Ñ ó Σπ¡¬µ¿ε StringToUp «¬«½«
  6181. 15 ßΓ᫬ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá »«τΓ¿ πñóá¿óáÑΓ  ß¬«α«ßΓ∞  «íαáí«Γ¬¿
  6182. ßΓ᫬¿ »« ßαáó¡Ñ¡¿ε ß φ¬ó¿óá½Ñ¡Γ¡δ¼ ¬«ñ«¼ ¡á ∩ºδ¬Ñ æ¿.
  6183.  
  6184.  
  6185.  
  6186.  
  6187. TASM2 #2-5/䫬              = 166 =
  6188.  
  6189.  
  6190. Äúαá¡¿τÑ¡¿∩ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
  6191. -----------------------------------------------------------------
  6192.  
  6193.      Åα¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá  ¿¼ÑÑΓß∩  ¡Ñ߬«½∞¬«
  6194. «úαá¡¿τÑ¡¿⌐. èᬠ¼δ πªÑ  º¡áѼ,  «»ÑαáΓ«αδ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
  6195. »α«ßΓ« »ÑαÑñáεΓß∩ íѺ ¿º¼Ñ¡Ñ¡¿⌐ Æπαí« ÇßßѼí½Ñαπ. Äñ¡á¬«  ßπΘÑßΓ-
  6196. óπεΓ  «Γñѽ∞¡δÑ  «úαá¡¿τÑ¡¿∩,  ¬áßáεΘ¿Ñß∩  «»αÑñѽѡ¡δσ «»Ñαá¡ñ«ó
  6197. ó »á¼∩Γ¿ ¿ áñαÑßᵿ¿, ¿ ¡Ñ¬«Γ«αδÑ «úαá¡¿τÑ¡¿∩, «Γ¡«ß∩Θ¿Ñß∩ ¬  ¿ß-
  6198. »«½∞º«óá¡¿ε  αÑú¿ßΓα«ó ¿ «ΓßπΓßΓó¿∩ ó« óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ ¡áº-
  6199. ¡áτÑ¡¿∩ »« π¼«½τá¡¿ε αẼÑαá ñ½∩ ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ  »ÑαѼѡ-
  6200. ¡δσ æ¿.
  6201.  
  6202.               Äúαá¡¿τÑ¡¿∩ áñαÑßᵿ¿ ¬ «»Ñαá¡ñá¼ ó »á¼∩Γ¿
  6203. -----------------------------------------------------------------
  6204.  
  6205.      àñ¿¡ßΓóÑ¡¡«Ñ ¿º¼Ñ¡Ñ¡¿Ñ, ¬«Γ«α«Ñ Æπαí« æ¿ ó¡«ß¿Γ ó  «»ÑαáΓ«αδ
  6206. óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá, ß«ßΓ«¿Γ ó »αÑ«íαẫóá¡¿¿ ßß佫¬ ¡á »á¼∩Γ∞
  6207. ¿ áñαÑßá »á¼∩Γ¿ (¡á»α¿¼Ñα, ¿¼Ñ¡ »ÑαѼѡ¡δσ ¿ áñαÑß«ó »ÑαÑσ«ñá) ¿º
  6208. ¿σ »αÑñßΓáó½Ñ¡¿∩ ó æ¿ ó ß««ΓóÑΓßΓóπεΘ¿⌐ φ¬ó¿óá½Ñ¡Γ ¡á ÇßßѼí½ÑαÑ.
  6209. Æá¬¿Ñ ¿º¼Ñ¡Ñ¡¿∩ ¡á½áúáεΓ ñóá «úαá¡¿τÑ¡¿∩: ó ¿¡ßΓαπ¬µ¿∩σ  »ÑαÑσ«ñá
  6210. óßΓα«Ñ¡¡«ú«  ÇßßѼí½Ñαá  ¼«ª¡«  ßßδ½áΓ∞ß∩ Γ«½∞¬« ¡á ¼ÑΓ¬¿ æ¿, á ó
  6211. »α«τ¿σ ¿¡ßΓαπ¬µ¿∩σ ¼«ª¡« ßßδ½áΓ∞ß∩ ¡á  τΓ«  πú«ñ¡«,  ¬α«¼Ñ  ¼ÑΓ«¬
  6212. ∩ºδ¬á æ¿. ìá»α¿¼Ñα, »α«úαá¼¼á:
  6213.  
  6214.                 .
  6215.                 .
  6216.                 .
  6217.                 asm   jz   NoDec;
  6218.                 asm   dec  cx;
  6219.         NoDec:
  6220.                 .
  6221.                 .
  6222.                 .
  6223.  
  6224. 󻫽¡Ñ ¬«ααÑ¬Γ¡á, á »α«úαá¼¼á:
  6225.  
  6226.                 .
  6227.                 .
  6228.                 .
  6229.                 asm   jz   NoDec;
  6230.                 asm   dec  cx;
  6231.                 asm   NoDec:
  6232.                 .
  6233.                 .
  6234.                 .
  6235.  
  6236. TASM2 #2-5/䫬              = 167 =
  6237.  
  6238.  
  6239. ¡Ñ íπñÑΓ »αáó¿½∞¡« ¬«¼»¿½¿α«óáΓ∞ß∩. Ç¡á½«ú¿τ¡«, ó ¿¡ßΓαπ¬µ¿∩σ »Ñ-
  6240. αÑσ«ñá óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαᠡѽ∞º∩ ¿ß»«½∞º«óáΓ∞ ó ¬áτÑßΓóÑ «»Ñ-
  6241. αá¡ñ«ó ¿¼Ñ¡á Σπ¡¬µ¿⌐.
  6242.  
  6243.      éßΓα«Ñ¡¡δÑ ¿¡ßΓαπ¬µ¿¿ ÇßßѼí½Ñαá, «Γ½¿τ¡δÑ «Γ »ÑαÑσ«ñ«ó, ¼«-
  6244. úπΓ  ß«ñÑαªáΓ∞ ½εíδÑ «»Ñαá¡ñδ, ¬α«¼Ñ ¼ÑΓ«¬ æ¿. ìá»α¿¼Ñα, »α«úαá¼-
  6245. ¼á:
  6246.  
  6247.                 .
  6248.                 .
  6249.                 .
  6250.                 asm   BaseValue  db  '0';
  6251.                 .
  6252.                 .
  6253.                 .
  6254.                 asm   mov   al,BYTE PTR BaseValue;
  6255.                 .
  6256.                 .
  6257.                 .
  6258.  
  6259. ¬«¼»¿½¿απÑΓß∩, á »α«úαá¼¼á:
  6260.  
  6261.                 .
  6262.                 .
  6263.                 .
  6264.         BaseValue:
  6265.                 asm   db  '0';
  6266.                 .
  6267.                 .
  6268.                 .
  6269.                 asm   mov   al,BYTE PTR BaseValue;
  6270.                 .
  6271.                 .
  6272.                 .
  6273.  
  6274. ¬«¼»¿½¿α«óáΓ∞ß∩ ¡Ñ íπñÑΓ. çá¼ÑΓ¿¼, τΓ« óδº«ó »«ñ»α«úαá¼¼δ ¡Ñ ßτ¿-
  6275. ΓáÑΓß∩ »ÑαÑσ«ñ«¼, »«φΓ«¼π ó ¬áτÑßΓóÑ «»Ñαá¡ñ«ó »α¿ ó맮óÑ Σπ¡¬µ¿¿
  6276. æ¿ ó ¿¡ßΓαπ¬µ¿¿  óßΓα«Ñ¡¡«ú«  ÇßßѼí½Ñαá  ¼«ª¡«  π¬áºδóáΓ∞  ¿¼Ñ¡á
  6277. Σπ¡¬µ¿⌐  æ¿  ¿  ¼ÑΓ¬¿  ÇßßѼí½Ñαá  (¡«  ¡Ñ ¼ÑΓ¬¿ æ¿). àß½¿ ó ¬«ñÑ
  6278. óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¿¼ÑÑΓß∩ ßßδ½¬á ¡á ¿¼∩ Σπ¡¬µ¿¿ æ¿, Γ« »ÑαÑñ
  6279. ¿¼Ñ¡Ñ¼  Σπ¡¬µ¿¿  ñ«½ªÑ¡  π¬áºδóáΓ∞ß∩  ß¿¼ó«½ »«ñτÑનóá¡¿∩ (í«½ÑÑ
  6280. »«ñα«í¡« «í φΓ«¼ αáß߬áºδóáÑΓß∩ ó αáºñѽѠ"Å«ñτÑનóá¡¿∩").
  6281.  
  6282.  
  6283.  
  6284.  
  6285. TASM2 #2-5/䫬              = 168 =
  6286.  
  6287.     éßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ¿ αẼÑα ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ
  6288. -----------------------------------------------------------------
  6289.  
  6290.      è«úñá Æπαí« æ¿ ºá¼Ñ¡∩ÑΓ ó «»ÑαáΓ«αÑ  óßΓα«Ñ¡¡«ú«  ÇßßѼí½Ñαá
  6291. ßß佬𠠠¡á  ñ¿¡á¼¿τÑ߬πε  ½«¬á½∞¡πε  »ÑαѼѡ¡πε  «»Ñαá¡ñ«¼  ó¿ñá
  6292. [BP-02], «¡ ¡Ñ »«¼ÑΘáÑΓ ó ¿º¼Ñ¡Ñ¡¡δ⌐ «»ÑαáΓ«α «»Ñαáµ¿ε ¡áº¡áτÑ¡¿∩
  6293. αẼÑαá (Γ¿»á WORD PTR ¿½¿ BYTE PTR). ¥Γ« «º¡áτáÑΓ, τΓ«:
  6294.  
  6295.                 .
  6296.                 .
  6297.                 .
  6298.                 int   i;
  6299.                 .
  6300.                 .
  6301.                 .
  6302.                 asm   mov   ax,i;
  6303.                 .
  6304.                 .
  6305.                 .
  6306.  
  6307. óδó«ñ¿Γß∩ ó Σá⌐½ ÇßßѼí½Ñαá á ó¿ñÑ:
  6308.  
  6309.                 mov   ax,[bp-02]
  6310.  
  6311.      Åα«í½Ñ¼ ó ñá¡¡«¼ ß½πτáÑ ¡Ñ ó«º¡¿¬áÑΓ, Γᬠ¬á¬  ¿ß»«½∞º«óá¡¿Ñ
  6312. αÑú¿ßΓαá  AX ß««íΘáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« φΓ« 16-í¿Γ«óá∩ ßß佬á
  6313. ¡á »á¼∩Γ∞.  ü«½ÑÑ Γ«ú«,  «ΓßπΓßΓó¿Ñ «»Ñαᵿ¿ ºáñá¡¿∩ αẼÑαá ñáÑΓ
  6314. óá¼ í«½∞Φπε ú¿í¬«ßΓ∞ ó π»αáó½Ñ¡¿¿ αẼÑα«¼ «»Ñαá¡ñá »α¿ ¿ß»«½∞º«-
  6315. óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ »α¿¼Ñα:
  6316.  
  6317.                 .
  6318.                 .
  6319.                 .
  6320.                 int   i;
  6321.                 .
  6322.                 .
  6323.                 .
  6324.                 asm   mov   i,0;
  6325.                 asm   inc   i;
  6326.                 .
  6327.                 .
  6328.                 .
  6329.  
  6330. ¬«Γ«αδ⌐ »α¿¡¿¼áÑΓ ó¿ñ:
  6331.  
  6332.                 mov   [bp-02],0
  6333.  
  6334. TASM2 #2-5/䫬              = 169 =
  6335.  
  6336.                 inc   [bp-02]
  6337.  
  6338.      ì¿ «ñ¡á ¿º φΓ¿σ ¿¡ßΓαπ¬µ¿⌐ ºñÑß∞ ¡Ñ ß«ñÑαª¿Γ »αÑñ»«½áúáѼ«ú«
  6339. αẼÑαá,  »«φΓ«¼π Æπαí« ÇßßѼí½Ñα ¡Ñ ¼«ªÑΓ ¿σ  áßßÑ¼í½¿α«óáΓ∞.  é
  6340. ¿Γ«úÑ, ¬«úñá óδ ó Æπαí« ÇßßѼí½ÑαÑ «íαáΘáÑΓÑß∞ ¬ ñ¿¡á¼¿τÑ߬«⌐ ½«-
  6341. ¬á½∞¡«⌐ »ÑαѼѡ¡«⌐,  ¡Ñ ¿ß»«½∞ºπ∩ ó ¬áτÑßΓóÑ ¿ßΓ«τ¡¿¬á ¿½¿ »α¿Ñ¼-
  6342. ¡¿¬á αÑú¿ßΓα,  Γ« ¡πª¡« π¬áºδóáΓ∞ αẼÑα «»Ñαá¡ñá.  æ πτÑΓ«¼ ß¬á-
  6343. ºá¡¡«ú« »«ß½Ññ¡¿⌐ »α¿¼Ñα ñ«½ªÑ¡ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
  6344.  
  6345.                 .
  6346.                 .
  6347.                 .
  6348.                 int   i;
  6349.                 .
  6350.                 .
  6351.                 .
  6352.                 asm   mov   WORD PTR i,0;
  6353.                 asm   inc   BYTE PTR i;
  6354.                 .
  6355.                 .
  6356.                 .
  6357.  
  6358.  
  6359.  
  6360.  
  6361. TASM2 #2-5/䫬              = 170 =
  6362.  
  6363.  
  6364. ìÑ«íσ«ñ¿¼«ßΓ∞ ß«σαá¡Ñ¡¿∩ αÑú¿ßΓα«ó
  6365. -----------------------------------------------------------------
  6366.  
  6367.      é ¬«¡µÑ ¬áªñ«ú« ¿ß»«½∞ºπѼ«ú« óἿ ¬«ñá  óßΓα«Ñ¡¡«ú«  ÇßßѼ-
  6368. í½Ñαá  αÑú¿ßΓαδ  BP, CS, DS ¿ SS ñ«½ª¡δ ß«ñÑαªáΓ∞ ΓÑ ªÑ º¡áτÑ¡¿∩,
  6369. ¬«Γ«αδÑ «¡¿ ¿¼Ñ½¿ »ÑαÑñ ¡áτὫ¼ óδ»«½¡Ñ¡¿∩ ¬«ñá  óßΓα«Ñ¡¡«ú«  Çß-
  6370. ßѼí½Ñαá. ìÑß«í½εñÑ¡¿Ñ φΓ«ú« »αáó¿½á τáßΓ« íπñÑΓ »α¿ó«ñ¿Γ∞ ¬ áóá-
  6371. α¿⌐¡«¼π ºáóÑαΦÑ¡¿ε »α«úαá¼¼δ (crash) ¿ »ÑαѺáúαπº¬á¼ ß¿ßΓѼδ. ÉÑ-
  6372. ú¿ßΓαδ  AX, BX, CX, DX, SI, DI, ES ¿ Σ½áú¿ ó ¬«ñÑ óßΓα«Ñ¡¡«ú« Çß-
  6373. ßѼí½Ñαá ¼«ª¡« ßó«í«ñ¡« ¿º¼Ñ¡∩Γ∞.
  6374.  
  6375.  
  6376. æ«σαá¡Ñ¡¿Ñ »α¿ ó맮óáσ Σπ¡¬µ¿⌐ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ
  6377. -----------------------------------------------------------------
  6378.  
  6379.      é Æπαí« æ¿ ΓαÑíπÑΓß∩, τΓ«íδ αÑú¿ßΓαδ DI ¿  SI,  ¬«Γ«αδÑ  ¿ß-
  6380. »«½∞ºπεΓß∩ ó ó¿ñÑ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ, ¡Ñ ¡áαπΦ὿ß∞ »α¿ ó맮-
  6381. óáσ Σπ¡¬µ¿⌐.  Äñ¡á¬« óá¼ ¡Ñ ¡πª¡« íÑß»«¬«¿Γ∞ß∩ « ∩ó¡«¼ ß«σαá¡Ñ¡¿¿
  6382. αÑú¿ßΓα«ó DI ¿ SI »α¿ ¿ß»«½∞º«óá¡¿¿ ¿σ ó ¬«ñÑ óßΓα«Ñ¡¡«ú« ÇßßѼí-
  6383. ½Ñαá, »«ß¬«½∞¬π «¡ ß«σαá¡∩ÑΓ ¿σ ó ¡áτá½Ñ Σπ¡¬µ¿⌐ ¿ ó«ßßΓá¡áó½¿óá-
  6384. ÑΓ ó ¬«¡µÑ (φΓ« ÑΘÑ «ñ¡« ¿º πñ«íßΓó ¿ß»«½∞º«óá¡¿∩ óßΓα«Ñ¡¡«ú« Çß-
  6385. ßѼí½Ñαá).
  6386.  
  6387.  
  6388.  
  6389.  
  6390. TASM2 #2-5/䫬              = 171 =
  6391.  
  6392.  
  6393. Å«ñáó½Ñ¡¿Ñ ó¡πΓαÑ¡¡¿σ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ
  6394. -----------------------------------------------------------------
  6395.  
  6396.      Å«ß¬«½∞¬π αÑú¿ßΓα«óδÑ »ÑαѼѡ¡δÑ σαá¡∩Γß∩ ó αÑú¿ßΓαáσ  SI  ¿
  6397. DI, φΓ«, ¬áºá½«ß∞ íδ, ¼«ªÑΓ »α¿ó«ñ¿Γ∞ ¬ ó«º¼«ª¡«¼π ¬«¡Σ½¿¬Γπ ¼Ñª-
  6398. ñπ αÑú¿ßΓα«ó묨 »ÑαѼѡ¡δ¼¿ ó ñá¡¡«¼ ¼«ñπ½Ñ ¿ óßΓα«Ñ¡¡«¼ ¬«ñÑ Çß-
  6399. ßѼí½Ñαá,  ó  ¬«Γ«α«¼ DI ¿ SI ¿ß»«½∞ºπεΓß∩ ó Γ«¼ ªÑ ¼«ñπ½Ñ. Æπαí«
  6400. æ¿ »αÑñó¿ñ¿Γ Γá¬πε »α«í½Ñ¼π: ½εí«Ñ ¿ß»«½∞º«óá¡¿Ñ αÑú¿ßΓαá DI  ¿½¿
  6401. SI  ó«  óßΓα«Ñ¡¡«¼  ¬«ñÑ »α¿óÑñÑΓ ¬ ºá»αÑΓπ ¿ß»«½∞º«óá¡¿∩ ñá¡¡«ú«
  6402. αÑú¿ßΓαá ñ½∩ σαá¡Ñ¡¿∩ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ.
  6403.  
  6404.      é Æπαí« æ¿ óÑαß¿¿ 1.0 πßΓαá¡Ñ¡¿Ñ ¬«¡Σ½¿¬ΓᠼѪñπ αÑú¿ßΓα«ó«⌐
  6405. »ÑαѼѡ¡«⌐  ¿ óßΓα«Ñ¡¡δ¼ ¬«ñ«¼ ÇßßѼí½Ñαá ¡Ñ «íÑß»Ñτ¿óáÑΓß∩. àß½¿
  6406. óδ ¿ß»«½∞ºπÑΓÑ óÑαß¿ε 1.0, Γ« ¡πª¡« ½¿í« ∩ó¡δ¼ «íαẫ¼  ß«σαá¡∩Γ∞
  6407. αÑú¿ßΓαδ  DI  ¿ SI »ÑαÑñ ¿σ ¿ß»«½∞º«ó᡿Ѽ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ Çß-
  6408. ßѼí½Ñαá, ½¿í« »ÑαÑ⌐Γ¿ ¬ í«½ÑÑ »«ºñ¡Ñ⌐ óÑαß¿¿ ¬«¼»¿½∩Γ«αá.
  6409.  
  6410.  
  6411. ìÑñ«ßΓáΓ¬¿ ¿ß»«½∞º«óá¡¿∩ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá
  6412. -----------------------------------------------------------------
  6413.  
  6414.      îδ »«ßó∩Γ¿½¿ πªÑ ñ«ó«½∞¡« ¼¡«ú« óαѼѡ¿  ¿ßß½Ññ«óá¡¿ε  Γ«ú«,
  6415. ¬á¬ αáí«ΓáÑΓ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα, ¿ ¿ºπτÑ¡¿ε »«ΓÑ¡µ¿á½∞¡δσ »αÑ¿-
  6416. ¼πΘÑßΓó Ñú«  ¿ß»«½∞º«óá¡¿∩.  ò«Γ∩  ñ½∩  ¼¡«ú¿σ  »α¿¬½áñ¡δσ  ºáñáτ
  6417. óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα »αÑñßΓáó½∩ÑΓ ß«í«⌐ »αѬαáß¡«Ñ ßαÑñßΓó« ß Φ¿-
  6418. ᫬¿¼ ß»Ñ¬Γα«¼ ó«º¼«ª¡«ßΓÑ⌐, «¡ ¿¼ÑÑΓ ΓᬪѠ¡Ñ¬«Γ«αδÑ ¡Ññ«ßΓáΓ¬¿.
  6419. äáóá⌐ΓÑ  αáßß¼«Γα¿¼ φΓ¿ ¡Ññ«ßΓáΓ¬¿, »«ß½Ñ τÑú« óδ ß¼«ªÑΓÑ ßñѽáΓ∞
  6420. óδó«ñ, ¬«úñá ó óáΦ¿σ »α«úαá¼¼áσ ß½ÑñπÑΓ  ¿ß»«½∞º«óáΓ∞  óßΓα«Ñ¡¡δ⌐
  6421. ÇßßѼí½Ñα.
  6422.  
  6423.  
  6424.  
  6425.  
  6426. TASM2 #2-5/䫬              = 172 =
  6427.  
  6428.         ô¼Ñ¡∞ΦÑ¡¿∩ ó«º¼«ª¡«ßΓÑ⌐ »ÑαÑ¡«ß¿¼«ßΓ¿ ¿ «íß½πª¿óáѼ«ßΓ¿
  6429. -----------------------------------------------------------------
  6430.  
  6431.      é«º¼«ª¡«ßΓ∞  ¡Ñ»«ßαÑñßΓóÑ¡¡«ú«  »α«úαá¼¼¿α«óá¡¿∩  »α«µÑßß«αá
  6432. 8086 - Γ« ßἫѠ¬áτÑßΓó«, ¬«Γ«α«Ñ ñѽáÑΓ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα Γá-
  6433. ¬¿¼ φΣΣÑ¬Γ¿ó¡δ¼ - π¼Ñ¡∞ΦáÑΓ  «ñ¡«óαѼѡ¡«  ó«º¼«ª¡«ßΓ¿  «ß¡«ó¡«ú«
  6434. »αÑ¿¼πΘÑßΓóá ∩ºδ¬á æ¿,  Ñú« »ÑαÑ¡«ß¿¼«ßΓ¿.  àß½¿  óδ  ¿ß»«½∞ºπÑΓÑ
  6435. ó »α«úαἼѠ¡á ∩ºδ¬Ñ æ¿ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα, Γ« óÑß∞¼á ó«º¼«ª¡«,
  6436. τΓ« óδ ¡Ñ ß¼«ªÑΓÑ íѺ ¿º¼Ñ¡Ñ¡¿⌐ »ÑαÑ¡ÑßΓ¿ óáΦπ »α«úαá¼¼π ¡á  ñαπ-
  6437. ú«⌐ »α«µÑßß«α ¿½¿ ¿ß»«½∞º«óáΓ∞ ñαπú«⌐ ¬«¼»¿½∩Γ«α ∩ºδ¬á æ¿.
  6438.  
  6439.      èα«¼Ñ Γ«ú«, ÇßßѼí½Ñα ¡Ñ ∩ó½∩ÑΓß∩ ßΓαπ¬Γπα¿α«óá¡¡δ¼ ∩ºδ¬«¼ ¿
  6440. ¡Ñ ñáÑΓ Γ«⌐ ∩ß¡«ßΓ¿ ¿ »«¡∩Γ¡«ßΓ¿ ¿ßσ«ñ¡«ú«  ¬«ñá,  ¬«Γ«απε  ¼«ªÑΓ
  6441. «íÑß»Ñτ¿Γ∞  σ«α«Φ«  Σ«α¼áΓ¿α«óá¡¡á∩ »α«úαἼᠡá ∩ºδ¬Ñ æ¿.  é αÑ-
  6442. ºπ½∞ΓáΓÑ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ó «íΘѼ ß½πτáÑ ú«αáºñ« Γαπñ¡ÑÑ
  6443. τ¿ΓáΓ∞  ¿ «íß½πª¿óáΓ∞ (á¡á½¿º¿α«óáΓ∞ ¿ ¼«ñ¿Σ¿µ¿α«óáΓ∞ »α«úαá¼¼π),
  6444. τѼ ¿ßσ«ñ¡δ⌐ ¬«ñ ¡á ∩ºδ¬Ñ æ¿.
  6445.  
  6446.      è«úñá óδ ¿ß»«½∞ºπÑΓÑ óßΓα«Ñ¡¡δ⌐ ¬«ñ  ÇßßѼí½Ñαá,  Γ«  σ«α«Φ«
  6447. óδñѽ∩Γ∞  Ñú« ó «Γñѽ∞¡δÑ ¼«ñπ½¿ ¿ á¬¬παáΓ¡« ¿ »«ñα«í¡« ¬«¼¼Ñ¡Γ¿-
  6448. α«óáΓ∞. Åα¿ φΓ«¼ »α«úαá¼¼π ßΓá¡«ó¿Γß∩  »α«ΘÑ  «íß½πª¿óáΓ∞.  èα«¼Ñ
  6449. Γ«ú«, ú«αáºñ« ½ÑúτÑ íπñÑΓ ¡á⌐Γ¿ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá ¿ »ÑαÑ-
  6450. »¿ßáΓ∞ Ñú« ¡á ∩ºδ¬Ñ æ¿,  Ñß½¿ óδ ºáσ«Γ¿ΓÑ »ÑαÑ¡ÑßΓ¿  »α«úαá¼¼π  ó
  6451. ñαπúπε ßαÑñπ.
  6452.  
  6453. ü«½ÑÑ ¼Ññ½Ñ¡¡á∩ ¬«¼»¿½∩µ¿∩
  6454. -----------------------------------------------------------------
  6455.  
  6456.      è«¼»¿½∩µ¿∩ ¼«ñπ½Ñ⌐ æ¿, ß«ñÑαªáΘ¿σ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá,
  6457. óδ»«½¡∩ÑΓß∩ ßπΘÑßΓóÑ¡¡« ¼Ññ½Ñ¡¡ÑÑ, τѼ ¬«¼»¿½∩µ¿∩ «ñ¡«ú« ¿ßσ«ñ¡«-
  6458. ú« ¬«ñá ∩ºδ¬á æ¿. ¥Γ« ó «ß¡«ó¡«¼ ßó∩ºá¡« ß  ΓѼ,  τΓ«  óßΓα«Ñ¡¡δ⌐
  6459. ¬«ñ ÇßßѼí½Ñαá ñ«½ªÑ¡ ¬«¼»¿½¿α«óáΓ∞ß∩ ñóáªñδ - ß¡áτá½á ¬«¼»¿½∩Γ«-
  6460. α«¼ Æπαí« æ¿, á ºáΓѼ Æπαí« ÇßßѼí½Ñα«¼. àß½¿ Æπαí«  æ¿  óδ¡πªñÑ¡
  6461. »«óΓ«α¡«  ¡áτ¿¡áΓ∞ ¬«¼»¿½∩µ¿ε, »«ß¬«½∞¬π ¡Ñ ¿ß»«½∞º«ó὿ß∞ ¡¿ »á-
  6462. αá¼ÑΓαδ -b ¿½¿ -s,  ¡¿ π¬áºá¡¿Ñ (ñ¿αÑ¬Γ¿óá)  #pragma  inline,  Γ«
  6463. óαѼ∩  ¬«¼»¿½∩µ¿¿ óßΓα«Ñ¡¡«ú« ¬«ñá ÇßßѼí½Ñαá ÑΘÑ í«½ÑÑ πóѽ¿τ¿Γ-
  6464. ß∩.  è ßτáßΓ∞ε, ¼Ññ½Ñ¡¡á∩ ¬«¼»¿½∩µ¿∩ ¼«ñπ½Ñ⌐, ß«ñÑαªáΘ¿σ óßΓα«Ñ¡-
  6465. ¡δ⌐  ¬«ñ  ÇßßѼí½Ñαá,  ΓÑ»Ñα∞  »αÑñßΓáó½∩ÑΓ ß«í«⌐ ú«αáºñ« ¼Ñ¡∞Φπε
  6466. »α«í½Ñ¼π,  τѼ φΓ« í佫 αá¡∞ΦÑ,  Γᬠ¬á¬ Æπαí« ÇßßѼí½Ñα αáí«ΓáÑΓ
  6467. ú«αáºñ« íδßΓαÑÑ, τѼ í«½ÑÑ αá¡¡¿Ñ óÑαß¿¿ áßßѼí½Ñα«ó.
  6468.  
  6469. 髺¼«ª¡«ßΓ∞ ¿ß»«½∞º«óá¡¿∩ Γ«½∞¬« ¬«¼»¿½∩Γ«αá Æææ
  6470. -----------------------------------------------------------------
  6471.  
  6472.      èᬠ¼δ πªÑ π»«¼¿¡á½¿ αá¡ÑÑ, ó«º¼«ª¡«ßΓ∞ ¿ß»«½∞º«óá¡¿∩ óßΓα«-
  6473.  
  6474. TASM2 #2-5/䫬              = 173 =
  6475.  
  6476. Ñ¡¡«ú«  ÇßßѼí½Ñαá  -  φΓ«  π¡¿¬á½∞¡«Ñ  ßαÑñßΓó«  ñ½∩ ¬«¼»¿½∩Γ«αá
  6477. TCC.EXE (óÑαß¿¿ ¬«¼»¿½∩Γ«αá Æπαí« æ¿ TC.EXE, αáí«ΓáεΘÑ⌐ ß  ¬«¼á¡-
  6478. ñ¡«⌐  ßΓ᫬«⌐).  è«¼»¿½∩Γ«α Æπαí« æ¿ ß ¿¡ΓÑαá¬Γ¿ó¡«⌐ ßαÑñ«⌐ »α«ú-
  6479. αá¼¼¿α«óá¡¿∩ TC.EXE óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ¡Ñ »«ññÑনóáÑΓ.
  6480.  
  6481.                          Å«ΓÑα¿ ó «»Γ¿¼¿ºáµ¿¿
  6482. -----------------------------------------------------------------
  6483.  
  6484.      Åα¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá »α«¿ßσ«ñ¿Γ  ¡Ñ¬«Γ«-
  6485. αá∩  »«ΓÑα∩ π»αáó½Ñ¡¿∩ Æπαí« æ¿ ¬«ñ«¼ »α«úαá¼¼δ, »«ß¬«½∞¬π ¡Ñ»«ß-
  6486. αÑñßΓóÑ¡¡« ó ¿ßσ«ñ¡δ⌐ ¬«ñ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿ óδ ó¬½ετáÑΓÑ  ¬«ñ
  6487. ÇßßѼí½Ñαá. é «»αÑñѽѡ¡«⌐  ßΓѻѡ¿  óδ, ¬á¬ »α«úαá¼¼¿ßΓ, αáí«Γá-
  6488. εΘ¿⌐ ¡á ÇßßѼí½ÑαÑ, ¼«ªÑΓÑ φΓ« ¬«¼»Ñ¡ß¿α«óáΓ∞, Ñß½¿ íπñÑΓÑ  ¿ºíÑ-
  6489. úáΓ∞  «»αÑñѽѡ¡δσ ¡ÑªÑ½áΓѽ∞¡δσ ñÑ⌐ßΓó¿⌐ (¡á»α¿¼Ñα, ¡Ñß«σαá¡Ñ¡¿∩
  6490. αÑú¿ßΓαá DS, ¿½¿ ºá»¿ß¿ ó ¡ÑóÑα¡πε «í½áßΓ∞ »á¼∩Γ¿).
  6491.  
  6492.      æ ñαπú«⌐ ßΓ«α«¡δ, Æπαí« æ¿ ¡Ñ ΓαÑíπÑΓ, τΓ«íδ »α¿ ¿ß»«½∞º«óá-
  6493. ¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá óδ ß«í½εñ὿ óßÑ Ñú« ó¡πΓαÑ¡¡¿Ñ »αáó¿-
  6494. ½á  (Ñß½¿ íδ φΓ« í佫 Γá¬,  Γ«  ½πτΦÑ  í佫  íδ  ¡Ñ  »«½∞º«óáΓ∞ß∩
  6495. óßΓα«Ñ¡¡δ¼ ÇßßѼí½Ñα«¼,  á »«ºó«½¿Γ∞ ßúÑ¡Ñα¿α«óáΓ∞ ¬«ñ ÇßßѼí½Ñαá
  6496. ¬«¼»¿½∩Γ«απ Æπαí« æ¿). é Σπ¡¬µ¿∩σ, ß«ñÑαªáΘ¿σ óßΓα«Ñ¡¡δÑ «»ÑαáΓ«-
  6497. αδ ÇßßѼí½Ñαá,  Æπαí« æ¿ "ó䬽ετáÑΓ" ¡Ñ¬«Γ«αδÑ ó¿ñδ  «»Γ¿¼¿ºáµ¿¿,
  6498. »«ºó«½∩∩ óá¼ ΓѼ ßá¼δ¼ «Γ¡«ß¿Γѽ∞¡« ßó«í«ñ¡« αáí«ΓáΓ∞ ß« óßΓα«Ñ¡-
  6499. ¡δ¼ ¬«ñ«¼ ÇßßѼí½Ñαá. ìá»α¿¼Ñα, »α¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« Çß-
  6500. ßѼí½Ñαá  "ó䬽ετáεΓß∩" ¡Ñ¬«Γ«αδÑ ó¿ñδ «»Γ¿¼¿ºáµ¿¿ óßΓα«Ñ¡¡δσ »Ñ-
  6501. αÑσ«ñ«ó, á Ñß½¿ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ¿ß»«½∞ºπεΓß∩ αÑú¿ßΓαδ DI ¿ SI,
  6502. Γ« ºá»αÑΘáεΓß∩ αÑú¿ßΓα«óδÑ »ÑαѼѡ¡δÑ. Äñ¡á¬« Γá¬á∩ τáßΓ¿τ¡á∩ »«-
  6503. ΓÑα∩ «»Γ¿¼¿ºáµ¿¿ ó º¡áτ¿Γѽ∞¡«⌐ ßΓѻѡ¿ ¬«¼»Ñ¡ß¿απÑΓß∩  ΓѼ,  τΓ«
  6504. τáßΓ¿ »α«úαá¼¼δ,  αÑ὿º«óá¡¡δÑ ¡á ÇßßѼí½ÑαÑ,  αáí«ΓáεΓ ß ¼á¬ß¿-
  6505. ¼á½∞¡« ó«º¼«ª¡«⌐ ß¬«α«ßΓ∞ε.
  6506.  
  6507.      àß½¿ »α¿ ¿ß»«½∞º«óá¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ñ½∩ óáß  ¿¼ÑÑΓ
  6508. í«½∞Φ«Ñ  º¡áτÑ¡¿Ñ »«½πτÑ¡¿Ñ ¡á¿í«½ÑÑ íδßΓα«ú« ¿ ¬«¼»á¬Γ¡«ú« ¬«ñá,
  6509. Γ« ñ½∩ óáß ¼«ªÑΓ «¬áºáΓ∞ß∩ ªÑ½áΓѽ∞¡δ¼ »¿ßáΓ∞ Σπ¡¬µ¿¿, ß«ñÑαªáΘ¿Ñ
  6510. óßΓα«Ñ¡¡δ⌐  ¬«ñ  ÇßßѼí½Ñαá, µÑ½¿¬«¼ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá (Γ« ÑßΓ∞
  6511. ¡Ñ ß¼ÑΦ¿óá∩ ó «ñ¡«⌐ Σπ¡¬µ¿¿ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα  ß  ∩ºδ¬«¼  æ¿).
  6512. Æá¬¿¼ «íαẫ¼, óδ »«½πτ¿ΓÑ »«½¡δ⌐ ¬«¡Γα«½∞ ¡áñ ¬«ñ«¼ Σπ¡¬µ¿¿, ¡á-
  6513. »¿ßá¡¡«⌐ µÑ½¿¬«¼ ¡á óßΓα«Ñ¡¡«¼ ÇßßѼí½ÑαÑ, Ç Æπαí« æ¿  íπñÑΓ  π»-
  6514. αáó½∩Γ∞  ¬«ñ«¼ Σπ¡¬µ¿⌐, αÑ὿º«óá¡¡δσ ¡á ∩ºδ¬Ñ æ¿. Åα¿ φΓ«¼ ¿ óδ,
  6515. ¿ Æπαí« æ¿ »«½πτáÑΓÑ »«½¡πε ßó«í«ñπ ¿ ó«º¼«ª¡«ßΓ∞  úÑ¡Ñαᵿ¿ ¡á-
  6516. ¿½πτΦÑú« ¬«ñá íѺ «úαá¡¿τÑ¡¿⌐.
  6517.  
  6518.  
  6519.  
  6520.  
  6521. TASM2 #2-5/䫬              = 174 =
  6522.  
  6523.                   Äúαá¡¿τÑ¡¿∩ »α¿ «í¡áαπªÑ¡¿¿ «Φ¿í«¬
  6524. -----------------------------------------------------------------
  6525.  
  6526.      Å«ß¬«½∞¬π Æπαí« æ¿ óδ»«½¡∩ÑΓ ó «»ÑαáΓ«αáσ óßΓα«Ñ¡¡«ú« ÇßßѼ-
  6527. í½Ñαá ß½áíπε »α«óÑα¬π ¡á «Φ¿í¬¿, «Φ¿í¬¿ ó« óßΓα«Ñ¡¡«¼ ¬«ñÑ ÇßßѼ-
  6528. í½Ñαá τáßΓ« αáß»«º¡áεΓß∩ Æπαí« ÇßßѼí½Ñα«¼, á ¡Ñ Æπαí« æ¿. æ  ß«-
  6529. ªá½Ñ¡¿ε, ¿¡«úñá «¬áºδóáÑΓß∩ ñ«ó«½∞¡« Γαπñ¡« πßΓá¡«ó¿Γ∞ ßó∩º∞ ¼Ñª-
  6530. ñπ óδñáóáÑ¼δ¼ Æπαí« ÇßßѼí½Ñα«¼ ß««íΘÑ¡¿Ñ¼ «í «Φ¿í¬Ñ  ¿  ¿ßσ«ñ¡δ¼
  6531. ¬«ñ«¼ ¡á ∩ºδ¬Ñ æ¿, »«ß¬«½∞¬π φΓ¿ ß««íΘÑ¡¿∩ «í «Φ¿í¬áσ ¿ óδó«ñ¿¼δÑ
  6532. ¡«¼Ñαá ßΓ᫬ «ß¡«óδóáεΓß∩ ¡á óδó«ñ¿¼«¼ Æπαí« æ¿ Σá⌐½Ñ ß  αáßΦ¿αÑ-
  6533. ¡¿Ñ¼ .ASM, á ¡Ñ ¡á ßἫ¼ ¿ßσ«ñ¡«¼ ¬«ñÑ ∩ºδ¬á æ¿.
  6534.  
  6535.      ìá»α¿¼Ñα, ó σ«ñÑ ¬«¼»¿½∩µ¿¿ »α«úαá¼¼δ TEST.C  (»α«úαá¼¼δ  ¡á
  6536. ∩ºδ¬Ñ  æ¿,  ß«ñÑαªáΘÑ⌐ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá) Æπαí« ÇßßѼí½Ñα
  6537. ¼«ªÑΓ óδóÑßΓ¿ ß««íΘÑ¡¿Ñ « ¡Ñ¬«ααÑ¬Γ¡«¼ αẼÑαÑ «»Ñαá¡ñá ¡á ßΓ᫬Ñ
  6538. 23.  è ß«ªá½Ñ¡¿ε,  ¡«¼Ñα 23 «Γ¡«ß¿Γß∩ ¬ ¡«¼Ñαπ «Φ¿í«τ¡«⌐ ßΓ᫬¿ ó
  6539. Σá⌐½Ñ TEST.ASM (»α«¼ÑªπΓ«τ¡«¼ Σá⌐½Ñ,  ¬«Γ«αδ⌐ ¬«¼»¿½∩Γ«α Æπαí« æ¿
  6540. úÑ¡Ñα¿απÑΓ  ñ½∩ «íαáí«Γ¬¿ Ñú« Æπαí« ÇßßѼí½Ñα«¼).  éá¼ ßἿ¼ »α¿-
  6541. ñÑΓß∩ óδ∩ß¡¿Γ∞,  ¬á¬á∩ ¿¼Ñ¡¡« ßΓ᫬á ó »α«úαἼѠ TEST.C  óδºóá½á
  6542. «Φ¿í¬π.
  6543.  
  6544.      ä½∩ φΓ«ú« ½πτΦÑ óßÑú« ß¡áτá½á ¡á⌐Γ¿ «Φ¿í«τ¡πε ßΓ᫬π ó  »α«-
  6545. ¼ÑªπΓ«τ¡«¼ Σá⌐½Ñ TEST.ASM, ¬«Γ«αδ⌐ ß«σαá¡∩ÑΓß∩ ¡á ñ¿ß¬Ñ ¬«¼»¿½∩Γ-
  6546. «α«¼ Æπαí« æ¿ ó Γ«¼ ß½πτáÑ, Ñß½¿ Æπαí« ÇßßѼí½Ñα óδñáÑΓ ß««íΘÑ¡¿∩
  6547. «í «Φ¿í¬áσ. öá⌐½ .ASM ß«ñÑαª¿Γ ß»Ñµ¿á½∞¡δÑ ¬«¼¼Ñ¡Γáα¿¿, ¿ñÑ¡Γ¿Σ¿-
  6548. µ¿απεΘ¿Ñ ßΓ᫬π ó Σá⌐½Ñ æ¿, ¿º ¬«Γ«α«⌐ úÑ¡Ñα¿απÑΓß∩  ñá¡¡δ⌐  í½«¬
  6549. «»ÑαáΓ«α«ó ÇßßѼí½Ñαá. ìá»α¿¼Ñα, ßΓ᫬¿ ¡á ÇßßѼí½ÑαÑ, ºá ¬«Γ«αδ-
  6550. ¼¿ ß½ÑñπÑΓ ¬«¼¼Ñ¡Γáα¿⌐:
  6551.  
  6552.             ; Line 15
  6553.  
  6554. (ßΓ᫬á 15), úÑ¡Ñα¿απεΓß∩ ¿º ßΓ᫬¿ 15 ¿ßσ«ñ¡«ú« Σá⌐½á æ¿.  Å«ß½Ñ
  6555. Γ«ú«, ¬á¬ óδ ¡á⌐ñÑΓÑ ó Σá⌐½Ñ .ASM ßΓ᫬π, ¬«Γ«αá∩ óδºóá½á «Φ¿í¬π,
  6556. ñ½∩ «»αÑñѽѡ¿∩ ß««ΓóÑΓßΓóπεΘÑ⌐ ßΓ᫬¿ ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ æ¿  ¼«ª¡«
  6557. ¿ß»«½∞º«óáΓ∞ π¬áºá¡¡δ⌐ ó ¡Ñ⌐ (󠬫¼¼Ñ¡Γáα¿¿) ¡«¼Ñα ßΓ᫬¿.
  6558.  
  6559.  
  6560. Äúαá¡¿τÑ¡¿∩ »α¿ «Γ½áñ¬Ñ
  6561. -----------------------------------------------------------------
  6562.  
  6563.      éÑαß¿¿ ¬«¼»¿½∩Γ«αá Æπαí« æ¿, ¡«¼Ñα ¬«Γ«αδσ ¡Ñ »αÑóδΦáÑΓ 1.5,
  6564. ¡Ñ  ¼«úπΓ  úÑ¡Ñα¿α«óáΓ∞ ¿¡Σ«α¼áµ¿ε ñ½∩ «Γ½áñ¬¿ ¡á πα«ó¡Ñ ¿ßσ«ñ¡δσ
  6565. ¬«ñ«ó (φΓá ¿¡Σ«α¼áµ¿∩ ¡Ñ«íσ«ñ¿¼á ñ½∩ Γ«ú«, τΓ«íδ »α¿  «Γ½áñ¬Ñ  óδ
  6566. ¼«ú½¿  »α«ß¼áΓα¿óáΓ∞  ¿ßσ«ñ¡δ⌐  ¬«ñ ¡á ∩ºδ¬Ñ æ¿) ñ½∩ ΓÑσ ¼«ñπ½Ñ⌐,
  6567. ¬«Γ«αδÑ ß«ñÑαªáΓ óßΓα«Ñ¡¡δ⌐  ¬«ñ  ÇßßѼí½Ñαá.  Åα¿  ¿ß»«½∞º«óá¡¿¿
  6568. óßΓα«Ñ¡¡«ú«  ÇßßѼí½Ñαá  ¬«¼»¿½∩Γ«αδ  Æπαí« æ¿ óÑαß¿¿ 1.5 ¿ í«½ÑÑ
  6569.  
  6570. TASM2 #2-5/䫬              = 175 =
  6571.  
  6572. αá¡¡¿Ñ úÑ¡Ñα¿απεΓ »α«ßΓ« ¬«ñ ÇßßѼí½Ñαá íѺ ó¬½ετÑ¡¿∩  ¿¡Σ«α¼áµ¿¿
  6573. ñ½∩  «Γ½áñ¬¿. é«º¼«ª¡«ßΓ∞ «Γ½áñ¬¿ ¡á πα«ó¡Ñ ¿ßσ«ñ¡«ú« ¬«ñá «¬áºδ-
  6574. óáÑΓß∩ πΓαáτÑ¡¡«⌐,  ¿ ó«º¼«ª¡á Γ«½∞¬« «Γ½áñ¬á (¼«ñπ½Ñ⌐ æ¿, ß«ñÑα-
  6575. ªáΘ¿σ óßΓα«Ñ¡¡δ⌐ ¬«ñ ÇßßѼí½Ñαá) ¡á πα«ó¡Ñ ÇßßѼí½Ñαá.
  6576.  
  6577.      ü«½ÑÑ »«ºñ¡¿Ñ óÑαß¿¿ Æπαí« æ¿ ¿ß»«½∞ºπεΓ »αÑ¿¼πΘÑßΓóá ß»Ñµ¿-
  6578. á½∞¡δσ ßαÑñßΓó Æπαí« ÇßßѼí½Ñαá, «íÑß»Ñτ¿óáεΘ¿σ »α¿ ¿ß»«½∞º«óá¡¿¿
  6579. Æπαí« «Γ½áñτ¿¬á «Γ½áñ¬π ¡á πα«ó¡Ñ ¿ßσ«ñ¡«ú« ¬«ñᠬᬠñ½∩ ¼«ñπ½Ñ⌐,
  6580. ß«ñÑαªáΘ¿σ óßΓα«Ñ¡¡δ󠬫ñ ÇßßѼí½Ñαá, Γᬠ¿ ñ½∩ ¼«ñπ½Ñ⌐, ¡á»¿ßá¡-
  6581. ¡δσ µÑ½¿¬«¼ ¡á ∩ºδ¬Ñ æ¿.
  6582.  
  6583.  
  6584.  
  6585.  
  6586. TASM2 #2-5/䫬              = 176 =
  6587.  
  6588.         Éáºαáí«Γ¬á ¡á æ¿ ¿ »«ß½ÑñπεΘÑÑ ¿ß»«½∞º«óá¡¿Ñ ÇßßѼí½Ñαá
  6589. -----------------------------------------------------------------
  6590.  
  6591.      é ßóÑΓÑ «»¿ßá¡¡δσ ¡á¼¿ ¡Ññ«ßΓáΓ¬«ó ¿ «úαá¡¿τÑ¡¿⌐ ¿ß»«½∞º«óá-
  6592. ¡¿∩  óßΓα«Ñ¡¡«ú«  ÇßßѼí½Ñαá ¼«ªÑΓ »«¬áºáΓ∞ß∩, τΓ« óßΓα«Ñ¡¡δ⌐ Çß-
  6593. ßѼí½Ñα ½πτΦÑ ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ó ß½πτáÑ ¬αá⌐¡Ñ⌐ ¡Ñ«íσ«ñ¿¼«ßΓ¿.
  6594. ¥Γ«  ¡Ñ Γá¬. Åα¿ αáºαáí«Γ¬Ñ »α«úαá¼¼δ óßΓα«Ñ¡¡δ⌐ ÇßßѼí½Ñα ñ« ßá-
  6595. ¼«ú« »«ß½Ññ¡Ñú« φΓá»á ¼«ªÑΓ «¬áºáΓ∞ ßπΘÑßΓóÑ¡¡πε »«¼«Θ∞.
  6596.  
  6597.      ü«½∞Φá∩ τáßΓ∞ ¡Ññ«ßΓáΓ¬«ó óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ßó«ñ¿Γß∩  ¬
  6598. «ñ¡«⌐  »α«í½Ñ¼Ñ:  ¿ß»«½∞º«óá¡¿Ñ  óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¼«ªÑΓ ßπ-
  6599. ΘÑßΓóÑ¡¡« ºá¼Ññ½¿Γ∞ µ¿¬½ αÑñá¬Γ¿α«óá¡¿∩-¬«¼»¿½∩µ¿¿-«Γ½áñ¬¿. ü«½ÑÑ
  6600. ¼Ññ½Ñ¡¡á∩  ¬«¼»¿½∩µ¿∩, ¡Ñ󫺼«ª¡«ßΓ∞ ¿ß»«½∞º«óá¡¿∩ óßΓα«Ñ¡¡«⌐ ¿¡-
  6601. ΓÑαá¬Γ¿ó¡«⌐ ßαÑñδ ¿ Γαπñ¡«ßΓ¿ ó ¡áσ«ªñÑ¡¿¿ «Φ¿í«¬ ¬«¼»¿½∩µ¿¿  «º-
  6602. ¡áτáεΓ, τΓ« αáºαáí«Γ¬á »α«úαá¼¼δ, ß«ñÑαªáΘÑ⌐ óßΓα«Ñ¡¡δÑ «»ÑαáΓ«αδ
  6603. ÇßßѼí½Ñαá, »«ΓαÑíπÑΓ, óÑα«∩Γ¡«, í«½∞ΦÑ óαѼѡ¿,  τѼ  αáºαáí«Γ¬á
  6604. »α«úαá¼¼δ,  ¡á»¿ßá¡¡«⌐ µÑ½¿¬«¼ ¡á ∩ºδ¬Ñ æ¿. Äñ¡á¬« »αáó¿½∞¡«Ñ ¿ß-
  6605. »«½∞º«óá¡¿Ñ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá ¼«ªÑΓ º¡áτ¿Γѽ∞¡« π½πτΦ¿Γ∞ ¬á-
  6606. τÑßΓó« »α«úαá¼¼δ. ùΓ« ªÑ ñѽáΓ∞?
  6607.  
  6608.      ÄΓóÑΓ »α«ßΓ. ìá »Ñαó«¼ φΓá»Ñ ¡πª¡« »¿ßáΓ∞ »α«úαá¼¼π  µÑ½¿¬«¼
  6609. ¡á ∩ºδ¬Ñ æ¿, »«½¡«ßΓ∞ε ¿ß»«½∞ºπ∩ »αÑ¿¼πΘÑßΓóá ¿¡ΓÑαá¬Γ¿ó¡«⌐ »α«ú-
  6610. αá¼¼¡«⌐ ßαÑñδ ¬«¼»¿½∩Γ«αá TC.EXE. è«úñá »α«úαá¼¼á íπñÑΓ »«½¡«ßΓ∞ε
  6611. ú«Γ«óá, «Γ½áªÑ¡á ¿ íπñÑΓ óδñáóáΓ∞ »αáó¿½∞¡δÑ αѺπ½∞ΓáΓδ, »ÑαÑ⌐ñ¿-
  6612. ΓÑ ¬ ¿ß»«½∞º«óá¡¿ε ¬«¼á¡ñ¡«ú« ¬«¼»¿½∩Γ«αá TCC.EXE ¿ ¡áτ¡¿ΓÑ  »αÑ-
  6613. «íαẫóδóáΓ∞ ¬α¿Γ¿τÑ߬¿Ñ ¬π߬¿ »α«úαá¼¼δ ó ¬«ñ óßΓα«Ñ¡¡«ú« ÇßßѼ-
  6614. í½Ñαá. Æá¬«⌐ »«ñσ«ñ »«ºó«½¿Γ óá¼ φΣΣÑ¬Γ¿ó¡« αáºαáí«ΓáΓ∞  ¿  «Γ½á-
  6615. ñ¿Γ∞  »α«úαá¼¼π, á ºáΓѼ óδñѽ¿Γ∞ ¿ π½πτΦ¿Γ∞ «Γñѽ∞¡δÑ τáßΓ¿ ¬«ñá
  6616. ¿ »ÑαÑ⌐Γ¿ ¬ Γ«¡¬«⌐ ÑÑ ñ«ó«ñ¬Ñ.
  6617.  
  6618.  
  6619.  
  6620.  
  6621. TASM2 #2-5/䫬              = 177 =
  6622.  
  6623.               é맮ó Σπ¡¬µ¿⌐ Æπαí« ÇßßѼí½Ñαá ¿º Æπαí« æ¿
  6624. -----------------------------------------------------------------
  6625.  
  6626.      ÇßßѼí½Ñα ¿ æ¿ Γαáñ¿µ¿«¡¡« ¿ß»«½∞ºπεΓß∩ ß«ó¼ÑßΓ¡«: «Γñѽ∞¡δÑ
  6627. ¼«ñπ½¿ »¿ΦπΓß∩  µÑ½¿¬«¼  ¡á ∩ºδ¬Ñ æ¿ ¿½¿ ÇßßѼí½ÑαÑ,  óδ»«½¡∩ÑΓß∩
  6628. ¬«¼»¿½∩µ¿∩ ¼«ñπ½Ñ⌐ æ¿ ¿ áßßÑ¼í½¿α«óá¡¿Ñ ¼«ñπ½Ñ⌐ ÇßßѼí½Ñαá, á ºá-
  6629. ΓѼ  ¬«¼»«¡«ó¬á φΓ¿σ «Γñѽ∞¡« ß¬«¼»¿½¿α«óá¡¡δσ ¼«ñπ½Ñ⌐ ó «ñ¿¡ óδ-
  6630. »«½¡∩Ѽδ⌐ Σá⌐½. ê¼Ñ¡¡« Γᬠ¼«ª¡« ¬«¼»«¡«óáΓ∞ ¼«ñπ½¿ Æπαí« ÇßßѼí-
  6631. ½Ñαá ¿ Æπαí« æ¿ (φëà»α«µÑßß »«¬áºá¡ ¡á É¿ß. 7.3).
  6632.  
  6633.      éδ»«½¡∩Ѽδ⌐ Σá⌐½ »«½πτáÑΓß∩ »πΓѼ "ß¼ÑΦ¿óá¡¿∩" ¿ßσ«ñ¡δσ Σá⌐-
  6634. ½«ó æ¿ ¿ ÇßßѼí½Ñαá. ¥Γ«Γ »α«µÑßß ¼«ª¡« ¡áτáΓ∞ ¬«¼á¡ñ«⌐:
  6635.  
  6636.         tcc ¿¼∩_Σá⌐½á1 ¿¼∩_Σá⌐½á.asm
  6637.  
  6638. ¬«Γ«αá∩ π¬áºδóáÑΓ Æπαí« æ¿,  τΓ« ¡πª¡« ß¡áτá½á ¬«¼»¿½¿α«óáΓ∞ Σá⌐½
  6639. ¿¼∩_Σá⌐½á_1.C ñ½∩ »«½πτÑ¡¿∩ «íΩÑ¬Γ¡«ú« Σá⌐½á ¿¼∩_Σá⌐½á_1.OBJ, ºá-
  6640. ΓѼ  óδºóáΓ∞  Æπαí«  ÇßßѼí½Ñα  ñ½∩  Γαá¡ß½∩µ¿¿  ¿ßσ«ñ¡«ú«  Σá⌐½á
  6641. ¿¼∩_Σá⌐½á_2.ASM ó Σá⌐½ ¿¼∩_Σá⌐½á_2.OBJ,  ¿, ¡á¬«¡Ñµ, óδºóáΓ∞ πΓ¿-
  6642. ½¿Γπ TLINK  ñ½∩  ¬«¼»«¡«ó¬¿  Σá⌐½«ó  ¿¼∩_Σá⌐½á_1.OBJ  ¿  ¿¼∩_Σá⌐-
  6643. ½á_2.OBJ ¿ »«½πτÑ¡¿∩ óδ»«½¡∩Ѽ«ú« Σá⌐½á ¿¼∩_Σá⌐½á_1.XE.
  6644.  
  6645.  --------------------                --------------------
  6646.  | êßσ«ñ¡δ⌐ Σá⌐½ ¡á |                | êßσ«ñ¡δ⌐ Σá⌐½ ¡á |
  6647.  | ∩ºδ¬Ñ æ¿ FILE1.C |                | ∩ºδ¬Ñ ÇßßѼí½Ñαá |
  6648.  |                  |                |     FILE2.ASM    |
  6649.  --------------------                --------------------
  6650.           |                                    |
  6651.           v                                    v
  6652.      ----------                        -----------------
  6653.     ( Æπαí« æ¿ )                      ( Æπαí« ÇßßѼí½Ñα )
  6654.      ----------                        -----------------
  6655.           |     è«¼»¿½∩µ¿∩                     | ÇßßÑ¼í½¿α«óá¡¿Ñ
  6656.           v                                    v
  6657.  --------------------                 -------------------
  6658.  |  ÄíΩÑ¬Γ¡δ⌐ Σá⌐½  |                 |  ÄíΩÑ¬Γ¡δ⌐ Σá⌐½ |
  6659.  |    FILE1.OBJ     |                 |     FILE2.OBJ   |
  6660.  --------------------                 -------------------
  6661.           |                                    |
  6662.           -----------------  -------------------
  6663.                           |  |
  6664.                           v  v
  6665.                        ----------
  6666.                       (   TLINK  )
  6667.                        ----------
  6668.                             |
  6669.  
  6670. TASM2 #2-5/䫬              = 178 =
  6671.  
  6672.                             v
  6673.                ------------------------------
  6674.                | éδ»«½¡∩Ѽδ⌐ Σá⌐½ FILE1.EXE |
  6675.                ------------------------------
  6676.  
  6677.      É¿ß. 7.3 è«¼»¿½∩µ¿∩, áßßÑ¼í½¿α«óá¡¿Ñ ¿ ¬«¼»«¡«ó¬á ß  »«¼«Θ∞ε
  6678. Æπαí« æ¿, Æπαí« ÇßßѼí½Ñαá ¿ πΓ¿½¿Γδ TLINK.
  6679.  
  6680.      Éáºñѽ∞¡á∩ ¬«¼»¿½∩µ¿∩ «¬áºδóáÑΓß∩ «τÑ¡∞ »«½Ñº¡«⌐  ñ½∩  »α«ú-
  6681. αá¼¼, ß«ñÑαªáΘ¿σ º¡áτ¿Γѽ∞¡«⌐ «íΩѼ  ¬«ñá  ÇßßѼí½Ñαá,  »«ß¬«½∞¬π
  6682. «¡á »«ºó«½∩ÑΓ »«½¡«ßΓ∞ε ¿ß»«½∞º«óáΓ∞ ó«º¼«ª¡«ßΓ¿ Æπαí« ÇßßѼí½Ñαá
  6683. ¿ »α«úαá¼¼¿α«óáΓ∞ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ó τ¿ßΓ« áßßѼí½Ñα¡«¼  «¬απ-
  6684. ªÑ¡¿¿, íѺ ¬½ετÑó«ú« ß½«óá asm, ñ«»«½¡¿Γѽ∞¡«ú« óαѼѡ¿ ¡á ¬«¼»¿-
  6685. ½∩µ¿ε ¿ «Γ¡«ß∩Θ¿σß∩ ¬ æ¿ ñ«»«½¡¿Γѽ∞¡δσ ¿ºñÑαªÑ¬ »α¿  ¿ß»«½∞º«óá-
  6686. ¡¿¿ óßΓα«Ñ¡¡«ú« ÇßßѼí½Ñαá.
  6687.  
  6688.      Äñ¡á¬« ºá αáºñѽ∞¡πε ¬«¼»¿½∩µ¿ε »α¿σ«ñ¿Γß∩ »½áΓ¿Γ∞ ß½ÑñπεΘπε
  6689. µÑ¡π: »α«úαá¼¼¿ßΓ, αáí«ΓáεΘ¿⌐ ¡á ÇßßѼí½ÑαÑ,  ñ«½ªÑ¡  ó¡¿¬áΓ∞  ó«
  6690. óßÑ ñÑΓ὿ «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá ∩ºδ¬á æ¿ ¿ ¬«ñá ÇßßѼí½Ñαá.é Γ«
  6691. óαѼ∩ ¬á¬ Æπαí« æ¿ «íαáíáΓδóáÑΓ ß»Ñµ¿Σ¿¬áµ¿ε  ßÑú¼Ñ¡Γ«ó, »ÑαÑñáτπ
  6692. »áαá¼ÑΓα«ó, ßß佬¿ ¡á »ÑαѼѡ¡δÑ æ¿, ß«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«óδσ »ÑαÑ-
  6693. ¼Ñ¡¡δσ ¿ Γ.ñ., αáºñѽ∞¡« ¬«¼»¿½¿απѼδÑ Σπ¡¬µ¿¿, ¡á»¿ßá¡¡δÑ ¡á Çß-
  6694. ßѼí½ÑαÑ, ñ«½ª¡δ óßÑ φΓ« (¿ ñáªÑ í«½ÑÑ) ñѽáΓ∞ ∩ó¡δ¼ «íαẫ¼.
  6695.  
  6696.      é« óºá¿¼«ñÑ⌐ßΓó¿¿ Æπαí« æ¿ ¿ ÇßßѼí½Ñαá ¿¼ÑÑΓß∩ ñóá «ß¡«ó¡δσ
  6697. á߻ѬΓá.  é«-»Ñαóδσ,  αẽ¿τ¡δÑ τáßΓ¿ ¬«ñá æ¿ ¿ ÇßßѼí½Ñαá ñ«½ª¡δ
  6698. »αáó¿½∞¡« ¬«¼»«¡«óáΓ∞ß∩, á Σπ¡¬µ¿¿ ¿ »ÑαѼѡ¡δÑ  ó  ¬áªñ«⌐  τáßΓ¿
  6699. ¬«ñá ñ«½ª¡δ íδΓ∞ ñ«ßΓπ»¡δ (Ñß½¿ φΓ« ¡Ñ«íσ«ñ¿¼«) ó «ßΓá½∞¡«⌐ τáßΓ¿
  6700. ¬«ñá. é«-óΓ«αδσ, ¬«ñ ÇßßѼí½Ñαá ñ«½ªÑ¡ »αáó¿½∞¡« αáí«ΓáΓ∞ ß ó맮-
  6701. óἿ Σπ¡¬µ¿⌐,  ß««ΓóÑΓßΓóπεΘ¿σ ß«ú½áΦÑ¡¿∩¼ ∩ºδ¬á æ¿, τΓ« ó¬½ετáÑΓ
  6702. ó ßÑí∩ ñ«ßΓπ» ¬ »ÑαÑñáóáÑ¼δ¼ »áαá¼ÑΓαá¼,  ó«ºóαáΓ º¡áτÑ¡¿⌐ ¿ ß«í-
  6703. ½εñÑ¡¿Ñ »αáó¿½ ß«σαá¡Ñ¡¿∩ αÑú¿ßΓα«ó,  ¬«Γ«αδσ ΓαÑíπÑΓß∩ »α¿ñÑন-
  6704. óáΓ∞ß∩ ó Σπ¡¬µ¿∩σ æ¿.
  6705.  
  6706.      äáóá⌐ΓÑ ΓÑ»Ñα∞ »α¿ßΓπ»¿¼ ¬ ¿ºπτÑ¡¿ε »αáó¿½ ¬«¼»«¡«ó¬¿  »α«ú-
  6707. αá¼¼ Æπαí« ÇßßѼí½Ñαá ¿ Æπαí« æ¿.
  6708.  
  6709.  
  6710.  
  6711.  
  6712. TASM2 #2-5/䫬              = 179 =
  6713.  
  6714.  
  6715. Äß¡«ó¡δÑ ¼«¼Ñ¡Γδ ó ¿¡ΓÑαΣÑ⌐ßÑ Æπαí« ÇßßѼí½Ñαá ¿ Æπαí« æ¿
  6716. -----------------------------------------------------------------
  6717.  
  6718.      ùΓ«íδ ß¬«¼»«¡«óáΓ∞ ó¼ÑßΓÑ ¼«ñπ½¿ Æπαí« æ¿ ¿ Æπαí«  ÇßßѼí½Ñ-
  6719. αá, ñ«½ª¡δ íδΓ∞ ß«í½εñÑ¡δ ß½ÑñπεΘ¿Ñ Γα¿ »π¡¬Γá:
  6720.  
  6721.      1.  é ¼«ñπ½∩σ Æπαí« ÇßßѼí½Ñαá ñ«½ª¡á  ¿ß»«½∞º«óáΓ∞ß∩  ßσѼá
  6722.          ¡á¿¼Ñ¡«óá¡¿∩ ßÑú¼Ñ¡Γ«ó, ß«ó¼ÑßΓ¿¼á∩ ß Æπαí« æ¿.
  6723.  
  6724.      2.  Æπαí« æ¿ ¿ Æπαí« ÇßßѼí½Ñα ñ«½ª¡δ ß«ó¼ÑßΓ¡« ¿ß»«½∞º«óáΓ∞
  6725.          ß««ΓóÑΓßΓóπεΘ¿Ñ Σπ¡¬µ¿¿ ¿ ¿¼Ñ¡á »ÑαѼѡ¡δσ ó Σ«α¼Ñ, »α¿-
  6726.          Ñ¼½Ñ¼«⌐ ñ½∩ Æπαí« æ¿.
  6727.  
  6728.      3.  ä½∩ ¬«¼í¿¡¿α«óá¡¿∩ ¼«ñπ½Ñ⌐ ó óδ»«½¡∩Ѽπε »α«úαá¼¼π ¡πª¡«
  6729.          ¿ß»«½∞º«óáΓ∞ πΓ¿½¿Γπ-¬«¼»«¡«óΘ¿¬ TLINK.
  6730.  
  6731.      çñÑß∞ ¡¿τÑú« ¡Ñ ú«ó«α¿Γ∞ß∩ « Γ«¼, τΓ« ó ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ ñÑ-
  6732. ½áεΓ  ¼«ñπ½¿  Æπαí«  ÇßßѼí½Ñαá. Å«¬á ¼δ ¬«ß¡Ñ¼ß∩ Γ«½∞¬« «ß¡«ó¡δσ
  6733. ¼«¼Ñ¡Γ«ó, «íÑß»Ñτ¿óáεΘ¿σ  αáºαáí«Γ¬π  Σπ¡¬µ¿⌐  Æπαí«  ÇßßѼí½Ñαá,
  6734. ß«ó¼ÑßΓ¿¼δσ ß æ¿.
  6735.  
  6736.  
  6737.  
  6738.  
  6739. TASM2 #2-5/䫬              = 180 =
  6740.  
  6741.  
  6742. î«ñѽ¿ »á¼∩Γ¿ ¿ ßÑú¼Ñ¡Γδ
  6743. -----------------------------------------------------------------
  6744.  
  6745.      ùΓ«íδ ñá¡¡á∩ Σπ¡¬µ¿∩ ÇßßѼí½Ñαá ¼«ú½á  ¼«ú½á  óδºδóáΓ∞ß∩  ¿º
  6746. æ¿,  «¡á ñ«½ª¡á ¿ß»«½∞º«óáΓ∞ Γπ ªÑ ¼«ñѽ∞ »á¼∩Γ¿, τΓ« ¿ »α«úαá¼¼á
  6747. ¡á ∩ºδ¬Ñ æ¿, á ΓᬪѠ߫ó¼ÑßΓ¿¼δ⌐ ß æ¿ ßÑú¼Ñ¡Γ  ¬«ñá.  Ç¡á½«ú¿τ¡«,
  6748. τΓ«íδ  ñá¡¡δÑ,  «»αÑñѽѡ¡δѠ󠼫ñπ½Ñ ÇßßѼí½Ñαá, í뫨 ñ«ßΓπ»¡δ ó
  6749. »α«úαἼѠ¡á ∩ºδ¬Ñ æ¿ (¿½¿ ñá¡¡δÑ æ¿ í뫨  ñ«ßΓπ»¡δ  ó  »α«úαá¼¼Ñ
  6750. ÇßßѼí½Ñαá), ó  »α«úαἼѠ¡á ÇßßѼí½ÑαÑ ñ«½ª¡δ ß«í½εñáΓ∞ß∩ ß«ú½á-
  6751. ΦÑ¡¿∩ ∩ºδ¬á æ¿ »« ¡á¿¼Ñ¡«óá¡¿ε ßÑú¼Ñ¡Γá ñá¡¡δσ.
  6752.  
  6753.      î«ñѽ¿ »á¼∩Γ¿ ¿ «íαáí«Γ¬π ßÑú¼Ñ¡Γ«ó ¡á ÇßßѼí½ÑαÑ ¼«ªÑΓ «¬á-
  6754. ºáΓ∞ß∩  αÑ὿º«óáΓ∞  ñ«ó«½∞¡«  ß½«ª¡«. è ßτáßΓ∞ε, Æπαí« ÇßßѼí½Ñα
  6755. ßá¼ óδ»«½¡∩ÑΓ »«τΓ¿ óßε αáí«Γπ »«  αÑ὿ºáµ¿¿  ¼«ñѽÑ⌐  »á¼∩Γ¿  ¿
  6756. ßÑú¼Ñ¡Γ«ó,  ß«ó¼ÑßΓ¿¼δσ  ß Æπαí« æ¿, »α¿ ¿ß»«½∞º«óá¡¿¿ π»α«ΘÑ¡¡δσ
  6757. ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó (ß¼. αáºñѽ "æΓá¡ñáαΓ¡δÑ ñ¿αÑ¬Γ¿óδ
  6758. «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó" ó â½áóÑ 5, úñÑ ñáÑΓß∩ óóÑñÑ¡¿Ñ ó  π»α«ΘÑ¡-
  6759. ¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó).
  6760.  
  6761.          ô»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ¿ Æπαí« æ¿
  6762. -----------------------------------------------------------------
  6763.  
  6764.      ä¿αÑ¬Γ¿óá DOSSEG π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ¡πª¡«  π»«-
  6765. α∩ñ«τ¿óáΓ∞ ßÑú¼Ñ¡Γδ ó ß««ΓóÑΓßΓó¿¿ ß ß«ú½áΦÑ¡¿∩¼¿ »« π»«α∩ñ«τ¿óá-
  6766. ¡¿ε ßÑú¼Ñ¡Γ«ó Σ¿α¼δ Intel. ÆÑ ªÑ ß«ú½áΦÑ¡¿∩ ß«í½εñáεΓß∩  ó  Æπαí«
  6767. æ¿  (¿  ó« ¼¡«ú¿σ ñαπú¿σ ¿ºóÑßΓ¡δσ »α«ñπ¬Γáσ, ó¬½ετá∩ ∩ºδ¬¿ Σ¿α¼δ
  6768. Microsoft).
  6769.  
  6770.      ä¿αÑ¬Γ¿óá .MODEL π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ,  τΓ«  ßÑú¼Ñ¡Γδ,
  6771. ß«ºñáóáѼδÑ  ß »«¼«Θ∞ε π»α«ΘÑ¡¡δσ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó,
  6772. ñ«½ª¡δ íδΓ∞ ß«ó¼ÑßΓ¿¼δ ß óδíαá¡¡«⌐  ¼«ñѽ∞ε  »á¼∩Γ¿  (ßóÑασ¼á½«⌐,
  6773. ¼á½«⌐, ¬«¼»á¬Γ¡«⌐, ßαÑñ¡Ñ⌐, í«½∞Φ«⌐ ¿½¿ ßóÑασí«½∞Φ«⌐) ¿ π»αáó½∩ÑΓ
  6774. ¡áº¡áτáÑ¼δ¼ »« π¼«½τá¡¿ε Γ¿»«¼ (FAR ¿½¿ NEAR) »α«µÑñπα, ß«ºñáóáÑ-
  6775. ¼δσ  »« ñ¿αÑ¬Γ¿óÑ PROC. î«ñѽ¿ »á¼∩Γ¿, «»αÑñѽѡ¡δÑ ß »«¼«Θ∞ε ñ¿-
  6776. αÑ¬Γ¿óδ .MODEL, ß«ó¼ÑßΓ¿¼δ ß ¼«ñѽ∩¼¿ Æπαí« æ¿ ß ß««ΓóÑΓßΓóπεΘ¿¼¿
  6777. ¿¼Ñ¡á¼¿.
  6778.  
  6779.      ìᬫ¡Ñµ, π»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩  ßÑú¼Ñ¡Γ«ó  .DATA,
  6780. .CODE,  .DATA?, .FARDATA, .FARDATA? ¿ .CONST úÑ¡Ñα¿απεΓ ßÑú¼Ñ¡Γδ,
  6781. ß«ó¼ÑßΓ¿¼δÑ ß Æπαí« æ¿.
  6782.  
  6783.      ìá»α¿¼Ñα, αáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐  ¼«ñπ½∞  Æπαí«  ÇßßѼí½Ñαá  ß
  6784. ¿¼Ñ¡Ñ¼ DOTOTAL.ASM:
  6785.  
  6786.         DOSSEG               ; óδíαáΓ∞ π»«α∩ñ«τ¿óá¡¿Ñ ßÑú¼Ñ¡Γ«ó,
  6787.  
  6788. TASM2 #2-5/䫬              = 181 =
  6789.  
  6790.                              ; »α¿¡∩Γ«Ñ Σ¿α¼«⌐ Intel
  6791.         .MODEL   SMALL       ; óδíαáΓ∞ ¼á½πε ¼«ñѽ∞ »á¼∩Γ¿
  6792.                              ; (í½¿ª¡¿⌐ ¬«ñ ¿ ñá¡¡δÑ)
  6793.         .DATA                ; ¿¡¿µ¿á½¿ºáµ¿∩ ßÑú¼Ñ¡Γá ñá¡¡δσ,
  6794.                              ; ß«ó¼ÑßΓ¿¼«ú« ß Æπαí« æ¿
  6795.         EXTRN   _Repetitions:WORD ; ó¡ÑΦ¡¿⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α
  6796.         PUBLIC  _StartingValue ; ñ«ßΓπ»Ñ¡ ñ½∩ ñαπú¿σ ¼«ñπ½Ñ⌐
  6797. _StartValue     DW   0
  6798.         .DATA?               ; ¿¡¿µ¿á½¿º¿α«óá¡¡δ⌐ ßÑú¼Ñ¡Γ
  6799.                              ; ñá¡¡δσ, ß«ó¼ÑßΓ¿¼δ⌐ ß Æπαí« æ¿
  6800. RunningTotal    DW   ?
  6801.         .CODE                ; ßÑú¼Ñ¡Γ ¬«ñá, ß«ó¼ÑßΓ¿¼δ⌐ ß
  6802.                              ; Æπαí« æ¿
  6803.         PUBLIC  _DoTotal
  6804. _DoTotal        PROC         ; Σπ¡¬µ¿∩ (ó ¼á½«⌐ ¼«ñѽ¿ »á¼∩Γ¿
  6805.                              ; óδºδóáÑΓß∩ ß »«¼«Θ∞ε ó맮óá
  6806.                              ; í½¿ª¡Ñú« Γ¿»á)
  6807.         mov     cx,[_Repetitions] ; ßτÑΓτ¿¬ óδ»«½¡Ñ¡¿∩
  6808.         mov     ax,[_StartValue]
  6809.         mov     [RunningTotal],ax ; ºáñáΓ∞ ¡áτá½∞¡«Ñ
  6810.                              ; º¡áτÑ¡¿Ñ
  6811. TotalLoop:
  6812.         inc     [RunningTotal] ; RunningTotal++
  6813.         loop    TotalLoop
  6814.         mov     ax,[RunningTotal] ; ó«ºóαáΓ¿Γ∞ ¬«¡Ñτ¡«Ñ
  6815.                              ; º¡áτÑ¡¿Ñ (αѺπ½∞ΓáΓ)
  6816.         ret
  6817. _DoTotal        ENDP
  6818.         END
  6819.  
  6820.      (ÅÑαÑñ ¼¡«ú¿¼¿ ¼ÑΓ¬á¼¿ ó »α«µÑñπαÑ DoTotal π¬áºδóáÑΓß∩  ß¿¼-
  6821. ó«½  »«ñτÑનóá¡¿∩  (_), Γᬠ¬á¬ φΓ« «íδτ¡« ΓαÑíπÑΓß∩ ó Æπαí« æ¿.
  6822. ü«½ÑÑ »«ñα«í¡« φΓ« «»¿ßδóáÑΓß∩ ñá½ÑÑ ó αáºñѽѠ"Å«ñτÑનóá¡¿∩".)
  6823.  
  6824.      ìỿßá¡¡á∩ ¡á ÇßßѼí½ÑαÑ »α«µÑñπαá _DoTotal »α¿  ¿ß»«½∞º«óá-
  6825. ¡¿¿  ¼á½«⌐  ¼«ñѽ¿  »á¼∩Γ¿ ¼«ªÑΓ óδºδóáΓ∞ß∩ ¿º Æπαí« æ¿ ß »«¼«Θ∞ε
  6826. «»ÑαáΓ«αá:
  6827.  
  6828.         DoTotal();
  6829.  
  6830.      çá¼ÑΓ¿¼, τΓ« ó »α«µÑñπαÑ DoTotal »αÑñ»«½áúáÑΓß∩, τΓ«  úñÑ-Γ«
  6831. ó   ñαπú«⌐   τáßΓ¿   »α«úαá¼¼δ   «»αÑñѽѡᠠ ó¡ÑΦ¡∩∩  »ÑαѼѡ¡á∩
  6832. Repetitions. Ç¡á½«ú¿τ¡«,  »ÑαѼѡ¡á∩ StartingValue «íΩ∩ó½Ñ¡á, ¬á¬
  6833. «íΘÑñ«ßΓπ»¡á∩,  »«φΓ«¼π  «¡á  ñ«ßΓπ»¡á ó ñαπú¿σ τáßΓ∩σ »α«úαá¼¼δ.
  6834. æ½ÑñπεΘ¿⌐ ¼«ñπ½∞ Æπαí« æ¿ (¬«Γ«αδ⌐ ¡áºδóáÑΓß∩ SHOWTOT.C)  «íαáΘá-
  6835. ÑΓß∩ ¬ ñá¡¡δ¼ ó DOTOTAL.ASM ¿ «íÑß»Ñτ¿óáÑΓ ñ½∩ ¼«ñπ½∩ DOTOTAL.ASM
  6836.  
  6837. TASM2 #2-5/䫬              = 182 =
  6838.  
  6839. ó¡ÑΦ¡¿Ñ ñá¡¡δÑ:
  6840.  
  6841.   extern  int StartingValue;
  6842.   extern  int DoTotal(word);
  6843.   int  Repetitions;
  6844.   main()
  6845.   {
  6846.      int i;
  6847.      Repetitions = 10;
  6848.      StartingValue = 2;
  6849.      print("%d\n", DoTotal());
  6850. }
  6851.  
  6852.      ùΓ«íδ ß«ºñáΓ∞ ¿º ¼«ñπ½Ñ⌐ DOTOTAL.ASM ¿ SHOWTOT.C óδ»«½¡∩Ѽπε
  6853. »α«úαá¼¼π SHOWTOT.EXE, óóÑñ¿ΓÑ ¬«¼á¡ñπ:
  6854.  
  6855.         tcc showtot dototal.asm
  6856.  
  6857.      àß½¿ íδ óδ ºáσ«Γѽ¿ ß¬«¼»«¡«óáΓ∞ »α«µÑñπαπ _DoTotal ß  »α«ú-
  6858. αá¼¼«⌐ ¡á  ∩ºδ¬Ñ  æ¿,  ¿ß»«½∞ºπεΘÑ⌐ ¬«¼»á¬Γ¡πε ¼«ñѽ∞ »á¼∩Γ¿,  Γ«
  6859. »α¿Φ½«ß∞ íδ »α«ßΓ« ºá¼Ñ¡¿Γ∞ ñ¿αÑ¬Γ¿óπ .MODEL ¡á .MODEL COMPACT, á
  6860. Ñß½¿  íδ  óá¼  »«ΓαÑí«óὫß∞  ¿ß»«½∞º«óáΓ∞  ó DOTATOL.ASM ßÑú¼Ñ¡Γ
  6861. ñá½∞¡Ñú« Γ¿»á,  Γ« ¼«ª¡« í佫 íδ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ .FARDATA.
  6862.  
  6863.      è«α«τÑ ú«ó«α∩, »α¿ ¿ß»«½∞º«óá¡¿¿ π»α«ΘÑ¡¡δσ ñ¿αÑ¬Γ¿ó «»αÑñÑ-
  6864. ½Ñ¡¿∩  ßÑú¼Ñ¡Γ«ó úÑ¡Ñαᵿ∩ ¬«ααÑ¬Γ¡«ú«  π»«α∩ñ«τ¿óá¡¿∩ ßÑú¼Ñ¡Γ«ó,
  6865. ¼«ñѽÑ⌐ »á¼∩Γ¿ ¿ ¿¼Ñ¡ ßÑú¼Ñ¡Γ«ó Γαπñá ¡Ñ ß«ßΓáó½∩ÑΓ.
  6866.  
  6867.  
  6868.  
  6869.  
  6870. TASM2 #2-5/䫬              = 183 =
  6871.  
  6872.            æΓáαδÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ¿ Æπαí« æ¿
  6873. -----------------------------------------------------------------
  6874.  
  6875.      è«ß¡Ñ¼ß∩ ΓÑ»Ñα∞ »α«í½Ñ¼δ «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá Æπαí« ÇßßѼ-
  6876. í½Ñαá ß ¬«ñ«¼ ∩ºδ¬á æ¿,  úñÑ ¿ß»«½∞ºπεΓß∩  ñ¿αÑ¬Γ¿óδ  «»αÑñѽѡ¿∩
  6877. ßÑú¼Ñ¡Γ«ó ßΓáα«ú« Γ¿»á (ßΓá¡ñáαΓ¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡-
  6878. Γ«ó). ìá»α¿¼Ñα,  Ñß½¿ óδ ºá¼Ñ¡¿ΓѠ󠼫ñπ½Ñ DOTOTAL.ASM π»α«ΘÑ¡¡δÑ
  6879. ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ñ¿αÑ¬Γ¿óἿ ßΓáα«ú« Γ¿»á,  Γ« »«-
  6880. ½πτ¿ΓÑ:
  6881.  
  6882. DGROUP  group    _DATA,_BSS
  6883. _DATA   segment  word public 'DATA'
  6884.         EXTRN   _Repetitions:WORD ; ó¡ÑΦ¡¿⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α
  6885.         PUBLIC  _StartingValue ; ñ«ßΓπ»Ñ¡ ñ½∩ ñαπú¿σ ¼«ñπ½Ñ⌐
  6886. _StartValue     DW   0
  6887. _DATA   ends
  6888. _BSS    segment word public 'BSS'
  6889. RunningTotal    DW   ?
  6890. _BSS    ends
  6891. _TEXT   segment byte public 'CODE'
  6892.         assume  cs:_TEXT.ds:DGROUP,ss:DGROUP
  6893.         PUBLIC  _DoTotal
  6894. _DoTotal        PROC         ; Σπ¡¬µ¿∩ (ó ¼á½«⌐ ¼«ñѽ¿ »á¼∩Γ¿
  6895.                              ; óδºδóáÑΓß∩ ß »«¼«Θ∞ε ó맮óá
  6896.                              ; í½¿ª¡Ñú« Γ¿»á)
  6897.         mov     cx,[_Repetitions] ; ßτÑΓτ¿¬ óδ»«½¡Ñ¡¿∩
  6898.         mov     ax,[_StartValue]
  6899.         mov     [RunningTotal],ax ; ºáñáΓ∞ ¡áτá½∞¡«Ñ
  6900.                              ; º¡áτÑ¡¿Ñ
  6901. TotalLoop:
  6902.         inc     [RunningTotal] ; RunningTotal++
  6903.         loop    TotalLoop
  6904.         mov     ax,[RunningTotal] ; ó«ºóαáΓ¿Γ∞ ¬«¡Ñτ¡«Ñ
  6905.                              ; º¡áτÑ¡¿Ñ (αѺπ½∞ΓáΓ)
  6906.         ret
  6907. _DoTotal        ENDP
  6908. _TEXT   ENDS
  6909.         END
  6910.  
  6911.      äá¡¡á∩ óÑαß¿∩ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ßΓáα«ú« Γ¿»á ¡Ñ
  6912. Γ«½∞¬« ñ½¿¡¡ÑÑ, Γ« ΓᬪѠ¿ σπªÑ τ¿ΓáÑΓß∩. è Γ«¼π ªÑ »α¿ ¿ß»«½∞º«-
  6913. óá¡¿¿ ó »α«úαἼѠ¡á ∩ºδ¬Ñ æ¿ αẽ¿τ¡δσ ¼«ñѽÑ⌐ »á¼∩Γ¿ ÑÑ Γαπñ¡ÑÑ
  6914. ¿º¼Ñ¡∩Γ∞.  Åα¿ «αúá¡¿ºáµ¿¿ ¿¡ΓÑαΣÑ⌐ßá ß Æπαí« æ¿ ó  «íΘѼ  ß½πτáÑ
  6915. ó ¿ß»«½∞º«óá¡¿¿ ßΓáαδσ ñ¿αÑ¬Γ¿ó «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó ¡ÑΓ ¡¿¬á¬¿σ
  6916. »αÑ¿¼πΘÑßΓó.  àß½¿ ªÑ óδ ΓѼ ¡Ñ ¼Ñ¡ÑÑ ºáσ«Γ¿ΓÑ  ¿ß»«½∞º«óáΓ∞  »α¿
  6917. «αúá¡¿ºáµ¿¿  ¿¡ΓÑαΣÑ⌐ßá  ß  Æπαí« æ¿ ßΓáαδÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩
  6918.  
  6919. TASM2 #2-5/䫬              = 184 =
  6920.  
  6921. ßÑú¼Ñ¡Γ«ó, óá¼ »α¿ñÑΓß∩ ¿ñÑ¡Γ¿Σ¿µ¿α«óáΓ∞ ¬«ααÑ¬Γ¡δÑ ßÑú¼Ñ¡Γδ, ß«-
  6922. «ΓóÑΓßΓóπεΘ¿Ñ ¿ß»«½∞ºπÑ¼δ¼ ó ¬«ñÑ ¡á ∩ºδ¬Ñ æ¿ ¼«ñѽ∩¼ »á¼∩Γ¿. Äí-
  6923. º«α ¿ß»«½∞º«óá¡¿∩ ßÑú¼Ñ¡Γ«ó ó Æπαí« æ¿ ß«ñÑনΓß∩  ó "Éπ¬«ó«ñßΓóÑ
  6924. »«½∞º«óáΓѽ∩ »« Æπαí« æ¿".
  6925.  
  6926.      Åα«ßΓÑ⌐Φ¿⌐ ß»«ß«í «»αÑñѽѡ¿∩ ¡Ñ«íσ«ñ¿¼δσ ñ½∩  ¬«¼»«¡«ó¬¿  ß
  6927. ñá¡¡«⌐  »α«úαá¼¼«⌐  ¡á  Æπαí«  æ¿ ñ¿αÑ¬Γ¿ó ßΓáα«ú« Γ¿»á ß«ßΓ«¿Γ ó
  6928. Γ«¼, τΓ«íδ ß¬«¼»¿½¿α«óáΓ∞ «ß¡«ó¡«⌐ ¼«ñπ½∞ »α«úαá¼¼δ ¡á Æπαí« æ¿ ß
  6929. ¡πª¡«⌐ ¼«ñѽ∞ε »á¼∩Γ¿ ¿ »áαá¼ÑΓα«¼ -S. Åα¿ φΓ«¼ Æπαí« æ¿ ßúÑ¡Ñα¿-
  6930. απÑΓ óÑαß¿ε ¿ßσ«ñ¡«ú« ¬«ñá æ¿ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá. é φΓ«¼ ¬«ñÑ óδ
  6931. ¡á⌐ñÑΓÑ  ßΓáαδÑ ñ¿αÑ¬Γ¿óδ, ¿ß»«½∞ºπѼδÑ Æπαí« æ¿. ÄßΓáÑΓß∩ »α«ßΓ«
  6932. ߬«»¿α«óáΓ∞ ¿σ ó óáΦ ¬«ñ ¡á ÇßßѼí½ÑαÑ. ìá»α¿¼Ñα, Ñß½¿ óδ óóÑñÑΓÑ
  6933. ¬«¼á¡ñπ:
  6934.  
  6935.         tcc -s showtot.c
  6936.  
  6937. Γ« úÑ¡Ñα¿απÑΓß∩ Σá⌐½ SHOWTOT.ASM, ß«ñÑαªáΘ¿⌐:
  6938.  
  6939.         ifndef   ??version
  6940. ?debug  macro
  6941.         endm
  6942.         endif
  6943.         name     showtot
  6944. _TEXT   segment byte public 'CODE'
  6945. DGROUP  group   _DATA,_BSS
  6946.         assume   cs:_TEXT.ds:DGROUP,ss:DGROUP
  6947. _TEXT   ends
  6948. _DATA   segment word public 'DATA'
  6949. _d@     label   byte
  6950. _d@w    label   word
  6951. _DATA   ends
  6952. _BSS    segment word public 'BSS'
  6953. _b@     label   byte
  6954. _b@w    label   word
  6955.         ?debug  C E91481D5100973688F77746F742E63
  6956. _BSS    ends
  6957. _TEXT   segment byte public 'CODE'
  6958. ;       ?debug  L 3
  6959. _main   proc near
  6960. ;       ?debug  L 6
  6961.         mov     word ptr DGROUP:_Repetitions,10
  6962. ;       ?debug  L 7
  6963.         mov     word ptr DGROUP:_StartingValue,2
  6964. ;       ?debug  L 8
  6965.         call    near ptr _DoTotal
  6966.         push    ax
  6967.  
  6968. TASM2 #2-5/䫬              = 185 =
  6969.  
  6970.         mov     ax,offset DGROUP:_s@
  6971.         push    ax
  6972.         call    near ptr _printf
  6973.         pop     cx
  6974.         pop     cx
  6975. @1:
  6976. ;       debug   L 9
  6977.         ret
  6978. _main   endp
  6979. _TEXT   ends
  6980. _BSS    segment word public 'BSS'
  6981. _Repetitions    label word
  6982.         db      2 dup (?)
  6983.         ?debug  C E9
  6984. _BSS    ends
  6985. _DATA   segment word public 'DATA'
  6986. _s@     label   byte
  6987.         db      37
  6988.         db      100
  6989.         db      10
  6990.         db      0
  6991. _DATA   ends
  6992.         extrn   _StartingValue:word
  6993. _TEXT   segment byte public 'CODE'
  6994.         extrn   _DoTotal:near
  6995.         extrn   _printf:near
  6996. _TEXT   ends
  6997.         public  _Repetitions
  6998.         public  _main
  6999.         end
  7000.  
  7001.      ä¿αÑ¬Γ¿óδ  «»αÑñѽѡ¿∩  ßÑú¼Ñ¡Γ«ó _DATA  (¿¡¿µ¿á½¿º¿α«óá¡¡δ⌐
  7002. ßÑú¼Ñ¡Γ  ñá¡¡δσ), _TEXT (ßÑú¼Ñ¡Γ ¬«ñá) ¿ _BSS (¡Ñ¿¡¿µ¿á½¿º¿α«óá¡-
  7003. ¡δ⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ), á ΓᬪѠñ¿αÑ¬Γ¿óδ GROUP ¿ ASSUME ¿¼ÑεΓ ú«Γ«-
  7004. óδ⌐  ñ½∩  áßßÑ¼í½¿α«óá¡¿∩  ó¿ñ, »«φΓ«¼π óδ ¼«ªÑΓÑ ¿σ ¿ß»«½∞º«óáΓ∞
  7005. (Γá¬, ¬á¬ «¡¿ π¬áºδóáεΓß∩).
  7006.  
  7007.  
  7008.  
  7009.  
  7010. TASM2 #2-5/䫬              = 186 =
  7011.  
  7012.       ç¡áτÑ¡¿∩ »« π¼«½τá¡¿ε: ¬«úñá ¡Ñ«íσ«ñ¿¼« ºáúαπªáΓ∞ ßÑú¼Ñ¡Γδ?
  7013. -----------------------------------------------------------------
  7014.  
  7015.      é ¡Ñ¬«Γ«αδσ ß½πτá∩σ óδºδóáѼδÑ ¿º ∩ºδ¬á æ¿ Σπ¡¬µ¿¿ ÇßßѼí½Ñ-
  7016. αá ¼«úπΓ ¿ß»«½∞º«óáΓ∞ (ºáúαπªáΓ∞) ñ½∩ «íαáΘÑ¡¿∩ ¬ ñá¡¡δ¼ αÑú¿ßΓαδ
  7017. DS ¿/¿½¿ ES. Å«½Ñº¡« º¡áΓ∞ ß««Γ¡«ΦÑ¡¿Ñ ¼Ñªñπ  º¡áτÑ¡¿∩¼¿  ßÑú¼Ñ¡-
  7018. Γ¡δσ  αÑú¿ßΓα«ó  »α¿ ó맮óÑ ¿º Æπαí« æ¿, Γᬠ¬á¬ ¿¡«úñá ÇßßѼí½Ñα
  7019. ¿ß»«½∞ºπÑΓ »αÑ¿¼πΘÑßΓóá φ¬ó¿óá½Ñ¡Γ¡«ßΓ¿ ñóπσ  ßÑú¼Ñ¡Γ¡δσ  αÑú¿ßΓ-
  7020. α«ó.  äáóá⌐ΓÑ  αáßß¼«Γα¿¼ º¡áτÑ¡¿∩ ßÑú¼Ñ¡Γ¡δσ αÑú¿ßΓα«ó ó Γ«Γ ¼«-
  7021. ¼Ñ¡Γ, ¬«úñá Σπ¡¬µ¿∩ ÇßßѼí½Ñαá óδºδóáÑΓß∩ ¿º Æπαí«  æ¿,  á  ΓᬪÑ
  7022. ß««Γ¡«ΦÑ¡¿∩ ¼Ñªñπ ßÑú¼Ñ¡Γ¡δ¼¿ αÑú¿ßΓαἿ, ¿ ß½πτá¿, ¬«úñá ó Σπ¡¬-
  7023. µ¿¿ ÇßßѼí½Ñαá ΓαÑíπÑΓß∩ ºáúαπªáΓ∞ «ñ¿¡ ¿½¿ í«½ÑÑ ßÑú¼Ñ¡Γ¡δσ  αÑ-
  7024. ú¿ßΓα«ó.
  7025.  
  7026.      Åα¿ óσ«ñÑ ó Σπ¡¬µ¿ε ÇßßѼí½Ñαá ¿º Æπαí« æ¿ αÑú¿ßΓαδ CS ¿  DS
  7027. ¿¼ÑεΓ  ß½ÑñπεΘ¿Ñ º¡áτÑ¡¿∩, ¬«Γ«αδÑ ºáó¿ß∩Γ «Γ ¿ß»«½∞ºπѼ«⌐ ¼«ñѽ¿
  7028. »á¼∩Γ¿ (αÑú¿ßΓα SS óßÑúñá ¿ß»«½∞ºπÑΓß∩ ñ½∩ ßÑú¼Ñ¡Γá ßΓѬá,  á  ES
  7029. óßÑúñá ¿ß»«½∞ºπÑΓß∩, ¬á¬ ¡áτá½∞¡δ⌐ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα):
  7030.  
  7031.  
  7032.    ç¡áτÑ¡¿∩ αÑú¿ßΓα«ó »α¿ óσ«ñÑ ó ÇßßѼí½Ñα ¿º Æπαí« æ¿
  7033.                                                  Æáí½¿µá 7.1
  7034.  -----------------------------------------------------------
  7035.   î«ñѽ∞            CS                          DS
  7036.  -----------------------------------------------------------
  7037.  æóÑασ¼á½á∩         _TEXT                    DGROUP
  7038.  îá½á∩              _TEXT                    DGROUP
  7039.  è«¼»á¬Γ¡á∩         _TEXT                    DGROUP
  7040.  æαÑñ¡∩∩         ¿¼∩_Σá⌐½á_TEXT              DGROUP
  7041.  ü«½∞Φá∩         ¿¼∩_Σá⌐½á_TEXT              DGROUP
  7042.  æóÑασí«½∞Φá∩    ¿¼∩_Σá⌐½á_TEXT   ¿¼∩_óδºδóáεΘÑú«_Σá⌐½á_DATA
  7043.  -----------------------------------------------------------
  7044.  
  7045.      çñÑß∞  "¿¼∩_Σá⌐½á"  -  φΓ«  ¿¼∩  ¼«ñπ½∩  ¡á  ÇßßѼí½ÑαÑ,   á
  7046. "¿¼∩_óδºδóáεΘÑú«_Σá⌐½á" -  φΓ«  ¿¼∩ ¼«ñπ½∩ Æπαí« æ¿,  óδºδóáεΘÑú«
  7047. ¼«ñπ½∞ ¡á ÇßßѼí½ÑαÑ.
  7048.  
  7049.      é ¬«¼»á¬Γ¡«⌐ ¼«ñѽ¿ »á¼∩Γ¿ _TEXT ¿ DGROUP ß«ó»áñáεΓ, »«φΓ«¼π
  7050. »α¿ óσ«ñÑ  ó Σπ¡¬µ¿ε ß«ñÑন¼«Ñ αÑú¿ßΓαá CS αáó¡« ß«ñÑন¼«¼π DS.
  7051. Åα¿ ¿ß»«½∞º«óá¡¿¿ ßóÑασ¼á½«⌐,  ¼á½«⌐ ¿ ¬«¼»á¬Γ¡«⌐  ¼«ñѽ¿  »á¼∩Γ¿
  7052. »α¿ óσ«ñÑ ó Σπ¡¬µ¿ε ß«ñÑন¼«Ñ SS αáó¡« ß«ñÑন¼«¼π αÑú¿ßΓαá DS.
  7053.  
  7054.      è«úñᠪѠó Σπ¡¬µ¿¿ ¡á ÇßßѼí½ÑαÑ, óδºδóáѼ«⌐ ¿º »α«úαá¼¼δ ¡á
  7055. ∩ºδ¬Ñ æ¿,  ¡Ñ«íσ«ñ¿¼« ºáúαπªáΓ∞ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα?  ÄΓ¼ÑΓ¿¼  ñ½∩
  7056. ¡áτá½á, τΓ« óá¼ ¡¿¬«úñá ¡Ñ »α¿ñÑΓß∩ (í«½ÑÑ Γ«ú«, φΓ«ú« ¡Ñ ß½ÑñπÑΓ
  7057. ñѽáΓ∞) ºáúαπªáΓ∞ αÑú¿ßΓαδ SS ¿½¿ CS:  »α¿ ñá½∞¡¿σ ó맮óáσ, »ÑαÑ-
  7058.  
  7059. TASM2 #2-5/䫬              = 187 =
  7060.  
  7061. σ«ñáσ  ¿½¿  ó«ºóαáΓáσ  αÑú¿ßΓα CS áóΓ«¼áΓ¿τÑ߬¿ πßΓá¡áó½¿óáÑΓß∩ ó
  7062. ¡πª¡«Ñ º¡áτÑ¡¿Ñ, á αÑú¿ßΓα SS óßÑúñá π¬áºδóáÑΓ ¡á ßÑú¼Ñ¡Γ ßΓѬᠿ
  7063. ó  σ«ñÑ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ ¿º¼Ñ¡∩Γ∞ Ñú« ¡Ñ ß½ÑñπÑΓ (Ñß½¿ Γ«½∞¬«
  7064. óδ ¡Ñ »¿ΦÑΓÑ »α«úαá¼¼π,  ¬«Γ«αá∩ "»ÑαѬ½ετáÑΓ" ßΓѬ¿; ó φΓ«¼ ß½π-
  7065. τáÑ óá¼ ¡πª¡« τÑΓ¬« »«¡¿¼áΓ∞, τΓ« óδ ñѽáÑΓÑ).
  7066.  
  7067.      ÉÑú¿ßΓα ES óδ ¼«ªÑΓÑ óßÑúñá ¿ß»«½∞º«óáΓ∞ Γá¬, ¬á¬ φΓ« ΓαÑíπ-
  7068. ÑΓß∩.  éδ  ¼«ªÑΓÑ πßΓá¡«ó¿Γ∞ Ñú« Γᬿ¼ «íαẫ¼, τΓ«íδ «¡ π¬áºδóá½
  7069. ¡á ñá¡¡δÑ ß ñá½∞¡¿¼ Γ¿»«¼ «íαáΘÑ¡¿∩,  ¿½¿  ºáúαπº¿Γ∞  ó  ES  ßÑú-
  7070. ¼Ñ¡Γ-»α¿Ñ¼¡¿¬ ñ½∩ ßΓ᫬«ó«⌐ Σπ¡¬µ¿¿.
  7071.  
  7072.      æ αÑú¿ßΓα«¼ DS ñѽ« «íßΓ«¿Γ ¿¡áτÑ. é«  óßÑσ  ¼«ñѽ∩σ  »á¼∩Γ¿
  7073. Æπαí« æ¿, ¬α«¼Ñ ßóÑασí«½∞Φ«⌐, αÑú¿ßΓα DS »α¿ óσ«ñÑ ó Σπ¡¬µ¿ε π¬á-
  7074. ºδóáÑΓ ¡á ßΓáΓ¿τÑ߬¿⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ (DGROUP),  ¿ ¿º¼Ñ¡∩Γ∞ Ñú« ¡Ñ
  7075. ß½ÑñπÑΓ.  ä½∩  ñ«ßΓπ»á  ¬ ñá¡¡δ¼ ß ñá½∞¡¿¼ Γ¿»«¼ «íαáΘÑ¡¿∩ óßÑúñá
  7076. ¼«ª¡« ¿ß»«½∞º«óáΓ∞ αÑú¿ßΓα ES,  σ«Γ∩ óδ ¼«ªÑΓÑ »«ßτ¿ΓáΓ∞, τΓ« ñ½∩
  7077. φΓ«ú« óαѼѡ¡« ¡πª¡« ¿ß»«½∞º«óáΓ∞ αÑú¿ßΓα DS (Ñß½¿ óδ ß«í¿αáÑΓÑß∞
  7078. «ßπΘÑßΓó½∩Γ∞ ¿¡Γѡ߿ó¡δ⌐ ñ«ßΓπ» ¬ ñá¡¡δ¼), τΓ« ¿ß¬½ετ¿Γ ¡Ñ«íσ«ñ¿-
  7079. ¼«ßΓ∞ ¿ß»«½∞º«óá¡¿∩ ó óáΦÑ⌐ »α«úαἼѠ¼¡«ªÑßΓóá ¿¡ßΓαπ¬µ¿⌐ ß »αÑ-
  7080. Σ¿¬ß«¼ »ÑαÑ«»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá. ìá»α¿¼Ñα, óδ ¼«ªÑΓÑ «íαáΓ¿Γ∞ß∩ ¬
  7081. ñá½∞¡Ñ¼π ßÑú¼Ñ¡Γπ «ñ¡¿¼ ¿º ß½ÑñπεΘ¿σ ß»«ß«í«ó:
  7082.  
  7083.                   .
  7084.                   .
  7085.                   .
  7086.                   .FARDATA
  7087. Counter           DW    0
  7088.                   .
  7089.                   .
  7090.                   .
  7091.                   .CODE
  7092.                   PUBLIC  _AsmFunction
  7093. _AsmFunction      PROC
  7094.                   .
  7095.                   .
  7096.                   .
  7097.                   mov   ax,@FarData
  7098.                   mov   es,ax         ; ES π¬áºδóáÑΓ ¡á
  7099.                                       ; ßÑú¼Ñ¡Γ ñá¡¡δσ ß
  7100.                                       ; ñá½∞¡¿¼ Γ¿»«¼
  7101.                                       ; «íαáΘÑ¡¿∩
  7102.                   inc   es:[Counter]  ; πóѽ¿τ¿Γ∞ º¡áτÑ¡¿Ñ
  7103.                                       ; ßτÑΓτ¿¬á
  7104.                   .
  7105.                   .
  7106.                   .
  7107.  
  7108. TASM2 #2-5/䫬              = 188 =
  7109.  
  7110. _AsmFunction      ENDP
  7111.                   .
  7112.                   .
  7113.                   .
  7114.  
  7115. ¿½¿
  7116.  
  7117.                   .
  7118.                   .
  7119.                   .
  7120.                   .FARDATA
  7121. Counter           DW     0
  7122.                   .
  7123.                   .
  7124.                   .
  7125.                   .CODE
  7126.                   PUBLIC  _AsmFunction
  7127. _AsmFunction      PROC
  7128.                   .
  7129.                   .
  7130.                   .
  7131.                   assume  ds:@FarData
  7132.                   mov   ax,@FarDAta
  7133.                   mov   ds,ax          ; DS π¬áºδóáÑΓ ¡á
  7134.                                        ; ßÑú¼Ñ¡Γ ñá¡¡δσ ß
  7135.                                        ; ñá½∞¡¿¼ Γ¿»«¼
  7136.                                        ; «íαáΘÑ¡¿∩
  7137.                   inc   [Counter]      ; πóѽ¿τ¿Γ∞ º¡áτÑ¡¿Ñ
  7138.                                        ; ßτÑΓτ¿¬á
  7139.                   assume ds:@Data
  7140.                   mov   ax,@Data
  7141.                   mov   dx,ax          ; DS ß¡«óá π¬áºδóáÑΓ
  7142.                                        ; ¡á DGROUP
  7143.                   .
  7144.                   .
  7145.                   .
  7146. _AsmFunction      ENDP
  7147.                   .
  7148.                   .
  7149.                   .
  7150.  
  7151.      éΓ«α«⌐ óáα¿á¡Γ ¿¼ÑÑΓ Γ« »αÑ¿¼πΘÑßΓó«, τΓ« »α¿ ¬áªñ«¼ «íαáΘÑ-
  7152. ¡¿¿ ¬ ñá½∞¡Ñ¼π ßÑú¼Ñ¡Γπ ñá¡¡δσ ó ¡Ñ¼ ¡Ñ ΓαÑíπÑΓß∩ »ÑαÑ«»αÑñѽѡ¿Ñ
  7153. ES:. àß½¿ ñ½∩ «íαáΘÑ¡¿∩ ¬ ñá½∞¡Ñ¼π ßÑú¼Ñ¡Γπ óδ ºáúαπªáÑΓÑ αÑú¿ßΓα
  7154. DS,  πíÑñ¿ΓÑß∞  ó  Γ«¼,  τΓ« »ÑαÑñ «íαáΘÑ¡¿Ñ¼ ¬ ñαπú¿¼ »ÑαѼѡ¡δ¼
  7155. DGROUP óδ Ñú« ó«ßßΓá¡áó½¿óáÑΓÑ (¬á¬ φΓ«  ñѽáÑΓß∩  ó  »α¿óÑñÑ¡¡«¼
  7156.  
  7157. TASM2 #2-5/䫬              = 189 =
  7158.  
  7159. »α¿¼ÑαÑ). äáªÑ Ñß½¿ ó ñá¡¡«⌐ Σπ¡¬µ¿¿ ¡á ÇßßѼí½ÑαÑ óδ ¡Ñ «íαáΘáÑ-
  7160. ΓÑß∞ ¬ DGROUP, »ÑαÑñ óδσ«ñ«¼ ¿º ¡ÑÑ óßÑ αáó¡«  «í∩ºáΓѽ∞¡«  ¡πª¡«
  7161. ó«ßßΓá¡«ó¿Γ∞  ß«ñÑন¼«Ñ  DS, Γᬠ¬á¬ ó Æπαí« æ¿ »«ñαáºπ¼ÑóáÑΓß∩,
  7162. τΓ« αÑú¿ßΓα DS ¡Ñ ¿º¼Ñ¡∩½ß∩.
  7163.  
  7164.      Åα¿ ¿ß»«½∞º«óá¡¿¿ ó Σπ¡¬µ¿∩σ, óδºδóáѼδσ ¿º æ¿, ßóÑασí«½∞Φ«⌐
  7165. ¼«ñѽ¿ »á¼∩Γ¿ αáí«ΓáΓ∞ ß αÑú¿ßΓα«¼ DS ¡πª¡« ¡Ñ߬«½∞¬« »«-ñαπú«¼π.
  7166. é ßóÑασí«½∞Φ«⌐  ¼«ñѽ¿  »á¼∩Γ¿  Æπαí«  æ¿  ß«óßѼ  ¡Ñ  ¿ß»«½∞ºπÑΓ
  7167. DGROUP.  é¼ÑßΓ« φΓ«ú« ¬áªñδ⌐ ¼«ñπ½∞ ¿¼ÑÑΓ ßó«⌐   ß«íßΓóÑ¡¡δ⌐ ßÑú-
  7168. ¼Ñ¡Γ ñá¡¡δσ, ¬«Γ«αδ⌐ ∩ó½∩ÑΓß∩ ñá½∞¡¿¼ ßÑú¼Ñ¡Γ«¼ «Γ¡«ß¿Γѽ∞¡« óßÑσ
  7169. ñαπú¿σ  ¼«ñπ½Ñ⌐ ó »α«úαἼѠ(¡ÑΓ ß«ó¼ÑßΓ¡« ¿ß»«½∞ºπѼ«ú« í½¿ª¡Ñú«
  7170. ßÑú¼Ñ¡Γá ñá¡¡δσ). Åα¿ ¿ß»«½∞º«óá¡¿¿ ßóÑασí«½∞Φ«⌐ ¼«ñѽ¿ »á¼∩Γ¿ ¡á
  7171. óσ«ñÑ  ó Σπ¡¬µ¿ε αÑú¿ßΓα DS ñ«½ªÑ¡ íδΓ∞ πßΓá¡«ó½Ñ¡ Γᬿ¼ «íαẫ¼,
  7172. τΓ«íδ «¡ π¬áºδóá½ ¡á φëàñá½∞¡¿⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ ¼«ñπ½∩ ¿ ¡Ñ  ¿º-
  7173. ¼Ñ¡∩½ß∩ ñ« ¬«¡µá Σπ¡¬µ¿¿, ¡á»α¿¼Ñα:
  7174.  
  7175.                   .
  7176.                   .
  7177.                   .
  7178.                   .FARDATA
  7179.                   .
  7180.                   .
  7181.                   .
  7182.                   .CODE
  7183.                   PUBLIC  _AsmFunction
  7184. _AsmFunction      PROC
  7185.                   push    ds
  7186.                   mov     ax,@FarData
  7187.                   mov     ds,ax
  7188.                   .
  7189.                   .
  7190.                   .
  7191.                   pop     ds
  7192.                   ret
  7193. _AsmFunction      ENDP
  7194.                   .
  7195.                   .
  7196.                   .
  7197.  
  7198.      çá¼ÑΓ¿¼, τΓ« ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ αÑú¿ßΓαá DS ß«σαá¡∩ÑΓß∩  »α¿
  7199. óσ«ñÑ  ó  Σπ¡¬µ¿ε  _AsmFunction ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ PUSH ¿ »ÑαÑñ
  7200. óδσ«ñ«¼ ó«ßßΓá¡áó½¿óáÑΓß∩ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ POP. äáªÑ ó ßóÑασ-
  7201. í«½∞Φ«⌐  ¼«ñѽ¿ »á¼∩Γ¿ Æπαí« æ¿ ΓαÑíπÑΓ, τΓ«íδ óßÑ Σπ¡¬µ¿¿ ß«σαá-
  7202. ¡∩½¿ αÑú¿ßΓα DS.
  7203.  
  7204.  
  7205.  
  7206. TASM2 #2-5/䫬              = 190 =
  7207.  
  7208.  
  7209. ÄíΘÑñ«ßΓπ»¡δÑ ¿ ó¡ÑΦ¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ
  7210. -----------------------------------------------------------------
  7211.  
  7212.      Åα«úαá¼¼δ Æπαí« ÇßßѼí½Ñαá ¼«úπΓ óδºδóáΓ∞ Σπ¡¬µ¿¿ æ¿ ¿  ßßδ-
  7213. ½áΓ∞ß∩  ¡á  ó¡ÑΦ¡¿Ñ »ÑαѼѡ¡δÑ æ¿. Åα«úαá¼¼δ Æπαí« æ¿ á¡á½«ú¿τ¡δ¼
  7214. «íαẫ¼ ¼«úπΓ óδºδóáΓ∞ «íΘÑñ«ßΓπ»¡δÑ (PUBLIC) Σπ¡¬µ¿¿  Æπαí«  Çß-
  7215. ßѼí½Ñαá  ¿ «íαáΘáΓ∞ß∩ ¬ »ÑαѼѡ¡δ¼ Æπαí« ÇßßѼí½Ñαá. Å«ß½Ñ Γ«ú«,
  7216. ¬á¬ ó Æπαí« ÇßßѼí½ÑαÑ πßΓá¡áó½¿óáεΓß∩  ß«ó¼ÑßΓ¿¼δÑ  ß  Æπαí«  æ¿
  7217. ßÑú¼Ñ¡Γδ (¬á¬ «»¿ßá¡« ó »αÑñδñπΘ¿σ αáºñѽáσ), τΓ«íδ ß«ó¼ÑßΓ¡« ¿ß-
  7218. »«½∞º«óáΓ∞ Σπ¡¬µ¿¿ ¿ »ÑαѼѡ¡δÑ Æπαí« æ¿ ¿ Æπαí« ÇßßѼí½Ñαá, ¡πª-
  7219. ¡« ß«í½εñáΓ∞ ¡Ñ߬«½∞¬« »α«ßΓδσ »αáó¿½.
  7220.  
  7221.                              Å«ñτÑનóá¡¿∩
  7222. -----------------------------------------------------------------
  7223.  
  7224.      Äíδτ¡« ó Æπαí« æ¿ »αÑñ»«½áúáÑΓß∩, τΓ« óßÑ ó¡ÑΦ¡¿Ñ ¼ÑΓ¬¿  ¡á-
  7225. τ¿¡áεΓß∩  ß  ß¿¼ó«½á  »«ñτÑનóá¡¿∩  (_).  Æπαí« æ¿ áóΓ«¼áΓ¿τÑ߬¿
  7226. ó¬½ετáÑΓ ß¿¼ó«½δ »«ñτÑનóá¡¿∩ ó« óßÑ ¿¼Ñ¡á Σπ¡¬µ¿⌐ ¿ ¿¼Ñ¡á ó¡ÑΦ-
  7227. ¡¿σ »ÑαѼѡ¡δσ, ¬«úñá «¡¿ ¿ß»«½∞ºπεΓß∩ ó ¬«ñÑ ∩ºδ¬á æ¿, »«φΓ«¼π ó
  7228. ¬«ñÑ  ÇßßѼí½Ñαá  óδ ñ«½ª¡δ »α«ßΓ« ñ«íáó¿Γ∞ »«ñτÑનóá¡¿∩.  ìπª¡«
  7229. πíÑñ¿Γ∞ß∩,  τΓ« óßÑ ßß佬¿ ó ÇßßѼí½ÑαÑ ¡á Σπ¡¬µ¿¿  ¿  »ÑαѼѡ¡δÑ
  7230. Æπαí« æ¿ ¡áτ¿¡áεΓß∩ ß »«ñτÑનóá¡¿∩. éßÑ Σπ¡¬µ¿¿ ¿ »ÑαѼѡ¡δÑ Çß-
  7231. ßѼí½Ñαá,  ¬«Γ«αδÑ ∩ó½∩εΓß∩ «íΘÑñ«ßΓπ»¡δ¼¿ ¿ ¬ ¬«Γ«αδ¼ «íαáΘáÑΓß∩
  7232. Æπαí« æ¿, ñ«½ª¡δ ΓᬪѠ¡áτ¿¡áΓ∞ß∩ ß ß¿¼ó«½á »«ñτÑનóá¡¿∩.
  7233.  
  7234.      ìá»α¿¼Ñα, ß½ÑñπεΘá∩ »α«úαἼᠡá ∩ºδ¬Ñ æ¿:
  7235.  
  7236.   extrn int  ToggleFlag();
  7237.   int   Flag;
  7238.   main()
  7239.   {
  7240.       ToggleFlag();
  7241.   }
  7242.  
  7243. »αáó¿½∞¡« ¬«¼»«¡πÑΓß∩ ß« ß½ÑñπεΘÑ⌐ »α«úαá¼¼«⌐ ¡á ÇßßѼí½ÑαÑ:
  7244.  
  7245.             DOSSEG
  7246.             .MODEL  SMALL
  7247.             .DATA
  7248.             EXTRN   _Flag:word
  7249.             .CODE
  7250.             PUBLIC  _ToggleFlag
  7251. _ToggleFlag PROC
  7252.             cmp     [_Flag],0      ; Σ½áú ßíα«ΦÑ¡?
  7253.             jz      SetFlag        ; ñá, πßΓá¡«ó¿Γ∞ Ñú«
  7254.  
  7255. TASM2 #2-5/䫬              = 191 =
  7256.  
  7257.             mov     [_Flag],0      ; ¡ÑΓ, ßíα«ß¿Γ∞ Ñú«
  7258.             jmp     short EndToggleFlag ; óδ»«½¡Ñ¡«
  7259. SetFlag:
  7260.             mov     [_Flag],1      ; πßΓá¡«ó¿Γ∞ Σ½áú
  7261. EndToggleFlag:
  7262.             ret
  7263. _ToggleFlag ENDP
  7264.             END
  7265.  
  7266.      çá¼ÑΓ¿¼, τΓ« ó ¼ÑΓ¬áσ,  ¡á ¬«Γ«αδÑ ¡ÑΓ ßß佫¬ ó »α«úαἼѠ¡á
  7267. ∩ºδ¬Ñ æ¿ (¡á»α¿¼Ñα,  SetFlag), ¡Ñ ΓαÑíπÑΓß∩ π¬áºδóáΓ∞ ß¿¼ó«½ »«ñ-
  7268. τÑનóá¡¿∩.
  7269.  
  7270.      èßΓáΓ¿, ß »«¼«Θ∞ε »áαá¼ÑΓαá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ -u  ¼«ª¡«  π¬á-
  7271. ºáΓ∞  Æπαí«  æ¿,  τΓ«íδ  «¡ ¡Ñ ¿ß»«½∞º«óá½ ß¿¼ó«½δ »«ñτÑનóá¡¿∩.
  7272. ò«Γ∩ φΓ« ¼«ªÑΓ »«¬áºáΓ∞ß∩ ñ«ßΓáΓ«τ¡« »α¿ó½Ñ¬áΓѽ∞¡δ¼ ß»«ß«í«¼, ¡«
  7273. óßÑ í¿í½¿«ΓѬ¿ ¿ß»«½¡∩εΘÑ⌐ ß¿ßΓÑ¼δ Æπαí« æ¿ ß¬«¼»¿½¿α«óá¡δ ß αáº-
  7274. αÑΦÑ¡¿Ñ¼ ß¿¼ó«½á »«ñτÑનóá¡¿∩. Æá¬¿¼  «íαẫ¼,  óá¼  »«ΓαÑíπÑΓß∩
  7275. »«½πτ¿Γ∞  π Σ¿α¼δ Borland ¿ßσ«ñ¡δ⌐ ¬«ñ í¿í½¿«ΓÑτ¡δσ ¼«ñπ½Ñ⌐ ¿ »Ñ-
  7276. αѬ«¼»¿½¿α«óáΓ∞ ¿σ ß »áαá¼ÑΓα«¼ -u (ß¼. ñá½ÑÑ "æ«ú½áΦÑ¡¿∩ »«  óδ-
  7277. º«óá¼ Åá߬á½∩", úñÑ αáß߬áºδóáÑΓß∩ « »áαá¼ÑΓαÑ -p, ¬«Γ«αδ⌐ ºá»αÑ-
  7278. ΘáÑΓ ¿ß»«½∞º«óá¡¿Ñ ß¿¼ó«½á »«ñτÑનóá¡¿∩ ¿ αẽ¿τ¿¼«ßΓ∞  ßΓα«τ¡δσ
  7279. ¿ »α«»¿ß¡δσ ß¿¼ó«½«ó).
  7280.  
  7281.  
  7282.  
  7283.  
  7284. TASM2 #2-5/䫬              = 192 =
  7285.  
  7286.  
  7287. æΓα«τ¡δÑ ¿ »α«»¿ß¡δÑ ß¿¼ó«½δ
  7288. -----------------------------------------------------------------
  7289.  
  7290.      é ¿¼Ñ¡áσ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó Æπαí« ÇßßѼí½Ñα «íδτ¡« ¡Ñ αẽ¿τáÑΓ
  7291. ßΓα«τ¡δÑ ¿ »α«»¿ß¡δÑ íπ¬óδ (óÑασ¡¿⌐ ¿ ¡¿ª¡¿⌐ αÑú¿ßΓα).  Å«ß¬«½∞¬π
  7292. ó æ¿ «¡¿ αẽ¿τáεΓß∩, ªÑ½áΓѽ∞¡« ºáñáΓ∞ ΓᬫѠαẽ¿τ¿Ñ  ¿ ó Æπαí«
  7293. ÇßßѼí½ÑαÑ (»« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ñ½∩ ΓÑσ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó, ¬«Γ«αδÑ ß«ó-
  7294. ¼ÑßΓ¡« ¿ß»«½∞ºπεΓß∩ ÇßßѼí½Ñα«¼ ¿ æ¿). ¥Γ« ¼«ª¡«  ßñѽáΓ∞  ß  »«-
  7295. ¼«Θ∞ε »áαá¼ÑΓα«ó /ML ¿ /MX.
  7296.  
  7297.      ÅÑαѬ½ετáΓѽ∞ (»áαá¼ÑΓα) ¬«¼á¡ñ¡«⌐  ßΓ᫬¿  /ML  »α¿ó«ñ¿Γ  ¬
  7298. Γ«¼π,  τΓ«  ó Æπαí« ÇßßѼí½ÑαÑ ó« óßÑσ ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ ßΓα«τ¡δÑ ¿
  7299. »α«»¿ß¡δÑ ß¿¼ó«½δ íπñπΓ αẽ¿τáΓ∞ß∩ (ßτ¿ΓáΓ∞ß∩ αẽ¿τ¡δ¼¿). Åáαá-
  7300. ¼ÑΓα  ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /MX π¬áºδóáÑΓ Æπαí« ÇßßѼí½Ñαπ, τΓ« ßΓα«τ-
  7301. ¡δÑ ¿ »α«»¿ß¡δÑ ß¿¼ó«½δ ¡πª¡« αẽ¿τáΓ∞ ó «íΘÑñ«ßΓπ»¡δσ  (PUBLIC)
  7302. ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ,   ó¡ÑΦ¡¿σ   (EXTRN)  ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ  ú½«íá½∞¡δσ
  7303. (GLOBAL) ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ ¿ «íΘ¿σ (COMM) ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ.
  7304.  
  7305.                               Æ¿»δ ¼ÑΓ«¬
  7306. -----------------------------------------------------------------
  7307.  
  7308.      ò«Γ∩ ó »α«úαá¼¼áσ Æπαí« ÇßßѼí½Ñαá ¼«ª¡« ßó«í«ñ¡« «íαáΘáΓ∞ß∩
  7309. ¬ ½εí«⌐ »ÑαѼѡ¡«⌐ ¿½¿ ñá¡¡δ¼ ½εí«ú« αẼÑαá (8, 16, 32 í¿Γá ¿ Γ.
  7310. ñ.), ó «íΘѼ ß½πτáÑ σ«α«Φ« «íαáΘáΓ∞ß∩ ¬ »ÑαѼѡ¡δ¼ ó ß««ΓóÑΓßΓó¿¿
  7311. ß ¿σ αẼÑα«¼. ìá»α¿¼Ñα, Ñß½¿ óδ ºá»¿ßδóáÑΓÑ ß½«ó« ó íá⌐Γ«óπε »Ñ-
  7312. αѼѡ¡πε, Γ« «íδτ¡« φΓ« »α¿ó«ñ¿Γ ¬ »α«í½Ñ¼á¼:
  7313.  
  7314.                    .
  7315.                    .
  7316.                    .
  7317.  SmallCount        DB   0
  7318.                    .
  7319.                    .
  7320.                    .
  7321.                    mov   WORD PTR [SmallCount],0ffffh
  7322.                    .
  7323.                    .
  7324.                    .
  7325.  
  7326.      Å«φΓ«¼π ó᪡«, τΓ«íδ ó «»ÑαáΓ«αÑ ÇßßѼí½Ñαá EXTRN, ó ¬«Γ«α«¼
  7327. «»¿ßδóáεΓß∩ »ÑαѼѡ¡δÑ æ¿, ºáñáóá½ß∩ »αáó¿½∞¡δ⌐ αẼÑα φΓ¿σ »ÑαÑ-
  7328. ¼Ñ¡¡δσ, Γᬠ¬á¬ »α¿ úÑ¡Ñαᵿ¿ αẼÑαá  ñ«ßΓπ»á  ¬  »ÑαѼѡ¡«⌐  æ¿
  7329. Æπαí« ÇßßѼí½Ñα «ß¡«óδóáÑΓß∩ ¿¼Ñ¡¡« ¡á φΓ¿σ «»¿ßá¡¿∩σ.
  7330.  
  7331.      àß½¿ ó »α«úαἼѠ¡á ∩ºδ¬Ñ æ¿ ß«ñÑনΓß∩ «»ÑαáΓ«α:
  7332.  
  7333. TASM2 #2-5/䫬              = 193 =
  7334.  
  7335.  
  7336.         char c
  7337.  
  7338. Γ« ¬«ñ ÇßßѼí½Ñαá:
  7339.  
  7340.                    .
  7341.                    .
  7342.                    .
  7343.   EXTRN            c:WORD
  7344.                    .
  7345.                    .
  7346.                    inc  [c]
  7347.                    .
  7348.                    .
  7349.                    .
  7350.  
  7351. ¼«ªÑΓ »α¿óÑßΓ¿ ¬ óÑß∞¼á ¡Ñ»α¿∩Γ¡δ¼ «Φ¿í¬á¼, »«ß¬«½∞¬π »«ß½Ñ Γ«ú«,
  7352. ¬á¬ ó ¬«ñÑ ¡á ∩ºδ¬Ñ æ¿ »ÑαѼѡ¡á∩ c πóѽ¿τ¿Γß∩ «τÑαÑñ¡δÑ 256 αáº,
  7353. ÑÑ º¡áτÑ¡¿Ñ íπñÑΓ ßíα«ΦÑ¡«, á Γᬠ¬á¬ «¡á «»¿ßá¡á, ¬á¬ »ÑαѼѡ¡á∩
  7354. αẼÑα«¼ ó ß½«ó«,  Γ« íá⌐Γ »« áñαÑßπ OFFSET c + 1 íπñÑΓ  πóѽ¿τ¿-
  7355. óáΓ∞ß∩ ¡Ñ¬«ααÑ¬Γ¡«, τΓ« »α¿óÑñÑΓ ¬ ¡Ñ»αÑñ߬áºπÑ¼δ¼ αѺπ½∞ΓáΓá¼.
  7356.  
  7357.      îѪñπ Γ¿»á¼¿ ñá¡¡δσ æ¿ á ÇßßѼí½Ñαá ßπΘÑßΓóπÑΓ ß½ÑñπεΘÑÑ ß«-
  7358. «Γ¡«ΦÑ¡¿Ñ:
  7359.  
  7360. --------------------------------------------------------------
  7361.     Æ¿» ñá¡¡δσ æ¿                        Æ¿» ñá¡¡δσ ÇßßѼí½Ñαá
  7362. --------------------------------------------------------------
  7363.     unsigned char                                   byte
  7364.     char                                            byte
  7365.     enum                                            word
  7366.     unsigned short                                  word
  7367.     short                                           word
  7368.     unsigned int                                    word
  7369.     int                                             word
  7370.     unsigned long                                   dword
  7371.     long                                            dword
  7372.     float                                           dword
  7373.     double                                          qword
  7374.     long double                                     tbyte
  7375.     near*                                           word
  7376.     far*                                            dword
  7377. ---------------------------------------------------------------
  7378.  
  7379. é¡ÑΦ¡¿Ñ ñá½∞¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ñ«½ª¡δ ½ÑªáΓ∞ ó¡Ñ ½εí«ú« ßÑú¼Ñ¡Γá
  7380.  
  7381. TASM2 #2-5/䫬              = 194 =
  7382.  
  7383. -----------------------------------------------------------------
  7384.  
  7385.      àß½¿ óδ ¿ß»«½∞ºπÑΓÑ π»α«ΘÑ¡¡δÑ ñ¿αÑ¬Γ¿óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡-
  7386. Γ«ó,  Γ« «»¿ßá¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó EXTRN ó ßÑú¼Ñ¡Γáσ ñá½∞¡Ñú« Γ¿»á
  7387. ¡Ñ ñ«½ª¡δ αẼÑΘáΓ∞ß∩ ¡¿ ó ¬á¬«¼ ßÑú¼Ñ¡ΓÑ, Γᬠ¬á¬  Æπαí«  ÇßßѼ-
  7388. í½Ñα  αáßß¼áΓα¿óáÑΓ  ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ, «»¿ßá¡¡δÑ ó ñá¡¡«¼ ßÑú¼Ñ¡ΓÑ,
  7389. ¬á¬ ßó∩ºá¡¡δÑ ß ñá¡¡δ¼ ßÑú¼Ñ¡Γ«¼. ¥Γ« ¿¼ÑÑΓ ßó«¿ ¡Ññ«ßΓáΓ¬¿: Æπα-
  7390. í« ÇßßѼí½Ñα ¡Ñ ¼«ªÑΓ »α«óÑα¿Γ∞ ó«º¼«ª¡«ßΓ∞ áñαÑßᵿ¿ ¬ ¿ñÑ¡Γ¿Σ¿-
  7391. ¬áΓ«απ, «»¿ßá¡¡«¼π, ¬á¬ ó¡ÑΦ¡¿⌐ (EXTRN), ó¡Ñ  ½εí«ú«  ßÑú¼Ñ¡Γá  ¿
  7392. »«φΓ«¼π  ¡Ñ ¼«ªÑΓ ó ß½πτáÑ  ¡Ñ«íσ«ñ¿¼«ßΓ¿ ßúÑ¡Ñα¿α«óáΓ∞ «»αÑñѽÑ-
  7393. ¡¿Ñ ßÑú¼Ñ¡Γá ¿½¿ ß««íΘ¿Γ∞ óá¼, τΓ« íδ½á »«»δΓ¬á «íαáΓ¿Γ∞ß∩ ¬ ñá¡-
  7394. ¡«⌐ »ÑαѼѡ¡«⌐, ¬«úñá ßÑú¼Ñ¡Γ ¡Ñ íδ½ ºáúαπªÑ¡ ¬«ααÑ¬Γ¡δ¼ º¡áτÑ¡¿-
  7395. Ѽ. ÆÑ¼  ¡Ñ  ¼Ñ¡ÑÑ Æπαí« ÇßßѼí½Ñα úÑ¡Ñα¿απÑΓ ñ½∩ ßß佫¬ ¡á ΓᬿÑ
  7396. ó¡ÑΦ¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ »αáó¿½∞¡δ⌐ ¬«ñ,  ¡«  ¡Ñ  ¼«ªÑΓ  «íÑß»Ñτ¿Γ∞
  7397. «íδτ¡πε ßΓѻѡ∞ »α«óÑન ó«º¼«ª¡«ßΓ¿ áñαÑßᵿ¿ ¬ ßÑú¼Ñ¡Γπ.
  7398.  
  7399.      àß½¿ óδ óßÑ-Γᬿ ºáσ«Γ¿ΓÑ, Γ« ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩  ∩ó¡«ú«
  7400. «»¿ßá¡¿∩ ¬áªñ«ú« ó¡ÑΦ¡Ñú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑú¼Ñ¡Γá ßΓáαδÑ ñ¿αÑ¬Γ¿-
  7401. óδ «»αÑñѽѡ¿∩ ßÑú¼Ñ¡Γ«ó, á ºáΓѼ »«¼ÑßΓ¿Γ∞ ñ¿αÑ¬Γ¿óπ  EXTRN  ñ½∩
  7402. φΓ«ú«  ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ó¡πΓα∞ «»¿ßá¡¿∩ ßÑú¼Ñ¡Γá. ¥Γ« ñ«ó«½∞¡« πΓ«-
  7403. ¼¿Γѽ∞¡«, »«φΓ«¼π Ñß½¿ óδ ¡Ñ σ«Γ¿ΓÑ «íÑß»Ñτ¿óáΓ∞ ºáúαπº¬π ¬«ααѬ-
  7404. Γ¡«ú«  º¡áτÑ¡¿∩  ßÑú¼Ñ¡Γá  »α¿ «íαáΘÑ¡¿¿ ¬ ñá¡¡δ¼, Γ« »α«ΘÑ óßÑú«
  7405. »α«ßΓ« αẼÑßΓ¿Γ∞ «»¿ßá¡¿∩  EXTRN  ñ½∩  ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó  ñá½∞¡Ñú«
  7406. Γ¿»á   ó¡Ñ   óßÑσ  ßÑú¼Ñ¡Γ«ó.  ÅαÑñ»«½«ª¿¼,  ¡á»α¿¼Ñα,  τΓ«  Σá⌐½
  7407. FILE1.ASM ß«ñÑαª¿Γ ß½ÑñπεΘÑÑ:
  7408.  
  7409.                       .
  7410.                       .
  7411.                       .
  7412.                       .FARDATA
  7413.  FileVariable         DB   0
  7414.                       .
  7415.                       .
  7416.                       .
  7417.  
  7418. ¿ «¡ ¬«¼»«¡πÑΓß∩ ß Σá⌐½«¼ FILE2.ASM, ¬«Γ«αδ⌐ ß«ñÑনΓ:
  7419.  
  7420.                       .
  7421.                       .
  7422.                       .
  7423.                       .DATA
  7424.                       EXTRN  FileVariable:BYTE
  7425.                       .CODE
  7426.  Start                PROC
  7427.                       mov   ax,SEG FileVariable
  7428.                       mov   ds,ax
  7429.  
  7430. TASM2 #2-5/䫬              = 195 =
  7431.  
  7432.                       .
  7433.                       .
  7434.                       .
  7435.  
  7436.      SEG File1Variable ¡Ñ íπñÑΓ ó«ºóαáΘáΓ∞  ¬«ααÑ¬Γ¡«ú«  º¡áτÑ¡¿∩
  7437. ßÑú¼Ñ¡Γá.  ä¿αÑ¬Γ¿óá EXTRN αẼÑΘÑ¡á ó «í½áßΓ¿ ñÑ⌐ßΓó¿∩ ñ¿αÑ¬Γ¿óδ
  7438. Σá⌐½á FILE2.ASM DATA, »«φΓ«¼π Æπαí« ÇßßѼí½Ñα ßτ¿ΓáÑΓ, τΓ«  »ÑαÑ-
  7439. ¼Ñ¡¡á∩  File1Variable  ñ«½ª¡á  ¡áσ«ñ¿Γ∞ß∩ ó í½¿ª¡Ñ¼ ßÑú¼Ñ¡ΓÑ DATA
  7440. Σá⌐½á FILE2.ASM, á ¡Ñ ó ñá½∞¡Ñ¼ ßÑú¼Ñ¡Γá DATA.
  7441.  
  7442.      é ß½ÑñπεΘѼ ¬«ñÑ FILE2.ASM SEG File1Variable  íπñÑΓ  ó«ºóαá-
  7443. ΘáΓ∞ ¬«ααÑ¬Γ¡«Ñ º¡áτÑ¡¿Ñ ßÑú¼Ñ¡Γá:
  7444.  
  7445.                       .
  7446.                       .
  7447.                       .
  7448.                       .DATA
  7449.  @CurSeg              ENDS
  7450.                       EXTRN   File1Variable:BYTE
  7451.                       .CODE
  7452.  Start                PROC
  7453.                       mov   ax,SEG File1Variable
  7454.                       mov   ds,ax
  7455.                       .
  7456.                       .
  7457.                       .
  7458.  
  7459.      "ö«¬πß" ºñÑß∞ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ñ¿αÑ¬Γ¿óá @CurSeg ENDS  ºá-
  7460. óÑαΦáÑΓ  ßÑú¼Ñ¡Γ  .DATA,  »«φΓ«¼π,  ¬«úñá »ÑαѼѡ¡á∩ FileVariable
  7461. «»¿ßδóáÑΓß∩, ¬á¬ ó¡ÑΦ¡∩∩, ¡¿¬á¬á∩ ßÑú¼Ñ¡Γ¡á∩  ñ¿αÑ¬Γ¿óá  ¡Ñ  ñÑ⌐-
  7462. ßΓóπÑΓ.
  7463.  
  7464.  
  7465.  
  7466.  
  7467. TASM2 #2-5/䫬              = 196 =
  7468.  
  7469.                      è«¼á¡ñ¡á∩ ßΓα«¬á ¬«¼»«¡«óΘ¿¬á
  7470. -----------------------------------------------------------------
  7471.  
  7472.      Åα«ßΓÑ⌐Φ¿⌐ ß»«ß«í ß¬«¼»«¡«óáΓ∞ ¼«ñπ½¿ Æπαí«  æ¿  ß  ¼«ñπ½∩¼¿
  7473. Æπαí« ÇßßѼí½Ñαá ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ óóÑßΓ¿ «ñ¡π ¬«¼á¡ñ¡πε ßΓα«-
  7474. ¬π Æπαí« æ¿, »«ß½Ñ τÑú« «¡ óδ»«½¡¿Γ óßε «ßΓá½∞¡πε αáí«Γπ. Åα¿ ºá-
  7475. ñá¡¿¿ ¡πª¡«⌐ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ Æπαí« æ¿ óδ»«½¡¿Γ ¬«¼»¿½∩µ¿ε ¿ßσ«ñ-
  7476. ¡«ú« ¬«ñá æ¿, ó맮óÑΓ Æπαí« ÇßßѼí½Ñα ñ½∩ áßßÑ¼í½¿α«óá¡¿∩, á  ºá-
  7477. ΓѼ  ó맮óÑΓ  πΓ¿½¿Γπ TLINK ñ½∩ ¬«¼»«¡«ó¬¿ «íΩÑ¬Γ¡δσ Σá⌐½«ó ó óδ-
  7478. »«½¡∩Ѽδ⌐ Σá⌐½. ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« π óáß ÑßΓ∞  »α«úαá¼¼á,
  7479. ß«ßΓ«∩Θá∩ ¿º Σá⌐½«ó ¡á ∩ºδ¬Ñ æ¿ MAIN.C ¿ STAT.C ¿ Σá⌐½«ó  áßßѼí-
  7480. ½Ñαá SUMM.ASM ¿ DISPLAY.ASM. è«¼á¡ñ¡á∩ ßΓ᫬á:
  7481.  
  7482.         tcc main stat summ.asm display.asm
  7483.  
  7484. óδ»«½¡∩ÑΓ ¬«¼»¿½∩µ¿ε Σá⌐½«ó MAIN.C ¿ STAT.C, áßßÑ¼í½¿α«óá¡¿Ñ Σá⌐-
  7485. ½«ó  SUMM.ASM  ¿  DISPLAY.ASM ¿ ¬«¼»«¡«ó¬π óßÑσ τÑΓδαÑσ «íΩÑ¬Γ¡δσ
  7486. Σá⌐½«ó, á ΓᬪѠ¬«ñá ¿¡¿µ¿á½¿ºáµ¿¿ æ¿ ¿ ¡Ñ«íσ«ñ¿¼δσ  í¿í½¿«ΓÑτ¡δσ
  7487. Σπ¡¬µ¿⌐ ó óδ»«½¡∩Ѽδ⌐ Σá⌐½ MAIN.EXE. Åα¿ óó«ñÑ ¿¼Ñ¡ Σá⌐½«ó ÇßßѼ-
  7488. í½Ñαá ¡πª¡« Γ«½∞¬« »«¼¡¿Γ∞ « αáßΦ¿αÑ¡¿∩σ .ASM.
  7489.  
  7490.      àß½¿ óδ ¿ß»«½∞ºπÑΓÑ πΓ¿½¿Γπ TLINK ó  áóΓ«¡«¼¡«¼  αѪ¿¼Ñ,  Γ«
  7491. úÑ¡Ñα¿απѼδÑ Æπαí« ÇßßѼí½Ñα«¼ «íΩÑ¬Γ¡δÑ Σá⌐½δ »αÑñßΓáó½∩εΓ ß«í«⌐
  7492. ßΓá¡ñáαΓ¡δÑ «íΩÑ¬Γ¡δÑ ¼«ñπ½¿ ¿ «íαáíáΓδóáεΓß∩ ΓᬪÑ,  ¬á¬  «íΩѬ-
  7493. Γ¡δÑ ¼«ñπ½¿ æ¿.
  7494.  
  7495.  
  7496. éºá¿¼«ñÑ⌐ßΓó¿Ñ ¼Ñªñπ Æπαí« ÇßßѼí½Ñα«¼ ¿ Æπαí« æ¿
  7497. -----------------------------------------------------------------
  7498.  
  7499.      ÆÑ»Ñα∞, ¬«úñá óδ »«¡¿¼áÑΓÑ, ¬á¬ ¡πª¡« ßΓα«¿Γ∞ ¿  ¬«¼»«¡«óáΓ∞
  7500. ß«ó¼ÑßΓ¿¼δÑ  ß æ¿ ¼«ñπ½¿ ÇßßѼí½Ñαá, ¡πª¡« º¡áΓ∞, ¬á¬«⌐ ¬«ñ ¼«ª¡«
  7501. »«¼ÑΘáΓ∞ ó Σπ¡¬µ¿¿ ÇßßѼí½Ñαá, óδºδóáѼδÑ ¿º æ¿. çñÑß∞ ¡πª¡« »α«-
  7502. á¡á½¿º¿α«óáΓ∞ Γα¿ ¼«¼Ñ¡Γá: »«½πτÑ¡¿Ñ »ÑαÑñáóáѼδσ »áαá¼ÑΓα«ó, ¿ß-
  7503. »«½∞º«óá¡¿Ñ αÑú¿ßΓα«ó ¿ ó«ºóαáΓ º¡áτÑ¡¿⌐ ó óδºδóáεΘπε »α«úαá¼¼π.
  7504.  
  7505.                           ÅÑαÑñáτá »áαá¼ÑΓα«ó
  7506. -----------------------------------------------------------------
  7507.  
  7508.      Æπαí« æ¿ »ÑαÑñáÑΓ Σπ¡¬µ¿∩¼ »áαá¼ÑΓαδ τÑαѺ ßΓѬ. ÅÑαÑñ ó맮-
  7509. ó«¼  Σπ¡¬µ¿¿  Æπαí«  æ¿ ß¡áτá½á ºá¡«ß¿Γ »ÑαÑñáóáѼδÑ φΓ«⌐ Σπ¡¬µ¿¿
  7510. »áαá¼ÑΓαδ, ¡áτ¿¡á∩ ß ßἫú« »αáó«ú« »áαá¼ÑΓαá ¿ ¬«¡τá∩  ½Ñóδ¼,  ó
  7511. ßΓѬ. é æ¿ ó맮ó Σπ¡¬µ¿¿:
  7512.  
  7513.          .
  7514.  
  7515. TASM2 #2-5/䫬              = 197 =
  7516.  
  7517.          .
  7518.          .
  7519.          Test(i, j, 1);
  7520.          .
  7521.          .
  7522.          .
  7523.  
  7524. ¬«¼»¿½¿απÑΓß∩ ó ¿¡ßΓαπ¬µ¿¿:
  7525.  
  7526.          mov   ax,1
  7527.          push  ax
  7528.          push  word ptr DGROUP:_j
  7529.          push  word ptr DGROUP:_i
  7530.          call  near ptr _Test
  7531.          add   sp,6
  7532.  
  7533. úñÑ ó¿ñ¡«, τΓ« »αáóδ⌐ »áαá¼ÑΓα (º¡áτÑ¡¿Ñ  1),  ºá¡«ß¿Γß∩  ó  ßΓѬ
  7534. »Ñαóδ¼, ºáΓѼ Γπñᠺᡫ߿Γß∩ »áαá¼ÑΓα j ¿, ¡á¬«¡Ñµ, i.
  7535.  
  7536.      Åα¿ ó«ºóαáΓÑ ¿º Σπ¡¬µ¿¿ ºá¡ÑßÑ¡¡δÑ ó ßΓѬ »áαá¼ÑΓαδ óßÑ  ÑΘÑ
  7537. ¡áσ«ñ∩Γß∩ Γá¼, ¡« «¡¿ í«½∞ΦÑ ¡Ñ ¿ß»«½∞ºπεΓß∩. Å«φΓ«¼π ¡Ñ»«ßαÑñßΓ-
  7538. óÑ¡¡« »«ß½Ñ ¬áªñ«ú« ó맮óá Σπ¡¬µ¿¿ Æπαí« æ¿ ¡áßΓαá¿óáÑΓ π¬áºáΓѽ∞
  7539. ßΓѬᠠ«íαáΓ¡« ó ß««ΓóÑΓßΓó¿¿ ß« º¡áτÑ¡¿Ñ¼, ¬«Γ«α«Ñ «¡ ¿¼Ñ½ »ÑαÑñ
  7540. ºá¡ÑßÑ¡¿Ñ¼ ó ßΓѬ »áαá¼ÑΓα«ó (»áαá¼ÑΓαδ, Γᬿ¼ «íαẫ¼,  «Γíαáßδ-
  7541. óáεΓß∩). é »αÑñδñπΘѼ »α¿¼ÑαÑ Γα¿ »áαá¼ÑΓαá (»« ñóá íá⌐Γá ¬áªñδ⌐)
  7542. ºá¡¿¼áεΓ ó ßΓѬѠó¼ÑßΓÑ 6 íá⌐Γ, »«φΓ«¼π Æπαí« æ¿ ñ«íáó½∩ÑΓ º¡áτÑ-
  7543. ¡¿Ñ 6 ¬ π¬áºáΓѽε ßΓѬá,  τΓ«íδ «Γíα«ß¿Γ∞ »áαá¼ÑΓαδ »«ß½Ñ «íαáΘÑ-
  7544. ¡¿∩ ¬ Σπ¡¬µ¿¿ Test. é᪡δ⌐ ¼«¼Ñ¡Γ ºñÑß∞ ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ« »«
  7545. ß«ú½áΦÑ¡¿∩¼ Æπαí« æ¿ ºá πñá½Ñ¡¿Ñ »áαá¼ÑΓα«ó ¿º ßΓѬᠫΓóÑτáÑΓ óδ-
  7546. ºδóáεΘá∩  »α«úαἼᠠ(ß¼.  ñá½ÑÑ  αáºñѽ "æ«ú½áΦÑ¡¿∩ »« ó맮óá¼ ó
  7547. Åá߬á½Ñ").
  7548.  
  7549.      öπ¡¬µ¿¿ ÇßßѼí½Ñαá ¼«úπΓ «íαáΘáΓ∞ß∩ ¬ »áαá¼ÑΓαá¼, »ÑαÑñáóáÑ-
  7550. ¼δ¼ ó ßΓѬÑ, «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá BP. ìá»α¿¼Ñα, »αÑñ»«½«ª¿¼, τΓ«
  7551. Σπ¡¬µ¿∩ Test ó »αÑñδñπΘѼ »α¿¼ÑαÑ  »αÑñßΓáó½∩ÑΓ  ß«í«⌐  ß½ÑñπεΘπε
  7552. Σπ¡¬µ¿ε ¡á ÇßßѼí½ÑαÑ:
  7553.  
  7554.                      DOSSEG
  7555.                      .MODEL   SMALL
  7556.                      .CODE
  7557.                      PUBLIC   _Test
  7558. _Test                PROC
  7559.                      push   bp
  7560.                      mov    bp,sp
  7561.                      mov    ax,[bp+4]    ; »«½πτ¿Γ∞ »áαá¼ÑΓα 1
  7562.                      add    ax,[bp+6]    ; »α¿íáó¿Γ∞ »áαá¼ÑΓα 2
  7563.  
  7564. TASM2 #2-5/䫬              = 198 =
  7565.  
  7566.                                          ; ¬ »áαá¼ÑΓαπ 1
  7567.                      sub    ax,[bp+8]    ; óδτÑßΓ∞ ¿º ßπ¼¼δ 3
  7568.                      pop    bp
  7569.                      ret
  7570. _Test                ENDP
  7571.  
  7572.      èᬠ¼«ª¡« ó¿ñÑΓ∞,  Σπ¡¬µ¿∩  Test  »«½πτáÑΓ  »ÑαÑñáóáѼδÑ  ¿º
  7573. »α«úαá¼¼δ  ¡á  ∩ºδ¬Ñ  æ¿  »áαá¼ÑΓαδ  τÑαѺ ßΓѬ, «Γ¡«ß¿Γѽ∞¡« BP.
  7574. (àß½¿ óδ »«¼¡¿ΓÑ, BP áñαÑßπÑΓß∩ ¬ ßÑú¼Ñ¡Γπ ßΓѬá.) ì« «Γ¬πñá  «¡á
  7575. º¡áÑΓ, úñÑ ¡á⌐Γ¿ »áαá¼ÑΓαδ «Γ¡«ß¿Γѽ∞¡« BP?
  7576.  
  7577.      ìá É¿ß. 7.4 »«¬áºá¡«, ¬á¬ óδú½∩ñ¿Γ  ßΓѬ  »ÑαÑñ  óδ»«½¡Ñ¡¿Ñ¼
  7578. »Ñαó«⌐ ¿¡ßΓαπ¬µ¿¿ ó Σπ¡¬µ¿¿ Test:
  7579.  
  7580.    i = 25;
  7581.    j = 4;
  7582.    Test(1, j, 1);
  7583.  
  7584.                              .                       .
  7585.                              .                       .
  7586.                              |                       |
  7587.                              |-----------------------|
  7588.                              |                       |
  7589.                              |-----------------------|
  7590.                 SP -->       |    ÇñαÑß ó«ºóαáΓá     |
  7591.                              |-----------------------|
  7592.                 SP + 2       |        25 (i)         |
  7593.                              |-----------------------|
  7594.                 SP + 4       |        4 (j)          |
  7595.                              |-----------------------|
  7596.                 SP + 6       |           1           |
  7597.                              |-----------------------|
  7598.                              |                       |
  7599.                              |-----------------------|
  7600.                              |                       |
  7601.                              .                       .
  7602.  
  7603.      É¿ß. 7.4 æ«ßΓ«∩¡¿Ñ ßΓѬᠻÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ »Ñαó«⌐ ¿¡ßΓαπ¬µ¿¿
  7604. Σπ¡¬µ¿¿ Test.
  7605.  
  7606.      Åáαá¼ÑΓαδ Σπ¡¬µ¿¿ Test »αÑñßΓáó½∩εΓ ß«í«⌐ Σ¿¬ß¿α«óá¡¡δÑ  áñ-
  7607. αÑßá «Γ¡«ß¿Γѽ∞¡« SP, ¡áτ¿¡á∩ ß ∩τÑ⌐¬¿, ¡á ñóá íá⌐Γá ßΓáαΦÑ áñαÑ-
  7608. ßá, »« ¬«Γ«α«¼π σαá¡¿Γß∩ áñαÑß ó«ºóαáΓá, ºá¡ÑßÑ¡¡δ⌐ Γπñá »α¿  óδ-
  7609. º«óÑ. Å«ß½Ñ ºáúαπº¬¿ αÑú¿ßΓαá BP º¡áτÑ¡¿Ñ¼ SP óδ ¼«ªÑΓÑ «íαáΘáΓ∞-
  7610. ß∩ ¬ »áαá¼ÑΓαá¼ «Γ¡«ß¿Γѽ∞¡« BP. Äñ¡á¬«, óδ ñ«½ª¡δ ß¡áτá½á ß«σαá-
  7611. ¡¿Γ∞ BP,  Γᬠ¬á¬ ó óδºδóáεΘÑ⌐ »α«úαἼѠ»αÑñ»«½áúáÑΓß∩,  τΓ« »α¿
  7612.  
  7613. TASM2 #2-5/䫬              = 199 =
  7614.  
  7615. ó«ºóαáΓÑ  BP  ¿º¼Ñ¡Ñ¡ ¡Ñ íπñÑΓ.  çá¡ÑßÑ¡¿Ñ ó ßΓѬ BP ¿º¼Ñ¡∩ÑΓ óßÑ
  7616. ß¼ÑΘÑ¡¿∩ ó ßΓѬÑ.  ìá É¿ß. 7.5 »«¬áºá¡« ß«ßΓ«∩¡¿Ñ ßΓѬᠻ«ß½Ñ óδ-
  7617. »«½¡Ñ¡¿∩ ß½ÑñπεΘ¿σ ßΓ᫬ ¬«ñá:
  7618.  
  7619.                  .
  7620.                  .
  7621.                  .
  7622.                  push  bp
  7623.                  mov   bp,sp
  7624.                  .
  7625.                  .
  7626.                  .
  7627.  
  7628.                           .                       .
  7629.                           .                       .
  7630.                           |                       |
  7631.                           |-----------------------|
  7632.              SP -->       | BP óδºδóáεΘÑ⌐ »α«úα.  |  <-- BP
  7633.                           |-----------------------|
  7634.              SP + 2       |    ÇñαÑß ó«ºóαáΓá     |  BP + 2
  7635.                           |-----------------------|
  7636.              SP + 4       |        25 (i)         |  BP + 4
  7637.                           |-----------------------|
  7638.              SP + 6       |        4 (j)          |  BP + 6
  7639.                           |-----------------------|
  7640.              SP + 8       |           1           |  BP + 8
  7641.                           |-----------------------|
  7642.                           |                       |
  7643.                           |-----------------------|
  7644.                           |                       |
  7645.                           .                       .
  7646.  
  7647.      É¿ß. 7.5 æ«ßΓ«∩¡¿Ñ ßΓѬᠻ«ß½Ñ ¿¡ßΓαπ¬µ¿⌐ PUSH ¿ MOVE.
  7648.  
  7649.      Äαúá¡¿ºáµ¿∩ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó Σπ¡¬µ¿¿ τÑαѺ ßΓѬ ¿ ¿ß»«½∞-
  7650. º«óá¡¿Ñ  Ñú« ñ½∩ ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ - φΓ« ßΓá¡ñáα-
  7651. Γ¡δ⌐ »α¿Ñ¼ ó ∩ºδ¬Ñ æ¿. èᬠ¼«ª¡« ºá¼ÑΓ¿Γ∞, ¡Ñó᪡«, ß¬«½∞¬« »áαá-
  7652. ¼ÑΓα«ó ¿¼ÑÑΓ »α«úαἼᠡá ∩ºδ¬Ñ æ¿:  ßá¼δ⌐ ½Ñóδ⌐ »áαá¼ÑΓα  óßÑúñá
  7653. σαá¡¿Γß∩  ó ßΓѬѠ»« áñαÑßπ,  ¡Ñ»«ßαÑñßΓóÑ¡¡« ß½ÑñπεΘ¿¼ ºá ß«σαá-
  7654. ¡Ñ¡¡δ¼ ó ßΓѬѠáñαÑß«¼ ó«ºóαáΓá,  ß½ÑñπεΘ¿⌐ ó«ºóαáΘáѼδ⌐ »áαá¼ÑΓα
  7655. σαá¡¿Γß∩  ¡Ñ»«ßαÑñßΓóÑ¡¡«  »«ß½Ñ  ßἫú«  ½Ñó«ú« »áαá¼ÑΓαá ¿ Γ.ñ.
  7656. ū߬«½∞¬π »«α∩ñ«¬ ¿  Γ¿»  »ÑαÑñáóáѼδσ  »áαá¼ÑΓα«ó  ¿ºóÑßΓ¡δ,  ¿σ
  7657. óßÑúñá ¼«ª¡« ¡á⌐Γ¿ ó ßΓѬÑ.
  7658.  
  7659.      Åα«ßΓαá¡ßΓó« ñ½∩ ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ ¼«ª¡« ºá-
  7660. αѺÑαó¿α«óáΓ∞, óδτ¿Γá∩  ¿º  SP  ΓαÑíπѼ«Ñ  τ¿ß½« íá⌐Γ.  ìá»α¿¼Ñα,
  7661.  
  7662. TASM2 #2-5/䫬              = 200 =
  7663.  
  7664. »α«ßΓαá¡ßΓó« ñ½∩ ñ¿¡á¼¿τÑ߬«ú« ½«¬á½∞¡«ú« ¼áßß¿óá αẼÑα«¼  ó 100
  7665. íá⌐Γ ¼«ª¡«  ºáαѺÑαó¿α«óáΓ∞,  Ñß½¿ ¡áτáΓ∞ Σπ¡¬µ¿ε Test ß ¿¡ßΓαπ¬-
  7666. 権:
  7667.  
  7668.                      .
  7669.                      .
  7670.                      .
  7671.                      push  bp
  7672.                      mov   bp,sp
  7673.                      sub   sp,100
  7674.                      .
  7675.                      .
  7676.                      .
  7677.  
  7678. ¬á¬ »«¬áºá¡« ¡á É¿ß. 7.6.
  7679.  
  7680.                           .                       .
  7681.                           .                       .
  7682.                           |                       |
  7683.                           |-----------------------|
  7684.              SP -->       |                       |  BP - 100
  7685.                           |-----------------------|
  7686.                           |                       |
  7687.                           |-----------------------|
  7688.                           .                       .
  7689.                           .                       .
  7690.  
  7691.                           .                       .
  7692.                           .                       .
  7693.                           |                       |
  7694.                           |-----------------------|
  7695.              SP + 100     | BP óδºδóáεΘÑ⌐ »α«úα.  |  <-- BP
  7696.                           |-----------------------|
  7697.              SP + 102     |    ÇñαÑß ó«ºóαáΓá     |  BP + 2
  7698.                           |-----------------------|
  7699.              SP + 104     |        25 (i)         |  BP + 4
  7700.                           |-----------------------|
  7701.              SP + 106     |        4 (j)          |  BP + 6
  7702.                           |-----------------------|
  7703.              SP + 108     |           1           |  BP + 8
  7704.                           |-----------------------|
  7705.                           |                       |
  7706.                           |-----------------------|
  7707.                           |                       |
  7708.                           .                       .
  7709.  
  7710.  
  7711. TASM2 #2-5/䫬              = 201 =
  7712.  
  7713.      É¿ß. 7.6 æ«ßΓ«∩¡¿Ñ ßΓѬᠻ«ß½Ñ ¿¡ßΓαπ¬µ¿⌐ PUSH, MOVE ¿ SUB.
  7714.  
  7715.      Å«ß¬«½∞¬π Γá τáßΓ∞ ßΓѬá, úñÑ σαá¡∩Γß∩ ñ¿¡á¼¿τÑ߬¿Ñ  ½«¬á½∞-
  7716. ¡δÑ »ÑαѼѡ¡δÑ, »αÑñßΓáó½∩ÑΓ ß«í«⌐ í«½ÑÑ ¼½áñΦ¿Ñ  áñαÑßá, τѼ BP,
  7717. ñ½∩ «íαáΘÑ¡¿∩ ¬ ñ¿¡á¼¿τÑ߬¿¼  ½«¬á½∞¡δ¼  »ÑαѼѡ¡δ¼  ¿ß»«½∞ºπÑΓß∩
  7718. «Γα¿µáΓѽ∞¡«Ñ ß¼ÑΘÑ¡¿Ñ. ìá»α¿¼Ñα, ¿¡ßΓαπ¬µ¿∩:
  7719.  
  7720.            mov   byte ptr  [bp-100]
  7721.  
  7722. ñáßΓ   º¡áτÑ¡¿Ñ   »Ñαó«ú«    íá⌐Γá    αá¡ÑÑ    ºáαѺÑαó¿α«óá¡¡«ú«
  7723. 100-íá⌐Γ«ó«ú« ¼áßß¿óá. Åα¿ »ÑαÑñáτÑ »áαá¼ÑΓα«ó óßÑúñá ¿ß»«½∞ºπÑΓ-
  7724. ß∩ »«½«ª¿Γѽ∞¡á∩ áñαÑßᵿ∩ «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá BP.
  7725.  
  7726.      ò«Γ∩ ¼«ª¡« óδñѽ∩Γ∞ »α«ßΓαá¡ßΓó« ñ½∩ ñ¿¡á¼¿τÑ߬¿σ  ½«¬á½∞¡δσ
  7727. »ÑαѼѡ¡δσ «»¿ßá¡¡δ¼ óδΦÑ ß»«ß«í«¼, ó Æπαí« ÇßßѼí½ÑαÑ »αÑñπß¼«Γ-
  7728. αÑ¡á ß»Ñµ¿á½∞¡á∩ óÑαß¿∩ ñ¿αÑ¬Γ¿óδ LOCAL, ¬«Γ«αá∩ ßπΘÑßΓóÑ¡¡«  π»-
  7729. α«ΘáÑΓ  óδñѽѡ¿Ñ »á¼∩Γ¿ ¿ »α¿ßóá¿óá¡¿Ñ ¿¼Ñ¡ ñ½∩ ñ¿¡á¼¿τÑ߬¿σ ½«-
  7730. ¬á½∞¡δσ  »ÑαѼѡ¡δσ.  è«úñá  ó  »α«µÑñπαÑ  óßΓαÑτáÑΓß∩  ñ¿αÑ¬Γ¿óá
  7731. LOCAL, Γ« »«ñαáºπ¼ÑóáÑΓß∩, τΓ« «¡á «»αÑñѽ∩ÑΓ ñ½∩ ñá¡¡«⌐ »α«µÑñπ-
  7732. αδ ñ¿¡á¼¿τÑ߬¿Ñ ½«¬á½∞¡δÑ »ÑαѼѡ¡δÑ. ìá»α¿¼Ñα, ñ¿αÑ¬Γ¿óá:
  7733.  
  7734.           LOCAL  LocalArray:BYTE:100,LocalCount:WORD=AUTO_SIZE
  7735.  
  7736. «»αÑñѽ∩ÑΓ  ñ¿¡á¼¿τÑ߬¿Ñ  »ÑαѼѡ¡δÑ   LocalArray  ¿  LocalCount.
  7737. LocalArray ¡á ßἫ¼ ñѽѠ»αÑñßΓáó½∩ÑΓ ß«í«⌐ ¼ÑΓ¬π, »α¿αáó¡Ñ¡¡πε ¬
  7738. [BP-100], á LocalCount - φΓ« ¼ÑΓ¬á, »α¿αáó¡Ñ¡¡á∩ ¬ [BP-102].  Äñ-
  7739. ¡á¬«  óδ  ¼«ªÑΓÑ  ¿ß»«½∞º«óáΓ∞ ¿σ, ¬á¬ ¿¼Ñ¡á »ÑαѼѡ¡δσ. Åα¿ φΓ«¼
  7740. óá¼ ñáªÑ ¡Ñ ¡πª¡« íπñÑΓ º¡áΓ∞ ¿σ º¡áτÑ¡¿∩. AUTO_SIZE - φΓ«  «íΘÑÑ
  7741. τ¿ß½« íá⌐Γ («íΩѼ »á¼∩Γ¿),  ¡Ñ«íσ«ñ¿¼δσ ñ½∩ σαá¡Ñ¡¿∩ ñ¿¡á¼¿τÑ߬¿σ
  7742. ½«¬á½∞¡δσ »ÑαѼѡ¡δσ.  ùΓ«íδ óδñѽ¿Γ∞ »α«ßΓαá¡ßΓó« ñ½∩ ñ¿¡á¼¿τÑß-
  7743. ¬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ, φΓ« º¡áτÑ¡¿Ñ ¡πª¡« óδτÑßΓ∞ ¿º SP.
  7744.  
  7745.      Åα¿óÑñѼ  »α¿¼Ñα  Γ«ú«,  ¬á¬  ¡πª¡«  ¿ß»«½∞º«óáΓ∞  ñ¿αÑ¬Γ¿óπ
  7746. LOCAL:
  7747.  
  7748.                  .
  7749.                  .
  7750.                  .
  7751.  _TestSub        PROC
  7752.                  LOCAL
  7753.  LocalArray:BYTE:100,LocalCount:WORD=AUTO_SIZE
  7754.                  push  bp          ; ß«σαá¡¿Γ∞ π¬áºáΓѽ∞ ßΓѬá
  7755.                                    ; óδºδóáεΘÑ⌐ »α«úαá¼¼δ
  7756.                  mov   bp,sp       ; πßΓá¡«ó¿Γ∞ ß«íßΓóÑ¡¡δ⌐
  7757.                                    ; π¬áºáΓѽ∞ ßΓѬá
  7758.                  sub   sp,AUTO_SIZE ; óδñѽ¿Γ∞ »α«ßΓαá¡ßΓó« ñ½∩
  7759.  
  7760. TASM2 #2-5/䫬              = 202 =
  7761.  
  7762.                                    ; ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ
  7763.                                    ; »ÑαѼѡ¡δσ
  7764.                  mov   [LocalCount],10 ; πßΓá¡«ó¿Γ∞ »ÑαѼѡ¡πε
  7765.                                    ; LocalCount ó º¡áτÑ¡¿Ñ 10
  7766.                                    ; (LocalCount φΓ«  [BP-102])
  7767.                  .
  7768.                  .
  7769.                  .
  7770.                  mov   cx,[LocalCount] ; »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ
  7771.                                     ; (ßτÑΓτ¿¬) ¿º ½«¬á½∞¡«⌐
  7772.                                     ; »ÑαѼѡ¡«⌐
  7773.                  mov   al,'A'       ; ºá»«½¡¿¼ ß¿¼ó«½«¼ 'A'
  7774.                  lea   bx,[LocalArray] ; ßßδ½¬á ¡á ½«¬á½∞¡δ⌐
  7775.                                     ; ¼áßß¿ó LocalArray
  7776.                                     ; (LocalArray φΓ« [BP-100])
  7777.  FillLoop:
  7778.                  mov   [bx],al      ; ºá»«½¡¿Γ∞ ß½ÑñπεΘ¿⌐ íá⌐Γ
  7779.                  inc   bx           ; ßßδ½¬á ¡á ß½ÑñπεΘ¿⌐ íá⌐Γ
  7780.                  loop  FillLoop     ; «íαáí«ΓáΓ∞ ß½ÑñπεΘ¿⌐ íá⌐Γ,
  7781.                                     ; Ñß½¿ «¡ ¿¼ÑÑΓß∩
  7782.                  mov   sp,bp        ; «ßó«í«ñ¿Γ∞ »á¼∩Γ∞,
  7783.                                     ; óδñѽѡ¡πε ñ½∩ ñ¿¡á¼¿τÑß-
  7784.                                     ; ¬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ
  7785.                                     ; (¼«ª¡« ΓᬪѠ¿ß»«½∞º«óáΓ∞
  7786.                                     ; add sp,AUTO_SIZE)
  7787.                  pop   bp           ; ó«ßßΓá¡«ó¿Γ∞ π¬áºáΓѽ∞
  7788.                                     ; ßΓѬá óδºδóáεΘÑ⌐ »α«úαá¼¼δ
  7789.                  ret
  7790.  _TestSub        ENDP
  7791.                  .
  7792.                  .
  7793.                  .
  7794.  
  7795.      é ñá¡¡«¼ »α¿¼ÑαÑ ß½ÑñπÑΓ «íαáΓ¿Γ∞ ó¡¿¼á¡¿Ñ ¡Ñ Γ«, τΓ« »Ñαó«Ñ
  7796. »«½Ñ  »«ß½Ñ  «»αÑñѽѡ¿∩ ñá¡¡«⌐ ñ¿¡á¼¿τÑ߬«⌐ ½«¬á½∞¡«⌐ »ÑαѼѡ¡«⌐
  7797. »αÑñßΓáó½∩ÑΓ ß«í«⌐ Γ¿» ñá¡¡δσ ñ½∩ φΓ«⌐  »ÑαѼѡ¡«⌐:  BYTE,  WORD,
  7798. DWORD,  NEAR ¿ Γ.ñ.  éΓ«α«Ñ »«½Ñ »«ß½Ñ «»αÑñѽѡ¿∩ ñá¡¡«⌐ ñ¿¡á¼¿-
  7799. τÑ߬«⌐ ½«¬á½∞¡«⌐ »ÑαѼѡ¡«⌐ - φΓ« τ¿ß½« φ½Ñ¼Ñ¡Γ«ó π¬áºá¡¡«ú«  Γ¿-
  7800. »á, αѺÑαó¿απѼδσ ñ½∩ ñá¡¡«⌐ »ÑαѼѡ¡«⌐. ¥Γ« »«½Ñ ∩ó½∩ÑΓß∩ ¡Ñ«í∩-
  7801. ºáΓѽ∞¡δ¼ ¿ «»αÑñѽ∩ÑΓ ¿ß»«½∞ºπѼδ⌐ ñ¿¡á¼¿τÑ߬¿⌐ ½«¬á½∞¡δ⌐ ¼áßß¿ó
  7802. (Ñß½¿ «¡ ¿ß»«½∞ºπÑΓß∩). àß½¿ ñá¡¡«Ñ »«½Ñ »α«»πΘÑ¡«, Γ« αѺÑαó¿απ-
  7803. ÑΓß∩ «ñ¿¡ φ½Ñ¼Ñ¡Γ π¬áºá¡¡«ú« Γ¿»á.  é ¿Γ«úÑ LocalArray ß«ßΓ«¿Γ ¿º
  7804. 100 φ½Ñ¼Ñ¡Γ«ó αẼÑα«¼ ó 1 íá⌐Γ, á LocalCount - ¿º «ñ¡«ú« φ½Ñ¼Ñ¡-
  7805. Γá αẼÑα«¼ ó ß½«ó« (ß¼. »α¿¼Ñα).
  7806.  
  7807.      ÄΓ¼ÑΓ¿¼ ΓᬪÑ, τΓ« ßΓ᫬á ß ñ¿αÑ¬Γ¿ó«⌐ LOCAL ó ñá¡¡«¼ »α¿¼Ñ-
  7808.  
  7809. TASM2 #2-5/䫬              = 203 =
  7810.  
  7811. αÑ  ºáóÑαΦáÑΓß∩ »«½Ñ¼ =AUTO_SIZE. ¥Γ« »«½Ñ, ¡áτ¿¡áεΘÑÑß∩ ß« º¡á¬á
  7812. αáóÑ¡ßΓóá, ¡Ñ«í∩ºáΓѽ∞¡«. àß½¿ «¡« »α¿ßπΓßΓóπÑΓ, Γ« ¼ÑΓ¬á, ß½Ññπ-
  7813. εΘá∩ ºá º¡á¬«¼ αáóÑ¡ßΓóá,  πßΓá¡áó½¿óáÑΓß∩ ó º¡áτÑ¡¿Ñ τ¿ß½á  íá⌐Γ
  7814. ΓαÑíπѼ«⌐ ñ¿¡á¼¿τÑ߬«⌐ ½«¬á½∞¡«⌐ »á¼∩Γ¿.  éδ ñ«½ª¡δ ºáΓѼ ¿ß»«½∞-
  7815. º«óáΓ∞ ñá¡¡πε ¼ÑΓ¬π ñ½∩ óδñѽѡ¿∩ ¿ «ßó«í«ªñÑ¡¿∩ »á¼∩Γ¿ ñ½∩ ñ¿¡á-
  7816. ¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ, Γᬠ¬á¬ ñ¿αÑ¬Γ¿óá LABEL Γ«½∞¬« úÑ-
  7817. ¡Ñα¿απÑΓ ¼ÑΓ¬¿ ¿ ¡Ñ  úÑ¡Ñα¿απÑΓ  ¡¿¬á¬«ú«  ¬«ñá  ¿½¿  »á¼∩Γ¿  ñ½∩
  7818. ñá¡¡δσ.  ê¡áτÑ ú«ó«α∩, ñ¿αÑ¬Γ¿óá LOCAL ¡Ñ óδñѽ∩ÑΓ »á¼∩Γ∞ ñ½∩ ñ¿-
  7819. ¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ, á »α«ßΓ« úÑ¡Ñα¿απÑΓ ¼ÑΓ¬¿, ¬«Γ«-
  7820. αδÑ  óδ  ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ¬á¬ ñ½∩ óδñѽѡ¿∩ »á¼∩Γ¿,  Γᬠ¿ ñ½∩
  7821. ñ«ßΓπ»á ¬ ñ¿¡á¼¿τÑ߬¿¼ ½«¬á½∞¡δ¼ »ÑαѼѡ¡δ¼.
  7822.  
  7823.      ÄτÑ¡∞ πñ«í¡«Ñ ßó«⌐ßΓó« ñ¿αÑ¬Γ¿óδ LOCAL  ºá¬½ετáÑΓß∩  ó  Γ«¼,
  7824. τΓ«  «í½áßΓ∞  ñÑ⌐ßΓó¿∩  ¼ÑΓ«¬ ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ ¿
  7825. «íΘÑú« αẼÑαá ñ¿¡á¼¿τÑ߬¿σ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ  «úαá¡¿τÑ¡á  Γ«⌐
  7826. »α«µÑñπα«⌐, ó ¬«Γ«α«⌐ «¡¿ ¿ß»«½∞ºπεΓß∩, »«φΓ«¼π óδ ¼«ªÑΓÑ ßó«í«ñ-
  7827. ¡« ¿ß»«½∞º«óáΓ∞ ¿¼∩ ñ¿¡á¼¿τÑ߬«⌐ ½«¬á½∞¡«⌐  »ÑαѼѡ¡«⌐  ó  ñαπú«⌐
  7828. »α«µÑñπαÑ.
  7829.  
  7830.      èᬠ¼«ª¡« ºá¼ÑΓ¿Γ∞, ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ LOCAL  «»αÑñѽ∩Γ∞  ¿
  7831. ¿ß»«½∞º«óáΓ∞  áóΓ«¼áΓ¿τÑ߬¿Ñ  »ÑαѼѡ¡δÑ  ¡á¼¡«ú« ½ÑúτÑ. ÄΓ¼ÑΓ¿¼,
  7832. τΓ« »α¿ ¿ß»«½∞º«óá¡¿¿ ó ¼á¬α«¬«¼á¡ñáσ ñ¿αÑ¬Γ¿óá LOCAL  ¿¼ÑÑΓ  ß«-
  7833. óÑαΦÑ¡¡«  ñαπú«Ñ  º¡áτÑ¡¿Ñ  (ß¼. â½áóπ 9). (éδ ¼«ªÑΓÑ «íαáΓ¿Γ∞ß∩
  7834. ΓᬪѠ¬ â½áóÑ 3 "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá", úñÑ »α¿óÑñÑ¡á ñ«»«½¡¿-
  7835. Γѽ∞¡á∩ ¿¡Σ«α¼áµ¿∩ « ó¿ñáσ ñ¿αÑ¬Γ¿óδ LOCAL.)
  7836.  
  7837.      èßΓáΓ¿, Æπαí« æ¿ αáí«ΓáÑΓ ß úαá¡¿µá¼¿ ßΓѬá ΓᬠªÑ,  ¬á¬  ¼δ
  7838. ºñÑß∞  «»¿ß὿.  éδ ¼«ªÑΓѠ߬«¼»¿½¿α«óáΓ∞ ¡Ñ߬«½∞¬« ¼«ñπ½Ñ⌐ Æπαí«
  7839. æ¿ ß »áαá¼ÑΓα«¼ -s ¿ »«ß¼«ΓαÑΓ∞, ¬á¬«⌐ ¬«ñ ÇßßѼí½Ñαá  úÑ¡Ñα¿απÑΓ
  7840. Æπαí« æ¿ ¿ ¬á¬ Γá¼ ß«ºñáεΓß∩ ¿ ¿ß»«½∞ºπεΓß∩ úαá¡¿µδ ßΓѬá.
  7841.  
  7842.      éßÑ  φΓ«  »αѬαáß¡«,  ¡«  ºñÑß∞  ÑßΓ∞  ¡Ñ¬«Γ«αδÑ  Γαπñ¡«ßΓ¿.
  7843. é«-»Ñαóδσ, Γᬫ⌐ ß»«ß«í ñ«ßΓπ»á ¬ »áαá¼ÑΓαá¼, »α¿ ¬«Γ«α«¼ ¿ß»«½∞-
  7844. ºπÑΓß∩ »«ßΓ«∩¡¡«Ñ ß¼ÑΘÑ¡¿Ñ «Γ¡«ß¿Γѽ∞¡« BP ñ«ßΓáΓ«τ¡«  ¡Ñ»α¿∩ΓÑ¡:
  7845. »α¿  φΓ«¼  ¡Ñ  Γ«½∞¬« ½Ñú¬« «Φ¿í¿Γ∞ß∩, ¡« Ñß½¿ óδ ñ«íáó¿ΓÑ ñαπú«⌐
  7846. »áαá¼ÑΓα, óßÑ ñαπú¿Ñ ß¼ÑΘÑ¡¿∩ π¬áºáΓѽ∩ ßΓѬᠠó  Σπ¡¬µ¿¿  ñ«½ª¡δ
  7847. ¿º¼Ñ¡¿Γ∞ß∩.  ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« Σπ¡¬µ¿∩ Test ó«ß»α¿¡¿¼áÑΓ
  7848. Γα¿ »áαá¼ÑΓαá:
  7849.  
  7850.         Test(Flag, i, j, 1);
  7851.  
  7852.      Æ«úñá i ¡áσ«ñ¿Γß∩ »« ß¼ÑΘÑ¡¿ε 6, á ¡Ñ »« ß¼ÑΘÑ¡¿ε 4, j -  »«
  7853. ß¼ÑΘÑ¡¿ε 8, á ¡Ñ 6 ¿ Γ.ñ. ä½∩ ß¼ÑΘÑ¡¿⌐ »áαá¼ÑΓα«ó ¼«ª¡« ¿ß»«½∞º«-
  7854. óáΓ∞ ñ¿αÑ¬Γ¿óπ EQU:
  7855.  
  7856.                     .
  7857.  
  7858. TASM2 #2-5/䫬              = 204 =
  7859.  
  7860.                     .
  7861.                     .
  7862. Flag                EQU  4
  7863. AddParm1            EQU  6
  7864. AddParm2            EQU  8
  7865. SubParm1            EQU  10
  7866.  
  7867.                     mov   ax[bp+AddParm1]
  7868.                     add   ax,[bp+AddParm1]
  7869.                     sub   ax,[bp+SubParm1]
  7870.                     .
  7871.                     .
  7872.                     .
  7873.  
  7874. ¡« óδτ¿ß½∩Γ∞ ß¼ÑΘÑ¡¿∩ ¿ αáí«ΓáΓ∞ ß ¡¿¼¿ ñ«ó«½∞¡«  ß½«ª¡«.  Äñ¡á¬«
  7875. ºñÑß∞  ¼«úπΓ ó«º¡¿¬¡πΓ∞ ¿ í«½ÑÑ ßÑα∞Ѻ¡δÑ »α«í½Ñ¼δ: ó ¼«ñѽ∩σ »á-
  7876. ¼∩Γ¿ ß ñá½∞¡¿¼ ¬«ñ«¼ αẼÑα ºá¡ÑßÑ¡¡«ú« ó  ßΓѬ  áñαÑßá  ó«ºóαáΓá
  7877. πóѽ¿τ¿óáÑΓß∩ ¡á ñóá íá⌐Γá, ¬á¬ ¿ αẼÑαδ »ÑαÑñáóáѼδσ π¬áºáΓѽÑ⌐
  7878. ¡á ¬«ñ ¿ ñá¡¡δѠ󠼫ñѽ∩σ »á¼∩Γ¿ ß ñá½∞¡¿¼ ¬«ñ«¼ ¿ ñá½∞¡¿¼¿  ñá¡-
  7879. ¡δ¼¿,  ß««ΓóÑΓßΓóÑ¡¡«. Éáºαáí«Γ¬á Σπ¡¬µ¿¿, ¬«Γ«αá∩ ß αáó¡δ¼ πß»Ñ-
  7880. σ«¼ íπñÑΓ áßßÑ¼í½¿α«óáΓ∞ß∩ ¿ »αáó¿½∞¡« αáí«ΓáΓ∞ ß π¬áºáΓѽѼ ßΓÑ-
  7881. ¬á »α¿ ¿ß»«½∞º«óá¡¿¿ ½εí«⌐ ¼«ñѽ¿ »á¼∩Γ¿ í佫 íδ óÑß∞¼á ¡Ñ»α«ßΓ«⌐
  7882. ºáñáτÑ⌐.
  7883.  
  7884.      Äñ¡á¬« «»áßÑ¡¿∩ ¿º½¿Φ¡¿. é  Æπαí«  ÇßßѼí½ÑαÑ  »αÑñπß¼«ΓαÑ¡á
  7885. ñ¿αÑ¬Γ¿óá  ARG,  ß »«¼«Θ∞ε ¬«Γ«α«⌐ ¼«ª¡« ½Ñú¬« óδ»«½¡∩Γ∞ »ÑαÑñáτπ
  7886. »áαá¼ÑΓα«ó ó »α«úαá¼¼áσ ¡á ÇßßѼí½ÑαÑ.
  7887.  
  7888.      ä¿αÑ¬Γ¿óá ARG áóΓ«¼áΓ¿τÑ߬¿ úÑ¡Ñα¿απÑΓ »αáó¿½∞¡δÑ ß¼ÑΘÑ¡¿∩ ó
  7889. ßΓѬѠñ½∩ ºáñá¡¡δσ óἿ »ÑαѼѡ¡δσ. ìá»α¿¼Ñα:
  7890.  
  7891.            arg      FillArray:WORD,Count:WORD,FillValue:BYTE
  7892.  
  7893.      çñÑß∞ ºáñáÑΓß∩ Γα¿ »áαá¼ÑΓαá: FillArray, »áαá¼ÑΓα αẼÑα«¼ ó
  7894. ß½«ó«, Count, ΓᬪѠ»áαá¼ÑΓα αẼÑα«¼ ó ß½«ó« ¿ FillValue - »áαá-
  7895. ¼ÑΓα  αẼÑα«¼  ó  íá⌐Γ.  ä¿αÑ¬Γ¿óá  ARG    πßΓá¡áó½¿óáÑΓ   ¼ÑΓ¬π
  7896. FillArray   ó º¡áτÑ¡¿Ñ [BP+4] (»«ñαáºπ¼ÑóáÑΓß∩, τΓ« ¬«ñ ¡áσ«ñ¿Γß∩
  7897. ó »α«µÑñπαÑ í½¿ª¡Ñú« Γ¿»á), ¼ÑΓ¬π Count - ó  º¡áτÑ¡¿Ñ  [BP+6],  á
  7898. ¼ÑΓ¬π FillValue - ó º¡áτÑ¡¿Ñ [BP+8]. Äñ¡á¬« «ß«íÑ¡¡« µÑ¡¡á ñ¿αѬ-
  7899. Γ¿óá ARG ΓѼ, τΓ« óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ «»αÑñѽѡ¡δÑ  ß  ÑÑ  »«-
  7900. ¼«Θ∞ε ¼ÑΓ¬¿ ¡Ñ ºáí«Γ∩ß∞ « ΓÑσ º¡áτÑ¡¿∩σ, ó ¬«Γ«αδÑ «¡¿ πßΓá¡«ó½Ñ-
  7901. ¡δ.
  7902.  
  7903.      ìá»α¿¼Ñα, »αÑñ»«½«ª¿¼, τΓ« π óáß ÑßΓ∞ Σπ¡¬µ¿∩ FillSub  ¬«Γ«-
  7904. αá∩ óδºδóáÑΓß∩ ¿º æ¿ ß½ÑñπεΘ¿¼ «íαẫ¼:
  7905.  
  7906.  
  7907. TASM2 #2-5/䫬              = 205 =
  7908.  
  7909.       main()
  7910.       {
  7911.       #define ARRAY_LENGTH 100
  7912.          char TestArray[ARRAY_LENGTH];
  7913.          FillSub(TestArray,ARRAY_LENGTH,'*');
  7914.       }
  7915.  
  7916.      é FillSub ñ¿αÑ¬Γ¿óπ ARG ñ½∩ αáí«Γδ ß »áαá¼ÑΓαἿ  ¼«ª¡«  ¿ß-
  7917. »«½∞º«óáΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
  7918.  
  7919. _FillSub       PROC  NEAR
  7920.          ARG   FillArray:WORD,Count:WORD,FillValue:BYTE
  7921.          push  bp           ; ß«σαá¡¿Γ∞ π¬áºáΓѽ∞ ßΓѬá
  7922.                             ; óδºδóáεΘÑ⌐ »α«úαá¼¼δ
  7923.          mov   bp,sp        ; πßΓá¡«ó¿Γ∞ ßó«⌐ ß«íßΓóÑ¡¡δ⌐
  7924.                             ; π¬áºáΓѽ∞ ßΓѬá
  7925.          mov   bx,[FillArray] ; »«½πτ¿Γ∞ π¬áºáΓѽ∞ ¡á
  7926.                             ; ºá»«½¡∩Ѽδ⌐ ¼áßß¿ó
  7927.          mov   cx,[Count]   ; »«½πτ¿Γ∞ ºá»«½¡∩Ѽπε ñ½¿¡π
  7928.          mov   al,[FillValue] ; »«½πτ¿Γ∞ º¡áτÑ¡¿Ñ-ºá»«½¡¿Γѽ∞
  7929. FillLoop:
  7930.          mov   [bx],al      ; ºá»«½¡¿Γ∞ ß¿¼ó«½
  7931.          inc   bx           ; ßßδ½¬á ¡á ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  7932.          loop  FillLoop     ; «íαáí«ΓáΓ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  7933.          pop   bp           ; ó«ßßΓá¡«ó¿Γ∞ π¬áºáΓѽ∞ ßΓѬá
  7934.                             ; óδºδóáεΘÑ⌐ »α«úαá¼¼δ
  7935.          ret
  7936. _FillSub       ENDP
  7937.  
  7938.      ìÑ »αáóñá ½¿, πñ«í¡« αáí«ΓáΓ∞ ß »áαá¼ÑΓαἿ ß »«¼«Θ∞ε ñ¿αѬ-
  7939. Γ¿óδ  ARG? èα«¼Ñ Γ«ú«, ñ¿αÑ¬Γ¿óá ARG áóΓ«¼áΓ¿τÑ߬¿ πτ¿ΓδóáÑΓ αáº-
  7940. ½¿τ¡δÑ αẼÑαδ ó«ºóαáΓ«ó í½¿ª¡Ñú« ¿ ñá½∞¡Ñú« Γ¿»á. äαπú«Ñ πñ«íßΓ-
  7941. ó«  ß«ßΓ«¿Γ  ó  Γ«¼,  τΓ« ¼ÑΓ¬¿, «»αÑñѽѡ¡δÑ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ
  7942. ARG, «úαá¡¿τÑ¡δ »« «í½áßΓ¿ ñÑ⌐ßΓó¿∩ Γ«⌐ »α«µÑñπα«⌐, úñÑ  «¡¿  ¿ß-
  7943. »«½∞ºπεΓß∩, ¿ óá¼ ¡Ñ »α¿σ«ñ¿Γß∩ íÑß»«¬«¿Γ∞ß∩ « ó«º¼«ª¡«¼ ¬«¡Σ½¿¬-
  7944. ΓÑ ¼Ñªñπ ¿¼Ñ¡á¼¿ »áαá¼ÑΓα«ó ó αẽ¿τ¡δσ »α«µÑñπαáσ.
  7945.  
  7946.      ä«»«½¡¿Γѽ∞¡á∩ ¿¡Σ«α¼áµ¿∩ « ñ¿αÑ¬Γ¿óÑ ARG ß«ñÑনΓß∩ ó â½áóÑ
  7947. 3 "æ»αáó«τ¡«ú« απ¬«ó«ñßΓóá".
  7948.  
  7949.  
  7950.  
  7951.  
  7952. TASM2 #2-5/䫬              = 206 =
  7953.  
  7954.                          æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó
  7955. -----------------------------------------------------------------
  7956.  
  7957.      Åα¿ óºá¿¼«ñÑ⌐ßΓó¿¿ Æπαí« ÇßßѼí½Ñαá ¿ Æπαí« æ¿ óδºδóáѼδÑ ¿º
  7958. »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿ Σπ¡¬µ¿¿ ÇßßѼí½Ñαá  ¼«úπΓ  ñѽáΓ∞  óßÑ  τΓ«
  7959. πú«ñ¡«,  ¡« »α¿ φΓ«¼ «¡¿ ñ«½ª¡δ ß«σαá¡∩Γ∞ αÑú¿ßΓαδ BP, SP, CS, DS
  7960. ¿ SS.  ò«Γ∩ »α¿ óδ»«½¡Ñ¡¿¿ Σπ¡¬µ¿¿ ÇßßѼí½Ñαá φΓ¿ αÑú¿ßΓαδ  ¼«ª¡«
  7961. ¿º¼Ñ¡∩Γ∞,  »α¿  ó«ºóαáΓÑ  ¿º  óδºδóáѼ«⌐  »«ñ»α«úαá¼¼δ «¡¿ ñ«½ª¡δ
  7962. ¿¼ÑΓ∞ ó Γ«τ¡«ßΓ¿ ΓᬿѠº¡áτÑ¡¿∩,  ¬á¬¿Ñ «¡¿ ¿¼Ñ½¿ »α¿ ÑÑ  ó맮óÑ.
  7963. ÉÑú¿ßΓαδ AX, BX, CX, DX ¿ ES, á Γá¬ªÑ Σ½áú¿ ¼«úπΓ »α«¿ºó«½∞¡« ¿º-
  7964. ¼Ñ¡∩Γ∞ß∩.
  7965.  
  7966.      ÉÑú¿ßΓαδ DI ¿ SI »αÑñßΓáó½∩εΓ ß«í«⌐ «ß«íδ⌐ ß½πτá⌐, Γᬠ¬á¬ ó
  7967. Æπαí«  æ¿ «¡¿ ¿ß»«½∞ºπεΓß∩ ñ½∩ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ. àß½¿ ó ¼«-
  7968. ñπ½Ñ æ¿, ¿º ¬«Γ«α«ú« óδºδóáÑΓß∩ óáΦá Σπ¡¬µ¿∩ ¡á  ÇßßѼí½ÑαÑ,  ¿ß-
  7969. »«½∞º«óá¡¿Ñ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ αáºαÑΦÑ¡«, Γ« óδ ñ«½ª¡δ ß«σαá-
  7970. ¡¿Γ∞ αÑú¿ßΓαδ SI ¿ DI, Ñß½¿ ªÑ ¡ÑΓ, Γ« ß«σαá¡∩Γ∞ ¿σ ¡Ñ ¡πª¡«. Äñ-
  7971. ¡á¬«  ¡Ñ»½«σ«  óßÑúñá ß«σαá¡∩Γ∞ φΓ¿ αÑú¿ßΓαδ, ¡Ñºáó¿ß¿¼« «Γ Γ«ú«,
  7972. αáºαÑΦÑ¡« ¿½¿  ºá»αÑΘÑ¡«  ¿ß»«½∞º«óá¡¿Ñ  αÑú¿ßΓα«óδσ  »ÑαѼѡ¡δσ.
  7973. Æαπñ¡«  ºáαá¡ÑÑ  úáαá¡Γ¿α«óáΓ∞,  τΓ«  óá¼ ¡Ñ »α¿ñÑΓß∩ ¬«¼»«¡«óáΓ∞
  7974. ñá¡¡δ⌐ ¼«ñπ½∞ ÇßßѼí½Ñαá ß ñαπú¿¼ ¼«ñπ½Ñ¼ ¡á ∩ºδ¬Ñ æ¿,  ¿½¿ »ÑαÑ-
  7975. ¬«¼»¿½¿α«óáΓ∞  ¼«ñπ½∞  æ¿ ß αáºαÑΦÑ¡¿Ñ¼ ¿ß»«½∞º«óá¡¿∩ αÑú¿ßΓα«óδσ
  7976. »ÑαѼѡ¡δσ.  Åα¿ φΓ«¼ óδ ¼«ªÑΓÑ ºáíδΓ∞, τΓ« ¿º¼Ñ¡Ñ¡¿∩ ¡πª¡« ΓᬪÑ
  7977. ó¡ÑßΓ¿ ¿ ó ¬«ñ ÇßßѼí½Ñαá.
  7978.  
  7979. 髺óαáΓ º¡áτÑ¡¿⌐
  7980. -----------------------------------------------------------------
  7981.  
  7982.      éδºδóáѼδÑ ¿º »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿ Σπ¡¬µ¿¿  ¡á  ÇßßѼí½ÑαÑ,
  7983. Γᬠ ªÑ  ¬á¬  ¿ Σπ¡¬µ¿¿ æ¿,  ¼«úπΓ ó«ºóαáΘáΓ∞ º¡áτÑ¡¿∩.  ç¡áτÑ¡¿∩
  7984. Σπ¡¬µ¿⌐ ó«ºóαáΘáεΓß∩ ß½ÑñπεΘ¿¼ «íαẫ¼:
  7985.  
  7986. -----------------------------------------------------------------
  7987. Æ¿» ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩    âñÑ ¡áσ«ñ¿Γß∩ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ
  7988. -----------------------------------------------------------------
  7989. unsigned char                                AX
  7990. char                                         AX
  7991. enum                                         AX
  7992. unsigned short                               AX
  7993. short                                        AX
  7994. unsigned int                                 AX
  7995. int                                          AX
  7996. unsigned long                                DX:AX
  7997. long                                         DX:AX
  7998. float                          αÑú¿ßΓα óÑαΦ¿¡δ ßΓѬá ß«»α«µÑßß«αá
  7999.                                8087 (ST(0))
  8000.  
  8001. TASM2 #2-5/䫬              = 207 =
  8002.  
  8003. double                         αÑú¿ßΓα óÑαΦ¿¡δ ßΓѬá ß«»α«µÑßß«αá
  8004.                                8087 (ST(0))
  8005. long double                    αÑú¿ßΓα óÑαΦ¿¡δ ßΓѬá ß«»α«µÑßß«αá
  8006.                                8087 (ST(0))
  8007. near*                                        AX
  8008. far*                                         DX:AX
  8009. -----------------------------------------------------------------
  8010.  
  8011.      é «íΘѼ ß½πτáÑ 8- ¿ 16-í¿Γ«óδÑ º¡áτÑ¡¿∩ ó«ºóαáΘáεΓß∩  ó  αÑ-
  8012. ú¿ßΓαÑ  AX,  á 32-í¿Γ«óδÑ º¡áτÑ¡¿∩ - ó AX:DX (»α¿ φΓ«¼ ßΓáαΦ¿Ñ 16
  8013. í¿Γ º¡áτÑ¡¿∩ ¡áσ«ñ∩Γß∩ ó αÑú¿ßΓαÑ DX).  ç¡áτÑ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ-
  8014. ¬«⌐ ó«ºóαáΘáεΓß∩ ó αÑú¿ßΓαÑ ST(0), ¬«Γ«αδ⌐ »αÑñßΓáó½∩ÑΓ ß«í«⌐ αÑ-
  8015. ú¿ßΓα óÑαΦ¿¡δ ßΓѬá ß«»α«µÑßß«αá 8087 ¿½¿  φ¼π½∩Γ«αá ß«»α«µÑßß«αá
  8016. 8087, Ñß½¿ ¿ß»«½∞ºπÑΓß∩ φ¼π½∩Γ«α «»Ñαᵿ⌐ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐.
  8017.  
  8018.      æ« ßΓαπ¬ΓπαἿ ñѽ« «íßΓ«¿Γ  ¡Ñ߬«½∞¬«  ß½«ª¡ÑÑ.  æΓαπ¬Γπαδ,
  8019. ¿¼ÑεΘ¿Ñ  ñ½¿¡π 1 ¿½¿ 2 íá⌐Γá, ó«ºóαáΘáεΓß∩ ó αÑú¿ßΓαÑ AX, á ßΓπ¬-
  8020. Γπαδ ñ½¿¡«⌐ 4 íá⌐Γá - ó αÑú¿ßΓαáσ AX:DX. ÆαÑσíá⌐Γ«óδÑ ßΓαπ¬Γπαδ ¿
  8021. ßΓαπ¬Γπαδ,  »αÑóδΦáεΘ¿Ñ 4 íá⌐Γá ñ«½ª¡δ σαá¡¿Γ∞ß∩ ó «í½áßΓ¿ ßΓáΓ¿-
  8022. τÑ߬¿σ ñá¡¡δσ, »α¿ φΓ«¼ ñ«½ªÑ¡ ó«ºóαáΘáΓ∞ß∩ π¬áºáΓѽ∞ ¡á φΓ¿ ßΓá-
  8023. Γ¿τÑ߬¿Ñ ñá¡¡δÑ. èᬠ¿ óßÑ π¬áºáΓѽ¿, π¬áºáΓѽ¿ ¡á ßΓαπ¬Γπαδ, ¬«-
  8024. Γ«αδÑ ¿¼ÑεΓ í½¿ª¡¿⌐ Γ¿» (NEAR), ó«ºóαáΘáεΓß∩  ó  αÑú¿ßΓαÑ  AX,  á
  8025. π¬áºáΓѽ¿ ñá½∞¡Ñú« Γ¿»á - ó »áαÑ αÑú¿ßΓα«ó AX:DX.
  8026.  
  8027.      äáóá⌐ΓÑ αáßß¼«Γα¿¼ óδºδóáѼπε ¿º »α«úαá¼¼δ ¡á ∩ºδ¬Ñ æ¿ Σπ¡¬-
  8028. µ¿ε  ¡á  ÇßßѼí½ÑαÑ ß ¼á½«⌐ ¼«ñѽ∞ε »á¼∩Γ¿ FindLastChar,  ¬«Γ«αá∩
  8029. ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á »«ß½Ññ¡¿⌐ ß¿¼ó«½ »ÑαÑñáóáѼ«⌐  ßΓ᫬¿. ìá
  8030. ∩ºδ¬Ñ æ¿ »α«Γ«Γ¿» φΓ«⌐ Σπ¡¬µ¿¿ óδú½∩ñѽ íδ ß½ÑñπεΘ¿¼ «íαẫ¼:
  8031.  
  8032.      extern char * FindLastChar(char * StringToScan);
  8033.  
  8034. úñÑ StringToScan - φΓ« ¡Ñ»πßΓá∩ ßΓ᫬á, ñ½∩ ¬«Γ«α«⌐ ñ«½ªÑ¡  ó«ºó-
  8035. αáΘáΓ∞ß∩ π¬áºáΓѽ∞ ¡á »«ß½Ññ¡¿⌐ ß¿¼ó«½.
  8036.  
  8037.      öπ¡¬µ¿∩ FindLastChar ¿¼ÑÑΓ ß½ÑñπεΘ¿⌐ ó¿ñ:
  8038.  
  8039.                   DOSSEG
  8040.                   .MODEL  SMALL
  8041.                   .CODE
  8042.                   PUBLIC _FindLastChar
  8043. _FindLastChar            PROC
  8044.                   push  bp
  8045.                   mov   bp,sp
  8046.                   cld             ; ó ßΓ᫬«ó«⌐ ¿¡ßΓαπ¬µ¿¿ ¡πª¡«
  8047.                                   ; óδ»«½¡∩Γ∞ «ΓßτÑΓ ó »α∩¼«¼
  8048.                                   ; ¡á»αáó½Ñ¡¿¿
  8049.  
  8050. TASM2 #2-5/䫬              = 208 =
  8051.  
  8052.                   mov   ax,ds
  8053.                   mov   es,ax     ; ΓÑ»Ñα∞ ES π¬áºδóáÑΓ ¡á
  8054.                                   ; í½¿ª¡¿⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ
  8055.                   mov   di,       ; ΓÑ»Ñα∞ ES:DI π¬áºδóáÑΓ ¡á
  8056.                                   ; ¡áτὫ »ÑαÑñáóáѼ«⌐ ßΓ᫬¿
  8057.                   mov   al,0      ; ¡á⌐Γ¿ ¡π½Ñó«⌐ ß¿¼ó«½,
  8058.                                   ; ºáóÑαΦáεΘ¿⌐ ßΓ᫬π
  8059.                   mov   cx,0ffffh ; αáí«ΓáΓ∞ ó »αÑñѽáσ
  8060.                                   ; 64è-1 íá⌐Γ
  8061.                   repne scasb     ; ¡á⌐Γ¿ ¡π½Ñó«⌐ ß¿¼ó«½
  8062.                   dec   di        ; πßΓá¡«ó¿Γ∞ π¬áºáΓѽ∞
  8063.                                   ; «íαáΓ¡« ¡á 0
  8064.                   dec   di        ; ßßδ½¬á «íαáΓ¡« ¡á
  8065.                                   ; »«ß½Ññ¡¿⌐ ß¿¼ó«½
  8066.                   mov   ax,dx     ; ó«ºóαáΓ¿Γ∞ ó AX π¬áºáΓѽ∞
  8067.                                   ; í½¿ª¡Ñú« Γ¿»á
  8068.                   pop   bp
  8069.                   ret
  8070. _FindLastChar     ENDP
  8071.                   END
  8072.  
  8073.      è«¡Ñτ¡δ⌐ αѺπ½∞ΓáΓ, π¬áºáΓѽ∞ ¡á »ÑαÑñáóáѼπε ßΓ᫬π,  ó«ºó-
  8074. αáΘáÑΓß∩ ó αÑú¿ßΓαÑ AX.
  8075.  
  8076.  
  8077.  
  8078.  
  8079. TASM2 #2-5/䫬              = 209 =
  8080.  
  8081.               é맮ó Σπ¡¬µ¿⌐ Æπαí« ÇßßѼí½Ñαá ¿º Æπαí« æ¿
  8082. -----------------------------------------------------------------
  8083.  
  8084.      ÆÑ»Ñα∞ ¼δ αáßß¼«Γα¿¼ »α¿¼Ñα »α«úαá¼¼δ ¡á Æπαí« æ¿,  óδºδóáε-
  8085. ΘÑ⌐ Σπ¡¬µ¿ε Æπαí« ÇßßѼí½Ñαá.  î«ñπ½∞ Æπαí« ÇßßѼí½Ñαá  COUNT.ASM
  8086. ß«ñÑαª¿Γ Σπ¡¬µ¿ε LineCount,  ¬«Γ«αá∩ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á
  8087. τ¿ß½á ßΓ᫬ ¿ ß¿¼ó«½«ó ó »ÑαÑñáóáѼ«⌐ ßΓ᫬Ñ:
  8088.  
  8089. ; éδºδóáѼá∩ ¿º æ¿ Σπ¡¬µ¿∩ ¡á ÇßßѼí½ÑαÑ ß ¼á½«⌐ ¼«ñѽ∞ε »á¼∩Γ¿
  8090. ; ñ½∩ »«ñßτÑΓá τ¿ß½á ßΓ᫬ ¿ ß¿¼ó«½«ó ó ºáóÑαΦáεΘÑ⌐ß∩ ¡π½Ñ¼
  8091. ; "ßΓ᫬Ñ".
  8092. ;
  8093. ; Åα«Γ«Γ¿» Σπ¡¬µ¿¿:
  8094. ;      extern unsigned int LineCount(char * near StringToCount,
  8095. ;             unsigned int near * CharacterCountPtr);
  8096. ;
  8097. ; éó«ñ:
  8098. ;      char near * StringToCount: π¬áºáΓѽ∞ ¡á "ßΓ᫬π", ó
  8099. ;      ¬«Γ«α«⌐ ¡πª¡« óδ»«½¡¿Γ∞ »«ñßτÑΓ ßΓ᫬.
  8100. ;
  8101. ;      unsigned int near * CharacterCountPtr: π¬áºáΓѽ∞ ¡á
  8102. ;      µÑ½πε »ÑαѼѡ¡πε, ó ¬«Γ«απε ¡πª¡« ºá»¿ßáΓ∞ º¡áτÑ¡¿Ñ
  8103. ;      ßτÑΓτ¿¬á
  8104. NEWLINE      EQU   0ah        ; ß¿¼ó«½ »ÑαÑó«ñá ßΓ᫬¿ ó æ¿
  8105.              DOSSEG
  8106.              .MODEL  SMALL
  8107.              .CODE
  8108.              PUBLIC  _LinaCount
  8109. _LineCount   PROC
  8110.              push  bp
  8111.              mov   bp,sp
  8112.              push  si         ; ß«σαá¡¿Γ∞ αÑú¿ßΓα«óπε
  8113.                               ; »ÑαѼѡ¡πε óδºδóáεΘÑ⌐
  8114.                               ; »α«úαá¼¼δ
  8115.              mov   si,[bp+4]  ; SI π¬áºδóáÑΓ ¡á ßΓ᫬π
  8116.              sub   cx,cx      ; πßΓá¡«ó¿Γ∞ º¡áτÑ¡¿Ñ
  8117.                               ; ßτÑΓτ¿¬á ß¿¼ó«½«ó ó 0
  8118.              mov   dx,cx      ; πßΓá¡«ó¿Γ∞ ó 0 ßτÑΓτ¿¬
  8119.                               ; ßΓ᫬
  8120. LineCountLoop:
  8121.              lodsb            ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  8122.              and   al,al      ; φΓ« 0? ¬«¡Ñµ ßΓ᫬¿?
  8123.              jz    EndLineCount ; ñá, óδ»«½¡Ñ¡«
  8124.              inc   cx         ; ¡ÑΓ, »«ñßτ¿ΓáΓ∞ ß½ÑñπεΘ¿⌐
  8125.                               ; ß¿¼ó«½
  8126.              cmp   al,NEWLINE ; φΓ« ¡«óá∩ ßΓ᫬á?
  8127.  
  8128. TASM2 #2-5/䫬              = 210 =
  8129.  
  8130.              jnz   LineCountLoop ; ¡ÑΓ, »α«óÑα¿Γ∞
  8131.                               ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  8132.              inc   dx         ; ñá, »«ñßτ¿ΓáΓ∞ ÑΘÑ «ñ¡π
  8133.                               ; ßΓ᫬π
  8134.              jmp   LineCountLoop
  8135. EndLineCount:
  8136.              inc   dx         ; »«ñßτ¿ΓáΓ∞ ßΓ᫬π, ¬«Γ«αá∩
  8137.                               ; ºáóÑαΦáÑΓß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼
  8138.              mov   [bx],cx    ; ºáñáΓ∞ º¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐-
  8139.                               ; ßτÑΓτ¿¬á
  8140.              mov   ax,dx      ; ó«ºóαáΓ¿Γ∞ ßτÑΓτ¿¬ ßΓ᫬ ó
  8141.                               ; ¬áτÑßΓóÑ º¡áτÑ¡¿∩ ßτÑΓτ¿¬á
  8142.              pop   si         ; ó«ßßΓá¡«ó¿Γ∞ αÑú¿ßΓα«óπε
  8143.                               ; »ÑαѼѡ¡πε óδºδóáεΘÑ⌐
  8144.                               ; »α«úαá¼¼δ
  8145.              pop   bp
  8146.              ret
  8147. _LineCount         ENDP
  8148.              END
  8149.  
  8150.      æ½ÑñπεΘ¿⌐ ¼«ñπ½∞ ¡á ∩ºδ¬Ñ æ¿ ß ¿¼Ñ¡Ñ¼  CALLC.C  »αÑñßΓáó½∩ÑΓ
  8151. ß«í«⌐ »α¿¼Ñα ó맮óá Σπ¡¬µ¿¿ LineCount:
  8152.  
  8153.   char * TestString="Line 1\nline 2\n Line3";
  8154.   extern unsigned int LineCount(char * StringToCount,
  8155.          unsigned int * CharacterCountPtr);
  8156.   main()
  8157.   {
  8158.       unsigned int LCount;
  8159.       unsigned int CCount;
  8160.  
  8161.       LCount = LineCount(TestString, &CCount);
  8162.       printf("æΓ᫬: %d\nC¿¼ó«½«ó: %d\n", LCount, CCount);
  8163.   }
  8164.  
  8165.      äóá ¼«ñπ½∩ ¬«¼»¿½¿απεΓß∩ ¿ ¬«¼»«¡πεΓß∩ ó¼ÑßΓÑ ß »«¼«Θ∞ε  ¬«-
  8166. ¼á¡ñ¡«⌐ ßΓ᫬¿:
  8167.  
  8168.         tcc -ms callc count.asm
  8169.  
  8170.      èᬠºñÑß∞ »«¬áºá¡«, Σπ¡¬µ¿∩ LineCount íπñÑΓ αáí«ΓáΓ∞  Γ«½∞¬«
  8171. »α¿ ¬«¼»«¡«ó¬Ñ ß »α«úαἼἿ ¡á ∩ºδ¬Ñ æ¿,  ó ¬«Γ«αδσ ¿ß»«½∞ºπÑΓß∩
  8172. ¼á½á∩ ¼«ñѽ∞ »á¼∩Γ¿,  Γᬠ¬á¬ ó ñαπú¿σ ¼«ñѽ∩σ αẼÑαδ π¬áºáΓѽÑ⌐
  8173. ¿  áñαÑß«ó  ó  ßΓѬѠ ¿º¼Ñ¡∩Γß∩.  Åα¿óÑñѼ  »α¿¼Ñα óÑαß¿¿ Σπ¡¬µ¿¿
  8174. LineCount (COUNTLG.ASM),  ¬«Γ«αá∩ íπñÑΓ αáí«ΓáΓ∞ ß »α«úαἼἿ ¡á
  8175. æ¿,  ¿ß»«½∞ºπεΘ¿¼ í«½∞Φπε ¼«ñѽ∞ »á¼∩Γ¿ (¡« ¡Ñ ¼á½πε ¼«ñѽ∞: »«ß-
  8176.  
  8177. TASM2 #2-5/䫬              = 211 =
  8178.  
  8179. ¬«½∞¬π »ÑαÑñáεΓß∩ ñá½∞¡¿Ñ π¬áºáΓѽ∞, Σπ¡¬µ¿∩ LineCount ΓᬪѠ«»¿-
  8180. ßá¡á, ¬á¬ Σπ¡¬µ¿∩ ñá½∞¡Ñú« Γ¿»á):
  8181.  
  8182. ; éδºδóáѼá∩ ¿º æ¿ Σπ¡¬µ¿∩ ¡á ÇßßѼí½ÑαÑ ñ½∩ »«ñßτÑΓá τ¿ß½á
  8183. ; ßΓ᫬ ¿ ß¿¼ó«½«ó ó ºáóÑαΦáεΘÑ⌐ß∩ ¡π½Ñ¼ "ßΓ᫬Ñ".
  8184. ;
  8185. ; Åα«Γ«Γ¿» Σπ¡¬µ¿¿:
  8186. ;      extern unsigned int LineCount(char * far StringToCount,
  8187. ;             unsigned int far * CharacterCountPtr);
  8188. ;
  8189. ; éó«ñ:
  8190. ;      char far * StringToCount: π¬áºáΓѽ∞ ¡á "ßΓ᫬π", ó
  8191. ;      ¬«Γ«α«⌐ ¡πª¡« óδ»«½¡¿Γ∞ »«ñßτÑΓ ßΓ᫬.
  8192. ;
  8193. ;      unsigned int far * CharacterCountPtr: π¬áºáΓѽ∞ ¡á
  8194. ;      µÑ½«τ¿ß½Ñ¡¡πε »ÑαѼѡ¡πε, ó ¬«Γ«απε ¡πª¡« ºá»¿ßáΓ∞
  8195. ;      º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á
  8196. NEWLINE      EQU   0ah        ; ß¿¼ó«½ »ÑαÑó«ñá ßΓ᫬¿ ó æ¿
  8197.              DOSSEG
  8198.              .MODEL  LARGE
  8199.              .CODE
  8200.              PUBLIC  _LinaCount
  8201. _LineCount   PROC
  8202.              push  bp
  8203.              mov   bp,sp
  8204.              push  si         ; ß«σαá¡¿Γ∞ αÑú¿ßΓα«óπε
  8205.                               ; »ÑαѼѡ¡πε óδºδóáεΘÑ⌐
  8206.                               ; »α«úαá¼¼δ
  8207.              push  ds         ; ß«σαá¡¿Γ∞ ßΓá¡ñáαΓ¡δ⌐
  8208.                               ; ßÑú¼Ñ¡Γ ñá¡¡δσ
  8209.              lds   si,[bp+6]  ; DS:SI π¬áºδóáÑΓ ¡á ßΓ᫬π
  8210.              sub   cx,cx      ; πßΓá¡«ó¿Γ∞ º¡áτÑ¡¿Ñ
  8211.                               ; ßτÑΓτ¿¬á ß¿¼ó«½«ó ó 0
  8212.              mov   dx,cx      ; πßΓá¡«ó¿Γ∞ ó 0 ßτÑΓτ¿¬
  8213.                               ; ßΓ᫬
  8214. LineCountLoop:
  8215.              lodsb            ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  8216.              and   al,al      ; φΓ« 0? ¬«¡Ñµ ßΓ᫬¿?
  8217.              jz    EndLineCount ; ñá, óδ»«½¡Ñ¡«
  8218.              inc   cx         ; ¡ÑΓ, »«ñßτ¿ΓáΓ∞ ß½ÑñπεΘ¿⌐
  8219.                               ; ß¿¼ó«½
  8220.              cmp   al,NEWLINE ; φΓ« ¡«óá∩ ßΓ᫬á?
  8221.              jnz   LineCountLoop ; ¡ÑΓ, »α«óÑα¿Γ∞
  8222.                               ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½
  8223.              inc   dx         ; ñá, »«ñßτ¿ΓáΓ∞ ÑΘÑ «ñ¡π
  8224.                               ; ßΓ᫬π
  8225.  
  8226. TASM2 #2-5/䫬              = 212 =
  8227.  
  8228.              jmp   LineCountLoop
  8229. EndLineCount:
  8230.              inc   dx         ; »«ñßτ¿ΓáΓ∞ ßΓ᫬π, ¬«Γ«αá∩
  8231.                               ; ºáóÑαΦáÑΓß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼
  8232.              les   bx,[bp+10] ; ES:BX π¬áºδóáÑΓ ¡á ∩τÑ⌐¬π,
  8233.                               ; ó ¬«Γ«α«⌐ ó«ºóαáΘáÑΓß∩
  8234.                               ; º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á
  8235.              mov   es:[bx],cx ; ºáñáΓ∞ º¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐-
  8236.                               ; ßτÑΓτ¿¬á
  8237.              mov   ax,dx      ; ó«ºóαáΓ¿Γ∞ ßτÑΓτ¿¬ ßΓ᫬ ó
  8238.                               ; ¬áτÑßΓóÑ º¡áτÑ¡¿∩ ßτÑΓτ¿¬á
  8239.              pop   ds         ; ó«ßßΓá¡«ó¿Γ∞ ßΓá¡ñáαΓ¡δ⌐
  8240.                               ; ßÑú¼Ñ¡Γ ñá¡¡δσ æ¿
  8241.              pop   si         ; ó«ßßΓá¡«ó¿Γ∞ αÑú¿ßΓα«óπε
  8242.                               ; »ÑαѼѡ¡πε óδºδóáεΘÑ⌐
  8243.                               ; »α«úαá¼¼δ
  8244.              pop   bp
  8245.              ret
  8246. _LineCount         ENDP
  8247.              END
  8248.  
  8249.      Åα«úαá¼¼π COUNTLG.ASM ¼«ª¡« ß¬«¼»«¡«óáΓ∞ ß CALLC.C ß »«¼«Θ∞ε
  8250. ß½ÑñπεΘÑ⌐ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿:
  8251.  
  8252.         tcc -ml callc countlg.asm
  8253.  
  8254.  
  8255.  
  8256.  
  8257. TASM2 #2-5/䫬              = 213 =
  8258.  
  8259.             æ«ú½áΦÑ¡¿∩ »« ó맮óá¼, ¿ß»«½∞ºπεΘ¿Ñß∩ ó Åá߬á½Ñ
  8260. -----------------------------------------------------------------
  8261.  
  8262.      êΓá¬, ΓÑ»Ñα∞ óδ πªÑ º¡áÑΓÑ, ¬á¬ «íδτ¡« ó æ¿ »ÑαÑñáεΓß∩ »áαá-
  8263. ¼ÑΓαδ  Σπ¡¬µ¿∩¼:  óδºδóáεΘá∩  »α«úαá¼¼á ºá¡«ß¿Γ »áαá¼ÑΓαδ (ß»αáóá
  8264. ¡á½Ñó«) ó ßΓѬ, óδºδóáÑΓ Σπ¡¬µ¿ε, ¿ ¿ºó½Ñ¬áÑΓ »áαá¼ÑΓαδ ¿º  ßΓѬá
  8265. («ΓíαáßδóáÑΓ  ¿σ)  »«ß½Ñ ó맮óá. Æπαí« æ¿ ¼«ªÑΓ ΓᬪѠαáí«ΓáΓ∞ »«
  8266. ß«ú½áΦÑ¡¿∩¼, »α¿¡∩Γδ¼ ó Åá߬á½Ñ. æ«ú½áß¡« φΓ¿¼ ß«ú½áΦÑ¡¿∩¼  »áαá-
  8267. ¼ÑΓαδ  »ÑαÑñáεΓß∩ ß½Ñóá ¡á»αáó«, á «ΓíαáßδóáÑΓ »áαá¼ÑΓαδ (¿º ßΓÑ-
  8268. ¬á) óδºδóáѼá∩ »α«úαá¼¼á. ÉáºαÑΦ¿Γ∞ ¿ß»«½∞º«óá¡¿Ñ ß«ú½áΦÑ¡¿⌐ Åáß-
  8269. ¬á½∩ ó Æπαí« æ¿ ¼«ª¡« ß »«¼«Θ∞ε »áαá¼ÑΓαá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ -p ¿½¿
  8270. ¬½ετÑó«ú« ß½«óá pascal.
  8271.  
  8272.      Åα¿óÑñѼ »α¿¼Ñα Σπ¡¬µ¿¿ ¡á ÇßßѼí½ÑαÑ, ó ¬«Γ«α«⌐ ¿ß»«½∞ºπεΓ-
  8273. ß∩ ß«ú½áΦÑ¡¿∩ Åá߬á½∩:
  8274.  
  8275. ;
  8276. ; éδºδóáÑΓß∩, ¬á¬: TEST(i, j ,k)
  8277. ;
  8278. i       equ      8               ; ½Ñóδ⌐ »áαá¼ÑΓα
  8279. j       equ      6
  8280. k       equ      4               ; »αáóδ⌐ »áαá¼ÑΓα
  8281. ;
  8282.                  DOSSEG
  8283.                  .MODEL   SMALL
  8284.                  .CODE
  8285.                  PUBLIC   TEST
  8286. TEST             PROC
  8287.                  push  bp
  8288.                  mov   bp,sp
  8289.                  mov   ax,[bp+i] ; »«½πτ¿Γ∞ i
  8290.                  add   ax,[bp+j] ; »α¿íáó¿Γ∞ ¬ i j
  8291.                  sub   ax,[bp+k] ; óδτÑßΓ∞ ¿º ßπ¼¼δ k
  8292.                  pop   bp
  8293.                  ret   6         ; ó«ºóαáΓ, «Γíα«ß¿Γ∞
  8294.                                  ; 6 íá⌐Γ »áαá¼ÑΓα«ó
  8295.                                  ; («τ¿ßΓ¬á ßΓѬá)
  8296. TEST             ENDP
  8297.                  END
  8298.  
  8299.      ìá É¿ß. 7.7 »«¬áºá¡« ß«ßΓ«∩¡¿Ñ ßΓѬᠻ«ß½Ñ óδ»«½¡Ñ¡¿∩  ¿¡ßΓ-
  8300. απ¬µ¿¿ MOV BP,SP:
  8301.                           .                       .
  8302.                           .                       .
  8303.                           |                       |
  8304.                           |-----------------------|
  8305.  
  8306. TASM2 #2-5/䫬              = 214 =
  8307.  
  8308.              SP -->       | BP óδºδóáεΘÑ⌐ »α«úα.  |  <-- BP
  8309.                           |-----------------------|
  8310.              SP + 2       |    ÇñαÑß ó«ºóαáΓá     |  BP + 2
  8311.                           |-----------------------|
  8312.              SP + 4       |          k            |  BP + 4
  8313.                           |-----------------------|
  8314.              SP + 6       |          j            |  BP + 6
  8315.                           |-----------------------|
  8316.              SP + 8       |          i            |  BP + 8
  8317.                           |-----------------------|
  8318.                           |                       |
  8319.                           |-----------------------|
  8320.                           |                       |
  8321.                           .                       .
  8322.  
  8323.      É¿ß. 7.7 æ«ßΓ«∩¡¿Ñ ßΓѬᠻ«ß½Ñ ¿¡ßΓαπ¬µ¿¿ MOV BP,SP.
  8324.  
  8325.      çá¼ÑΓ¿¼, τΓ« ñ½∩ «τ¿ßΓ¬¿ ßΓѬᠠ«Γ  »ÑαÑñáóáѼδσ  »áαá¼ÑΓα«ó
  8326. ¿ß»«½∞ºπÑΓß∩ ¿¡ßΓαπ¬µ¿∩ RET 6.
  8327.  
  8328.      æ«ú½áΦÑ¡¿∩ »« ó맮óá¼ Åá߬á½∩ ΓαÑíπεΓ ΓᬪÑ, τΓ«íδ óßÑ ó¡ÑΦ-
  8329. ¡¿Ñ ¿ «íΘÑñ«ßΓπ»¡δÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ π¬áºδó὿ß∞ ó óÑασ¡Ñ¼ αÑú¿ßΓαÑ
  8330. ¿ íѺ »αÑñΦÑßΓóπεΘ¿σ »«ñτÑનóá¡¿⌐. çáτѼ ¼«ªÑΓ »«ΓαÑí«óáΓ∞ß∩ ¿ß-
  8331. »«½∞º«óáΓ∞ ó »α«úαἼѠ¡á æ¿ ß«ú½áΦÑ¡¿∩ »« ó맮óá¼ Åá߬á½∩? Åα«ú-
  8332. αá¼¼á, ¿ß»«½∞ºπεΘá∩ ß«ú½áΦÑ¡¿∩ Åá߬á½∩, ºá¡¿¼áÑΓ «íδτ¡« ¡Ñ߬«½∞¬«
  8333. ¼Ñ¡∞ΦÑ  ¼ÑßΓá  ó »á¼∩Γ¿ ¿ αáí«ΓáÑΓ íδßΓαÑÑ, τѼ «íδτ¡á∩ »α«úαá¼¼á
  8334. ¡á ∩ºδ¬Ñ æ¿, Γᬠ¬á¬ ñ½∩ «τ¿ßΓ¬¿ ßΓÑ¬á «Γ »áαá¼ÑΓα«ó ¡Ñ ΓαÑíπÑΓß∩
  8335. óδ»«½¡∩Γ∞  n  ¿¡ßΓαπ¬µ¿⌐ ADD SP.  ü«½ÑÑ »«ñα«í¡« « ß«ú½áΦÑ¡¿∩σ »«
  8336. ó맮óá¼, »α¿¡∩Γδ¼ ó Åá߬á½Ñ, αáß߬áºδóáÑΓß∩ ó â½áóÑ 8.
  8337.  
  8338.  
  8339.  
  8340.  
  8341. TASM2 #2-5/䫬              = 215 =
  8342.  
  8343.  
  8344. é맮ó Æπαí« æ¿ ¿º Æπαí« ÇßßѼí½Ñαá
  8345. -----------------------------------------------------------------
  8346.  
  8347.      ò«Γ∩ í«½∞ΦÑ »α¿¡∩Γ« ñ½∩ óδ»«½¡Ñ¡¿∩ ß»Ñµ¿á½∞¡δσ  ºáñáτ  óδºδ-
  8348. óáΓ∞  ¿º  æ¿  Σπ¡¬µ¿¿, ¡á»¿ßá¡¡δÑ ¡á ÇßßѼí½ÑαÑ, ¿¡«úñá óá¼ ¼«ªÑΓ
  8349. »«ΓαÑí«óáΓ∞ß∩ óδºδóáΓ∞ ¿º ÇßßѼí½Ñαá Σπ¡¬µ¿¿, ¡á»¿ßá¡¡δÑ ¡á ∩ºδ¬Ñ
  8350. æ¿.  Ä¬áºδóáÑΓß∩, ¡á ßἫ¼ ñѽѠ½ÑúτÑ óδºóáΓ∞ Σπ¡¬µ¿ε Æπαí« æ¿ ¿º
  8351. Σπ¡¬µ¿¿ Æπαí« ÇßßѼí½Ñαá, τѼ ¡á«í«α«Γ, »«ß¬«½∞¬π ß« ßΓ«α«¡δ  Çß-
  8352. ßѼí½Ñαá ¡Ñ ΓαÑíπÑΓß∩ «Γ߽Ѫ¿óáΓ∞ úαá¡¿µδ ßΓѬá. äáóá⌐ΓÑ αáßß¼«Γ-
  8353. α¿¼ ¬αáΓ¬« ΓαÑí«óá¡¿∩ ñ½∩ ó맮óá Σπ¡¬µ¿⌐ Æπαí« æ¿ ¿º Æπαí« ÇßßѼ-
  8354. í½Ñαá.
  8355.  
  8356.                   è«¼»«¡«ó¬á ß ¬«ñ«¼ ¿¡¿µ¿á½¿ºáµ¿¿ æ¿
  8357. -----------------------------------------------------------------
  8358.  
  8359.      ò«α«Φ¿¼ »αá󿽫¼ ∩ó½∩ÑΓß∩ ó맮ó í¿í½¿«ΓÑτ¡δσ  Σπ¡¬µ¿⌐  Æπαí«
  8360. æ¿ Γ«½∞¬« ¿º ÇßßѼí½Ñαá ó »α«úαá¼¼áσ, ¬«Γ«αδÑ ¬«¼»«¡πεΓß∩ ß ¼«ñπ-
  8361. ½Ñ¼ ¿¡¿µ¿á½¿ºáµ¿¿ æ¿ (¿ß»«½∞ºπ∩ Ñú« ó ¬áτÑßΓóÑ »Ñαó«ú«  ¬«¼»«¡πÑ-
  8362. ¼«ú«  ¼«ñπ½∩). ¥Γ«Γ "¡áñѪ¡δ⌐" ¬½áßß ó¬½ετáÑΓ ó ßÑí∩ óßÑ »α«úαá¼-
  8363. ¼δ, ¬«Γ«αδÑ ¬«¼»«¡πεΓß∩ ß »«¼«Θ∞ε  ¬«¼á¡ñ¡«⌐  ßΓ᫬¿  TC.EXE  ¿½¿
  8364. TCC.EXE, ¿ »α«úαá¼¼δ, ó ¬áτÑßΓóÑ »Ñαó«ú« ¬«¼»«¡πѼ«ú« Σá⌐½á ¬«Γ«-
  8365. αδσ ¿ß»«½∞ºπÑΓß∩ Σá⌐½ C0T, C0S, C0C, C0M, C0L ¿½¿ C0H.
  8366.  
  8367.      é «íΘѼ ß½πτáÑ óá¼ ¡Ñ ß½ÑñπÑΓ óδºδóáΓ∞ í¿í½¿«ΓÑτ¡δÑ  Σπ¡¬µ¿¿
  8368. Æπαí«  æ¿ ¿º »α«úαá¼¼, ¬«Γ«αδÑ ¡Ñ ¬«¼»«¡πεΓß∩ ß ¼«ñπ½Ñ¼ ¿¡¿µ¿á½¿-
  8369. ºáµ¿¿ Æπαí« æ¿, Γᬠ¬á¬ ¡Ñ¬«Γ«αδÑ í¿í½¿«ΓÑτ¡δÑ Σπ¡¬µ¿¿  Æπαí«  æ¿
  8370. ¡Ñ íπñπΓ »αáó¿½∞¡« αáí«ΓáΓ∞, Ñß½¿ ¡Ñ óδ»«½¡∩½áß∞ ¬«¼»«¡«ó¬á ß ¬«-
  8371. ñ«¼ ¿¡¿µ¿á½¿ºáµ¿¿. àß½¿ óδ ñÑ⌐ßΓó¿Γѽ∞¡« σ«Γ¿ΓÑ óδºδóáΓ∞  í¿í½¿«-
  8372. ΓÑτ¡δÑ  Σπ¡¬µ¿¿  Æπαí«  æ¿  ¿º  Γᬿσ »α«úαá¼¼, ¼δ »αÑñ½áúáѼ óá¼
  8373. óºú½∩¡πΓ∞ ¡á ¬«ñ ¿¡¿µ¿á½¿ºáµ¿¿(Σá⌐½ C0.ASM ¡á ñ¿ßΓα¿íπΓ¿ó¡δσ ñ¿ß-
  8374. ¬áσ Æπαí« æ¿) ¿ »α¿«íαÑßΓ¿ π Σ¿α¼δ Borland ¿ßσ«ñ¡δ⌐ ¬«ñ í¿í½¿«ΓÑ-
  8375. ¬¿ ∩ºδ¬á æ¿,  »«ß½Ñ τÑú« óδ ß¼«ªÑΓÑ «íÑß»Ñτ¿Γ∞ »αáó¿½∞¡πε ¿¡¿µ¿á-
  8376. ½¿ºáµ¿ε ñ½∩ ¡πª¡δσ í¿í½¿«ΓÑτ¡δσ Σπ¡¬µ¿⌐.  äαπú«⌐ ó«º¼«ª¡δ⌐ »«ñσ«ñ
  8377. ß«ßΓ«¿Γ  »α«ßΓ«  ó  Γ«¼,  τΓ«íδ  ß¬«¼»«¡«óáΓ∞ ¡πª¡πε í¿í½¿«ΓÑτ¡πε
  8378. Σπ¡¬µ¿ε ß »α«úαá¼¼«⌐ ¡á ÇßßѼí½ÑαÑ, ¬«Γ«αá∩ ¡áºδóáÑΓß∩, ¡á»α¿¼Ñα,
  8379. X.ASM, ¿ ¬«Γ«αá∩ »α«ßΓ« óδºδóáÑΓ ¬áªñπε Σπ¡¬µ¿ε. è«¼»«¡«ó¬π ¼«ª¡«
  8380. óδ»«½¡¿Γ∞ ß »«¼«Θ∞ε ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ Γ¿»á:
  8381.  
  8382.         tlink x,x,,cm.lib
  8383.  
  8384. úñÑ m - φΓ« »Ñαóá∩ íπ¬óᠪѽáѼ«⌐ ¼«ñѽ¿ »á¼∩Γ¿ (t -  ßóÑασ¼á½á∩,
  8385. s  - ¼á½á∩, c - ¬«¼»á¬Γ¡á∩ ¿ Γ.ñ.). àß½¿ TLINK óδñáßΓ ß««íΘÑ¡¿∩ «
  8386. ¡Ñ«»αÑñѽѡ¡δσ ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ, Γ«  ñá¡¡πε  í¿í½¿«ΓÑτ¡πε  Σπ¡¬µ¿ε
  8387. íѺ ¬«¼»«¡«ó¬¿ ß ¬«ñ«¼ ¿¡¿µ¿á½¿ºáµ¿¿ æ¿ óδºδóáΓ∞ ¡Ñ½∞º∩.
  8388.  
  8389.  
  8390. TASM2 #2-5/䫬              = 216 =
  8391.  
  8392.            Åα¿¼Ñτá¡¿Ñ: éδº«ó «»αÑñѽ∩Ѽδσ  »«½∞º«óáΓѽѼ  Σπ¡¬µ¿⌐
  8393.       æ¿,  ¬«Γ«αδÑ  ó  ßó«ε «τÑαÑñ∞ óδºδóáεΓ í¿í½¿«ΓÑτ¡δÑ Σπ¡¬µ¿¿
  8394.       ∩ºδ¬á æ¿,  »«»áñáεΓ ó Γπ ªÑ ¬áΓÑú«α¿ε, τΓ« ¿ ¡Ñ»«ßαÑñßΓóÑ¡-
  8395.       ¡δ⌐ ó맮ó í¿í½¿«ΓÑτ¡δσ Σπ¡¬µ¿⌐ æ¿.  ÄΓßπΓßΓó¿Ñ ¬«ñá ¿¡¿µ¿á-
  8396.       ½¿ºáµ¿¿  æ¿ ¼«ªÑΓ óδºδóáΓ∞ «Φ¿í¬¿ ó ½εí«⌐ »α«úαἼѠÇßßѼí-
  8397.       ½Ñαá,  ¬«Γ«αá∩ »α∩¼« ¿½¿ ¬«ßóÑ¡¡« «íαáΘáÑΓß∩ ¬ í¿í½¿«ΓÑτ¡δ¼
  8398.       Σπ¡¬µ¿∩¼ æ¿.
  8399.  
  8400.  
  8401.  
  8402.  
  8403. TASM2 #2-5/䫬              = 217 =
  8404.  
  8405.  
  8406. ôíÑñ¿ΓÑß∞ ó Γ«¼, τΓ« óδ »αáó¿½∞¡« ºáñ὿ ßÑú¼Ñ¡Γδ
  8407. -----------------------------------------------------------------
  8408.  
  8409.      èᬠ¼δ πªÑ ú«ó«α¿½¿ αá¡ÑÑ,  ¡Ñ«íσ«ñ¿¼«  «íÑß»Ñτ¿óáΓ∞,  τΓ«íδ
  8410. Æπαí« æ¿ ¿ Æπαí« ÇßßѼí½Ñα ¿ß»«½∞º«ó὿ «ñ¡π ¿ Γπ ªÑ ¼«ñѽ∞ »á¼∩-
  8411. Γ¿, ¿ τΓ«íδ ßÑú¼Ñ¡Γδ, ¬«Γ«αδÑ óδ ¿ß»«½∞ºπÑΓÑ ó Æπαí«  ÇßßѼí½ÑαÑ,
  8412. ß«ó»áñ὿  ß  ΓѼ¿ ßÑú¼Ñ¡ΓἿ, ¬«Γ«αδÑ ¿ß»«½∞ºπÑΓ Æπαí« æ¿. ìπª¡«
  8413. ¡Ñ ºáíδóáΓ∞ ΓᬪѠ»«¼ÑΘáΓ∞ ñ¿αÑ¬Γ¿óπ EXTRN ñ½∩ ó¡ÑΦ¡¿σ  ¿ñÑ¡Γ¿Σ¿-
  8414. ¬áΓ«α«ó ó¡Ñ óßÑσ ßÑú¼Ñ¡Γ«ó ¿½¿ ó¡πΓα¿ »αáó¿½∞¡«ú« ßÑú¼Ñ¡Γá.
  8415.  
  8416.                            éδ»«½¡Ñ¡¿Ñ ó맮óá
  8417. -----------------------------------------------------------------
  8418.  
  8419.      é αáºñѽѠ"é맮ó Σπ¡¬µ¿⌐ Æπαí« ÇßßѼí½Ñαá ¿º  Æπαí«  æ¿"  ¼δ
  8420. πªÑ  πº¡á½¿  «  Γ«¼, ¬á¬ Æπαí« æ¿ óδ»«½¡∩ÑΓ »«ñú«Γ«ó¬π ¬ ó맮óπ ¿
  8421. ó맮ó Σπ¡¬µ¿¿. îδ ¬αáΓ¬« αáßß¼«Γαѽ¿ ¼Ñσá¡¿º¼ ó맮ó  Σπ¡¬µ¿⌐  æ¿,
  8422. ¡á  φëà αáº ß Γ«τ¬¿ ºαÑ¡¿∩ ó맮óá Σπ¡¬µ¿⌐ Æπαí« æ¿ ¿º Æπαí« Çß-
  8423. ßѼí½Ñαá.
  8424.  
  8425.      éßÑ, τΓ« ΓαÑíπÑΓß∩ «Γ óáß ñ½∩ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó  ó Σπ¡¬µ¿ε
  8426. Æπαí«  æ¿,  φΓ« ºá¡ÑßÑ¡¿Ñ ó ßΓѬ ßἫú« »αáó«ú« »áαá¼ÑΓαá »Ñαóδ¼,
  8427. ºáΓѼ ß½ÑñπεΘÑú« »« »«α∩ñ¬π »áαá¼ÑΓαá ¿ Γᬠñá½ÑÑ, »«¬á  ó  ßΓѬÑ
  8428. ¡Ñ  «¬áªÑΓß∩  ßá¼δ⌐  ½Ñóδ⌐ »áαá¼ÑΓα. Å«ß½Ñ φΓ«ú« ¡πª¡« »α«ßΓ« óδ-
  8429. ºóáΓ∞ Σπ¡¬µ¿ε. ìá»α¿¼Ñα, »α¿ »α«úαá¼¼¿α«óá¡¿¿ ¡á Æπαí« æ¿ ñ½∩ óδ-
  8430. º«óá  í¿í½¿«ΓÑτ¡«⌐ Σπ¡¬µ¿¿ Æπαí« æ¿ strcpy ñ½∩ ¬«»¿α«óá¡¿∩ ßΓ᫬¿
  8431. SourceString ó ßΓ᫬π DestString ¼«ª¡« óóÑßΓ¿:
  8432.  
  8433.         strcpy(DestString, SourceString);
  8434.  
  8435.      ä½∩ óδ»«½¡Ñ¡¿∩ Γ«ú« ªÑ ó맮óá ¡á ÇßßѼí½ÑαÑ ¡πª¡«  ¿ß»«½∞º«-
  8436. óáΓ∞ ¿¡ßΓαπ¬µ¿¿:
  8437.  
  8438.             lea   ax,SourceString     ; »αáóδ⌐ »áαá¼ÑΓα
  8439.             push  ax
  8440.             lea   ax,DestString       ; ½Ñóδ⌐ »áαá¼ÑΓα
  8441.             push  ax
  8442.             call  _strcpy             ; ß¬«»¿α«óáΓ∞ ßΓ᫬π
  8443.             add   sp,4                ; «Γíα«ß¿Γ∞ »áαá¼ÑΓαδ
  8444.  
  8445.      Åα¿ ¡áßΓα«⌐¬Ñ SP »«ß½Ñ ó맮óá ¡Ñ ºáíδóá⌐ΓÑ «τ¿ΘáΓ∞  ßΓѬ  «Γ
  8446. »áαá¼ÑΓα«ó.
  8447.  
  8448.      àß½¿ óδ óδºδóáÑΓÑ Σπ¡¬µ¿ε æ¿, ¬«Γ«αá∩ ¿ß»«½∞ºπÑΓ  ß«ú½áΦÑ¡¿∩
  8449. Åá߬á½∩,  ºá¡«ß¿ΓÑ  ó  ßΓѬ »áαá¼ÑΓαδ ß½Ñóá ¡á»αáó«. Å«ß½Ñ ó맮óá
  8450. ¡áßΓαá¿óáΓ∞ π¬áºáΓѽ∞ ßΓѬá SP ¡Ñ ΓαÑíπÑΓß∩.
  8451.  
  8452. TASM2 #2-5/䫬              = 218 =
  8453.  
  8454.  
  8455.             lea   ax,DestString       ; ½Ñóδ⌐ »áαá¼ÑΓα
  8456.             push  ax
  8457.             lea   ax,SourceString     ; »αáóδ⌐ »áαá¼ÑΓα
  8458.             push  ax
  8459.             call  CTRCPY              ; ß¬«»¿α«óáΓ∞ ßΓ᫬π
  8460.  
  8461.      é »«ß½Ññ¡Ñ¼ ß½πτáÑ ¬«¡Ñτ¡« »«ñαáºπ¼ÑóáÑΓß∩, τΓ« óδ  »ÑαѬ«¼-
  8462. »¿½¿α«ó὿  Σπ¡¬µ¿ε strcpy ß »áαá¼ÑΓα«¼ -p, Γᬠ¬á¬ ó ßΓá¡ñáαΓ¡«⌐
  8463. í¿í½¿«ΓÑτ¡«⌐ óÑαß¿¿ ñá¡¡«⌐ Σπ¡¬µ¿¿ ¿ß»«½∞ºπεΓß∩ ß«ú½áΦÑ¡¿∩ »« óδ-
  8464. º«óπ, »α¿¡∩ΓδÑ ó æ¿, á ¡Ñ ó Åá߬á½Ñ. öπ¡¬µ¿¿ æ¿ ó«ºóαáΘáεΓ º¡áτÑ-
  8465. ¡¿∩, ¬á¬ «»¿ßá¡« ó αáºñѽѠ"髺óαáΓ º¡áτÑ¡¿⌐":  8-  ¿  16-í¿Γ«óδÑ
  8466. º¡áτÑ¡¿∩  ó«ºóαáΘáεΓß∩  ó  αÑú¿ßΓαÑ AX, á 32-í¿Γ«óδÑ º¡áτÑ¡¿∩ - ó
  8467. AX:DX (»α¿ φΓ«¼ ßΓáαΦ¿Ñ 16 í¿Γ º¡áτÑ¡¿∩ ¡áσ«ñ∩Γß∩ ó αÑú¿ßΓαÑ DX).
  8468. ç¡áτÑ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ó«ºóαáΘáεΓß∩ ó ST(0) (αÑú¿ßΓα óÑαΦ¿¡δ
  8469. ßΓѬá ß«»α«µÑßß«αá 8087 ¿½¿ φ¼π½∩Γ«αá ß«»α«µÑßß«αá 8087, Ñß½¿ ¿ß-
  8470. »«½∞ºπÑΓß∩ φ¼π½∩Γ«α «»Ñαᵿ⌐ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐). æΓαπ¬Γπαδ ó«ºó-
  8471. αáΘáεΓß∩ αẽ¿τ¡δ¼ «íαẫ¼, ó ß««ΓóÑΓßΓó¿¿ ß ¿σ αẼÑα«¼.
  8472.  
  8473.      öπ¡¬µ¿¿ æ¿ ß«σαá¡∩εΓ ß½ÑñπεΘ¿Ñ αÑú¿ßΓαδ (¿ Γ«½∞¬«  ¿σ):  SI,
  8474. DI,  BP, DS, SS, SP ¿ CS. ÉÑú¿ßΓαδ AX, BX, CX, DX, ES ¿ Σ½áú¿ ¼«-
  8475. úπΓ »α«¿ºó«½∞¡« ¿º¼Ñ¡∩Γ∞ß∩.
  8476.  
  8477.  
  8478.  
  8479.  
  8480. TASM2 #2-5/䫬              = 219 =
  8481.  
  8482.               éδº«ó ¿º Æπαí« ÇßßѼí½Ñαá Σπ¡¬µ¿¿ Æπαí« æ¿
  8483. -----------------------------------------------------------------
  8484.  
  8485.      Äñ¡¿¼ ¿º ß½πτáÑó, ¬«úñá óá¼ ¼«ªÑΓ »«ΓαÑí«óáΓ∞ß∩  óδºóáΓ∞  ¿º
  8486. Æπαí«  ÇßßѼí½Ñαá Σπ¡¬µ¿ε Æπαí« æ¿, ∩ó½∩ÑΓß∩ ¡Ñ«íσ«ñ¿¼«ßΓ∞ óδ»«½-
  8487. ¡Ñ¡¿∩ ß½«ª¡δσ óδτ¿ß½Ñ¡¿⌐, »«ß¬«½∞¬π óδτ¿ß½Ñ¡¿∩ ú«αáºñ« »α«ΘÑ  óδ-
  8488. »«½¡∩Γ∞ ¡á æ¿, τѼ ¡á ÇßßѼí½Ñαá. Äß«íÑ¡¡« φΓ« «Γ¡«ß¿Γß∩ ¬ ß½πτáε
  8489. ß¼ÑΦá¡¡δσ óδτ¿ß½Ñ¡¿⌐, úñÑ ¿ß»«½∞ºπεΓß∩  ¿  º¡áτÑ¡¿∩  ß  »½áóáεΘÑ⌐
  8490. Γ«τ¬«⌐  ¿ µÑ½δÑ τ¿ß½á. ïπτΦѠ󫺽«ª¿Γ∞ Σπ¡¬µ¿¿ »« óδ»«½¡Ñ¡¿ε »αÑ-
  8491. «íαẫóá¡¿∩ Γ¿»«ó ¿ αÑ὿ºáµ¿¿ áα¿Σ¼ÑΓ¿¬¿ ß »½áóáεΘÑ⌐  Γ«τ¬«⌐  ¡á
  8492. æ¿.
  8493.  
  8494.      äáóá⌐ΓÑ αáßß¼«Γα¿¼ »α¿¼Ñα »α«úαá¼¼δ ¡á  ÇßßѼí½ÑαÑ,  ¬«Γ«αá∩
  8495. óδºδóáÑΓ Σπ¡¬µ¿ε Æπαí« æ¿, τΓ«íδ óδ»«½¡¿Γ∞ óδτ¿ß½Ñ¡¿∩ ß »½áóáεΘÑ⌐
  8496. Γ«τ¬«⌐. öá¬Γ¿τÑ߬¿ ó ñá¡¡«¼ »α¿¼ÑαÑ  Σπ¡¬µ¿∩  Æπαí«  æ¿  »ÑαÑñáÑΓ
  8497. »«ß½Ññ«óáΓѽ∞¡«ßΓ∞  µÑ½δσ  τ¿ßѽ ñαπú«⌐ Σπ¡¬µ¿¿ Æπαí« ÇßßѼí½Ñαá,
  8498. ¬«Γ«αá∩ ßπ¼¼¿απÑΓ τ¿ß½á ¿ ó ßó«ε «τÑαÑñ∞ óδºδóáÑΓ ñαπúπε  Σπ¡¬µ¿ε
  8499. Æπαí« æ¿ ñ½∩ óδ»«½¡Ñ¡¿∩ óδτ¿ß½Ñ¡¿⌐ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ (óδτ¿ß½Ñ¡¿Ñ
  8500. ßαÑñ¡Ñú« º¡áτÑ¡¿∩).
  8501.  
  8502.      ùáßΓ∞ »α«úαá¼¼δ CALCAVG.C,  αÑ὿º«óá¡¡á∩  ¡á  æ¿,  óδú½∩ñ¿Γ
  8503. ß½ÑñπεΘ¿¼ «íαẫ¼:
  8504.  
  8505. extern float Average(int far * ValuePtr, int NumberOfValues);
  8506. #define NUMBER_OF_TEST_VALUES 10
  8507. int TestValues(NUMBER_OF_TEST_VALUES) = {
  8508.     1, 2, 3, 4, 5, 6, 7, 8, 9, 10
  8509. };
  8510.  
  8511. main()
  8512. {
  8513.        printf("æαÑñ¡ÑÑ áα¿Σ¼ÑΓ¿τÑ߬«Ñ αáó¡«: %f\n",
  8514.               Average(TestValues, NUMBER_OF_TEST_VALUES));
  8515. }
  8516. float IntDivide(int Divedent, int Divisor)
  8517. }
  8518.       return( (float) Divident / (float) Divisor );
  8519. }
  8520.  
  8521. á τáßΓ∞ »α«úαá¼¼δ ¡á ÇßßѼí½ÑαÑ (AVERAGE.ASM) ¿¼ÑÑΓ ó¿ñ:
  8522.  
  8523. ;
  8524. ; éδºδóáѼá∩ ¿º æ¿ Σπ¡¬µ¿∩ ß ¼á½«⌐ ¼«ñѽ∞ε »á¼∩Γ¿,
  8525. ; ¬«Γ«αá∩ ó«ºóαáΘáÑΓ ßαÑñ¡ÑÑ áα¿Σ¼ÑΓ¿τÑ߬«Ñ »«ß½Ññ«óá-
  8526. ; Γѽ∞¡«ßΓ¿ µÑ½δσ τ¿ßѽ. ä½∩ óδ»«½¡Ñ¡¿∩ ºáóÑαΦáεΘÑú«
  8527. ; ñѽѡ¿∩ óδºδóáÑΓ Σπ¡¬µ¿ε æ¿ IntDivide().
  8528.  
  8529. TASM2 #2-5/䫬              = 220 =
  8530.  
  8531. ;
  8532. ; Åα«Γ«Γ¿» Σπ¡¬µ¿¿:
  8533. ;          extern float Average(int far * ValuePtr,
  8534. ;                 int NumberOfValues);
  8535. ;
  8536. ; éó«ñ:
  8537. ;          int far * ValuePtr:      ; ¼áß߿󠺡áτÑ¡¿⌐ ñ½∩
  8538. ;                                   ; óδτ¿ß½Ñ¡¿∩ ßαÑñ¡Ñú«
  8539. ;          int NumberOfValues:      ; τ¿ß½« º¡áτÑ¡¿⌐ ñ½∩
  8540. ;                                   ; óδτ¿ß½Ñ¡¿∩ ßαÑñ¡Ñú«
  8541.                DOSSEG
  8542.                .MODEL   SMALL
  8543.                EXTRN    _IntDivide:PROC
  8544.                .CODE
  8545.                PUBLIC   _Average
  8546. _Average       PROC
  8547.                push  bp
  8548.                mov   bp,sp
  8549.                les   bx,[bp+4]       ; ES:BX π¬áºδóáÑΓ ¡á
  8550.                                      ; ¼áß߿󠺡áτÑ¡¿⌐
  8551.                mov   cx,[bp+8]       ; τ¿ß½« º¡áτÑ¡¿⌐, ñ½∩
  8552.                                      ; ¬«Γ«αδσ ¡πª¡«
  8553.                                      ; óδτ¿ß½¿Γ∞ ßαÑñ¡ÑÑ
  8554.                mov   ax,0
  8555. AverageLoop:
  8556.                add   ax,es:[bx]      ; »α¿íáó¿Γ∞ ΓѬπΘÑÑ
  8557.                                      ; º¡áτÑ¡¿Ñ
  8558.                add   ax,2            ; ßßδ½¬á ¡á ß½ÑñπεΘÑÑ
  8559.                                      ; º¡áτÑ¡¿Ñ
  8560.                loop  AverageLoop
  8561.                push  WORD PTR [bp+8] ; »«½πτ¿Γ∞ ß¡«óá τ¿ß½«
  8562.                                      ; º¡áτÑ¡¿⌐, »ÑαÑñá¡¡δσ
  8563.                                      ; ó Σπ¡¬µ¿ε IntDivide
  8564.                                      ; ó »αáó«¼ »áαá¼ÑΓαÑ
  8565.                push  ax              ; »ÑαÑñáΓ∞ ßπ¼¼π ó
  8566.                                      ; ½Ñó«¼ »áαá¼ÑΓαÑ
  8567.                call  _IntDivide      ; óδτ¿ß½¿Γ∞ ßαÑñ¡ÑÑ
  8568.                                      ; º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐
  8569.                                      ; Γ«τ¬«⌐
  8570.                add   sp,4            ; «Γíα«ß¿Γ∞ »áαá¼ÑΓαδ
  8571.                pop   bp
  8572.                ret                   ; ßαÑñ¡ÑÑ º¡áτÑ¡¿Ñ ó
  8573.                                      ; αÑú¿ßΓαÑ óÑαΦ¿¡δ
  8574.                                      ; ßΓѬá ß«»α«µÑßß«αá
  8575.                                      ; 8087
  8576. _Average       ENDP
  8577.  
  8578. TASM2 #2-5/䫬              = 221 =
  8579.  
  8580.                END
  8581.  
  8582.      Äß¡«ó¡á∩ Σπ¡¬µ¿∩  ¡á  ∩ºδ¬Ñ  æ¿ »ÑαÑñáÑΓ π¬áºáΓѽ∞ ¡á ¼áßß¿ó
  8583. µÑ½δσ τ¿ßѽ TestValues ¿ ñ½¿¡π ¼áßß¿óá ó  Σπ¡¬µ¿ε  ¡á  ÇßßѼí½ÑαÑ
  8584. Average. ¥Γá Σπ¡¬µ¿∩ óδτ¿ß½∩ÑΓ ßπ¼¼π µÑ½δσ τ¿ßѽ, á ºáΓѼ »ÑαÑñá-
  8585. ÑΓ φΓπ ßπ¼¼π ¿ τ¿ß½« º¡áτÑ¡¿⌐ ó  Σπ¡¬µ¿ε  æ¿  IntDivide.  öπ¡¬µ¿∩
  8586. IntDivide »α¿ó«ñ¿Γ ßπ¼¼π ¿ τ¿ß½« º¡áτÑ¡¿⌐ ¬ Γ¿»π ß »½áóáεΘÑ⌐ Γ«τ-
  8587. ¬«⌐ ¿ óδτ¿ß½∩ÑΓ ßαÑñ¡ÑÑ º¡áτÑ¡¿Ñ (ñѽá∩ φΓ« ß »«¼«Θ∞ε «ñ¡«⌐ ßΓα«-
  8588. ¬¿ ¡á æ¿, ó Γ« óαѼ∩ ¬á¬ ¡á ÇßßѼí½ÑαÑ ñ½∩ φΓ«ú« »«ΓαÑí«óὫß∞ íδ
  8589. ¡Ñ߬«½∞¬« ßΓ᫬).  öπ¡¬µ¿∩ IntDivide ó«ºóαáΘáÑΓ ßαÑñ¡ÑÑ  º¡áτÑ¡¿Ñ
  8590. (Average)  ó  αÑú¿ßΓαÑ óÑαΦ¿¡δ ßΓѬá ß«»α«µÑßß«αá 8087 ¿ »ÑαÑñáÑΓ
  8591. π»αáó½Ñ¡¿Ñ «íαáΓ¡« «ß¡«ó¡«⌐ Σπ¡¬µ¿¿.
  8592.  
  8593.      Åα«úαá¼¼δ CALCAVG.C ¿  AVERAGE.ASM  ¼«ª¡«  ß¬«¼»¿½¿α«óáΓ∞  ¿
  8594. ߬«¼»«¡«óáΓ∞ ó óδ»«½¡∩Ѽπε »α«úαá¼¼π CALCAVG.EXE ß »«¼«Θ∞ε ¬«¼á¡-
  8595. ñδ:
  8596.  
  8597.         tcc calcavg average.asm
  8598.  
  8599.      ÄΓ¼ÑΓ¿¼, τΓ« Σπ¡¬µ¿∩ Average íπñÑΓ αáí«ΓáΓ∞ ¬á¬ ß ¼á½«⌐, Γá¬
  8600. ¿  ß í«½∞Φ«⌐ ¼«ñѽ∞ε ñá¡¡δσ íѺ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ¿º¼Ñ¡Ñ¡¿∩ ÑÑ ¿ßσ«ñ-
  8601. ¡«ú« ¬«ñá, Γᬠ¬á¬ ó« óßÑσ ¼«ñѽ∩σ »ÑαÑñáÑΓß∩ π¬áºáΓѽ∞  ñá½∞¡Ñú«
  8602. Γ¿»á. ä½∩ »«ññÑ᪬¿ í«½∞Φ¿σ ¼«ñѽÑ⌐ ¬«ñá (ßóÑασí«½∞Φ«⌐, í«½∞Φ«⌐ ¿
  8603. ßαÑñ¡Ñ⌐) »α¿Φ½«ß∞ íδ Γ«½∞¬«  ¿º¼Ñ¡¿Γ∞  ß««ΓóÑΓßΓóπεΘπε  ñ¿αÑ¬Γ¿óπ
  8604. .MODEL.
  8605.  
  8606.  
  8607.  
  8608.  
  8609.  
  8610. TASM2 #2-5/䫬              = 222 =
  8611.  
  8612.          â½áóá 8. ê¡ΓÑαΣÑ⌐ß Æπαí« ÇßßѼí½Ñαá ß Æπαí« Åá߬á½Ñ¼
  8613. -----------------------------------------------------------------
  8614.  
  8615.      é  Æπαí«  ÇßßѼí½ÑαÑ  »αÑñπß¼«ΓαÑ¡δ  αáßΦ¿αÑ¡¡δÑ  ¿   ¼«Θ¡δÑ
  8616. ßαÑñßΓóá,  »«ºó«½∩εΘ¿Ñ  óá¼ ñ«íáó½∩Γ∞ ¬«ñ ÇßßѼí½Ñαá ¬ »α«úαá¼¼á¼
  8617. Æπαí« Åá߬á½∩. é ñá¡¡«⌐ ú½áóÑ ¼δ »«ñα«í¡« αáß߬áªÑ¼  óá¼  «  Γ«¼,
  8618. τΓ«  ¡πª¡«  º¡áΓ∞,  τΓ«íδ »«½¡«ßΓ∞ε ¿ß»«½∞º«óáΓ∞ ñá¡¡δÑ ßαÑñßΓóá,
  8619. »α¿óÑñѼ ¼¡«ªÑßΓó« »α¿¼Ñα«ó ¿ ñáñ¿¼ ¡Ñ¬«Γ«απε í«½ÑÑ ú½πí«¬πε  ¿¡-
  8620. Σ«α¼áµ¿ε.
  8621.  
  8622.      ä½∩  τÑú«  ¡πª¡«  ¿ß»«½∞º«óáΓ∞  Æπαí«  ÇßßѼí½Ñα   ß   Æπαí«
  8623. Åá߬á½Ñ¼?  ü«½∞Φ¿¡ßΓó«  »α«úαá¼¼,  ¬«Γ«αδÑ  óδ ºáσ«Γ¿ΓÑ ¡á»¿ßáΓ∞,
  8624. ¼«ª¡« αÑ὿º«óáΓ∞ µÑ½¿¬«¼ ¡á Æπαí« Åá߬á½Ñ. é  «Γ½¿τ¿Ñ  «Γ  í«½∞-
  8625. Φ¿¡ßΓóá  ñαπú¿σ ¬«¼»¿½∩Γ«α«ó Åá߬á½∩, Æπαí« Åá߬á½∞ »«ºó«½∩ÑΓ óá¼
  8626. ß »«¼«Θ∞ε ¼áßß¿ó«ó Port[], Mem[], MemW[] ¿ MemL[] ¡Ñ»«ßαÑñßΓóÑ¡¡«
  8627. «íαáΘáΓ∞ß∩ ¬« óßѼ αÑßπαßá¼ ¼áΦ¿¡δ, á ß »«¼«Θ∞ε »α«µÑñπα Intr() ¿
  8628. MsDos() óδ  ¼«ªÑΓÑ  «íαáΘáΓ∞ß∩  ¬  íẫó«⌐  ß¿ßΓѼѠ óó«ñá-óδó«ñá
  8629. (BIOS) ¿ «»Ñαᵿ«¡¡«⌐ ß¿ßΓѼѠDOS.
  8630.  
  8631.      ä½∩ τÑú« ªÑ Γ«úñá ¼«ªÑΓ »«ΓαÑí«óáΓ∞ß∩ ¿ß»«½∞º«óáΓ∞ ß«ó¼ÑßΓ¡«
  8632. ß  Æπαí«  Åá߬á½Ñ¼  ÇßßѼí½Ñα? ä½∩ φΓ«ú« ßπΘÑßΓóπεΓ ñóÑ óÑα«∩Γ¡δÑ
  8633. »α¿τ¿¡δ: óδ»«½¡Ñ¡¿Ñ ¡Ñ¬«Γ«α«ú« ¡Ñí«½∞Φ«ú« τ¿ß½á «»Ñαᵿ⌐, ¬«Γ«αδÑ
  8634. ¡Ñ»«ßαÑñßΓóÑ¡¡« ó Æπαí« Åá߬á½Ñ ¡Ññ«ßΓπ»¡δ, ¿ ¿ß»«½∞º«óá¡¿Ñ »αÑ¿-
  8635. ¼πΘÑßΓó óδß«¬«⌐ ß¬«α«ßΓ¿ αáí«Γδ,  ¬«Γ«αδÑ  ñáÑΓ  ÇßßѼí½Ñα.  (æá¼
  8636. Æπαí«  Åá߬á½∞  αáí«ΓáÑΓ ñ«ßΓáΓ«τ¡« íδßΓα«, »«Γ«¼π τΓ« «¡ ¡á»¿ßá¡
  8637. ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá.) é ñá¡¡«⌐ ú½áóÑ ¼δ »«¬áªÑ¼  óá¼,  ¬á¬  ¼«ª¡«
  8638. ¿ß»«½∞º«óáΓ∞ ó Æπαí« Åá߬á½Ñ »αÑ¿¼πΘÑßΓóá ÇßßѼí½Ñαá.
  8639.  
  8640.            Åα¿¼Ñτá¡¿Ñ: àß½¿ ¡«¼Ñα óÑαß¿¿ ß»Ñµ¿á½∞¡« ¡Ñ «ú«óáα¿óá-
  8641.       ÑΓß∩, Γ« óѺñÑ ñá½ÑÑ αÑτ∞ ¿ñÑΓ « Æπαí« Åá߬á½Ñ óÑαß¿¿ 4.0 ¿
  8642.       ßΓáαΦÑ.
  8643.  
  8644.  
  8645.  
  8646.  
  8647. TASM2 #2-5/䫬              = 223 =
  8648.  
  8649.                       æσѼᠻá¼∩Γ¿ Æπαí« Åá߬á½∩
  8650. -----------------------------------------------------------------
  8651.  
  8652.      ÅÑαÑñ ΓѼ, ¬á¬ óδ ¡áτ¡ÑΓÑ »¿ßáΓ∞ ¬«ñ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá ñ½∩
  8653. αáí«Γδ ß Æπαí« Åá߬á½Ñ¼, ó᪡« »«¡∩Γ∞, ¬á¬ ¬«¼»¿½∩Γ«α αáß»«½áúáÑΓ
  8654. ¿¡Σ«α¼áµ¿ε ó »á¼∩Γ¿. î«ñѽ∞ »á¼∩Γ¿ Æπαí« Åá߬á½∩ «íΩÑñ¿¡∩ÑΓ ¡Ñ¬«-
  8655. Γ«αδÑ  ßΓ«α«¡δ  ßαÑñ¡Ñ⌐ ¿ í«½∞Φ«⌐ ¼«ñѽ¿ »á¼∩Γ¿, ¬«Γ«αδÑ «»¿ßδóá-
  8656. ½¿ß∞ ó â½áóÑ 5. çñÑß∞ ¿¼ÑÑΓß∩ «ñ¿¡ ú½«íá½∞¡δÑ ßÑú¼Ñ¡Γ ñá¡¡δσ, ¬«-
  8657. Γ«αδ⌐ »«ºó«½∩ÑΓ «αúá¡¿º«óáΓ∞ ñ«ßΓπ» ¬ ú½«íá½∞¡δ¼ »ÑαѼѡ¡δ¼ ¿ Γ¿-
  8658. »¿º«óá¡¡δ¼ ¬«¡ßΓá¡Γá¼ τÑαѺ αÑú¿ßΓα DS. Äñ¡á¬« ¬áªñδ⌐ ¼«ñπ½∞ ¿¼Ñ-
  8659. ÑΓ ßó«⌐ ßÑú¼Ñ¡Γ ¬«ñá, ¿ ñ¿¡á¼¿τÑ߬¿ αáß»αÑñѽ∩Ѽá∩ «í½áßΓ∞ »á¼∩Γ¿
  8660. ¼«ªÑΓ πóѽ¿τ¿óáΓ∞ß∩ ñ« αẼÑαá óßÑ⌐ ñ«ßΓπ»¡«⌐ »á¼∩Γ¿.
  8661.  
  8662.      æσѼᠻá¼∩Γ¿ Æπαí« Åá߬á½∩ »«¬áºá¡á ¡á É¿ß. 8.1.
  8663.  
  8664.                î½áñΦ¿Ñ áñαÑßá »á¼∩Γ¿
  8665. ----------------------------------------------------
  8666. |          ÅαÑΣ¿¬ß »α«úαá¼¼¡«ú« ßÑú¼Ñ¡Γá           |
  8667. |                  (256 íá⌐Γ)                      |
  8668. |--------------------------------------------------|
  8669. |                                                  |
  8670. |         â½áó¡δ⌐ ßÑú¼Ñ¡Γ ¬«ñá »α«úαá¼¼δ           | îá¬ß¿¼á½∞-
  8671. |                                                  | ¡δ⌐ αẼÑα
  8672. |                                                  | ßÑú¼Ñ¡Γá
  8673. |                                                  | ¬«ñá - 64è
  8674. |--------------------------------------------------|
  8675. |         æÑú¼Ñ¡Γ ¬«ñá »«ß½Ññ¡Ñú« ¼«ñπ½∩           |
  8676. |--------------------------------------------------|
  8677. |                                                  |
  8678. .                                                  .
  8679. .                                                  .
  8680. .                                                  .
  8681. |                                                  |
  8682. |--------------------------------------------------|
  8683. |            æÑú¼Ñ¡Γ ¬«ñá »Ñαó«ú« ¼«ñπ½∩           |
  8684. |--------------------------------------------------|
  8685. |                                                  |
  8686. |    æÑú¼Ñ¡Γ ¬«ñá í¿í½¿«ΓѬ¿ ¿ß»«½¡∩εΘÑ⌐ ß¿ßΓÑ¼δ   |
  8687. |                                                  |
  8688. |--------------------------------------------------|<-- DS
  8689. |              Æ¿»¿º«óá¡¡δÑ ¬«¡ßΓá¡Γδ              |
  8690. |- - - - - - - - - - - - - - - - - - - - - - - - - |<-- è«¡Ñµ
  8691. |               â½«íá½∞¡δÑ ¬«¡ßΓá¡Γδ               | Σá⌐½á .EXE
  8692. |--------------------------------------------------|<-- SS
  8693. |                        ^                         | ÉẼÑα ßΓѬá
  8694. |                        |                         | î¿¡¿¼π¼: 1è
  8695.  
  8696. TASM2 #2-5/䫬              = 224 =
  8697.  
  8698. |  æΓѬ (πóѽ¿τ¿óáÑΓß∩ ó ßΓ«α«¡π ¼½áñΦ¿σ áñαÑß«ó)  | Å« π¼«½τá-
  8699. |                                                  | ¡¿ε: 16K
  8700. |                                                  | îá¬ß¿¼π¼:
  8701. |                                                  |  64è
  8702. |--------------------------------------------------|
  8703. |    ä¿¡á¼¿τÑ߬¿ αáß»αÑñѽ∩Ѽá∩ «í½áßΓ∞ »á¼∩Γ¿     | ìÑ «úαá¡¿-
  8704. |    (πóѽ¿τ¿óáÑΓß∩ ó ßΓ«α«¡π ßΓáαΦ¿σ áñαÑß«ó)     | τѡᠻ«
  8705. |                        |                         | αẼÑαπ
  8706. |                        v                         |
  8707. |--------------------------------------------------|<-- HeapPtr
  8708. |                        ^                         | îá¬ß¿¼á½∞¡δ⌐
  8709. |                        |                         | αẼÑα ß»¿ß-
  8710. |      æ»¿ß«¬ ßó«í«ñ¡δσ «í½áßΓÑ⌐ ñ¿¡á¼¿τÑ߬¿       | ¬á ßó«í«ñ¡δσ
  8711. | αáß»αÑñѽ∩Ѽ«⌐ »á¼∩Γ¿ (πóѽ¿τ¿óáÑΓß∩ ó ßΓ«α«¡π   | «í½áßΓÑ⌐
  8712. | ¼½áñΦ¿σ áñαÑß«ó)                                 |
  8713. ----------------------------------------------------
  8714.                æΓáαΦ¿Ñ áñαÑßá »á¼∩Γ¿
  8715.  
  8716.      É¿ß. 8.1 æσѼᠻá¼∩Γ¿ »α«úαá¼¼δ Æπαí« Åá߬á½∩ óÑαß¿¿ 5.0.
  8717.  
  8718.  
  8719.  
  8720.  
  8721. TASM2 #2-5/䫬              = 225 =
  8722.  
  8723.  
  8724. ÅαÑΣ¿¬ß »α«úαá¼¼¡«ú« ßÑú¼Ñ¡Γá
  8725. -----------------------------------------------------------------
  8726.  
  8727.      ÅαÑΣ¿¬ß »α«úαá¼¼¡«ú« ßÑú¼Ñ¡Γá (PSP) »αÑñßΓáó½∩ÑΓ  ß«í«⌐  «í-
  8728. ½áßΓ∞ »á¼∩Γ¿ αẼÑα«¼ ó 256 íá⌐Γ, ß«ºñáóáѼπε «»Ñαᵿ«¡¡«⌐ ß¿ßΓÑ-
  8729. ¼«⌐ MS-DOS »α¿ ºáúαπº¬Ñ »α«úαá¼¼δ. èα«¼Ñ óßÑú« »α«τÑú« «¡á ß«ñÑα-
  8730. ª¿Γ  ¿¡Σ«α¼áµ¿ε  « »áαá¼ÑΓαá󠬫¼á¡ñ¡«⌐ ßΓ᫬¿,  ¿ß»«½∞ºπѼ«⌐ ñ½∩
  8731. ó맮óá »α«úαá¼¼δ,  «íΩѼѠñ«ßΓπ»¡«⌐ »á¼∩Γ¿ ¿  «»Ñαᵿ«¡¡«⌐  ßαÑñÑ
  8732. DOS (ß»¿ß¬Ñ ¿ß»«½∞ºπѼδσ DOS ßΓ᫬«óδσ »ÑαѼѡ¡δσ).
  8733.  
  8734.      é óÑαß¿¿ 3.0 Æπαí« Åá߬á½∩ áñαÑß ßÑú¼Ñ¡Γá ñ½∩  PSP  íδ½  Γ«Γ
  8735. ªÑ,  τΓ«  ¿  π  óßÑú« «ßΓá½∞¡«ú« ¬«ñá. ÆÑ»Ñα∞ φΓ« ¡Ñ Γá¬. é Æπαí«
  8736. Åá߬á½Ñ óÑαß¿¿ 4.0 ¿ ßΓáαΦÑ «ß¡«ó¡á∩ »α«úαá¼¼á,  ¿ß»«½∞ºπѼδÑ  Ñ⌐
  8737. ¼«ñπ½¿  ¿  í¿í½¿«ΓѬᠿ߻«½¡∩εΘÑ⌐ ß¿ßΓÑ¼δ ºá¡¿¼áεΓ αẽ¿τ¡δÑ ßÑú-
  8738. ¼Ñ¡Γδ. Æπαí« Åá߬á½∞, Γᬿ¼ «íαẫ¼, σαá¡¿Γ áñαÑß ßÑú¼Ñ¡Γá PSP  ó
  8739. »αÑñ«»αÑñѽѡ¡«⌐ ú½«íá½∞¡«⌐ »ÑαѼѡ¡«⌐ ß ¿¼Ñ¡Ñ¼ PrefixSeg, í½áú«-
  8740. ñáα∩ τѼπ óδ ¼«ªÑΓÑ »«½πτ¿Γ∞ ñ«ßΓπ» ¬ ¿¡Σ«α¼áµ¿¿ ó PSP.
  8741.  
  8742.  
  8743. æÑú¼Ñ¡Γδ ¬«ñá
  8744. -----------------------------------------------------------------
  8745.  
  8746.      èáªñá∩ »α«úαá¼¼á Æπαí« Åá߬á½∩ ß«ñÑαª¿Γ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ  ñóá
  8747. ßÑú¼Ñ¡Γá  ¬«ñá: ó «ñ¡«¼ ¿º ¡¿σ ß«ñÑনΓß∩ ¬«ñ «ß¡«ó¡«⌐ »α«úαá¼¼δ,
  8748. á ó ñαπú«¼ - í¿í½¿«ΓѬᠿ߻«½¡∩εΘÑ⌐ ß¿ßΓÑ¼δ  (run-time  library).
  8749. èα«¼Ñ  Γ«ú«,  »«ñ»α«úαá¼¼δ  ¬áªñ«ú«  ¼«ñπ½∩ ¡áσ«ñ∩Γß∩ ó «Γñѽ∞¡«¼
  8750. ßÑú¼Ñ¡ΓÑ ¬«ñá.  Æá¬ ¬á¬ ¬áªñδ⌐ ßÑú¼Ñ¡Γ ¬«ñá ¼«ªÑΓ ¿¼ÑΓ∞ αẼÑα ñ«
  8751. 64è,  óáΦá  »α«úαἼᠠ¼«ªÑΓ ºá¡¿¼áΓ∞ Γᬫ⌐ «íΩѼ,  ¬á¬«⌐ ñ½∩ ¡ÑÑ
  8752. ΓαÑíπÑΓß∩ (Ñß½¿,  ¬«¡Ñτ¡«, Γᬫ⌐ «íΩѼ »á¼∩Γ¿ ¡á óáΦѼ ¬«¼»∞εΓÑαÑ
  8753. ñ«ßΓπ»Ñ¡).  Åα«úαá¼¼¿ßΓδ, ¬«Γ«αδÑ αá¡ÑÑ ¿ß»«½∞º«ó὿ «óÑα½Ñ¿, ¼«-
  8754. úπΓ ΓÑ»Ñα∞ ñ½∩ í«½ÑÑ íδßΓα«ú« óδ»«½¡Ñ¡¿∩  úÑ¡Ñα¿α«óáΓ∞ »α«úαá¼¼δ,
  8755. »αÑóδΦáεΘ¿Ñ 64è, ¿ ñ½∩ í«½ÑÑ íδßΓα«ú« óδ»«½¡Ñ¡¿∩ σαá¡¿Γ∞ óÑß∞ ¬«ñ
  8756. ó »á¼∩Γ¿ (ó óÑαß¿∩σ Æπαí« Åá߬á½∩ 5.0 ¿ 5.5 ó¡«ó∞ óóÑñÑ¡á ó«º¼«ª-
  8757. ¡«ßΓ∞  ¿ß»«½∞º«óá¡¿∩  «óÑα½ÑÑó,  τΓ«  ßó∩ºá¡« ß ¡ÑσóáΓ¬«⌐ »á¼∩Γ¿,
  8758. 󫺡¿¬áεΘÑ⌐ »α¿ αáºαáí«Γ¬Ñ í«½∞Φ¿σ »α«úαá¼¼). æ Γ«τ¬¿ ºαÑ¡¿∩ Æπα-
  8759. í« ÇßßѼí½Ñαá ßÑú¼Ñ¡Γ ¬«ñá, ß ¬«Γ«αδ¼ ¬«¼»«¡πÑΓß∩ ¼«ñπ½∞ ¡á ∩ºδ¬Ñ
  8760. ÇßßѼí½Ñαá, ¡áºδóáÑΓß∩ CODE ¿½¿ CSEG.
  8761.  
  8762.  
  8763.  
  8764.  
  8765. TASM2 #2-5/䫬              = 226 =
  8766.  
  8767.  
  8768. æÑú¼Ñ¡Γ ú½«íá½∞¡δσ ñá¡¡δσ
  8769. -----------------------------------------------------------------
  8770.  
  8771.      æÑú¼Ñ¡Γ ú½«íá½∞¡δσ ñá¡¡δσ Æπαí« Åá߬á½∩ ß½ÑñπÑΓ ºá ßÑú¼Ñ¡Γ«¼
  8772. ¬«ñá í¿í½¿«ΓѬ¿ ¿ß»«½¡∩εΘÑ⌐ ß¿ßΓѼδ. Ä¡ ß«ñÑαª¿Γ ñ« 64è ¿¡¿µ¿á½¿-
  8773. º¿α«óá¡¡δσ ¿ ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δσ ñá¡¡δσ - Γ¿»¿º«óá¡¡δσ  ¬«¡ßΓá¡Γ
  8774. ¿  ú½«íá½∞¡δσ »ÑαѼѡ¡δσ. èᬠ¿ ó Æπαí« Åá߬á½Ñ 3.0, Γ¿»¿º«óá¡¡δÑ
  8775. ¬«¡ßΓá¡Γδ ¡á ßἫ¼ ñѽѠó«óßÑ ¡Ñ ∩ó½∩εΓß∩ ¬«¡ßΓá¡ΓἿ,  á  »αÑñß-
  8776. Γáó½∩εΓ  ß«í«⌐  »ÑαѼѡ¡δÑ, ¿¼ÑεΘ¿Ñ »αÑñ«»αÑñѽѡ¡«Ñ º¡áτÑ¡¿Ñ »α¿
  8777. ºáúαπº¬Ñ »α«úαá¼¼δ. ì« ó «Γ½¿τ¿Ñ «Γ Æπαí« Åá߬á½∩ 3.0, Æπαí« Åáß-
  8778. ¬á½∞  óÑαß¿¿ 4.0 ¡Ñ »«¼ÑΘáÑΓ Γ¿»¿º«óá¡¡δÑ ¬«¡ßΓá¡Γδ ó ßÑú¼Ñ¡Γ ¬«-
  8779. ñá. é¼ÑßΓ« φΓ«ú« «¡ αẼÑΘáÑΓ ¿σ ó  ßÑú¼Ñ¡ΓÑ  ú½«íá½∞¡δσ  ñá¡¡δσ,
  8780. úñÑ ¬ ¡¿¼ «íαáΘáΓ∞ß∩ ¼«ª¡« ñáªÑ íδßΓαÑÑ, τѼ φΓ« ¼«ú ñѽáΓ∞ Æπαí«
  8781. Åá߬á½∞ 3.0. æÑú¼Ñ¡Γ ú½«íá½∞¡δσ ñá¡¡δ¼ ¡áºδóáÑΓß∩ DATA  ¿½¿  DSEG
  8782. (»« φΓ¿¼ ¿¼Ñ¡á¼ ¬ ¡Ñ¼π ¼«ª¡« «íαáΘáΓ∞ß∩ ¿º Æπαí« ÇßßѼí½Ñαá).
  8783.  
  8784.  
  8785. æΓѬ
  8786. -----------------------------------------------------------------
  8787.  
  8788.      é Æπαí« Åá߬á½Ñ óÑαß¿¿ 4.0 ¿ ßΓáαΦÑ ßÑú¼Ñ¡Γ ú½«íá½∞¡δσ  ñá¡-
  8789. ¡δσ ¡áσ«ñ¿Γß∩ ¡áñ ßΓѬ«¼. çá¼ÑΓ¿¼, τΓ« ΓᬫѠαáß»«½«ªÑ¡¿Ñ «Γ½¿τá-
  8790. ÑΓß∩ «Γ »α¿¡∩Γ«ú« ó Æπαí« Åá߬á½Ñ 3.0. æΓѬ ¿ ñ¿¡á¼¿τÑ߬¿ αáß»αÑ-
  8791. ñѽ∩Ѽá∩ «í½áßΓ∞ »á¼∩Γ¿ ¡Ñ αáßΓπΓ ¡áóßΓαÑτπ ñαπú ñαπúπ. ä½∩ ßΓѬá
  8792. óδñѽ∩ÑΓß∩ Σ¿¬ß¿α«óá¡¡δ⌐ «íΩѼ »á¼∩Γ¿. Å« π¼«½τá¡¿ε φΓ« 16è,  τΓ«
  8793. 󻫽¡Ñ  ñ«ßΓáΓ«τ¡« ñ½∩ í«½∞Φ¿¡ßΓóá »α«úαá¼¼. Äñ¡á¬« óδ ¼«ªÑΓÑ ºá-
  8794. ñáΓ∞ ¼¿¡¿¼á½∞¡δ⌐ αẼÑα ßΓѬá 1è (ñ½∩ ¬«α«Γ¬¿σ »α«úαá¼¼) ¿½¿ ¼á¬-
  8795. ß¿¼á½∞¡δ⌐  64è  (ñ½∩ »α«úαá¼¼, ¿¡Γѡ߿󡫠¿ß»«½∞ºπεΘ¿σ αѬπαß¿ε).
  8796. ÉẼÑα ßΓѬᠿ ñ¿¡á¼¿τÑ߬¿ αáß»αÑñѽ∩Ѽ«⌐  «í½áßΓ¿  »á¼∩Γ¿  ¼«ª¡«
  8797. óδíαáΓ∞ ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ ¬«¼»¿½∩Γ«αá $M.
  8798.  
  8799.      é í«½∞Φ¿¡ßΓóÑ »α«úαá¼¼ ñ½∩ »α«µÑßß«α«ó 80σ86 π¬áºáΓѽ∞ ßΓѬá
  8800. ¡áτ¿¡áÑΓß∩  ß óÑαΦ¿¡δ ßΓѬᠿ ¿º¼Ñ¡∩ÑΓ º¡áτÑ¡¿Ñ ó ßΓ«α«¡π ¼½áñΦ¿σ
  8801. áñαÑß«ó. Åα¿ ó맮óÑ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿  Æπαí«  Åá߬á½∞  «íδτ¡«
  8802. óδ»«½¡∩ÑΓ  »α«óÑα¬π,  τΓ«íδ  πíÑñ¿Γ∞ß∩, τΓ« ßΓѬ ¡Ñ ¿ßτÑα»á¡. ¥Γπ
  8803. »α«óÑα¬π ¼«ª¡« "ó䬽ετ¿Γ∞" ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ ¬«¼»¿½∩Γ«αá {$S-}.
  8804.  
  8805.  
  8806.  
  8807.  
  8808. TASM2 #2-5/䫬              = 227 =
  8809.  
  8810.  
  8811. 信ἿτÑ߬¿ αáß»αÑñѽ∩Ѽá∩ «í½áßΓ∞ »á¼∩Γ¿
  8812. -----------------------------------------------------------------
  8813.  
  8814.      é ßΓáαΦ¿σ áñαÑßáσ »á¼∩Γ¿ Æπαí« Åá߬á½∩ ¡áσ«ñ¿Γß∩ ñ¿¡á¼¿τÑ߬¿
  8815. αáß»αÑñѽ∩Ѽá∩  «í½áßΓ∞  »á¼∩Γ¿  (heap). Å« π¼«½τá¡¿ε ñ¿¡á¼¿τÑ߬¿
  8816. αáß»αÑñѽ∩Ѽá∩ «í½áßΓ∞ ºá¡¿¼áÑΓ óßε »á¼∩Γ∞, ¡Ñ ¿ß»«½∞º«óá¡¡πε ñ½∩
  8817. ßÑú¼Ñ¡Γ«ó ¬«ñá,  ñá¡¡δσ ¿ ßΓѬá.  Äñ¡á¬« ñ½∩ «úαá¡¿τÑ¡¿∩  αẼÑαá
  8818. ñ¿¡á¼¿τÑ߬¿  αáß»αÑñѽ∩Ѽ«⌐ «í½áßΓ¿ »á¼∩Γ¿ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ¿-
  8819. αÑ¬Γ¿óπ $M (ÑÑ ¼«ª¡« ΓᬪѠ¿ß»«½∞º«óáΓ∞ ñ½∩ »αÑñ«ΓóαáΘÑ¡¿∩ óδ»«½-
  8820. ¡Ñ¡¿∩  »α«úαá¼¼δ,  Ñß½¿ ¡Ñ ñ«ßΓπ»Ñ¡ ¼¿¡¿¼á½∞¡δ⌐ «íΩѼ ñ¿¡á¼¿τÑ߬¿
  8821. αáß»αÑñѽ∩Ѽ«⌐ «í½áßΓ¿ »á¼∩Γ¿).
  8822.  
  8823.      Åá¼∩Γ∞ ó  ñ¿¡á¼¿τÑ߬¿ αáß»αÑñѽ∩Ѽ«⌐ «í½áßΓ¿  óδñѽ∩ÑΓß∩ ñ¿-
  8824. ¡á¼¿τÑ߬¿  »α¿  «íαáΘÑ¡¿¿ ¬  »α«µÑñπαá¼  New() ¿  GetMem(), ¡áτ¿-
  8825. ¡á∩ ß ¡¿ª¡Ñ⌐ ÑÑ úαá¡¿µδ  ("ñ¡«").  è«úñá  ¿ß»«½∞ºπεΓß∩  »α«µÑñπαδ
  8826. Dispose  ¿  FreeMem,  Æπαí« Åá߬á½∞ óÑαß¿¿ 4.0 ¿ óδΦÑ «Γ߽Ѫ¿óáÑΓ
  8827. ßó«í«ñ¡δÑ «í½áßΓ¿, «íαáºπεΘ¿Ñß∩ ó ñ¿¡á¼¿τÑ߬¿ αáß»αÑñѽ∩Ѽ«⌐  «í-
  8828. ½áßΓ¿ »á¼∩Γ¿, ß »«¼«Θ∞ε ß»Ñµ¿á½∞¡«⌐ ßΓαπ¬Γπαδ ñá¡¡δσ, ¬«Γ«αá∩ ¡á-
  8829. ºδóáÑΓß∩ ß»¿ß¬«¼ ßó«í«ñ¡δσ «í½áßΓÑ⌐ (free list). æ»¿ß«¬ ßó«í«ñ¡δσ
  8830. «í½áßΓÑ⌐, αẼÑα ¬«Γ«α«ú« ¡Ñ ¼«ªÑΓ »αÑóδΦáΓ∞ 64è, πóѽ¿τ¿óáÑΓß∩ ó
  8831. ßΓ«α«¡π ¼½áñΦ¿σ áñαÑß«ó, ¡áτ¿¡á∩ ß "óÑαΦ¿¡δ" ñ¿¡á¼¿τÑ߬¿  αáß»αÑ-
  8832. ñѽ∩Ѽ«⌐ «í½áßΓ¿ »á¼∩Γ¿.
  8833.  
  8834.  
  8835. êß»«½∞º«óá¡¿Ñ αÑú¿ßΓα«ó ó Æπαí« Åá߬á½Ñ
  8836. -----------------------------------------------------------------
  8837.  
  8838.      Æπαí« Åá߬á½∞ ¡á½áúáÑΓ ¡á ¿ß»«½∞º«óá¡¿Ñ αÑú¿ßΓα«ó  ¼¿¡¿¼á½∞-
  8839. ¡δÑ  «úαá¡¿τÑ¡¿∩.  Åα¿ ó맮óÑ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ ñ«½ª¡δ ß«σαá-
  8840. ¡∩Γ∞ß∩ (¿ ó«ßßΓá¡áó½¿óáΓ∞ß∩) º¡áτÑ¡¿∩ Γ«½∞¬« ΓαÑσ αÑú¿ßΓα«ó:  αÑ-
  8841. ú¿ßΓαá  ßÑú¼Ñ¡Γá ßΓѬá (SS), αÑú¿ßΓαá ßÑú¼Ñ¡Γá ñá¡¡δσ (DS) ¿ π¬á-
  8842. ºáΓѽ∩ íáºδ (BP). ÉÑú¿ßΓα DS π¬áºδóáÑΓ ¡á ú½«íá½∞¡δ⌐ ßÑú¼Ñ¡Γ ñá¡-
  8843. ¡δσ  (ß ¿¼Ñ¡Ñ¼ DATA), á SS - ¡á ßÑú¼Ñ¡Γ ßΓѬá. ÉÑú¿ßΓα BP ¿ß»«½∞-
  8844. ºπÑΓß∩ ó ¬áªñ«⌐ »α«µÑñπαÑ ¿ Σπ¡¬µ¿¿ ñ½∩ ßß佬¿ ¡á ºá»¿ß∞  á¬Γ¿óá-
  8845. µ¿¿  (activation record), ¬«Γ«αá∩ »αÑñßΓáó½∩ÑΓ ß«í«⌐ »α«ßΓαá¡ßΓó«
  8846. ó ßΓѬÑ, ¿ß»«½∞ºπѼ«Ñ ñ½∩ »áαá¼ÑΓα«ó, ½«¬á½∞¡δσ »ÑαѼѡ¡δσ ¿ óαÑ-
  8847. ¼Ñ¡¡«⌐  αáí«τÑ⌐ »á¼∩Γ¿. éßÑ »«ñ»α«úαá¼¼δ »ÑαÑñ óδσ«ñ«¼ ñ«½ª¡δ óδ-
  8848. αáó¡¿óáΓ∞ π¬áºáΓѽ∞ ßΓѬá (SP), Γ« ÑßΓ∞ «τ¿ΘáΓ∞ Ñú«  «Γ  »áαá¼ÑΓ-
  8849. α«ó.
  8850.  
  8851.                          ü½¿ª¡¿⌐ ¿½¿ ñá½∞¡¿⌐?
  8852. -----------------------------------------------------------------
  8853.  
  8854.      Å«ß¬«½∞¬π »α«úαá¼¼á Æπαí« Åá߬á½∩ ß«ñÑαª¿Γ ¡Ñ߬«½∞¬« ßÑú¼Ñ¡-
  8855. Γ«ó  ¬«ñá,  ñ½∩  «íαáΘÑ¡¿∩ ¬ »α«µÑñπαá¼ ¿ Σπ¡¬µ¿∩¼ «¡á ¿ß»«½∞ºπÑΓ
  8856.  
  8857. TASM2 #2-5/䫬              = 228 =
  8858.  
  8859. "ß¼Ñß∞" ó맮ó«ó í½¿ª¡Ñú« (NEAR) ¿ ñá½∞¡Ñú«  (FAR)  Γ¿»«ó.  é  τѼ
  8860. αạ¿µá?  ü½¿ª¡¿⌐ óδº«ó ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ Γ«½∞¬« ñ½∩ «íαáΘÑ¡¿∩
  8861. ¬ »«ñ»α«úαá¼¼Ñ, ¬«Γ«αá∩ ¡áσ«ñ¿Γß∩ ó Γ«¼ ªÑ ßÑú¼Ñ¡ΓÑ, τΓ«  ¿  ßÑú-
  8862. ¼Ñ¡Γ, «Γ¬πñá  ñѽáÑΓß∩  ó맮ó. æ »«¼«Θ∞ε ªÑ ñá½∞¡Ñú« ó맮óá ¼«ª¡«
  8863. «íαáΘáΓ∞ß∩ ¬ »«ñ»α«úαá¼¼Ñ, ¬«Γ«αá∩ ¡áσ«ñ¿Γß∩ ó ½εí«¼ ¼ÑßΓÑ  »á¼∩-
  8864. Γ¿.  Äñ¡á¬« φΓ« ¡Ñ »α«σ«ñ¿Γ ñáα«¼: ñá½∞¡¿Ñ ó맮óδ ºá¡¿¼áεΓ í«½∞ΦÑ
  8865. ¼ÑßΓá ¿ óδ»«½¡∩εΓß∩ ¼Ññ½Ñ¡¡ÑÑ, τѼ í½¿ª¡¿Ñ.
  8866.  
  8867.      èáªñá∩ »«ñ»α«úαἼᠻα«úαá¼¼δ Æπαí« Åá߬á½∩ ñ«½ª¡á íδΓ∞  ¡á-
  8868. »¿ßá¡á (αáºαáí«Γá¡á óἿ ¿½¿ ¿ß»«½∞º«óá¡á ¬«¼»¿½∩Γ«α«¼) Γᬿ¼ «í-
  8869. αẫ¼, τΓ«íδ «¡á óδºδóá½áß∞ Γ«½∞¬« «ñ¡¿¼ ¿º φΓ¿σ  ñóπσ  ß»«ß«í«ó.
  8870. èᬫ⌐ ¿º ¡¿σ ß½ÑñπÑΓ óδíαáΓ∞? Å«ñ»α«úαá¼¼δ, «»¿ßá¡¡δÑ ó ¿¡ΓÑαΣÑ⌐-
  8871. ß¡«⌐ τáßΓ¿ ¼«ñπ½∩, óßÑúñá ñ«½ª¡δ ¿¼ÑΓ∞ ñá½∞¡¿⌐ Γ¿», Γᬠ ¬á¬  «¡¿
  8872. ¼«úπΓ  óδºδóáΓ∞ß∩ ¿º ñαπú¿σ ¼«ñπ½Ñ⌐. Äñ¡á¬« »«ñ»α«úαá¼¼δ, «»¿ßá¡-
  8873. ¡δÑ ó «ß¡«ó¡«⌐ »α«úαἼѠ¿½¿ «íΩ∩ó½Ñ¡¡δÑ Γ«½∞¬« ó αáºñѽѠ αÑ὿-
  8874. ºáµ¿¿  ¼«ñπ½∩ ¿¼ÑεΓ «íδτ¡« í½¿ª¡¿⌐ Γ¿». (ïεí«⌐ »«ñ»α«úαἼѠ¼«ª¡«
  8875. »α¿¡πñ¿Γѽ∞¡« ¡áº¡áτ¿Γ∞ ñá½∞¡¿⌐ Γ¿» ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ  ¬«¼»¿½∩-
  8876. Γ«αá {$F+}.)
  8877.  
  8878.      Åα¿ αáºαáí«Γ¬Ñ »α«úαá¼¼ ¡á ÇßßѼí½ÑαÑ,  óºá¿¼«ñÑ⌐ßΓóπεΘ¿σ  ß
  8879. Æπαí«  Åá߬á½Ñ¼,  óδ  ñ«½ª¡δ  πíÑñ¿Γ∞ß∩, τΓ« óáΦá »α«úαἼᠿ¼ÑÑΓ
  8880. »αáó¿½∞¡δ⌐ Γ¿» ó맮óá.  Æπαí« Åác¬á½∞ ¡Ñ ß««íΘ¿Γ «í «Φ¿í¬Ñ,  Ñß½¿
  8881. óδ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá «íΩ∩ó¿ΓÑ »α«µÑñπαπ (PROC),  ¬á¬ í½¿ª¡εε, á
  8882. ß««ΓóÑΓßΓóπεΘÑÑ  «»¿ßá¡¿Ñ ó¡ÑΦ¡Ñ⌐ »α«µÑñπαδ αáß»«½«ªÑ¡« Γᬿ¼ «í-
  8883. αẫ¼, τΓ« «¡á ñ«½ª¡á ¿¼ÑΓ∞ ñá½∞¡¿⌐ Γ¿».
  8884.  
  8885.  
  8886.  
  8887.  
  8888. TASM2 #2-5/䫬              = 229 =
  8889.  
  8890.           æ«ó¼ÑßΓ¡«Ñ ¿ß»«½∞º«óá¡¿Ñ ñá¡¡δσ c Æπαí« Åá߬á½Ñ¼ //
  8891.  
  8892. ä¿αÑ¬Γ¿óá ¬«¼»¿½∩Γ«αá $L ¿ ó¡ÑΦ¡¿Ñ »«ñ»α«úαá¼¼δ
  8893. -----------------------------------------------------------------
  8894.  
  8895.      äóá ¬½ετÑóδσ ¼«¼Ñ¡Γá »α¿ ¿ß»«½∞º«óá¡¿¿  Æπαí«  ÇßßѼí½Ñαá  ß
  8896. Æπαí« Åá߬á½Ñ¼ - φΓ« ñ¿αÑ¬Γ¿óá ¬«¼»¿½∩Γ«αá (Æπαí« Åá߬á½∩) {$L} ¿
  8897. «»¿ßá¡¿Ñ   ó¡ÑΦ¡Ñ⌐   (external)   »«ñ»α«úαá¼¼δ.   ä¿αÑ¬Γ¿óá   {$L
  8898. MYFILE.OBJ}  »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« Æπαí« Åá߬á½∞ íπñÑΓ ¿ß¬áΓ∞ Σá⌐½
  8899. «íΩÑ¬Γ¡δ⌐ MYFILE.OBJ (Σá⌐½ ó ßΓá¡ñáαΓ¡«¼ »α¿ú«ñ¡«¼ ñ½∩ ¬«¼»«¡«ó¬¿
  8900. Σ«α¼áΓÑ MS-DOS) ¿ ¬«¼»«¡«óáΓ∞ Ñú« ß óáΦÑ⌐ »α«úαá¼¼«⌐ Æπαí« Åá߬á-
  8901. ½∩.  àß½¿ π Σá⌐½á ó ñ¿αÑ¬Γ¿óÑ {$L} αáßΦ¿αÑ¡¿Ñ ¡Ñ π¬áºδóáÑΓß∩,  Γ«
  8902. »«ñαáºπ¼ÑóáÑΓß∩ αáßΦ¿αÑ¡¿Ñ .OBJ.
  8903.  
  8904.      èáªñá∩ »α«µÑñπαá ¿½¿ Σπ¡¬µ¿∩ Æπαí«  ÇßßѼí½Ñαá,  ¬«Γ«απε  óδ
  8905. σ«Γ¿ΓÑ ßñѽáΓ∞ ñ«ßΓπ»¡«⌐ ó »α«úαἼѠÆπαí« Åá߬á½∩, ñ«½ª¡á «íΩ∩ó-
  8906. ½∩Γ∞ß∩, ¬á¬ ¿ñÑ¡Γ¿Σ¿¬áΓ«α PUBLIC, ¿ Ñ⌐ ñ«½ª¡«  ß««ΓóÑΓßΓó«óáΓ∞  ó
  8907. »α«úαἼѠ«»¿ßá¡¿Ñ external (ó¡ÑΦ¡∩∩). æ¿¡Γá¬ß¿ß «»¿ßá¡¿∩ ó¡ÑΦ¡Ñ⌐
  8908. »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ ó  Æπαí«  Åá߬á½Ñ  á¡á½«ú¿τÑ¡  «»ÑαѪáεΘѼπ
  8909. (forward) «»¿ßá¡¿ε:
  8910.  
  8911.      procedure AsmProc(a : integer; b : real); external;
  8912.      function AsmFunc(c : word; d : byte); external;
  8913.  
  8914.      ¥Γ¿ «»¿ßá¡¿∩ ñ«½ª¡δ ß««ΓóÑΓßΓó«óáΓ∞  ß½ÑñπεΘ¿¼  «»¿ßá¡¿∩¼  ó
  8915. »α«úαἼѠÆπαí« ÇßßѼí½Ñαá:
  8916.  
  8917. CODE        SEGMENT BYTE PUBLIC
  8918. AsmProc     PROC NEAR
  8919.             PUBLIC AsmProc
  8920.             .
  8921.             .
  8922.             .
  8923. AsmProc     ENDP
  8924. AsmFunc     PROC FAR
  8925.             PUBLIC Bar
  8926.             .
  8927.             .
  8928.             .
  8929. AsmFunc     ENDP
  8930. CODE        ENDS
  8931.  
  8932.      Ä»¿ßá¡¿Ñ ó¡ÑΦ¡Ñ⌐ »α«µÑñπαδ Æπαí« Åá߬á½∩  ñ«½ª¡«  ¡áσ«ñ¿Γ∞ß∩
  8933. ¡á  ßἫ¼  ó¡ÑΦ¡Ñ¼  πα«ó¡Ñ  »α«úαá¼¼δ  ¿½¿ ¼«ñπ½∩, Γ« ÑßΓ∞ «¡« ¡Ñ
  8934. ñ«½ª¡« íδΓ∞ ó½«ªÑ¡¡δ¼ »« «Γ¡«ΦÑ¡¿ε ¬ ñαπú«¼π  «»¿ßá¡¿ε  »α«µÑñπαδ
  8935. ¿½¿  Σπ¡¬µ¿¿. Å«»δΓ¬á «»¿ßáΓ∞ »α«µÑñπαπ ¿½¿ Σπ¡¬µ¿ε ¡á ½εí«¼ ñαπ-
  8936.  
  8937. TASM2 #2-5/䫬              = 230 =
  8938.  
  8939. ú«¼ πα«ó¡Ñ »α¿óÑñÑΓ ¬ «Φ¿í¬Ñ φΓá»á ¬«¼»¿½∩µ¿¿.
  8940.  
  8941.      Æπαí« Åá߬á½∞ ¡Ñ ñѽáÑΓ »α«óÑα¬π, τΓ«íδ πíÑñ¿Γ∞ß∩,  τΓ«  óßÑ
  8942. »α«µÑñπαδ,  «»¿ßá¡¡δÑ  ß  áΓα¿íπΓἿ  NEAR ¿½¿ FAR, ß««ΓóÑΓßΓóπεΓ
  8943. í½¿ª¡¿¼ ¿½¿ ñá½∞¡¿¼ »«ñ»α«úαἼἠó »α«úαἼѠÆπαí« Åá߬á½∩. öá¬-
  8944. Γ¿τÑ߬¿,  «¡  ñáªÑ  ¡Ñ  »α«óÑα∩ÑΓ,  ∩ó½∩εΓß∩  ½¿  ¼ÑΓ¬¿ AsmProc ¿
  8945. AsmFunc ¿¼Ñ¡á¼¿ »α«µÑñπα. Å«φΓ«¼π  óδ  ñ«½ª¡δ  «íÑß»Ñτ¿Γ∞,  τΓ«íδ
  8946. «»¿ßá¡¿∩ ó ÇßßѼí½ÑαÑ ¿ Åá߬á½Ñ í뫨 »αáó¿½∞¡δ¼¿.
  8947.  
  8948.  
  8949.  
  8950.  
  8951. TASM2 #2-5/䫬              = 231 =
  8952.  
  8953.                            ä¿αÑ¬Γ¿óá PUBLIC
  8954. -----------------------------------------------------------------
  8955.  
  8956.      é Æπαí« Åá߬á½Ñ ñ«ßΓπ»¡δ Γ«½∞¬« ΓÑ ¼ÑΓ¬¿ ÇßßѼí½Ñαá, ¬«Γ«αδÑ
  8957. «íΩ∩ó½Ñ¡δ   ó  ¼«ñπ½Ñ  ¡á  ∩ºδ¬Ñ  ÇßßѼí½Ñαá,  ¬á¬  «íΘÑñ«ßΓπ»¡δÑ
  8958. (PUBLIC). îÑΓ¬¿ »αÑñßΓáó½∩εΓ ß«í«⌐ Ññ¿¡ßΓóÑ¡¡δÑ «íΩѬΓδ,  ¬«Γ«αδÑ
  8959. ¼«úπΓ  »ÑαÑñáóáΓ∞ß∩  ¿º  ∩ºδ¬á  ÇßßѼí½Ñαá ó Æπαí« Åá߬á½∞. ü«½ÑÑ
  8960. Γ«ú«, ¬áªñ«⌐ «íΘÑñ«ßΓπ»¡«⌐ ¼ÑΓ¬Ñ ñ«½ª¡«  ß««ΓóÑΓßΓó«óáΓ∞ «»¿ßá¡¿Ñ
  8961. »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ ó »α«úαἼѠÆπαí« Åá߬á½∩, ¿¡áτÑ ¬«¼»¿½∩Γ«α
  8962. óδñáßΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ. Åα¿τѼ ¡Ñ ΓαÑíπÑΓß∩,  τΓ«íδ  «íΘÑñ«ß-
  8963. Γπ»¡á∩ ¼ÑΓ¬á íδ½á τáßΓ∞ε «»¿ßá¡¿∩ PROC. ùΓ« ¬áßáÑΓß∩ Æπαí« Åá߬á-
  8964. ½∩, Γ« ñ½∩ ¡Ñú« «»¿ßá¡¿∩:
  8965.  
  8966. AsmLabel     PROC  FAR
  8967.              PUBLIC Bar
  8968. ¿
  8969.  
  8970. AsmLabel:
  8971.              PUBLIC Bar
  8972.  
  8973. φ¬ó¿óá½Ñ¡Γ¡δ.
  8974.  
  8975.  
  8976.  
  8977.  
  8978. TASM2 #2-5/䫬              = 232 =
  8979.  
  8980.                             ä¿αÑ¬Γ¿óá EXTRN
  8981. -----------------------------------------------------------------
  8982.  
  8983.      î«ñπ½∞ Æπαí« ÇßßѼí½Ñαá ¼«ªÑΓ «íαáΘáΓ∞ß∩ ¬ ½εí«⌐  »α«µÑñπαÑ,
  8984. Σπ¡¬µ¿¿, »ÑαѼѡ¡«⌐ ¿½¿ Γ¿»¿º«óá¡¡«⌐ ¬«¡ßΓá¡ΓÑ Æπαí« Åá߬á½∩, ¬«-
  8985. Γ«αá∩ «»¿ßδóáÑΓß∩ ¡á ßἫ¼ ó¡ÑΦ¡Ñ¼ πα«ó¡Ñ »α«úαá¼¼δ ¿½¿ ¼«ñπ½∩, ß
  8986. ¬«Γ«αδ¼  «¡á ¬«¼»«¡πÑΓß∩. (çá¼ÑΓ¿¼, τΓ« φΓ« ó¬½ετáÑΓ ó ßÑí∩ »ÑαÑ-
  8987. ¼Ñ¡¡δÑ, «»¿ßá¡¡δÑ »«ß½Ñ ñ¿αÑ¬Γ¿óδ ¬«¼»¿½∩Γ«αá {$L} ¿ ó¡ÑΦ¡¿Ñ «»¿-
  8988. ßá¡¿∩,  ßó∩ºá¡¡δÑ  ß  ñá¡¡δ¼  ¼«ñπ½Ñ¼.) îÑΓ¬¿ ¿ «íδτ¡δÑ ¬«¡ßΓá¡Γδ
  8989. Æπαí« Åá߬á½∩ ∩ºδ¬π ÇßßѼí½Ñαá ¡Ññ«ßΓπ»¡δ.
  8990.  
  8991.      ÅαÑñ»«½«ª¿¼, ó óáΦѼ  »α«úαἼѠ Æπαí«  Åá߬á½∩  «»¿ßδóáεΓß∩
  8992. ß½ÑñπεΘ¿Ñ ú½«íá½∞¡δÑ »ÑαѼѡ¡δÑ:
  8993.  
  8994.   var
  8995.       a : byte;
  8996.       b : word;
  8997.       c : shortint;
  8998.       d : integer;
  8999.       e : real;
  9000.       f : single;
  9001.       g : double;
  9002.       h : extended;
  9003.       i : comp;
  9004.       j : pointer;
  9005.  
  9006.      é »α«úαἼѠ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá óδ ¼«ªÑΓÑ »«½πτ¿Γ∞ ñ«ßΓπ» ¬«
  9007. óßѼ φΓ¿¼ »ÑαѼѡ¡δ¼ ß »«¼«Θ∞ε «»¿ßá¡¿⌐ EXTRN:
  9008.  
  9009.   EXTRN A : BYTE          ; 1 íá⌐Γ
  9010.   EXTRN B : WORD          ; 2 íá⌐Γá
  9011.   EXTRN C : BYTE          ; ó ÇßßѼí½ÑαÑ º¡áτÑ¡¿∩ ß« º¡á¬«¼ ¿
  9012.                           ; íѺ º¡á¬á ¿¡ΓÑα»αÑΓ¿απεΓß∩ «ñ¿¡á¬«ó«
  9013.   EXTRN D : WORD          ; Γ« ªÑ ßἫÑ
  9014.   EXTRN E : FWORD         ; 6-íá⌐Γ«ó«Ñ ñÑ⌐ßΓó¿Γѽ∞¡«Ñ º¡áτÑ¡¿Ñ
  9015.                           ; («íαáíáΓδóáÑΓß∩ »α«úαá¼¼¡«)
  9016.   EXTRN F : DWORD         ; 4-íá⌐Γ«ó«Ñ º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐
  9017.                           ; Γ«τ¬«⌐ ó Σ«α¼áΓÑ IEEE
  9018.   EXTRN G : QWORD         ; 8-íá⌐Γ«ó«Ñ º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐
  9019.                           ; Γ«τ¬«⌐ (ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿) ó
  9020.                           ; Σ«α¼áΓÑ IEEE
  9021.   EXTRN H : TBYTE         ; 10-íá⌐Γ«ó«Ñ º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐
  9022.                           ; Γ«τ¬«⌐ ó« óαѼѡ¡«¼ Σ«α¼áΓÑ
  9023.   EXTRN I : QWORD         ; 8-íá⌐Γ«ó«Ñ µÑ½«Ñ ß« º¡á¬«¼ ó
  9024.                           ; Σ«α¼áΓÑ IEEE (ß«»α«µÑßß«α 8087)
  9025.   EXTRN J : DWORD         ; π¬áºáΓѽ∞ Æπαí« Åá߬á½∩
  9026.  
  9027. TASM2 #2-5/䫬              = 233 =
  9028.  
  9029.  
  9030.      Ç¡á½«ú¿τ¡δ¼ «íαẫ¼ ¼«ª¡« »«½πτ¿Γ∞  ñ«ßΓπ»  ¬  »α«µÑñπαá¼  ¿
  9031. Σπ¡¬µ¿∩¼  Æπαí« Åá߬á½∩, ó¬½ετá∩ í¿í½¿«ΓÑτ¡δÑ. ÅαÑñ»«½«ª¿¼, π óáß
  9032. ¿¼ÑÑΓß∩ ¼«ñπ½∞ Æπαí« Åá߬á½∩, ¬«Γ«αδ⌐ óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «íαẫ¼:
  9033.  
  9034. unit Sample;
  9035. { Åα¿¼Ñα ¼«ñπ½∩, ó ¬«Γ«α«¼ «»αÑñѽ∩ÑΓß∩ ¡Ñ߬«½∞¬π »α«µÑñπα
  9036.   Åá߬á½∩, óδºδóáѼδσ ¿º »α«µÑñπαδ ¡á ∩ºδ¬Ñ ÇßßѼí½Ñαá }
  9037.  
  9038. interface
  9039.  
  9040. procedure TestSample;
  9041.  
  9042. procedure PublicProc;  { ñ½∩ «íαáΘÑ¡¿∩ ¿ºó¡Ñ ñ«½ª¡á
  9043.                          íδΓ∞ ñá½∞¡Ñú« Γ¿»á }
  9044. inplementation
  9045.  
  9046. var
  9047.   A : word;
  9048.  
  9049. procedure AsmProc; external;
  9050. {$L ASMPROC.OBJ}
  9051.  
  9052. procedure PublicProc;
  9053.    begin { PublicProc }
  9054.      Writeln('é PublicProc');
  9055.    end   { PublicProc }
  9056.  
  9057. procedure NearProc;   { ñ«½ª¡á íδΓ∞ í½¿ª¡Ñú« Γ¿»á }
  9058.    begin { NearProc }
  9059.      Writeln('B NearProc');
  9060.    end;  { NearProc }
  9061.  
  9062. {$F+}
  9063. procedure FarProc     { ñ«½ª¡á ¿¼ÑΓ∞ ñá½∞¡¿⌐ Γ¿» ß«ú½áß¡«
  9064.                         ñ¿αÑ¬Γ¿óÑ ¬«¼»¿½∩Γ«αá }
  9065.    begin { FarProc }
  9066.      Writeln('B FarProc');
  9067.    end   { FarProc }
  9068.  
  9069. {$F-}
  9070.  
  9071. procedure TestSample;
  9072.   begin { TestSample }
  9073.     Writeln('B TestSample');
  9074.     A := 10;
  9075.  
  9076. TASM2 #2-5/䫬              = 234 =
  9077.  
  9078.     Writeln('ç¡áτÑ¡¿Ñ A »ÑαÑñ ASMPROC = ',A);
  9079.     AsmProc;
  9080.     Writeln('ç¡áτÑ¡¿Ñ A »«ß½Ñ ASMPROC = ',A);
  9081.   end   { TestSample };
  9082.  
  9083. end.
  9084.  
  9085.      Åα«µÑñπαá AsmProc óδºδóáÑΓ  »α«µÑñπαδ  PublicProc,  NearProc
  9086. ¿½¿ FarProc, ¿ß»«½∞ºπ∩ ñ¿αÑ¬Γ¿óπ EXTRN ß½ÑñπεΘ¿¼ «íαẫ¼:
  9087.  
  9088. DATA   SEGMENT WORD PUBLIC
  9089.        ASSUME  DS:DATA
  9090.        EXTRN   A:WORD                ; »ÑαѼѡ¡á∩ ¿º ¼«ñπ½∩
  9091. DATA   ENDS
  9092.  
  9093. CODE   SEGMENT BYTE PUBLIC
  9094.        ASSUME  CS:CODE
  9095.        EXTRN   PublicProc : FAR      ; ñá½∞¡∩∩ »α«µÑñπαá
  9096.                                      ; (φ¬ß»«αΓ¿απÑΓß∩ ¼«ñπ½Ñ¼)
  9097.        EXTRN   NearProc   : NEAR     ; í½¿ª¡∩∩ »α«µÑñπαá
  9098.                                      ; (½«¬á½∞¡á∩ ñ½∩ ¼«ñπ½∩)
  9099.        EXTRN   FarProc    : FAR      ; ñá½∞¡∩∩ »α«µÑñπαá
  9100.                                      ; (½«¬á½∞¡á, ¡« ºáñá¡á,
  9101.                                      ; ¬á¬ ñá½∞¡∩∩)
  9102. AsmProc        PROC NEAR
  9103.                PUBLIC AsmProc
  9104.                CALL   FAR PTR PublicProc
  9105.                CALL   NearProc
  9106.                CALL   FAR PTR FarProc
  9107.                mov    cx,ds:A        ; óº∩Γ∞ »ÑαѼѡ¡πε ¿º
  9108.                                      ; ¼«ñπ½∩
  9109.                sub    cx,2           ; ¿º¼Ñ¡¿Γ∞ ÑÑ
  9110.                mov    ds:A,cx        ; ºá»¿ßáΓ∞ ÑÑ «íαáΓ¡«
  9111.                RET
  9112. AsmProc        ENDP
  9113. CODE           ENDS
  9114.                END
  9115.  
  9116.      Äß¡«ó¡á∩ »α«úαá¼¼á, ¬«Γ«αá∩ »α«óÑα∩ÑΓ φΓπ »α«úαá¼¼π  ¡á  Çß-
  9117. ßѼí½ÑαÑ ¿ ¼«ñπ½∞ Åá߬á½∩, óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «íαẫ¼:
  9118.  
  9119.   program TSample;
  9120.   uses Sample;
  9121.   begin
  9122.       TestSample;
  9123.   end.
  9124.  
  9125. TASM2 #2-5/䫬              = 235 =
  9126.  
  9127.  
  9128.      ùΓ«íδ ßΣ«α¼¿α«óáΓ∞ »α¿¼Ñα »α«úαá¼¼δ ß  »«¼«Θ∞ε  ¬«¼»¿½∩Γ«αá,
  9129. αáí«ΓáεΘÑú«  ó αѪ¿¼Ñ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿, ¿ ÇßßѼí½Ñαá, ¿ß»«½∞ºπ⌐ΓÑ
  9130. ß½ÑñπεΘ¿Ñ ¬«¼á¡ñδ (¿½¿ ¬«¼á¡ñ¡δ⌐ Σá⌐½):
  9131.  
  9132.      TASM ASMPROC
  9133.      TPC /B SAMPLE
  9134.      TSAMPLE
  9135.  
  9136.      Æá¬ ¬á¬ ó¡ÑΦ¡∩∩ »«ñ»α«úαá¼¼á ñ«½ª¡á «íΩ∩ó½∩Γ∞ß∩ ó  »α«úαá¼¼Ñ
  9137. Æπαí«  Åá߬á½∩ ¡á ßἫ¼ ó¡ÑΦ¡Ñ¼ πα«ó¡Ñ »α«µÑñπα, óδ ¡Ñ ¼«ªÑΓÑ ñ½∩
  9138. ñ«ßΓπ»á ¬ «íΩѬΓá¼, ∩ó½∩εΘ¿¼ß∩ ½«¬á½∞¡δ¼¿ »« «Γ¡«ΦÑ¡¿ε ¬ »α«µÑñπ-
  9139. αá¼  ¿½¿ Σπ¡¬µ¿∩¼ ¿ß»«½∞º«óáΓ∞ «»¿ßá¡¿∩ EXTRN. Äñ¡á¬«, óáΦá »α«ú-
  9140. αἼᠡᠠÆπαí«  ÇßßѼí½ÑαÑ »α¿ ó맮óÑ ¿º »α«úαá¼¼δ Æπαí« Åá߬á½∩
  9141. ¼«ªÑΓ »«½πτ¿Γ∞ φΓ¿ «íΩѬΓδ, ¬á¬ º¡áτÑ¡¿∩ »áαá¼ÑΓα«ó-»ÑαѼѡ¡δσ.
  9142.  
  9143.  
  9144.  
  9145.  
  9146. TASM2 #2-5/䫬              = 236 =
  9147.  
  9148.            Äúαá¡¿τÑ¡¿∩ »α¿ ¿ß»«½∞º«óá¡¿¿ «íΩÑ¬Γ«ó Γ¿»á EXTRN
  9149. -----------------------------------------------------------------
  9150.  
  9151.      æ¿¡Γá¬ß¿ß ß«ßΓáó¡«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá Æπαí« Åá߬á½∩, »α¿ ¬«Γ«-
  9152. α«¼  ñ½∩ ñ«ßΓπ»á ¬ «íΩѬΓπ ó ºáñá¡¡«¼ ¼«ñπ½Ñ ¿ß»«½∞ºπÑΓß∩ ¿¼∩ ¼«-
  9153. ñπ½∩ ¿  Γ«τ¬á,  ¡Ñß«ó¼ÑßΓ¿¼ ß ß¿¡Γá¬ß¿τÑ߬¿¼¿ »αáó¿½á¼¿ Æπαí« Çß-
  9154. ßѼí½Ñαá ¿ íπñÑΓ, Γᬿ¼ «íαẫ¼, «ΓóÑαú¡πΓ. Ä»¿ßá¡¿Ñ:
  9155.  
  9156.         EXTRN SYSTEM.Assing : FAR
  9157.  
  9158. »α¿óÑñÑΓ ¬ Γ«¼π, τΓ« Æπαí« ÇßßѼí½Ñα óδñáßΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ.
  9159.  
  9160.      ê¼ÑÑΓß∩ ΓᬪѠñóá ñαπú¿σ «úαá¡¿τÑ¡¿∩ ¡á ¿ß»«½∞º«óá¡¿Ñ ó Æπα-
  9161. í«  Åá߬á½Ñ  «íΩÑ¬Γ«ó  EXTRN.  ÅÑαó«Ñ ¿º ¡¿σ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ó
  9162. ßß佬áσ ¡á »α«µÑñπαπ ¿½¿ Σπ¡¬µ¿ε ¡Ñ ¼«úπΓ  óδ»«½¡∩Γ∞ß∩  áα¿Σ¼ÑΓ¿-
  9163. τÑ߬¿Ñ «»Ñαᵿ¿ ß áñαÑßἿ. Æá¬¿¼ «íαẫ¼, Ñß½¿ óδ «íΩ∩ó¿ΓÑ:
  9164.  
  9165.         EXTRN PublicProc : FAR
  9166.  
  9167. Γ« ¡Ñ ß¼«ªÑΓÑ ºá»¿ßáΓ∞ «»ÑαáΓ«α ó¿ñá:
  9168.  
  9169.         call PublicProc + 42
  9170.  
  9171.      éΓ«α«Ñ «úαá¡¿τÑ¡¿Ñ «Γ¡«ß¿Γß∩ ¬ Γ«¼π, τΓ«  ¬«¼»«¡«óΘ¿¬  Æπαí«
  9172. Åá߬á½∩  ¡Ñ  íπñÑΓ αáß»«º¡áóáΓ∞ «»Ñαᵿ¿, ¬«Γ«αδÑ αáºñѽ∩εΓ ß½«óá
  9173. ¡á íá⌐Γδ, »«φΓ«¼π óδ ¡Ñ ¼«ªÑΓÑ »α¿¼Ñ¡∩Γ∞ ΓᬿѠ«»Ñαᵿ¿ ¬  «íΩѬ-
  9174. Γá¼ EXTRN. ìá»α¿¼Ñα, Ñß½¿ óδ «íΩ∩ó¿ΓÑ:
  9175.  
  9176.         EXTRN i : WORD
  9177.  
  9178. Γ« ¡Ñ ß¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ó ¼«ñπ½Ñ  Æπαí«  ÇßßѼí½Ñαá  óδαáªÑ¡¿∩
  9179. LOW i ¿½¿ HIGH i.
  9180.  
  9181.                  êß»«½∞º«óá¡¿Ñ ¬«ααÑ¬Γ¿α«ó«¬ ßÑú¼Ñ¡Γ«ó
  9182. -----------------------------------------------------------------
  9183.  
  9184.      Æπαí« Åá߬á½∞ úÑ¡Ñα¿απÑΓ Σá⌐½δ .EXE,  ¬«Γ«αδÑ  ¼«úπΓ  ºáúαπ-
  9185. ªáΓ∞ß∩  ó  »á¼∩Γ∞ ¬«¼»∞εΓÑαá Éæ »« ½εí«¼π ñ«ßΓπ»¡«¼π áñαÑßπ. Å«ß-
  9186. ¬«½∞¬π ó »α«úαἼѠºáαá¡ÑÑ ¡Ñ¿ºóÑßΓ¡«, ¬πñá íπñÑΓ ºáúαπªÑ¡ ñá¡¡δ⌐
  9187. ßÑú¼Ñ¡Γ  »α«úαá¼¼δ, ¬«¼»«¡«óΘ¿¬ π¬áºδóáÑΓ ºáúαπºτ¿¬π DOS.EXE, τΓ«
  9188. ¡πª¡« »α¿ ºáúαπº¬Ñ ß¬«ααÑ¬Γ¿α«óáΓ∞ ó »α«úαἼѠóßÑ ßß佬¿ ¡á ßÑú-
  9189. ¼Ñ¡Γδ. Å«ß½Ñ óδ»«½¡Ñ¡¿∩ φΓ¿σ ¬«ααÑ¬Γ¿α«ó«¬ óßÑ ßß佬¿ ¡á ßÑú¼Ñ¡Γδ
  9190. (ΓᬿÑ, ¬á¬ CODE ¿½¿ DATA) íπñπΓ ß«ñÑαªáΓ∞ ¬«ααÑ¬Γ¡δÑ º¡áτÑ¡¿∩.
  9191.  
  9192.      éáΦá »α«úαá¼¼á ¡á Æπαí« ÇßßѼí½ÑαÑ  ¼«ªÑΓ  ¿ß»«½∞º«óáΓ∞  φΓ«
  9193.  
  9194. TASM2 #2-5/䫬              = 237 =
  9195.  
  9196. ßαÑñßΓó«  ñ½∩  »«½πτÑ¡¿∩  áñαÑ߫󠠫íΩÑ¬Γ«ó  ó« óαѼ∩ óδ»«½¡Ñ¡¿∩.
  9197. ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« ó óáΦÑ⌐ »α«úαἼѠ ΓαÑíπÑΓß∩  ¿º¼Ñ¡¿Γ∞
  9198. º¡áτÑ¡¿Ñ  αÑú¿ßΓαá DS, ¡« óδ ¡Ñ σ«Γ¿ΓÑ ß«σαá¡∩Γ∞ ó µ¿¬½Ñ ¿ßσ«ñ¡«Ñ
  9199. ß«ñÑন¼«Ñ ßΓѬᠿ½¿ »ÑαѼÑΘáΓ∞ φΓ¿  º¡áτÑ¡¿∩  ó«  óαѼѡ¡πε  «í-
  9200. ½áßΓ∞.  é¼ÑßΓ« φΓ«ú« óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ «»Ñαáµ¿ε Æπαí« ÇßßѼ-
  9201. í½Ñαá SEG:
  9202.  
  9203.                  .
  9204.                  .
  9205.                  .
  9206.                  mov   ax,SEG DATA  ; »«½πτ¿Γ∞ ñÑ⌐ßΓó¿Γѽ∞¡δ⌐
  9207.                                     ; áñαÑß ú½«íá½∞¡«ú« º¡áτÑ¡¿∩
  9208.                                     ; DS Æπαí« Åá߬á½∩
  9209.                  mov   ds,ax        ; »«¼ÑßΓ¿Γ∞ Ñú« ó DS ñ½∩
  9210.                                     ; ¿ß»«½∞º«óá¡¿∩ Æπαí«
  9211.                                     ; Åá߬á½Ñ¼
  9212.                  .
  9213.                  .
  9214.                  .
  9215.  
  9216.      è«úñá óáΦá »α«úαá¼¼á íπñÑΓ ºáúαπªáΓ∞ß∩, DOS »«¼ÑßΓ¿Γ ¬«ααѬ-
  9217. Γ¡«Ñ º¡áτÑ¡¿Ñ SEG DATA »α∩¼« ó »«½Ñ »α«¼ÑªπΓ«τ¡«ú« «»Ñαá¡ñá ¿¡ßΓ-
  9218. απ¬µ¿¿ MOV. ¥Γ« ¡á¿í«½ÑÑ íδßΓαδ⌐  »πΓ∞  »ÑαѺáúαπº¬¿  ßÑú¼Ñ¡Γ¡«ú«
  9219. αÑú¿ßΓαá.
  9220.  
  9221.      äá¡¡δ⌐ ¼ÑΓ«ñ ¡πª¡« ΓᬪѠ¿ß»«½∞º«óáΓ∞, τΓ«íδ »α«úαá¼¼δ  «íß-
  9222. ½πª¿óá¡¿∩  »αÑαδóá¡¿⌐  ß«σαá¡∩½¿ ¿¡Σ«α¼áµ¿ε ó ú½«íá½∞¡«¼ ßÑú¼Ñ¡ΓÑ
  9223. ñá¡¡δσ Æπαí« Åá߬á½∩. ÉÑú¿ßΓα DS ¡Ñ «í∩ºáΓѽ∞¡« ó« óαѼ∩ »αÑαδóá-
  9224. ¡¿∩ ß«ñÑαª¿Γ º¡áτÑ¡¿Ñ DS Æπαí« Åá߬á½∩,  ¡« ñ½∩ »«½πτÑ¡¿∩ ñ«ßΓπ»á
  9225. ¬ »ÑαѼѡ¡δ¼ ¿ Γ¿»¿º«óá¡¡δ¼ ¬«¡ßΓá¡Γá¼ Æπαí«  Åá߬á½∩  ¼«ª¡«  ¿ß-
  9226. »«½∞º«óáΓ∞ π¬áºá¡¡πε óδΦÑ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞.
  9227.  
  9228.                     ôßΓαá¡Ñ¡¿Ñ ¡Ñ¿ß»«½∞ºπѼ«ú« ¬«ñá
  9229. -----------------------------------------------------------------
  9230.  
  9231.      é Æπαí« Åá߬á½Ñ ¿¼ÑεΓß∩ ßαÑñßΓóá, «íÑß»Ñτ¿óáεΘ¿Ñ  πßΓαá¡Ñ¡¿Ñ
  9232. ¡Ñ¿ß»«½∞ºπѼ«ú« ¬«ñá. ¥Γ« «º¡áτáÑΓ, τΓ« ó »«½πτÑ¡¡δ⌐ ó αѺπ½∞ΓáΓÑ
  9233. Σá⌐½ .EXE ¡Ñ íπñÑΓ ó¬½ετáΓ∞ß∩ ¬«ñ »α«µÑñπα ¿ Σπ¡¬µ¿⌐, ¬«Γ«αδ⌐ ¡¿-
  9234. ¬«úñá ¡Ñ óδ»«½¡∩ÑΓß∩. ì« »«ß¬«½∞¬π ¡ÑΓ »«½¡«⌐ ¿¡Σ«α¼áµ¿¿ « ß«ñÑα-
  9235. ª¿¼«¼ ¼«ñπ½Ñ⌐ Æπαí« ÇßßѼí½Ñαá, Æπαí« Åá߬á½∞ ¼«ªÑΓ óδ»«½¡∩Γ∞ ñ½∩
  9236. ¡¿σ Γ«½∞¬« «úαá¡¿τÑ¡¡πε «»Γ¿¼¿ºáµ¿ε.
  9237.  
  9238.      Æπαí« Åá߬á½∞ íπñÑΓ πßΓαá¡∩Γ∞ ¬«ñ ¼«ñπ½∩ .OBJ ó Γ«¼ ¿ Γ«½∞¬«
  9239. ó  Γ«¼ ß½πτáÑ, Ñß½¿ ¬ ½εí«⌐ ñ«ßΓπ»¡«⌐ »α«µÑñπαÑ ¿½¿ Σπ¡¬µ¿¿ φΓ«ú«
  9240. ¼«ñπ½∩ ¡ÑΓ «íαáΘÑ¡¿∩. àß½¿ ªÑ ¡á ¬á¬πε ½¿í« »α«µÑñπαπ ¿½¿ Σπ¡¬µ¿ε
  9241.  
  9242. TASM2 #2-5/䫬              = 238 =
  9243.  
  9244. ¿¼ÑÑΓß∩ ßß佬á, Γ« óÑß∞ φë༫ñπ½∞ ¿ß»«½∞ºπÑΓß∩.
  9245.  
  9246.      ùΓ«íδ ñ«í¿Γ∞ß∩ í«½∞ΦÑ⌐ φΣΣÑ¬Γ¿ó¡«ßΓ¿ ¿ß»«½∞º«óá¡¿∩  ßαÑñßΓóá
  9247. Æπαí« Åá߬á½∩ »« πßΓαá¡Ñ¡¿ε ¡Ñ¿ß»«½∞ºπѼ«ú« ¬«ñá, ¡Ñ»½«σ« í佫 íδ
  9248. αáºí¿Γ∞ »α«úαá¼¼π ¡á ÇßßѼí½ÑαÑ ¡á ¡Ñí«½∞Φ¿Ñ ¼«ñπ½¿, ¬«Γ«αδÑ  ß«-
  9249. ñÑαªá½¿  íδ  Γ«½∞¬« ¡Ñ߬«½∞¬« »α«µÑñπα ¿½¿ Σπ¡¬µ¿⌐. ¥Γ« »«ºó«½¿½«
  9250. íδ Æπαí« Åá߬á½ε, Ñß½¿ «¡ ¼«ªÑΓ φΓ« ßñѽáΓ∞, π¼Ñ¡∞Φ¿Γ∞ «íΩѼ  óá-
  9251. ΦÑ⌐ ¬«¡Ñτ¡«⌐ »α«úαá¼¼δ.
  9252.  
  9253.  
  9254.  
  9255.  
  9256. TASM2 #2-5/䫬              = 239 =
  9257.  
  9258.  
  9259. æ«ú½áΦÑ¡¿∩ Æπαí« Åá߬á½∩ »« »ÑαÑñáτÑ »áαá¼ÑΓα«ó
  9260. -----------------------------------------------------------------
  9261.  
  9262.      Æπαí« Åá߬á½∞ ¿ß»«½∞ºπÑΓ ñ½∩ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó  ßΓѬ  µÑ¡-
  9263. Γαá½∞¡«ú«  »α«µÑßß«αá (¿½¿, ó ß½πτáÑ »ÑαÑñáτ¿ º¡áτÑ¡¿⌐ »áαá¼ÑΓα«ó
  9264. ß «ñ¿¡áα¡«⌐, ñó«⌐¡«⌐, αáßΦ¿αÑ¡¡«⌐ Γ«τ¡«ßΓ∞ε  ¿½¿  ß½«ª¡«ú«  Γ¿»á,
  9265. ßΓѬ  áα¿Σ¼ÑΓ¿τÑ߬«ú« ß«»α«µÑßß«αá). Åáαá¼ÑΓαδ óßÑúñá óδτ¿ß½∩εΓß∩
  9266. ¿ ºá¡«ß∩Γß∩ ó ßΓѬ ó Γ«¼ »«α∩ñ¬Ñ, ó  ¬«Γ«α«¼  «¡¿  π¬áºδóáεΓß∩  ó
  9267. «»¿ßá¡¿¿  »«ñ»α«úαá¼¼δ,  ß½Ñóá ¡á»αáó«. é ñá¡¡«¼ αáºñѽѠ¼δ »«∩ß-
  9268. ¡¿¼, ¬á¬ φΓ¿ »áαá¼ÑΓαδ »αÑñßΓáó½∩εΓß∩.
  9269.  
  9270.  
  9271. Åáαá¼ÑΓαδ-º¡áτÑ¡¿∩
  9272. -----------------------------------------------------------------
  9273.  
  9274.      Åáαá¼ÑΓα-º¡áτÑ¡¿Ñ - φΓ« »áαá¼ÑΓα, º¡áτÑ¡¿Ñ ¬«Γ«α«ú« ¡Ñ ¼«ªÑΓ
  9275. ¿º¼Ñ¡∩Γ∞ß∩  »«ñ»α«úαá¼¼«⌐,  ó ¬«Γ«απε «¡ »ÑαÑñáÑΓß∩. é «Γ½¿τ¿Ñ «Γ
  9276. ¼¡«ú¿σ ¬«¼»¿½∩Γ«α«ó, Æπαí« Åá߬á½∞ ¡Ñ óδ»«½¡∩ÑΓ ß½Ñ»«ú« ¬«»¿α«óá-
  9277. ¡¿∩  ó ßΓѬ ¬áªñ«ú« »áαá¼ÑΓαá-º¡áτÑ¡¿∩: ¬á¬ ¼δ ñá½ÑÑ »«∩ß¡¿¼, ¿ß-
  9278. »«½∞ºπѼδ⌐ ¼ÑΓ«ñ ºáó¿ß¿Γ «Γ Γ¿»á.
  9279.  
  9280.                             æ¬á½∩α¡δÑ Γ¿»δ
  9281. -----------------------------------------------------------------
  9282.  
  9283.      Åáαá¼ÑΓαδ-º¡áτÑ¡¿∩  óßÑσ  ß¬á½∩α¡δσ  Γ¿»«ó  (boolean,  char,
  9284. shortint,  byte, integer, word, longint, «ΓαѺ¬¿ Γ¿»«ó ¿ »ÑαÑτ¿ß-
  9285. ½¿¼δÑ Γ¿»δ) »ÑαÑñáεΓß∩ ¬á¬ º¡áτÑ¡¿∩ τÑαѺ ßΓѬ  »α«µÑßß«αá.  àß½¿
  9286. αẼÑα «íΩѬΓá ß«ßΓáó½∩ÑΓ 1 íá⌐Γ, «¡ ºá¡«ß¿Γß∩ ó ßΓѬ, ¬á¬ »«½¡«Ñ
  9287. 16-í¿Γ«ó«Ñ ß½«ó«, «ñ¡á¬« í«½ÑÑ º¡áτáΘ¿⌐ (ßΓáαΦ¿⌐) íá⌐Γ  ß½«óá  ¡Ñ
  9288. ß«ñÑαª¿Γ  »«½Ñº¡«⌐  ¿¡Σ«α¼áµ¿¿.  (ìѽ∞º∩  αáßßτ¿ΓδóáΓ∞ ¡á Γ«, τΓ«
  9289. º¡áτÑ¡¿Ñ φΓ«ú« íá⌐Γá αáó¡« 0, ¬á¬ ó óÑαß¿¿  3.0  Æπαí«  Åá߬á½∩.)
  9290. àß½¿  αẼÑα  «íΩѬΓá αáóÑ¡ ñóπ¼ íá⌐Γá¼, Γ« «¡ »α«ßΓ« ºá¡«ß¿Γß∩ ó
  9291. ßΓѬ "¬á¬ ÑßΓ∞". àß½¿ «íΩÑ¬Γ ¿¼ÑÑΓ αẼÑα 4  íá⌐Γá  (ñ½¿¡¡«Ñ  µÑ-
  9292. ½«Ñ), «¡ ºá¡«ß¿Γß∩ ó ßΓѬ, ¬á¬ ñóá 16-í¿Γ«óδσ ß½«óá. é ß««ΓóÑΓßΓ-
  9293. ó¿¿ ß« ßΓá¡ñáαΓ«¼ »α«µÑßß«α«ó ßÑα¿¿ 8088 ¡á¿í«½ÑÑ º¡áτáΘÑÑ (ßΓáα-
  9294. ΦÑÑ) ß½«ó« ºá¡«ß¿Γß∩ ó ßΓѬ »Ñαóδ¼ ¿ ºá¡¿¼áÑΓ ó ßΓѬѠßΓáαΦ¿Ñ áñ-
  9295. αÑßá.
  9296.  
  9297.      çá¼ÑΓ¿¼, τΓ« ß½«ª¡δ⌐ Γ¿» (comp),  ó «Γ½¿τ¿Ñ «Γ µÑ½«ú«  Γ¿»á,
  9298. ¡Ñ  ßτ¿ΓáÑΓß∩  ß¬á½∩α¡δ¼  Γ¿»«¼ (ß Γ«τ¬¿ ºαÑ¡¿∩ »ÑαÑñáτ¿ »áαá¼ÑΓ-
  9299. α«ó).  Æá¬¿¼ «íαẫ¼, ó Æπαí« Åá߬á½Ñ óÑαß¿¿ 4.0 »áαá¼ÑΓαδ-º¡áτÑ-
  9300. ¡¿∩  φΓ«ú« Γ¿»á »ÑαÑñáεΓß∩ ó ßΓѬѠ»α«µÑßß«αá 8087,  á ¡Ñ ó ßΓѬÑ
  9301. µÑ¡Γαá½∞¡«ú« »α«µÑßß«αá. é Æπαí« Åá߬á½Ñ óÑαß¿¿ 5.0 º¡áτÑ¡¿∩ Γ¿»á
  9302. comp »ÑαÑñáεΓß∩ ó ßΓѬѠµÑ¡Γαá½∞¡«ú« »α«µÑßß«αá.
  9303.  
  9304.  
  9305. TASM2 #2-5/䫬              = 240 =
  9306.  
  9307.  
  9308. éÑΘÑßΓóÑ¡¡δÑ º¡áτÑ¡¿∩
  9309. -----------------------------------------------------------------
  9310.  
  9311.      Åáαá¼ÑΓαδ-º¡áτÑ¡¿∩ óÑΘÑßΓóÑ¡¡«ú« Γ¿»á (real) »ÑαÑñáεΓß∩, ¬á¬
  9312. 6 íá⌐Γ ó ßΓѬѠ(ó Æπαí« Åá߬á½Ñ φΓ« Γ¿» »αÑñßΓáó½∩ÑΓ ß«í«⌐ 6-íá⌐-
  9313. Γ«óδ⌐ »α«úαá¼¼¡«-φ¼π½¿απѼδ⌐ Γ¿» ß »½áóáεΘÑ⌐ Γ«τ¬«⌐).  ¥Γ« Ññ¿¡ß-
  9314. ΓóÑ¡¡δ⌐ Γ¿»,  »αÑóδΦáεΘ¿⌐ 4 íá⌐Γá, ¬«Γ«αδ⌐ ¼«ªÑΓ »ÑαÑñáóáΓ∞ß∩ τÑ-
  9315. αѺ ßΓѬ.
  9316.  
  9317.  
  9318.  
  9319.  
  9320. TASM2 #2-5/䫬              = 241 =
  9321.  
  9322.  
  9323. Æ¿»δ ß«»α«µÑßß«αá 8087
  9324. -----------------------------------------------------------------
  9325.  
  9326.      é Æπαí« Åá߬á½Ñ óÑαß¿¿ 4.0 »áαá¼ÑΓαδ-º¡áτÑ¡¿∩  Γ¿»«ó  ß«»α«-
  9327. µÑßß«αá  8087  (ß  «ñ¿¡«τ¡«⌐,  ñó«⌐¡«⌐, αáßΦ¿αÑ¡¡«⌐ Γ«τ¡«ßΓ∞ε ¿½¿
  9328. ß½«ª¡δ⌐ Γ¿») »ÑαÑñáεΓß∩ τÑαѺ ßΓѬ ß«»α«µÑßß«αá, á ¡Ñ τÑαѺ  ßΓѬ
  9329. µÑ¡Γαá½∞¡«ú«  »α«µÑßß«αá.  Æá¬  ¬á¬  ßΓѬ ß«»α«µÑßß«αá 8087 ¿¼ÑÑΓ
  9330. ú½πí¿¡π Γ«½∞¬« 6 πα«ó¡Ñ⌐, »«ñ»α«úαá¼¼δ Æπαí« Åá߬á½∩ ¡Ñ ¼«úπΓ »Ñ-
  9331. αÑñáóáΓ∞  í«½ÑÑ  6  »áαá¼ÑΓα«ó  ß Γ¿»á¼¿ ß«»α«µÑßß«αá 8087. ÅÑαÑñ
  9332. ó«ºóαáΓ«¼ ¿º »«ñ»α«úαá¼¼δ «¡á ñ«½ª¡á ¿ºó½Ñτ∞ ¿º  ßΓѬᠠáα¿Σ¼ÑΓ¿-
  9333. τÑ߬«ú« ß«»α«µÑßß«αá óßÑ »áαá¼ÑΓαδ Γᬫú« Γ¿»á.
  9334.  
  9335.      Æπαí« Åá߬á½∞ 5.0 ¿ß»«½∞ºπÑΓ »α¿ »ÑαÑñáτÑ »áαá¼ÑΓα«ó (º¡áτÑ-
  9336. ¡¿⌐  »α«µÑßß«αá 8087) ΓÑ ªÑ ß«ú½áΦÑ¡¿∩, τΓ« ¿ Æπαí« æ¿: «¡¿ »ÑαÑ-
  9337. ñáεΓß∩ ó ßΓѬѠµÑ¡Γαá½∞¡«ú« »α«µÑßß«αá ¡áα∩ñπ ß ñαπú¿¼¿  »áαá¼ÑΓ-
  9338. αἿ. ¥Γ« ¼«úπΓ íδΓ∞ »áαá¼ÑΓαδ ß «ñ¿¡áα¡«⌐,  ñó«⌐¡«⌐, αáßΦ¿αÑ¡¡«⌐
  9339. Γ«τ¡«ßΓ∞ε ¿½¿ ß½«ª¡«ú« Γ¿»á (ßomp).
  9340.  
  9341.  
  9342. ô¬áºáΓѽ¿
  9343. -----------------------------------------------------------------
  9344.  
  9345.      ç¡áτÑ¡¿∩ »áαá¼ÑΓα«ó ñ½∩ óßÑσ Γ¿»«ó π¬áºáΓѽÑ⌐ ºá¡«ß∩Γß∩  ¡Ñ-
  9346. »«ßαÑñßΓóÑ¡¡« ó ßΓѬ, ¬á¬ π¬áºáΓѽ¿ ñá½∞¡Ñú« Γ¿»á: ß¡áτá½á ß½«ó«,
  9347. ß«ñÑαªáΘÑÑ ßÑú¼Ñ¡Γ, ºáΓѼ ñαπú«Ñ ß½«ó«, ß«ñÑαªáΘÑÑ ß¼ÑΘÑ¡¿Ñ. æÑú-
  9348. ¼Ñ¡Γ ºá¡¿¼áÑΓ ßΓáαΦ¿⌐ áñαÑß,  ó ß««ΓóÑΓßΓó¿¿ ß ß«ú½áΦÑ¡¿∩¼¿ Σ¿α¼δ
  9349. Intel.  ä½∩ ¿ºó½ÑτÑ¡¿∩ »áαá¼ÑΓαá-π¬áºáΓѽ∩ ó »α«úαἼѠÆπαí«  Çß-
  9350. ßѼí½Ñαá ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ¿¡ßΓαπ¬µ¿¿ LDS ¿½¿ LES.
  9351.  
  9352.  
  9353. æΓ᫬¿
  9354. -----------------------------------------------------------------
  9355.  
  9356.      æΓ᫬«óδÑ »áαá¼ÑΓαδ,  ¡Ñºáó¿ß¿¼« «Γ αẼÑαá,  «íδτ¡« ¡¿¬«úñá
  9357. ¡Ñ  ºá¡«ß∩Γß∩  ó ßΓѬ.  é¼ÑßΓ« φΓ«ú« Æπαí« Åá߬á½∞ ºá¡«ß¿Γ ó ßΓѬ
  9358. π¬áºáΓѽ∞ (ñá½∞¡Ñú« Γ¿»á) ¡á ßΓ᫬π.  éδºδóáѼá∩ »«ñ»α«úαἼᠠ¡Ñ
  9359. ñ«½ª¡á ¿º¼Ñ¡∩Γ∞ ßΓ᫬π,  ¡á ¬«Γ«απε ßßδ½áÑΓß∩ π¬áºáΓѽ∞. àß½¿ φΓ«
  9360. ¡Ñ«íσ«ñ¿¼«,  »«ñ»α«úαἼᠼ«ªÑΓ ß«ºñáΓ∞ ¿ αáí«ΓáΓ∞ ß ¬«»¿Ñ⌐ ßΓα«-
  9361. ¬¿.
  9362.  
  9363.      àñ¿¡ßΓóÑ¡¡«Ñ ¿ß¬½ετÑ¡¿Ñ ¿º φΓ«ú« »αáó¿½á - φΓ« ß½πτá⌐, ¬«úñá
  9364. »«ñ»α«úαá¼¼á ó »ÑαѬαδóáѼ«¼ («óÑα½Ñ⌐¡«¼) ¼«ñπ½Ñ A  »ÑαÑñáÑΓ  ¬á¬
  9365. »áαá¼ÑΓα-º¡áτÑ¡¿Ñ  ßΓ᫬«óπε ¬«¡ßΓá¡Γπ »«ñ»α«úαἼѠó »ÑαѬαδóáÑ-
  9366. ¼«¼ ¼«ñπ½Ñ B.  é φΓ«¼ ¬«¡ΓѬßΓÑ »ÑαѬαδóáѼδ⌐ ¼«ñπ½∞ «º¡áτáÑΓ ½ε-
  9367. í«⌐ ¼«ñπ½∞, ß¬«¼»¿½¿α«óá¡¡δ⌐ ß ñ¿αÑ¬Γ¿ó«⌐ {$O+} (ñ«»π߬áεΓß∩ «óÑ-
  9368. α½Ñ¿). é φΓ«¼ ß½πτáÑ »ÑαÑñ ΓѼ,  ¬á¬ íπñÑΓ ßñѽᡠóδº«ó  ¿  áñαÑß
  9369.  
  9370. TASM2 #2-5/䫬              = 242 =
  9371.  
  9372. ßΓѬᠠíπñÑΓ »ÑαÑñá¡ »α«úαἼѠ󠼫ñπ½Ñ B,  ó ßΓѬѠñ½∩ ßΓ᫬«ó«⌐
  9373. ¬«¡ßΓá¡Γδ αѺÑαó¿απÑΓß∩ óαѼѡ¡á∩ »á¼∩Γ∞. ü«½ÑÑ  »«ñα«í¡á∩ ¿¡Σ«α-
  9374. ¼áµ¿∩ ß«ñÑনΓß∩ ó â½áóÑ 6 ("ÄóÑα½Ñ¿") ¿ ó "Éπ¬«ó«ñßΓóÑ »«½∞º«óá-
  9375. Γѽ∩ »« Æπαí« Åá߬á½ε" óÑαß¿¿ 5.0 ¿½¿ 5.5.
  9376.  
  9377.  
  9378. çỿ߿ ¿ ¼áßß¿óδ
  9379. -----------------------------------------------------------------
  9380.  
  9381.      çỿ߿ ¿ ¼áßß¿óδ,  ºá¡¿¼áεΘ¿Ñ α«ó¡« 1, 2 ¿½¿ 4 íá⌐Γá, ñπí½¿-
  9382. απεΓß∩ ¡Ñ»«ßαÑñßΓóÑ¡¡« ó ßΓѬ ¿ »ÑαÑñáεΓß∩,  ¬á¬ »áαá¼ÑΓαδ-º¡áτÑ-
  9383. ¡¿∩. àß½¿ ¼áß߿󠿽¿ ºá»¿ß∞ ¿¼ÑÑΓ ¬á¬«⌐-½¿í« ñαπú«⌐ αẼÑα (ó¬½ε-
  9384. τá∩ 3 íá⌐Γá),  Γ« ó ßΓѬ ºá¡«ß¿Γß∩ π¬áºáΓѽ∞ ¡á φëà ¼áß߿󠠿½¿
  9385. ºá»¿ß∞.  é  φΓ«¼  ß½πτáÑ,  Ñß½¿  »«ñ»α«úαἼᠠ¼«ñ¿Σ¿µ¿απÑΓ Γá¬πε
  9386. ßΓαπ¬Γπαπ, Γ« «¡á ñ«½ª¡á ß«ºñáΓ∞ ÑÑ ½«¬á½∞¡πε ¬«»¿ε.
  9387.  
  9388.  
  9389. î¡«ªÑßΓóá
  9390. -----------------------------------------------------------------
  9391.  
  9392.      î¡«ªÑßΓóá, ¬á¬ ¿ ßΓ᫬¿,  «íδτ¡« ¡¿¬«úñá ¡Ñ ºá¡«ß∩Γß∩ ¡Ñ»«ß-
  9393. αÑñßΓóÑ¡¡« ó ßΓѬ.  é¼ÑßΓ« φΓ«ú« ó ßΓѬ  ºá¡«ß¿Γß∩  π¬áºáΓѽ∞  ¡á
  9394. ¼¡«ªÑßΓó«.  ÅÑαóδ⌐  í¿Γ ¼½áñΦÑú« íá⌐Γá ¼¡«ªÑßΓóá óßÑúñá ß««ΓóÑΓß-
  9395. ΓóπÑΓ φ½Ñ¼Ñ¡Γπ íẫó«ú« Γ¿»á (¿½¿ »«α«ªñáεΘÑú« Γ¿»á) ß »«α∩ñ¬«óδ¼
  9396. º¡áτÑ¡¿Ñ¼ 0.
  9397.  
  9398.      àñ¿¡ßΓóÑ¡¡«Ñ ¿ß¬½ετÑ¡¿Ñ ¿º φΓ«ú« »αáó¿½á - φΓ« ß½πτá⌐, ¬«úñá
  9399. »«ñ»α«úαá¼¼á ó »ÑαѬαδóáѼ«¼ («óÑα½Ñ⌐¡«¼) ¼«ñπ½Ñ A  »ÑαÑñáÑΓ  ¬á¬
  9400. »áαá¼ÑΓα-º¡áτÑ¡¿Ñ ¬«¡ßΓá¡Γπ-¼¡«ªÑßΓó« »«ñ»α«úαἼѠ ó  «óÑα½Ñ⌐¡«¼
  9401. ¼«ñπ½Ñ B. é φΓ«¼ ¬«¡ΓѬßΓÑ »ÑαѬαδóáѼδ⌐  ¼«ñπ½∞  «º¡áτáÑΓ  ½εí«⌐
  9402. ¼«ñπ½∞, ß¬«¼»¿½¿α«óá¡¡δ⌐ ß ñ¿αÑ¬Γ¿ó«⌐ {$O+}(ñ«»π߬áεΓß∩ «óÑα½Ñ¿).
  9403. é φΓ«¼ ß½πτáÑ »ÑαÑñ ΓѼ, ¬á¬ íπñÑΓ ßñѽᡠóδº«ó ¿ áñαÑß ßΓѬá íπ-
  9404. ñÑΓ »ÑαÑñá¡ »α«úαἼѠ󠼫ñπ½Ñ B, ó ßΓѬѠñ½∩ ¼¡«ªÑßΓóá-¬«¡ßΓá¡Γδ
  9405. αѺÑαó¿απÑΓß∩  óαѼѡ¡á∩ »á¼∩Γ∞.  ü«½ÑÑ  »«ñα«í¡á∩ ¿¡Σ«α¼áµ¿∩ ß«-
  9406. ñÑনΓß∩ ó â½áóÑ 6 ("ÄóÑα½Ñ¿") ¿ ó "Éπ¬«ó«ñßΓóÑ  »«½∞º«óáΓѽ∩  »«
  9407. Æπαí« Åá߬á½ε 5.0".
  9408.  
  9409.  
  9410. Åáαá¼ÑΓαδ-»ÑαѼѡ¡δÑ
  9411. -----------------------------------------------------------------
  9412.  
  9413.      éßÑ »áαá¼ÑΓαδ-»ÑαѼѡ¡δÑ  (var) »ÑαÑñáεΓß∩ Γ«τ¡« ΓᬪÑ:  ¬á¬
  9414. π¬áºáΓѽ∞ ñá½∞¡Ñú« Γ¿»á ¡á ¿σ ñÑ⌐ßΓó¿Γѽ∞¡δÑ áñαÑßá ó »á¼∩Γ¿.
  9415.  
  9416.                            ÄíÑß»ÑτÑ¡¿Ñ ßΓѬá
  9417.  
  9418. TASM2 #2-5/䫬              = 243 =
  9419.  
  9420. -----------------------------------------------------------------
  9421.  
  9422.      Æπαí« Åá߬á½∞  «ª¿ñáÑΓ,  τΓ«  »ÑαÑñ  ó«ºóαáΓ«¼ π»αáó½Ñ¡¿∩ ¿º
  9423. »«ñ»α«úαá¼¼δ óßÑ »áαá¼ÑΓαδ ó ßΓѬѠµÑ¡Γαá½∞¡«ú«  »α«µÑßß«αá íπñπΓ
  9424. πñá½Ñ¡δ.
  9425.  
  9426.      àßΓ∞ ñóá ß»«ß«íá ¡áßΓα«⌐¬¿ ßΓѬá. éδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ¿¡-
  9427. ßΓαπ¬µ¿ε RET N (úñÑ N - φΓ« τ¿ß½« íá⌐Γ »ÑαÑñáóáѼδσ,  Γ« ÑßΓ∞ ºá-
  9428. ¡ÑßÑ¡¡δσ ó ßΓѬ, »áαá¼ÑΓα«ó), ½¿í« ß«σαá¡¿Γ∞ áñαÑß ó«ºóαáΓá ó αÑ-
  9429. ú¿ßΓαáσ  (¿½¿  ó »á¼∩Γ¿) ¿ ¿ºó½Ñτ∞ »áαá¼ÑΓαδ ¿º ßΓѬᠻ««τÑαÑñ¡«.
  9430. Æá¬πε ΓÑσ¡¿¬π ¿ºó½ÑτÑ¡¿∩ »«½Ñº¡« ¿ß»«½∞º«óáΓ∞ ñ½∩  «»Γ¿¼¿ºáµ¿¿ »«
  9431. ߬«α«ßΓ¿  »α¿  αáí«ΓÑ ß »α«µÑßß«α«¼ 8086 ¿½¿ 8088 (ßá¼δÑ "¼Ññ½Ñ¡-
  9432. ¡δÑ" »α«µÑßß«αδ ßÑα¿¿), ¬«úñá ¡á áñαÑßᵿε Γ¿»á "íáºá »½εß ß¼ÑΘÑ-
  9433. ¡¿Ñ"  ºáΓαáτ¿óáÑΓß∩ ¼¿¡¿¼π¼ 8 µ¿¬½«ó ºá «íαáΘÑ¡¿Ñ.  ¥Γ« »«ºó«½∩ÑΓ
  9434. ΓᬪѠßφ¬«¡«¼¿Γ∞ ¼ÑßΓ«,  Γᬠ¬á¬ ¿¡ßΓαπ¬µ¿∩ POP  ºá¡¿¼áÑΓ  Γ«½∞¬«
  9435. «ñ¿¡ íá⌐Γ.
  9436.  
  9437.            Åα¿¼Ñτá¡¿Ñ: àß½¿ óδ ¿ß»«½∞ºπÑΓÑ ñ¿αÑ¬Γ¿óδ .MODEL, PROC
  9438.       ¿ ARG, Γ« ÇßßѼí½Ñα áóΓ«¼áΓ¿τÑ߬¿ ñ«íáó½∩ÑΓ ó« óßÑ ¿¡ßΓαπ¬-
  9439.       µ¿¿ RET τ¿ß½« íá⌐Γ ¿ºó½Ñ¬áѼδσ »áαá¼ÑΓα«ó.
  9440.  
  9441.  
  9442.  
  9443.  
  9444. TASM2 #2-5/䫬              = 244 =
  9445.  
  9446.                           ä«ßΓπ» ¬ »áαá¼ÑΓαá¼
  9447. -----------------------------------------------------------------
  9448.  
  9449.      è«úñá »«½πτáÑΓ π»αáó½Ñ¡¿Ñ óáΦá »«ñ»α«úαá¼¼á ¡á Æπαí« ÇßßѼí-
  9450. ½ÑαÑ, óÑαΦ¿¡á ßΓѬá íπñÑΓ ß«ñÑαªáΓ∞ áñαÑß ó«ºóαáΓá (ñóá ¿½¿ τÑΓδ-
  9451. αÑ ß½«óá, ó ºáó¿ß¿¼«ßΓ¿ «Γ Γ«ú«, ∩ó½∩ÑΓß∩ ½¿ »«ñ»α«úαá¼¼á í½¿ª¡Ñ⌐
  9452. ¿½¿ ñá½∞¡Ñ⌐),  á ñá½ÑÑ íπñπΓ  ¡áσ«ñ¿Γß∩  »ÑαÑñáóáѼδÑ  »áαá¼ÑΓαδ.
  9453. (Åα¿¼Ñτá¡¿Ñ: Åα¿ óδτ¿ß½Ñ¡¿¿ áñαÑß«ó »áαá¼ÑΓα«ó ¡πª¡« »α¿¡¿¼áΓ∞ ó«
  9454. 󡿼᡿ѠαÑú¿ßΓαδ,  ΓᬿѠ¬á¬ BP,  ß«ñÑন¼«Ñ ¬«Γ«αδσ ΓᬪѠ¼«ªÑΓ
  9455. íδΓ∞ ºá¡ÑßÑ¡« ó ßΓѬ.)
  9456.  
  9457.      æπΘÑßΓóπÑΓ Γα¿ «ß¡«ó¡δσ ¼ÑΓ«ñá ñ«ßΓπ»á ¬ »áαá¼ÑΓαá¼, »ÑαÑñá-
  9458. óáѼδσ Æπαí« Åá߬á½Ñ¼ óáΦÑ⌐ »«ñ»α«úαἼѠ¡á Æπαí«  ÇßßѼí½ÑαÑ. éδ
  9459. ¼«ªÑΓÑ:
  9460.  
  9461.      - ¿ß»«½∞º«óáΓ∞ ñ½∩ áñαÑßᵿ¿ ¬ ßΓѬπ αÑú¿ßΓα BP;
  9462.      - ñ½∩ »«½πτÑ¡¿∩ »áαá¼ÑΓα«ó ¿ß»«½∞º«óáΓ∞ ñαπú«⌐  íẫóδ⌐  ¿½¿
  9463.        ¿¡ñѬߡδ⌐ αÑú¿ßΓα;
  9464.      - ¿ºó½Ñτ∞ ¿º ßΓѬá áñαÑß ó«ºóαáΓá, á ºáΓѼ »áαá¼ÑΓαδ.
  9465.  
  9466.      ÅÑαóδ⌐ ¿ óΓ«α«⌐ ¼ÑΓ«ñδ í«½ÑÑ ß½«ª¡δ, ¿ ¼δ αáß߬áªÑ¼ « ¡¿σ  ó
  9467. ß½ÑñπεΘ¿σ  ñóπσ αáºñѽáσ. ÆαÑΓ¿⌐ ¼ÑΓ«ñ »αÑñπß¼áΓα¿óáÑΓ ¿ºó½ÑτÑ¡¿Ñ
  9468. ¿º ßΓѬᠿ ß«σαá¡Ñ¡¿Ñ áñαÑßá ó«ºóαáΓá, á ºáΓѼ  ¿ºó½ÑτÑ¡¿∩  »áαá-
  9469. ¼ÑΓα«ó  ¿  ºá»¿ß¿ ¿σ ó αÑú¿ßΓαδ. ïπτΦÑ óßÑú« φëà¼ÑΓ«ñ αáí«ΓáÑΓ,
  9470. ¬«úñá óáΦá »«ñ»α«úαἼᠡѠΓαÑíπÑΓ »α«ßΓαá¡ßΓóá ñ½∩ ½«¬á½∞¡δσ »Ñ-
  9471. αѼѡ¡δσ.
  9472.  
  9473.  
  9474.  
  9475.  
  9476. TASM2 #2-5/䫬              = 245 =
  9477.  
  9478.             êß»«½∞º«óá¡¿Ñ ñ½∩ áñαÑßᵿ¿ ¬ ßΓѬπ αÑú¿ßΓαá BP
  9479. -----------------------------------------------------------------
  9480.  
  9481.      ÅÑαóδ⌐ ¿ ¡á¿í«½ÑÑ τáßΓ« ¿ß»«½∞ºπѼδ⌐ ¼ÑΓ«ñ ñ«ßΓπ»á  ¬  »áαá-
  9482. ¼ÑΓαá¼, »ÑαÑñáóáÑ¼δ¼ ¿º Æπαí« Åá߬á½∩ ó Æπαí« ÇßßѼí½Ñα, ºá¬½ετá-
  9483. ÑΓß∩ ó Γ«¼, τΓ«íδ ¿ß»«½∞º«óáΓ∞ ñ½∩ áñαÑßᵿ¿ ¬ ßΓѬπ αÑú¿ßΓα  BP.
  9484. ìá»α¿¼Ñα:
  9485.  
  9486. CODE       SEGMENT
  9487.            ASSUME  CS:CODE
  9488. MyProc     PROC    FAR         ; procedure MyProc(i,j : integer);
  9489.            PUBLIC  MyProc
  9490. j          EQU WORD PTR [bp+6] ; j ¡áσ«ñ¿Γß∩ ¡áñ ß«σαá¡Ñ¡¡δ¼ BP
  9491.                                ; ¿ áñαÑß«¼ ó«ºóαáΓá
  9492. i          EQU WORD PTR [bp+8] ; i αáß»«½áúáÑΓß∩ ¡áñ j
  9493.            push  bp            ; ¡πª¡« ß«σαá¡¿Γ∞ BP óδºδóáεΘÑ⌐
  9494.                                ; »α«úαá¼¼δ
  9495.            mov   bp,sp         ; BP ΓÑ»Ñα∞ π¬áºδóáÑΓ ¡á óÑαΦ¿¡π
  9496.                                ; ßΓѬá
  9497.            mov   ax,i          ; áñαÑßπѼß∩ ¬ i τÑαѺ BP
  9498.            .
  9499.            .
  9500.            .
  9501.  
  9502.      Åα¿ óδτ¿ß½Ñ¡¿¿ ß¼ÑΦÑ¡¿⌐ ó ßΓѬѠ»áαá¼ÑΓα«ó, ¬ ¬«Γ«αδ¼ ¼δ «í-
  9503. αáΘáѼß∩  Γᬿ¼  «íαẫ¼, ¡πª¡« »«¼¡¿Γ∞, τΓ« 2 íá⌐Γá ¿ß»«½∞ºπεΓß∩
  9504. ñ½∩ ß«σαá¡Ñ¡¡«ú« αÑú¿ßΓαá BP.
  9505.  
  9506.      ÄíαáΓ¿ΓѠ󡿼᡿Ѡ¡á ¿ß»«½∞º«óá¡¿Ñ ó ñá¡¡«¼ »α¿¼ÑαÑ  »α¿αáó-
  9507. ¡¿óá¡¿⌐.  Ä¡¿  »«ºó«½∩εΓ  ßñѽáΓ∞ »α«úαá¼¼π í«½ÑÑ »«¡∩Γ¡«⌐. ô ¡¿σ
  9508. ÑßΓ∞ Γ«½∞¬« «ñ¿¡ ¡Ññ«ßΓáΓ«¬: »«ß¬«½∞¬π ñ½∩ óδ»«½¡Ñ¡¿∩ Γᬫú« α«ñá
  9509. »α¿αáó¡¿óá¡¿⌐ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ñ¿αÑ¬Γ¿óπ EQU (á ¡Ñ =), ó
  9510. ñá¡¡«⌐ ¿ßσ«ñ¡«¼ Σá⌐½Ñ Æπαí« ÇßßѼí½Ñαá óδ ¡Ñ ß¼«ªÑΓÑ  »ÑαÑ«»αÑñÑ-
  9511. ½¿Γ∞ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ i ¿ j. Äñ¿¡ ¿º ß»«ß«í«ó «í«⌐Γ¿ φΓ« ºá¬½ετáÑΓ-
  9512. ß∩ ó Γ«¼, τΓ«íδ ¿ß»«½∞º«óáΓ∞ í«½ÑÑ «»¿ßáΓѽ∞¡δÑ ¿¼Ñ¡á »áαá¼ÑΓα«ó,
  9513. τΓ«íδ  «¡¿  ¡Ñ »«óΓ«α∩½¿ß∞, ½¿í« ¼«ª¡« áßßÑ¼í½¿α«óáΓ∞ ¬áªñπε »«ñ-
  9514. »α«úαá¼¼π ÇßßѼí½Ñαá «Γñѽ∞¡«.
  9515.  
  9516.  
  9517.  
  9518.  
  9519. TASM2 #2-5/䫬              = 246 =
  9520.  
  9521.                              ä¿αÑ¬Γ¿óá ARG
  9522. -----------------------------------------------------------------
  9523.  
  9524.      ò«Γ∩ ¼«ª¡« «íαáΘáΓ∞ß∩ ¬ »áαá¼ÑΓαá¼ τÑαѺ αÑú¿ßΓα  BP,  Æπαí«
  9525. ÇßßѼí½Ñα »αÑñπß¼áΓα¿óáÑΓ á½∞ΓÑα¡áΓ¿óπ óδτ¿ß½Ñ¡¿ε ß¼ÑΘÑ¡¿⌐ ó ßΓÑ-
  9526. ¬Ñ ¿ óδ»«½¡Ñ¡¿ε ΓѬßΓ«óδσ »α¿ßóá¿óá¡¿⌐. ¥Γ«  ñ¿αÑ¬Γ¿óá  ARG.  Åα¿
  9527. ¿ß»«½∞º«óá¡¿¿  ÑÑ ó »α«µÑñπαÑ ñ¿αÑ¬Γ¿óá ARG áóΓ«¼áΓ¿τÑ߬¿ «»αÑñÑ-
  9528. ½∩ÑΓ ß¼ÑΘÑ¡¿∩ »áαá¼ÑΓα«ó «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá BP.  Ä¡á óδτ¿ß½∩ÑΓ
  9529. ΓᬪѠαẼÑα í½«¬á »áαá¼ÑΓα«ó ¿ ¿ß»«½∞ºπÑΓ Ñú« ó  ¿¡ßΓαπ¬µ¿¿ RET.
  9530. ū߬«½∞¬π ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ, ß«ºñáóáѼδÑ »« ñ¿αÑ¬Γ¿óÑ ARG, «»αÑñѽÑ-
  9531. ¡δ Γ«½∞¬« ó ß««ΓóÑΓßΓóπεΘÑ⌐ »α«µÑñπαÑ,  ó  ¬áªñ«⌐  »α«µÑñπαÑ  ¿½¿
  9532. Σπ¡¬µ¿¿  óá¼  ¡Ñ ΓαÑíπÑΓß∩ ¿ß»«½∞º«óáΓ∞ π¡¿¬á½∞¡δÑ ¿¼Ñ¡á »áαá¼ÑΓ-
  9533. α«ó.
  9534.  
  9535.      Å«¬áªÑ¼, ¬á¬ íπñÑΓ  óδú½∩ñÑΓ∞  »α¿¼Ñα  »αÑñδñπΘÑú«  αáºñѽá,
  9536. Ñß½¿ »ÑαÑ»¿ßáΓ∞ Ñú«, ¿ß»«½∞ºπ∩ ñ¿αÑ¬Γ¿óπ ARG:
  9537.  
  9538. CODE       SEGMENT
  9539.            ASSUME  CS:CODE
  9540. MyProc     PROC    FAR         ; procedure MyProc(i,j : integer);
  9541.                                ; external;
  9542.            PUBLIC  MyProc
  9543.            ARG j : WORD, i : WORD = RetBytes
  9544.            push  bp            ; ¡πª¡« ß«σαá¡¿Γ∞ BP óδºδóáεΘÑ⌐
  9545.                                ; »α«úαá¼¼δ
  9546.            mov   bp,sp         ; BP ΓÑ»Ñα∞ π¬áºδóáÑΓ ¡á óÑαΦ¿¡π
  9547.                                ; ßΓѬá
  9548.            mov   ax,i          ; áñαÑßπѼß∩ ¬ i τÑαѺ BP
  9549.            .
  9550.            .
  9551.            .
  9552.  
  9553.      ä¿αÑ¬Γ¿óá ARG Æπαí« ÇßßѼí½Ñαá ß«ºñáÑΓ ½«¬á½∞¡δÑ ¿ñÑ¡Γ¿Σ¿¬á-
  9554. Γ«αδ ñ½∩ »áαá¼ÑΓα«ó i ¿ j. ìá óαѼ∩ óδ»«½¡Ñ¡¿∩ »α«µÑñπαδ ßΓ᫬á:
  9555.  
  9556.         ARG j : WORD, i : WORD = RetBytes
  9557.  
  9558. áóΓ«¼áΓ¿τÑ߬¿ »α¿αáó¡¿óáÑΓ ¿ñÑ¡Γ¿Σ¿¬áΓ«α i  ¬  [WORD  PTR  BP+6],
  9559. ¿ñÑ¡Γ¿Σ¿¬áΓ«α  j  ¬ [WORD PTR BP+8], á ¿ñÑ¡Γ¿Σ¿¬áΓ«α RetBytes - ¬
  9560. τ¿ß½π 4 (αẼÑαπ ó íá⌐Γáσ í½«¬á »áαá¼ÑΓα«ó). é º¡áτÑ¡¿∩σ πτ¿Γδóá-
  9561. ÑΓß∩  ¿  ºá¡ÑßÑ¡¡«Ñ ó ßΓѬ º¡áτÑ¡¿Ñ BP, ¿ αẼÑα áñαÑßá ó«ºóαáΓá:
  9562. Ñß½¿ íδ »α«µÑñπαá MyProc ¿¼Ñ½á í½¿ª¡¿⌐ Γ¿», Γ« i í佫 íδ  »α¿αáó-
  9563. ¡Ñ¡«  ¬  º¡áτÑ¡¿ε  [BP+4], j - ¬ [BP+6], á RetBytes ΓᬪѠí佫 íδ
  9564. αáó¡« 4 (ó ½εí«¼ ß½πτáÑ »α«µÑñπαá MyProc ¼«ªÑΓ ºáóÑαΦ¿Γ∞ óδ»«½¡Ñ-
  9565. ¡¿Ñ ß »«¼«Θ∞ε ¿¡ßΓαπ¬µ¿¿ RET RetBytes).
  9566.  
  9567.  
  9568. TASM2 #2-5/䫬              = 247 =
  9569.  
  9570.      Åα¿ ¿ß»«½∞º«óá¡¿¿ ñ¿αÑ¬Γ¿óδ ARG ¡πª¡« »«¼¡¿Γ∞, τΓ« »áαá¼ÑΓαδ
  9571. ñ«½ª¡δ  »ÑαÑτ¿ß½∩Γ∞ß∩ ó «íαáΓ¡«¼ »«α∩ñ¬Ñ. Å«ß½Ññ¡¿⌐ »áαá¼ÑΓα »α«-
  9572. µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ Æπαí« Åá߬á½∩ ¡πª¡« αẼÑΘáΓ∞ ó ñ¿αÑ¬Γ¿óÑ  ARG
  9573. »Ñαóδ¼ ¿ ¡á«í«α«Γ.
  9574.  
  9575.      ÄΓ¡«ß¿Γѽ∞¡« ¿ß»«½∞º«óá¡¿∩ ñ¿αÑ¬Γ¿óδ ARG  ß  Æπαí«  Åá߬á½Ñ¼
  9576. ¼«ª¡« ßñѽáΓ∞ ÑΘÑ «ñ¡« ºá¼Ñτá¡¿Ñ. é  «Γ½¿τ¿Ñ  «Γ  ñαπú¿σ  ∩ºδ¬«ó,
  9577. Æπαí« Åá߬á½∞ óßÑúñá ºá¡«ß¿Γ ó ßΓѬ »áαá¼ÑΓα-º¡áτÑ¡¿Ñ  αẼÑα«¼ ó
  9578. íá⌐Γ,  ¬á¬ 16-í¿Γ«ó«Ñ ß½«ó«. Åα¿ φΓ«¼ ß««íΘ¿Γ∞ Æπαí« ÇßßѼí½Ñαπ «
  9579. ñ«»«½¡¿Γѽ∞¡«¼ íá⌐ΓÑ ñ«½ª¡δ óδ. ÅαÑñ»«½«ª¿¼, ¡á»α¿¼Ñα, τΓ« óδ ¡á-
  9580. »¿ß὿ Σπ¡¬µ¿ε, «»¿ßá¡¿Ñ ¬«Γ«α«⌐ ó Åá߬á½Ñ óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «í-
  9581. αẫ¼:
  9582.  
  9583.         function MyProc(i, j : char) : string; external;
  9584.  
  9585.      ä¿αÑ¬Γ¿óá ARG ñ½∩ φΓ«⌐ Σπ¡¬µ¿¿ ñ«½ª¡á íδ½á íδ óδú½∩ñÑΓ∞ Γá¬:
  9586.  
  9587.         ARG j:BYTE: 2, i:BYTE: 2 = RetBytes  RETURN  result:DWORD
  9588.  
  9589.      çñÑß∞ : 2 »«ß½Ñ ¬áªñ«ú« áαúπ¼Ñ¡Γá ¡Ñ«íσ«ñ¿¼«  π¬áºδóáΓ∞  ñ½∩
  9590. Γ«ú«,  τΓ«íδ  ß««íΘ¿Γ∞ ÇßßѼí½Ñαπ, τΓ« ¬áªñδ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α ºá¡«-
  9591. ß¿Γß∩ ó ßΓѬ, ¬á¬ ¼áß߿󠿺 2 íá⌐Γ (úñÑ, ó ñá¡¡«¼ ß½πτáÑ, ¼½áñΦ¿⌐
  9592. íá⌐Γ ¬áªñ«⌐ »áαδ ß«ñÑαª¿Γ »«½Ñº¡πε ¿¡Σ«α¼áµ¿ε).
  9593.  
  9594.      é Σπ¡¬µ¿¿, ó«ºóαáΘáεΘÑ⌐ ßΓ᫬«ó«Ñ º¡áτÑ¡¿Ñ (¬á¬ ñá¡¡á∩ Σπ¡¬-
  9595. µ¿∩),  »áαá¼ÑΓα  RETURNS ó ñ¿αÑ¬Γ¿óÑ ARG »«ºó«½∩ÑΓ óá¼ «»αÑñѽ¿Γ∞
  9596. »ÑαѼѡ¡πε, »α¿αáó¡Ñ¡¡πε ¬ Γ«¼π ¼ÑßΓπ ó ßΓѬÑ, ¬«Γ«α«Ñ  π¬áºδóáÑΓ
  9597. ¡á óαѼѡ¡δ⌐ αѺπ½∞ΓáΓ Σπ¡¬µ¿¿. ÅÑαѼѡ¡á∩ ó RETURNS ¡á αẼÑα (ó
  9598. íá⌐Γáσ) í½«¬á »áαá¼ÑΓα«ó. æ¼. â½áóπ 3 "æ»αáó«τ¡«ú«  απ¬«ó«ñßΓóá",
  9599. úñÑ « ñ¿αÑ¬Γ¿óÑ ARG αáß߬áºδóáÑΓß∩ í«½ÑÑ »«ñα«í¡«.
  9600.  
  9601.  
  9602.  
  9603.  
  9604. TASM2 #2-5/䫬              = 248 =
  9605.  
  9606.                    Æπαí« Åá߬á½∞ ¿ ñ¿αÑ¬Γ¿óá .MODEL
  9607. -----------------------------------------------------------------
  9608.  
  9609.      ä¿αÑ¬Γ¿óá .MODEL ß »áαá¼ÑΓα«¼ TPASCAL ºáñáÑΓ π»α«ΘÑ¡¡πε ßÑú-
  9610. ¼Ñ¡Γᵿε,  ¼«ñѽ∞ »á¼∩Γ¿ ¿ ∩ºδ¬«óπε »«ññÑ᪬π. Éá¡ÑÑ ¼δ πªÑ ó¿ñÑ-
  9611. ½¿, τΓ« ¡πª¡« ßñѽáΓ∞ ó »α«úαá¼¼áσ ÇßßѼí½Ñαá, τΓ«íδ  ¼«ª¡«  í佫
  9612. ¿ß»«½∞º«óáΓ∞ »α«µÑñπαδ ¿ Σπ¡¬µ¿¿ Åá߬á½∩. ÅαÑ«íαáºπѼ »α¿¼Ñα, ¿ß-
  9613. »«½∞ºπ∩ ó ¡Ñ¼ ñ¿αÑ¬Γ¿óδ .MODEL ¿ PROC:
  9614.  
  9615.                .MODEL   TPASCAL
  9616.                .CODE
  9617. MyProc         PROC     FAR i:BYTE,j:BYTE result:DWORD
  9618.                PUBLIC   MyProc
  9619.                mov      ax,i
  9620.                .
  9621.                .
  9622.                .
  9623.                ret
  9624.  
  9625.      çá¼ÑΓ¿¼, τΓ« ΓÑ»Ñα∞ ¡Ñ ¡πª¡« ºáñáóáΓ∞ »áαá¼ÑΓαδ  ó  «íαáΓ¡«¼
  9626. »«α∩ñ¬Ñ.  ìÑ ΓαÑíπÑΓß∩ ΓᬪѠ¼áßßá ñαπú¿σ «»ÑαáΓ«α«ó. êß»«½∞º«óá-
  9627. ¡¿Ñ ó ñ¿αÑ¬Γ¿óÑ .MODEL ¬½ετÑó«ú« ß½«óá TPASCAL ºáñáÑΓ ¿ß»«½∞º«óá-
  9628. ¡¿Ñ  ß«ú½áΦÑ¡¿⌐  Åá߬á½∩,  «»αÑñѽ∩ÑΓ  ¿¼Ñ¡á ßÑú¼Ñ¡Γ«ó, óδ»«½¡∩ÑΓ
  9629. ¿¡ßΓαπ¬µ¿¿ PUSH BP ¿ MOV BP,SP ¿ ºáñáÑΓ ΓᬪѠó«ºóαáΓ  ß  »«¼«Θ∞ε
  9630. ¿¡ßΓαπ¬µ¿⌐ POP BP ¿ RET N (úñÑ N - τ¿ß½« íá⌐Γ »áαá¼ÑΓα«ó).
  9631.  
  9632.         êß»«½∞º«óá¡¿Ñ ñαπú«ú« íẫó«ú« ¿½¿ ¿¡ñѬߡ«ú« αÑú¿ßΓαá
  9633. -----------------------------------------------------------------
  9634.  
  9635.      éΓ«α«⌐ ß»«ß«í ñ«ßΓπ»á ¬ »áαá¼ÑΓαá¼ ß«ßΓ«¿Γ  ó  ¿ß»«½∞º«óá¡¿¿
  9636. ñ½∩ »«½πτÑ¡¿∩ φΓ¿σ »áαá¼ÑΓα«ó ñαπú«ú« íẫó«ú« ¿½¿ ¿¡ñѬߡ«ú« αÑ-
  9637. ú¿ßΓαá (BX, SI ¿½¿ DI). ìπª¡« «ñ¡á¬« »«¼¡¿Γ∞,  τΓ«  »«  π¼«½τá¡¿ε
  9638. ßÑú¼Ñ¡Γ¡δ¼  αÑú¿ßΓα«¼ ñ½∩ ¡¿σ ∩ó½∩ÑΓß∩ αÑú¿ßΓα  DS, á ¡Ñ SS. Å«φ-
  9639. Γ«¼π ñ½∩ ¿σ ¿ß»«½∞º«óá¡¿∩ óá¼ »α¿ñÑΓß∩ »α¿¼Ñ¡∩Γ∞ »αÑΣ¿¬ß  »ÑαÑ«»-
  9640. αÑñѽѡ¿∩ ßÑú¼Ñ¡Γá.
  9641.  
  9642.      Åα¿óÑñѼ »α¿¼Ñα ¿ß»«½∞º«óá¡¿∩ ñ½∩ »«½πτÑ¡¿∩  »áαá¼ÑΓα«ó  αÑ-
  9643. ú¿ßΓαá BX:
  9644.  
  9645. CODE          SEGMENT
  9646.               ASSUME  CS:CODE
  9647. MyProc        PROC FAR         ; procedure MyProc(i,j : integer);
  9648.               PUBLIC MyProc
  9649. j          EQU WORD PTR SS:[BX+4] ; j ¡áσ«ñ¿Γß∩ ¡áñ ß«σαá¡Ñ¡¡δ¼
  9650.                                ; BP ¿ áñαÑß«¼ ó«ºóαáΓá
  9651.  
  9652. TASM2 #2-5/䫬              = 249 =
  9653.  
  9654. i          EQU WORD PTR SS:[bp+8] ; i αáß»«½áúáÑΓß∩ ¡áñ j
  9655.            mov   bx,sp         ; BX ΓÑ»Ñα∞ π¬áºδóáÑΓ ¡á óÑαΦ¿¡π
  9656.                                ; ßΓѬá
  9657.            mov   ax,i          ; áñαÑßπѼß∩ ¬ i τÑαѺ BX
  9658.            .
  9659.            .
  9660.            .
  9661.  
  9662.      é ΓÑσ »α«úαá¼¼áσ, úñÑ ¡ÑΓ í«½∞Φ«ú« τ¿ß½á ßß佫¬ ¡á  »áαá¼ÑΓ-
  9663. αδ, Γᬫ⌐ ¼ÑΓ«ñ »«ºó«½∩ÑΓ ßφ¬«¡«¼¿Γ∞ óαѼ∩ ¿ ¼ÑßΓ«. Å«τѼπ? Å«Γ«-
  9664. ¼π, τΓ« ó «Γ½¿τ¿Ñ «Γ BP,  αÑú¿ßΓα BX ¡Ñ ΓαÑíπÑΓß∩ ó«ßßΓá¡áó½¿óáΓ∞
  9665. 󠬫¡µÑ »α«úαá¼¼δ.
  9666.  
  9667.                   ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ ó Æπαí« Åá߬á½Ñ
  9668. -----------------------------------------------------------------
  9669.  
  9670.      é ºáó¿ß¿¼«ßΓ¿ «Γ Γ¿»á αѺπ½∞ΓáΓá Σπ¡¬µ¿¿ Æπαí« Åá߬á½∩ ó«ºó-
  9671. αáΘáεΓ ßó«¿ αѺπ½∞ΓáΓδ αẽ¿τ¡δ¼¿ ß»«ß«íἿ.
  9672.  
  9673.                ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ ß¬á½∩α¡«ú« Γ¿»á
  9674.  
  9675.      ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ ß¬á½∩α¡δσ Γ¿»«ó ó«ºóαáΘáεΓß∩ ó  αÑú¿ßΓαáσ
  9676. µÑ¡Γαá½∞¡«ú«  »α«µÑßß«αá  (ûÅ).  üá⌐Γ«óδÑ º¡áτÑ¡¿∩ ó«ºóαáΘáεΓß∩ ó
  9677. αÑú¿ßΓαÑ AL, º¡áτÑ¡¿∩  αẼÑα«¼  ó  2  íá⌐Γá  -  ó  αÑú¿ßΓαÑ  AX,
  9678. 4-íá⌐Γ«óδÑ º¡áτÑ¡¿∩ - ó »áαÑ αÑú¿ßΓα«ó DX:AX (ßΓáαΦÑÑ ß½«ó« ¡áσ«-
  9679. ñ¿Γß∩ ó αÑú¿ßΓαÑ DX).
  9680.  
  9681.               ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ óÑΘÑßΓóÑ¡¡«ú« Γ¿»á
  9682.  
  9683.      ÉѺπ½∞ΓáΓδ ¿ß»«½∞ºπѼ«ú« ó Æπαí« Åá߬á½Ñ  6-íá⌐Γ«ó«ú«  »α«ú-
  9684. αá¼¼¡«  φ¼π½¿απѼ«ú«  óÑΘÑßΓóÑ¡¡«ú«  Γ¿»á ó«ºóαáΘáεΓß∩ ó ΓαÑσ αÑ-
  9685. ú¿ßΓαáσ ûÅ. ìá¿í«½ÑÑ º¡áτáΘÑÑ (ßΓáαΦÑÑ) ß½«ó« ó«ºóαáΘáÑΓß∩ ó  DX,
  9686. ßαÑñ¡ÑÑ - ó BX, á ¡á¿¼Ñ¡ÑÑ º¡áτáΘÑÑ - ó AX.
  9687.  
  9688.             ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ Γ¿»«ó ß«»α«µÑßß«αá 8087
  9689.  
  9690.      ÉѺπ½∞ΓáΓδ Γ¿»«ó, ¿ß»«½∞ºπεΘ¿σß∩ ß«»α«µÑßß«α«¼ 8087, ó«ºóαá-
  9691. ΘáεΓß∩ ó αÑú¿ßΓαÑ óÑαΦ¿¡δ ßΓѬá ST(0) (¿½¿ »α«ßΓ« ST).
  9692.  
  9693.                ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ ßΓ᫬«ó«ú« Γ¿»á
  9694.  
  9695.      ÉѺπ½∞ΓáΓδ ßΓ᫬«ó«ú« Γ¿»á ó«ºóαáΘáεΓß∩ ó« óαѼѡ¡«⌐ αáí«τÑ⌐
  9696. «í½áßΓ¿, óδñѽ∩Ѽ«⌐ Æπαí« Åá߬á½Ñ¼ »ÑαÑñ ó맮ó«¼. ô¬áºáΓѽ∞ ñá½∞-
  9697. ¡Ñú« Γ¿»á ¡á φΓπ «í½áßΓ∞ ºá¡«ß¿Γß∩ ó ßΓѬ »ÑαÑñ ºá¡ÑßÑ¡¿Ñ¼ »Ñαó«-
  9698. ú«  »áαá¼ÑΓαá.  çá¼ÑΓ¿¼,  τΓ«  φëà π¬áºáΓѽ∞ ¡Ñ ∩ó½∩ÑΓß∩ τáßΓ∞ε
  9699.  
  9700. TASM2 #2-5/䫬              = 250 =
  9701.  
  9702. ß»¿ß¬á »áαá¼ÑΓα«ó.
  9703.  
  9704.            Åα¿¼Ñτá¡¿Ñ: ìÑ πñá½∩⌐ΓÑ ¿º ßΓѬᠻ«½πτÑ¡¡δ⌐ ó  αѺπ½∞-
  9705.       ΓáΓÑ  π¬áºáΓѽ∞,  Γᬠ ¬á¬ Æπαí« Åá߬á½∞ «ª¿ñáÑΓ, τΓ« »«ß½Ñ
  9706.       ó맮óá «¡ íπñÑΓ ñ«ßΓπ»Ñ¡.
  9707.  
  9708.                 ÉѺπ½∞ΓáΓδ Σπ¡¬µ¿¿ Γ¿»á π¬áºáΓѽ∞
  9709.  
  9710.      ÉѺπ½∞ΓáΓδ π¬áºáΓѽ∞ ó«ºóαáΘáεΓß∩  ó  »áαÑ  αÑú¿ßΓα«ó  DX:AX
  9711. (ßÑú¼Ñ¡Γ:ß¼ÑΘÑ¡¿Ñ).
  9712.  
  9713.  
  9714. éδñѽѡ¿Ñ »α«ßΓαá¡ßΓóá ñ½∩ ½«¬á½∞¡δσ ñá¡¡δσ
  9715. -----------------------------------------------------------------
  9716.  
  9717.      éáΦ¿ »α«úαá¼¼δ, ¡á»¿ßá¡¡δÑ ¡á Æπαí« ÇßßѼí½ÑαÑ, ¼«úπΓ  óδñÑ-
  9718. ½∩Γ∞  »α«ßΓαá¡ßΓó« ñ½∩ ßó«¿σ ß«íßΓóÑ¡¡δσ »ÑαѼѡ¡δσ, ¬á¬ »«ßΓ«∩¡-
  9719. ¡δσ (ßΓáΓ¿τÑ߬¿σ), Γ« ÑßΓ∞ ß«σαá¡∩εΘ¿σß∩ ó »α«¼ÑªπΓ¬Ñ ¼Ñªñπ ó맮-
  9720. óἿ,  Γᬠ¿ ñ½∩ óαѼѡ¡δσ (¬«Γ«αδÑ »«ß½Ñ ó맮óá íπñπΓ »«ΓÑα∩¡δ).
  9721. Äíá φΓ¿σ ß½πτá∩ «íßπªñáεΓß∩ ó ß½ÑñπεΘ¿σ αáºñѽáσ.
  9722.  
  9723.               éδñѽѡ¿Ñ «íΘÑñ«ßΓπ»¡«⌐ ßΓáΓ¿τÑ߬«⌐ »á¼∩Γ¿
  9724. -----------------------------------------------------------------
  9725.  
  9726.      Æπαí« Åá߬á½∞ »«ºó«½∩ÑΓ ó »α«úαá¼¼áσ Æπαí« ÇßßѼí½Ñαá αѺÑα-
  9727. ó¿α«óáΓ∞ »α«ßΓαá¡ßΓó« ñ½∩ ßΓáΓ¿τÑ߬¿σ »ÑαѼѡ¡δσ ó ßÑú¼Ñ¡Γáσ ú½«-
  9728. íá½∞¡δσ ñá¡¡δσ (DATA ¿½¿ DSEG). ùΓ«íδ óδñѽ¿Γ∞ φΓ«  »α«ßΓαá¡ßΓó«,
  9729. ¼«ª¡« »α«ßΓ« ¿ß»«½∞º«óáΓ∞ ΓᬿѠñ¿αÑ¬Γ¿óδ, ¬á¬ DB, DW ¿ Γ.ñ. ìá»-
  9730. α¿¼Ñα:
  9731.  
  9732.    DATA        SEGMENT PUBLIc
  9733.    MyInt       DW      ?        ; ºáαѺÑαó¿α«óáΓ∞ ß½«ó«
  9734.    MyByte      DB      ?        ; ºáαѺÑαó¿α«óáΓ∞ íá⌐Γ
  9735.      .
  9736.      .
  9737.      .
  9738.    DATA        ENDS
  9739.  
  9740.      ÅÑαѼѡ¡δσ, óδñѽ∩Ѽδσ Æπαí« ÇßßѼí½Ñα«¼ ó ßÑú¼Ñ¡ΓÑ ú½«íá½∞-
  9741. ¡δσ ñá¡¡δσ, ¬áßáεΓß∩ ñóá ó᪡δσ «úαá¡¿τÑ¡¿∩. é«-»Ñαóδσ, φΓ¿ »ÑαÑ-
  9742. ¼Ñ¡¡δ¼¿ ∩ó½∩εΓß∩ "¼ÑßΓ¡δ¼¿", «¡¿ ¡Ññ«ßΓπ»¡δ »α«úαἼѠÆπαí«  Åáß-
  9743. ¬á½∩ (σ«Γ∩ óδ ¼«ªÑΓÑ »ÑαÑñáóáΓ∞ π¬áºáΓѽ¿ ¡á ¡¿σ). é«-óΓ«αδσ, «¡¿
  9744. ¡Ñ ¼«úπΓ íδΓ∞ »αÑñóáα¿Γѽ∞¡« ¿¡¿µ¿á½¿º¿α«óá¡δ,  ¬á¬  Γ¿»¿º«óá¡¡δÑ
  9745. ¬«¡ßΓá¡Γδ. Ä»ÑαáΓ«α:
  9746.  
  9747.  
  9748. TASM2 #2-5/䫬              = 251 =
  9749.  
  9750.    MyInt       DW      42        ; φΓ« ¡Ñ ¿¡¿µ¿á½¿º¿απÑΓ
  9751.                                  ; MyInt º¡áτÑ¡¿Ñ¼ 42
  9752.  
  9753. ¡Ñ ó맮óÑΓ «Φ¿í¬¿ »α¿ ¬«¼»«¡«ó¬Ñ ¼«ñπ½∩ ß »α«úαá¼¼«⌐ Æπαí« Åá߬á-
  9754. ½∩, «ñ¡á¬« MyInt »α¿ óδ»«½¡Ñ¡¿¿ »α«úαá¼¼δ ¡Ñ íπñÑΓ ¿¼ÑΓ∞ º¡áτÑ¡¿Ñ
  9755. 42.
  9756.  
  9757.      ¥Γ¿ «úαá¡¿τÑ¡¿∩ ¼«ª¡« «í«⌐Γ¿, «»¿ßáó »ÑαѼѡ¡δÑ ¿½¿  Γ¿»¿º«-
  9758. óá¡¡δÑ  ¬«¡ßΓá¡Γδ  Æπαí«  Åá߬á½∩  ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ EXTRN, τΓ«
  9759. ßñѽáÑΓ ¿σ ñ«ßΓπ»¡δ¼¿ Æπαí« ÇßßѼí½Ñαπ.
  9760.  
  9761.  
  9762.  
  9763.  
  9764. TASM2 #2-5/䫬              = 252 =
  9765.  
  9766.                       éδñѽѡ¿Ñ óαѼѡ¡«⌐ »á¼∩Γ¿
  9767. -----------------------------------------------------------------
  9768.  
  9769.      é óáΦ¿σ »α«úαá¼¼áσ ¡á Æπαí«  Åá߬á½Ñ  ¼«ª¡«  óδñѽ∩Γ∞  ΓᬪÑ
  9770. óαѼѡ¡πε »á¼∩Γ∞ (½«¬á½∞¡δÑ »ÑαѼѡ¡δÑ) ó ßΓѬѠ¡á óαѼ∩ óδ»«½¡Ñ-
  9771. ¡¿∩ ¬áªñ«ú« ó맮óá. ÅÑαÑñ ó«ºóαáΓ«¼ π»αáó½Ñ¡¿∩ φΓá »á¼∩Γ∞  ñ«½ª¡á
  9772. íδΓ∞ «ßó«í«ªñÑ¡á, á º¡áτÑ¡¿Ñ αÑú¿ßΓαá BP ó«ßßΓá¡«ó½Ñ¡«. é ß½Ññπε-
  9773. ΘѼ »α¿¼ÑαÑ »α«µÑñπαá MyProc αѺÑαó¿απÑΓ  »α«ßΓαá¡ßΓó«  ñ½∩  ñóπσ
  9774. µÑ½δσ »ÑαѼѡ¡δσ a ¿ b:
  9775.  
  9776. CODE          SEGMENT
  9777.               ASSUME  CS:CODE   ; procedure MyProc(i : integer);
  9778. MyProc        PROC    FAR
  9779.               PUBLIC  MyProc
  9780.               LOCAL a : WORD, b : WORD = LocalSpace ; a ó [bp-2]
  9781.                                 ; b - ó [bp-4]
  9782. i             equ   word ptr [bp+6] ; »áαá¼ÑΓα i ¡áσ«ñ¿Γß∩ ¡áñ
  9783.                                 ; ß«σαá¡Ñ¡¡δ¼ BP ¿ áñαÑß«¼
  9784.                                 ; ó«ºóαáΓá
  9785.               push  bp          ; ¡πª¡« ß«σαá¡¿Γ∞ BP óδºδóáεΘÑ⌐
  9786.                                 ; »α«úαá¼¼δ
  9787.               mov   bp,sp       ; ΓÑ»Ñα∞ BP π¬áºδóáÑΓ ¡á
  9788.                                 ; óÑαΦ¿¡π ßΓѬá
  9789.               sub   sp,LocalSpace ; ºáαѺÑαó¿α«óáΓ∞ »α«ßΓαá¡ßΓ-
  9790.                                 ; ó« ñ½∩ ñóπσ ß½«ó
  9791.               mov   ax,42       ; ºáúαπº¿Γ∞ ó AX ¡áτá½∞¡«Ñ
  9792.                                 ; º¡áτÑ¡¿Ñ A
  9793.               mov   a,ax        ; ¿ ó A
  9794.               xor   ax,ax       ; «τ¿ßΓ¿Γ∞ αÑú¿ßΓα AX
  9795.               mov   b,ax        ; ¿¡¿µ¿á½¿º¿α«óáΓ∞ B ¡π½Ñ¼
  9796.               mov   b,ax        ; óδ»«½¡¿Γ∞ ¡πª¡δÑ ñÑ⌐ßΓó¿∩
  9797.               .
  9798.               .
  9799.               .
  9800.               mov   sp,bp       ; ó«ßßΓá¡«ó¿Γ∞ ¿ßσ«ñ¡«Ñ
  9801.                                 ; º¡áτÑ¡¿Ñ SP
  9802.               mov   bp          ; ó«ßßΓá¡«ó¿Γ∞ ¿ßσ«ñ¡«Ñ
  9803.                                 ; º¡áτÑ¡¿Ñ αÑú¿ßΓαá BP
  9804.               ret   2
  9805. MyProc        ENDP
  9806. CODE          ENDS
  9807.               END
  9808.  
  9809.      çá¼ÑΓ¿¼, τΓ« ñ¿αÑ¬Γ¿óá Æπαí« ÇßßѼí½Ñαá  LOCAL  ¿ß»«½∞ºπÑΓß∩
  9810. ñ½∩ ß«ºñá¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ¿ óδñѽѡ¿∩ »α«ßΓαá¡ßΓóá ñ½∩ ½«¬á½∞-
  9811. ¡δσ »ÑαѼѡ¡δσ. Ä»ÑαáΓ«α:
  9812.  
  9813. TASM2 #2-5/䫬              = 253 =
  9814.  
  9815.  
  9816.         LOCAL a : WORD, b : WORD = LocalSpace
  9817.  
  9818. ¡á óαѼ∩ óδ»«½¡Ñ¡¿∩ »α«µÑñπαδ »α¿ßóá¿óáÑΓ ¿ñÑ¡Γ¿Σ¿¬áΓ«απ a º¡áτÑ-
  9819. ¡¿Ñ  [BP-2], ¿ñÑ¡Γ¿Σ¿¬áΓ«απ b - º¡áτÑ¡¿Ñ [BP-4], á ¿ñÑ¡Γ¿Σ¿¬áΓ«απ
  9820. LocalSpace - τ¿ß½« 4 (αẼÑα «í½áßΓ¿ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ).  Å«ß-
  9821. ¬«½∞¬π  ¡ÑΓ ß««ΓóÑΓßΓóπεΘÑú« «»ÑαáΓ«αá ñ½∩ ß«ºñá¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«-
  9822. α«ó, ßßδ½áεΘ¿σß∩ ¡á »áαá¼ÑΓαδ, óδ ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞  »α¿ßóá¿óá-
  9823. ¡¿Ñ i º¡áτÑ¡¿∩ [BP+6].
  9824.  
  9825.      ü«½ÑÑ αáºπ¼¡δ⌐  ß»«ß«í  ¿¡¿µ¿á½¿ºáµ¿¿  ½«¬á½∞¡δσ  »ÑαѼѡ¡δσ
  9826. ºá¬½ετáÑΓß∩  ó  Γ«¼, τΓ«íδ ó¼ÑßΓ« π¼Ñ¡∞ΦÑ¡¿∩ SP ºá¡ÑßΓ¿ ó ßΓѬ ¿σ
  9827. º¡áτÑ¡¿∩. Æá¬¿¼ «íαẫ¼, óδ  ñ«½ª¡δ  ºá¼Ñ¡¿Γ∞  SUB  SP,LocalSpace
  9828. ¿¡ßΓαπ¬µ¿∩¼¿:
  9829.  
  9830.           mov   ax,42           ; »«½πτ¿Γ∞ ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ
  9831.                                 ; ñ½∩ a
  9832.           push  ax              ; ºá¡ÑßΓ¿ Ñú« ó a
  9833.           xor   ax,ax           ; «í¡π½¿Γ∞ AX
  9834.           push  ax              ; ¿ ºá¡ÑßΓ¿ 0 ó b
  9835.  
  9836.      àß½¿ óδ ¿ß»«½∞ºπÑΓÑ φΓ«Γ ß»«ß«í, ¡πª¡« ó¡¿¼áΓѽ∞¡«  «Γ߽Ѫ¿-
  9837. óáΓ∞  ßΓѬ!  ìÑ  ß½ÑñπÑΓ  ßßδ½áΓ∞ß∩ ¡á ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ a ¿ b »ÑαÑñ
  9838. ΓѼ, ¬á¬ «¡¿ ºá¡ÑßÑ¡δ ó ßΓѬ.
  9839.  
  9840.      äαπú«⌐ ó¿ñ «»Γ¿¼¿ºáµ¿¿ »αÑñπß¼áΓα¿óáÑΓ  ¿ß»«½∞º«óá¡¿Ñ  ¿¡ßΓ-
  9841. απ¬µ¿¿ PUSH CONST ñ½∩ ¿¡¿µ¿á½¿ºáµ¿¿ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ (ÑÑ ¼«ª-
  9842. ¡« ¿ß»«½∞º«óáΓ∞ »α¿ ¡á½¿τ¿¿ »α«µÑßß«α«¼ 80186,  80286  ¿  80386),
  9843. ¿½¿  ß«σαá¡Ñ¡¿Ñ  BP  ó αÑú¿ßΓαÑ ó¼ÑßΓ« ºá¡ÑßÑ¡¿∩ Ñú« ó ßΓѬ (Ñß½¿
  9844. ÑßΓ∞ ¡Ñ¿ß»«½∞º«óá¡¡δÑ αÑú¿ßΓαδ).
  9845.  
  9846.  
  9847. Åα¿¼Ñαδ »«ñ»α«úαá¼¼ ¡á ÇßßѼí½ÑαÑ ñ½∩ Æπαí« Åá߬á½∩
  9848. -----------------------------------------------------------------
  9849.  
  9850.      é ñá¡¡«¼ αáºñѽѠóδ ñáñ¿¼ ¡Ñ¬«Γ«αδÑ »α¿¼Ñαδ  »«ñ»α«úαá¼¼  ¡á
  9851. ∩ºδ¬Ñ  ÇßßѼí½Ñαá,  ¬«Γ«αδÑ  óδ ¼«ªÑΓÑ óδºδóáΓ∞ ¿º »α«úαá¼¼ Æπαí«
  9852. Åá߬á½∩.
  9853.  
  9854.    Å«ñ»α«úαá¼¼á ΦÑßΓ¡áñµáΓ¿α¿τ¡«ú« »αÑ«íαẫóá¡¿∩ «íΘÑú« ¡áº¡áτÑ¡¿∩
  9855. -----------------------------------------------------------------
  9856.  
  9857.      æ«ñÑαªáΘ¿Ñß∩ ó »áαá¼ÑΓαÑ num íá⌐Γδ  »αÑ«íαáºπεΓß∩  ó  ßΓ᫬π
  9858. ΦÑßΓ¡áñµáΓ¿α¿τ¡δσ  µ¿Σα  ñ½¿¡δ  (byteCount * 2). Å«ß¬«½∞¬π ¬áªñδ⌐
  9859. íá⌐Γ »«α«ªñáÑΓ ñóá ß¿¼ó«½á, ¼á¬ß¿¼á½∞¡«Ñ º¡áτÑ¡¿Ñ byteCount αáó¡«
  9860.  
  9861. TASM2 #2-5/䫬              = 254 =
  9862.  
  9863. 127  (¡Ñ »α«óÑα∩ÑΓß∩). ä½∩ »αÑ«íαẫóá¡¿∩ ¬áªñ«⌐ úαπ»»δ (»« 4 í¿-
  9864. Γá) ó ΦÑßΓ¡áñµáΓ¿α¿τ¡πε µ¿Σαπ ¼δ ñ½∩ ß¬«α«ßΓ¿ ¿ß»«½∞ºπѼ »«ß½Ññ«-
  9865. óáΓѽ∞¡«ßΓ∞ add-daa-adc-daa.
  9866.  
  9867.      Åα«µÑñπαá HexStr ¡á»¿ßá¡á Γá¬, τΓ« óδºδóáΓ∞ß∩ «¡á  ñ«½ª¡á  ß
  9868. »«¼«Θ∞ε ó맮óá ñá½∞¡Ñú« Γ¿»á. ¥Γ« «º¡áτáÑΓ, τΓ« ÑÑ ß½ÑñπÑΓ «»¿ßδ-
  9869. óáΓ∞ ó ¿¡ΓÑαΣÑ⌐ß¡«⌐ τáßΓ¿ ¼«ñπ½∩ Æπαí« Åá߬á½∩ ¿½¿ ß »«¼«Θ∞ε  ñ¿-
  9870. αÑ¬Γ¿óδ ¬«¼»¿½∩Γ«αá {$F+}.
  9871.  
  9872. CODE           SEGMENT
  9873.                ASSUME  cs:CODE,ds:NOTHING
  9874.  
  9875. ; Åáαá¼ÑΓαδ (+2 ß πτÑΓ«¼ push bp)
  9876.  
  9877. byteCount      equ byte ptr  ss:[bp+6]
  9878. num            equ dword ptr ss:[bp+8]
  9879.  
  9880. ; ÇñαÑßᵿ∩ ¬ αѺπ½∞ΓáΓπ Σπ¡¬µ¿¿ (+2 ß πτÑΓ«¼ push bp)
  9881.  
  9882. resultPtr      equ dword ptr ss:[bp+12]
  9883.  
  9884. HexStr         PROC FAR
  9885.                PUBLIC HexStr
  9886.  
  9887.                push  bp
  9888.                mov   bp,sp            ; »«½πτ¿Γ∞ π¬áºáΓѽ∞
  9889.                                       ; ßΓѬá
  9890.                les   di,resultPtr     ; »«½πτ¿Γ∞ áñαÑß
  9891.                                       ; αѺπ½∞ΓáΓá Σπ¡¬µ¿¿
  9892.                mov   dx,ds            ; ß«σαá¡¿Γ∞ DS Æπαí«
  9893.                                       ; Åá߬á½∩ ó DX
  9894.                lds   si,sum           ; »«½πτ¿Γ∞ áñαÑß τ¿ß½á
  9895.                mov   al,byteCount     ; ß¬«½∞¬« íá⌐Γ?
  9896.                xor   ah,ah            ; ß½«ó«
  9897.                mov   cx,ax            ; «Γ߽Ѫ¿óáΓ∞ τ¿ß½«
  9898.                                       ; íá⌐Γ ó CX
  9899.                add   si,ax            ; ¡áτáΓ∞ ß« ßΓáαΦÑú«
  9900.                                       ; íá⌐Γá τ¿ß½á
  9901.                dec   si
  9902.                shl   ax,1             ; ß¬«½∞¬« µ¿Σα?
  9903.                                       ; (2/íá⌐Γ)
  9904.                cld                    ; ß«σαá¡¿Γ∞ τ¿ß½« µ¿Σα
  9905.                                       ; (αáí«ΓáΓ∞ ó »α∩¼«¼
  9906.                                       ; ¡á»αáó½Ñ¡¿¿)
  9907.                stosb                  ; ó »α¿Ñ¼¡¿¬Ñ - íá⌐Γ
  9908.                                       ; ñ½¿¡δ ßΓ᫬¿
  9909.  
  9910. TASM2 #2-5/䫬              = 255 =
  9911.  
  9912. NextLoop:
  9913.                std                    ; ß¬á¡¿α«óáΓ∞ τ¿ß½« «Γ
  9914.                                       ; ßΓáαΦÑú« íá⌐Γá ¬
  9915.                                       ; ¼½áñΦѼπ
  9916.                lodsb                  ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐
  9917.                                       ; íá⌐Γ
  9918.                mov   ah,al            ; ß«σαá¡¿Γ∞ Ñú«
  9919.                shr   al,1             ; óδñѽ¿Γ∞ ßΓáαΦπε
  9920.                                       ; úαπ»»π í¿Γ
  9921.                shr   al,1
  9922.                shr   al,1
  9923.                shr   al,1
  9924.                add   al,90h           ; ß»Ñµ¿á½∞¡á∩ »«ß½Ñ-
  9925.                                       ; ñ«óáΓѽ∞¡«ßΓ∞ ΦÑßΓ¡áñµá-
  9926.                                       ; Γ¿α¿τ¡«ú« »αÑ«íαẫóá¡¿∩
  9927.                daa                    ; ¿ß»«½∞º«óá¡¿Ñ ¿¡ßΓαπ¬µ¿⌐
  9928.                                       ; ADD ¿ DAA
  9929.                adc   al,40h
  9930.                daa                    ; úαπ»»á »αÑ«íαẫóá¡á
  9931.                                       ; ó ¬«ñ ASCII
  9932.                cld                    ; ß«σαá¡¿¼ ASCII ¿ ß½ÑñπѼ
  9933.                                       ; ñá½ÑÑ
  9934.                stosb
  9935.                mov   al,ah            ; »«óΓ«α¿Γ∞ »αÑ«íαẫóá¡¿Ñ
  9936.                                       ; ñ½∩ ¼½áñΦÑ⌐ úαπ»»δ
  9937.                and   al,0Fh
  9938.                add   al,90h
  9939.                daa
  9940.                adc   al,40h
  9941.                daa
  9942.                stosb
  9943.                loop  HexLoop          ; »α«ñ«½ªáΓ∞, »«¬á ¡Ñ
  9944.                                       ; íπñÑΓ óδ»«½¡Ñ¡«
  9945.                mov   ds,dx
  9946.                pop   bp
  9947.                ret   6                ; »áαá¼ÑΓαδ ºá¡¿¼áεΓ
  9948.                                       ; 6 íá⌐Γ
  9949. HexStr         ENDP
  9950. CODE           ENDS
  9951.                END
  9952.  
  9953.      Åα¿¼Ñα  »α«úαá¼¼δ  ¡á  Åá߬á½Ñ,  úñÑ  ¿ß»«½∞ºπÑΓß∩   Σπ¡¬µ¿∩
  9954. HexStr, ¿¼ÑÑΓ ß½ÑñπεΘ¿⌐ ó¿ñ:
  9955.  
  9956. Program HexTest;
  9957. var
  9958.  
  9959. TASM2 #2-5/䫬              = 256 =
  9960.  
  9961.   num : word;
  9962. {$F+}
  9963.  
  9964. function HexStr (var num; byteCount : byte) : string; external;
  9965.  
  9966. {$L HEXSTR.OBJ}
  9967.  
  9968. {$F-}
  9969. begin
  9970.   num := word;
  9971.   Writeln('ÅαÑ«íαẫóá¡¡á∩ ßΓα«¬á ¿¼ÑÑΓ ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ
  9972. »αÑñßΓáó½Ñ¡¿Ñ: ', HexStr(num,Sizeof(num)),'*');
  9973. end.
  9974.  
  9975.      ä½∩ »«ßΓα«Ñ¡¿∩ ¿ ºá»π߬ᠠ»α¿¼Ñα«ó  »α«úαá¼¼δ ¡á  Åá߬á½Ñ  ¿
  9976. »α«úαá¼¼δ  ÇßßѼí½Ñαá  ¿ß»«½∞ºπ⌐ΓÑ  ß½ÑñπεΘ¿Ñ  ¬«¼á¡ñδ ¬«¼á¡ñ¡«ú«
  9977. Σá⌐½á:
  9978.  
  9979.      TASM HEXSTR
  9980.      TPC HEXTEST
  9981.      HEXTEST
  9982.  
  9983.      àß½¿ óδ ¿ß»«½∞ºπÑΓÑ ñ¿αÑ¬Γ¿óπ .MODEL,  Γ«  »α«úαá¼¼π  HexStr
  9984. ¼«ª¡« ºá»¿ßáΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
  9985.  
  9986.                .MODEL   TPASCAL
  9987.                .CODE
  9988. HexStr PROC FAR num:DWORD,byteCount:BYTE RETURNS resultPtr:DWORD
  9989.                PUBLIC HexStr
  9990.                les   di,resultPtr     ; »«½πτ¿Γ∞ áñαÑß
  9991.                                       ; αѺπ½∞ΓáΓá Σπ¡¬µ¿¿
  9992.                mov   dx,ds            ; ß«σαá¡¿Γ∞ DS Æπαí«
  9993.                                       ; Åá߬á½∩ ó DX
  9994.                lds   si,sum           ; »«½πτ¿Γ∞ áñαÑß τ¿ß½á
  9995.                mov   al,byteCount     ; ß¬«½∞¬« íá⌐Γ?
  9996.                xor   ah,ah            ; ß½«ó«
  9997.                mov   cx,ax            ; «Γ߽Ѫ¿óáΓ∞ τ¿ß½«
  9998.                                       ; íá⌐Γ ó CX
  9999.                add   si,ax            ; ¡áτáΓ∞ ß« ßΓáαΦÑú«
  10000.                                       ; íá⌐Γá τ¿ß½á
  10001.                dec   si
  10002.                shl   ax,1             ; ß¬«½∞¬« µ¿Σα?
  10003.                                       ; (2/íá⌐Γ)
  10004.                cld                    ; ß«σαá¡¿Γ∞ τ¿ß½« µ¿Σα
  10005.                                       ; (αáí«ΓáΓ∞ ó »α∩¼«¼
  10006.                                       ; ¡á»αáó½Ñ¡¿¿)
  10007.  
  10008. TASM2 #2-5/䫬              = 257 =
  10009.  
  10010.                stosb                  ; ó »α¿Ñ¼¡¿¬Ñ - íá⌐Γ
  10011.                                       ; ñ½¿¡δ ßΓ᫬¿
  10012. NextLoop:
  10013.                std                    ; ß¬á¡¿α«óáΓ∞ τ¿ß½« «Γ
  10014.                                       ; ßΓáαΦÑú« íá⌐Γá ¬
  10015.                                       ; ¼½áñΦѼπ
  10016.                lodsb                  ; »«½πτ¿Γ∞ ß½ÑñπεΘ¿⌐
  10017.                                       ; íá⌐Γ
  10018.                mov   ah,al            ; ß«σαá¡¿Γ∞ Ñú«
  10019.                shr   al,1             ; óδñѽ¿Γ∞ ßΓáαΦπε
  10020.                                       ; úαπ»»π í¿Γ
  10021.                shr   al,1
  10022.                shr   al,1
  10023.                shr   al,1
  10024.                add   al,90h           ; ß»Ñµ¿á½∞¡á∩ »«ß½Ñ-
  10025.                                       ; ñ«óáΓѽ∞¡«ßΓ∞ ΦÑßΓ¡áñµá-
  10026.                                       ; Γ¿α¿τ¡«ú« »αÑ«íαẫóá¡¿∩
  10027.                daa                    ; ¿ß»«½∞º«óá¡¿Ñ ¿¡ßΓαπ¬µ¿⌐
  10028.                                       ; ADD ¿ DAA
  10029.                adc   al,40h
  10030.                daa                    ; úαπ»»á »αÑ«íαẫóá¡á
  10031.                                       ; ó ¬«ñ ASCII
  10032.                cld                    ; ß«σαá¡¿¼ ASCII ¿ ß½ÑñπѼ
  10033.                                       ; ñá½ÑÑ
  10034.                stosb
  10035.                mov   al,ah            ; »«óΓ«α¿Γ∞ »αÑ«íαẫóá¡¿Ñ
  10036.                                       ; ñ½∩ ¼½áñΦÑ⌐ úαπ»»δ
  10037.                and   al,0Fh
  10038.                add   al,90h
  10039.                daa
  10040.                adc   al,40h
  10041.                daa
  10042.                stosb
  10043.                loop  HexLoop          ; »α«ñ«½ªáΓ∞, »«¬á ¡Ñ
  10044.                                       ; íπñÑΓ óδ»«½¡Ñ¡«
  10045.                mov   ds,dx            ; ó«ßßΓá¡«ó¿Γ∞ DS
  10046.                                       ; Æπαí« Åá߬á½∩
  10047.                ret
  10048. HexStr         ENDP
  10049. CODE           ENDS
  10050.                END
  10051.  
  10052.      Åα¿ φΓ«¼ óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ Γπ ªÑ »α«úαá¼¼π ¡á Åá߬á½Ñ ¿
  10053. »α«ßΓ«  áßßÑ¼í½¿α«óáΓ∞ á½∞ΓÑα¡áΓ¿ó¡δ⌐ óáα¿á¡Γ HexStr ¿ »ÑαѬ«¼»¿-
  10054. ½¿α«óáΓ∞ »α«úαá¼¼π ß »«¼«Θ∞ε Γ«ú« ªÑ ¬«¼á¡ñ¡«ú« Σá⌐½á.
  10055.  
  10056.  
  10057. TASM2 #2-5/䫬              = 258 =
  10058.  
  10059.                Åα¿¼Ñα «í¼Ñ¡á ß«ñÑন¼«ú« ñóπσ »ÑαѼѡ¡δσ
  10060. -----------------------------------------------------------------
  10061.  
  10062.      æ »«¼«Θ∞ε ñá¡¡«⌐ »α«µÑñπαδ óδ ¼«ªÑΓÑ óδ»«½¡¿Γ∞ «í¼Ñ¡  ß«ñÑα-
  10063. ª¿¼«ú«  ñóπσ  »ÑαѼѡ¡δσ αẼÑαá count. àß½¿ count ¿¼ÑÑΓ º¡áτÑ¡¿Ñ
  10064. 0, Γ« Γ« »α«µÑßß«α »«»δΓáÑΓß∩ »ÑαѬ«»¿α«óáΓ∞ 64è.
  10065.  
  10066. CODE        SEGMENT
  10067.             ASSUME cs:CODE,ds:NOTHING
  10068.  
  10069. ; Åáαá¼ÑΓαδ (ºá¼ÑΓ¿¼, τΓ« ¿º-ºá push bp ß¼ÑΘÑ¡¿Ñ
  10070. ; πóѽ¿τ¿óáÑΓß∩ ¡á 2)
  10071.  
  10072. var1        equ    DWORD PTR ss:[bp+12]
  10073. var2        equ    DWORD PTR ss:[bp+8]
  10074. count       equ    WORD  PTR ss:[bp+6]
  10075.  
  10076. Exchange    PROC FAR
  10077.             PUBLIC Exchange
  10078.             cld                   ; «í¼Ñ¡ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
  10079.             mov    dx,ds          ; ß«σαá¡¿Γ∞ αÑú¿ßΓα DS
  10080.             push   bp
  10081.             mov    bp,sp          ; »«½πτ¿Γ∞ íáºπ ßΓѬá
  10082.             lds    si,var1        ; »«½πτ¿Γ∞ »Ñαóδ⌐ áñαÑß
  10083.             les    di,var2        ; »«½πτ¿Γ∞ óΓ«α«⌐ áñαÑß
  10084.             mov    cx,count       ; »«½πτ¿Γ∞ τ¿ß½« »ÑαѼÑΘáѼδσ
  10085.                                   ; íá⌐Γ
  10086.             shr    cx,1           ; »«½πτ¿Γ∞ ßτÑΓτ¿¬ ß½«ó
  10087.                                   ; (¼½áñΦ¿⌐ í¿Γ -> »ÑαÑ¡«ß)
  10088.             jnc    ExchangeWord   ; Ñß½¿ ¡Ñ ¡ÑτÑΓ¡δ⌐ íá⌐Γ,
  10089.                                   ; ó«⌐Γ¿ ó µ¿¬½
  10090.             mov    al,es:[di]     ; ßτ¿ΓáΓ∞ ¡ÑτÑΓ¡δ⌐ íá⌐Γ
  10091.                                   ; ¿º var2
  10092.             movsb                 ; »ÑαѼÑßΓ¿Γ∞ íá⌐Γ ¿º var1
  10093.                                   ; ó var2
  10094.             mov    [si-1],al      ; ºá»¿ßáΓ∞ var2 ó var1
  10095.             jz     Finis          ; óδ»«½¡Ñ¡«, Ñß½¿ ¡πª¡«
  10096.                                   ; óδ»«½¡¿Γ∞ «í¼Ñ¡ Γ«½∞¬«
  10097.                                   ; «ñ¡«ú« íá⌐Γá
  10098. ExchangeWords:
  10099.             mov    bx,-2          ; BX - φΓ« πñ«í¡«Ñ ¼ÑßΓ«
  10100.                                   ; ñ½∩ σαá¡Ñ¡¿∩ -2
  10101. ExchangeLoop:
  10102.             mov    ax,es:[di]     ; ßτ¿ΓáΓ∞ ß½«ó« ¿º var2
  10103.             movsw                 ; »ÑαѼÑßΓ¿Γ∞ ¿º var1
  10104.                                   ; ó var2
  10105.  
  10106. TASM2 #2-5/䫬              = 259 =
  10107.  
  10108.             mov    [bx][si,ax     ; ºá»¿ßáΓ∞ ß½«ó« var2 ó
  10109.                                   ; var1
  10110.             loop   ExchangeLoop   ; »«óΓ«α¿Γ∞ count/2 αáº
  10111. Finis:
  10112.             mov    ds,dx          ; »«½πτ¿Γ∞ «íαáΓ¡« DS
  10113.                                   ; Æπαí« Åá߬á½∩
  10114.             pop    bp
  10115.             ret    10
  10116. Exchange    ENDP
  10117. CODE        ENDS
  10118.             END
  10119.  
  10120.      Åα«úαἼᠠÆπαí«   Åá߬á½∩,   ¬«Γ«αá∩   ¿ß»«½∞ºπÑΓ   Σπ¡¬µ¿ε
  10121. Exchange, ¿¼ÑÑΓ ó¿ñ:
  10122.  
  10123. program TextExchange;
  10124.  
  10125. type
  10126.   EmployeeRecord = record
  10127.                      Name     :    string[30];
  10128.                      Address  :    string[30];
  10129.                      City     :    string[15];
  10130.                      State    :    string[2];
  10131.                      Zip      :    string[10];
  10132.                     end;
  10133.  
  10134. var
  10135.   OldEmployee, NewEmployee : EmployeeRecord;
  10136.  
  10137. {$F+}
  10138.  
  10139. procedure Exchange(var var1,var2; count : word); external;
  10140. {$L XCHANGE.OBJ}
  10141. {$F-}
  10142. begin
  10143.   with OldEmployee do
  10144.   begin
  10145.     Name := 'John Smith';
  10146.     Address := ' 123 F Street';
  10147.     City := 'Scotts Valley';
  10148.     State := 'CA';
  10149.     Zip := ' 90000-0000';
  10150.   end;
  10151.   with NewEmployee do
  10152.   begin
  10153.     Name := 'Mary Jones';
  10154.  
  10155. TASM2 #2-5/䫬              = 260 =
  10156.  
  10157.     Address := ' 9471 41st Avenue';
  10158.     City := 'New York';
  10159.     State := 'NY';
  10160.     Zip := ' 10000-1111';
  10161.   end;
  10162.   Writeln('Before: ',OldEmployee.Name,' ',NewEmployee.Name);
  10163.   Exchange(OldEmployee,NewEmployee,sizeof(OldEmployee));
  10164.   Writeln('After: ',OldEmployeeName,' ',NewEmployee.Name);
  10165.   Exchange(OldEmployee,NewEmployee,sizeof(OldEmployee));
  10166.   Writeln('After: ',OldEmployeeName,' ',NewEmployee.Name);
  10167. end.
  10168.  
  10169.      ùΓ«íδ ßΣ«α¼¿α«óáΓ∞ ¿ ºá»πßΓ¿Γ∞ ñá¡¡δÑ »α«úαá¼¼δ ¡á Åá߬á½Ñ ¿
  10170. ÇßßѼí½ÑαÑ, ¿ß»«½∞ºπ⌐ΓÑ ß½ÑñπεΘ¿Ñ ¬«¼á¡ñδ ¬«¼á¡ñ¡«ú« Σá⌐½á:
  10171.  
  10172.         TASM XCHANGE
  10173.         TPC  XCHANGE
  10174.         XCHANGE
  10175.  
  10176.      àß½¿ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ .MODEL, Γ« »α«úαá¼¼á Exchange ¡á
  10177. ÇßßѼí½ÑαÑ íπñÑΓ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
  10178.  
  10179.             .MODEL  TPASCAL
  10180.             .CODE
  10181. Exchange    PROC FAR var1:DWORD,var2:DWORD,count:WORD
  10182.             PUBLIC Exchange
  10183.             cld                  ; «í¼Ñ¡ ó »α∩¼«¼ ¡á»αáó½Ñ¡¿¿
  10184.             mov    dx,ds         ; ß«σαá¡¿Γ∞ DS
  10185.             push   bp
  10186.             mov    bp,sp         ; »«½πτ¿Γ∞ íáºπ ßΓѬá
  10187.             lds    si,var1       ; »«½πτ¿Γ∞ »Ñαóδ⌐ áñαÑß
  10188.             les    di,var2       ; »«½πτ¿Γ∞ óΓ«α«⌐ áñαÑß
  10189.             mov    cx,count      ; »«½πτ¿Γ∞ τ¿ß½« »ÑαѼÑΘáѼδσ
  10190.                                  ; íá⌐Γ
  10191.             shr    cx,1          ; »«½πτ¿Γ∞ ßτÑΓτ¿¬ ß½«ó
  10192.                                  ; (¼½áñΦ¿⌐ í¿Γ -> »ÑαÑ¡«ß)
  10193.             jnc    ExchangeWord  ; Ñß½¿ ¡Ñ ¡ÑτÑΓ¡δ⌐ íá⌐Γ,
  10194.                                  ; ó«⌐Γ¿ ó µ¿¬½
  10195.             mov    al,es:[di]    ; ßτ¿ΓáΓ∞ ¡ÑτÑΓ¡δ⌐ íá⌐Γ
  10196.                                  ; ¿º var2
  10197.             movsb                ; »ÑαѼÑßΓ¿Γ∞ íá⌐Γ ¿º var1
  10198.                                  ; ó var2
  10199.             mov    [si-1],al     ; ºá»¿ßáΓ∞ var2 ó var1
  10200.             jz     Finis         ; óδ»«½¡Ñ¡«, Ñß½¿ ¡πª¡«
  10201.                                  ; óδ»«½¡¿Γ∞ «í¼Ñ¡ Γ«½∞¬«
  10202.                                  ; «ñ¡«ú« íá⌐Γá
  10203.  
  10204. TASM2 #2-5/䫬              = 261 =
  10205.  
  10206. ExchangeWords:
  10207.             mov    bx,-2         ; BX - φΓ« πñ«í¡«Ñ ¼ÑßΓ«
  10208.                                  ; ñ½∩ σαá¡Ñ¡¿∩ -2
  10209. ExchangeLoop:
  10210.             mov    ax,es:[di]    ; ßτ¿ΓáΓ∞ ß½«ó« ¿º var2
  10211.             movsw                ; »ÑαѼÑßΓ¿Γ∞ ¿º var1
  10212.                                  ; ó var2
  10213.             mov    [bx][si,ax    ; ºá»¿ßáΓ∞ ß½«ó« var2 ó
  10214.                                  ; var1
  10215.             loop   ExchangeLoop  ; »«óΓ«α¿Γ∞ count/2 αáº
  10216. Finis:
  10217.             mov    ds,dx         ; »«½πτ¿Γ∞ «íαáΓ¡« DS
  10218.                                  ; Æπαí« Åá߬á½∩
  10219.             ret
  10220. Exchage     ENDP
  10221. CODE        ENDS
  10222.             END
  10223.  
  10224.      éδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ Γπ ªÑ »α«úαá¼¼π ¡á Åá߬á½Ñ  ¿  »α«ßΓ«
  10225. áßßÑ¼í½¿α«óáΓ∞  á½∞ΓÑα¡áΓ¿ó¡δ⌐ óáα¿á¡Γ »α«µÑñπαδ Exchánge ¿ »ÑαÑ-
  10226. ¬«¼»¿½¿α«óáΓ∞ »α«úαá¼¼π ß »«¼«Θ∞ε Γ«ú« ªÑ ¬«¼á¡ñ¡«ú« Σá⌐½á.
  10227.  
  10228.  
  10229.  
  10230.  
  10231. TASM2 #2-5/䫬              = 262 =
  10232.  
  10233.                  Åα¿¼Ñα á¡á½¿ºá «»Ñαᵿ«¡¡«⌐ ßαÑñδ DOS
  10234. -----------------------------------------------------------------
  10235.  
  10236.      æ »«¼«Θ∞ε Σπ¡¬µ¿¿ EnvString óδ ß¼«ªÑΓÑ »α«ß¼«ΓαÑΓ∞  «»Ñαᵿ-
  10237. «¡¡πε ßαÑñπ DOS ¿ ¡á⌐Γ¿ ßΓ᫬π ó¿ñá "s=ìàùÆÄ" ¿ ó«ºóαáΓ¿Γ∞ ìàùÆÄ,
  10238. Ñß½¿ φΓ« ¡á⌐ñÑ¡«.
  10239.  
  10240. DATA           SEGMENT PUBLIC
  10241.                EXTRN prefixSeg : Word  ; ñáÑΓ áñαÑß PSP
  10242. DATA           ENDS
  10243.                SEGMENT PUBLIC
  10244.                ASSUME  cs:CODE,ds:DATA
  10245.  
  10246. EnvString      PROC FAR
  10247.                PUBLIC  EnvString
  10248.                push    bp
  10249.                cld                     ; αáí«ΓáΓ∞ ó »α∩¼«¼
  10250.                                        ; ¡á»αáó½Ñ¡¿¿
  10251.                mov     es,[prefixSeg]  ; »«ß¼«ΓαÑΓ∞ PSP
  10252.                mov     es,es:[2Ch]     ; ES:DI π¬áºδóáεΓ ¡á
  10253.                                        ; «»Ñαᵿ«¡¡πε ßαÑñπ,
  10254.                xor     di,di           ; ¬«Γ«αá∩ óδα«ó¡Ñ¡á ¡á
  10255.                                        ; úαá¡¿µπ »áαáúαáΣá
  10256.                mov     bp,sp           ; ¡á⌐Γ¿ ßΓ᫬π »áαá¼ÑΓα«ó,
  10257.                lds     si,ss:[bp+6]    ; ¬«Γ«αá∩ ß½ÑñπÑΓ ºá
  10258.                                        ; áñαÑß«¼ ó«ºóαáΓá
  10259.                ASSUME  ds:NOTHING
  10260.                lodsb                   ; »«ß¼«ΓαÑΓ∞ ñ½¿¡π
  10261.                or      al,al           ; «¡á αáó¡á 0?
  10262.                jz      RetNul          ; ñá, ó«ºóαáΓ
  10263.                mov     ah,al           ; ó »α«Γ¿ó¡«¼ ß½πτáÑ
  10264.                                        ; ß«σαá¡¿Γ∞ ÑÑ ó AH
  10265.                mov     dx,si           ; DS:SI ß«ñÑαªáΓ π¬áºáΓѽ∞
  10266.                                        ; ¡á »Ñαóδ⌐ »áαá¼ÑΓα
  10267.                                        ; char
  10268.                xor     al,al           ; ßñѽáΓ∞ Ñú« αáó¡δ¼ 0
  10269. Compare:
  10270.                mov     ch,al           ; ¼δ σ«Γ¿¼, τΓ«íδ ñ½∩
  10271.                                        ; ß½ÑñπεΘÑú« «ΓßτÑΓá ch=0
  10272.                mov     si,dx           ; ó«ºóαáΓ¿Γ∞ π¬áºáΓѽ∞ ¡á
  10273.                                        ; »α«ß¼«ΓαÑ¡¡πε ßΓ᫬π
  10274.                mov     cl,ah           ; »«½πτ¿Γ∞ ñ½¿¡π
  10275.                mov     si,dx           ; ó«ºóαáΓ¿Γ∞ π¬áºáΓѽ∞ ¡á
  10276.                                        ; ßΓ᫬π
  10277.                repe    cmpsb           ; ßαáó¡¿Γ∞ íá⌐Γδ
  10278.                jne     Skip            ; Ñß½¿ ßαáó¡Ñ¡¿Ñ ¡Ñπñáτ-
  10279.  
  10280. TASM2 #2-5/䫬              = 263 =
  10281.  
  10282.                                        ; ¡«Ñ »«»α«í«óáΓ∞ ß½Ññπ-
  10283.                                        ; εΘπε ßΓ᫬π
  10284.                cmp     byte ptr es:[di],'=' ; ßαáó¡Ñ¡¿Ñ
  10285.                                        ; ºáóÑαΦ¿½«ß∞ πß»ÑΦ¡«
  10286.                                        ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½ '='?
  10287.                jne     NoEqual         ; Ñß½¿ ¡ÑΓ, óßÑ ÑΘÑ ¡ÑΓ
  10288.                                        ; ß«ó»áñÑ¡¿∩
  10289. Found:
  10290.                mov     ax,es           ; DI:SI íπñÑΓ π¬áºδóáΓ∞
  10291.                                        ; ¡á ¡á⌐ñÑ¡¡πε ¡á¼¿ ßΓ᫬π
  10292.                mov     ds,ax
  10293.                mov     si,di
  10294.                inc     si              ; "»α«⌐Γ¿" ß¿¼ó«½ '='
  10295.                les     bx,ss:[bp+10]   ; »«½πτ¿Γ∞ áñαÑß
  10296.                                        ; αѺπ½∞ΓáΓá
  10297.                                        ; Σπ¡¬µ¿¿
  10298.                mov     di,bx           ; ºá¡ÑßΓ¿ Ñú« ó ES:DI
  10299.                inc     di              ; íá⌐Γ ñ½¿¡δ
  10300.                mov     cl,255          ; ºáñáΓ∞ ¼á¬ß¿¼á½∞¡πε
  10301.                                        ; ñ½¿¡π
  10302. CopyLoop:
  10303.                lodsb                   ; »«½πτ¿Γ∞ íá⌐Γ
  10304.                or      al,al           ; »α«óÑα¿Γ∞ ¡á 0
  10305.                jz      Done            ; Ñß½¿ 0, óδ»«½¡Ñ¡«
  10306.                stosb                   ; ºá¡ÑßΓ¿ Ñú« ó αѺπ½∞ΓáΓ
  10307.                loop    CopyLoop        ; »ÑαѼÑßΓ¿Γ∞ ñ« 255
  10308.                                        ; íá⌐Γ
  10309. Done:          not     cl              ; »α¿ ß«σαá¡Ñ¡¿¿ ¼δ
  10310.                                        ; π¼Ñ¡∞Φ὿ «Γ CL ñ« 255
  10311.                mov     es:[bx],cl      ; ß«σαá¡¿Γ∞ ñ½¿¡π
  10312.                mov     ax,SEG DATE
  10313.                mov     ds,ax           ; ó«ßßΓá¡«ó¿Γ∞ DS
  10314.                ASSUME  ds:DATA
  10315.                pop     bp
  10316.                ret     4
  10317.                ASSUME  ds:NOTHING
  10318. Skip:
  10319.                dec     di              ; »α«óÑα¿Γ∞ ¡á 0
  10320. NoEqual:
  10321.                mov     cx,7FFFh        ; ñ½¿¡¡δ⌐ »«¿ß¬, Ñß½¿
  10322.                                        ; ¡πª¡«
  10323.                sub     cx,di           ; «»Ñαᵿ«¡¡á∩ ßαÑñá
  10324.                                        ; ¡¿¬«úñá ¡Ñ »αÑóδΦáÑΓ
  10325.                                        ; 32è
  10326.                jbe     RetNul          ; Ñß½¿ ¬«¡Ñµ, óδ⌐Γ¿
  10327.                repne   scasb           ; »«ß¼«ΓαÑΓ∞ ß½ÑñπεΘ¿⌐
  10328.  
  10329. TASM2 #2-5/䫬              = 264 =
  10330.  
  10331.                                        ; 0
  10332.                jcxz    RetNul          ; óδ⌐Γ¿, Ñß½¿ ¡Ñ ¡á⌐ñÑ¡
  10333.                cmp     byte ptr es:[di],al ; óΓ«α«⌐ 0 ó ßΓ᫬Ñ?
  10334.                jne     Compare         ; Ñß½¿ ¡ÑΓ, »«»δΓáΓ∞ß∩
  10335.                                        ; ß¡«óá
  10336. RetNul:
  10337.                les     di,ss:[bp+10]   ; »«½πτ¿Γ∞ áñαÑß
  10338.                                        ; αѺπ½∞ΓáΓá
  10339.                stosb                   ; ß«σαá¡¿Γ∞ Γá¼ 0
  10340.                mov     ax,SEG DATA
  10341.                mov     ds,ax           ; ó«ßßΓá¡«ó¿Γ∞ DS
  10342.                ASSUME  ds:DATA
  10343.                pop     bp
  10344.                ret     4
  10345. EnvString      ENDP
  10346. CODE           ENDS
  10347.                END
  10348.  
  10349.      Åα«úαἼᠡá Åá߬á½Ñ, ¬«Γ«αá∩ ¿ß»«½∞ºπÑΓ Σπ¡¬µ¿ε  EnvString,
  10350. óδú½∩ñ¿Γ ß½ÑñπεΘ¿¼ «íαẫ¼:
  10351.  
  10352. program EnvTest;
  10353. { »α«úαἼᠿΘÑΓ ßΓ᫬¿ «»Ñαᵿ«¡¡«⌐ ßαÑñδ }
  10354.  
  10355. var
  10356.   EnvVariable : string;
  10357.   EnvValue    : string;
  10358.  
  10359. {$F+}
  10360.  
  10361. function EnvString(s:string) : string; external;
  10362. {$L ENVSTRING.OBJ}
  10363. {$F-}
  10364. begin
  10365.   EnvVariable := 'PROMPT';
  10366.   EnvValue := EnvString(EnvVariable);
  10367.   if EnvValue = '' then EnvValue := '*** ¡Ñ ¡á⌐ñÑ¡á ***';
  10368.   Writeln('ÅÑαѼѡ¡á∩ «»Ñαᵿ«¡¡«⌐ ßαÑñδ: ',
  10369.            EnvVariable,' ç¡áτÑ¡¿Ñ: ',EnvValue);
  10370. end.
  10371.  
  10372.      ùΓ«íδ ßΣ«α¼¿α«óáΓ∞ ¿ ºá»πßΓ¿Γ∞ ñá¡¡δÑ »α«úαá¼¼δ ¡á Åá߬á½Ñ ¿
  10373. ÇßßѼí½ÑαÑ, ¿ß»«½∞ºπ⌐ΓÑ ß½ÑñπεΘ¿Ñ ¬«¼á¡ñδ ¬«¼á¡ñ¡«ú« Σá⌐½á:
  10374.  
  10375.      TASM ENVSTR
  10376.      TPC ENVTEST
  10377.  
  10378. TASM2 #2-5/䫬              = 265 =
  10379.  
  10380.      ENVTEST
  10381.  
  10382.      àß½¿ ¿ß»«½∞º«óáΓ∞ ñ¿αÑ¬Γ¿óπ .MODEL, Γ« Σπ¡¬µ¿ε EnvString  ¡á
  10383. ÇßßѼí½ÑαÑ íπñÑΓ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
  10384.  
  10385.                .MODEL   TPASCAL
  10386.                .DATA
  10387.                EXTRN prefixSeg : Word  ; ñáÑΓ áñαÑß PSP
  10388.                .CODE
  10389. EnvString      PROC FAR  EnvVar:DWORD  RETURNS EnvVal:DWORD
  10390.                PUBLIC  EnvString
  10391.                push    bp
  10392.                cld                     ; αáí«ΓáΓ∞ ó »α∩¼«¼
  10393.                                        ; ¡á»αáó½Ñ¡¿¿
  10394.                mov     es,[prefixSeg]  ; »«ß¼«ΓαÑΓ∞ PSP
  10395.                mov     es,es:[2Ch]     ; ES:DI π¬áºδóáεΓ ¡á
  10396.                                        ; «»Ñαᵿ«¡¡πε ßαÑñπ,
  10397.                xor     di,di           ; ¬«Γ«αá∩ óδα«ó¡Ñ¡á ¡á
  10398.                                        ; úαá¡¿µπ »áαáúαáΣá
  10399.                mov     bp,sp           ; ¡á⌐Γ¿ ßΓ᫬π »áαá¼ÑΓα«ó,
  10400.                lds     si,ss:[bp+6]    ; ¬«Γ«αá∩ ß½ÑñπÑΓ ºá
  10401.                                        ; áñαÑß«¼ ó«ºóαáΓá
  10402.                ASSUME  ds:NOTHING
  10403.                lodsb                   ; »«ß¼«ΓαÑΓ∞ ñ½¿¡π
  10404.                or      al,al           ; «¡á αáó¡á 0?
  10405.                jz      RetNul          ; ñá, ó«ºóαáΓ
  10406.                mov     ah,al           ; ó »α«Γ¿ó¡«¼ ß½πτáÑ
  10407.                                        ; ß«σαá¡¿Γ∞ ÑÑ ó AH
  10408.                mov     dx,si           ; DS:SI ß«ñÑαªáΓ π¬áºáΓѽ∞
  10409.                                        ; ¡á »Ñαóδ⌐ »áαá¼ÑΓα
  10410.                                        ; char
  10411.                xor     al,al           ; ßñѽáΓ∞ Ñú« αáó¡δ¼ 0
  10412. Compare:
  10413.                mov     ch,al           ; ¼δ σ«Γ¿¼, τΓ«íδ ñ½∩
  10414.                                        ; ß½ÑñπεΘÑú« «ΓßτÑΓá ch=0
  10415.                mov     si,dx           ; ó«ºóαáΓ¿Γ∞ π¬áºáΓѽ∞ ¡á
  10416.                                        ; »α«ß¼«ΓαÑ¡¡πε ßΓ᫬π
  10417.                mov     cl,ah           ; »«½πτ¿Γ∞ ñ½¿¡π
  10418.                mov     si,dx           ; ó«ºóαáΓ¿Γ∞ π¬áºáΓѽ∞ ¡á
  10419.                                        ; ßΓ᫬π
  10420.                repe    cmpsb           ; ßαáó¡¿Γ∞ íá⌐Γδ
  10421.                jne     Skip            ; Ñß½¿ ßαáó¡Ñ¡¿Ñ ¡Ñπñáτ-
  10422.                                        ; ¡«Ñ, »«»α«í«óáΓ∞ ß½Ññπ-
  10423.                                        ; εΘπε ßΓ᫬π
  10424.                cmp     byte ptr es:[di],'=' ; ßαáó¡Ñ¡¿Ñ
  10425.                                        ; ºáóÑαΦ¿½«ß∞ πß»ÑΦ¡«
  10426.  
  10427. TASM2 #2-5/䫬              = 266 =
  10428.  
  10429.                                        ; ß½ÑñπεΘ¿⌐ ß¿¼ó«½ '='?
  10430.                jne     NoEqual         ; Ñß½¿ ¡ÑΓ, óßÑ ÑΘÑ ¡ÑΓ
  10431.                                        ; ß«ó»áñÑ¡¿∩
  10432. Found:
  10433.                mov     ax,es           ; DI:SI íπñÑΓ π¬áºδóáΓ∞
  10434.                                        ; ¡á ¡á⌐ñÑ¡¡πε ¡á¼¿ ßΓ᫬π
  10435.                mov     ds,ax
  10436.                mov     si,di
  10437.                inc     si              ; "»α«⌐Γ¿" ß¿¼ó«½ '='
  10438.                les     bx,ss:[bp+10]   ; »«½πτ¿Γ∞ áñαÑß
  10439.                                        ; αѺπ½∞ΓáΓá Σπ¡¬µ¿¿
  10440.                mov     di,bx           ; ºá¡ÑßΓ¿ Ñú« ó ES:DI
  10441.                inc     di              ; íá⌐Γ ñ½¿¡δ
  10442.                mov     cl,255          ; ºáñáΓ∞ ¼á¬ß¿¼á½∞¡πε
  10443.                                        ; ñ½¿¡π
  10444. CopyLoop:
  10445.                lodsb                   ; »«½πτ¿Γ∞ íá⌐Γ
  10446.                or      al,al           ; »α«óÑα¿Γ∞ ¡á 0
  10447.                jz      Done            ; Ñß½¿ 0, óδ»«½¡Ñ¡«
  10448.                stosb                   ; ºá¡ÑßΓ¿ Ñú« ó αѺπ½∞ΓáΓ
  10449.                loop    CopyLoop        ; »ÑαѼÑßΓ¿Γ∞ ñ« 255
  10450.                                        ; íá⌐Γ
  10451. Done:          not     cl              ; »α¿ ß«σαá¡Ñ¡¿¿ ¼δ
  10452.                                        ; π¼Ñ¡∞Φ὿ «Γ CL ñ« 255
  10453.                mov     es:[bx],cl      ; ß«σαá¡¿Γ∞ ñ½¿¡π
  10454.                mov     ax,SEG DATE
  10455.                mov     ds,ax           ; ó«ßßΓá¡«ó¿Γ∞ DS
  10456.                ASSUME  ds:DATA
  10457.                pop     bp
  10458.                ret     4
  10459.                ASSUME  ds:NOTHING
  10460. Skip:
  10461.                dec     di              ; »α«óÑα∩Γ∞ ¡á 0
  10462. NoEqual:
  10463.                mov     cx,7FFFh        ; ñ½¿¡¡δ⌐ »«¿ß¬, Ñß½¿
  10464.                                        ; ¡πª¡«
  10465.                sub     cx,di           ; «»Ñαᵿ«¡¡á∩ ßαÑñá
  10466.                                        ; ¡¿¬«úñá ¡Ñ »αÑóδΦáÑΓ
  10467.                                        ; 32è
  10468.                jbe     RetNul          ; Ñß½¿ ¬«¡Ñµ, óδ⌐Γ¿
  10469.                repne   scasb           ; »«ß¼«ΓαÑΓ∞ ß½ÑñπεΘ¿⌐
  10470.                                        ; 0
  10471.                jcxz    RetNul          ; óδ⌐Γ¿, Ñß½¿ ¡Ñ ¡á⌐ñÑ¡
  10472.                cmp     byte ptr es:[di],al ; óΓ«α«⌐ 0 ó ßΓ᫬Ñ?
  10473.                jne     Compare         ; Ñß½¿ ¡ÑΓ, »«»δΓáΓ∞ß∩
  10474.                                        ; ß¡«óá
  10475.  
  10476. TASM2 #2-5/䫬              = 267 =
  10477.  
  10478. RetNul:
  10479.                les     di,ss:[bp+10]   ; »«½πτ¿Γ∞ áñαÑß
  10480.                                        ; αѺπ½∞ΓáΓá
  10481.                stosb                   ; ß«σαá¡¿Γ∞ Γá¼ 0
  10482.                mov     ax,SEG DATA
  10483.                mov     ds,ax           ; ó«ßßΓá¡«ó¿Γ∞ DS
  10484.                ASSUME  ds:DATA
  10485.                ret     4
  10486. EnvString      ENDP
  10487. CODE           ENDS
  10488.                END
  10489.  
  10490.      éδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ Γπ ªÑ »α«úαá¼¼π ¡á Åá߬á½Ñ  ¿  »α«ßΓ«
  10491. áßßÑ¼í½¿α«óáΓ∞  á½∞ΓÑα¡áΓ¿ó¡δ⌐  óáα¿á¡Γ Σπ¡¬µ¿¿ EnvString ¿ »ÑαÑ-
  10492. ¬«¼»¿½¿α«óáΓ∞ »α«úαá¼¼π ß »«¼«Θ∞ε Γ«ú« ªÑ ¬«¼á¡ñ¡«ú« Σá⌐½á.
  10493.  
  10494.