home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / tp6progg.doc / pg23 < prev    next >
Encoding:
Text File  |  1991-02-04  |  19.1 KB  |  464 lines

  1.                              âïÇéÇ 23.
  2.  
  3.                 ÉàäÇèÆêÉÄéÇìêà ÇææàîüïàÉìÄâÄ èÄäÇ.
  4.  
  5.      Åα«µÑñπαδ ¿  Σπ¡¬µ¿¿,  ¡á»¿ßá¡¡δÑ  ¡á  áßßѼí½ÑαÑ  ¼«úπΓ  íδΓ∞
  6. ßó∩ºá¡δ  ß  »α«úαἼἿ ¿ ¼«ñπ½∩¼¿ Turbo Pascal ß »«¼«Θ∞ε ñ¿αÑ¬Γ¿óδ
  7. ¬«¼»¿½∩Γ«αá  $L.  êßσ«ñ¡δ⌐   Σá⌐½   ¡á   áßßѼí½ÑαÑ   ñ«½ªÑ¡   íδΓ∞
  8. áßßÑ¼í½¿α«óá¡ ó  «íΩÑ¬Γ¡δ⌐ Σá⌐½ (.OéJ) ß »«¼«Θ∞ε Turbo Assembler. æ
  9. »α«úαá¼¼«⌐ ¿½¿ ¼«ñπ½Ñ¼ ¼«ª¡« ßó∩ºáΓ∞ ¡Ñ߬«½∞¬« «íΩÑ¬Γ¡δσ  Σá⌐½«ó  ß
  10. »«¼«Θ∞ε ¡Ñ߬«½∞¬¿σ ñ¿αÑ¬Γ¿ó $L.
  11.      Åα«µÑñπαδ ¿ Σπ¡¬µ¿¿,  ¡á»¿ßá¡¡δÑ ¡á  áßßѼí½ÑαÑ,  ñ«½ª¡δ  íδΓ∞
  12. «íΩ∩ó½Ñ¡δ   ó  »α«úαἼѠ ¿½¿  ¼«ñπ½Ñ  ¡á  Åá߬á½Ñ,  ¬á¬  external,
  13. ¡á»α¿¼Ñα:
  14.  
  15.            function LoCase(Ch: Char): Char; external;
  16.  
  17.      é ß««ΓóÑΓßΓóπεΘÑ⌐  ¿ßσ«ñ¡«⌐  »α«úαἼѠ ¡á   áßßѼí½ÑαÑ,   óßÑ
  18. »α«µÑñπαδ  ¿  Σπ¡¬µ¿¿  ñ«½ª¡δ  íδΓ∞ αáß»«½«ªÑ¡δ ó ßÑú¼Ñ¡ΓÑ ß ¿¼Ñ¡Ñ¼
  19. CODE ¿½¿ CSEG,  ¿½¿ ó ßÑú¼Ñ¡ΓÑ,  τ∞Ñ ¿¼∩ «¬á¡τ¿óáÑΓß∩ _TEXT ¿ ¿¼Ñ¡á
  20. ó¡ÑΦ¡¿σ »α«µÑñπα ¿ Σπ¡¬µ¿⌐ ñ«½ª¡δ íδΓ∞ ó ñ¿αÑ¬Γ¿óÑ PUBLIC.
  21.      éδ ñ«½ª¡δ  íδΓ∞  πóÑαÑ¡δ,  τΓ«  »α«µÑñπαá   ¿½¿   Σπ¡¬µ¿∩   ¡á
  22. áßßѼí½ÑαÑ ß««ΓóÑΓßΓóπÑΓ ÑÑ «»αÑñѽѡ¿ε ¡á Åá߬á½Ñ »« ¼«ñѽ¿ ó맮óá
  23. (NEAR  ¿½¿  FAR),  τ¿ß½π  »áαá¼ÑΓα«ó,  Γ¿»π   »áαá¼ÑΓα«ó   ¿   Γ¿»π
  24. αѺπ½∞ΓáΓá.
  25.      êßσ«ñ¡δ⌐ Σá⌐½ ¡á áßßѼí½ÑαÑ ¼«ªÑΓ «íΩ∩ó½∩Γ∞ ¿¡¿µ¿á½¿º¿α«óá¡¡δÑ
  26. »ÑαѼѡ¡δÑ  ó  ßÑú¼Ñ¡ΓÑ  ß  ¿¼Ñ¡Ñ¼  CONST  ¿½¿ ó ßÑú¼Ñ¡ΓÑ,  τ∞Ñ ¿¼∩
  27. «¬á¡τ¿óáÑΓß∩ _DATA ¿ ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δÑ »ÑαѼѡ¡δÑ ó  ßÑú¼Ñ¡ΓÑ  ß
  28. ¿¼Ñ¡Ñ¼  DATA ¿½¿ DSEG,  ¿½¿ ó ßÑú¼Ñ¡ΓÑ,  τ∞Ñ ¿¼∩ «¬á¡τ¿óáÑΓß∩ _BSS.
  29. Æá¬¿Ñ »ÑαѼѡ¡δÑ ∩ó½∩εΓß∩ ½«¬á½∞¡δ¼¿ ó »α«úαἼѠ¡á ÇßßѼí½ÑαÑ  ¿ ¬
  30. ¡¿¼  ¡Ñ½∞º∩ «íαáΓ¿Γ∞ß∩ ¿º »α«úαá¼¼δ ¿½¿ ¼«ñπ½∩ ¡á Åá߬á½Ñ.  Äñ¡á¬«,
  31. «¡¿ αẼÑΘáεΓß∩ ó Γ«¼ ªÑ  ßÑú¼Ñ¡ΓÑ,  τΓ«  ¿  ú½«íá½∞¡δÑ  »ÑαѼѡ¡δÑ
  32. Åá߬á½∩ ¿ ¬ ¡¿¼ ¼«ª¡« «íαáΓ¿Γ∞ß∩ τÑαѺ ßÑú¼Ñ¡Γ¡δ⌐ αÑú¿ßΓα DS.
  33.      è« óßѼ  »α«µÑñπαá¼,  Σπ¡¬µ¿∩¼  ¿  »ÑαѼѡ¡δ¼,  «íΩ∩ó½Ñ¡¡δ¼  ó
  34. »α«úαἼѠ¿½¿  ¼«ñπ½Ñ  ¡á  Åá߬á½Ñ ¿ «íΩ∩ó½Ñ¡¡δ¼ ó ßѬµ¿¿ interface
  35. ¿ß»«½∞ºπѼδσ ¼«ñπ½Ñ⌐,  ¼«ª¡« «íαáΓ¿Γ∞ß∩ ¿º »α«úαá¼¼δ ¡á  ÇßßѼí½ÑαÑ
  36. τÑαѺ ñ¿αÑ¬Γ¿óπ EXTRN.  è«¡Ñτ¡«,  éδ ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ ¬«ααÑ¬Γ¡δ⌐
  37. Γ¿» ó «»¿ßá¡¿¿ EXTRN.
  38.      è«úñá ó  ñ¿αÑ¬Γ¿óÑ $L »«∩ó½∩ÑΓß∩ «íΩÑ¬Γ¡δ⌐ Σá⌐½,  Turbo Pascal
  39. »αÑ«íαáºπÑΓ φëàΣá⌐½ ¿º »ÑαѼÑΘáѼ«ú«  Σ«α¼áΓá  «íΩÑ¬Γ¡«ú«  ¼«ñπ½∩
  40. Intel   (.OBJ)   ó   ßó«⌐   ó¡πΓαÑ¡¡¿⌐   »ÑαѼÑΘáѼδ⌐  Σ«α¼áΓ.  ¥Γ«
  41. »αÑ«íαẫó᡿Ѡ󫺼«ª¡« Γ«½∞¬« »α¿ ß«í½εñÑ¡¿¿ »αáó¿½:
  42.  
  43.      - éßÑ »α«µÑñπαδ ñ«½ª¡δ íδΓ∞ αẼÑΘÑ¡δ ó ßÑú¼Ñ¡ΓÑ ß ¿¼Ñ¡Ñ¼ CODE
  44. ¿½¿ CSEG,  ¿½¿  ó  ßÑú¼Ñ¡ΓÑ,  τ∞Ñ  ¿¼∩  «¬á¡τ¿óáÑΓß∩ ¡á _TEXT.  éßÑ
  45. ¿¡¿µ¿á½¿º¿α«óá¡¡δÑ ½«¬á½∞¡δÑ  »ÑαѼѡ¡δÑ   ñ«½ª¡δ   αẼÑΘáΓ∞ß∩   ó
  46. ßÑú¼Ñ¡ΓÑ ß  ¿¼Ñ¡Ñ¼  CONST ¿½¿ ßÑú¼Ñ¡ΓÑ ß ¿¼Ñ¡Ñ¼,  «¬á¡τ¿óáεΘ¿¼ß∩ ¡á
  47. _DATA. éßÑ ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δÑ ½«¬á½∞¡δÑ  »ÑαѼѡ¡δÑ  ñ«½ª¡δ  íδΓ∞
  48. αẼÑΘÑ¡δ ó  ßÑú¼Ñ¡ΓÑ  ß  ¿¼Ñ¡Ñ¼  DATA  ¿½¿ DSEG,  ¿½¿ ó ßÑú¼Ñ¡ΓÑ ß
  49. ¿¼Ñ¡Ñ¼, «¬á¡τ¿óáεΘ¿¼ß∩ ¡á _BSS.  éßÑ ñαπú¿Ñ ßÑú¼Ñ¡Γδ  ¿ú¡«α¿απεΓß∩,
  50. ΓᬪÑ, ¬á¬  ¿  ñ¿αÑ¬Γ¿óá GROUP.  Ä»¿ßá¡¿∩ ßÑú¼Ñ¡Γ«ó ¼«úπΓ π¬áºδóáΓ∞
  51. óδαáó¡¿óá¡¿Ñ BYTE ¿½¿ WORD;  »α¿  αÑñá¬Γ¿α«óá¡¿¿  ¬«ñ«óδÑ  ßÑú¼Ñ¡Γδ
  52. óßÑúñá óδαáó¡Ñ¡δ  ¡á  íá⌐Γ,  á  ßÑú¼Ñ¡Γδ ñá¡¡δσ óßÑúñá óδαáó¡Ñ¡δ ¡á
  53. ß½«ó«. Ä»¿ßá¡¿Ñ ßÑú¼Ñ¡Γ«ó ¼«úπΓ π¬áºδóáΓ∞ PUBLIC ¿ ¿¼∩  ¬½áßßá,  ¡«
  54. «¡¿ ¿ú¡«α¿απεΓß∩.
  55.  
  56.      - Turbo  Pascal ¿ú¡«α¿απÑΓ óßÑ ñá¡¡δÑ ñ½∩ ßÑú¼Ñ¡Γ«ó,  «Γ½¿τ¡δσ
  57. «Γ ßÑú¼Ñ¡Γ«ó  ¬«ñá  (CODE,   CSEG   ¿½¿   xxxσ_TEXT)   ¿   ßÑú¼Ñ¡Γδ
  58. ¿¡¿µ¿á½¿º¿α«óá¡¡δσ ñá¡¡δσ (CONST ¿½¿ xxxx_DATA).  è«úñá «íΩ∩ó½∩ÑΓß∩
  59. »ÑαѼѡ¡δÑ ó ßÑú¼Ñ¡ΓÑ ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δσ ñá¡¡δσ (DATA,  DSEG  ¿½¿
  60. xxxx_BSS), óßÑúñá  ¿ß»«½∞ºπ⌐ΓÑ  º¡á¬  (?)  ñ½∩  π¬áºá¡¿∩  º¡áτÑ¡¿⌐,
  61. ¡á»α¿¼Ñα:
  62.  
  63.      Count   DW ?
  64.      Buffer  DB 128 DUP(?)
  65.  
  66.      - Äñ¡«íá⌐Γ«óδÑ   ßß佬¿  ¬  EXTRN  ß¿¼ó«½á¼  ¡Ññ«»πßΓ¿¼δ.  ¥Γ«
  67. «º¡áτáÑΓ,  τΓ« «»ÑαáΓ«αδ HIGH ¿ LOW ¡Ñ ¼«úπΓ  íδΓ∞  ¿ß»«½∞º«óá¡δ  ß
  68. EXTRN ß¿¼ó«½á¼¿.
  69.  
  70.  
  71.                   Turbo Assembler ¿ Turbo Pascal.
  72.  
  73.      Turbo Assembler (TASM) »«ºó«½∩ÑΓ »α«ßΓ«  »¿ßáΓ∞  »α«úαá¼¼δ  ¡á
  74. áßßѼí½ÑαÑ  ¿  ßó∩ºδóáΓ∞  ¿σ  ß éáΦ¿¼¿ »α«úαἼἿ ¡á Turbo Pascal.
  75. Turbo Assembler «íÑß»Ñτ¿óáÑΓ »α«ßΓπε ßÑú¼Ñ¡Γᵿε,  ¼«ñѽ¿ »á¼∩Γ¿  ¿
  76. ∩ºδ¬«óπε »«ññÑ᪬π ñ½∩ »α«úαá¼¼¿ßΓ«ó ¡á Turbo Pascal.
  77.      êß»«½∞º«óá¡¿Ñ TPASCAL  ß   ñ¿αÑ¬Γ¿ó«⌐   .MODEL   πßΓá¡áó½¿óáÑΓ
  78. ß«ú½áΦÑ¡¿∩  « ó맮óáσ Åá߬á½∩,  «»αÑñѽ∩ÑΓ ¿¼Ñ¡á ßÑú¼Ñ¡Γ«ó,  ñѽáÑΓ
  79. PUSH BP ¿ MOV BP,SP ¿ ΓᬪѠπßΓá¡áó½¿óáÑΓ ó«ºóαáΓ τÑαѺ  POP  BP  ¿
  80. RET N (úñÑ N τ¿ß½« íá⌐Γ«ó »áαá¼ÑΓα«ó).
  81.      ä¿αÑ¬Γ¿óá PROC »«ºó«½∩ÑΓ éá¼ «»αÑñѽ∩Γ∞ óáΦ¿ »áαá¼ÑΓαδ  ó  Γ«¼
  82. ªÑ »«α∩ñ¬Ñ,  ¬á¬ «¡¿ «»αÑñѽѡδ ó éáΦÑ⌐ »α«úαἼѠ¡á Åá߬á½Ñ.  àß½¿
  83. éδ «»αÑñѽ∩ÑΓÑ Σπ¡¬µ¿ε,  ¬«Γ«αá∩ ó«ºóαáΘáÑΓ  ßΓ᫬π,  »«¼¡¿ΓÑ,  τΓ«
  84. ñ¿αÑ¬Γ¿óá PROC   ¿¼ÑÑΓ   «»µ¿ε   RETURNS,   ¬«Γ«αá∩  »«ºó«½∩ÑΓ  éá¼
  85. «íαáΘáΓ∞ß∩ ¬ π¬áºáΓÑ½ε ¡á óαѼѡ¡πε ßΓ᫬π ó ßΓѬѠíѺ  πτÑΓá τ¿ß½á
  86. íá⌐Γ »áαá¼ÑΓα«ó, ñ«íáó½Ñ¡¡δσ ¬ «»ÑαáΓ«απ RET.
  87.      Åα¿¼Ñα ¬«ñá ß ¿ß»«½∞º«ó᡿Ѽ ñ¿αÑ¬Γ¿ó .MODEL ¿ PROC:
  88.  
  89.         .MODEL TPASCAL
  90.         .CODE
  91.  MyProc  PROC FAR I: Byte, J: Byte RETURNS Result: DWORD
  92.          PUBLIC MyProc
  93.          les  DI,Result   ; »«½πτ¿Γ∞ áñαÑß óαѼѡ¡«⌐ ßΓ᫬¿
  94.          mov  AL,I        ; »«½πτ¿Γ∞ »Ñαóδ⌐ »áαá¼ÑΓα I
  95.          mov  BL,J        ; »«½πτ¿Γ∞ óΓ«α«⌐ »áαá¼ÑΓα J
  96.          ...
  97.          ret
  98.  
  99.      Ä»¿ßá¡¿Ñ Σπ¡¬µ¿¿ ¡á Åá߬á½Ñ:
  100.  
  101.      function MyProc(I, J: Char): string; external;
  102.  
  103.  
  104.                   Åα¿¼Ñαδ »α«úαá¼¼ ¡á ÇßßѼí½ÑαÑ.
  105.  
  106.      çñÑß∞ »αÑñßΓáó½Ñ¡   »α¿¼Ñα   ¼«ñπ½∩,   ¬«Γ«αδ⌐  αÑ὿ºπÑΓ  ñóÑ
  107. »α«úαá¼¼δ  «íαáí«Γ¬¿  ßΓ᫬  ¡á   ÇßßѼí½ÑαÑ.   öπ¡¬µ¿∩   UpperCase
  108. »αÑ«íαáºπÑΓ  óßÑ  ß¿¼ó«½δ  ó  ßΓα«¬Ñ ó ºáú½áó¡δÑ.  öπ¡¬µ¿∩ StringOf
  109. ó«ºóαáΘáÑΓ ßΓ᫬π ß¿¼ó«½«ó ºáñá¡¡«⌐ ñ½¿¡δ.
  110.  
  111.      unit Strings;
  112.      interfase
  113.      function UpperCase(S: String): String;
  114.      function StringOf(Ch: Char; Count: Byte): String;
  115.      implementation
  116.      {$L STRS}
  117.      function UpperCase; external;
  118.      function StringOf; external;
  119.      end.
  120.  
  121.      Åα«úαἼᠡᠠÇßßѼí½ÑαÑ,  αÑ὿ºπεΘá∩  Σπ¡¬µ¿¿  UpperCase   ¿
  122. StringOf,  »«¬áºá¡á  ¡¿ªÑ.  Ä¡á  ñ«½ª¡á  íδΓ∞ áßßÑ¼í½¿α«óá¡á ó Σá⌐½
  123. Strs.OBJ ñ«  ¬«¼»¿½∩µ¿¿  ¼«ñπ½∩  Strings.  çá¼ÑΓ¿¼,  τΓ«  »α«úαá¼¼δ
  124. ¿ß»«½∞ºπεΓ   ñá½∞¡εε   ¼«ñѽ∞  ó맮óá,  Γᬠ ¬á¬  «¡¿  «íΩ∩ó½Ñ¡δ  ó
  125. ¿¡ΓÑαΣÑ⌐ß¡«⌐ τáßΓ¿ ¼«ñπ½∩.
  126.  
  127.      CODE    SEGMENT BYTE PUBLIC
  128.              ASSUME  CS:CODE
  129.              PUBLIC UpperCase, StringOf   ; «íΩ∩ó½Ñ¡¿Ñ Σπ¡¬µ¿⌐
  130.  
  131.      ; function UpperCase(S: String): String;
  132.  
  133.      UpperRes  EQU     DWORD PTR [BP+10]
  134.      UpperStr  EQU     DWORD PTR [BP+6]
  135.  
  136.      UpperCase PROC FAR
  137.          push   bp             ; ß«σαá¡¿Γ∞ bp
  138.          mov    bp,sp          ; πßΓá¡«ó¿Γ∞ ßΓѬ
  139.          push   ds             ; ß«σαá¡¿Γ∞ ds
  140.          lds    si,UpperStr    ; ºáúαπº¿Γ∞ áñαÑß ßΓ᫬¿
  141.          les    di,UpperRes    ; ºáúαπº¿Γ∞ áñαÑß αѺπ½∞ΓáΓá
  142.          cld
  143.          lodsb                 ; ºáúαπº¿Γ∞ ñ½¿¡π ßΓ᫬¿
  144.          stosb                 ; ¬«»¿α«óáΓ∞ ó αѺπ½∞ΓáΓ
  145.          mov    cl,al          ; ñ½¿¡π ßΓ᫬¿ ó CX
  146.          xor    ch,ch
  147.          jcxz   U3             ; »α«»πßΓ¿Γ∞, Ñß½¿ ßΓα«¬á »πßΓá∩
  148.      U1: lodsb                 ; ºáúαπº¿Γ∞ ß¿¼ó«½
  149.          cmp  al,'a'           ; »α«»πßΓ¿Γ∞ Ñß½¿ ¡Ñ 'a'..'z'
  150.          jb   U2
  151.          cmp  al,'z'
  152.          ja   U2
  153.          sub  al,'a'-'a'       ; »αÑ«íαẫóáΓ∞ ó ºáú½áó¡δÑ
  154.      U2: stosb                 ; ºá»«¼¡¿Γ∞ ó αѺπ½∞ΓáΓ
  155.          loop U1               ; µ¿¬½ ñ½∩ óßÑσ ß¿¼ó«½«ó
  156.      U3: pop  ds               ; ó«ßΓá¡«ó¿Γ∞ ds
  157.          pop  bp               ; ó«ßΓá¡«ó¿Γ∞ bp
  158.          ret  4                ; πñ὿Γ∞ »áαá¼ÑΓα ¿ ó«ºóαáΓ
  159.      UpperCase  ENDP
  160.  
  161.       ; procedure StringOf(var S :string; Ch : char; Count: byte)
  162.  
  163.       StrOfs     EQU   DWORD PTR [BP + 10]
  164.       StrOfChar  EQU   BYTE PTR [BP + 8]
  165.       StrOfCount EQU   BYTE PTR [BP + 6]
  166.       StringOf   Proc FAR
  167.           push  bp              ; ß«σαá¡¿Γ∞ bp
  168.           mov   bp,sp           ; πßΓá¡«ó¿Γ∞ ßΓѬ
  169.           les   di,StrOfRes     ; ºáúαπº¿Γ∞ áñαÑß αѺπ½∞ΓáΓá
  170.           mov   al,StrOfCount   ; ºáúαπº¿Γ∞ ßτÑΓτ¿¬
  171.           cld
  172.           stosb                 ; ß«σαá¡¿Γ∞ ñ½¿¡π
  173.           mov   cl,al           ; ßτÑΓτ¿¬ ó CX
  174.           xor   ch,ch
  175.           mov   al, StrOfChar   ; ºáúαπº¿Γ∞ ß¿¼ó«½
  176.           rep   STOSB           ; ß«σαá¡¿Γ∞ ßΓ᫬π ß¿¼ó«½«ó
  177.           pop   bp              ; ó«ßßΓá¡«ó¿Γ∞ bp
  178.           ret   8               ; πñ὿Γ∞ »áαá¼ÑΓα ¿ ó«ºóαáΓ
  179.       StringOf  ENDP
  180.       CODE      ENDS
  181.                 END
  182.  
  183.  
  184.      ä½∩ Γ«ú« τΓ«íδ áßßÑ¼í½¿α«óáΓ∞ »α¿¼Ñα ¿ «Γ¬«¼»¿½¿α«óáΓ∞ ¼«ñπ½∞,
  185. ¿ß»«½∞ºπ⌐ΓÑ ¬«¼á¡ñδ:
  186.  
  187.      TASM STRS
  188.      TPC strings
  189.  
  190.      æ½ÑñπεΘ¿⌐ »α¿¼Ñα »«¬áºδóáÑΓ, ¬á¬ »α«úαἼᠡá ÇßßѼí½ÑαÑ ¼«ªÑΓ
  191. «íαáΘáΓ∞ß∩  ¬  »α«úαἼἠ ¿ »ÑαѼѡ¡δ¼ Åá߬á½∩.  Åα«úαá¼¼á Numbers
  192. τ¿ΓáÑΓ  ñ«  100  µÑ½δσ  º¡áτÑ¡¿⌐  ¿  ºáΓѼ  óδºδóáÑΓ  »α«µÑñπαπ  ¡á
  193. ÇßßѼí½ÑαÑ, τΓ«íδ »α«óÑα¿Γ∞ ñ¿á»áº«¡ ¬áªñ«ú« ¿º φΓ¿σ º¡áτÑ¡¿⌐. àß½¿
  194. º¡áτÑ¡¿Ñ óδσ«ñ¿Γ ¿º ñ¿á»áº«¡á,  »α«µÑñπαá  ¡á  ÇßßѼí½ÑαÑ  óδºδóáÑΓ
  195. »α«µÑñπαπ ¡á Åá߬á½Ñ ñ½∩ Ñú« »ÑτáΓ¿.
  196.  
  197.      program Numbers;
  198.      {$L CHECK}
  199.      var
  200.         Buffer: array[1..100] of Integer;
  201.         Count: Integer;
  202.      procedure RangeError(N: Integer);
  203.      begin
  204.         WriteLn('Range error: ', N);
  205.      end;
  206.  
  207.      procedure CheckRange(Min, Max: Integer); external;
  208.      begin
  209.         Count := 0;
  210.         while not EOF and (Count < 100) do
  211.         begin
  212.            Count := Count + 1;
  213.            ReadLn(Buffer[Count]);
  214.      {ºá¬«¡τ¿Γß∩, ¬«úñá »«½∞º«óáΓѽ∞ óóÑñÑΓ CTRL-Z ¿½¿
  215.       »«ß½Ñ 100 ¿ΓÑαᵿ⌐}
  216.         end;
  217.         CheckRange(-10,10);
  218.       end.
  219.  
  220.      Åα«úαἼᠡᠠÇßßѼí½ÑαÑ,  αÑ὿ºπεΘá∩  »α«µÑñπαπ  CheckRange,
  221. »α¿óÑñѡᠡ¿ªÑ.
  222.      Ä¡á ñ«½ª¡á íδΓ∞ áßßÑ¼í½¿α«óá¡á ó Σá⌐½ Check.OBJ  ñ« ¬«¼»¿½∩µ¿¿
  223. »α«úαá¼¼δ Numbers. çá¼ÑΓ¿¼, τΓ« »α«µÑñπαá ¿ß»«½∞ºπÑΓ í½¿ª¡εε ¼«ñѽ∞
  224. ó맮óá, Γᬠ¬á¬ «íΩ∩ó½Ñ¡á ó »α«úαá¼¼Ñ.
  225.  
  226.      DATA SEGMENT WORD PUBLIC
  227.           EXTRN   Buffer: WORD, Count: WORD;   ;ÅÑαѼѡ¡δÑ Åá߬á½∩
  228.      DATA ENDS
  229.      CODE SEGMENT BYTE PUBLIC
  230.           ASSUME CS: CODE, DS: Buffer
  231.           EXTRN  RangeError: NEAR        ;αÑ὿º«óá¡ ó Åá߬á½Ñ
  232.           PUBLIC CheckRange              ;αÑ὿º«óá¡ ºñÑß∞
  233.      CheckRange PROC NEAR
  234.           mov   bx,sp           ;»«½πτ¿Γ∞ π¬áºáΓѽ∞ »áαá¼ÑΓα«ó
  235.           mov   ax,ss:[bx+4]    ;ºáúαπº¿Γ∞ Min
  236.           mov   dx,ss:[bx+2]    ;ºáúαπº¿Γ∞ Max
  237.           xor   bx,bx           ;«τ¿ßΓ¿Γ∞ ¿¡ñѬߠñá¡¡δσ
  238.           mov   cx,Count        ;ºáúαπº¿Γ∞ Count
  239.           jcxz  SD4             ;»α«»πßΓ¿Γ∞ Ñß½¿ 0
  240.      SD1: cmp   Buffer[BX],AX   ;ß½¿Φ¬«¼ ¼á½?
  241.           jl    SD2             ;ñá, »ÑαÑ⌐Γ¿
  242.           cmp   Buffer[BX],DX   ;ß½¿Φ¬«¼ óѽ¿¬?
  243.           jle   SD3             ;¡ÑΓ, »ÑαÑ⌐Γ¿
  244.      SD2: push  ax              ;ß«σαá¡¿Γ∞ αÑú¿ßΓα
  245.           push  bx
  246.           push  cx
  247.           push  dx
  248.           push  Buffer[BX]      ;»ÑαÑñáΓ∞ º¡áτÑ¡¿Ñ ó Åá߬á½∞
  249.           CALL  RangeError      ;óδºóáΓ∞ »α«µÑñπαπ Åá߬á½∩
  250.           pop   dx              ;ó«ßßΓá¡«ó¿Γ∞ αÑú¿ßΓαδ
  251.           pop   cx
  252.           pop   bx
  253.           pop   ax
  254.      SD3: inc   BX              ;»ÑαÑ⌐Γ¿ ¬ ß½ÑñπεΘѼπ φ½Ñ¼Ñ¡Γπ
  255.           inc   BX
  256.           loop  SD1             ;µ¿¬½ ñ½∩ ¬áªñ«ú« φ½Ñ¼Ñ¡Γá
  257.      SD4: ret                   ;ó«ºóαáΓ
  258.  
  259.      CheckRange ENDP
  260.      CODE       ENDS
  261.      END
  262.  
  263.  
  264.                     Åα¿¼Ñα ¡á Turbo Assembler.
  265.  
  266.      çñÑß∞ »αÑñßΓáó½Ñ¡á óÑαß¿∩ »αÑñδñπΘÑ⌐ »α«úαá¼¼δ  ¡á ÇßßѼí½ÑαÑ,
  267. ¬«Γ«αá∩ »«¬áºδóáÑΓ  »αÑ¿¼πΘÑßΓóá  »α¿¼Ñ¡Ñ¡¿∩  Turbo  Assembler  »α¿
  268. ßΓ䬫ó¬Ñ ß Åá߬á½Ñ¼:
  269.  
  270.      .MODEL  TPASCAL         ;¼«ñѽ∞ ¬«ñá Æπαí«-Åá߬á½∩
  271.      LOCALS  @@              ;«»αÑñѽ¿Γ∞ »αÑΣ¿¬ß ½«¬á½∞¡δσ ¼ÑΓ«¬
  272.      .DATA                   ;ßÑú¼Ñ¡Γ ñá¡¡δσ
  273.      EXTRN   Buffer: WORD, Count: WORD;      ;ÅÑαѼѡ¡δÑ Åá߬á½∩
  274.      .CODE                          ;ßÑú¼Ñ¡Γ ¬«ñá
  275.      EXTRN  RangeError: NEAR        ;αÑ὿º«óá¡ ó Åá߬á½Ñ
  276.      PUBLIC CheckRange              ;αÑ὿º«óá¡ ºñÑß∞
  277.  
  278. ChechRange   Proc NEAR Min : WORD, Max : WORD
  279.  
  280.      mov   ax,Min        ;ºáúαπº¿Γ∞ Min ó ax
  281.      mov   dx,Max        ;ºáúαπº¿Γ∞ Max ó dx
  282.      xor   bx,bx         ;«τ¿ßΓ¿Γ∞ ¿¡ñѬߠñá¡¡δσ
  283.      mov   cx,Count      ;ºáúαπº¿Γ∞ Count
  284.      jcxz  @@4           ;»α«»πßΓ¿Γ∞ Ñß½¿ 0
  285. @@1: cmp   ax,Buffer[BX] ;ß½¿Φ¬«¼ ¼á½?
  286.      jg    @@2           ;ñá, »ÑαÑ⌐Γ¿ ¡á @@2
  287.      cmp   dx,Buffer[BX] ;ß½¿Φ¬«¼ óѽ¿¬?
  288.      jge   @@3           ;¡ÑΓ, »ÑαÑ⌐Γ¿ ¡á @@3
  289. @@2: push  ax            ;ß«σαá¡¿Γ∞ αÑú¿ßΓα
  290.      push  bx
  291.      push  cx
  292.      push  dx
  293.      push  Buffer[BX]    ;»ÑαÑñáΓ∞ º¡áτÑ¡¿Ñ ó Åá߬á½∞
  294.      call  RangeError    ;óδºóáΓ∞ »α«µÑñπαπ Åá߬á½∩
  295.      pop   dx            ;ó«ßßΓá¡«ó¿Γ∞ αÑú¿ßΓαδ
  296.      pop   cx
  297.      pop   bx
  298.      pop   ax
  299. @@3: inc   BX            ;»ÑαÑ⌐Γ¿ ¬ ß½ÑñπεΘѼπ φ½Ñ¼Ñ¡Γπ
  300.      inc   BX
  301.      loop  @@1           ;µ¿¬½ ñ½∩ ¬áªñ«ú« φ½Ñ¼Ñ¡Γá
  302. @@4: ret                 ;ó«ºóαáΓ
  303.  
  304. CheckRange ENDP
  305.      END
  306.  
  307.      çá¼ÑΓ¿¼, τΓ«  .MODEL  TPASCAL  Turbo  Assembler  áóΓ«¼áΓ¿τÑ߬¿
  308. úÑ¡Ñα¿απÑΓ ¬«ñ óσ«ñá ñ« »Ñαó«⌐ ¿¡ßΓαπ¬µ¿¿ ¿ ¬«ñ óδσ«ñá ñ½∩ RET.
  309.  
  310.  
  311.                      éßΓα«Ñ¡¡δ⌐ ¼áΦ¿¡¡δ⌐ ¬«ñ.
  312.  
  313.      ä½∩ «τÑ¡∞  ¬«α«Γ¬¿σ  »α«úαá¼¼  ¡á  ÇßßѼí½ÑαÑ πñ«í¡« »α¿¼Ñ¡∩Γ∞
  314. «»ÑαáΓ«α  ¿½¿  ñ¿αÑ¬Γ¿óπ  Inline.  Ä¡¿   »«ºó«½∩εΓ   éá¼   óßΓáó¿Γ∞
  315. ¿¡ßΓαπ¬µ¿¿ ¼áΦ¿¡¡«ú« ¬«ñá »α∩¼« ó ΓѬßΓ »α«úαá¼¼δ ¿½¿ ¼«ñπ½∩ ó¼ÑßΓ«
  316. ¿ß»«½∞º«óá¡¿∩ «íΩÑ¬Γ¡«ú« Σá⌐½á.
  317.  
  318.  
  319.                          Ä»ÑαáΓ«α Inline.
  320.  
  321.      Ä»ÑαáΓ«α Inline  ß«ßΓ«¿Γ  ¿º ºáαѺÑαó¿α«óá¡¡«ú« ß½«óá Inline ¿
  322. ß½ÑñπεΘ¿σ ºá ¡¿¼ «ñ¡«ú« ¿½¿ í«½ÑÑ  φ½Ñ¼Ñ¡Γ«ó,  αáºñѽѡ¡δσ  ß½φΦἿ
  323. (/) ¿ ºá¬½ετÑ¡¡δσ ó ß¬«í¬¿:
  324.  
  325.      inline(10/$2345/Count+1/Data-OffSet);
  326.  
  327.      æ¿¡Γá¬ß¿ß «»ÑαáΓ«αá Inline:
  328.  
  329.  
  330.                     ┌──────┐   ┌─┐     ┌──────────────┐    ┌─┐
  331. «»ÑαáΓ«α Inline ───÷│inline├──÷│(├────÷│φ½Ñ¼Ñ¡Γ inline├─┬─÷│)├──÷
  332.                     └──────┘   └─┘  °  └──────────────┘ │  └─┘
  333.                                     │       ┌─┐         │
  334.                                     └───────┤/│≈────────┘
  335.                                             └─┘
  336.  
  337.  
  338.      èáªñδ⌐ φ½Ñ¼Ñ¡Γ   «»ÑαáΓ«αá   Inline   ß«ßΓ«¿Γ   ¿º  ó«º¼«ª¡«ú«
  339. π¬áºáΓѽ∩  αẼÑαá,  <  ¿½¿  >  ¿  ¬«¡ßΓá¡Γδ   ¿½¿   ¿ñÑ¡Γ¿Σ¿¬áΓ«αá
  340. »ÑαѼѡ¡«⌐  ¿ñπΘ¿¼¿  ºá  0  ¿½¿  í«½ÑÑ  π¬áºáΓѽ∩¼¿  ß¼ÑΘÑ¡¿∩  (ß¼.
  341. ß¿¡Γá¬ß¿ß  ¡¿ªÑ).  ô¬áºáΓѽ∞  ß¼ÑΘÑ¡¿∩  ß«ßΓ«¿Γ  ¿º  +  ¿½¿   -   ß
  342. ¬«¡ßΓá¡Γ«⌐.
  343.  
  344.  
  345. φ½Ñ¼Ñ¡Γ inline
  346.  │              ┌────────┐
  347.  └─┬───────────÷│ßonstant│─────────────────────────────────────÷
  348.    │       °    └────────┘                                  °
  349.    │  ┌─┐  │                                                │
  350.    ├─÷│<├──┤                                                │
  351.    │  └─┘  │                                                │
  352.    │  ┌─┐  │                                                │
  353.    ├─÷│<├──┘                                                │
  354.    │  └─┘                                                   │
  355.    │  ┌────────────────────────┐                            │
  356.    └─÷│¿ñÑ¡Γ¿Σ¿¬áΓ«α »ÑαѼѡ¡«⌐├─┬──────────────────────────┘
  357.       └────────────────────────┘ │                        °
  358.                                  │   ┌────┐  ┌─────────┐  │
  359.                                  └──÷│º¡á¬├─÷│¬«¡ßΓá¡Γá├─┬┘
  360.                                    ° └────┘  └─────────┘ │
  361.                                    └─────────────────────┘
  362.  
  363.  
  364.      èáªñδ⌐ φ½Ñ¼Ñ¡Γ «»ÑαáΓ«αá Inline úÑ¡Ñα¿απÑΓ 1 íá⌐Γ ¿½¿  1 ß½«ó«
  365. ¬«ñá.   ç¡áτÑ¡¿∩  óδτ¿ß½∩εΓß∩  ¿º  º¡áτÑ¡¿∩  »Ñαó«⌐  ¬«¡ßΓá¡Γδ  ¿½¿
  366. ß¼ÑΘÑ¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá  »ÑαѼѡ¡«⌐,  ¬  ¬«Γ«α«¼π ñ«íáó½Ñ¡«/óδτΓÑ¡«
  367. º¡áτÑ¡¿Ñ ¬áªñ«⌐ ¿º ¬«¡ßΓá¡Γ, ¬«Γ«αδÑ ß½ÑñπεΓ ºá ¡¿¼.
  368.      ¥½Ñ¼Ñ¡Γ Inline úÑ¡Ñα¿απÑΓ 1 íá⌐Γ ¬«ñá,  Ñß½¿ «¡ ß«ßΓ«¿Γ Γ«½∞¬«
  369. ¿º  ¬«¡ßΓá¡Γ  ¿  Ñß½¿  ¿σ  º¡áτÑ¡¿∩  ó¡πΓα¿  8-¿ í¿Γ«ó«ú« ñ¿á»áº«¡á
  370. (0..255).  àß½¿ º¡áτÑ¡¿Ñ óδσ«ñ¿Γ ºá 8-¿ í¿Γ«óδ⌐ ñ¿á»áº«¡,  ¿½¿ Ñß½¿
  371. φ½Ñ¼Ñ¡Γ  Inline  ßßδ½áÑΓß∩ ¬ »ÑαѼѡ¡«⌐ - úÑ¡Ñα¿απÑΓß∩ ¬«ñ ñ½¿¡«⌐ ó
  372. «ñ¡« ß½«ó« (¼Ñ¡∞Φ¿⌐ º¡áτáΘ¿⌐ íá⌐Γ ßΓ«¿Γ »Ñαóδ¼).
  373.      Ä»ÑαáΓ«αδ <  ¿  >  ¼«úπΓ  íδΓ∞  ¿ß»«½∞º«óá¡δ  ñ½∩ Γ«ú«,  τΓ«íδ
  374. »ÑαѬαδΓ∞  áóΓ«¼áΓ¿τÑ߬¿⌐  óδí«α  αẼÑαá,  «»¿ßá¡¡δ⌐  αá¡ÑÑ.  àß½¿
  375. φ½Ñ¼Ñ¡Γ  Inline  ¡áτ¿¡áÑΓß∩  ß  «»ÑαáΓ«αá  <,  Γ«½∞¬«  ¼Ñ¡∞Φ¿⌐ íá⌐Γ
  376. º¡áτÑ¡¿∩ íπñÑΓ ¬«ñ¿α«óáΓ∞ß∩,  ñáªÑ Ñß½¿ φΓ« 16-¿ í¿Γ«ó«Ñ  º¡áτÑ¡¿Ñ.
  377. àß½¿ φ½Ñ¼Ñ¡Γ Inline ¡áτ¿¡áÑΓß∩ ß «»ÑαáΓ«αá >, Γ« íπñÑΓ ¬«ñ¿α«óáΓ∞ß∩
  378. ß½«ó«, ñáªÑ Ñß½¿ ¡á¿í«½∞Φ¿⌐ íá⌐Γ αáóÑ¡ 0. ìá»α¿¼Ñα, «»ÑαáΓ«α
  379.  
  380.      Inline(<$1234/>$44);
  381.  
  382.      úÑ¡Ñα¿απÑΓ 3 íá⌐Γá ¬«ñá: $34,$44,$00.
  383.      ç¡áτÑ¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá    »ÑαѼѡ¡«⌐    ó   φ½Ñ¼Ñ¡ΓÑ   Inline
  384. »αÑñßΓáó½∩ÑΓ ß«í«⌐ ß¼ÑΘÑ¡¿Ñ áñαÑßá »ÑαѼѡ¡«⌐  ó¡πΓα¿  ÑÑ  íẫó«ú«
  385. ßÑú¼Ñ¡Γá.   üẫó«⌐  ßÑú¼Ñ¡Γ  ú½«íá½∞¡«⌐  »ÑαѼѡ¡«⌐  -  »ÑαѼѡ¡«⌐
  386. «íΩ∩ó½Ñ¡¡«⌐  ¡á  ó¡ÑΦ¡Ñ¼  πα«ó¡Ñ  ó  »α«úαἼѠ  ¿½¿   ¼«ñπ½Ñ   ¿½¿
  387. Γ¿»¿α«óá¡¡«⌐ ¬«¡ßΓá¡Γδ - φΓ« ßÑú¼Ñ¡Γ ñá¡¡δσ,  ¬ ¬«Γ«α«¼π «íαáΘáεΓß∩
  388. τÑαѺ  αÑú¿ßΓα  DS.  üẫóδ⌐   ßÑú¼Ñ¡Γ   ½«¬á½∞¡«⌐   »ÑαѼѡ¡«⌐   -
  389. »ÑαѼѡ¡«⌐,  «íΩ∩ó½Ñ¡¡«⌐  ó¡πΓα¿ ΓѬπΘÑ⌐ »«ñ»α«úαá¼¼δ - φΓ« ßÑú¼Ñ¡Γ
  390. ßΓѬá.  é φΓ«¼ ß½πτáÑ »ÑαѼѡ¡á∩ ß¼ÑΘÑ¡á «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá  BP,
  391. ¬«Γ«αδ⌐ áóΓ«¼áΓ¿τÑ߬¿ ßßδ½áÑΓß∩ ¡á ßÑú¼Ñ¡Γ ßΓѬá.
  392.  
  393.      Åα¿¼Ñτá¡¿Ñ: ÉÑú¿ßΓαδ  BP,  SP,  SS  ¿ DS ñ«½ª¡δ íδΓ∞ ß«σαá¡Ñ¡δ
  394. «»ÑαáΓ«α«¼ Inlile; óßÑ «ßΓá½∞¡δÑ αÑú¿ßΓαδ ¼«úπΓ ¿º¼Ñ¡∩Γ∞ß∩.
  395.  
  396.      æ½ÑñπεΘ¿⌐ »α¿¼Ñα «»ÑαáΓ«αá Inline úÑ¡Ñα¿απÑΓ ¼áΦ¿¡¡δ⌐  ¬«ñ ñ½∩
  397. ºá»«¼¿¡á¡¿∩  ºáñá¡¡«ú«  τ¿ß½á  ß½«ó  ñá¡¡δσ  ó ºáñá¡¡«⌐ »ÑαѼѡ¡«⌐.
  398. Åα«µÑñπαá FillWord ºá»«¼¿¡áÑΓ Count ß½«ó ó º¡áτÑ¡¿¿ Data  ó »á¼∩Γ¿,
  399. ¡áτ¿¡á∩ ß »Ñαó«ú« íá⌐Γá Dest.
  400.  
  401.      procedure FillWord(var Dest; Count, Data: Word);
  402.      begin
  403.         Inline(
  404.            $C4/$BE/Dest/       {LES DI, Dest[BP]}
  405.            $8B/$8E/Count/      {MOV CX, Count[BP]}
  406.            $8B/$86/Data/       {MOV AX, Data[BP]}
  407.            $FC/                {CLD}
  408.            $F3/$AB);           {REP STOSW}
  409.      end;
  410.  
  411.      Ä»ÑαáΓ«α Inline   ¼«ªÑΓ   íδΓ∞   ßó«í«ñ¡«   ß¼ÑΦá¡  ß  ñαπú¿¼¿
  412. «»ÑαáΓ«αἿ ó «»ÑαáΓ«α¡«⌐ τáßΓ¿ í½«¬á.
  413.  
  414.  
  415.                          ä¿αÑ¬Γ¿óá Inline.
  416.  
  417.      ä¿αÑ¬Γ¿óá Inline »«ºó«½∩ÑΓ éá¼  »¿ßáΓ∞  »α«µÑñπαδ  ¿  Σπ¡¬µ¿¿,
  418. ó¼ÑßΓ«  ¬«Γ«αδσ  óßΓáó½∩ÑΓß∩  ñá¡¡á∩  »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ ¿¡ßΓαπ¬µ¿⌐
  419. ¼áΦ¿¡¡«ú« ¬«ñá,  ó Γ«¼  ¼ÑßΓÑ,  úñÑ  «¡¿  óδºδóáεΓß∩.  Ä¡¿  »«ñ«í¡δ
  420. ¼á¬α«ßá¼  ó  ÇßßѼí½ÑαÑ.  æ¿¡Γá¬ß¿ß ñ¿αÑ¬Γ¿óδ Inline Γᬫ⌐ ªÑ ¬á¬ ¿
  421. «»ÑαáΓ«αá Inline:
  422.  
  423.  
  424.                      ┌────────────────┐
  425. ñ¿αÑ¬Γ¿óá Inline ───÷│«»ÑαáΓ«α  inline│
  426.                      └────────────────┘
  427.  
  428.      è«úñá óδºδóáÑΓß∩ «íδτ¡á∩ »α«µÑñπαá ¿½¿ Σπ¡¬µ¿∩ (ó¬½ετá∩  ¿ ΓÑ,
  429. ¬«Γ«αδÑ  ß«ñÑαªáΓ  «»ÑαáΓ«αδ  Inline),  ¬«¼»¿½∩Γ«α  úÑ¡Ñα¿απÑΓ ¬«ñ,
  430. ¬«Γ«αδ⌐  »«¼ÑΘáÑΓ  »áαá¼ÑΓαδ  (Ñß½¿  «¡¿  ÑßΓ∞)  ó  ßΓѬ  ¿   ºáΓѼ
  431. úÑ¡Ñα¿απÑΓ  ¿¡ßΓαπ¬µ¿ε  CALL  ñ½∩  ó맮óá  »α«µÑñπαδ  ¿½¿  Σπ¡¬µ¿¿.
  432. Äñ¡á¬«, ¬«úñá óδ óδºδóáÑΓÑ Inline »α«µÑñπαπ ¿½¿ Σπ¡¬µ¿ε, ¬«¼»¿½∩Γ«α
  433. ó¼ÑßΓ«  úÑ¡Ñαᵿ¿  CALL  óßΓáó½∩ÑΓ  ¬«ñ  ¿º  φΓ«⌐ ñ¿αÑ¬Γ¿óδ Inline.
  434. è«α«Γ¬¿⌐ »α¿¼Ñα ñóπσ »α«µÑñπα Inline:
  435.  
  436.      procedure DisableInterrupts; Inline($FA);      {CLI}
  437.      procedure EnableInterrupts; Inline($FB);       {STI}
  438.  
  439.      è«úñá óδºδóáÑΓß∩  DisableInterrupts - úÑ¡Ñα¿απÑΓß∩ 1 íá⌐Γ ¬«ñá
  440. - ¿¡ßΓαπ¬µ¿∩ CLI.
  441.      Åα«µÑñπαδ ¿  Σπ¡¬µ¿¿,  «íΩ∩ó½Ñ¡¡δÑ ß ñ¿αÑ¬Γ¿ó«⌐ Inline,  ¼«úπΓ
  442. ¿¼ÑΓ∞ »áαá¼ÑΓαδ;  «ñ¡á¬«,  ¬ »áαá¼ÑΓαá¼ ¡Ñ½∞º∩ «íαáΘáΓ∞ß∩ »«  ¿¼Ñ¡¿
  443. (¡«  ¬  ñαπú¿¼  »ÑαѼѡ¡δ¼  ¼«ª¡«).  Æá¬ªÑ  ¿º-ºá  Γ«ú«,  τΓ« ΓᬿÑ
  444. »α«µÑñπαδ ¿  Σπ¡¬µ¿¿  ó   ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿   ¼á¬α«,   ó   ¡¿σ   ¡ÑΓ
  445. áóΓ«¼áΓ¿τÑ߬«ú«  óσ«ñ¡«ú«  ¿  óδσ«ñ¡«ú«  ¬«ñá,  ¿  ¡Ñ  ñ«½ª¡«  íδΓ∞
  446. ¿¡ßΓαπ¬µ¿¿ ó«ºóαáΓá.
  447.      æ½ÑñπεΘá∩ Σπ¡¬µ¿∩   π¼¡«ªáÑΓ   ñóá  µÑ½δσ  º¡áτÑ¡¿∩,  ß«ºñáóá∩
  448. αѺπ½∞ΓáΓ Γ¿»á LongInt:
  449.  
  450.      function LongMul(X, Y: Integer): Longint;
  451.      Inline (
  452.          $5A/          {POP AX; POP X}
  453.          $5E/          {POP DX; POP Y}
  454.          $F7/$EA);     { IMUL DX; DX : AX = X * Y}
  455.  
  456.  
  457.      çá¼ÑΓ∞ΓÑ «ΓßπΓßΓó¿Ñ   óσ«ñ¡«ú«  ¿  óδσ«ñ¡«ú«  ¬«ñá  ¿  »α«»π߬
  458. ¿¡ßΓαπ¬µ¿¿ óδσ«ñá.  çñÑß∞ «¡¿ ¡Ñ ΓαÑíπεΓß∩,  Γᬠ¬á¬  φΓ¿  4  íá⌐Γá
  459. óßΓáó½∩εΓß∩ ó «ßΓá½∞¡«⌐ ¬«ñ »α¿ ó맮óÑ LongMul.
  460.      ä¿αÑ¬Γ¿óá Inline  »α¿¼Ñ¡∩ÑΓß∩  Γ«½∞¬«   ñ½∩   «τÑ¡∞   ¬«α«Γ¬¿σ
  461. »α«µÑñπα ¿ Σπ¡¬µ¿⌐ ( < 10 íá⌐Γ).
  462.      Æá¬ ¬á¬ Inline »α«µÑñπαδ ¿ Σπ¡¬µ¿¿ - φΓ« ¼á¬α«,  «¡¿ ¡Ñ  ¼«úπΓ
  463. ¿ß»«½∞º«óáΓ∞ß∩ ¬á¬ áαúπ¼Ñ¡Γδ «»ÑαáΓ«αá @ ¿ Σπ¡¬µ¿⌐ Addr, Ofs ¿ Seg.
  464.