          ᥬ  IBM PC.  3                             60


          
           3
          ------------------------------------------------------------
          
          ॡ 몠 ᥬ
          
          :    ᭮  ॡ   ணࠬ  몥
          ᥬ  ⠯ ᥬ஢,    믮
          ணࠬ.
          
          
          ------------------------------------------------------------
          
               2  뫮     믮 ணࠬ
            設  몥.  ᮬ   ⮬ ⨬ 㤭
          ஢  設           祭  让
          ணࠬ.  ⥫쭮,  ⮡ -  쥧 ஢
          ணࠬ  設 몥,   ᪫祭 ࠧ ""
          (४஢)   ணࠬ    몠  ᮪  ஢ 
          ਪ  ணࠬ.    ᮪  ஢  ஢
             ஢   ᥬ,      ஬  ணࠬ
           ᨬ᪨   設 
           ⥫묨      ᮢ .
             ணࠬ ᠭ ᨬ᪨  , 
          ᯮ  몥 ᥬ, ।⠢ ᮡ 室
          .      ନ஢   室     ਬ
          ணࠬ  DOS EDLIN     㣮  室騩 ࠭
          ।.  ⥬   ணࠬ ᥬ୮ ࠭
           室  ⥪ ࠭᫨   設  , 
            ꥪ⭠  ணࠬ.    ,  ணࠬ  DOS LINK
          ।      뫪    ꥪ⭮ ணࠬ,
           㧮 .
                 ॡ  ⮩ ணࠬ
            ᥬ   ⠯  ᥬ஢, 
            믮.
             
              
          ------------------------------------------------------------
          
             ᯮ짮  ਥ     ணࠬ   蠥  
          ᭮,   oᮡ  ⠬,     祭     
          ⭮.  p  ᥣ  稭    ப
          室   ᨬ  窠  ⮩ (;)   ᥬ
            ⮬ 砥,    ᨬ, 室騥 ࠢ
            ;    ਥ.  ਩   ᮤঠ
            ᨬ,  ஡.
             ਩     ப    ᫥ 
            ⮩  ப,      ᫥
          ਬ:
             
             1.     ; ப   ਥ
             2.     ADD AX,BX  ;਩   ப  
             

          
          ᥬ  IBM PC.  3                             61


             ਨ    ⮫쪮    ⨭ ᥬ-
            室     ਢ   樨 設
          , ⮬    ⢮ ਥ,
            뢠 ﭨ  䥪⨢  믮 ணࠬ.
                ᥬ  ।⠢ 묨
          㪢,    ਨ -  묨 (⮫쪮  㤮⠥
          ).
             
           
          ------------------------------------------------------------
          
             ᭮  ଠ  ஢     ᥬ  
          ᫥騩 :
             
                    [⪠]      [࠭()]
             
             ⪠ (᫨ ),     ࠭  (᫨ )
          p   ࠩ      ஡   ᨬ
          ⠡樨.  ᨬ쭠  ப - 132 ᨬ, ,
          設⢮ । ࠡ  ப   80 ᨬ
          (ᮮ⢥⢥ ਭ ࠭). ਬ ஢:
             
               ⪠        ࠭
               COUNT     DB        1    ;, ,  ࠭
                         MOV       AX,0 ;,  ࠭
             
             ⪨
             
             ⪠  몥 ᥬ  ᮤঠ  ᫥騥 ᨬ
          :
                    㪢:          A  Z   a  z
                    :          0  9
                    ᨬ:     (?)
                                   窠 (.) (⮫쪮  ᨬ)
                                    "᪮ " (@)
                                   ન (-)
                                    ($)
             
           ᨬ   ⪥     㪢  ᯥᨬ.
          ᥬ     ࠧ  묨   묨
          㪢.  ᨬ쭠    ⪨  -  31  ᨬ. ਬ
          ⮪:   COUNT,  PAGE25,  $E10.    ᯮ짮
          ⥫   ᫮ ⪨.   ॣ஢, ਬ,
          AX,  DI   AL    १ࢨ஢묨  ᯮ
          ⮫쪮  㪠  ᮮ⢥ ॣ஢.  ਬ, 
          
                              ADD  AX,BX
          
          ᥬ "",    AX    BX  ⭮    ॣࠬ.
          ,  
          
                              MOV  REGSAVE,AX
          

          
          ᥬ  IBM PC.  3                             62


          ᥬ ਬ  REGSAVE ⮫쪮    ⮬  砥, ᫨
            㤥 ।   ᥣ  .     ਫ 3
          ਢ c᮪  १ࢨ஢ ᫮ ᥬ.
          
             
             
             ᪠  㪠뢠 ᥬ  ⢨
           믮  .   ᥣ  
          (   ४⨢)   ।  ,  ࠡ  o  
          ⠭.    ᥣ      । ⢨,
          ਬ, 뫪 (MOV)  ᫮ (ADD).
             
             ࠭
             
             ᫨  ᯥ 믮塞 ⢨,  ࠭
          ।  )  砫쭮 祭     ) ,
           묨  믮 ⢨    .  ᫥饬
          ਬ   COUNTER  ।  ᥣ     
          㫥 祭:
             
                    ⪠        ࠭
                    COUNTER   DB   0    ;।  (DB)
                                        ;   㫥 祭
             
                      ࠭,   
            ࠭. ᬮਬ ᫥騥  ਬ:
             
                               ࠭     ਩
                ࠭    RET               ;
                ࠭     INC     CX        ; CX
                ࠭     ADD     AX,12     ;ਡ 12  AX
             
             ⪠,   ࠭  易⥫쭮  稭
           - । 樨   ப. , ४
           뢠       襩 y⠥
          ணࠬ.   ⮣, ਬ, । DOS EDLIN ᯥ
           ⠡ 祯  ᥬ 権.
             
          
          ------------------------------------------------------------
          
             ᥬ   ஢,     p
           ᮬ ᥬ஢  ନ஢  ⨭. 
            뢠  ᥢ   ४⨢. 
           ⮫쪮    ᥬ஢  ணࠬ  
           設  .  設⢮ ४⨢  
          ᫥  ࠧ.       24   ஡  ᠭ  
          ४⨢  ᥬ    ਢ     祬  筮
          ᮮ⢥饩 ଠ樨.    24   ᯮ짮 
          ⢥ ࠢ筨.
             
             ४⨢ ࠢ ⨭: PAGE  TITLE
             

          
          ᥬ  IBM PC.  3                             63


             ᥬ  ᮤন    ४⨢,  ࠢ ଠ⮬
           (  ⨭).   ४⨢  PAGE    TITLE 
          ᯮ짮   ணࠬ.
             
             ४⨢ PAGE.  砫 ணࠬ  㪠 
           ப,  ᯥ뢠   ࠭,  ᨬ쭮
          ⢮  ᨬ   ப.    ⮩ 楫 c㦨
          ४⨢  PAGE.  饩  ४⨢  ⠭  60
          ப  ࠭  132 ᨬ  ப:
             
                                   PAGE 60,132
             
          ⢮ ப  ࠭    ।   10 
          255,    ᨬ   ப -   60   132.  㬮砭 
          ᥬ ⠭ PAGE 66,80.
             ।,   稪 ப ⠭  60.   ⮬
          砥  ᥬ,  ᯥ⠢  60  ப,  믮 ண
              砫  ᫥饩  ࠭    㢥稢 
          ࠭    e.  ஬ ⮣  ⠢ ᥬ
          ᤥ ண   ⭮ ப, ਬ,  
          ᥣ.   ⮣ 室   ४⨢ PAGE 
          ࠭.  ᥬ ⮬᪨   ண  
          ࠡ⪥ p⨢ PAGE.
             
             ४⨢ TITLE.   ⮣,  ⮡   ࠭
          ⨭ ⠫  () ணࠬ, ᯮ
          p⨢ TITLE  ᫥饬 ଠ:
             
                                   TITLE   ⥪
             
               ⢥ ⥪ ᯮ짮   ணࠬ
          ,    室  ⠫  ᪥. ਬ,
          ᫨ ணࠬ 뢠 ASMSORT,   ᯮ짮 
            ⥫ ਩ 饩   60 ᨬ:
             
               TITLE ASMSORT - ᥬୠ ணࠬ ஢ 
             
              ᥬ ⠪  ४⨢  SUBTTL,
               祭  ணࠬ,
          ᮤঠ  ணࠬ.
             
             ४⨢ SEGMENT
             
              ᥬ  ணࠬ  ᮤঠ    ࠩ 
            ᥣ  -   ᥣ  .       ணࠬ
          ᯮ  ᥣ  ⥪     ᥣ 
           । .  cୠ ४⨢  ᠭ
          ᥣ SEGMENT  ᫥騩 ଠ:
             
                                ४⨢      ࠭
                                SEGMENT        [ࠬ]
                                   .
                                   .

          
          ᥬ  IBM PC.  3                             64


                                   .
                                ENDS
             
               ᥣ    易⥫쭮  ⢮,  
          㭨     ᮮ⢥⢮   ᮣ襭       
          ᥬ.  ४⨢  ENDS 砥   ᥣ. 
          ४⨢  SEGMENT   ENDS       .
          ४⨢  SEGMENT    ᮤঠ    ⨯  ࠬ஢,
          । ࠢ, ꥤ  .
             
          1.   ࠢ.  ࠬ । ࠭ 砫
               ᥣ.   祭  PARA,   
               ᥣ ⠭   ࠭  ࠣ.   ⮬
               砥 砫    16   ⪠, ..
                 .    nnn0.    砥  ⢨ ⮣
               ࠭ ᥬ ਭ  㬮砭 PARA.
          2.   ꥤ.     । ꥤ  
                  ᥣ     㣨  ᥣ⠬     
                 ᫥  ᥬ஢   (᭥  .  
               ᫥饬  ࠧ  "  ணࠬ").  
               ᫥騥 ⨯  ꥤ:  STACK, COMMON, PUBLIC, AT
               ࠦ      MEMORY.      ⥪  ।
               ᫥騬 ࠧ:
          
                           SEGMENT   PARA STACK
          
                ⤥쭮 ᥬ஢ ணࠬ  ꥤ
                 騪,       ᯮ짮  ⨯:
               PUBLIC,  COMMON   MEMORY.   砥, ᫨ ணࠬ 
                '   㣨  ணࠬ,   
                  饭.
          3.   .  , 祭  ,  ᯮ
                  㯯஢  ⭮⥫  ᥣ⮢ 
               :
          
                           SEGMENT   PARA   STACK   'Stack'
          
             ࠣ  ணࠬ    .  3.1.    ᫥饬 ࠧ
           ४⨢ SEGMENT   ࠧ 樨.
             
             ४⨢ PROC
             
                 ᮤন  믮塞    ணࠬ.
          ஬  ⮣    ᥣ ⠪ 砥    ᥡ   
          ᪮쪮 楤,  । ४⨢  PROC. ,
          ᮤঠ騩 ⮫쪮  楤  ᫥騩 :
             
               -ᥣ   SEGMENT   PARA
               -楤  PROC      FAR       
                              .                   
                              .                   
                              .                   
                              RET                 楤ன

          
          ᥬ  IBM PC.  3                             65


               -楤  ENDP
               -ᥣ   ENDS
             
               楤    易⥫쭮  ⢮, 
          㭨  㤮⢮ ᮣ襭     ᥬ
          .  ࠭ FAR 㪠뢠 稪 DOS,  砫 
          楤  窮 室  믮 ணࠬ.
             ४⨢  ENDP  ।  楤    ,
          筮    ४⨢ PROC.    RET 蠥
          믮 ணࠬ    砥 頥 ࠢ
           DOS.
               ᮤঠ ᪮쪮 楤 (. .7).
             
             ४⨢  ASSUME
             
               ᯮ  ॣ  SS    樨 ⥪,
          ણ  DS  樨  ᥣ   ॣ  CS 
          樨  c  .  ᥬ  室  ᮮ
          祭  ᥣ.   ⮩ 楫 㦨 ४⨢
          ASSUME, 㥬  ᥣ  ᫥騬 ࠧ:
          
               ४⨢ ࠭
               ASSUME     SS:_⥪,DS:__,CS:__
             
             ਬ,  SS:_⥪  㪠뢠,   ᥬ 
          樨஢   ᥣ  ⥪  ॣ஬  SS. ࠭
            뢠    ᫥⥫쭮.   ES
          ⠪  ⢮  ᫥ ࠭. ᫨ ணࠬ
           ᯮ ॣ ES,       㪠
          ES:NOTHING.
             
             ४⨢ END
             
              㦥 ,  ४⨢  ENDS  蠥  ᥣ, 
          ४⨢  ENDP  蠥 楤.  ४⨢ END   ᢮
          ।  蠥  ணࠬ:
             
                    ४⨢      ࠭
                    END            [_楤]
             
             ࠭   饭,  ᫨ ணࠬ  ।
            믮, ਬ, ᫨ ᥬ ⮫쪮 
           ,   ணࠬ   ᪮ 
          㣨  ()  㫥.    筮 ணࠬ   
          㫥 o࠭ ᮤন  ,  㪠   ४⨢ PROC,
          ஥ 뫮 o祭  FAR.
             
            
          ------------------------------------------------------------
          
             ᬮਬ  ᮡ  ᯮ짮     ,
               ᪮   ᥫ.    ᫥ ਬ
          ,  WORDA । ᫮  :

          
          ᥬ  IBM PC.  3                             66


             
               MOV  AX,BX     ;᫠ ᮤন BX  ॣ AX
               MOV  AX,WORDA  ;᫠ ᮤন WORDA  ॣ AX
               MOV  AX,[BX]   ;᫠ ᮤন   
                              ;   ॣ BX  ॣ AX
               MOV  AX,25     ;᫠ 祭 25  ॣ AX
               MOV  AX,[25]   ;᫠ ᮤন  ᬥ饭 25
             
                ᯮ짮  ᪮, 
          ॡ  ᫥ .
             
           
          ------------------------------------------------------------
          
               ᭮ ⨯ 㧮 ணࠬ:  EXE 
          COM. ᬮਬ ॡ  EXE-ணࠬ,  COM-ணࠬ
            ।⠢    6.  DOS   ॡ
            樠樨  ᥬ୮  EXE-ணࠬ:  1) 㪠
          ᥬ,  c ॣ  ᮮ⢥⢮
          ᥣ⠬,  2) ࠭  ⥪ , 室騩  ॣ
           DS,  ணࠬ 筥 믮, 3)   ⥪
              4)  㧨  ॣ  DS   ᥣ
          .
             室  ணࠬ    DOS ᢮   ᯮ짮
            RET.  .3.1  ॡ  樠
          樨  室  ணࠬ:
             
          1.   ASSUME -   ᥬୠ ४⨢,  ⠭
                   ᥬ  ᮮ⢥⢨    묨
               ᥣ⠬   ᥣ묨 ॣࠬ;    砥,
               CODESG  -  CS,  DATASG  -  DS  STACKSG -  SS. DATASG 
               STACKSG   ।   ⮬  ਬ,     
               ।⠢ ᫥騬 ࠧ:
          
                    STACKSG  SEGMENT  PARA  STACK  Stack  'Stack'
                    DATASG   SEGMENT  PARA  'Data'
          
               樨 ᥣ  ᥣ묨 ॣࠬ, ᥬ
               ᬮ  ।  ᬥ饭    ⤥    
                ᥣ.  ਬ,      ᥣ
                  ।  :  ࢠ  
               ᬥ饭 0,   ᫨  塠⮢ ,  
                㤥  ᬥ饭 2  ..
          
          2.   㧮筮    ।⢥ ।
                 256-⮢ (.100)  , 뢠 䨪
               ᮬ  ணࠬ  ᥣ  PSP.  ணࠬ 稪
               ᯮ ॣ DS    ⠭   砫쭮
               窨 PSP.  짮⥫᪠ ணࠬ  ࠭
                ,  ⨢   ⥪.  ,    RET
               ᯮ      DOS.
          


          
          ᥬ  IBM PC.  3                             67


          3.    ⥬  ॡ,  ⮡ ᫥饥 祭  ⥪
               﫮 㫥 ᮬ (筥, ᬥ饭).  ⮣
                SUB 頥 ॣ AX,    ⮣ 
               ॣ AX,     PUSH      祭 
               ⥪.
          
          4.   稪  DOS ⠭ ࠢ   ⥪ 
               ॣ SS   ᥣ    ॣ CS. ᪮
               ணࠬ  稪 ᯮ ॣ DS   㣨
               楫,  室  樠஢  ॣ  DS 
                 MOV,       .3.1.  ᫥饬
               ࠧ  ⮩    "室  ணࠬ.  ਬ II"
               ⠫쭮  樠 ॣ DS.
          
          ------------------------------------------------------------
          ------------------------------------------------------------
               . 3.1. 樠 EXE-ணࠬ.
          
          5.     RET  ᯥ稢  室    짮⥫᪮
               ணࠬ     DOS,  ᯮ  ⮣ ,
               ᠭ  ⥪  砫 ணࠬ   PUSH DS.
               㣨 筮 ᯮ㥬 室   INT
               20H.
          
             ,   ᫨ ਢ 樠 ணࠬ 
              ⭠  -     砨.    ணࠬ
          䠪᪨   蠣 樠樨,  ⠪  
           㡫஢ 直 ࠧ  ஢ ணࠬ.
             
            
          ------------------------------------------------------------
          
             . 3.2. 頥 ।騥 ᢥ  ⮩ 室
          ணࠬ  ᥬ.  ணࠬ ᮤন ᥣ ⥪ -
          STACKSG  ᥣ  - CODESG.
             STACKSG  ᮤন      DB  (।  ),
           । 12   ᫮ 'STACKSEG'.  ᫥
          ணࠬ  ⥪    p  ⠪  ᯮᮡ,   
          ᯮ짮   ⫠稪     ᬮ  ᥬ஢
          ணࠬ   ࠭,   ।   
           ⥪.
               CODESG  ᮤন  믮塞    ணࠬ, 
          ࢠ ४⨢ ASSUME   . ४⨢ ASSUME
          砥  ॣ SS   STACKSG  ॣ CS   CODESG.
           ⢨⥫쭮,   ४⨢  ᮮ頥 ᥬ, 
            樨   STACKSG  室  ᯮ짮   
          ॣ SS   樨  CODESG -    ॣ CS.
          ⥬ 稪  㧪 ணࠬ   ᪠  
             믮  ⠭   ⢨⥫     
          ॣ SS  CS.  ணࠬ    ᥣ , ⠪
                  ।    ,  ᮮ⢥⢥, 
          ASSUME  室 ᨣ p DS.


          
          ᥬ  IBM PC.  3                             68


             , ᫥騥  ASSUME - PUSH, SUB  PUSH 믮
          ⠭ ⢨  樠樨 ⥪ ⥪騬 ᮬ
            ॣ   DS    㫥  ᮬ.   ᪮,  筮,
          ணࠬ 믮   DOS,      ᯥ稢
              DOS  ᫥  襭  ணࠬ.  ( ⠪
          믮 ணࠬ  ⫠稪,   ᮡ 砩).
             ᫥騥     믮       ⢨,  
            p.2.1  ।饩 ,  ᬠਢ
          ⫠稪.
             
             
          ------------------------------------------------------------
          
               뢠 ⠢  ᨬ  "窠    ⮩" ।
               ﬨ.
          
              蠩    ᥣ   ४⨢  ENDS,  
               楤 -  ४⨢ ENDP,   ணࠬ - ४⨢
               END.
          
                ४⨢ ASSUME  ⠭  ᮮ⢥⢨ 
               ᥣ묨 ॣࠬ   ᥣ⮢.
          
               EXE-ணࠬ  (     COM-ணࠬ,  . .6)
               ᯥ稢    32  ᫮   ⥪, ᮡ
               ᮣ襭  樠樨 ⥪  PUSH, SUB 
               PUSH     ॣ DS  ᥣ .
          
            
          ------------------------------------------------------------
          
          3.1.   ⠢ ᥬ   
               砫  ࠭ ⨭    ண ?
          
          3.2.   ᫥  ࠢ:  ) PC_AT, ) $50,
               )  @$_Z, ) 34B7, ) AX?
          
          3.3.  祭    ᥣ⮢, ᠭ 
               ⮩ ?
          
          3.4.  ⭮  ࠧ㬥  ४⨢  END,  ᫨ 
               蠥 )  ணࠬ, ) 楤, ) ᥣ?
          
          3.5.   ࠧ    ४⨢    .
          
          3.6.  ࠧ    祭  RET    END.
          
          3.7.  ᥣ⮢ ,    ⥪     CDSEG,
               DATSEG   STKSEG  ᮮ⢥⢥. ନ ४⨢
               ASSUME.
          
          3.8.     樠樨  ⥪ ᮬ 
               DS  㫥 ᮬ.

          
