
     6.  ஡  ணࠬ஢  ࡮ ᥬ
-----------------------------------------------------------------

     ⠢ ᫥  , , 筮, 祭  㧭-
    몥 ᥬ,  ⠥ 㧭   . 
   ᭥  쭮 ࠧ,    쬠
  ᯥ⮢  ࡮  ᥬ  ணࠬ஢  몥
ᥬ.

      㤨  ⭮ ᫥騥 ⥬:

     - ४⨢ ࡮ ᥬ EQU  =,     
ᢠ  祭  ⥪⮢ ப.

     -  ப 樨 ࡮ ᥬ.

     -  ᥬ஢      ࡮  ᥬ
᪮쪨  室  䠩  ᫥饣 ᯮ짮 ⨫
TLINK      ணࠬ.

     -  ࡮ ᥬ  ⤥ 䠩  -
室    ணࠬ  ᥬ.

     - 뢠騥 䠩 ⨭ 室  ࡮  ᥬ-
.

        ணࠬ  ᥬ ⠪ -
ࠧ,       ᥬ஢ -ࠧ  ࠧ
⥫⢠.  ᬮਬ, 祬    -
,   ४⨢, 騥  . ,  ᬮਬ
  騥 訡,  筮    ணࠬ-
, ࠡ騥  ᥬ.

      ᫥ 易⥫쭮 ᬮ  ,  ,
      㡮   ᮤঠ.   ଠ
   ॡ,  ,     -
室,  㤥 ,   ᪠.


ᯮ짮 ४⨢ ᢠ
-----------------------------------------------------------------

      筥  ᬮ७ ४⨢ EQU  =   ᢠ-
  ⮪  祭    ⥪⮢ ப.  祭 
।⢮, 饥 ᤥ ணࠬ  ᥬ    -
⭮   㦨.

                             ४⨢ EQU
-----------------------------------------------------------------

     稭 ᯮ짮 ⮪   ६, ணࠬ
   権 祢.    ⨢ 砥  
  뫠      ணࠬ.    ࠢ
⥯ ,    祢, 室 ᢠ -
 祭  ⥪⮢ ப.

     ᢮ ⪥ ᫮ 祭  ⥪⮢ ப  -
 ४⨢ EQU. 뫪   ४⨢ EQU ࠭᫨
 ࠫ쭮 ࠢ. ᬮਬ ᫥騩 ࠣ  ண-
ࠬ:

             .
             .
             .
 END_OF_DATA         EQU  '!'         ; " "
 STORAGE_BUFFER_SIZE EQU  1000        ; ࠧ 
             .DATA
 StorageBuffer  DB   STORAGE_BUFFER_SIZE  DUP (?)
             .
             .
             .
             .CODE
             mov   ax,@Data
             mov   ds,ax
             sub   di,di               ; ⠭ 㪠⥫
                                       ;   祭 0
 StorageLoop:
             mov   ah,1
             int   21h                 ;  ᫥
                                       ;  
             mov   [StarageBuffer+di],al ; ࠭ ᫥
                                       ;  
             cmp   al,END_OF_DATA      ;   "
                                       ; "?
             je    DataAckquired       ; , ३ 
                                       ; ࠡ⪥ 
             inc   di                  ;  
                                       ; ⨥ 
             cmp   di,STORAGE_BUFFER_SIZE ;  ९
                                       ; ?
             jb    StorageLoop         ; , 
                                       ; ᫥ 
 ;  ९...

             .
             .
             .
 ;  稫 
 DataAcquired:
             .
             .
             .

      ४⨢ EQU  ᯮ   ।   -
⮪: STORAGE_BUFFER_SIZE  END_OF_DATA. ⪠ END_OF_DATA ࠢ-
  ᨬ "!"  ࠢ   믮    
⨨  , ⮡ ।,  ⨫    -
.  뢠   ⢥ २  ᯮ짮-
  ४⨢  ࠢ (EQU),  ⪨ ⥫쭮 
ଠ⨢,  祬  祭-⠭.  ஬  ⮣,  祭
樨:

            cmp   al,END_OF_DATA

। ⭥, 祬 祭 樨:

            cmp   al,'!'

(END_OF_DATA 砥 "_").

     ᯮ짮  ⪨  STORAGE_BUFFER_SIZE    
        ਬ  ࠢ (ᢠ).
STORAGE_BUFFER_SIZE,  ண ⠭ 祭  1000,
ᯮ      ᮧ     ࠧ஬  1000
, ⠪     ஢ન ⮣   ९.   
  뫮  ᯮ짮 ⠭ 1000,   ࠧ
 ଠ⨢, 祬 ⪠ STORAGE_BUFFER_SIZE ("_
__").

     । ⥯,   室  ࠧ    
.    ⮣   ਤ  ࠭ ⮫쪮  
४⨢ EQU, ⨬ ᠬ       ᥬ  ⥪
ணࠬ.  筮,   ⨢ 砥   ⠭ 
ணࠬ 뫮  㤭,   ⠭    ᯮ-
  ⪠   .   ⮬ 砥 ࠧ -
 (  ⮬  ⭮ ᥭ    ணࠬ  訡)
  ࠢ, 祬 ⪨  ⭨ ⠭.

     ࠭  ४⨢ ࠢ ⪨  ᠬ  ᮤঠ
⪨, ᢠ   믮  㣨 . -
ਬ:

             .
             .
             .
 TABLE_OFFSET    EQU   1000h
 INDEX_START     EQU   (TABLE_OFFSET+2)
 DICT_START      EQU   (TABLE_OFFSET+100h)
             .
             .
             .
             mov   ax,WORD PTR ]bx+INDEX_START]  ; 
                                  ;   
             .
             .
             .
             lea   si,[bx+DICT_START] ; 㪠⥫  
                                  ;  ᫮
             .
             .
             .

 ⭮ ᫥饬:

             .
             .
             .
             mov   ax,WORD PTR [bx+1000h+2]
             lea   si,[bx+1000h+100h]
             .
             .
             .

     ࠢ ⪨ 㤮 ᯮ짮  ᢠ ࠧ-
  뢠, ⠬  祩    -
 . ந㥬  砨  ⠪  ᯮ짮
४⨢ EQU  ᫥饬 ਬ:

             .
             .
             .
 DOS_INT            EQU   21h    ; 뢠  맮
                                 ; 㭪樨 DOS
 CGA_STATUS         EQU   3dah   ;  ﭨ 
                                 ; CGA
 VSYNC_MASK         EQU   00001000b ; 뤥   ﭨ
                                 ;  CGA, 㪠뢠騩,
                                 ;    
                                 ;  ࠭,  뢠
                                 ;  ("᭥ 嫮쥢")
 BIAS_SEGMENT       EQU   40h    ; ᥣ BIOS,  ஬
                                 ; ࠭ 
 EQUIPMENT_FLAG     EQU   10h    ; ᬥ饭  ᥣ BIOS
                                 ; ६ 䫠 -
                                 ;  ᯥ祭
             .
             .
             .
             mov   ah,2
             mov   di,'Z'
             int   DOS_Int       ;  ᨬ "Z"
             .
             .
             .
 ; ,   㤥  ࠭,  뢠
 ; 
             mov   dx,CGA_STATUS
 WaitForVerticalSync:
             in    al,dx         ;   CGA
             and   al,VSYNC_MASK ;  ⨪쭠
                                 ; ᨭ஭?
             jz    WaitForVerticalSync ; , 
                                 ; 
             .
             .
             .
             mov   ax,BIOS_SEGMENT
             mov   ds,ax         ; DS 㪠뢠  ᥣ
                                 ;  BIOS
             mov   bx,EQUIPMENT_FLAG ; 뫪  䫠
                                 ; ⭮ ᯥ祭
             and   BYTE PTR [bx],NOT 30h
             or    BYTE PTR [bx],20h ; ⠭ 䫠
                                 ; ⭮ ᯥ祭
                                 ; ⠪, ⮡  ࠭
                                 ; 梥⭮ ०  80
                                 ; ﬨ  ப
             .
             .
             .

     ࠢ ⪨,   ᯮ 㣨 ࠢ-
  ⪨,   ਭ樯 ᯮ짮 ᢠ  -
祭   ணࠬ. ਬ,  ᫨    ।饬
ਬ   ६    뫪  ⠡  10   
BX,   ਤ  ⮫쪮 ᢠ    TABLE_OFFSET
:

 TABLE_OFFSET    EQU   (1000h - 10)

     ᫥ 믮 ᥬ஢  INDEX_START    DICT_START
  ஥  ᮮ⢥⢨  TABLE_OFFSET, ⠪   -
 ᭮뢠  TABLE_OFFSET.

     , ᪮     祭  ࠭  ४⨢ EQU,
  易⥫묨,    , ᪮ 
㠫쭮 뤥 ࠭.

     ४⨢ EQU  ᯮ짮  ᢠ ⪥ ⥪-
⮢  ப    祭. ਬ,  ⪠ ᯮ
 ࠭ 뢮   ⥪⮢ ப:

             .
             .
             .
 EQUATED_STRING  EQU  'ਬ ⥪⮢ ப'
             .
             .
             .
 TextMessage     DB   EQUATED_STRING
             .
             .
             .
             mov   dx,OFFSET TextMessage
             mov   ah,9
             int   21h       ;  TextMessage
             .
             .
             .

     ⪨, ࠢ  ⮢ ப,  ᯮ짮
 ⢥ ࠭. ਬ:
             .
             .
             .
 REGISTER_BX     EQU   BX
             .
             .
             .
             mov   ax,REGISTER_BX
             .
             .
             .

      ᥬ  :

             mov   ax,bx

     筮   室 ࠢ     -
,     , ਬ, ᯮ짮 ࠢ ⪨
 ARG  ᢠ  ।  ⥪ ࠬࠬ  
뤥塞  ⥪ ᪮ :

;
; 뢠   ( NEAR) ணࠬ, 믮
; ᫮  楫 ࠬ஢   楫
; १. ⨯ 㭪樨:
;
; int AddThree(int I, int J, int K)
;
Temp  EQU  [bp-2]
I     EQU  [bp+4]
J     EQU  [bp+6]
K     EQU  [bp+8]
;
_AddThree  PROC
      push bp                 ; ࠭ BP 뢠饩
                              ; ணࠬ
      mov  bp,sp              ; 뫪  ࠬ ⥪
      sub  sp,2               ; 뤥   Temp
      mov  ax,I               ;  I
      add  ax,J               ; ᫨ I + J
      mov  ax,K               ;  K
      mov  Temp,ax            ; ᫨ I + J + K
      mov  sp,bp              ; ᢮ 뤥
                              ;  Temp ࠭⢮
      pop  bp                 ; ⠭ 祭 BP
                              ; 뢠饩 ணࠬ
      ret
_AddThree  ENDP

       ਬ ४⨢ EQU  ᢠ  -
  ⥪⮢  ப,     ᯮ짮  ⢥
࠭.  ⢨⥫쭮   ᯮ짮  ࠢ
⪨   樨  ४⨢,   ⮫쪮   ࠭-
,  㤭 ।⠢,  祣   .

     ⮡ ࠭ ४⨢ EQU  ᬠਢ,    ⥪⮢
ப,     ࠦ,  ᯮ짮 㣫 ᪮ (<
 >). ਬ:

 TABLE_OFFSET       EQU  1
 INDEX_START        EQU  <TABLE_OFFSET+2>

       ⪥  INDEX_START  ᢠ  ⥪⮢   ப
"TABLE_OFFSET+2",   ६   ४⨢:

 TABLE_OFFSET       EQU  1
 INDEX_START        EQU  TABLE_OFFSET+2

⪥ INDEX_START  ᢠ 祭 3 (१ ᫮ 1
+ 2).   饬 砥  ᥣ     ४⨢  EQU
࠭,  ।⠢騥 ᮡ ⥪⮢ ப,  㣫 ᪮-
.  ⨬ 㤥 ᯥ祭,   ⠪ ࠭ 砩  
᫥,  ࠦ.

     ᫨   室 㫥   ४⨢ EQU  ⪠
ࠢ  祭  ⥪⮢ ப,    
८।   㫥. ਬ, ᫥騩   ਢ
 訡:

             .
             .
             .
 X           EQU   1
             .
             .
             .
 X           EQU   101
             .
             .
             .

     ᫨  ॡ ८।   ணࠬ  ࠢ
⪨  (  ⮣  - ᮬ 稭),    㦭
㤥 ᯮ짮 ४⨢ = ( 㤨  ).



                   ।। 䨪 $
-----------------------------------------------------------------

     ᯮ,   ࡮ ᥬ  ᪮쪮 ।-
  䨪஢ (ਬ, @data).   ⮩, 
㤨⥫쭮  ।। 䨪 -  -
䨪  $,  ᥣ ⠭  ⥪饥 祭 稪
. 㣨 ᫮, 䨪 $  ᥣ  ࠢ  ⥪饬
ᬥ饭    ᥣ,   ஬ ࡮ ᥬ   
믮 ᥬ஢. $ ।⠢ ᮡ ﭭ -
  ᬥ饭, 筮 OFFSET MemVar.   ᯮ짮-
 $  ࠦ    ,  ᪠  ᯮ짮-
 ⠭.

     䨪 $ 祭  㤮  ᯮ짮    ᫥
   . ।, ਬ,    ࠢ-
 䨪 STRING_LENGTH    ப    .  
।। 䨪  $   ਤ ᤥ ᫥-
饥:

             .
             .
             .
 StringStart    LABEL  BYTE
             db 0dh,0ah,'⮢ ப'odh,0ah
 StringEnd      LABEL  BYTE
 STRING_LENGTH  EQU    (StringEnd-StringStart)
             .
             .
             .

   䨪 $   :

             .
             .
             .
 StringStart    LABEL  BYTE
             db 0dh,0ah,'⮢ ப'odh,0ah
 STRING_LENGTH  EQU    ($-StringStart)
             .
             .
             .

      ( ᫮) ᨢ ᫮  ᫨ ᫥騬  -
ࠧ:

             .
             .
             .
 WordArray   DW  90h, 25h, 0, 16h, 23h
 WORD_ARRAY_LENGTH  EQU  (($-WordArray)/2)
             .
             .
             .

     , 筮,   ⤥  , 
  ᨢ  ப  쭮 㤭⥫쭮.

       㣨    ।।  ६  -   
??DATA,  ??TIME   ??FILENAME. ??DATE ᮤন  ᥬ஢-
   ⥪⮢ ப  ଠ 01/02/88.  ??TIME  ᮤন
६  ᥬ஢   13:45:06,  ??FILENAME -  ᥬ-
㥬 䠩   祭  窨 ப  8  ᨬ-
 (ਬ, "TEST.ASM").



                              ४⨢ =
-----------------------------------------------------------------

     ४⨢ = 筠 ४⨢  EQU      ⭮襭,
஬ :   ६  ⪨, ।   ४-
⨢ EQU, ८।  ᪠ ( ⮬ 砥 ந室
訡), , ।   ४⨢ =,  ᢮-
 ८।.

     ਬ,  ᫥饬 ࠣ ४⨢ = ᯮ 
樨 ⠡  100 ந ᫠ 10:

             .
             .
             .
             .DATA
 MultipleOf10   LABEL  WORD
 TEMP        =   0
             REPT  100
             DW    TEMP
 TEMP        =   TEMP+10
             ENDM
             .
             .
             .
             shl   bx,1      ; BX - ᫮, ஥ 㦭
                             ; 㬭  10
                             ; ᤢ   㬭
                             ;  2 ( ନ஢
                             ; ⠡ ᫮)
             mov   ax,[MultipleOf10+bx] ;  ᫮
                             ; * 10
             .
             .
             .

      ᫥  ࠭ ४⨢ =   
᫮ 祭 -  ⫨稥  ४⨢ EQU   ४-
 = ⪠  ᢠ ⥪⮢ ப.




ப 樨
-----------------------------------------------------------------

       諨  ᬮ७    
権    8086 - 権  ࠡ  ப.
ப 樨 ⫨    権  
8086.   (  樨)     㢥-
稢  㬥 ॣ-㪠⥫.  ப 
    130000 ࠧ.

      ᭮   , ப 樨  ᮡ  -
   ࠡ  ⥪⮢묨 ப.   ⠪ ᯮ짮-
  ࠡ  ᨢ,  ࠬ      묨  ⨯
ப   ᫮. ப묨 ﬨ ᫥ 짮
⠬,   ⮫쪮  , ᪮ ,  ࠢ, 
 ࠡ ॥,  祬 ⭠    -
権  8086, ⠪,  MOV, INC  LOOP.

      ᬮਬ  ࠧ    㭪樮쭮  祭
㯯 ப 権: ப 樨  ६饭
 (LODS, STOS  MOVS)  ப  樨,  ᯮ㥬
 ᪠  ࠢ  (SCAS  CMPS).


ப 樨 ६饭 
-----------------------------------------------------------------

     ப 樨 ६饭    
樨 MOV,   믮  㭪権, 祬 
MOV  ࠡ ॥.  ᬮਬ  ᭠砫    LODS.
⨬,     ப  䫠 㪠 ࠢ-
  ࠢ,  ஬   ॣ-㪠-
.

                             LODS
-----------------------------------------------------------------

      LODS,  㦠   ᫮   
    (⥫),  ࠧ   樨 -
LODSB  LODSW.  LODSB 㦠 , 㥬   -
     ॣ஢  DS:SI,    ॣ  AL   㬥蠥  
㢥稢 ॣ SI ( ᨬ  ﭨ 䫠  ࠢ-
). ᫨ 䫠 ࠢ ࠢ 0 (⠭   -
樨 CLD),  ॣ SI 㢥稢,  ᫨ 䫠 ࠢ
ࠢ  1  (⠭      樨 STD),  ॣ SI
㬥蠥.   ୮  ⮫쪮    樨  LODSB,  䫠
ࠢ  ࠢ ࠢ,  ஬   -
-㪠⥫ ப 権.

     ਬ,  ᫥饬 ࠣ ணࠬ:

             .
             .
             .
             cld
             mov   si,0
             lodsb
             .
             .
             .

 LODSB 㦠 ॣ AL ᮤন    ᬥ-
 0  ᥣ   㢥稢 祭 ॣ SI  1.
 ⭮ 믮 ᫥ 権:

             .
             .
             .
             mov   si,0
             mov   al,[si]
             inc   si
             .
             .
             .

  LODSB ࠡ⠥ ⢥ ॥ (  
   ), 祬 樨:

             mov   al,[si]
             inc   si

      LODSW 筠 樨 LODSB.   ࠭
 ॣ AX ᫮, 㥬 ன ॣ஢ DS:SI,  祭
ॣ SI 㬥蠥  㢥稢  2,    1. -
, 樨:

             .
             .
             .
             std
             mov   si,0
             lodsw
             .
             .
             .

㦠 ᫮  ᬥ饭 10  ᥣ   ॣ RU, 
⥬ 祭 SI 㬥蠥  2.

                             STOS
-----------------------------------------------------------------

      STOS -   樨 LODS.   -
뢠 祭 ࠧ஬    ᫮    祩-
 ,   㪠뢠   ॣ஢  ES:DI,    ⥬
㢥稢  㬥蠥 DI.  STOSB  뢠  ,
ᮤঠ騩  ॣ AL,  祩      ES:DI,  
⥬ 㢥稢  㬥蠥 ॣ DI,  ᨬ  䫠
ࠢ. ਬ, 樨:

             .
             .
             .
             std
             mov   di,0ffffh
             mov   al,55h
             stosb
             .
             .
             .

뢠 祭 55h    ᬥ饭 0FFFFh  ᥣ, 
 㪠뢠  ॣ  ES,   ⥬ 㬥蠥 DI  祭
0FFFEh.

      STOSW  ࠡ⠥  筮,  뢠  祭
ࠧ஬   ᫮, ᮤঠ饥  ॣ AX,   ES:DI, 
⥬ 㢥稢  㬥蠥 祭 ॣ DI  2. -
, 樨:

             .
             .
             .
             cld
             mov   di,0ffeh
             mov   al,102h
             stosw
             .
             .
             .

뢠 祭 102h ࠧ஬  ᫮, ᠭ   ॣ
AX,    ᬥ饭  0FFEh  ᥣ,   㪠뢠 ॣ
ES,  ⥬ 祭 ॣ DI 㢥稢  1000h.

     樨 LODS  STOS  ४᭮  ᯮ짮  
 ஢ ஢. ਬ, ᫥ ணࠬ -
  㫥 ᨬ ப,  ᠭ    
DS:SI,  ப   ES:DI:

;
; ணࠬ  ஢ 饩 㫥 ப
;   ப
;
; :
;      DS:SI - ப,  ன 믮 ஢
;      ES:DI - ப,   믮 ஢
;
; 뢮: 
;
; 塞 ॣ: AL, SI, DI
;
CopyString        PROC
             cld                ; ᯥ 㢥祭 SI 
                                ; DI  ப 
CopyStringLoop:
             lodsb              ;  ᨬ 室
                                ; ப
             stosb              ;  ᨬ  室
                                ; ப
             cmp   al,0         ; ᫥ ᨬ ப
                                ;  0?
             jnz   CopyStringLoop ; , ࠡ ᫥-
                                ; 騩 ᨬ
             ret                ; , 믮
CopyString   ENDP

     筮   ᯮ짮 樨 LODS  STOS 
஢  ,     㫥,  ᯮ
 ⮣ 横:

             .
             .
             .
             mov   cx,ARRAY_LENGTH_IN_WORDS ; ࠧ ᨢ
             mov   si,OFFSET SourceArray    ; 室 ᨢ
             mov   ax,SEG SourceArray
             mov   dx,ax
             mov   di,OFFSET DestArray      ; 楫 ᨢ
             mov   ax,SEG DestArray
             mov   es,ax
             cld
 CopyLoop:
             lodsw
             stosw
             loop  CopyLoop
             .
             .
             .

       ६饭   ᫮     -
  㣮    訩 ᯮᮡ.   MOVS.



                             MOVS
-----------------------------------------------------------------

      MOVS 筠  LODS  STOS, ᫨  
ꥤ     .   뢠  
᫮, ᠭ   DS:SI,  ⥬ 뢠   -
  ,  ।塞 ன ॣ஢  ES:DI.    
    ।  ⮬ १ ॣ,  ⮬ ᮤন
ॣ AX  .  MOVSB  쭮 -
  樨 .   ⮫쪮  ,  -
⠥  ॥, 祬  権 LODS  STOS.  -
 樨 MOVS ᫥ ਬ ਮ⠥ :

             .
             .
             .
             mov   cx,ARRAY_LENGTH_IN_WORDS
             mov   si,OFFSET SourceArray
             mov   ax,SEG SourceArray
             mov   ds,ax
             mov   di,OFFSET DestArray
             mov   ax,SEG DestArray
             mov   es,ax
             cld
   CopyLoop:
             movsw
             loop  CopyLoop
             .
             .
             .

                    ७ ப 樨
-----------------------------------------------------------------

       ᫥ ਬ  룫廊 쭮  䥪⨢,
  뫮     樨 LOOP  ६ 
ᨢ     樨.  樨    8086
।⠢ ⠪ .  ଠ ப 権 
䨪ᮬ REP.

     䨪 ७ REP -   ,   䨪  -
樨.  䨪 樨  ࠡ ᫥饩 -
樨.  䨪 REP  ᫥饥:  㪠뢠,  ᫥
  㦭 ୮ 믮   ,   ᮤন
ॣ CX  ⠭ ࠢ 0. (᫨ ॣ CX ࠢ 0  砫
믮 樨,    믮 0 ࠧ,  㣨
᫮,  ⢨  ந.)

     ᯮ 䨪 REP,      ᫥  ਬ
樨:

   CopyLoop:
             movsw
             loop  CopyLoop

 :

        rep  movsb

       㤥 ६   65535 ᫮  (0FFFFh)
  ,  稭饩   DS:SI  , 稭 
, ।塞 ॣࠬ ES:DI.

     筮,  믮 樨 65535 ࠧ ॡ -
ࠧ    ६,  祬   믮 樨  ࠧ,
  饭  ᥩ ⮩   ॡ  ६.  
  ७  (  䨪) ப 樨 -
 ॥, 祬 믮  ப 樨. 
   祭  ᯮᮡ ⥭  , 
   ஢.

     䨪 REP  ᯮ짮  ⮫쪮  樥 MOVS,
 ⠪   ﬨ LODS  STOS ( ﬨ SCAS  CMPS
-   㤨 ).  STOS   ᯥ宬 -
  ⪨    , ਬ:

             .
             .
             .
             cld
             mov   ax,SEG WordArray
             mov   es,ax
             mov   di,OFFSET WordArray
             sub   ax,ax
             mov   cx,WORD_ARRAY_LENGTH
             rep   stosw
             .
             .
             .

      ᨢ WordArray   ﬨ.    ७
樨  LODS  ᮮ⢥饥    ਫ ਤ㬠
㤭.

     䨪 REP 뢠 ७ ⮫쪮 ப 樨.
 ⨯:

             rep  mov   ax,[bx]

  ᫠.  ⮬ 砥 䨪 REP    믮-
 :

             mov   ax,[bx]




室 㪠⥫  ࠭ ப
-----------------------------------------------------------------

     ⨬,   믮 ப 樨  㢥祭
  㬥襭  ॣ஢ SI   DI 믮 ᫥ 饭 
.  砥,  ᫥ 믮 樨 ॣ 
㪠뢠    祩,  ன ⮫쪮  믮﫮 -
,  㪠뢠  ᫥ 祩,  ன 㦭 -
.   ⢨⥫쭮  祭 㤮, ᪮  
䥪⨢ ࣠뢠 横,  ⥬,   ਢ-
   ਬ ᫥ ࠧ.     -
  ⠭, ᮡ    ப  樨
믮  .


    ப 樨
-----------------------------------------------------------------

      ࠡ ப 樨 ६饭 ,  㦥
.      ᬮਬ  ப 樨 ᬮ 
ࠢ - SCAS  CMPS.  樨 ᯮ  ᬮ-
  ࠢ  .

                             SCAS
-----------------------------------------------------------------

      SCAS ᯮ  ᬮ     ᪠
ᮢ    ᮢ     祭 ࠧ஬ 
  ᫮.    ப 樨,    SCAS
   - SCASB  SCASW.

      SCASB ࠢ ᮤন ॣ AL   -
 祭   ES:DI, ⠭  ⮬ 䫠, -
騥 १ ࠢ (  믮  樨  CMP).
   믮 樨 STOSB,   믮 樨
SCASB 㢥稢  㬥蠥 祭 ॣ DI.  -
,  ᫥饬 ࠣ ணࠬ 室 ࢮ t (筠
㪢)  ப TextString:

             .
             .
             .
             .DATA
TextString             DB   'Test text',0
TEXT_STRING_LENGTH     EQU  ($-TextString) ;  ப
             .
             .
             .
             .CODE
             .
             .
             .
             mov   ax,@Data
             mov   es,ax
             mov   di,OFFSET TextString   ; ES:DI 㪠뢠
                                          ;  砫 ப
                                          ; TextString
             mov   al,'t'                 ; ᪮ ᨬ
             mov   cx,TEXT_STRING_LENGTH  ;  ᬠ-
                                          ;  ப
             cld                          ; 㢥稢 DI
                                          ;  ᬮ
Scan_For_t_Loop:
             csasb                        ; ES:DI ᮢ
                                          ; c AL?
             je   Found_t                 ; ,  諨 "t"
             loop Scan_For_t_Loop         ; , ஢
                                          ; ᫥騩 ᨬ
;  "t"  
             .
             .
             .
;  "t" 
Fount_t:
             dec   di                     ; 뫪 ⭮ 
                                          ; ᬥ饭 "t"
             .
             .
             .

     ⨬,    ਬ ᫥ ⮣,    ᨬ
t,  ॣ  DI 㢥祭,  ࠦ 室 㪠⥫  ࠭
ப (  㦥 㦤  ࠭).    ணࠬ
ᯥ譮  믮  ᫥  SCASB, ᫥ ࠢ
DI 㢥稢, ᪮ ᫥ ⢨ ப -
樨 ⮨  㢥祭 㪠⥫ (㪠⥫).  १ -
 DI 㪠뢠   ᫥ ᨬ t   㦭 ஢,
⮡  ஢   室  ।  ᨬ 
ᤥ ⠪, ⮡  㪠뢠  t.

       ⢨ 樨 SCAS    ࠢ
᫥  ਬ   ࠣ⮬ ணࠬ,   -
짮 ப 権:

             .
             .
             .
Scan_For_t_Loop:
             cmp   es:[di],al          ; ES:DI ᮢ  AL?
             je   Found_t              ; ,  諨 "t"
             inc  di
             loop Scan_For_t_Loop      ; , ஢
                                       ; ᫥騩 ᨬ
             .
             .
             .

     ᫥ ਬ  ᮢ  筮  ਬ஬,  -
஬  ᯮ   SCASB, ⠪  SCASB 㢥稢 DI
ࠧ,   ᫥ ਬ DI  㢥稢  ᫥  樨
JE,  ⮡     䫠, ⠭ 樥
CMP.

       ᤥ  砭, 饥 ப
権  楫. ப 樨   ⠭
䫠 ⠪  ࠧ,  ⮡   ࠦ  祭 -
஢ SI, DI / CX. 樨 STOS  MOVS   -
  䫠,  樨 SCAS  CMPS  䫠 ⮫쪮
 ᮮ⢥⢨  १⮬ 믮塞  ࠢ.

     ।, 뫮  㤮 ᢥ  ।饬 ਬ 
横   樨.   㦥  ,  -
 ᤥ  REP. ,    ⥫-
  ४ 믮 横  砥 ᮢ  ᮢ-
.  ⮣    䨪 REP,  
ᯮ짮  樥 SCAS (  CMPS) - REPE  REPNE.

     䨪 REPE ( ⠪ 뢠 䨪ᮬ REPZ)  㪠-
뢠  8086,   SCAS ( CMPS) 㦭 -
   ,  ॣ CX   ⠭  ࠢ  ,  
    ந ᮢ.  䨪 REPE  ᬠ-
,  䨪,  騩 ",  ࠢ". -
, 䨪 REPNE (REPNZ) 㪠뢠  8086,  -
  SCAS  (CMPS) 㦭 ,   CX  ⠭ ࠢ 
   ந ᮢ. 䨪 REPNE  ᬠ-
,  䨪 ",   ࠢ".

     ਢ ਬ ࠣ ணࠬ,  ஬  ᪠  
ப TextString ᨬ t ᯮ   SCASB:

             .
             .
             .
             .DATA
TextString             DB   'Test text',0
TEXT_STRING_LENGTH     EQU  ($-TextString) ;  ப
             .
             .
             .
             .CODE
             .
             .
             .
             mov   ax,@Data
             mov   es,ax
             mov   di,OFFSET TextString      ; ES:DI 㪠뢠
                                             ;  砫 ப
                                             ; TextString
             mov   al,'t'                    ; ᪮ ᨬ
             mov   cx,TEXT_STRING_LENGTH     ;  ᬠ-
                                             ;  ப
             cld                             ; 㢥稢 DI
                                             ;  ᬮ
             repne csasb                     ; ᪠  ᥩ
                                             ; ப ᨬ "t"
             je   Found_t                    ; ,  諨 "t"
             loop Scan_For_t_Loop            ; , ஢
                                             ; ᫥騩 ᨬ
;  "t"  
             .
             .
             .
;  "t" 
Fount_t:
             dec   di                        ; 뫪 ⭮ 
                                             ; ᬥ饭 "t"
             .
             .
             .

        ப 樨,  SCAS  㢥稢
ॣ-㪠⥫ DI, ᫨ 䫠 ࠢ ࠢ 0 (饭  -
 樨 CLD),  㢥稢 DI,  ᫨  䫠  ࠢ
ࠢ 1 (⠭   樨 STD).

      SCASW -  ଠ 樨 SCASB  ࠡ  
᫮.  ࠢ ᮤন ॣ AX  ᮤন 
   ES:DI  㢥稢  㬥蠥 祭 ॣ DI
   믮  2,    1.  ᫥饬 ࠣ
ணࠬ  REPE SCASW ᯮ, ⮡  ᫥-
 㫥   ᨢ 楫 ᥫ ࠧ஬  ᫮:

             .
             .
             .
             mov   ax,SEG ShortIntArray
             mov   es,ax
             mov   di,OFFSET
 ShortIntArray+(ARRAY_LEN_IN_WORDS-1)*2)
                                        ; ES:DI 㪠뢠 
                                        ; 
                                        ; ᨢ ShortIntArray
             mov   cx,ARRAY_LEN_IN_WORDS ;  ᨢ  ᫮
             sub   ax,ax                ;   ᮢ
                                        ;  㫥
             std                        ;   ⭮
                                        ; ࠢ, DI
                                        ; 㬥蠥
             repe  scasw                ; 믮 , 
                                        ;   ⨬ 㫥-
                                        ;  ᫮   -
                                        ;   ࠭ ᨢ
             jne   FondNonZero
;  ᨢ  ﬨ.
             .
             .
             .
;  諨 㫥  - ந DI, ⮡ 
; 㪠뢠   .
             inc   di
             inc   di
             .
             .
             .



                             CMPS
-----------------------------------------------------------------

      CMPS   믮 ࠢ   
᫮.   믮 樨 CMPS ࠢ  祩-
  ,    ⥬ 㢥稢 ॣ SI  DI.  
CMPS  ᬠਢ,     樨  MOVS,  
  ஢    祩    ࠢ 
祩 .

      CMPSB ࠢ    DS:SI  ⮬ 
 ES:DI, ⠭ ᮮ⢥騬 ࠧ 䫠  㢥-
稢  㬥 ॣ SI  DI ( ᨬ  䫠  -
ࠢ).  AX  ⮬  .

        ப 樨,   CMPS    
  ( ࠡ  ⠬   ࠡ  ᫮),  㢥-
稢  㬥 ॣ SI  DI   㤥   
稨  䨪 REP. ਢ ਬ ࠣ ணࠬ,  -
஬ ஢ 筮  50 ⮢   ᨢ
⮢  ࠧ஬   ᫮,   ⮣ ᯮ 
CMPSW:

             .
             .
             .
             mov   si,OFFSET Array1
             mov   ax,SEG Array1
             mov   ds,ax
             mov   di,OFFSET Array2
             mov   ax,SEG Array2
             mov   es,ax
             mov   cx,50              ; ࠢ  50
                                      ; ⮢
             cd
             repe  cmpsw
             jne   ArraysAreDifferent ; ᨢ ࠧ
;  50 ⮢ ᮢ.
             .
             .
             .
;  ᨢ ⫨  ࠩ   .
ArraysAreDifferent:
             dec   si
             dec   si                 ; ᯥ, ⮡
             dec   di                 ; SI  DI 㪠뢠 
             dec   di                 ; ⫨騥
                                      ; 
             .
             .
             .



            ᯮ짮  ப  ࠭
-----------------------------------------------------------------

      ⮫쪮  ᬮ५   ( ࠡ   ⠬
   ᫮) ப 権. 㣨 ᫮,  㢨,
 ࠡ 樨 LODSB  LODSW,    ᯮ짮  -
 LODS. ᪠ ⠪ ᯮ짮 ⠪  ப
権,  ࠧ ࠭     㪠뢠.    ⮬
㦭 ᯥ  ࠭ ⠪ ࠧ, ⮡ ࡮ -
ᥬ , ࠡ⠥   ⠬   ᫮.

      ਢ ᫥騩 ਬ,  ᯮ짮
樨 MOVSB:

             .
             .
             .
             .DATA
String1      LABEL   BYTE
             db      'abcdefghi'
STRING1_LENGTH   EQU   ($-String1)
String2      DB      50  DUP (?)
             .
             .
             .
             .CODE
             mov   ax,@Data
             mov   ds,ax
             mov   es,ax
             mov   si,OFFSET String1
             mov   di,OFFSET String2
             mov   cx,STRING1_LENGTH
             cld
             rep   movs  es:[String2],[String2]
             .
             .
             .

     ᫥ ⮣,    ⢥ ࠭ 樨 MOVS  -
  String1   String2, ࡮ ᥬ ᯮ  ⢥
ࠧ  ࠧ ࠭  (  砥 ).

       ப  ᯮ짮  ࠭ -
 ᮡ . ࠭ ப 権 -   " -
騥" ࠭  ⮬ ᫥,      ஥    , 
ப   ࠡ⠥    ᮮ⢥⢨   㪠⥫ﬨ SI
/ DI. ࠭ ᯮ ⮫쪮    ࠧ  -
,    ⢨⥫쭮 㧪 㪠⥫. ﭥ  
⠪:   ᯮ  ⨯:

             mov   al,[String1]

ᬥ饭 String1 "ࠨ" אַ       設
몥, ᮮ⢥ 樨 MOV. ,   ᯮ-
 :

             lods   [String1]

  設 몥 㤥  1   ᮮ⢥⢮-
  樨  LODSB:  Stirng1    ࠨ. 
⮬ 砥   ᯥ, ⮡ ॣ DS:SI  㪠뢠
 砫 String1.

     ࠭ ப 権  ⥬ ࠭,  -
  ᯮ   ४⨢ ASSUME  ⢥ ᥣ⮢. -
४⨢ ASSUME  ⠭ ᥣ  ॣ,    
ᮮ頥  ࡮ ᥬ,   ⠭ ᥣ ॣ,
⮬ ࡮ ᥬ  믮   ஢  -
稥 訡. 筮, ࠭ ப 権  ⠭-
 ॣ,   㪠뢠 ࡮  ᥬ,    
⠭  SI / DI,  祬 ࡮ ᥬ  -
। ࠧ ࠭  믮 ஢  稥  訡.
쭥襥  㦤 ࠭ ப 権 ਢ 
ࠧ "࠭ ப 権".

      ࠧ "訡  ࠡ  ப묨 ﬨ"  
㤨    ,  騥  ᯮ짮 ப
権.



              ணࠬ, 騥  ᪮쪨 㫥
-----------------------------------------------------------------

           ⮬,    ࠭  室
⥪    ணࠬ ⠭ 㤭⥫쭮. ᯮ짮 
室  ணࠬ  䠩 ४᭮ 室   -
 ணࠬ, ⠪,  ਬ  㪮⢠,  
ணࠬ । ࠧ 室 ࠧ  ᪮쪮 䠩-
    㫥,   ᥬ ⤥쭮  
.  ᭮ २⢮ ணࠬ,    ᪮쪨
㫥, ⮨  ⮬,  ᫥ ⮣,   । -
室 ,   ॡ ॠᥬ஢ ⮫쪮  㫨,
  ,   ࠣ ⠫ 㫥 ணࠬ.
 ⮬  ࠧ  ਥ஢ ।  ᪮쪨  ப,
祬   讬 䠩.

      ணࠬ,    ᪮쪨  㫥,  祭
.   ᯥ祭 ⠪ ணࠬ ࡮ ᥬ ।ᬠ-
ਢ  ४⨢: PUBLIC, EXTRN  GLOBAL.    ᬮਬ  
।,  ᭠砫  ஠㥬 ਬ ணࠬ, -
饩   㫥, ᫥ 祣  㤥 ᥭ ⥪,  -
஬    㤥 㦤 㪠  ४⨢. ᭮ ண-
ࠬ MAIN.ASM  ᫥騩 :

             DOSSEG
             .MODEL   SMALL
             .STACK   200h
             .DATA
String1               DB  ' ',0
String2               DB  '!',0dh,0ah,'$',0
             GLOBEL   FinalString:BYTE
FinalString           DB  50 DUP (?)
             .CODE
             EXTRN    ConcatenateStrings:PROC
ProgramStart:
             mov   ax,@Data
             mov   ds,ax
             mov   ax,OFFSET String1
             mov   bx,OFFSET String2
             call  ConcatenateStrings  ; ꥤ 
                                       ; ப   ப
             mov   ah,9
             mov   dx,OFFSET FinalString
             int   21h                 ;  ப-
                                       ; १
             mov   ax,4ch
             int   21h                 ; 믮
             END   ProgramStart

       㣮  ணࠬ, SUB1.ASM:

             DOSSEG
             .MODEL   SMALL
             .DATA
             GLOBAL   FinalString:BYTE
             .CODE
;
; ணࠬ  ᭠砫  ப,
; ⥬ ,  ப FinalString
;
; :
;    DS:AX = 㪠⥫   㥬 ப
;    DS:BX = 㪠⥫   㥬 ப
;
; 뢮: 
;
; 塞 ॣ: AL, SI, DI, ES
;
             PUBLIC   ConcatenateStrings
ConcatenateStrings    PROC
             cld                   ;   אַ
                                   ; ࠢ
             mov   di,SEG FinelString
             mov   es,di
             mov   di,OFFSET FinelString ; ES:DI 㪠뢠
                                   ;  楫 ப
             mov   si,ax           ; ࢠ ப 
                                   ; ஢  StringLoop
             lodsb                 ;  ᨬ ப 1
             and   al,al           ;  0?
             jz    DoString2       ; ,  ப 1 祭
             stosb                 ; ࠭ ᨬ ⮪ 1
             jmp   StringLoop
DoString2:
             mov   si,bx           ;  ப  -
                                   ;   横 String2Loop
             lodsb                 ;  ᨬ ப 2
             stosb                 ; ࠭ ᨬ ப 2
                                   ; ( 0,  
                                   ;  ⨬)
             and   al,al           ;  0?
             jnz   String2Loop     ; , ࠡ ᫥騩
                                   ; ᨬ
             ret                   ; 믮
ConcatenateString  ENDP
             END

         ᥬ஢ ⤥쭮     -
:

       TASM main

       TASM sub1

 ⥬ ᪮   ணࠬ MAIN.EXE   :

       TLINK main+sib1

      ᪥ :

       main

ணࠬ MAIN.EXE,   , 뢮  ࠭  -
:

         !

     ,   㢨 ணࠬ,    ᪮쪨
㫥,   ⢨,  ᬮਬ  ४⨢, ᯥ-
騥 ⠪ ணࠬ஢.



                           ४⨢ PUBLIC
-----------------------------------------------------------------

     ⢨ ४⨢ PUBLIC 筮 .    㪠뢠
࡮  ᥬ,  ᮮ⢥   ⪨ 㦭 ᤥ-
 㯭묨   㣨  㫥.      ᯮ짮
ࠪ᪨   ⪨,   楤  ६ -
,  ⠪ ࠢ ⪨. ४⨢  PUBLIC  ᯥ稢
㯭  ⮪ 㣨 . ਬ:

             .
             .
             .
             .DATA
             PUBLIC   MemVar, Array1, ARRAY_LENGTH
ARRAY_LENGTH EQU      100
MemVar       DW       10
Array1       DB       ARRAY_LENGTH DUP (?)
             .
             .
             .
             .CODE
             PUBLIC   NearProc, FarProc
NearProc     PROC  NEAR
             .
             .
             .
NearProc     ENDP          ;  楤
             .
             .
             .
FarProc      LABEL PROC    ;  楤
             .
             .
             .
             END

       ࠢ ⪨, ६ ࠧ஬  ᫮,
ᨢ    楤    ⨯ 饭 㯭 㣮
,  㤥    㫥.

        ⨯ ⮪,   ᤥ  -
㯭묨.  ࠢ ⪨,  ࠢ 祭--
⠭⠬  ࠧࠬ,  ⫨묨  1  2 . ਬ, ᫥-
騥 ⪨ 饤㯭묨 ᤥ :

 LONG_VALUE  EQU   1000h
 TEXT_SYMBOL EQU   <TextString>

      ᥬ஢ ࡮ ᥬ  筮    -
 㪢, ⮬  饤㯭 ⪨ ८ࠧ  -
 ᨬ (孨 ॣ). ᫨  , ⮡    -
㯭  ⪠ ࠧ砫 㪢 孥   ॣ஢,
  ᥬ஢  㫥, ᮤঠ 뫪    -
㯭  ⪨, 㦭 ᯮ짮   ப ࡮ -
ᥬ ࠬ /ML  /MX.

     ਬ,  ࠬ /MX  /ML  㣨  ᫥-
騥  ⪨  묨:

        PUBLIC    Symbol1, SYMBOL1

      ᯮ짮  ᯥ祭  ࠧ稬    
ய 㪢  饤㯭  譨 䨪 ࠬ-
  ப /MX 㦭 ⥫쭮 㪠뢠 㪢 孥-
   ॣ஢  ४⨢ PUBLIC  EXTRN. ࡮ -
ᥬ  㯭  㣨  㫥    䨪,
 㪠뢠  ४⨢ PUBLIC  EXTRN,     -
  뫪   ८।    .
ਬ, ४⨢:

        PUBLIC  Abc
 abC    Dw

ਢ  ⮬,  饤㯭 㤥  Abc,   abC.

       䨪  ४⨢  PUBLIC    ⠪
 :  C, FORTRAN, PASCAL, BASIC, PROLOG  NOLANGUAGE (
몠).   ਢ  ⮬,    䨪  ⮣,
     ꥪ⭮ 䠩 ⠭ 饤㯭,  ⮬᪨
ਬ ࠢ ⭮ 몠. ਬ, ᫨  ᠫ:

        PUBLIC C myprog

 䨪 myprog  室  䠩  ⠭  饤㯭,
 _myproc,  ᪮    ᮣ襭  몠   । 
䨪஢ ᫥ ᨬ ન. ᯮ짮 -
䨪 몠  ४⨢ PUBLIC ६ ⬥ ⥪饥 -
 몠 (ᯮ㥬  㬮砭    ४⨢ .
MODEL). (⮡ ࠡ⠫  ।⢮,    易⥫쭮  
⢮ ४⨢ .MODEL.)

                            ४⨢ EXTRN
-----------------------------------------------------------------

      ᫥ ࠧ, ⮡  ᤥ  ⪨  MemVar,  Array1,
ARRAY_LENGTH,  NearProc   FarProc 㯭묨  㣨 㫥,
 ᯮ짮 ४⨢ PUBLIC.    ,  -
 ࠧ 㣨 㫨  뫠   ⪨?

      ⮣, ⮡ ᤥ ⪨  㣮  㯭묨 
  㫥, ᯮ ४⨢ EXTRN. ᫥ ⮣,  -
४⨢ EXTRN 㤥 ᯮ짮, ⮡ ᤥ 㯭   -
 㫥   㣮 ,     ᯮ짮
⠪,  ᫨   뫠 ।  ⥪饬  㫥.  ਢ-
 ਬ 㣮 ,  ஬ ४⨢ EXTERN ᯮ-
  뫮  饤㯭 ⪨, ᠭ  ᫥  ࠧ-
:

             .
             .
             .
             .DATA
             EXTRN   MemVar:WORD,Array1:BYTE,ARRAY_LENGTH:ABS
             .
             .
             .
             .CODE
             EXTRN  NearProc:NEAR,FarProc:FAR
             .
             .
             .
             mov   ax,[MemVar]
             mov   bx,OFFSET Array1
             mov   cx,ARRAY_LENGTH
             .
             .
             .
             call  NearProc
             .
             .
             .
             call  FarProc
             .
             .
             .

     ⨬,    ⮪ ᯮ  筮. -
  ⫨稥    ணࠬ  ᥬ, 饩  
,  ४⨢ EXTRN.

       ⪮,     ४⨢  EXTRN,  ᫥
稥   ⨯.  室 㪠뢠,  ࡮ ᥬ
 㤥          ४-
⨢ EXTRN.       ᪫祭   ᯮ㥬    譨
(external) ⮪ ⨯ ᮢ  ⨯,   ᯮ짮-
  ४⨢ LABEL. ⨬ ᫥騥 ⨯:

   ABS           - ᮫⭮ 祭;
   BYTE          - ६ () ࠧ஬  ;
   DWORD         - ६ () ࠧ஬  
                   ᫮ (4 );
   DATAPTR       - 㪠⥫     쭥 -
                   ,  ᨬ   ;

   FAR           - ⪠   쭨 ⨯ 饭
                   (室 ⢫ 㧪
                   ॣ஢ CS:IP);
   FWORD         - 6-⮢ ६ ();
   NEAR          - ⪠    ⨯ 饭
                   ( 室 㦠 ⮫쪮
                   ॣ IP);
   PROC          - ⪠ 楤 (NEAR  FAR, 
                   ᮮ⢥⢨  ४⨢ .MODEL);
   QWORD         - ६ () ࠧ஬ 
                   ⢥୮ ᫮ (8 );
     -  । 짮⥫ ⨯ STRUC;
   TBYTE         - 10-⮢ ६ ();
   UNKNOWN       -  ⨯;
   WORD          - ६ () ࠧ஬  ᫮
                   (2 ).

     ⢥  ⨯ 譨      ⨯
ABS,  ᯮ   ⪨, ।  
室 㫥   ४⨢ EQU  =.  㣨  ᫮,
 ⪠,     ।⠢ ᮡ  ⠭  
易  ᠬ   .

     祭 , ⮡  譨 ⮪    ४
⨯ , ⠪  ࡮ ᥬ 㤥 ஢   -
   ⨯ ,     㣮 ᯮᮡ -
।,      ᯥ䨪 ४⭠. ਬ, ᫨ 
砩 :

             .
             .
             .
             .CODE
             EXTRN   FarProc:NEAR
             .
             .
             .
             call   FarProc
             .
             .
             .

  㣮 㫥 ᮤন:

             .
             .
             .
             PUBLIC   FarProc
 FARPROC     PROC     FAR
             .
             .
             .
             ret
 FarProc     ENDP
             .
             .
             .

 ࡮ ᥬ  ᮮ⢥⢨  ⨯ ,   
४⨢ EXTRN,  ᣥ    饭      楤
FarProc.      । ᪠,   ⠪ ணࠬ
४⭮ ࠡ  㤥,  ᪮ FarProc  ᠬ  -
  楤ன   쭨 ⨯ 饭  蠥 ᮮ-
饩 樥 RET.

      㦥 뢠   ᫥  ࠧ,  ࡮  ᥬ
筮  (  㬮砭)    ࠧ砥  孨   ॣ
㪢, ⮬ 饤㯭 ⪨  ८ࠧ    孨  -
.   砥,   筮 ﭨ 譨 ⪨ 
஢  孥 ॣ. ᫨  室,  ⮡  
譨  ⪠  ॣ 㪢 ࠧ砫, ᯮ ࠬ
 ப /ML  /MX.

       䨪  ४⨢ EXTRN   ⠪
 :  C,  PASCAL,  BASIC,  FORTRAN, PROLOG  NOLANGUAGE
( ᫥ 砥   ᯮ).   ਢ   ⮬,
 ।  ⥬,  ⠭  ꥪ⭮ 䠩 饤㯭,  
 ⮬᪨ ਬ ࠢ 㪠  몠.  -
, ᫨  ᠫ:

       EXTRN C myprog:NEAR

 䨪 myprog  室 䠩 ८ࠧ  譨
䨪 _myprog. ᯮ짮 ᯥ䨪 몠  ४-
⨢ EXTRN  ६  ⬥ ⥪饥  몠 ( -
  㬮砭      ४⨢  .MODEL).  (⮡
ࠡ⠫  ।⢮,  ४⨢ .MODEL  易⥫쭮 
⢮.)



                           ४⨢ GLOBAL
-----------------------------------------------------------------

     ⠢ ᫥ ࠧ,   㤨,  祬  
믮    ࠡ  (ᯥ祭 ᮢ⭮ ᯮ짮
⮪ ࠧ묨 ﬨ) 㦭  ४⨢ - PUBLIC   EXTRN?  
⢨⥫쭮 ⢥ 稭 ᯮ짮  ४⨢
砥  室 ᯥ ᮢ⨬   ࠭-
  ᥬࠬ.   ࡮ ᥬ  ४⨢ GLOBAL,
   ,   ४⨢ PUBLIC  EXTRN.

     ᫨    ४⨢      -
,    ⥬  ।    (  ४⨢ DB, DW, PROC,
LABEL  㣨  ४⨢),   ⪠  ⠭  㯭
㣨    筮 ⮬,  ᫨    ४⨢
GLOBAL ᯮ짮 ४⨢ PUBLIC. ᫨  ,  㣮 -
,    쭮,  ⥬ ᯮ   -
,   ⪠ ,   ⪠, -
筮 ⮬,  ᫨       ४⨢ EXTRN.

     ᬮਬ, ਬ, ᫥騩 ࠣ:

             .
             .
             .
             .DATA
             GLOBAL   FinalCount:WORD,PromptString:BYTE
FinalCount            DW  ?
             .
             .
             .
             .CODE
             GLOBAL   DoReport:NEAR,TallyUp:FAR
TallyUp      PROC     FAR
             .
             .
             .
             call  DoReport
             .
             .
             .

      ⪨ FinalCount   TallyUp  ।,  ⮬  
⠭  饤㯭묨 ( 㣨 㫥) ⪠ (public).
⪨ PromptString  DoReport  ।, ⮬ ࠧ㬥-
,     譨 (external) ⪨,   -
㯭묨  㣨 .

     ४⨢ GLOBAL 祭  㤮  ᯮ짮,  ਬ,  
砥  䠩  (  䠩   㤨  ᫥饬 ࠧ).
।,    ⢮ ⮪,      ᤥ-
 㯭묨  ணࠬ (饩  ᪮쪨 㫥) 
㣨 㫥.  뫮 , ᫨   ᬮ । 
  ⪨  砥 䠩,  ⥬   䠩  -
 .  ᮦ,   ४⨢ PUBLIC    EXTRN  
, ⠪  ४⨢ EXTRN  㤥 ࠡ  ⮬ -
,  ஬ ।  ⪠,  ४⨢ PUBLIC   㤥
ࠡ  ⮫쪮  ⮬ 㫥,  ஬  ⪠ ।.
 ४⨢ GLOBAL ⨬   , ⮬  -
 ନ஢ 砥 䠩,   㦭 ⪨ 
묨,  ⥬   䠩    㫨.

       䨪  ४⨢ GLOBAL,    -
४⨢  PUBLIC  EXTRN,   ⠪  :  C,  FORTRAN,
PASCAL,  BASIC,  PROLOG  NOLANGUAGE ( 몠).   ਢ 
⮬,      䨪  ⮣,     ꥪ⭮
䠩  ⠭  饤㯭,  ⮬᪨  ਬ ࠢ
⭮ 몠. ਬ, ᫨  ᠫ:

         GLOBAL C myprog

 䨪 myprog  室  䠩  ⠭  饤㯭,
 _myproc,  ᪮    ᮣ襭  몠   । 
䨪஢ ᫥ ᨬ ન. ᯮ짮 -
䨪 몠  ४⨢ PUBLIC ६ ⬥ ⥪饥 -
 몠 (ᯮ㥬  㬮砭      ४⨢
.MODEL). (⮡  ࠡ⠫  ।⢮,   易⥫쭮 
⢮ ४⨢ .MODEL.)



                           砥 䠩
-----------------------------------------------------------------

      뢠 ⥫         
室  ᥬ  ᪮쪮 室 㫥.  
 ᯮ짮  ࠧ      ணࠬ  -
-  ᢠ    ப,   ᯮ짮  
ࠧ ணࠬ.  ⮬ 諮    ணࠬ-
,  ⥫쭮 ࠧ  ᪮쪮 㥬 -
 (ਬ, ணࠬ,   뢠  ),  
⠪  ணࠬ ᫨誮    㤮 㤥 ࠭  -
 䠩.  ⮬ 砥 १砩 㤮 뢠 ४-
 INCLUDE.

      ࡮ ᥬ  砥  ४⨢  INCLUDE  (-
),  砥    ⥪饬 㫥 ᥬ, -
    室 㪠 砥 䠩   稭  -
ᥬ஢  ⮣  䠩,    ᫨   ப 砥
䠩 뫨 ᠭ אַ  室 㫥.  ⨦ 
砥  䠩 ࡮ ᥬ 頥  ப, ᫥-
饩  室 㫥  ४⨢ INCLUDE,     -
ᥬ஢    ⮩ 窨.  ࠧ, ⠬,  砥
४⨢ INCLUDE, ⥪ 砥 䠩 砥  ᥬ-
஢ ⥪饣 室  ᥬ.

     ਬ, ᫨ 䠩 MAINPROG.ASM ᮤন:

             .
             .
             .
             .CODE
             mov   ax,1
             INCLUDE   INCPROG.ASM
             push  ax
             .
             .
             .

 䠩 INCPROG.ASM ᮤন:

             mov   bx,5
             add   ax,bx

 १ ᥬ஢ 䠩 MAINPROG.ASM 㤥   筮
⥭ ᥬ஢ :

             .
             .
             .
             .CODE
             mov   ax,1
             mov   bx,5
             add   ax,bx
             push  ax
             .
             .
             .

     ᪠   砥  䠩   ந
㡨,  㣨 ᫮, 砥 䠩 ⠪  ᮤঠ
४⨢ INCLUDE ( 㣨 䠩). 祭 ப -
  㦨  䠩 ⨭,  ⠪    ࡮  ᥬ
᫥      祭 ப 頥 ,  㪠뢠騩
㡨  䠩 㫥 (砥 䠩   
ந ).

     㤠 ࡮ ᥬ ,  ᪠  砥  䠩?
᫨    ࠭ ४⨢ INCLUDE, ।騬  砥
䠩, 㪠    㯠  䠩,  ࡮ ᥬ-
 㤥 ᪠ 䠩 ⮫쪮  㪠  .  ᫨   
    䠩  㪠   ᪠,   ࡮ -
ᥬ ᭠砫  䠩  ⥪饬 ⠫.  ᫨     
   䠩  ⥪饬 ⠫,    த 
⠫,   ࠬ  ப -I (᫨  㪠-
뢠). ਬ,   :

           TASM  -ic:\include testprog

 ப:

           INCLUDE    MYMACROS.ASM

( 䠩 TESTPROG.ASM) ࡮ ᥬ 㤥 ᭠砫 ᪠  -
饬  ⠫ 䠩 MYMACROS.ASM,    , 믮 
 ⠫ C:\INCLUDE. ᫨ 䠩 MYMACROS.ASM  㤥    
⠬,  ࡮ ᥬ 뢥 ᮮ饭  訡.

     ,  ᯥ䨪樨    ४⨢  INCLUDE  
㪠뢠       (\).  ᯥ稢 ᮢ-
  MASM.

     砥 䠩  ᯮ짮   ᯥ祭  -
㯭   ⥪  ப  ᠬ ࠧ 
 몥 ᥬ. 砥 䠩 ⠪ 뢠 祭 -
묨  ᮢ⭮ ᯮ짮  ࠧ  ணࠬ-
 ப ᢠ,   ⮪   ᥣ-
⮢  .  砥 䠩 室  ᥬ ᯮ-
 ।, ᪮ ⤥  㫨  室    
   ,   砥 䠩  -
⨬ ᯮ짮 ப 室  ( ⨬  ப
ᥬ).



                             ⨭
-----------------------------------------------------------------

     筮 ࡮ ᥬ ᮧ  १  ᥬ஢
⮫쪮 ꥪ  䠩  (䠩   ७ .OBJ),   ண
ᮢ   室 (.ASM) 䠩.

     ᫨  ,  ⠪ 㪠  ࡮  ᥬ,  
㦭 ᮧ 䠩 ⨭ ( ७ .LST).  ⮣  -
 ப     ⥫    (
 䠩). ਬ, ᫨ :

               TASM  hello

ᥬ 䠩 HELLO.ASM  ᮧ ꥪ  䠩  HELLO.OBJ,
  ப:


               TASM  hello,,

 䠩 ⨭ HELLO.LST.    ᫥  
ப  ᯮ짮 ᫥騥  :

               TASM  hello,hello,hello
 
               TASM  /L hello

       ⮬ 㤥  .

      ꥪ⭮ 䠩 / 䠩 ⨭    易⥫쭮
  ᮢ   室 䠩,  쭮 ।
 室    ࠧ .

     ᭮ ᮤঠ 䠩 ⨭ ⠢  ᮤঠ  -
室  䠩,   ࠧ筮 ଠ樥  १
ᥬ஢.      室  ப  ࡮  ᥬ
砥    ⨭  ᮮ⢥  設  
ᬥ饭  ப 設   ⥪饬  ᥣ.  ஬
⮣,  ࡮  ᥬ 뢮  䠩 ⨭ ⠡,  -
ন ଠ  ⪠  ᥣ, ᯮ㥬  ணࠬ-
,    祭  ⨯  ⪨  ਡ  ᥣ-
.

     ࡮ ᥬ  ⠪ (  )  ஢  
 ⮪ 室 䠩 ⠡ ४ 뫮,  ன
㪠뢠,  뫠 ।  ⪠       
뫪 (. ᠭ ࠬ  ப /C   3).

     ᬮਬ ᭠砫 ᭮  ⨭ -  ᥬ-
 設   ᬥ饭  樨.



                         ਬ 䠩 ⨭
-----------------------------------------------------------------

     ਢ ⨭ ਬ ணࠬ HELLO.ASM.

Turbo Assembler Version 2.0    06-29-90  16:21:27          Page 1

Hello.ASM

1                         DOSSEG
2 0000                    .MODEL SMALL
3 0000                    .STACK 100h
4 0100                    .DATA
5 0000  48 65 6C 6C 6F 2C 20 + Message DB 'Hello, word',13,10,12
6       77 6F 72 6C 64 0D 0A +
7       0C
8       = 000F            HELLO_MESSAGE_LENGTH EQU $-Message
9 000F                    .CODE
10 0000 B8 0000s          mov  ax,@Data
11 0003 8E D8             mov  ds,ax   ; ⠭ DS  祭
12                                     ; ᥣ 
13 0005 B4 40             mov  ah,40h  ; 㭪 DOS 뢮 
14                                     ; ன⢮
15 0007 BB 0001           mov  bx,1    ; ⠭ 㪠⥫
16                                     ; 뢮
17 000A B9 000F           mov  cx,HELLO_MESSAGE_LENGTH ; ᫮
18                                     ; 뢮 ᨬ
19 000D BA 000F           mov  dx,OFFSET Message ; 뢮
20                                     ; ப
21 001D CD 21             int  21h     ; 뢥 "Hello"
22 0012 B4 4C             mov  ah,4ch  ; 㭪 DOS 襭
23                                     ; ணࠬ
24                        END

Turbo Assembler  Version 2.0    06-29-90  16:21:27         Page 2

Symbol Table

Symbol Name                     Type       Value

??DATE                          Text       "06-29-88"
??FILENAME                      Text       "HELLO   "
??TIME                          Text       "16:21:26"
??VERSION                       Number     004A
@CODE                           Text       _TEXT
@CODESIZE                       Text       0
@CPU                            Text       0101H
@CURSEG                         Text       _TEXT
@DATA                           Text       DGROUP
@DATASIZE                       Text       0
@FILENAME                       Text       HELLO
@WODRSIZE                       Text       2
MESSAGE                         Byte       DGROUP:0000
HELLO_MESSAGE_LENGTH            Number     000F

Groups  &  Segments      Bit  Size  Align  Combine  Class

DGROUP                   Group
  STASK                  16   0100  Para   Stack    STASK
  _DATA                  16   000F  Word   Public   DATA
_TEXT                    16   0016  Word   Public   CODE

      孥   ࠭ ⨭  뢮  -
, 騩  ᨨ ࡮ ᥬ (  ண -
 ᥬ஢ 䠩),   ६ ᥬ஢  
 ࠭ ⨭.

     ⨭ ⮨   ⥩: ७ 室  
  ⠡  䨪஢ (Symbol Table). 砫 뢮 -
室  ᥬ,     䠩,  ஬  -
 室 . 室  ᥬ ᮯ஢ -
樥  設  権,   ࡮ ᥬ -
  ࠭.  訡  ।०, 㦥 
ᥬ஢,     ⨭  ।⢥    ⮩
ப,   ⨫.

     ப   ⨭  ᫥騩 ଠ:

<㡨> <_ப> <ᬥ饭> <設_> <室_>

     "㡨" 㪠뢠 ஢  砥 䠩  
ப  襬 䠩 ⨭.

     "_ப" ।⠢ ᮡ  ப 䠩 ⨭-
  (᪫  ப    ப).  ப
ᮡ   ᯮ짮 ।⢠ ࡮ ᥬ  -
樨  ४  뫮,     뫪 㪠뢠 
ப.  䠩 HELLO.LST ४⨢ DOSSEG ᮤন  ப  1
䠩 ⨭, ४⨢ .MODEL -  ப 2  ..

     ,   ப   "_ப" -   -
 ப 室 . ਬ,  ७ ப-
  祭 䠩  ப  த,    ⥪
ப    室  䠩 ⠥ ⮩ . ⮡ ॢ 
ப (ᣥ஢, ਬ,  ᮧ ४ -
),     ᮮ⢥ ப  ⨭,  ⥬
(    )    室 䠩.

     "饭" -  ᬥ饭  ⥪饬 ᥣ ( 砫) -
設  ,  㥬  ᮮ⢥饩  ப 室
. ਬ, Message 稭  ᬥ饭 0  ᥣ  -
.

     "設_" ।⠢ ᮡ ⢨⥫  ᫥-
⥫쭮 ⭠筮  祭    ᫮,   -
ᥬ  ᮮ⢥饩 室 ப ᥬ.  -
ਬ,  MOV AX,@Data 稭  ᬥ饭 0  ᥣ-
 .  ଠ ࠢ   樨 -    設
,    ᥬ ,    MOV
AX,@Data ᥬ  B8 0000s ( ⭠筮 ।⠢-
).  0B8h  -    設 몥,  㦠 
ॣ AX 祭-⠭,   0000s -  ﭭ 祭
@Data,  ஥ 㦠  AX.   MOV AX,@Data -
ᥬ    設 .

     ⨬,   䠩 ⨭ 㪠,  ᫥   MOV
AX,@Data  (ன   MOV DS,AX) -
  ᬥ饭 3  ᥣ .    ᮢ襭 -
 , ᪮  MOV AX,@Data 稭  ᬥ-
  0        3  .  設 ,  騩 
१ ᥬ஢ 樨 (8 D8)   2 ,
⮬  ᫥  稭  ᬥ饭 5.  
 䠩 ⨭,   㡥,    ⠪.

        ,  䠩 ⨭    ⮫쪮
 7  設  ( 묨 ᫥ ᨬ +),  -
㥬 ப:

Message      DB    'Hello, word',13,10,'$'

      設 ,    ᫨誮    ,
⮡ 㬥   "設_", 筮 ᥪ  -
 ᨬ +,    ⮬, ᥬ஢ ⥫-
  ,       㪠. ᫨  室 㢨 
 設 ,  ᯮ짮  ४⨢  %NOTHING  (
   ᪠ ).  㪠  ४⨢  -
⨢訩  㤥 ७  ᫥騥 ப.

     , "室_" -   室 ப -
ᥬ (  ﬨ).  ப   ᥬ-
 (ਬ, ப, ᮤঠ騥 ⮫쪮 ਨ)  -
   設 ,   "ᬥ饭"  "設_" 
⠪ ப .     ப   ᢠ-
.

     祭 0000s, ᮮ⢥饥 @Data,  ⮫쪮  "-
"  ⢨⥫쭮 祭 樨:

              mov   ax,@Data

      ந室 ⮬,  祭 ᥣ⮢  ᢠ
騪,   ࡮ ᥬ஬, ⮬ ࡮ ᥬ 
   ४⭮ 祭. ,      ᤥ
࡮  ᥬ -    ,   祭 -
 祭 ᥣ, ஥ 㤥  ᫥  騪.
  ⮬  㪢 s   㥬  樥
設 .

     筮, ᬥ饭  設 , 祭  -
樨:

             mov   dx,OFFSET Message

蠥 㪢 r,  㪠뢠,  ᬥ饭   
६頥  ᥣ  ஢  騪
 㣨 ᥣ⠬.

     ਢ  ᯨ᮪ 祭, ᯮ㥬  ࡮  -
ᥬ஬   㪠 ࠪ⨪ ᥬ஢ (⠪, 
६⨬):

-----------------------------------------------------------------
祭              祭
-----------------------------------------------------------------
   r           뢠 ⨯ ४樨 ᬥ饭 䨪஢
                㫥.

   s           뢠 ⨯ ४樨 ᥣ⮢  䨪-
               ஢   㫥.

   sr          뢠 ⨯ ४樨 ᬥ饭  ᥣ⮢ 
               䨪஢  㫥.

   e           뢠 ४ ᬥ饭  譨 -
               䨪஢.

   se          뢠 ४ 㪠⥫  譨 -
               䨪஢.

   so          뢠 ४ ⮫쪮 ᥣ.

   +           뢠,  ꥪ  祭.
-----------------------------------------------------------------

      ⨭ ꥪ⭮  祭 r, s  sr ᯮ-
   祭 ⨯ ४樨 ᬥ饭, ᥣ  㪠⥫
(ᥣ  ᬥ饭)  䨪஢ .  祭  e
뢠  ४  ᬥ饭  譨 䨪஢,  e
㪠뢠 ४ 㪠⥫ 譥 䨪.  ४
ᥣ⮢   譨 䨪஢ (砥,  s) -
筠  䨪ࠬ. ꥪ   ⠪  -
ঠ    ᫥  ⮫ ᨬ +, 㪠뢠騩,  
⥫ ꥪ ,  㦭 뢥,     -
祭.

        ⨭ ।⠢ ᮡ 稪 ஢.
  ᥬ஢  ᭮ 䠩   ⠥ .
 ᥬ஢  砥 䠩   ਭ  -
祭 1  2, 3  ..,  ᨬ  ஢  -
 砥 䠩.  ᠬ ந室  ७ -
ப.

        ,  䠩 ⨭    
設    ,  ⮢ 祭 ( ⭠-
 ),  㣨 -  祭, ࠧ஢  ᫮.   ⮬
  ।  :  ࡮ ᥬ ࠭᫨ -
設 , ।⠢騩 ᮡ 祭 ࠧ஬  ᫮  (-
ਬ, OFFSET Message, ।⠢饥 ᮡ 16-⮢ ᬥ饭),
  ᬥ饭 뢠,  祭 ࠧ஬  ᫮.  
뢠 祭 , ᪮  ⨢ 砥 ᯮ騩
  8086  ࠭ ᫮ 堭 "訩    -
" ਢ   ⮬,  冷   ᫮   
 .

     ਬ, :

              mov   ax,1234h

ᥬ  3  設 : 0B8h, 034Hh    012h  (
⠪  浪).  ᫨  ࡮  ᥬ 뢥   
  ,   㤥 , :

   B8 34 12

      ⮬  祭 ࠧ஬  ᫮ 㤥 ⠢.
࡮ ᥬ 뢮 ⠪ 設 , :

   B8 1234

 ।  ⠥.

       ᪠뢠   "ᬥ饭",  㦥  ਫ  
ᬥ饭  ⥪饬 ᥣ ⮪  ப ணࠬ. 㤠  
 㧭,    ᥣ 室 ⪠?   ⮣
㦠 ⠡ ⨭,     ᪠.




 䨪஢ ⨭
-----------------------------------------------------------------

       䠩 ⨭ 稭     "Symbol
Table"  (⠡ 䨪஢).   ⮨   ⠡-
,     뢠 ᯮ㥬  室  
⪨,   㣮  ᯮ㥬 ᥣ.

     , ᫨   , ⮡   ⨭  ஢
⠡  䨪஢,   㪠 ࡮ ᥬ, 
㦭 ஢ ⮫쪮 ७  ⨭    (  
ᤥ   ࠬ  ப /N).



                              ⮪
-----------------------------------------------------------------

      ࢮ ⠡,   뢠 ⠡楩 ⮪, ਢ-
  ᯨ᮪    ⮪ 室  ( 䠢⭮ 浪), 
⠪ ⠪  ⨯  祭. ਬ, 䠩 ⨭ HELLO.LST
ᮤন ᫥ :

 MESSAGE        BYTE        DGROUP:0000

       MESSAGE -   ⪨  䨪.  㪠-
 ய묨 㪢, ⠪  ᫨   㪠뢠 ࠬ-
  ப /MX  /ML, ࡮ ᥬ ८ࠧ  
䨪    孨  ॣ. BYTE 㪠뢠 ࠧ 
 ⮣    ,      뫠    Message
(). DGROUP:0000 -  祭 ⪨ Message, 饥, 
 ⪠ 稭  ᬥ饭  0    ᥣ    DGROUP.
(, ,  뫪  Message  ᫥ ࠧ -
祭 ᨬ r.  砥,  ⪠      ६饭
騪   㣮 ᬥ饭,   ணࠬ 믮
 㣨 ᥣ⮢  DGROUP.  ଠ    ६饭
ᥣ⮢  ᮤন  䠩  , ᮧ -
騪.)

     筮, ProgramStart ,  ⪠    ⨯
  祭 _TEXT:0000.  _TEXT ।⠢ ᮡ  ᥣ,
।    ४⨢  .CODE,  ⮬  ProgramStart
ᯮ    ࢮ     ᥣ .  ⢥⨫ 
訩 ࠭   ⮬,     ।,    
ᥣ 室  ⪠, ⠪   㪠뢠 祭-
 ᮮ⢥饣  ⠡ ⮪ ( Value).

     㣨 ᫥  ⨭ 䠩 HELLO.ASM ⪨ -  
⪨, ।। ࡮ ᥬ஬  ᯮ짮 -
饭 ४⨢ । ᥣ⮢.   ⪨ ⠭-
    祭,  ᮮ⢥騥 ⥪⮢ ப,  ᮤঠ
⠪ 祭,  _TEXT  DGROUP  (  Value  ⠡  Symbol
Table).

     ⪨     ᫥ ⨯   (.  
Type):

       ABS           DWORD           NUMBER          TBYTE
       ALIAS         FAR             QWORD           TEXT
       BYTE          NEAR            STRUCT          WORD

       㦤  砫  ,   ᢠ-
 ⪨  ࠢ   ﭭ 祭  ⥪-
⮢ ப.    祭 (Value) ⠡ ⮪ 㪠뢠
 祭 ⮪,    .  ⮪, 易  -
ᠬ  (⠪,   Message),    祭 㪠뢠
 ⪨.

      ⮪ -     ⨭,    -
ଠ   ⨯  祭  ⪨, ᯮ짮  室-
 .



                        ᥣ⮢  㯯
-----------------------------------------------------------------

     㣮 ⠡楩  ⮩  ⨭  ⠡  ᥣ-
⮢  㯯  (Groups & Segments). 㯯 ᥣ⮢, ⠪, 
DGROUP,  㪠뢠 ,   㯯,  ᪮  㯯
ᥣ⮢  ᠬ   ਡ⮢,      
ᥣ⮢. , ࠧ騥   㫥 㯯,  㪠뢠-
  ⠡ ᥣ⮢  㯯 ।⢥   -
,  ⮬  । ஡ 뢠   ਭ-
  㯯.  䠩 HELLO.LST ᥣ STACK  _DATA 
童 㯯 ᥣ⮢ DGROUP.

       ਡ,   ⠡ ᥣ⮢   㯯  
 ᥣ ਢ ᯨ᮪  5 ਡ⮢. ᫨  ᫥-
,   ⠡ 㪠뢠 ᫥騥  ਡ:  ࠧ  
(Bit),  騩 ࠧ (Size), ࠢ (Align), ⨯ -
 (Combine)   (Class). ᬮਬ       -
쭮.

       ᥣ ࠢ 16 ( ᪫祭 ᥣ⮢, -
ᥬ㥬    ४⨢  USE32    80386;  ⮬
᪠뢠   9).

      ᥣ        ⭠
. ਬ,  ᥣ STACK  ࠧ 0200h  (512  -
筮 ).

      ࠢ 뢠,    ࠭    
稭 ᥣ.  ᫥騥 ⨯ ࠢ:

   BYTE        - ᥣ  稭   ;
   DWORD       - ᥣ  稭   ,
                 ⭮ 4;
   PAGE        - ᥣ  稭   ,
                 ⭮ 256;
   PARA        - ᥣ  稭   ,
                 ⭮ 16 (ࠢ  ࠭ ᫮);
   WORD        - ᥣ  稭   ⭮
                 .

      䠩 HELLO.LST ᥣ STACK 稭  ࠭ ࠣ-
,    ᥣ  _DATA   _TEXT ࠢ  ࠭ ᫮
( ஡ ଠ  ࠢ ਢ   9).

      ஢ ।,  ᥣ  ⠪   -
   ஢   ᥣ⮬. ਬ, ᥣ
 묨   ⨯ ஢ PUBLIC  ꥤ
(⥭)      ᥣ  襣 ࠧ,  ᫨ 
ᥣ   ⨯ ஢ COMMON,    ᫨-
   騩 ᥣ (४⨥).  ஡  -
஢ ⨯  ᮢ ᥣ⮢ ᪠뢠   9.

     ,   ᥣ । 騩 ,   ஬
ਭ ᥣ (ਬ, CODE, DATA  STACK). 騪
ᯮ  ଠ  㯮冷稢 ᥣ⮢  -
   ணࠬ (.  9).



                       ४ 뫮
-----------------------------------------------------------------

      ⠡ 䨪஢ 䠩  ⨭  ਢ  
ଠ樨   ⪠, 㯯  ᥣ,   2 , -
   㪠:  । ⪨, 㯯  ᥣ 
   ᯮ. 㣨 ᫮,  ⠡ 䨪஢
 ४ 뫪  ⮪, 㯯  ᥣ⮢. -
ଠ   ४ 뫪 砥 宦 ⮪  -
᫥ ⠯ 믮 ணࠬ   ⫠.

       ᯮᮡ 㪠 ࡮ ᥬ   -
  樨   䠩 ⨭ ଠ樨  ४-
 뫪.     ࠬ  ப  /C,
ਬ:

              TASM  /c  hello,,

      ⮬  䠩 ⨭ HELLO.LST 㤥 ஢ -
ଠ    ४ 뫪. ⨬, ,  ᠬ -
 /C 祭    樨  ଠ樨    ४
뫪.   ⠪ 㪠 ࡮ ᥬ,  㦭 ᮧ-
 䠩 ⨭,    ଠ 㤥 饭.

       ࡮ ᥬ 室 樨  -
樨    ४ 뫪  ⠪    
 ப ⢥⮣ , ਬ:

              TASM  hello,hello,hello,hello
 
              TASM  hello,,,

     ।,  ᥬ 䠩 REVERSE.ASM  (.  
ணࠬ   5), 㪠뢠   ப ࠬ /C:

               TASM  /C reverse,,

     ࡮ ᥬ ᮧ ᫥騩 䠩  ⨭  (  
REVERSE.LST):

1                    DOSSEG
2                    .MODEL SMALL
3                    .STACK 100h
4                    .DATA
5     = 03EB     MAXIMUM_STRING_LENGTH  EQU  1000
6 0000 03EB*(??) StringToReverse DB MAXIMUM_STRING_LENGTH  DUP
 (?)
7 03E8 03E8*(??) ReverseString   DB MAXIMUM_STRING_LENGTH  DUP
 (?)
8                    .CODE
9                ProgramStart:
10 0000 B8 0000s     mov    ax,@Data
11 0003 8E D8        mov    dx,ax           ; ⠭ ॣ
                                              DS ⠪ ࠧ,
                                              ⮡  㪠뢠
                                               ᥣ 
13 0005 B4 3F        mov    ah,3fh          ; 㭪 DOS ⥭
                                              
14 0007  0000      mov    bx,0            ; ⥫ ⠭-
                                               
15 000A B9 03E8      mov    cx,MAXIMUM_STRING_LENGTH ; ⠭ 
16                                          ; ᨬ쭮
                                              ᫠ ᨬ
17 000D BA 0000r     mov    dx,OFFSET StringToReverse ; ࠭
18                                          ; ப
19 0010 OD 21        int    21h             ;  ப
20 0012 23 C0        and    ax,ax           ; 뫨 ⠭
                                              ᨬ?
21 0014 74 1F        jz     Done            ; , 
22 0016 8B C8        mov    cx,ax           ;  
23                                          ; ப  ॣ
                                              , 
                                               ᯮ짮,
                                               稪
24 0018 51           push   cx              ; ࠭  ⥪
                                               ப
25 0019 BB 0000r     mov    bx,OFFSET StringToReverse
26 001C BE 03E8r     mov    si,OFFSET ReverseString
27 001F 03 F1        add    si,cx
28 0021 4E           dec    si              ; 㪠뢠  
29                                          ;  ப
30                ReverseLoop:
31 0022 8A 07        mov    al,[bx]         ;  ᫥-
                                              騩 ᨬ
32 0024 88 04        mov    [si],al         ; ࠭ ᨬ
                                               ⭮
                                              浪
33 0026 43           inc    bx              ; 㪠⥫ 
                                              ᫥騩 ᨬ
34 0027 4E           dec    si              ; 㪠⥫ 
35                                          ; । 祩
                                              buffer
36 0028 E2 F8        loop   ReverseLoop     ; ६
                                              ᫥騩 ᨬ,
                                              ᫨  
37 002 59           pop    cx              ;  
                                              ப
38 002 4 40        mov    ax,40h          ; 㭪 
                                              DOS
39 002D BB 0001      mov    bx,1            ; ⥫
                                              ⠭⭮
                                              뢮
40 00030  038    mov    dx,OFFSET ReverseString ; 
                                              ப
41 0037  21            21             ;  ப
42                Done:
43 0035 B4 4C        mov    ah,4ch          ; 㭪 DOS
                                              襭
                                              ணࠬ
44 0037  21        int    21h             ; 
                                              ணࠬ
45                   END

Symbol Table

Symbol Name             Type      Value       Cref defined at #

@Code                   Text      _TEXT       #2  #8
@Curseg                 Text      _TEXT       #2  #3  #4  #8
DONE                    Near      _TEXT:0035  21  #42
MAXIMUM_STRING_LENGTH   Number    03E8        #5  6  7  15
PROGRAMSTART            Near      _TEXT:0000  #9  45
REVERSELOOP             Near      _Text:0022  #30 36
REVERSESTRING           Byte      DGROUP:03E8 #7 26 40
STRINGTOREVERSE         Byte      DGROUP:0000 #6 17 25

Groups & Segments  Bit  Size Align Combine Class  Cref defined at

DGROUP             Group                             #2 2 10
  STASK            16   0200 Para  Stack   STASK  #3
  _DATA            16   07D0 Word  Public  DATA   #2 #4
_TEXT              16   0039 Word  Public  CODE   #2 2 #8 8

      䠩 ⨭ ⠪ ᮤন ७ 室  
⠡  䨪஢.   ⠡ 䨪஢ -
   -   ४  뫮  (    
"Cref defined at").

       ४ 뫮 㪠뢠   -
 (⪨, 㯯  ᥣ)    ப  ண-
ࠬ,   뫪   䨪. ।  ப-
,    । 䨪, 㪠뢠 ᨬ #.

     ਬ,  ,   ।    ᯮ
⪠  MAXIMUM_STRING_LENGTH.    䠩 ⨭ 㪠뢠, 
 뫠 ।  ப 5. ᫨   ᬮ    ⨭
室 ,  㡥,    ⠪. (⬥⨬, -
,         ⠡   ⮪   㪠뢠,        祭
MAXIMUM_STRING_LENGTH  ।⠢ ᮡ ᫮ 038h, 筮
祭 ண 1000.)

        ४  뫮  ⪨ MAXIMUM_STRING_LENGTH
⠪ 㪠뢠,   뫪     (    ।
⪨)      ப 6,  7  15. ᫨   
 ⨭,   㢨,   ⠪.

     㦭   ,   ⠡楩 䨪஢  -
४묨  뫪  ⠡楩 䨪஢  ४
뫮   ⫨稥. 䨪,    -
,        뫮  ணࠬ,  ⠡ ⮪ 
४묨 뫪   㤥,  ᪮  ४
뫪   .  ⠪ 䨪 㪠뢠-
  筮 ⠡ 䨪஢ ( ४ 뫮).

       ४ 뫮  ᥣ 䠩 -
    ࠬ  ப /C.   㢥७
᪠,      ⨭ ४  뫮
    䨪.     室 䠩 ⠪
⨭   ஬ ࠧ.  ࡮ ᥬ ।-
७  ४⨢,  騥  ࠧ   ४-
 뫪  ࠭ ⥩ 室 䠩.

     ४⨢ %CREF ࠧ蠥 ࠧ蠥    ᫥-
 ப ⥪ ४ 뫮. ४⨢ %NOCREF 頥
 .    ४⨢ ⬥ ⢨, 㪠
    ப      ࠬ /C. ᫨ ४
뫪 ࠧ襭 -  室 㫥,   ⠡ -
䨪஢ 㪠뢠 ப,   뫨 ।  ᥣ-
, 㯯  ⪨.        ४  뫪
ਢ  ⮫쪮   ப,    뫪  ᮮ-
騥 ᥣ, 㯯  ⪨         室
䠩 ࠧ襭  ४ 뫮.

     ᬮਬ, ਬ, ᫥騩 ࠣ ணࠬ:

            .
            .
            .
            #NOCREF
 ProgrammStart    PROC                    ; ப 1
            .
            .
            .
            jmp   LoopTop                 ; ப 2
            .
            .
            .
            #CREF
 LoopTop:                                 ; ப 3
            .
            .
            .
            loop  LoopTop                 ; ப 4
            #NOCREF
            mov   ax,OFFSET ProgramStart  ; ப 5
            .
            .
            .

      ⪨ ProgramStart ப 1 㤥  㪠,    ப
। ( ᨬ #),    室  , -
 ४ 뫮 "몫祭".  ந室 ⮬, 
᫨ -  㫥  ४ 뫮 , 
 ४ 뫪 㪠뢠  ப ।  ⮪.
筮,  ப 3 㤥 㪠,  ப । ⪨
LoopTop.

     ப 4 㤥 㪠  ४ 뫪    LoopTop,
⠪      室 ᫥ ४⨢ %CREF  । ४⨢
%NOCREF. , ப 2  ४ 뫪  LoopTop 㪠-
  㤥, ⮬   室   饭 -
樨 ४ 뫮.  ⮩  稭  ४ 뫪
 ProgramStart  㤥 㪠 ப 5.

      ᮢ⨬  㣨 ᥬࠬ  ࡮  ᥬ
।ᬮ७  ४⨢  .CREF   .XCREF, ࠢ騥 樥
४ 뫮 筮 ४⨢ %CREF  %NOCREF.




ࠢ ᮤন  ଠ⮬ ⨭
-----------------------------------------------------------------

     ࡮ ᥬ ।⠢  ப   -
ࠢ 뢮  ⨭ ப 室   ଠ⮬ -
⨭  楫. ४⨢ ࠢ ⨭  ࠧ  
 ⥣ਨ:  ४⨢  ࠢ ᮤন ⨭,   -
  롨ࠥ 砥  䠩 ⨭ ଠ, 
४⨢ ࠢ ଠ⮬ ⨭,  ।騥 ଠ 䠩-
 ⨭.


४⨢ ࠢ ᮤন ⨭
-----------------------------------------------------------------

     ४⨢ ࠢ ᮤন ⨭ ࠧ   -
  祭  䠩 ⨭ ⤥ ப.  饬 砥
 ४⨢  ᯮ짮   뢮    䠩
⨭ ⮩ ଠ樨,       -
,   㬥 ꥬ 䠩 ⨭    -
  .

                       ४⨢ %LIST  %NOLIST
-----------------------------------------------------------------

     ४⨢ %LIST  %NOLIST -  ᭮ ४⨢, ࠢ-
騥 뢮 ப ⨭.   ࠧ (४⨢ %LIST) 
 (४⨢ %NOLIST) 祭 ᫥ ப ⨭-
  䠩 ⨭. ਬ,  㪠 ४⨢:

            .
            .
            .
            %NOLIST
            mov   ax,1
            %LIST
            mov   bx,2
            %NOLIST
            add   ax,bx
            .
            .
            .

 䠩 ⨭ 㤥 祭 ⮫쪮 । ப mov bx,2. 
㬮砭 롨ࠥ ४⨢ %LIST.

                       ४⨢ %COND  %NOCOND
-----------------------------------------------------------------

     ४⨢ %COND  %NOCOND   ࠧ (४⨢
%COND)   (४⨢ %NOCOND) 祭  ⨭ -
 ᫮ ᥬ஢  㤮⢮७ ᫮.  -
⨭  ⠪   筮 ( 㬮砭) .  ਬ,
 稨 ४⨢:

       .
       .
       .
     %CONDS
     IFE IS8086
       shl ax,7
     ELSE
       mov cl,7
       shl ax,cl
     ENDIF
       .
       .
       .

 䠩 ⨭  饭  ᫮     ४-
⨢ ᫮ ᥬ஢,   ⮫쪮    ᫮
ᥬ஢,   ६ ࠭樨  ⨭  -
祭.


४⨢ %INCL  %NOINCL
-----------------------------------------------------------------

     ४⨢ %INCL  %NOINCL   ࠧ (४⨢
%INCL)   (%NOINCL) 뢮  ⨭ ப, 砥
 㣨 䠩  ४⨢ INCLUDE.   㬮砭 뢮  -
⨭ 砥 ⥪ ࠧ襭. ਬ,  ४⨢:

            .
            .
            .
            %NOINCL
            INCLUDE   HEADER.ASM
            %INCL
            INCLUDE   INIT.ASM
            .
            .
            .

ப, 砥  䠩 HEADER.ASM,   饭   䠩
⨭,    ப  䠩 INIT.ASM -  (  ⨭
 㪠  ४⨢ INCLUDE).

                       ४⨢ %MACS  %NOMACS
-----------------------------------------------------------------

     ४⨢ %MACS  %NOMACS   ࠧ (४⨢
%MACS)     (४⨢  %NOMACS)  祭   ⨭
⥪ ७. ⨭ ७ 筮 -
. ਬ,  १ ᥬ஢ 室 :

            .
            .
            .
 MAKE_BYTE  MACRO  VALUE
            DB     VALUE
            ENDM
            .
            .
            .
            %NOMACS
            MAKE_BYTE 1
            %MACS
            MAKE_BYTE 1
            .
            .
            .

⥪,  㥬       ७    ப
MAKE_BYTE,  DB  1,    䠩 ⨭ 祭  㤥 ( 
४⨢ MACRO  祭  䠩 ⨭).

                       ४⨢ %CTLS  %NOCTLS
-----------------------------------------------------------------

     ४⨢ %CTLS  %NOCTLS     ࠧ  (%CTLS)
  (४⨢ %NOCTLS) 祭  ⨭  ᠬ  -
ࠢ ४⨢.   㬮砭 祭  ⨭ ࠢ
४⨢ 饭. ਬ,  १ 믮 ४⨢:

            .
            .
            .
            %NOCTLS
            %NOINCL
            %CTLS
            %NOMACS
            .
            .
            .

४⨢ ࠢ ⨭ %NOINCL  ⨭ 祭   -
,  ४⨢ %NOMACS - 㤥.

     ४⨢ %UREF  %NOUREF   ࠧ  -
  祭   ⠡ 䨪஢ ⨭ 䨪-
஢,    뫮 (㣨 ᫮, 䨪஢, -
 ।,   ᯮ).  㬮砭 祭 
⨭ ⠪ 䨪஢ ࠧ襭. ⮡  ४⨢ -
⢮, 㦭  ᮧ ⨭ ४ 뫮.

     ४⨢ %SYMS  %NOSYMS   ࠧ  -
  祭  䠩 ⨭ ⠡ 䨪஢.  㬮-
砭 祭  ⨭ ⠪ ⠡ (  㦥 ୮  -
⨫) ࠧ襭.



                ४⨢ ࠢ ଠ⮬ ⨭
-----------------------------------------------------------------

     ४⨢ ࠢ ଠ⮬ ⨭  ଠ 䠩
⨭.    ४⨢   ᯮ짮  樨 䠩
⨭ ⠪ ଠ,    ࠨ.

     ४⨢ %TITLE  , 뢮  孥 
  ࠭ ७ ⨭ 室 .  
ணࠬ   ⮫쪮  .  ४⨢  %SUBTTL
  ,   뢮   
 ࠭ ⨭.  ணࠬ ᫮    
  . ਬ, ᫨  室 㫥 SPACEWAR.ASM ᮤ-
 ४⨢:

            .
            .
            .
            %TITLE  'ணࠬ                '
            %SUBTTL 'ணࠬ ࠢ樮 䥪⮢'
            .
            .
            .

   ࠭ ७ ⨭ 室   
ᮤঠ ᫥騥 ப:

Turbo Assembler  Version 2.0    06-29-90  16:21:27         Page 1
SPACEWAR.ASM
ணࠬ                
ணࠬ ࠢ樮 䥪⮢

     ४⨢ %NEWPAGE 㪠뢠 ࡮ ᥬ,     䠩
⨭ 㦭   ࠭.

     ४⨢ %TRUNC 㪠뢠 ࡮ ᥬ,  㦭  -
  ,  ॢ騥  ᨬ  . ४⨢ %NOTRUNC
㪠뢠,  ⠪  㦭 ७   ᫥  ப.
 㬮砭   ᥪ.

     ४⨢ %PAGESIZE  ⨪ (᫮ ப)   -
ਧ⠫  (᫮ 権) ࠧ ࠭ ⨭, -
 ࡮ ᥬ஬. ਬ, ४⨢:

        %PAGESIZE  66,132

㪠뢠 ࡮ ᥬ,  㦭 ᮧ ࠭ ⨭
  ࠧ஬ 66 ப  ࠭  132 樨  ப. ⬥⨬,
 ४⨢ %PAGESIZE  뫠   ਭ    
ࠧ  ࠭,  ⮬ ।  ⨭   ᠬ
⠭  ࠬ  ਭ,  ⥬  ᯮ짮   ४⨢
%PAGESIZE  樨 ࡮ ᥬ஬ ࠭, ࠧ 
ᮢ  ⥬ ࠧࠬ,   ⠭  ਭ.




४⨢  ࠧ 
-----------------------------------------------------------------

     ஬   ७ ⨭ 室  -
ࠢ  ४⨢.  ଠ ப   ⨭
 :

<㡨> <_ப> <ᬥ饭> <設_> <室_>

          뢠 ࠭,     -
  "㡨", ஥ 㪠뢠,   ⥪饩 ப
㡨  ப  砥 䠩.  ਬ,
᫨  ப  ப,  ᠬ -
  㣮 ப,   "㡨" 㤥  -
祭 2.

       ᨬ  "㡨"    ४⨢  %DEPTH.
४⨢  %LINUM      ᨬ   "_ப".
४⨢ %PCNT । ࠧ  "ᬥ饭". ४⨢ %BIN
। 稭  "設_". , ४⨢ %TEXT
   .

                    ४⨢ %PUSHLCTL  %POPLCTL
-----------------------------------------------------------------

      , , ॡ   ६  ⥪饥
ﭨ ࠢ ⨭,  ⥬ ⠭ . -
, ⮡   ⨭   ⠡ ,  -
ॡ  ࠧ  ७    ப   ࠧ
,      楫 ⫠ ࠧ  祭  
⨭    ⨯ ப. ᫥ ⮣,    ﭨ
ࠢ ⨭, 뫮   祭      
ࠧ  ⠭ ࠢ騥 ࠬ   । ࠭
祭, ᮡ, ᫨  祭   砥 䠩-
   - 쭥  室 .

      ࠢ ⠪ 樥  ࡮ ᥬ ।ᬮ-
७  ४⨢ %PUSHLCTL  %POPLCTL. ४⨢ %PUSHLCTL 
⥪饥 ﭨ ࠢ ⨭  ७ ⥪,   -
४⨢ %POPLCTL    ⥪ ( ४⨢  -
ᨬ 16 ஢).  ४⨢ ⮫쪮 ࠭   ⠭-
  ﭨ ࠢ ⨭,    ࠧ襭
 饭 (筮 ४⨢ %TRUNC  %NOTRUNC),   -
  ᫮  㬥⮢.  ਬ,   ᫥饬 室 
ﭨ  ࠢ  ⨭   ᫥   믮   ४⨢
%POPLCTL  ,   । 믮 ४⨢ %PUCHLCTL:

            .
            .
            .
            %LIST
            %TRUNC
            %PUSHLCTL
            %NOLIST
            %NOTRUNC
            %NEWPAGE
            .
            .
            .
            %POPLCTL
            .
            .
            .


㣨 ४⨢ ࠢ ⨭
-----------------------------------------------------------------

     ⮡ ᯥ ᮢ⨬    㣨  ᥬࠬ,  
࡮  ᥬ ।ᬮ७  㣨 ४⨢ ࠢ-
 ⨭.    ᥡ ४⨢  TITLT,  SUBTTTL,
PAGE,  .LST,  .XLST,  .LFCOND,  .SFCOND,  .TFCOND, .LALL, .SALL 
.XALL. (஡ ᠭ  ४⨢ ਢ      2
"ࠢ筮 㪮⢠").



               뢮 ᮮ饭  ६ ᥬ஢
-----------------------------------------------------------------

      ࡮ ᥬ ।ᬮ७  ४⨢,  騥
뢮  ப  ࠭ ᯫ  ६ ᥬ஢ (࠭-
樨).  ४⨢  ᯮ짮  뢮 ଠ樨 
室  ᥬ஢,  ⮡      ।,  
ணࠬ 㦥 ࠭᫨஢   ⮬,  ᥬ ⨣ -
।  室 .

     ४⨢ DISPLAY 뢮 祭   窨  ப  
࠭.  ४⨢  %OUT 뢮  ࠭ ப,  祭 
窨. ਬ,  १ 믮 ᫥ ४⨢:

            .
            .
            .
            DISPLAY  '뢥  ४⨢ DISPLAY'
            %OUT      뢥  ४⨢ OUT
            .
            .
            .

 ࠭ 뢥 ᮮ饭:

            뢥  ४⨢ DISPLAY
            뢥  ४⨢ OUT

                ᫮ ᥬ஢ 室 
-----------------------------------------------------------------

     ⠭ ,   ,    १砩  㤮
  室   ᥬ,  १ ࠭樨
ண 砥 ᪮쪮 ࠧ ᨩ ணࠬ.  -
,   ணࠬ  ⥫쭮   ᨨ, 
  ᯮ ⠭ 樨   8086,  
㣠 - ७  権 ஢ 80186  (80286).
(筮,   ⮬ 砥  ᯮ짮   室  
(  ᨨ ᢮),     , ਬ, ,
 ⮬ 砥 뫮  祭 㤮).

     ࡮ ᥬ ।⠢  ⠪  (  
). ᬮਬ, ਬ, ᫥騩 ࠣ ணࠬ:

            .
            .
            .
   IF      IS8086
            mov   ax,3dah
            push  ax
   ELSE
            push  3dah
   ENDIF
            call  GetAdapterStatus
            .
            .
            .

     ᫨ 祭 ⪨ IS8086 㤥 㫥,  祭  -
ࠬ  3dah      ⥪ ⠯ (  蠣),  
ॡ   8086. ᫨ , , IS8086   㫥-
  祭,  祭 ࠬ   ⥪ ।-
,   ᯥ樠쭮  樨 PUSH,  
ᯮ짮  ࠡ   80186   80286  (    
 8086).

     ࡮ ᥬ ন  ⢮  ४⨢  ᫮
ᥬ஢,   ⠪    ᪮쪨 ᯮ-
 ஢ 訡 ᥬ஢.  ᬮਬ ᭠-
砫 ४⨢ ᫮ ᥬ஢.


४⨢ ᫮ ᥬ஢
-----------------------------------------------------------------

     ⥩訬  ᠬ묨 묨 ४⨢ ᫮ ᥬ-
஢  ४⨢  IF   ENDIF,    ᯮ
ᮢ⭮  ४⨢ ENDIF  (易⥫쭮) ELSE.  ⠪
ᯮ  ४⨢ IFDEF  IFNDEF,  ४⨢ ᫮ -
ᥬ஢ IFB, IFNB, IFIDN, IFDIF, IF1  IF2  ⮫쪮 
⤥ .



                          ४⨢ IF  IFE
-----------------------------------------------------------------

     ४⨢ ᫮ ᥬ஢ IF ਢ  ⮬,  
᫥騩    室    ( ᮮ⢥饩 ४⨢
ELSE  ENDIF) 㤥 ᥬ஢ ⮫쪮  ⮬ 砥,  ᫨
祭 ࠭ 㤥 㫥. ࠭  ।⠢ -
 ⠭  ࠦ,  ᫥  ண  砥
⠭. ਬ,  १ 믮 ४⨢:

            .
            .
            .
      IF  REPORT_ASSEMBLY_STATUS
           DISPLAY 'ᥬ஢ ⨣ ஫쭮 窨 1'
      ENDIF
            .
            .
            .

 ⮬ 砥, ᫨ REPORT_ASSEMBLY_STATUS      ⨦
४⨢ IF 㫥 祭,  ࠭ 뢮 ᮮ饭:

        ᥬ஢ ⨣ ஫쭮 窨 1

     ᫮ IF (᫨)   ४⨢ ENDIF (
)    ELSE (). ᫨ ᫮ IF 蠥 ४⨢
ELSE,  ᫥騩  ELSE 室  ᥬ  ⮫쪮  
⮬ 砥, ᫨ ࠭ ᮮ⢥饩  ४⨢  IF  㫥-
.  , ᫥饣  ४⨢ ELSE,  
४⨢ ENDIF. ᫮  IF    묨, ਬ, 
ணࠬ:

            .
            .
            .
 ; ஢, 㦭  । ᨢ ( ⨢ 砥
 ;  । ᪨).
      IF DEFINE_ARRAY
 ; ,  ᨢ  ᫨誮 
      IF (ARRAY_LENGTH GT MAX_ARRAY_LENGTH)
        ARRAY_LENGTH     =   MAX_ARRAY_LENGTH
      ENDIF
 ; ᫨  㪠, ⠭ ᨢ  砫쭮 祭
        IF INITIALIZE_ARRAY
         Array    DB  ARRAY_LENGTH  DUP (?)
        ENDIF
      ENDIF
            .
            .
            .

४⨢ IF  IF...ELSE   㣮  IF.

     ४⨢ IFE 筠 ४⨢ IF,    ᫥騩  
ᥬ    ⮬  砥, ᫨ ࠭ 㫥.  ᫥饬
ਬ 室  ᫥ ४⨢ IFE ᥬ ᥣ:

            .
            .
            .
        IF  0
            .
            .
            .
        ENDIF
            .
            .
            .

       ४⨢ IF, ४⨢ IFE    ᮮ⢥-
 ४⨢ ELSE.

     室 ,  ४⨢ ᫮ ᥬ஢
ࠡ  ⮫쪮  ६ ᥬ஢,    ६ 믮-
 ணࠬ.     ᠬ,    몥  , -
騥  ࠧ   ᨬ  ࠧ ᫮ ⠯
믮.  ४⨢  ᫮  ᥬ஢   ᯥ稢
࠭ ࠧ筮   ᨬ  ᫮ ᥬ஢-
.



                       ४⨢ IFDEF  IFNDEF
-----------------------------------------------------------------

     ४⨢ ᫮ ᥬ஢ IFDEF  IFNDEF -  
᭮  㬥  ஥ ணࠬ,  ᥬ஢
 砥 ᪮쪮 ᨩ. ४⨢ IFDEF   IFNDEF  
⮬ 砥 १砩 .

      室 , 祭   ४⨢  IFDEF  
ᮮ⢥饩   ४⨢ ENDIF, ᥬ ⮫쪮  ⮬
砥, ᫨ ⪠,  ࠭ ४⨢ IFDEF, -
  (㣨 ᫮, ᫨  믮 ४⨢ IFDEF ⪠
㦥 ।). ਬ,  ࠭樨 室 :

            .
            .
            .
  DEFINED_LABEL  EQU  0
            .
            .
            .
  IFDEF DEFINED_LABEL
            DB   0
  ENDIF
            .
            .
            .

㤥 ᥬ஢ ४⨢ DB. ᫨   㤠 ४⨢
EQU,   ⠭ 祭  DEFINED_LABEL (  ।-
,   ⪠    ணࠬ   ।-
),  ४⨢ DB ᥬ஢  㤥. ⨬,  -
祭 ⪨ DEFINED_LABEL  ४⨢ IFDEF  .

     ⢨ ४⨢ IFNDEF ⭮ ⢨ ४⨢  IFDEF.
⢥騩   ᥬ ⮫쪮  ⮬ 砥, ᫨ -
 ࠭ ⪠  ।.

         ,  祣 ᯮ  ४-
⨢  IFDEF   IFNDEF?   ਬ  ।࠭
 ୮ । ⪨   ४⨢ EQU  ᫮
ணࠬ:  ᫨  ⪠ 㦥 ।,  ⮡   -
୮ । ( 맮 訡),    ᯮ짮
४⨢  IFDEF. 㣮 ᯮ짮  ४⨢ -  -
 ᨨ ᥬ㥬 ணࠬ (筮 ⮬,   -
  ࠭    ४⨢ IF).  ⮣, ⮡ ஢-
, ᪠,   ᨢ  INITIALIZE_ARRAYS  㫥  
㫥,    ஢, ।   .

      ᯮᮡ 롮 ᨨ ணࠬ  ।⠢  -
  ப ࡮ ᥬ /D. ࠬ /D ।
ᮮ⢥      ()  ᢠ  ⮩
⪥ 祭. ⮬ , ਬ,  ᯮ짮 ᫥-
 :

        TASM /dINITIALIZE_ARRAYS=1 test

       ⮬    ᥬ஢  ணࠬ  TEST.ASM   ⪠
INITIALIZE_ARRAYS 㤥 ⠭  祭 1.

       । ,    ࠧ-
  ஡.   㤥  ⮬ 砥, ᫨  㤥 
 । INITIALIZE_ARRAYS   ப,   㤥
㪠  ᮮ⢥騩  ࠬ  /D? । ⠪,  
 樠஢ ᨢ  ᮡ 砥        
㣨   /dINITIALIZE_ARRAYS.

      ⮬ 砥    ਤ ४⨢ IFNDEF.  -
    ᯮ짮          ஢ન   ⮣,      ⪠
INITIALIZE_ARRAYS 㦥 । (   ப),    ⥬
樠஢   ⮫쪮  ⮬ 砥, ᫨  祭  
.  ࠧ, ।   ப  २-
⢮ (設⢮),  ᫨ ।   ப 
,   ⪨  ﭨ, ᯮ㥬    㬮-
.    ਢ    ਬ    ணࠬ,        ன   ᨢ
INITIALIZE_ARRAYS । ⮫쪮  ⮬ 砥, ᫨    
 ।:

               .
               .
               .
 IFNDEF   INITIALIZE__ARRAYS
 INITIALIZE__ARRAYS  EQU  0   ;  㬮砭  樠
 ENDIF
               .
               .
               .

       ⠪ ࠧ ᯮ ४⨢ IFNDEF   -
।  䨪,     ।,  -
 ।०饥 ᮮ饭, 뢠饥,    ᯮ
,      室.  ᫨   ।
 ᫮  IFNDEF  䨪,      ᮮ饭
  ஢.  ᮮ饭 뢮 ⮬,  ࡮
ᥬ    ᮮ ,    ᮡࠥ  
 ४⨢  樨.  ᫨        -
,      । 䨪,      -
 ࠬ /m ࠧ 믮 ᪮쪨 室. ᫨
 ⮫쪮  ।  䨪,    ࠧ襭 믮
᪮쪨 室  ਢ  뢮 ।०饣 ᮮ-
.



              㣨 ४⨢ ᫮ ᥬ஢
-----------------------------------------------------------------

      ஢ન ࠬ஢, ।    ப,  -
 ४⨢ IFB,  IFNB,  IFIDN  IFDIF. ( ப
᪠뢠    9 "⮥ ணࠬ஢  ࡮ -
ᥬ").  ४⨢ IFB ਢ  ⮬,    ᮮ⢥騩
室  㤥 ᥬ஢  ⮬ 砥, ᫨ ࠬ, -
騩 ࠭ ४⨢,  ⮩ (஡).  ४⨢ IFNB
室    㤥 ᥬ஢,  ᫨ ࠬ   (
 ஡).  ४⨢ IFNB  IFB -  ᢮ த -
 ४⨢ IFNDEF  IFDEF  ࠬ஢ ப.

     ᬮਬ  ⢥ ਬ ᫥  ப  TEST,
 । ᫥騬 ࠧ:

;
; ப  ।   ᫮
;
; :
;    VALUE = 祭   ᫮
;    DEFINE_WIRD = 1  । ᫮  0  ।
;    
;
; ਬ砭: ᫨ ࠬ PARM2  ,  । .

;
TEST MACRO       VALUE, DEFINE_WORD
IFB  <DEFINE_WORD>
     DB   VALUE     ; । , ᫨ PARM2 - ஡, 
  IF DEFINE_WORD
     DW   VALUE     ; । ᫮, ᫨ PARM2  = 0
  ELSE
     DB   VALUE     ; । , ᫨ PARM2 = 0
  ENDIF
ENDIF
     ENDM

     ᫨ ப TEST 뢠 ஬:

        TEST 19

 ।   祭 19,  ᫨ ப 뢠-
   :

        TEST 19,1

 । ᫮  祭 19.

      ४⨢ IFIDN ᮮ⢥騩 室  㤥 ᥬ-
஢  ⮬ 砥,  ᫨   ࠬ ᮢ,   
४⨢ IFDIF - ᫨ ࠬ  ࠧ.  ਬ,  ᫥
ப,  ८ࠧ       ᫮   
ॣ AX,    室 ࠭,  ᫨  室  
ॣ AL:

;
; ப  ८ࠧ     8-⮢
; ॣ  祩   ᫮    ॣ AX.
;
; :
;    SIGNED_BYTE -  ॣ  祩 ,
;                   ன ᮤন   ,
;                  ८ࠧ㥬  ᫮  .
;
MAKE_SIGNED_WORD   MACRO   SIGNED_BYTE
IFDIFI   <AL>,<SIGNED_BYTE>        ; 㡥,  ࠭
                                   ;   ॣ AL
         mov   al,SIGNED_BYTE
ENDIF
         cwb
         ENDM

      㬥 ४⨢ IFDIF   IFIDN      ய
㪢 ࠧ. ⮡ ஢  㪢,  ᮢ-
騥,    㣨    ४⨢  -  IFINDI  
IFDIFI.

     ⨬,   ࠭ ४⨢ IFB, IFNB, IFIDN   IFDIF
ॡ   㣫 ᪮.

     ᫨     㪠뢠  ࠧ襭 믮 ᪮쪨
o ࠬ  ப /m,  ᫮ IF1 ᥣ -
  ⨭ 祭,   IF2 -  (⠪  ன 室
 믮). ᫨ ࡮ ᥬ 砥 ४⨢ IF1 
IF2,  뢮 ।०饥 ᮮ饭:

     "Pass dependent construction encountered"
     (㦥 ,   室)

     E᫨  ᯮ ࠬ /m,  ᫨  㫥 ᮤঠ
४⨢ IF1  IF2,  ⮬᪨ 믮  室.  
⮬ 砥  ४⨢  IF1 ਭ ⨭ 祭  ࢮ
室,  IF2 -  ஬.  ⮬ ⠪ 뢮 ।०-
饥 ᮮ饭:

     "Module is pass dependent - compatibility pass was done"
     (   室 - 믮 室    ᮢ-
      )



                       ⢮ ४⨢ ELSEIF
-----------------------------------------------------------------

       ४⨢ IF (IF, IFB, IFIDN   ..)    ᮮ-
  ४⨢  ᥬ⢠ ELSEIF (ਬ, ELSEIF, ELSE-
IFB, ELSEIFIDN).  ࠡ,  ⠭ ४⨢ ELSE  -
    ४⨢ IF.    ᯮ짮, ⮡ ᯥ
 ⠥ 室 ,  ॡ ஢  -
⢮  ᫮    祭   ᥬ஢ ⮫쪮 ⤥
 . ᬮਬ ᫥騩 ࠣ ணࠬ:

IF  BUFLENGHT GT 1000
        CALL  DOBIGBUF  ; 让 
ELSE
        IF BUFLENGTH GT 100  ; । 
               CALL  MEDIUMBUF
        ELSE
               IF BUFLENGTH GT 10  ; 让 
                      CALL  SMALLBUF
               ELSE
                      CALL  TINYBUFP  ; 쪨 
               ENDIF
        ENDIF
ENDIF

     ⮡  ⠥ ,    ᯮ짮  -
४⨢ ELSEIF:

IF  BUFLENGHT GT 1000
        CALL  DOBIGBUF       ; 让 
ELSE
ELSEIF BUFLENGTH GT 100      ; । 
        CALL  MEDIUMBUF
ELSEIF BUFLENGTH GT 10       ; 让 
        CALL  SMALLBUF
ELSE
        CALL  TINYBUFP       ; 쪨 
        ENDIF

      ਡ⥫쭮 ᮮ⢥ ࠬ case   switch
  ᪠  . , ⠪   ࠧ 
饩, ᪮    ᥬ  ᫮ ᥬ஢  
ॡ ᯮ짮      ஢ப ELSEIF.  -
⨬, ਬ, ᫥饥:

PUSHREG  MACRO ARG
     IFIDN <ARG>,<INDEX>
           PUSH SI
           PUSH DI
     ELSEIFB <ARG>
           PUSH AX
     ENDIF
     ENDM



            ᫮ ४⨢ 뢮 ᮮ饭  訡
-----------------------------------------------------------------

     ࡮ ᥬ   믮 ᫮ (  믮-
    믮  । ᫮)  訡
ᥬ஢.  ⮣ ᯮ ᫮ ४⨢ 뢮
ᮮ饭  訡 .ERR, .ERR1, ERR2, .ERRDEF, .ERRNDEF, .ERRB,
.ERRNB, .ERRIDN, .ERRIDNI, .ERRDIFI, .ERRE, .ERRNZ  .ERRDIF. 
祣 㦭 ।७ ஢ ᮮ饭  訡 ᥬ-
஢?  ᫮ ४⨢ 뢮 ᮮ饭  訡 -
  墠뢠  ணࠬ ⢮  訡,  ਬ,
ᢠ ⪠ ᫨誮    祭, ᯮ짮-
 । ⮪  ய 㬥⮢ ப.

     ᫨   祭 ᫮ ४⨢ 뢮 ᮮ饭
  訡,   ,   ४⨢ 祭 宦 
४⨢ ᫮ ᥬ஢.    砩  ᮢ-
,  ᪮ 設⢮ ᫮ ४⨢ 뢮 ᮮ饭 
訡 ஢   ᫮. ਬ, ४⨢ .ERRNDEF -
  訡   ⮬ 砥, ᫨ ⪠,   ࠭-
,  ।, ⠪   ४⨢ IFNDEF ᥬ  -
⢥騩   ⮬ 砥, ᫨ ⪠  ।.



                     ४⨢ .ERR, .ERR1  .ERR2
-----------------------------------------------------------------

      ࡮ ᥬ 㦨 ४⨢ .ERR,   -
  訡.   ᥡ     㭪樥,
 ४⨢ .ERR  ᯮ짮  ⠭  ४-
 ᫮ ᥬ஢.

     ਬ, ।,    ᣥ஢ 訡
 ⮬ 砥, ᫨  ᢠ    ᨢ -
 ᫨誮 讥 祭.   ᤥ ᫥騬
ࠧ:

IF  (ARRAY_LENGTH GT MAX_ARRAY_LENGTH)
    .ERR
ENDIF

     ᫨ ᨢ   筮    (  ᨢ
ARRAY_LENGTH   ॢ室 ᨬ쭮 祭  ᨢ
MAX_ARRAY_LENGTH),  ࡮ ᥬ  㤥  ஢  
  IF  訡 ஢  㤥.

     ४⨢ .ERR1  .ERR2 ࠡ 筮 ⠪,   ४⨢
.ERR,    ⮫쪮,  ᮮ⢥⢥,   ࢮ  ஬ 室.
᫨   ࠧ襭 믮 ᪮쪨 室   ᯮ-
 ࠬ  ப /m,    ४⨢ .ERR1 ᥣ
㤥 뢮 訡,   ४⨢ .ERR2 -  㤥 (⠪ 
ன 室  믮).  ⮬ 砥, ᫨ ࡮ ᥬ
㦨  㫥 ४⨢ .ERR1  .ERR2,  뢮 ᮮ-
饭:

     "Pass dependent construction encountered"
     (㦥 , ᨬ  室)

     ᫨   ᯮ ࠬ  ப /m,   
  ᮤন ४⨢ .ERR1  .ERR2,  ⮬᪨ -
  室.   ⮬ 砥 ४⨢ .ERR1 㤥 뢮-
 ᮮ饭  訡  ࢮ 室,   ४⨢ .ERR2  -
 ஬ 室.  ஬ ⮣, 뢮 ।०饥 ᮮ-
:

     "Module is pass dependent - compatibility pass was done"
     (     室 - 믮 室  ᮢ-
     )


                       ४⨢ .ERRE  .ERRNZ
-----------------------------------------------------------------

     ४⨢ .ERRE  訡  ⮬ 砥, ᫨  -
࠭,   ᫥ ண   ⠭, ࠢ
. ४⨢ .ERRE  믮 ४⨢ .IFE  -
⠭  ४⨢ .ERR. ਬ:

   .ERRE       TEST_LABEL-1

⭮:

   IFE     TEST_LEBEL-1
           .ERRE
   ENDIF

     ४⨢ .ERRE  ᯮ짮  뢮 訡    ⮬
砥,    ࠦ ⭮襭   祭
(⠪   ࠦ ࠢ 0).

     筮, ४⨢ .ERRNZ  訡  ⮬ 砥,
᫨   ࠭  ࠢ .  ⭮ ४⨢ IF, 
ன ᫥ ४⨢ .ERR. ४⨢ .ERRNZ   ᯮ짮-
   뢮 訡  ⮬ 砥,   ࠦ ⭮襭
 ⨭ 祭 (⠪    ⨭  ࠦ  
ࠢ 0). ਬ:

       .ERRNZ   ARRAY_LENGTH GT MAX_ARRAY_LENGTH

믮   ⢨,   ४⨢ IF    .ERR    ਬ
᫥ ࠧ.




४⨢ .ERRDEF  .ERRNDEF
-----------------------------------------------------------------

     ४⨢ .ERRDEF  訡  ⮬ 砥, ᫨  -
,   ࠭, ।,  ४⨢ .ERRNDEF -
 訡  ⮬ 砥, ᫨ ⪠-࠭  -
.   ४⨢    ப ॠ -
 ⠭ ४⨢ IFDEF   IFNDEF   ४⨢  .ERR.
ਬ:

      .ERRNDEF   MAX_PATH_LENGTH

⭮:

      IFNDEF   MAX_PATH_LENGTH
        .ERR
      ENDIF



        㣨 ᫮ ४⨢ 樨 ᮮ饭  訡
-----------------------------------------------------------------

      ⠢訥 ᫮  ४⨢  ।祭  ⮫쪮
  ᯮ짮    ப    ।⢥
  ४⨢ ᫮  ᥬ஢,  ᯮ-
    ப    㦤    ।饬  ࠧ
"㣨 ४⨢ ᫮ ᥬ஢".

     ४⨢ .ERRB  訡  ⮬ 砥, ᫨  -
騩  ࠭ ࠬ ப ,  ४⨢ .ERRNB
-  ⮬ 砥, ᫨  ࠬ  ⮩.  ४⨢  .ERRIDN
 訡, ᫨  ࠬ ப,  -
  ࠭, ᮢ,  ४⨢ .ERRDIF -   ⮬  -
砥, ᫨  ࠧ.

     ਬ,  ᫥饩 ப 訡   ⮬
砥,  ᫨   뢠   ᫮ ࠬ஢, ⫨
 .  ॠ   ४⨢ .ERRB   .ERRNB  (
  ஢,    PARM2  ,  PARM3 - ⮩ -
). ⮡ 㡥,   ⢥ PARM2  ᯮ  -
  DX,    ப ᯮ ⠪ ४⨢ .ERRIND.
ப 룫廊 ᫥騬 ࠧ:

;
; ப  ᫮  ⠭, ॣ஢ 
;  祥   ࠭ १  DX.
;
; :
;    PARM1 -  ࠭-᫠
;    PARM2 - 㣮 ࠭-᫠
;
ADD_TWO_OPERANDS  MACRO   PARM1,PARM2,PARM3
     .ERRB   <PARM2>       ;    ࠬ,
     .ERRNB  <PARM3>       ;   
     .ERRIDN <PARM2>,<DX>  ; ன ࠬ  
                           ;  ॣ஬ DX
     mov   dx,PARM1
     add   dx,PARM2
     ENDM

         ᯮ짮  ப ४⨢
.ERRIDN, ⮡ ᯥ,  PARM2 ⫨祭  DX ( ⮬ 砥
 㧪 PARM1  㤥 襭).



 訡  ணࠬ஢  ᥬ
-----------------------------------------------------------------

       몥  ᢮ ⢮ 訡,  筮
祭   ᤥ,   ᥣ  㦨.  
᪫祭   ᥬ.  ᬮਬ    ⨯
訡,  ᪠  ணࠬ஢  ᥬ, 
 ४樨,    .

                 ணࠬ 뢠    DOS
-----------------------------------------------------------------

      ᪠,   㣨 몠 ணࠬ 蠥   -
頥    樮  ⥬  DOS  ⮬᪨,  
 믮塞 ,  ᫨  ணࠬ  
    襭.  몥 ᥬ   ⠪. ᥬ
믮 ⮫쪮  ⢨,     㪠뢠.  
 ᪠ ணࠬ,  ன    
DOS,   த ࠡ     믮塞  
ணࠬ   室  ,  室  ਬ몠饩 -
.

     ᬮਬ, ਬ, ᫥ ணࠬ:

   DOSSEG
   .MODEL   SMALL
   .CODE
DoNothing PROC NEAR
   nop
DoNothing ENDP
   END    DoNothing

     騩   ᪠뢠 ,    ४⨢  ENDP
  END   ࠧ  ணࠬ, 筮 }  end.
do  ᪠  ,    ⠪. 믮塞 ,  ᣥ஢-
    ᥬ஢     ணࠬ, ⮨
⮫쪮  ⤥쭮 樨 NOP.  ᥬ  ४⨢  ENDP
(    㣨 ४⨢)   ,   㢥-
 ᥬ,     楤  DoNothing  稫.
筮,  ४⨢  END DoNothing  ᮮ頥 ᥬ,
    稫,  ணࠬ    -
  ⪨ DoNothing.   믮塞   ᮤন-
 樨  । ࠢ ⭮  樮 -
⥬ DOS,   ணࠬ .   १,  ண-
ࠬ 㤥 饭,   ᫥ 樨 NOP   믮
樨,  砩    ।⢥ 
NOP.  ⮩ 窥 ࠢ 㤥 ﭮ     -
樮 ⥬  DOS   ॡ ணࠬ  -
⭠ १㧪.

       ᪮쪮 ᯮᮡ,    ணࠬ
 ᥬ    DOS, ४㥬 ᯮᮡ -
  DOS  㭪 4Ch. ࠢ쭮  ࠡ 㤥
᫥  ।饩 ணࠬ:

   DOSSEG
   .MODEL   SMALL
   .CODE
DoNothing PROC NEAR
   nop
   mov   ah,4Ch            ; 㭪 DOS 襭 
   int   21h               ; 맢 DOS  襭 ணࠬ
DoNothing ENDP
   END    DoNothing

     ᥣ 㦭   ⮬,  ४⨢    -
,      ࡮ ᥬ  ணࠬ,  
⮫쪮 ,   㪠뢠 室 ,     .

                ணࠬ 뢠  樨 RET
-----------------------------------------------------------------

     ⨬,  ࠢ 맮 ணࠬ ⮨  맮
ணࠬ    㣮    ,  믮 ணࠬ 
  ணࠬ    뢠  ணࠬ.    
    ணࠬ  RET,  ன ࠢ-
 㤥 ।  뢠騩 .     ணࠬ
 ४⨢  ய    ᫥騬 ࠧ:

;
; ணࠬ  㬭 祭  80
; :   AX - 祭, ஥ 㦭 㬭  80
; 뢮:  DX:AX - ந
;
MultiplyBy80   PROC NEAR
                mov   dx,80
                mul   dx
MultiplyBy80   ENDP

; ணࠬ  祭 ᫥ ⮩ 
; 뢮: AL - ᫥  
; ন ॣ AH 
;
GetKey      PROC NEAR
             mov  ah,1
             int  21h
             ret
GetKey      PROC NEAR

     ४⨢ MultipleBy80 ENDP      㦤,
   㬠,  ணࠬ MultipleBy80 㦥 襭 -
४⭮,  ⮣      맮  ணࠬ  ⮫쪮 㤥
ᮤন AX 㬭  80,   த 믮 -
ணࠬ GetKey,    ॣ AL 㤥   ᫥-
饩 ⮩ .  ४⭮  ணࠬ 㤥  ᫥-
饬 :

;
; ணࠬ  㬭 祭  80
; :   AX - 祭, ஥ 㦭 㬭  80
; 뢮:  DX:AX - ந
;
MultiplyBy80   PROC NEAR
                mov   dx,80
                mul   dx
                ret
MultiplyBy80   ENDP

; ணࠬ  祭 ᫥饩 ⮩ 
; 뢮: AL - ᫥  
; ন ॣ AH 
;
GetKey      PROC NEAR
             mov  ah,1
             int  21h
             ret
GetKey      PROC NEAR



                    ୮ ⨯ 
-----------------------------------------------------------------

     ४⨢ PROC  类. -,    ।
,    ஬ 㤥 뢠 楤. -,  -
ࠢ ⨯ (  쭨) 楤.

      楤 ᯮ ࡮ ᥬ஬  ।
⮣,    ⨯ 맮 㦭 ஢  맮 楤
 ⮣  室 䠩.  楤 ⠪ ᯮ  
।  ⨯ 樨 RET,  믮,  -
楤 頥 ࠢ  뢠騩 . ᬮਬ ᫥-
騩 ਬ:

; ணࠬ  ⨯  ᤢ DX:AX ࠢ  2 
;
LongShiftRight2   PROC NEAR
     shr   dx,1
     rcr   ax,1   ; ᤢ DX:AX ࠢ  1 
     shr   dx,1
     rcr   ax,1   ; ᤢ DX:AX ࠢ   1 
     ret
LongShiftRight2   ENDP

     ࡮ ᥬ ᯥ稢,   RET 㤥 -
  ⨯, ⠪  LongShiftRight2 -  楤  ⨯
(NEAR). , ᫨ ४⨢ PROC  ᫥騬 ࠧ:

LongShiftRight2   PROC FAR

 㤥 ஢  RET 쭥 ⨯ (FAR).

      ࠧ,   祢. 樨 RET   -
  ᮮ⢥⢮  ⨯,  ࠢ ?

       ⠪   ⠪. ஡ ⮨   ⮬,      (
  ⥫쭮)  㯯஢     ⮩  楤 -
쪮 楤. ᪮    楤    ᮮ-
 ४⨢ PROC,  樨 RET   ⨯ ⮩
楤,    祭,     ணࠬ
 ⨯  ᥣ   ४. ਬ, ணࠬ-
:

; ணࠬ 쭥 ⨯  ᤢ DX:AX  2 .
;
LongShiftRight2    PROC FAR
     call   LongShiftRight      ; ᤢ DX:AX ࠢ  1 
     call   LongShiftRight      ; ᤢ DX:AX ࠢ   1 
     ret
LongShiftRight:
     shr    dx,1
     rcr    ax,1                ; ᤢ DX:AX ࠢ  1 
     ret
LongShiftRight2    ENDP

ࠡ⠥ ࠢ쭮.  楤 LongShiftRight2 頥  -
  ⨯  LongShiftRight (⠪   室  -
  ᥣ  ).  ,  ⠪  LongShiftRight ஥ 
楤  LongShiftRight2,           ணࠬ
LongShiftRight ⠭ ⮬ 쭥 ⨯,   맮
 ⨯ ᮮ⢥  쭥 ⨯,    让
⭮    ਢ  ᡮ (਩ 襭 ண-
ࠬ).

     訬 襭  㤥 稥     ணࠬ
४⨢ PROC.  ४⨢ PROC ४᭮ ࠡ:

; ணࠬ 쭥 ⨯  ᤢ DX:AX  2 .
;
LongShiftRight2    PROC FAR
     call   LongShiftRight      ; ᤢ DX:AX ࠢ  1 
     call   LongShiftRight      ; ᤢ DX:AX ࠢ   1 
     ret
LongShiftRight     PROC NEAR
     shr    dx,1
     rcr    ax,1                ; ᤢ DX:AX ࠢ  1 
     ret
LongShiftRight2    ENDP
LongShiftRight     ENDP

⠪   ᫥⥫ 楤:

; ணࠬ 쭥 ⨯  ᤢ DX:AX  2 .
;
LongShiftRight2    PROC FAR
     call   LongShiftRight      ; ᤢ DX:AX ࠢ  1 
     call   LongShiftRight      ; ᤢ DX:AX ࠢ   1 
     ret
LongShiftRight2    ENDP
LongShiftRight     PROC NEAR
     shr    dx,1
     rcr    ax,1                ; ᤢ DX:AX ࠢ  1 
     ret
LongShiftRight     ENDP

       樨   쭥   -
짮, ᮮ⢥⢥,  樨 RETN   RETF.    
ᯥ    ४  権 .

                    ࠢ 冷 ࠭
-----------------------------------------------------------------

      ணࠬ 訡   冷 ࠭ 
  8086  . , ⭮, 易 
⥬,  ப:

        mov ax,bx

 砥 " AX  BX", ⠥ ᫥  ࠢ,  
  ᮧ⥫ ய஢  ᮮ⢥騬 ࠧ
᢮ ᥬ.   몥 ᥬ  8086  ଠ
Intel  ᯮ짮 㣮 室, ⮬    ப -
砥 " BX  AX",   ਢ  ⠭.

     冷 ࠭, ਭ ମ Intel, ᭮  浪
࠭,  ਭ⮩   ᪠  ,  楫 ࠭ (ਥ-
) 室 ᫥.  ࠧ, ⮡  ९  冷
࠭   몥 ᥬ  8086, 㦭   -
⮩, ࠧ饩 ࠭,      ࠢ⢠,  ਤ
ப  ᢠ. ਬ, ப:

        mov ax,bx

 ᬠਢ, 

        ax = bx

     ࠭-⠭, ⠪, :

        add bx,(OFFSET BaseTble * 4) + 2

 ।⠢  :

        bx += (OFFSET BaseTable * 4) + 2



      ணࠬ 뢠  ⥪  १ࢨ 쪨 ⥪
-----------------------------------------------------------------

      設⢥ 砥  뤥  ࠭⢮  -
,    ࠢ,  室  ⮭ .  ணࠬ,
   뤥 ࠭⢮  ⥪,    ࠡ,
᪮    ⠪,  祭  㬮砭 ⥪
  ᯮ㥬  .    ࠭⨨,
  ⠪  ணࠬ  㤥  ࠡ   ⥫⢠,
᪮  ࠭⨨,   ⥪ 㤥 㯥    ࠩ
   .  設⢥ ணࠬ  १ࢨ஢ -
࠭⢠  ⥪  ⢮ ४⨢ .STACK,    
  ணࠬ    ४⨢  १ࢨ஢ 筮
࠭⢮, ⮡  墠⨫  ᨬ  ॡ⥩  
ணࠬ.

     祬  ࠭⢮    祬 , 
  ? 㤭  㢥७  ⮬,  -
 ⥪    ணࠬ 室. 訡, 
,    㢥稢騩  ⥪ 室  㣨 
ணࠬ    ଠ, 筮 뢠 㤭 ந-
    ᫥.  ஬ ⮣,  ⫠稪  
ࠢ    ணࠬ  ᯮ  讥   ⥫쭮
࠭⢮   ⥪. ⮬  ᫥ 㯨  뤥
࠭⢠  ⥪.        -
⭮⥩.  訬 ࠢ  뤥 ⥪, -
 ࠧ ண ⠢ 512 .

     ⢥  ணࠬ  ᥬ,      ᫥
뤥  ⥪,  ணࠬ,  । ८-
ࠧ  䠩 ⨯ .COM  .BIN.  .BIN ᮤঠ , -
  ⪮  ਢ易  ⤥ ᠬ,  ,  ᪮ 䠩
.BIN ᯮ  筮,    ஢  ணࠬ
ᨪ,   ᯮ ⥪ ᨪ.   .COM 믮 
⥪,  ᯮ  ᠬ 設 ணࠬ ᥣ (-
  ࠧ 64  , ᫨ 㯭  64), -
⮬ ᨬ ࠧ ⥪  ⮬ 砥  ࠢ ꥬ
, ⠢襩  ணࠬ ᥣ.  ᠭ ணࠬ
 ଠ .COM ᫥     ࠧ   64,  ⠪  
  㢥祭 ணࠬ ᮮ⢥⢥ 㬥蠥 ⥪.  㦭
⠪ 뢠,    ࠡ  ணࠬ  ଠ .COM,
믮騥     让 㯭 ,  
饭  樮 । DOS   㣨  ணࠬ-
,    ஡  ⥪. ⥩訩 ᯮᮡ -
  ⥭樠 ஡ ⮨   ᠭ  ணࠬ  
ଠ .EXE,    ଠ .COM,  १ࢨ஢ ⥪ -
 ꥬ.



    맮 ணࠬ,   ᮤন 㦭 ॣ஢
-----------------------------------------------------------------

      ࠧࠡ⪥ ணࠬ  ᥬ ॣ 㤮 -
ਢ,   ६, 뤥  ᯮ짮
 楤,  ன     ࠡ⠥.  ⭮,
। ࠧ㬥,    饭  㣨 楤ࠬ -
  묨.  ᠬ    ⠪. 
-   ६,    楤   ࠭
 㭨⮦ ᮤন   ॣ஢.

     ᬮਬ ᫥騩 ਬ:

         .
         .
         .
         mov   bx,[TableBase]  ; BX 㪠뢠  砫 ⠡
         mov   ax,[Element]    ;  
         call  DivideBy10      ; ࠧ   10
         add   bx,ax           ; 뫪  ᮮ⢥ 
         .
         .
         .
; ணࠬ   祭  10.
;
; :  AX - 祭, ஥ ॡ ࠧ  10
; 뢮: AX - 祭, ࠧ  10
;        DX - ⮪ 祭,   10
DivideBy10     PROC NEAR
         mov   dx,0            ; ⮢ DX:AX, 
                               ; 32-⮢ 
         mov   bx,10           ; BX - 16-⮢ ⥫
         div   dx
         ret
DivideBy10     ENDP

      뢠饩 ணࠬ ࠧ㬥,  BX    楤
DivideBy10 ࠭,  䠪᪨  ⠭ -
ன DivideBy10  祭 10.  ⮬ ⭮ 砥  -
  ᪮쪮    襭. ਬ,  砫 楤
DivideBy10 BX    ⥪,   室  楤  -
  ⥪:

         .
         .
         .
         mov   bx,[TableBase]   ; BX 㪠뢠  砫
                                ; ⠡
         mov   ax,[Element]     ;  
         call  DivideBy10       ; ࠧ   10
         add   bx,ax            ; 뫪  ᮮ⢥
                                ; 
         .
         .
         .
; ணࠬ   祭  10.
;
; :  AX - 祭, ஥ ॡ ࠧ  10
; 뢮: AX - 祭, ࠧ  10
;        DX - ⮪ 祭,   10
DivideBy10     PROC NEAR
         push  bx              ; ࠭ BX
         mov   dx,0            ; ⮢ DX:AX, 
                               ; 32-⮢ 
         mov   bx,10           ; BX - 16-⮢ ⥫
         div   dx
         pop   bx              ; ⠭ BX
         ret
DivideBy10     ENDP

 ᤥ   뢠饩 ணࠬ   (࠭)    ᫥
(⠭) 맮 楤 DivideBy10:

         .
         .
         .
         mov   bx,[TableBase]   ; BX 㪠뢠  砫
                                ; ⠡
         mov   ax,[Element]     ;  
         push  bx               ; ࠭ BX
         call  DivideBy10       ; ࠧ   10
         pop   bx               ; ⠭ BX
         add   bx,ax            ; 뫪  ᮮ⢥
                                ; 
         .
         .
         .
; ணࠬ   祭  10.
;
; :  AX - 祭, ஥ ॡ ࠧ  10
; 뢮: AX - 祭, ࠧ  10
;        DX - ⮪ 祭,   10
DivideBy10     PROC NEAR
         mov   dx,0            ; ⮢ DX:AX, 
                               ; 32-⮢ 
         mov   bx,10           ; BX - 16-⮢ ⥫
         div   dx
         ret
DivideBy10     ENDP

 ॣ BX  㧨 ᫥ 맮 楤,    -
। :

         .
         .
         .
         mov   ax,[Element]     ;  
         call  DivideBy10       ; ࠧ   10
         mov   bx,[TableBase]   ; BX 㪠뢠  砫
                                ; ⠡
         add   bx,ax            ; 뫪  ᮮ⢥
                                ; 
         .
         .
         .
; ணࠬ   祭  10.
;
; :  AX - 祭, ஥ ॡ ࠧ  10
; 뢮: AX - 祭, ࠧ  10
;        DX - ⮪ 祭,   10
DivideBy10     PROC NEAR
         mov   dx,0            ; ⮢ DX:AX, 
                               ; 32-⮢ 
         mov   bx,10           ; BX - 16-⮢ ⥫
         div   dx
         ret
DivideBy10     ENDP

     饥 襭 ⮩ ஡ ⮨  ⮬,  ⮡    -
ணࠬ,    ᮤন ॣ஢, ࠭﫨
,  ⥬ ⠭.  ᮦ  ⮣ ॡ  -
⥫쭮  ६  ⠪ 樨 㢥稢 ꥬ ணࠬ,
 ਢ     २⢠ ணࠬ஢
 ᥬ. 㣮 室 ⮨  ⮬, ⮡  ண-
ࠬ ᮯ஢ ਥ,  ஬  㪠뢠,  
ॣ ࠭,   ࠧ,  ⭮ ஢,
  ࠧ㬥,   ணࠬ ॣ   -
.   室 砥   ࠭ 㦭 ॣ-
஢  맮 ணࠬ.



              訡  ᯮ짮 ᫮ 室
-----------------------------------------------------------------

     ᯮ짮  몥 ᥬ 権 ᫮ -
  (JE,  JNE,  JC,  JNC, JA, JB, JG  .) ᯥ稢 
  ணࠬ஢,   ⮬ ⠪ 祭   -
,  ࠢ    室. ஬ ⮣, ᪮  몥
ᥬ  ᫮  室 ॡ  ࠩ   
ப  室    (  ᫮ ᫮ 室 ᪮쪨
ப), ᫮ 室  몥  ᥬ    祢  
 ᯮᮡ 訡, 祬 ᮮ⢥騥  ᪠-
  .

     1.     訡  ᯮ짮  権
         JA,  JB,  JAE    JBE  ࠢ 祭  
         , ᮮ⢥⢥, 権 JG, JL, JGE  JLE  
         ࠢ  祭.

     2.     訡 砥  ᯮ짮,  ᪠-
         , 樨 JA ⠬,  㦭 ᯮ짮 JAE. -
            ⮬,   㪢 E    樨  
         ࠢ  뢠 砩,   ࠭ ࠢ-
         .

     3.    饩 訡  ᯮ짮  -
         ஢ , ਬ, ਬ 樨 JS ⠬,
          㦭 ᯮ짮 JNS.

       室, 騩 ஢ 訡   -
짮  ᫮ 室 ⮨  ஢ -
  ᮮ⢥⢨  祭ﬨ, 묨  . -
:

         .
         .
         .
;
; if ( Length > MaxLength ) (
;
         mov   ax,[Length]
         cmp   ax,[MaxLength]
         jng   LengthIsLessThanMax
         .
         .
         .
         jng   EndMaxLengthTest
;
; ) else (
;
LengthIsLessThanMax:
         .
         .
         .
;
; )
;
EndMaxLengthTest:
         .
         .
         .




訡  ப 
-----------------------------------------------------------------

     ப 樨 -  ᠬ    㭨  -
樨  ।    権  8086.  ᮡ-
 ஦ ᪮쪮 뢠  ஡.



                ୮  ࠡ 䨪 REP
-----------------------------------------------------------------

     ப 樨  ⭮ ᮡ: ᫥
 믮 ᯮ㥬  㪠⥫ 뫠  , -
騥  1  (     砥 樨   -
    ᫮)  ᫥ ࠡ⠭ . ਬ, ᫥
믮 ᫥饣 :

         .
         .
         .
         cld            ;   ப 樨
                        ;  אַ ࠢ
         mov   si,0     ; 뫪  ᬥ饭 0
         lodsb          ;    ᬥ饭 0
         .
         .
         .

ॣ SI 㤥 ᮤঠ  0,  1.   ,  ᪮
  ᫥饩 樨 LODSB , ⭮,   
 1,     -   2.   ७ ப
権      맢   ⠭, ᮡ 
ᯮ짮 REP SCAS  REP CMPS. ᬮਬ ᫥騩  ࠣ
ணࠬ:

         .
         .
         .
         cld                         ;   ப
                                     ; 樨  אַ
                                     ; ࠢ
         les   di,[bp+ScanString]    ; ES:DI 㪠뢠 
                                     ; ᬠਢ ப
         mov   cx,MAX_STRING_LEN     ; ஢  ᠬ
                                     ;  ப
         mov   al,0                  ;  饣 
         repne scasb                 ; 믮 
         .
         .
         .

     ।, 祭 ॣ ES ࠢ 2000h, DI = 0,  -
, 稭   2000:0000 ᮤন 祭:

     41h   61h   72h   64h   00h

     ᫥ 믮 ⮣  ॣ DI 㤥 ᮤঠ  -
祭 5 - ᬥ饭  ᫥ ⮣ ,  ஬  -
祭 0. ⮡  㪠⥫  ᫥  ᨬ  ப,
।騩 ࠣ ணࠬ   ᫥騩 :

         .
         .
         .
         cld                         ;   ப
                                     ; 樨  אַ
                                     ; ࠢ
         les   di,[bp+ScanString]    ; ES:DI 㪠뢠 
                                     ; ᬠਢ ப
         mov   cx,MAX_STRING_LEN     ; ஢  ᠬ
                                     ;  ப
         mov   al,0                  ;  饣 
         repne scasb                 ; 믮 
         jne   NoMatch               ; 訡: 騩 0
                                     ;  
         dec   di                    ; 뫪 ⭮  0
         dec   di                    ; cc뫪 ⭮ 
                                     ; ᫥ ᨬ
         ret
NoMatch:
         mov   di,0                  ;  㫥
                                     ; 㪠⥫
         mov   es,di
         ret
         .
         .
         .

     㦭   ⮬,   䫠  ࠢ  ⠭
⠪  ࠧ,    ப 樨 㤥 믮 -
 , ॣ DI 㤥 㪠뢠  ।騩  ,  
  ᫥騩 (᫥ ᫥  ᨬ).

     筠 ⠭  ந,    ᯮ짮-
 権 REP SCAS  REP CMPS ॣ CX 㬥蠥  -
 , 祬 ⮣  . 祭 ॣ CX 㬥-
蠥  ⮫쪮      ,  㤮⢮饣  ᫮
",    ࠢ (  ࠢ)",      1  ⮣
,   ண ᫮  믮 ( ਢ  ४-
饭 믮 樨).

     ਬ, ᫨  ᫥ ਬ   2000:0000  ᮤন
0,  ᫥ 믮 樨 ॣ CX ᮤঠ  祭
MAX_STRING_LEN-1,   ᫨      㫥 ᨬ    
.  ⮬ ᥣ ᪠ ணࠬ   ᫠
ᨬ  ப   ᫥騩 :

; 頥    ப, 饩 㫥.
; :  ES:DI - 砫 ப
; 뢮: AX -  ப, ᪫ 騩 0
;        ES:DI - 㪠뢠  ᫥  ப 
;        ᮤঠ 0000:0000, ᫨ 騩 0  
;        
;
StringLength   PROC NEAR
         cld                  ;   אַ ࠢ
         push   cx            ; ࠭ 祭 CX
         mov    cx,0FFFFh     ; ᨬ쭠  ᪠
         mov    al,0          ; 騩 ,  ண
                              ; 㦭 믮 
         repne  scasb         ;  饣 
         jne    StringLengthError ; 訡, ᫨  ப
                              ;  
         mov   ax,0FFFFh      ; ᨬ쭠 
                              ; ᬠਢ ப
         sub   ax,cx          ; ᬮ, ᪮쪮 
                              ; 뫮 ⠭
         dec   ax             ;   騩 0
         dec   di             ; ६ 㪠⥫ ⭮
                              ;  騩 0
         dec   di             ; ६ 㪠⥫ 
                              ; ᫥ ᨬ
         jmp   short StringLengthEnd
StringLenghtError:
         mov   di,0           ;  㫥 㪠⥫
         mov   es,di
StringLengthEnd:
         pop   cx             ; ⠭ 室 祭 CX
         ret
StringLength   ENDP

     㣠 ⥭樠쭠 ஡,  -  ⮣,  
ॣ CX 㪠뢠  ᬥ饭     ᫥  믮
権  REP SCAS  REP CMPS,  ⮨  ⮬,  祭 CX 
 ࠢ   㫥,   ᫨ ᫮ 襭
 㦥.  騩   㤥 ४⭮ ।, ᮢ-
   ᨢ,  ⠪  ॣ CX ਬ 祭 0  
ࠢ  ᮢ ᨢ,   ⫨ ⮫쪮
᫥ ⮬:

         .
         .
         .
         repz   cmpsb
         jcxz   ArraysAreTheSame
         .
         .
         .

     ४묨 ﬨ, ஢騬  ࠢ⢮  ᨢ,
 ᫥騥:

         .
         .
         .
         repz   cmpsb
         jz     ArraysAreTheSame
         .
         .
         .

      , ॣ CX ᫥  ᯮ짮  ⮫쪮  
稪 ,  ᬠਢ   REP SCAS  REP CMPS,
      㪠⥫ ⮣,   ᬠਢ  ࠢ
  ࠢ   ࠢ.

     ᫨  ࠡ     ணࠬ  塞  ப
権     㤭,   ᥣ 㤥  -
 ࠭  㬠  ⫠稪 ᫥    蠣,  
   ப .



       㫥 ᮤন ॣ CX  ࠡ  楫 ᥣ⮬
-----------------------------------------------------------------

      믮  ப 樨   ᮤন  -
 CX,  ࠢ 0,   㤥 믮  㭪権.  
  㤮, ⠪  । 믮 ப -
樨  㦭  ஢  0.  㣮 ஭,  ᯮ-
ᮡ      ᥣ    ⮢
ப 樨.  ਬ,  ᫥饬 ࠣ  -
ਢ ᥣ,  ॣ஬ ES,   ࢮ 宦-
 㪢 A:

         .
         .
         .
         cld             ;   אַ ࠢ
         sub   di,di     ;   ᬥ饭 0
         mov   al,'A'    ;  㦥 㪢 'A'
         mov   cx,0FFFFh ; ᭠砫 ஢  64
         repne SCASb     ; ᬮ  64-1 
         je    AFound    ;  A
         scasb           ;   : ᬮ
                         ; ᫥ 
         je    AFound    ;    ᫥ 
         .               ;   ᥣ  㪢 'A'
         .
         .
AFound:                  ; DI - 1 㪠뢠  㪢 'A'
         .
         .
         .

      ᯮ짮   㫥 祭 ॣ  CX  
  権    8086   "ᨬ".  
६,   ப   㫥  -
  CX   믮  権,  LOOP 
祭 CX, ࠢ  0,  믮,  㬥  CX    祭
0FFFFh   ⢫ 室   横.  砥,  
 横  ࠡ  64. ।騩 ਬ,   -
ন  ᥣ,    ॣ஬  CX, ᬠਢ 
।  㪢 A,  ॠ     樨
LOOP ᫥騬 ࠧ:

         .
         .
         .
         cld             ; ᬮ  אַ ࠢ
         sub   di,di     ;   ᬥ饭 0
         mov   al,'A'    ;
         sub   cx,cx     ;   64
ASearchLoop:
         scasb           ; ஢ ᫥騩 
         je    AFound    ;  㪢 'A'
         loop  ASearchLoop ;  ⮬ ᥣ  㪢 'A'
         .
         .
         .
AFound:                  ;  㪢 'A' 㪠뢠 DI - 1
         .
         .
         .

      㣮 ஭, 砩,  CX = 0, ॡ  ᯥ樠쭮
஢ન    ᯮ짮  樨 LOOP ( ⨢ 砥
 ࠡ⠭ 64    ᪨   ண-
ࠬ  ᫥⢨ﬨ).  ⠪   ᯮ짮 -
 JCXZ:

; ணࠬ   64 - 1   祭.
; :  AL -  祭-⥫
;        CX - ⢮ 塞 
;        DS:BX - 砫  
;  BX  CX .
;
FillBytes    PROC NEAR
         jcxz FillBytesEnd        ; ᫨ ᫮ 塞 
                                  ; ࠢ 0, 믮
FillBytesLoop:
         mov   [bx],al            ;  
         inc   bx                 ; 뫪  ᫥騩 
         loop  FillBytesLoop      ; 믮  
                                  ; ᫠ 
FillBytesEnd:
         ret
FillBytes      ENDP

      樨 JCXZ,  祭 CX  ࠢ  0,  楤
FillBytes    ᥣ,   㪠뢠 ॣ
ES, 祭  ॣ AL,  ⮣, ⮡  ⠢  
 .


         ᯮ짮 ४⭮  䫠 ࠢ
-----------------------------------------------------------------

      믮 ப 樨  ᨬ  -
 䫠 ࠢ ᮮ⢥騥 ॣ-㪠⥫ ( -
) SI, DI   ॣ 㢥稢  㬥.

      ࠢ       樨  CLD,
 ⮬ 㪠⥫  㢥稢 (  אַ ࠢ-
),  ⠭   樨 STD,  ⮬ 㪠⥫
 㬥 (  ⭮ ࠢ).  饭-
  ⠭, 䫠 ࠢ ⠥  ⠪  -
   믮 ᫥饩 樨 CLD  STD   -
祭 䫠  ⥪   樨 POPF    IRET.  
祭  㤮 뢠 ⠭  ࠧ  ணࠬ 䫠 ࠢ-
,  ⥬ 믮  ப 権, ࠡ 
  ࠢ, -    ⠪ 㤭 -
㦨 訡,  ਢ     ப-
 権,  ᨬ  ,  믮 
࠭.

     祬  ந室?   設⢥ ணࠬ 䫠  ࠢ-
    ᥣ 뢠, ᪮   אַ -
ࠢ ⨢ , 祬   ⭮  ࠢ,  
ࠡ⠥      ४᭮. ,  ⤥-
 樨,   ᯮ짮 ⮫쪮     ⭮
ࠢ.  ᫨    ਢ窥 㤥 ࠧ㬥,  䫠
ࠢ ᥣ 饭,  㤥  䫠 ᫥  
( ᪮쪨)  楤,  䫠 ࠢ ⠭-
,   १   襩 ணࠬ,    
  אַ ࠢ, 㤥 ࠡ ४᭮,  ⮣ ,
  믮 楤, ⠭ 䫠 ࠢ.

     室 祢. । ᯮ짮  ப  権,
᫨      ⭮ ⮣,  䫠 ࠢ
 ⠭  ࠧ,  ᥣ 㦭  ⠭  
㦭 ﭨ.  饬 砥 訬 ⨫  ⠭-
 䫠  ᮮ⢥饥 祭  砫  楤, 
ᯮ ப 樨.



ࠢ쭮 ᯮ짮 塞 ࠢ ப
-----------------------------------------------------------------

      CMPS ࠢ   ,     ६,
    SCAS ࠢ   . ᫨
। 樥 ᫥ 䨪 REPE,       -
権   믮 ࠢ,   ⠭ ࠢ ᮤন-
 ॣ CX    㦨  ᮢ.    ᮦ,
   ,   䨪ᮢ ७ REP  -
.

     訩 ᯮᮡ  㭪  䨪 REP -
   ᫥ 祭 ᫥ REP () ᫮ "". 
⮬, ਬ, REPE ਭ  ",  E"  (  
",    ࠢ"),  REPNE - ",   ࠢ" 
..



     ணࠬ 뢠  ᯮ짮 ᥣ⮢  㬮砭
-----------------------------------------------------------------

       ப 樨 ᯮ (᫨  )
室  ᥣ  (筨),    ॣ஬ DS,  楫
ᥣ (ਥ),  ॣ஬ ES.  ⮬   
 ਬ, ᪠,  STOSB  ᥣ ,
᪮  ⠬ 筮 室  ,    -
ࠡ뢠     ப 権.   -
 ᫥饥:

         .
         .
         .
         cld             ;   ᪥  אַ ࠢ
         mov   al,0
         mov   cx,80     ;  
         repe  scasb     ;   㫥 ᨬ, ᫨ 

                         ; 
         jz    AllZero   ;  㫥 ᨬ
         dec   di        ; 뫪 ⭮   㫥
                         ; ᨬ
         mov   al,[dl]   ;   㫥 ᨬ
         .
         .
         .
 AllZero:
         .
         .
         .

     ஡  ⮨  ⮬,  ᫨ DS  ES  ᮢ,
᫥   MOV  㤥 㦠  AL ४⭮ -
祭, ⠪   STOSB  ࠡ⠥  ⭮⥫쭮  ॣ
ES,    MOV - ⭮⥫쭮 ॣ DS.  ࠢ쭮   -
樨 MOV ᫥  ᯮ짮 䨪 ८। ᥣ-
 (᭥ ⮣ ਢ   9).

         .
         .
         .
         cld             ;   ᪥  אַ ࠢ
         mov   al,0
         mov   cx,80     ;  
         repe  scasb     ;   㫥 ᨬ, ᫨ 
                         ; 
         jz    AllZero   ;  㫥 ᨬ
         dec   di        ; 뫪 ⭮   㫥
                         ; ᨬ
         mov   al,es:[dl]  ;   㫥 ᨬ
                         ; ( ES!)
         .
         .
         .
 AllZero:
         .
         .
         .

     㦭 ⠪   ⮬,        ८।
ᥣ DS, ᯮ㥬  ⢥ ᥣ-筨, ਬ:

         .
         .
         .
         lods  es:[SourceArray]
         .
         .
         .

ᥣ-ਥ ES ८। . ⮬ ᫥騩  -
ਠ ࠡ  㤥:

         .
         .
         .
         stos  DS:[DestArray]
         .
         .
         .

      訡 ࡮ ᥬ ᯮ  ⠯ ᥬ-
.



   訡  ᯮ짮 ⮢ 権  権  ᫮
-----------------------------------------------------------------

      饬 砥  ப  ⥫쭮  ᯮ짮-
  ᨬ쭮   ࠧ  (筮  ᫮, 
 ᫮  ࠡ  ஬  80386),  ᪮  ⠪
ப 樨 筮 믮 ॥. ਬ:

         .
         .
         .
         mov   cx,200   ; ᫮ ६頥 
         .
         .
         .
         shr   cx,1     ; ८ࠧ    ᫮
         rep   movsw    ; ६  ࠧ஬  ᫮
         .
         .
         .

       8088  ࠡ⠥   50% ॥, 祬:

         .
         .
         .
         mov   cx,200   ; ᫮ ६頥 
         .
         .
         .
         rep   movsw    ; ६  ࠧ஬  
         .
         .
         .

         ⥭樠  訡.  -,
 ८ࠧ 稪   稪 ᫮    
樨:

         shr   cx,1

 , ᫨ ॣ CX , ᪮  ᤢ -
 騩  㤥 .  砨,  祭 CX -
  ,  ࠡ뢠 ᫥騬 ࠧ:

         .
         .
         .
         shr   cx,1     ; ८ࠧ  稪 ᫮
         jnc   MoveWord ; 稪  ?
         movsb          ; ,   - ६
                        ;  
   MoveWord:
         rep   movsw    ; ६饭 ⭮ ᫠ 
                        ; ᫮
         .
         .
         .

     -, 㦭   ⮬,      SHR  
稪   2.  ᯮ짮,  ᪠,  樨 STOSW  
稪 ,      稪 ᫮,    㣨
  ਢ  ࠧ ஡.  ਬ,  ᯮ짮-
 権:

         .
         .
         .
         mov   cx,200      ; ᫮ ६頥 
         .
         .
         .
         rep   movsv       ; ६   ࠧ஬
                           ;  ᫮
         .
         .
         .

㤥 襭 200  (100 ᫮),   ᫥  ।-
⢥  楫 .



                  ᯮ짮 ᪮쪨 䨪ᮢ
-----------------------------------------------------------------

     ப 樨  ᪮쪨 䨪ᠬ   ࠡ-
    .    饬 砥  ᫥ .  ⢥
ਬ  ਢ :

         .
         .
         .
         rep   movs es:[DestArray],ss:[SourceArray]
         .
         .
         .

   䨪 REP, ⠪   䨪  ८।
ᥣ SS. ⢥ 䨪  ਢ  訡, ⠪
  ⭮ 뢠 ப    ४-
  ࠡ   横 ७.   
 Intel,   8086    8088,  ᫥  ⮣,  
ப    ࠡ  㦨 -
뢠,  䨪, ஬ ᫥, .   १-
    ࠡ  ᫮ ࠧ,  ந-
 饭  ୮ ᥣ.

     ᫨  ᮫⭮ 室 ᯮ짮  ப  -
樨   ᪮쪨 䨪ᠬ,   ६ 믮 -
樨 㦭  뢠. ਬ:

         .
         .
         .
         cli
         rep   mov   es:[DestArray],ss:[SourceArray]
         sti
         .
         .
         .



        訡  ᯮ짮 ࠭ ப 権
-----------------------------------------------------------------

     易⥫ ࠭  ࠭ ப 権 -
  ⮫쪮     ࠧ   ८।
ᥣ   ᯥ稢 ⮣,  ᮮ⢥騥 祩 -
 ⢨⥫쭮  㯭. ਬ,  ணࠬ:

         .
         .
         .
DestArray  DW   256  dup (?)
         .
         .
         .
         cld                     ;   אַ ࠢ
                                 ;  
         mov   al,'*'            ;   
         mov   cx,256            ; ᫮ 塞 ᫮
         mov   di,0              ;  砫 
         rep   stos es:[DestArray] ; 믮 
         .
         .
         .

256 , 稭  ᬥ饭 0  ᥣ ES,  ᨬ-
 '*',  ᨬ  ⮣,    室  ᨢ  DestArray.
ES:[DestArray]   㪠뢠 ᥬ,   㦭 ᯮ짮-
  STOSW, ⠪  DestArray -  ᨢ ᫮. -
 ᮤন SI / DI,    ࠭,  ।,  
ᬥ饭 㤥 ⢫   ப . 
  ,  ᯮ짮  易⥫  ࠭ (࠭) 
ப  ᯥ稢,  , ਬ, 砩 
㤥  砩 ⢫ ᫮   ⮢ -
.

     筮, 易⥫ ࠭  樨 XLAT ᯮ-
 ⮫쪮  ஢ન ⨯  ८। ᥣ. ண-
ࠬ:

         .
         .
         .
LookUpTable    LABEL   BYTE
         .
         .
         .
ASCIITable     LABEL   BYTE
         .
         .
         .
         mov   bx,OFFSET ASCIITabel      ; 뫪  ⠡
                                         ; ᬮ
         mov   al,[CharacterToTranslate] ;  
         xlat  [LookUpTable]             ; ⮡ࠧ 
         .
         .
         .

⮡ࠦ  ,   ॣ஬ AL,  ⠡ ASCIITable,
    LookUpTable,  ᥬ  㤥 ࠡ ࠢ쭮,
᪮ ,   ࠭  樨 XLAT -  ᯥ-
祭  ⮢  ࠧ   ८। ᥣ. 
XLAT ᥣ ⮡ࠦ (࠭᫨) ᮤন  ᬥ饭 BX  +
AL, ᨬ  ᯮ㥬 ࠭.




ணࠬ 뢠    䥪
-----------------------------------------------------------------

     ᪮ ணࠬ ᥬ ᠭ    "த"  몥
 8086,    ﭨ ॣ஢  䫠
 8086  ।⠢  ࠡ饣  ᥬ
ணࠬ  ᮡ . 設⢮ ᯮᮡ,   -
 ணࠬ  ᥬ   ﭨ  -
, 筮 ।⢥  祢. ਬ, :

             add   bx,[Grade]

ਡ 16-⮢ 祭   Grade  BX , ⮡  -
ࠧ  १  ᫮,   䫠 ९, ,
, ⥫쭮 ७, ⭮  ७.  -
  樨    ﭨ   祢
ࠧ. ᬮਬ ⪮   ⠪ 権.



                ᮤন ॣ  㬭
-----------------------------------------------------------------

       㬭  (8-ࠧ來   祭      8-ࠧ來,
16-ࠧ來 祭  16-ࠧ來  32-ࠧ來 祭
 32-ࠧ來) ᥣ  ᮤন  ࠩ  -
 ॣ, ⫨筮  ⮩  ,  ᯮ-
  ⢥ ࠭-筨.     ਢ  
⮬,   १ ६  8-ࠧ來 祭 㤥
 16  ,  १ ६ 16-ࠧ來 祭 -
32 ,  32-ࠧ來 祭 - 64 . ६ ࠭
-筨  ࠭-ਥ    6.1.

                                                       6.1
        筨  ਥ   MUL  IMUL
-----------------------------------------------------------------
筨               筨                 ਥ
 ࠭      
         ࠭   ࠭     訩  訩    ਬ
-----------------------------------------------------------------
 88            reg8 (*)    AL          AH       AL       mul dl

1616          reg16 (**)   AX          DX       AX      imul bx

3232 (***)    reg32 (****) EAX         EDX      EAX     mul esi
-----------------------------------------------------------------

*     reg8  ।⠢ ᮡ   ᫥ ॣ஢:
      AH, AL, BH, BL, CH, CL, DH  DL.

**    reg16     ᫥ ॣ஢:  AX, BX, CX,
      DX, SI, DI, BP  SP.

***     㬭  3232  ࠬ 8086, 8088, 80186,
      80188  80286  ন.0

****  reg32      ᫥  ॣ஢:  EAX, EBX,
      ECX, EDX, ESI, EDI, EBP  ESP.

        룫廊 筮 ,   ᨭ⠪ -
権 MUL  IMUL   ⠫, ⠪   㪠뢠
⮫쪮   ࠭  ࠧ,   ॣ ᯮ㥬  -
⢥ ࠭-ਥ,   ࠧ㬥.    
⠫ ਢ  ⮬,        ᯮ-
 -  ॣ.    砥,  -
,  ᪠,  ணࠬ  ,    १ ६
16-ࠧ來 祭  16-ࠧ來 稭,   -
  AX.   ⮬  뢠,    ᮤন -
 CX.  ⮬ ᥣ 㦭   ⮬,   ᯮ짮-
  権  MUL    IMUL 㭨⮦ ᮤন  ⮫쪮
ॣ஢ AL, AX,  EAX,  ⠪  AH, DX  EDX.




 ப   ᪮쪮 ॣ஢
-----------------------------------------------------------------

      믮 ⮫쪮   ப  権  (MOVS,
STOS, LODS, CMPS  SCAS)   ᮤন ᪮쪨
䫠    ॣ஢.    樨 MUL,    ப
    䥪  ࠦ    ࠭ 
権.  ᯮ짮  権 㦭    
⮬,   SI  DI (  ॣ) 㢥稢  㬥-
 ( ᨬ  ﭨ 䫠  ࠢ)    
믮  ப 樨.  CX ⠪ 㬥蠥 
ࠩ   ࠧ,   ᯮ짮 䨪 REP - -
   ,   ᮤন  ⠭ ࠢ .

            ⤥묨 ﬨ 䫠 ७
-----------------------------------------------------------------

       ६   樨 "।" ࠧ
  ᮤন  ॣ஢   䫠, 㣨 樨 
    䫠,    .  ਬ,
:

            inc   ah

룫廊 ᪨ ⭮ 樨:

            add   ah,1

  ⢨⥫쭮 ⠪,    ᪫祭.    ६  
  ADD   砥 ᫨誮 讣  ࠭-ਥ
१ ⠭ 䫠 ७,  INC  -
ࠧ    .  १ 樨:

            .
            .
            .
            add   ax,1
            adc   dx,0
            .
            .
            .

 ᯮ짮  㢥祭 32-⮢ 祭,  ࠭-
  ॣ DX:AX,  樨:

            .
            .
            .
            inc   ax
            adc   dx,0
            .
            .
            .

.  ᠬ    樨 DEC,   ६ 
樨 LOOP, LOOPZ  LOOPNZ    ﭨ 䫠. 
ࠪ⨪    룮 ᯮ짮, ⠪   ⤥-
     㤮 믮    -
権  襭 ⠭ 䫠 ७. ᥣ  筮
,    ᯮ㥬  . ᫨  
 ᮬ ⭮⥫쭮 ⮣,   ⭠ 
 ᮤন 䫠,    ࠢ筨.



           ணࠬ   ᯮ ﭨ 䫠
-----------------------------------------------------------------

     ﭨ 䫠 ࠭      ,    ᫥
     . 筮   ᫨誮  ࢠ
६. 襩  ࠪ⨪  ணࠬ஢    
᪮३襥  ᯮ짮 䫠  ⠭,   -
  ⥭樠 訡. ਬ,    ஢-
  ᫮,   ᮤন - ॣ஢,  ⮫쪮
᫥ ⮣  ᮮ⢥⢨  १⮬ ஢ન 믮 -
室. 樨:

            .
            .
            .
            cmp   ax,1
            mov   ax,0
            jg    HandlePositive
            .
            .
            .

।⠢ ᮡ  ⨬  ᯮᮡ  ஢ન  ﭨ
ॣ AX, ⥬ ⠭   祭 0  ࠡ⪨ १-
.  㣮 ஭, 樨:

            .
            .
            .
            cmp   ax,1
            sub   ax,ax
            jg    HandlePositive
            .
            .
            .

 룫  ਢ⥫쭮, ᪮ ⠪  
  믮  ॥, ࠢ쭮 ࠡ  , ⠪  
⠭   ᮤন    䫠,  ⠭  
ࠢ.   ⨯筠 ஡, ,    -
 ᯮ짮 ﭨ 䫠.



        ⠩ ࠭    ।⢥ ࠭
-----------------------------------------------------------------

     ணࠬ  ᥬ  뫠     ६
   ᬥ饭,   祭, ࠭饥  ⮩ ६-
.  ᮦ,  몥 ᥬ    ண  
祢    ⭮襭  ⮣,   믮   
뫮.  १ 뫪  ६    ᬥ饭  
 祭  .

      . 6.1  ࠧ稥   ᬥ饭    祭
६   . ६   ࠧ஬  ᫮ MemLoc
 ᬥ饭 5002h,  祭  ࠢ 1234h.

                                     |
                              ---------------
                   3000 4FFE  |    0001     |
                              |-------------|  祭 MemLoc
                   3000 5000  |    205F     |         |
     饭                 |-------------|         |
     MemLoc        3000 5002  |    1234 <---|----------
       |                ----  |-------------|
       |                 ^    |             |
       |                 |    |             |
       -------------------    |             |
                   3000 5004  |    9145     |
                              |-------------|
                   3000 5006  |    0000     |
                              ---------------

     . 6.1 ६  : 祭  ᬥ饭.

      . 6.1 ᬥ饭 ६    ࠧ஬    ᫮
MemLoc  ।⠢ ᮡ ⠭ 5002,   
   OFFSET. ਬ, :

             mov   bx,OFFSET MemLoc

㦠 祭 5002h  ॣ BX. 祭 5002h ।⠢-
  ᮡ ।⢥ ࠭. 㣨 ᫮,  ஥
।⢥     .

     祭 MemLoc  1234h.  뢠    
 ᬥ饭 5002h  ᥣ .   ᯮᮡ 뢠
 祭 ⮨  㧪  ॣ BX, SI, DI    BP
ᬥ饭  MemLoc  ᯮ짮  ॣ  樨 
. 樨:

             mov   bx,OFFSET MemLoc
             mov   ax,[bx]

㦠 祭 MemLoc  ॣ  AX.  祭  MemLoc  
⠪ 㧨 ।⢥  AX   樨:

             mov   ax,MemLoc
 
             mov   ax,[MemLoc]

      祭 1234h 砥,  אַ,    -
।⢥  ࠭:   MOV ᯮ ஥  
ᬥ饭 5002h  㦠  AX 祭  ᬥ饭 5002h, -
஥   砥 ࠢ 1234h.

      ⮣ 祭 1234h  뢠 ﭭ  ६
MemLoc. ਬ, 樨:

             mov   [MemLoc],5555h
             mov   ax,[MemLoc]

㦠  ॣ AX 祭 5555h,   1234h.

     ᭮  砥  ⮬,  ᫨ ᬥ饭  ६-
  MemLoc ।⠢ ᮡ 祭-⠭,  -
 䨪஢  ᮬ    ᥣ  ,    祭
MemLoc -  塞 ᫮, ࠭饥   . -
 믮 権:

             mov   [MemLoc],1
             add   [MemLoc],3

६ MemLoc 砥 祭 3,  :

             add   OFFSET MemLoc,2

⭠ 樨:

             add   5002h,2

   ᫠, ⠪     믮  
ADD, ਡ  ⠭  㣮.

     ⥫쭮  饩 訡  ,  -
 ᠭ ணࠬ  뢠 ᯮ짮 
OFFSET, ਬ:

             mov   si,MemLoc

 㦭 ᯮ짮 ᬥ饭 MemLoc.      
ப   룫廊 ࠢ쭮,  ⠪  MemLoc -  ६-
 ࠧ஬  ᫮,   ப  ਢ   訡  ᥬ-
஢.   믮  SI  㦥 ᮤঠ-
  ६ MemLoc  (1234h),    ᬥ饭 (5002h),
 १  ।᪠㥬.

      ᯮᮡ  ⮩ ஡ ,    -
  ࠢ   뫪     ᪮-
.  । 뫪   ⠭ 㤥  㪠뢠
䨪  OFFSET,    뫪    -   
᪮,  ࠭ ᫥  ।    -
짮    ६ .  ⠪ ᮣ襭 ࠡ
権:

             mov   si,OFFSET MemLoc
 
             mov   si,[MemLoc]

⠭ ᮢ襭 ⭮,   ६  :

             mov   si,MemLoc

㤥 ࠦ.



                           ࠭ ᥣ⮢
-----------------------------------------------------------------

        㤭 ⮢   ணࠬ஢  
஢ 8086 砥  ⮬,     -
,    讬 ᨢ .   㯭  ⮫쪮  
,       ࠢ 64  易  ᥣ -
஬. ᯮ짮 ᥣ⮢  ਢ  㤭㫮
訡,  ⠪   ᫨ ணࠬ ⠥    
殬 ᥣ,    ⢨⥫쭮 ୥     㤥
  砫 ᥣ.

      ⢥ ਬ ।,  ,  稭  
 10000h, ᮤন ,   . 6.2.  -
 DS ⠭  祭 1000h, ணࠬ,  -
頥   ப "Testing"   1000:FFF9, ᫥ ᨬ g
    1000:FFFF,  頥          
1000:0000, ⠪  ᬥ饭   ॢ 0FFFFh (ᨬ-
 16-⮢ 祭).

                              , 㥬 ⭮⥫쭮
                             DS, ࠢ 1000h ( 1000 0000)
                  |                       |
           ---------------                |
    10000  |     21      |<----------------
           |-------------|
    10001  |     90      |
           |-------------|
    10002  |     29      |
           |-------------|
    10003  |     52      |
           |-------------|
    10004  |     7F      |
           ---------------

           ---------------
    1FFF9  |   54 ('T')  |
           |-------------|
    1FFFA  |   65 ('e')  |
           |-------------|
    1FFFB  |   73 ('s')  |
           |-------------|
    1FFFC  |   74 ('t')  |
           |-------------|
    1FFFD  |   69 ('i')  |    ᫥ , 㥬
           |-------------|     ⭮⥫쭮 DS = 1000h
    1FFFE  |   6E ('n')  |       ( 1000 FFFF)
           |-------------|               |
    1FFFF  |   67 ('g')  |<---------------
           |-------------|
    20000  |   00 (NULL) |
           ---------------

     . 6.2 ਬ ⨦ ࠭ ᥣ.

     । ⥯,   DS:SI, ࠢ 1000:FFF9, 뢠-
  ணࠬ   ८ࠧ ப "Testing"  孨
ॣ:

; ணࠬ  ८ࠧ 饩 㫥
; ᨬ ப  孨 ॣ.
;
; :   DS:DI - 㪠⥫  ப.
;
ToUpper   PROC NEAR
          mov   ax,[si]         ;  ᫥騩 ᨬ
          cmp   al,0            ; ᫨ 0...
          jz    ToUpperDone     ; ...८ࠧ ப
          cmp   al,'a'          ;  筠 㪢?
          jb    ToUpperCase     ;  筠 㪢
          cmp   al,'z'
          ja    ToUpperNext     ;  筠 㪢
          and   al,NOT 20h      ; 筠 㪢, ८ࠧ
                                ;   孨 ॣ
          mov   [si],al         ; ࠭ ய 㪢
ToUpperNext:
          inc   si              ; 뫪  ᫥騩 ᨬ
          jmp   ToUpper
ToUpperDone:
          ret
ToUpper   ENDP

     ᫥ ⮣,  楤  ToUpper  ࠡ⠥    ᥬ
ᨬ  ப,  SI    祭  0FFFFh  0. (SI - 
16-ࠧ來  ॣ,  ⮬      ॢ襭  祭
0FFFFh  믮 .) 騩 ப 㫥 , -
ᠭ   20000h, ⨣  㤥.  ⮣  -
 筥 ८ࠧ뢠  ⭮騥     
10000h   ⠭,    㫥 .   
 ⠯     맢 ४ -
 ணࠬ.  ⠪ 訡, 맢 砩 -
   ⨦ ணࠬ    ᥣ,  뢠  祭
㤭 ᫥, ᪮  訡   ᮢᥬ 
㣮  ணࠬ   㣮 ६.

      ४   㤭. 㦭  ᯥ-
稢, ⮡  ணࠬ ।७  室  
ᥣ. ஬ ⮣  ᫥      ᫮    ᮬ
0FFFFh. 設  "".



         ࠭ ﭨ  ࠡ稪 뢠
-----------------------------------------------------------------

     ࠡ稪 뢠 -   ணࠬ,      -
⢫ 室  ⭮ 뢠, ਬ, 뢠
 . ࠡ稪 뢠 믮 ⢮ 㭪権,
⠪,    ਧ    ⥬ ⠩.
뢠  ந   ६   ࠡ  
ணࠬ,  ⮬ ࠡ稪 뢠 ᫥ 襭 ࠡ
(室  ࠡ稪)   ॣ  䫠 
 筮  ⮦ ᠬ ﭨ, ஥ 뫮  室  -
稪 뢠. ᫨   ,  ணࠬ,  믮-
 ன ந諮 뢠,  㦨,  -
  । ࠧ .

     ਬ,  믮 ணࠬ:

              .
              .
              .
              mov   ax,[ReturnValue]
              ret
              .
              .
              .

뢠  ந  ⨬   ﬨ.  ᫨
ࠡ稪 뢠  ࠭ ᮤন AX,   頥
 뢠  ணࠬ  祭  㤥 ᭮뢠  ⮬, 
   ࠡ稪  뢠,         祭  ६
ReturnValue.

     ⮬   ࠡ稪  뢠    ࠧ
࠭ ᮤন  ॣ஢.   ᪠  ࠭
⮫쪮  ॣ,   ࠡ稪  뢠,  
襩 ࠭⨨   室  ࠡ稪   ॣ-
  ⥪,   室 - ⠭   ⥪.     
४        ࠡ稪  뢠-
,    ᯮ ⥫ ॣ, -
  ⮬  ॣ ࠭.

     ࠭  䫠    ࠡ稪 뢠 室 
.  ந室 뢠,    䫠  ⮬᪨
  ⥪,   ࠡ稪 뢠  믮  -
 IRET, ⮡   ࢠ ணࠬ, 䫠  -
᪨ ⠭  ⥪. ⮣ ᮫⭮ 室-
 ࠭  ࠡ稪 뢠  ॣ஢ 
᫥饥 ࠢ:   ।    ﭨ  -
஢  䫠  室  ࠡ稪 뢠.  -
 ਬ஬ ⮣  ࠡ稪  뢠,    -
 ப  樨,  ⠭ ।⥫쭮  
ࠧ 䫠 ࠢ. 㦭   ⮬,   ந-
 뢠,   믮  ணࠬ, ⮬ ᫥
⮣,    ࠭ ॣ ࢠ ணࠬ,   
⠭  ॣ  ( ᥣ ॣ)  䫠 ⠪
ࠧ,    室. 쪮 ᫥ ⮣   믮-
 㣨 㭪樨.



    뢠  । 㯯  ࠭  ⠡ 
-----------------------------------------------------------------

     楯 㯯 ᥣ⮢   .   -
,    ᪮쪮  ᥣ⮢  ਭ     ⮩ 
㯯,  騪   ᥣ      ᥣ.
  ⮬    㯯஢ ᥣ  ⭮-
⥫쭮   ⮣  ᥣ⭮ ॣ.  . 6.3 -
  ᥣ: Seg1, Seg2  Seg3, 㯯஢  GroupSeg.
  ᥬ ६ ᥣ⠬ ⢫ ६  -
⥫쭮   ᥣ⭮ ॣ, 㦥  -
ᮬ GroupSeg.

                                     饭 0  GroupSeg
                                     = ᬥ饭 0  Seg1
                                             |
             / ---------------------- <-------
            |  |                    |
            |  |                    |
            |  |       Seg1         |     饭 2000h 
            |  |    (ࠧ 8K)     |     GroupSeg = ᬥ饭 0
            |  |                    |      Seg2
            |  |                    |        |
            |  |--------------------| <-------
            |  |                    |
            |  |                    |
            |  |       Seg2         |
            |  |    (ࠧ 12K)    |
  GroupSeg  |  |                    |     饭 5000h 
            |  |                    |     GroupSeg = ᬥ饭 0
            |  |                    |      Seg3
            |  |                    |        |
            |  |--------------------| <-------
            |  |                    |
            |  |                    |
            |  |       Seg3         |
            |  |    (ࠧ 64K)    |
            |  |                    |
            |  |                    |
            |  |                    |
            |  |                    |
             \ ----------------------

     . 6.3  ᥣ, ꥤ   㯯 ᥣ⮢.

     㯯 ᥣ⮢   ᪨ ࠧ  
  ⥩  室 㦠 ᥣ ॣ -
 ࠧ,    ३   ᪮  -
  㣮.

      ᮦ,  ࠡ⪥  㯯 ᥣ⮢   ஠ᥬ
  Microsoft  MASM   ஡, ⮬,   -
 ࡮ ᥬ, 㯯 ᥣ⮢  ਢ  -
. 㯯 ᥣ⮢ ᯮ짮      -
ᥬ  몠 ᮪ ஢ (ਬ, ).

     襭  ० ࡮ ᥬ (Ideal mode)   
  ஡,  易    । 㯯 ᥣ⮢.  
    室  ணࠬ஢  ⨫  MASM  
襭 ०.

     ஡,  ஦ MASM  ࠡ  㯯  ᥣ-
⮢ 砥  ⮬,  MASM  ᬥ饭, -
祭   樨 OFFSET    ᥣ  㯯,  
ᬥ饭    ⮬ ᥣ,    ᬥ饭  㯯 ᥣ⮢.
ਬ, ᫨   㯯 ᥣ⮢,   . 6.3,
 ᥬ ࠭᫨஢  :

               mov   ax,OFFSET Var1

               mov   ax,0

⠪  Var1  -  ᬥ饭 0  Seg2,  Var1 ।⠢ -
 ᬥ饭 2000h  GroupSeg. ᪮ ।,  -
  㯯  ᥣ⮢  ⭮⥫쭮 㯯 ᥣ⮢,
  ⭮⥫쭮 ⤥쭮 ᥣ,  ஦  ஡.

     襭   ᯮ짮  䨪  ।
㯯. ப:

               mov   ax,OFFSET GroupSeg:Var1

 믮 ४⭮ ᥬ஢ Var1,  
⭮⥫쭮 㯯 ᥣ⮢ GruopSeg.

      MASM  㣨  ஡, 騥  ᯮ-
㥬   㯯 ᥣ⮢ ⠡ .    OFFSET,
ᬥ饭, ᥬ㥬  ⠡ ,    ⭮-
⥫쭮  ᥣ⮢,     ⭮⥫쭮 㯯 ᥣ⮢.  ⮩
஡   ᫥饬 ਬ:

Stack            SEGMENT WORD STASK 'STACK'
        DB       512 DUP (?)         ; १ࢨ஢ ࠭-
                                     ; ⢮  ⥪ ࠧ஢
                                     ; 1/2 
Stack            ENDS

;
; । 㯯 ᥣ  DGROUP, 
;  Data1  Data2
;
DGROUP           GROUP   Data1, Data2

;
;  ᥣ  DGROUP.
;
Data1            SEGMENT WORD PUBLIC 'DATA'
Scratch          DB      100h DUP (0)   ;  ࠧ஬ 256K
Data1            ENDS

;
; ன ᥣ  DGROUP.
;
Data2            SEGMENT WORD PUBLIC 'DATA'
Buffer           DB      100h DUP ('@') ;  ࠧ஬ 256,
                                        ;   @
BufferPtr        DW      Buffer         ; 㪠⥫  
Data2            ENDS

Code             SEGMENT PARA PUBLIC 'CODE'
                 ASSUME  CS:Code, DS:DGROUP

;
Start            PROC NEAR
         mov   ax,DGROUP
         mov   ds,ax          ; DS 㪠뢠  DGROUP
         mov   bx,OFFSET GROUP:BufferPtr ; 뫪  㪠⥫
                              ; 
                              ; ( 祭 ४⭮
                              ; ᬥ饭 ᯮ
                              ; । 㯯)
         mov   bx,[bx]        ; cc뫪  ᠬ 

;
; (  ᫥   ࠡ⪨ )
;
         mov   ah,4Ch         ; 㭪 DOS 襭
                              ; ணࠬ
         int   21h            ;  ணࠬ 
                              ;   DOS
Start          ENDP
Code           ENDS
         END   Start

       ணࠬ ᬥ饭 BufferPtr  樨:

         mov   bx,OFFSET DGROUP:BufferPtr

ᥬ ४⭮, ⠪  ᯮ 䨪  ।-
 DGROUP:㯯.  㣠 뫪  ᬥ饭:

BufferPtr      DW   Buffer

  ਢ  樠樨 祭 BufferPtr  ᬥ-
饭  Buffer,  㤥 ४⭮ ᥬ஢, ⠪  ᬥ-
饭 Buffer  ⭮⥫쭮 ᥣ Data2,      ⭮-
⥫쭮 㯯 ᥣ⮢ DGROUP. 襭    -
짮 䨪 । DGROUP,  祣 㦭 

BufferPtr      DW   Buffer



BufferPtr      DW   DGROUP:Buffer  ; 㪠⥫  Buffer
                                   ; ( 祭
                                   ; ४⭮ 㪠⥫
                                   ; ᯮ
                                   ; । 㯯)

     ய 䨪 । 㯯  ᯮ짮  㯯
ᥣ⮢   ० MASM ਢ    訡,
⠪   ணࠬ   ⮬ 믮  ⥭,  室
  䨪  ⥩ .  ⢥ 饣 -
  ४  ᯮ짮 㯯  ᥬ-
    ०  MASM,  ᫨  ⮣  .  
室 ᯮ짮 㯯 ᥣ⮢ (ਬ,  ࣠-
樨 䥩  몮 ᮪ ஢)  뢠  
ᬥ饭    㯯 ᯮ짮 䨪  ।
㯯.  ⨬ 䨪ᮬ 쭮  짮, 㦭 ⮫쪮
 뢠  ⮬.

      ⮤  ࠡ   㯯  ᥣ⮢    ०
MASM    ᯮ짮    MOV OFFSET 樨 LEA.
ਬ, :

               lea   ax,Var1

믮   ⢨,   :

               mov   ax,OFFSET GroupSeg:Var1

 ॡ ᯮ짮 䨪 । 㯯.  -
  LEA       믮 ᪮쪮 , 祬
 MOV OFFSET.

     ,  ᯮ짮  㯯  ᥣ⮢  ஡  
 ⮫쪮  ᬥ饭ﬨ,    㯮  .  ⠪
ப, :

                mov   ax,[Var1]

 ॡ ᯮ짮 䨪 । 㯯.




                  7. 䥩 ࡮ ᥬ  ࡮ 
-----------------------------------------------------------------

       ணࠬ    ࠧࠡ뢠  ணࠬ
楫    몥 ᥬ (  ), 㣨 ।
 ᭮  ணࠬ  몥 ᮪ ஢, -
   ᥬ ⮫쪮  ⢫ ࠢ -
 ஢   ॡ ᮪ ந⥫쭮. -
  ।    २⢥   ᥬ, ⮫쪮
 ᯮ 樨   ।⢠ 몮 -
 ஢.

      ᬥ蠭 ணࠬ஢  몥 ᮪  ஢  
ᥬ  ४᭮ 室 ࡮ .  ꥤ  -
ᥬ     ।ᬮ७  ,  楫   堭.
।⢮ ஥ ᥬ  ࡮  ᯥ稢  
㤮 ᯮᮡ  祭   ᥬ  ।⢥  
㭪 .  ,  ।⠥  ணࠬ஢  -
ᥬ ᯮ짮 ⤥  㫨,  楫  ᠭ  
⮬  몥,  ⠪ 㫨  ᥬ஢ ⤥쭮,  ⥬
  ணࠬ ࡮ .

     砫  ᬮਬ ᯮ짮  ࡮    ஥
ᥬ.  ⥬  ஡ 㤨  ⤥쭮 ᥬ-
஢ 㫥  ࡮ ᥬ  ﬨ ࡮   ᫥-
㥬  맮 㭪権 ࡮ ᥬ   ࡮ . -
,   ᬮਬ 맮 㭪権 ࡮   ࡮ ᥬ.

           ਬ砭:   ਬ  ࡮ ,     
                       ࡮  ᨨ 1.5  .

            ᯮ짮  ࡮  ஥ ᥬ
-----------------------------------------------------------------

     ᫨  室 ᪠   ᯮᮡ  ᯮ짮
ᥬ  ⮭  ணࠬ  몥 ,   , -
,         樨
ᥬ   ᪨  ணࠬ  몥 ,  ᪮-
 ᥬ    ࠢ  ஢ -
   ⢥ 襭  ந⥫쭮.  ᫨  
⠪,     ⥫ ⠪ 뢠  묨 ᫮-
ﬨ ࣠樨 䥩 ࡮ ᥬ  .  ⮣,
,  ⭮, ⥫    ᤥ,     
 ⠫쭮  ணࠬ  몥 ,    ⮡ 㦥 ⫠-
  ணࠬ    諮  .

TASM2 #2-5/              = 141 =


      ࡮     ⢨     ஥
ᥬ.  ஥  ᥬ -    ,  -
  ࠪ᪨   ᥬ    ணࠬ  
몥 ,  ࠭  㯠  ⠭⠬, ६
  㭪 .   ᠬ  ஥ ᥬ ४᭮
室  ⮫쪮  ⮭    ணࠬ,  ᪮  
᢮     ਡ  ணࠬ஢  ⮬
ᥬ.  ਬ,  ᮪ந⥫    ⥪
࡮  ᠭ  ᯮ짮 ஥ ᥬ.  -
 ᥬ      ணࠬ 筮 ,
  .   ⮬   ਤ ᯮ  ⠫
ᬥ襭 몮.

     ᬮਬ ᫥騩   ,  㦨 ਬ஬  -
짮 ஥ ᥬ:

          .
          .
          .
          i = 0;       /* ⠭ i  祭 0 ( ) */
          asm dec   WORD PTR i; /* 㬥 祭 i (
                          ᥬ */
          i++;         /* 㢥 i ( ) */
          .
          .
          .

     ࢠ  ᫥ ப 룫 筮 筮,   
।⠢  ᮡ  ।  ப?   㦥 ୮ -
, ப, 稭  asm, -  ஥   ᥬ-
.  ᫨  室 ᯮ짮 ⫠稪  ᬠਢ
믮塞   ,  祭  樨 室 ,
 ਬ ,   㦨,   ᪮஢
 ஢:

         i = 0;

         i++;

 祭 樨:

          .
          .
          .
          mov   WORD PTR [bp-02],0000

TASM2 #2-5/              = 142 =

          dec   WORD PTR [bp-02]
          inc   WORD PTR [bp-02]
          .
          .
          .

   ஥  ᥬ DEC.

      ࠧ,  ࡮  㦨 祢 ᫮  asm,
㪠뢠饥,   ப ᥬ,  頥  ப
ᥬ ।⢥  ᪮஢    -
: 뫪  ६  ८ࠧ  ᮮ⢥騩 -
  ᥬ (뫪  i  ।饬 ਬ 뫠 -
 WORD PTR [BP-2]).  , 祢 ᫮ asm -
    ணࠬ   ࠪ᪨     -
ᥬ  (     ࠭祭,   
᪠   ࠧ "࠭祭  ᯮ짮 ஥-
 ᥬ").

        ᥬ  ।⢥    
࡮  룫廊    ᪮쪮 ᪮.  ᠬ
,  ।   ᯮ짮 ஥ ᥬ
.  ࡮   ᢮  ⠪ ࠧ, ⮡ -
  ⥭樠쭮  ⢨  ஥ -
ᥬ஬.    ,  ࠢ쭮 㭪樮騩 ஥
 ᥬ ।  ਢ  쥧 訡.

      㣮 ஭,  ࠢ쭮 ᠭ  ᥬ-
 (஥   ⤥쭮 㫥) ⥭樠쭮  
ᥡ ࠢ쭮:   業,     ᥬ  室
    ᪮    ࠢ   ஢.
 訡  ஥  ᥬ ࠧ  -
,  祬  ணࠬ, 楫 ᠭ  ᥬ, ᪮
࡮      ᥡ ⢮ "祩",  ⠪,   室 
㭪樨  室  ,  । ࠬ஢   뤥  
 ६.   ⮣,   ᪠,   २⢠
ᯮ짮   ஥    ᥬ  ४뢠  
⭮,  묨  ⮫ - 砩 訡
  ᥬ.

      ணࠬ஢  ᯮ짮  ஥  ᥬ
 ᤥ ᪮쪮  砭:

     1.  ⮡ ᯮ짮 ஥ ᥬ,     -
          TCC.EXE,   ࡮ . TC.EXE (-
           ࡮ )  ন ஥ ᥬ-

TASM2 #2-5/              = 143 =

         .

     2.  쬠 ,   ⨫ TLINK,   -
         ⠢   襩  ࡮ ᥬ,  ᮢ
          ᨥ ⮩ ⨫,  ⠢  
         ࡮  .   ᯥ祭 প ࡮ ᥬ 
         ⨫ TLINK 뫨  ᥭ  ⢥    ,
         ᪮     ᮬ  த
          쭥襬,    㫥 ࡮ , -
         ঠ  ஥ 樨 ᥬ, ᯮ짮
         ᠬ ᫥  TLINK,    . -
            ᯮᮡ ࠭஢   ࠭-
            ᪥,  ᯮ㥬    ᪠  騪
         TLINK, ⮫쪮  䠩 TLINK.EXE.  ᨨ ⮣
         䠩   ᠬ ᫥  ।    
         䠩,   砫   Borland.




TASM2 #2-5/              = 144 =

                    ࠡ⠥ ஥ ᥬ
-----------------------------------------------------------------

     筮 ࡮    䠩  室    
몥      ꥪ  䠩,  ⥬ 뢠 ⨫ TLINK 
 ꥪ 䠩  믮塞 ணࠬ.    横
樨       . 7.1 ⮡  
横, 㦭  :

        tcc _䠩

 㪠뢠 ࡮ ,  㦭 ᭠砫 ஢  䠩
_䠩.   䠩 _䠩.OBJ,  ⥬ 맢 TLINK  -
 䠩 _䠩.OBJ  䠩 _䠩.EXE.

               ----------------------------------
               |   室 䠩  몥     |
               |          _䠩.           |
               ----------------------------------
                              |
                              V
                         ------------
                        (  ࡮   )      
                         ------------
                              |
                              V
               ----------------------------------
               |     ꥪ 䠩 몠     |
               |          _䠩.OBJ         |
               ----------------------------------
                              |
                              V
                         ------------
                        (   TLINK    )      
                         ------------
                              |
                              V
               ----------------------------------
               |         믮塞 䠩       |
               |          _䠩.EXE         |
               ----------------------------------

     . 7.1  樨   ࡮ .

       ᯮ짮 ஥ ᥬ ࡮  -
  横 樨   ⥫ 蠣.

TASM2 #2-5/              = 145 =


      ࠡ⪥ ஬ ࡮   ,   -
ন ஥  ᥬ,  ᭠砫   -
  室 䠩  몥 ᥬ,   ⥬  ࠭-
樨  祭  ᥬ  ꥪ  뢠 ࡮
ᥬ. ᫥ ⮣   ꥪ 䠩 뢠
⨫ TLINK.      .  7.2.  
横     ப:

        tcc _䠩

 㪠뢠 ࡮ ,  ᭠砫 㦭 ஢  䠩
_䠩.    䠩 _䠩.ASM, ⮬ 맢 ࡮ ᥬ
 ᥬ஢ 䠩 _䠩.ASM  䠩  _䠩.OBJ,  
⥬ 맢  ⨫ TLINK   䠩 _䠩.OBJ 
䠩 _䠩.EXE.

               ----------------------------------
               |   室 䠩  몥     |
               |          _䠩.           |
               ----------------------------------
                              |
                              V
                         ------------
                        (  ࡮   )      
                         ------------
                              |
                              V
               ----------------------------------
               |   室 䠩  ᥬ  |
               |          _䠩.ASM         |
               ----------------------------------
                              |
                              V
                      ------------------
                     (  ࡮ ᥬ )      ᥬ஢
                      ------------------
                              |
                              V
               ----------------------------------
               |     ꥪ 䠩 몠     |
               |          _䠩.OBJ         |
               ----------------------------------
                              |
                              V
                         ------------

TASM2 #2-5/              = 146 =

                        (   TLINK    )      
                         ------------
                              |
                              V
               ----------------------------------
               |         믮塞 䠩       |
               |          _䠩.EXE         |
               ----------------------------------

     . 7.2  樨, ᥬ஢   ࡮
.

     ஥   ᥬ    ।  ஬
࡮   䠩  몥 ᥬ.  ५  奬 -
  ⮬,  ࡮   㦭 祣   ᥬ஢
஥ ,   ⮣ ࡮   室 
몠     ஢,   ஥  (஢ ᥬ-
),  ⥬  ࡮ ᥬ 믮 ࠭.

     ⮡ 㢨,  ࡮  ࠡ⠥  ஥ ᥬ-
஬,    PLUSONE.C ᫥ ணࠬ:

#include  <stdio.h>

int   main(void)
{
     int  TestValue;

     scanf('%d, &testValue);    /*  祭
                                    㢥祭 */
     asm   inc    WORD PTR TestValue; /* 㢥 
                                   ( ᥬ) */
     printf("%d",TestValue);    /*  㢥祭
                                   祭 */
}

 ᪮㥬     ப:

        tcc -s plusone

     ࠬ -s 㪠뢠 ࡮  ,    㦭  ᪮஢
ணࠬ      몥 ᥬ  ⠭. ᫥ ⮣
 襬 ᪥  䠩 PLUSONE.ASM:

              ifndef  ??version
?debug        macro

TASM2 #2-5/              = 147 =

              endm
              endif
              name   Plusone
_TEXT         SEGMENT BYTE PUBLIC 'CODE'
DGROUP        GROUP _DATA, _BSS
              ASSUME cs:_TEXT,ds:DGROUP,ss:DGROUP
_TEXT         ENDS
_DATA         SEGMENT WORD PUBLIC 'DATA'
_d@           label   BYTE
_d@w          label   WORD
_DATA         ENDS
_BSS          SEGMENT WORD PUBLIC 'BSS'
_b@           label   BYTE
_b@w          label   WORD
  ?debug  C E90156E11009706C75736F6E652E6
  ?debug  C E90009B9100F696E66C7564655C737464696F2E68
  ?debug  C E90009B9101010696E636C754655C7564655C7374646172672E68
_BSS          ENDS
_TEXT         SEGMENT BYTE PUBLIC 'CODE'
;             ?debug  L 3
_main         PROC    NEAR
              push    bp
              mov     bp,sp
              dec     sp
              dec     sp
              ?debug  L 8
              lea     ax,WORD PTR [bp-2]
              push    ax
              mov     ax,OFFSET DGROUP:_s@
              push    ax
              call    NEAR PTR _scanf
              pop     cx
              pop     cx
;             debug   L 9
              inc     WORD PTR [bp-2]
;             ?debug  L 10
              push    WORD PTR [bp-2]
              mov     ax,OFFSET GDROUP:_s@+3
              push    ax
              call    NEAR PTR _printf
              pop     cx
              pop     cx
@1:
;             debug   L 12
              mov     sp,bp
              pop     bp

TASM2 #2-5/              = 148 =

              ret
_main         ENDP
_TEXT         ENDS
_DATA         SEGMENT WORD PUBLIC 'DATA'
-s@           label   BYTE
              db      37
              db      100
              db      0
              db      37
              db      100
              db      0
_DATA         ENDS
_TEXT         SEGMENT BYTE PUBLIC CODE
              EXTRN   _printf:NEAR
              EXTRN   _scanf:NEAR
_TEXT         ENDS
              PUBLIC  _main
              END

        ,          業,
᪮쪮 ᨫ    ࡮ , ᯥ稢 -
প ஥ ᥬ.

      ਨ:

;            ?debug  L 8

    ᥬ  맮 scanf.  ᫥:

;            ?debug  L 9
             inc     WORD PTR [bp-2]

 ।⠢ ᮡ ஥  ᥬ   㢥-
祭 祭 ६ TestValue. (⨬,  ࡮  -
⮬᪨  믮  ८ࠧ  ६  TestValue 
ᮮ⢥  ⮩ ६   ᥬ [BP-2].)
 ப ஥ 樨 ᥬ ᫥  ᥬ-
  맮 㭪樨 printf.

      ,   ࡮   㭪 scanf 
 ᥬ,   ஥  ᥬ -
।⢥  室 䠩  ᥬ,   ⥬ ࠭᫨ 
  ᥬ  㭪  printf.  祭   १ 䠩
।⠢ ᮡ 䠩  몥 ᥬ,  ⮢  ࠡ⪥
࡮ ᥬ஬.


TASM2 #2-5/              = 149 =

     ᫨    ᯮ짮 ࠬ -s, ࡮    த
 ࠡ, 맢  ᥬ஢ 䠩 PLUSONE.ASM ࡮ -
ᥬ,  ⥬   祭   १  ꥪ-
⭮  䠩  -  ⨫  TLINK  (㤥  祭 믮塞 䠩
PLUSONE.EXE).   ० ࠡ ࡮   ஥ -
ᥬ஬. ࠬ-s  ᯮ짮 ⮫쪮  樮
楫, ⮡     ஬ ⠯,  -
  믮  ࡮  ᥬ.   㥬  
  㣨 ணࠬ, ࠬ -s ࠪ᪨ -
,     ᯮ짮  ⮬ 砥,   
  , 㦠騬  ஥    ᥬ-
,    , 㥬 ࡮   楫. ᫨   㢥७
 १, 㥬   ᯮ짮  ஥  
ᥬ,  ஢  祭      ࠬ -s 䠩
 ७ .ASM.




TASM2 #2-5/              = 150 =

       㤠 ࡮    ᯮ짮 ० ᥬ?
-----------------------------------------------------------------

     筮 ࡮   室   ।⢥  
ꥪ  .   ᪮쪮 ᯮᮡ,   
 ᮮ ࡮ ,  㦭 ন ஥ ᥬ-
  ⥬  樨    ᥬ  ᫥饣 맮
⨫ TLINK.

     ࠬ  ப -s 㪠뢠 ࡮ ,    㦭
࠭᫨஢  室     ᥬ, ᫥ 祣 ४-
 ࠡ.   ७ .ASM,  ᣥ஢  ࡮  
  ᯮ짮  ࠬ -s,  ⤥쭮 ᥬ஢ 
᪮  㣨 ﬨ    ᥬ.  맢  ࡮
ᥬ  ⮬᪨    ࠬ -b. ᫨   
ॡ  ⫠    楫    -
ᥬ, ࠬ -s । ࠬ஬ -b 㪠뢠  㦭.

     ४⨢ #pragma :

        #pragma inline

 筮 ࠬ -b, 㪠뢠  ࡮ ,
 㦭 믮 ࠭  ᥬ,   ⥬  ࠭-
樨  祭 १ 맢 ࡮ ᥬ.   ࡮
 砥 㪠 (४⨢) #pragma inline,  -
    ०  뢮 ᥬ.    㪠
#pragma inline    砫 室   몠  ,
⠪   室  몠 , ᫥  ᫥ ᫥-
  ४⨢,  㤥 ஢ :    ࠧ  
筮 ० ( -> ꥪ 䠩)  㣮 ࠧ  ०  ->
ᥬ.      ।,  ⮨   -
.

     , ᫨ ࡮  㦨 ஥  ᥬ-
  ⢨ ࠬ -b  -s  㪠  #pragma inline,
 뤠 ।०饥 ᮮ饭:

     Warning test.c 6: Restarting compile using assembly in func-
     tion main
     ( 稭 ୮  ᯮ짮 ᥬ-
       ᭮ 㭪樨)

᫥ 祣    ० 뢮  ᥬ,
 ᫨    窥  뫮 㦥 㪠 #pragma. -
  ᮮ饭 , ᫨  㤥 ᯮ짮 -

TASM2 #2-5/              = 151 =

 -b  㪠  #pragma inline.  ⨢ 砥 -
 㤥 믮 .

      맮  ᥬ஢ ஥  ࡮ ᥬ
-----------------------------------------------------------------

      ⮣, ⮡ ࡮  ᬮ 맢 ࡮ ᥬ, 㦭
᭠砫, ⮡  ᬮ  ࡮ ᥬ.  ࠧ 
࡮   ந室 -ࠧ.

      ᨨ  1.5 ।,  ࡮ ᥬ  -
室   䠩   TASM.EXE,  ᠭ  ⥪饬 -
⠫     ⠫, 㪠     ६
樮  ।  DOS PATH.  饬 砥 ࡮  ᬮ -
 ࡮ ᥬ  ⮬ 砥, ᫨  믮  
(    ⢥   ᪠ DOS) TASM. ⮬, ᫨ ࡮
ᥬ 室  ⥪饬 ⠫      ⠫,
।    PATH, ࡮  ⮬᪨   -
   믮 ஥ ᥬ஢.

     ᨨ 1.0  1.5 ࡮   ᥡ  ᪮쪮  -㣮.
᪮    ᨨ  ࡮  뫨 ᮧ  ⮣,  
ࠧࠡ⠭ ࡮ ᥬ,  믮 ᥬ஢ -
   뢠 ஠ᥬ  Microsoft MASM. -
⮬  ᨨ  ᪠  ⥪饬 ⠫   ⠫,
 ६ PATH, 䠩   MASM.EXE,   TASM.EXE.

           ਬ砭:  ⮬,  ᪮४஢    ᨨ
        TCC,  ⮡  뫮 ᯮ짮 TASM, -
      ᪠뢠  䠩 README   ਡ⨢  ᪥  ࡮
      ᥬ.




TASM2 #2-5/              = 152 =

          ࡮  ࠭᫨ ஥  ᥬ
-----------------------------------------------------------------

     ஥  ᥬ    稢    ᥣ
   ᥣ  ࡮ . ஥  ᥬ -
 室  㭪樨  ᥬ஢  ᥣ   ࡮
,    ஥  ᥬ, ࠧ饭  㭪樨, 
ᥬ஢  ᥣ  ࡮ .

     ਬ, ணࠬ:

/*  ⮢ 祭 */

asm   SquareLookUpTable   label  word;
asm   dw  0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100;

/* 㭪  ᪠  祭  0  10 */

int LookUpSquare(int Value)
{
      asm  mov   bx,Value;    /*  祭  
                                   */
      asm  shl   bx,1;        /* 㬭  2  ᪠ 
                                 ⠡ ⮢ ࠧ஬ 
                                 ᫮ */
      asm  mov   ax,[SquareLookUpTable+bx]; /*   ⠡ */
      return(_AX);
}

頥   ⠡ SquareLookUpTable    ᥣ  
࡮  ,    ஥   ᥬ  LookUpTable  ᥣ
 ࡮ .   ࠢ ᯥ宬   뫮    
  ᥣ  .  ᬮਬ,  ਬ,  ᫥ 
ணࠬ LookUpSquare,  SquareLookUpTable 室  ᥣ-
  ࡮ :

/* 㭪  ᪠  祭  0  10 */

int LookUpSquare(int Value)
{
      asm  jmp   SkipAroundData /* ய ⠡  */

/*  ⮢ 祭 */

asm   SquareLookUpTable   label  word;
asm   dw  0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100;

TASM2 #2-5/              = 153 =

a
SkipAroundData:
      asm  mov   bx,Value;    /*  祭  
                                   */
      asm  shl   bx,1;        /* 㬭  2  ᪠ 
                                 ⠡ ⮢ ࠧ஬ 
                                 ᫮ */
      asm  mov   ax,[SquareLookUpTable+bx]; /*   ⠡ */
      return(_AX);
}

       SquareLookUpTable 室  ⠡  ࡮ ,
  ⮡     뫮 뢠,   ॡ -
짮 䨪 ८। ᥣ CS:.  ᪨  
㯠   SquareLookUpTable   ⮬᪨ ᥬ-
  䨪ᮬ CS:. ࡮   ४    ᥬ-
,  ⮡  ࡮  ᥬ  ,   ᥣ 室
SquareLookUpTable,  ࡮ ᥬ ⥬  室
䨪 ८। ᥣ⮢.




TASM2 #2-5/              = 154 =

     ࠬ -1  樨 権 ஢ 80186/80286
-----------------------------------------------------------------

     ᫨   ᯮ짮 㭨 樨 
80186, ⠪ :

             shr   ax,3

             push  1

  ᥣ ᯮ짮   ப ࡮   ࠬ
-1, ਬ:

        tcc -1 -b heapmgr

 HEAPMGR.C -  ணࠬ,  ᮤন ஥  -
樨 ᥬ, 㭨   80186.

     ᭮ 祭 ࠬ  -1 ⮨  ⮬, ⮡  㪠-
 ࡮ ,   樨  ᯮ짮  
権  80186. ࠬ -1 ਢ ⠪    ⮬,
 砫 室 䠩  몥 ᥬ 㤥 祭 -
४⨢ .186.  㪠 ࡮  ᥬ,    ᥬ஢
㦭  믮   ᯮ짮   権. 
 ४⨢ ࡮ ᥬ   ஥  -
樨,  㭨   80186,  訡. ᫨  -
 ᥬ஢ 樨    80186,    ਭ㦤
࡮    ᯮ짮   権  80186,
  砫   ࡮ , ᮤঠ饣 ஥
樨  80186, ப:

         asm   .186

      ப 㤥 ।  䠩 ᥬ,   㪠-
 ࡮ ᥬ,  㦭 ᯮ짮 樨 -
 80186.

       ࡮   ।ᬮ७ ஥ প
஢ 80286,  80386,  80287  80387.  ஥  -
ᥬ,  ᯮ 樨  ஢, ࠧ
 ᯮ짮   ᯮᮡ,    祢
᫮ asm  ४⨢ ࡮ ᥬ .286,  .286, .286,  .386,
.386, .386, .287  .387.

     ப:


TASM2 #2-5/              = 155 =

        asm   .186

뢠    ஥  ᥬ:  
䨪  asm    䠩 ᥬ  ।  ⨬
४⨢ ᥬ,   ४⨢  ।  ᥣ⮢,
ࠢ, ப  ..




TASM2 #2-5/              = 156 =

           ଠ ஥ ஢  몥 ᥬ
-----------------------------------------------------------------

     ஥   몥 ᥬ   宦 
 ப ᥬ,   ᪮쪮 ⫨稩. ஥-
   몥 ᥬ  ᫥騩 ଠ:

asm [<⪠>] </४⨢> <࠭><;  . ப>

:

     - 祢 ᫮ asm  稭  ஥  -
  ᥬ;

     - [<⪠>]  ⨬ ⪮ ᥬ.  -
 ᪮ 뢠,  ⪠  易⥫쭮, ⠪ ,
  ᥬ. (. ࠧ  "    ࠭祭  樨
࠭",  ਢ ଠ  ⪠ ᥬ  .);

     - </४⨢> ।⠢ ᮡ  ⨬
४⨢ ᥬ;

     - <࠭> ᮤন ࠭, ਭ   樨
  ४⨢.    ⠪ ⢮ 뫪  -
⠭, ६  ⪨  ( ᮡ ࠭祭, ᠭ-
  ࠧ "࠭祭 ஥ ᥬ");

     - <;  . ப>  窠  ⮩     ப
(   㣮   襭  asm.

           ਬ砭:  ଠ ⭮⥫쭮  ⮪  -
      ন    ࠧ  "  ࠭祭  樨 
      ࠭".




TASM2 #2-5/              = 157 =


ᯮ짮  ஥ ᥬ 窨  ⮩
-----------------------------------------------------------------

      ᯮ짮 ஥ ᥬ   ᯥ, -
     ணࠬ, ࠡ騩  몥 :
窠  ⮩,   ⫨稥  㣨 ஢ 몠 ,  -
 ஥ ᥬ   易⥫쭮,  
 ᯮ짮   襭.    ⢨ 殬
 ⠥ 砫  ப. ⮬, ᫨   ࠧ-
頥   ப ᪮쪮 ஢ ஥  ᥬ-
 (祣   ⮨,  ⠪  ⥪ 㤥  ),
窠  ⮩ 易⥫쭠.    ,   
ᮮ⢥ ਭ樯 ,   ᮡ ᮣ襭, -
   ,  ࠡ  ।  樮
⥬ UNIX.

                 ਨ  ஥ ᥬ
-----------------------------------------------------------------

      ।饬 ᠭ ଠ   ஥  ᥬ-
    祢  -  . 
ਨ     ஢ ஥  ᥬ-
,    ⮫쪮 ⬥  ஥ ,   
㣨  몠 ,    ஥    ᥬ
ਨ  稭  窨  ⮩.

       ⮣ ஢  ஥ ᥬ?  
    ࠭,       ਥ . 
ᠬ   ⢥, ᪮ ९ 몠  -
뢠  ஥  ᥬ ⠪ ,   ⠫ 
  .  ⮬  ᥩ ணࠬ  ,    ᮤ-
    ᥬ,  ᯮ짮     ⨯ -
஢.     몥 ,     ᥬ    ⮬
砥    ⠪ ᯮ짮 ।   ᨬ᪨
. ਬ,  ணࠬ:

               .
               .
               .
   #define  CONSTANT 51
               int i;
               .
               .
               .
               i = CONSTANT;        /* ᢮ i

TASM2 #2-5/              = 158 =

                                    ﭭ 祭 */
               asm  sub  WORD PTR i,CONSTANT; /* 
                                     i ﭭ
                                    祭 */
               .
               .
               .

   ,    ᥬ ᯮ ।  -
   䨪 CONSTANT,   ᫥ i 砥 -
祭 0.

     ᫥  ਬ  뢠    ⥫쭮  ᢮⢮
஥ ᥬ, ஥ ⮨  ⮬,    ࠭-
   ᮤঠ   ⮫쪮 뫪   䨪஢,
।  ,     ६ .   㢨  
 , 筮   ६   ᥬ ஡
 ⠢,  ⮬ 㤮⢮ 뫮  ⠪ ६ - 
᭮ 稭, 祬  設⢥ ਪ  ⮨ -
짮 ஥ ᥬ,    ꥤ ᥬ
 .

              饭  ⠬ /ꥤ
-----------------------------------------------------------------

     ஥  ᥬ  뫠 ।⢥ 
 . ਬ,  ᫥饬 ࠣ ணࠬ:

             .
             .
             .
    struct  Student {
         char Teacher[30];
         int  Grade;
    }    JohnQPublic;
             .
             .
             .
             asm   mov  ax,JohnQPublic.Grade;
             .
             .
             .

 ॣ AX  㦠  ᮤন    Grade  
JohnQPublic ⨯ Student.

TASM2 #2-5/              = 159 =


     ஥  ᥬ  ⠪   ⠬
,      ⭮⥫쭮   ᭮
ॣ. ਬ:

             .
             .
             .
             asm   mov   bx,OFFSET JohnQPublic;
             asm   mov   ax,[bx].Grade;
             .
             .
             .

       ॣ AX ⠪ 㦠  Grade 
JohnQPublic.  ᪮  Grade  室    Student 
ᬥ饭 30, ᫥ ਬ  ᠬ  ਭ :

             .
             .
             .
             asm   mov   bx,OFFSET JohnQPublic;
             asm   mov   ax,[bx]+30
             .
             .
             .

         ⠬    ⭮⥫쭮
ॣ-㪠⥫  筮  ।⢮, -
騬  ஥  ᥬ ࠡ  ᨢ   -
ࠬ  ᯮ짮 㪠⥫  .

     ᫨ , ,    ,    -
頥  ஥  ᥬ, ᮤঠ    
⥬  ,    ᫥饥:

            asm  mov   bx,[di].(struct tm) tm_hour > alt

     ਬ:

            .
            .
            .
    struct  Student {
         char Teacher[30];
         int  Grade;

TASM2 #2-5/              = 160 =

    }    JohnQPublic;
             .
             .
             .
    struct  Teacher {
         int  Grade;
         long Income;
    };
             .
             .
             .
       asm   mov  ax,JohnQPublic.(struct Student) Grade
             .
             .
             .





TASM2 #2-5/              = 161 =

              ਬ ᯮ짮 ஥ ᥬ
-----------------------------------------------------------------

     ,   㢨 ᪮쪮  ࠣ⮢  ணࠬ,  
  ᯮ ஥ ᥬ,   
ॠ쭮 ࠡ饩 ணࠬ   ஥    ᥬ.
     ᤥ   ࠧ.  ।⠢  ண-
ࠬ ஥ ᥬ ᯮ   㢥祭  ᪮
ࠡ  (८ࠧ  ⥪  孨 ॣ).  ணࠬ
 㦨  ਬ஬ ⮣,       -
 ᥬ,  ⮩ 奬,  ᭮ ன   ࠧ-
ࠡ뢠 ᢮ ᮡ⢥ ணࠬ  ஥   ᥬ-
.

      ᬮਬ ᭠砫,   蠥    
 ணࠬ-ਬ.  ⥫   㭪  -
 StringToUpper,    ப  ,  ८-
ࠧ      ࠡ  ᨬ  ॣ (
㪢)  ᨬ 孥 ॣ (ய 㪢). ⥫ 
⠪, ⮡  㭪 ࠡ⠫     ப
     .     ᯮᮡ ᯥ 
砥  ।  㭪 㪠⥫  쭥  ⨯,  ⠪
  㪠⥫  ⨯ (NEAR) ᥣ   ਢ 
㪠⥫ 쭥 ⨯ (FAR),  ⭮ ୮  ᥣ.

      ᮦ,    ஡ ந⥫쭮. 
  ६,    ࡮  ᥬ ࠡ⠥  쭨 㪠⥫ﬨ
筮 ,  ࠡ⪠ 㪠⥫ 쭥 ⨯  ࡮ 
믮 ⢥ , 祬 ࠡ⪠ 㪠⥫ -
 ⨯.    ⪮ ࡮ , ᪮॥  -
  ᫥⢨  ᯮ짮   ணࠬ஢ 
8086 몠 ᮪ ஢.

      㣮 ஭, ࠡ⪠ ப  쭨 㪠⥫ - 
  ,  ன ᥡ ॢ室 뢠 ᥬ. -
 ࠧ, ᪮ 襭 ⮨  ⮬, ⮡ ᯮ짮
 ࠡ  쭨 㪠⥫ﬨ  ஢ ப ஥
ᥬ,  ⠫    몥 .   ॠ-
  ᫥饩 ணࠬ,  뢠 STRINGUP.C:

/* ணࠬ  樨 ᯮ짮 StringToUpper().
    ८ࠧ ப TestString  孨 ॣ
   뢠 㭪 StringToUpper, ᫥ 祣 ⠥
   祭  १ ப UpperCaseString   . */

#pragma inline

TASM2 #2-5/              = 162 =

#include <stdio.h>

/* ⨯ 㭪樨  StringToUpper() */
extern unsigned int StringToUpper(
unsigned char far  * DestFarString,
unsigned char far  * SourceFarString);

#define MAX_STRING_LENGTH 100

char *TestString = "This started Out At Lowercase!";
/* ப, ८ࠧ㥬  孨 ॣ */

char UpperCaseString[MAX_STRING_LENGTH];

main()
{
   unsigned int StringLength;

   /* ஢ ப TestString  孥 ॣ 
       UpperCaseString */
   StringLength = StringToUpper(UpperCaseString, TestString);

   /* 뢥 १ ८ࠧ */
   printf("室 ப:\n%s\n\n", TestString);
   printf("ப  孥 ॣ:\n%s\n\n", UpperCaseString);
   printf("᫮ ᨬ: %d\n\n", StringLength);
}
/* 㭪  믮 ண ८ࠧ  孨
   ॣ  ப 쭥 ⨯  

   :
   DestFarString  - ᨢ  ࠭ ८ࠧ
                     孨 ॣ ப (㤥
                     㫥)
   SourceFarString - ப, ᮤঠ ᨬ, 
                    㦭 ८ࠧ  孨 ॣ
                    (  㫥 ᨬ)

   頥 १:
         室 ப  ᨬ,  
        饣 㫥 ᨬ. */

unsigned int StringToUpper(unsigned char far  * DestFarSring,
                        unsigned char far  * SourceFarString)
{
   unsigned int  CharacterCount;

TASM2 #2-5/              = 163 =


   #define LOWER_CASE_A 'a'
   #define LOWER_CASE_Z 'z'
      asm  ADJUST_VALUE  EQU  20h;  /* ᫮, ஥ 㦭
                                         祭
                                       㪢   ॣ-
                                       , ⮡ ८-
                                        */
      asm  cld;
      asm  push ds;       /* ࠭ ᥣ   */
      asm  lds  si,SourceFarString; /* 㧨 쭨
                             㪠⥫  室 ப */
      asm  les  di,DestFarString; /* 㧨 㪠⥫
                             쭥 ⨯  楫
                             ப */
      CharacterCount = 0; /* ᫮ ᨬ */
StringToUpperLoop:
      asm  lodsb;         /*  ᫥騩 ᨬ */
      asm  cmp  al,LOWER_CASE_A; /* ᫨ < ,   
                             筠 㪢 (
                             ॣ) */
      asm  jb   SaveCharacter;
      asm  cmp  al,LOWER_CASE_Z; /* ᫨ > z,   
                             筠 㪢 */
      asm  ja   SaveCharacter;
      asm  sub  al,ADJUST_VALUE; /*   ॣ,
                             ८ࠧ  孨
                             ॣ */
SaveCharacter:
      asm  stosb;         /* ࠭ ᨬ */
      CharacterCount++;   /*   ᨬ */
      asm  and  al,al;    /*  騩 ᨬ?
                             () */
      asm  jnz  StringToUpperLoop; /* , ࠡ
                             ᫥騩 ᨬ, ᫨ 
                              */
      CharacterCount--;   /*  뢠 騩  */
      asm  pop  ds;       /* ⠭ ᥣ 
                              */
      return(CharacterCount);
}

       ᪥ STRINGUP.C  ࠭ 뢮:

     室 ப:
     String to convert to uppercase

TASM2 #2-5/              = 164 =


     ப  孥 ॣ:
     STRING TO CONVERT TO UPPERCASE

     ᫮ ᨬ: 30

      뢠,  ⢨⥫쭮   㪢 (
ॣ) ८ࠧ  ய (孨 ॣ).

     ᭮    ணࠬ    STRINGUP.C     ⠢     㭪
StringToUpper,   믮   ஢ ப
 ८ࠧ   孨 ॣ.  㭪 ᠭ  
  ஥ ᥬ  ਭ  ⢥ ࠬ஢ 
㪠⥫ 쭥 ⨯.   㪠⥫ 쭥 ⨯  뫠-
    ப,  ᮤঠ ⥪. 㣮 㪠뢠   
ப,   㤥 ᪮஢  ⥪   ࢮ  ப,
  ᨬ ண  ८ࠧ  孨 ॣ.
ᠭ 㭪樨  । ࠬ஢ ࠡ뢠    :
⢨⥫쭮, ⨯ 㭪樨 StringToUpper 㪠뢠  -
 ணࠬ. ᭮ ணࠬ 뢠  㭪  StringToUpper
⠪,    ᫨   뫠 ᠭ 楫  몥 . 
ࠧ,  ᯮ짮  २⢠ ணࠬ஢  
࡮  ,  㭪 StringToUpper ᮤন ஥  -
ᥬ.

      㭪樨 StringToUpper ᮤন ᬥ      ᥬ-
.  ᥬ  ᯮ  뢠  ᨬ 
室 ப, ஢ન , , ᫨  室, ८ࠧ-
 ᨬ  孨 ॣ, ᫥ 祣 ᨬ 뢠 
楫 ப (ਥ). ஥ ᥬ  ᯮ-
  㭪樨 StringToUpper ⠪  ப 樨,
 LODSB  STOSB,  뢠  뢠 ᨬ.

      ࠧࠡ⪥ 㭪樨 StringToUpper  ,      
ॡ      ᥣ   ࡮ , ⮬ 
 ᫨  砫 㭪樨 ॣ DS  ⥪   ᯮ짮
  뫪  室 ப (筨),   ᮤন-
 DS  ⠫쭮  㭪樨.    २ -
짮 ஥ ᥬ  ࠢ   ணࠬ-
஢  몥  ⮨      㧪  쭨
㪠⥫  砫 㭪樨  ᫥饩  १㧪  -
⠫쭮  㭪樨.  ⫨稥  ⮣ ࡮   㣨 모
᮪ ஢ १㦠 쭨 㪠⥫ 直 ࠧ, 
 ᯮ.  㦠  쭨  㪠⥫  
ࠧ 砥,  㭪 StringToUpper ࠡ뢠 ப -
 ⨯ ⠪  ,   ப  ⨯.

TASM2 #2-5/              = 165 =


     㣮 ᭮ 砭  㭪樨 StringToUpper ᠥ-
 ⮣,    ࠧ  ।  ᥬ  몠
.  ⮣, ⮡ ⠭ 祭 LOWER_CASE_A  LOWER_CASE
_Z ᯮ ४⨢ #define,    祭 ADJUST_
VALUE - ४⨢ ᥬ EQU.     ஥  -
ᥬ    䨪 ᯮ .  -
 䨪஢, ।塞  몥 , 믮 ९-
஬  ࡮ ,   ⠭  ADJUST_VALUE - ࡮ -
ᥬ஬.   ⮬   䨪    ᯮ짮  
஥ ᥬ.

       ⥫  㭪樨  StringToUpper    ࠡ     稪
CharacterCount ᯮ  몠 .  ᤥ ⮫-
  ⮣, ⮡ ,   몠   ஥ ᥬ-
  ।. 祭 ६ CharacterCount 
뫮       ஥ ᥬ,  ᯮ 
⮣ ᢮ ॣ (ਬ,  ॣ CX   DX).  㭪
StringToUpper ࠡ⠫   ⮬ 砥  ॥.

      ।  몠   ஥ ᥬ
쭮  ᪮, ᫨    ⪮,   -
 ࡮   ࠬ ஥ ᥬ. ᯮ-
 ࠬ  ࡮  -s ।⠢ ᮡ -
訩 ᯮᮡ ᫥,   ந室,      ।
஥ ᥬ   몠 . ਬ,   ᫥-
, ᪮쪮 ᮮ⢥      ஥ -
ᥬ, ᫨ ᪮ ணࠬ STRINGUP.C  ࠬ஬ -s
 ᬮ 祭 १ 䠩 STRINGUP.ASM.

     ணࠬ STRINGUP.C ᭮  ॢ室 -
  ஥  ᥬ. 祭  㭪 StringToUp 
15 ப  몥 ᥬ  㤢  ᪮  ࠡ⪨
ப  ࠢ     몥 .




TASM2 #2-5/              = 166 =


࠭祭 ஥ ᥬ
-----------------------------------------------------------------

      ᯮ짮 ஥ ᥬ    ᪮쪮
࠭祭.   㦥  ,   ஥ ᥬ
 ।   ࡮ ᥬ.   -
  ⤥  ࠭祭,  騥  । ࠭
   樨,   ࠭祭, ⭮騥   -
짮  ॣ஢  ⢨  ஥ ᥬ -
祭  㬮砭 ࠧ  ᪨   ६-
 .

              ࠭祭 樨  ࠭  
-----------------------------------------------------------------

     ⢥ , ஥ ࡮     
஥ ᥬ, ⮨  ८ࠧ 뫮  
   (ਬ,  ६  ᮢ 室) 
 ।⠢    ᮮ⢥騩   ᥬ.
    ࠭祭:    室
஥  ᥬ    뫠 ⮫쪮  ⪨ ,  
   뫠     㣮,  ஬  ⮪
몠 . ਬ, ணࠬ:

                .
                .
                .
                asm   jz   NoDec;
                asm   dec  cx;
        NoDec:
                .
                .
                .

 ४⭠,  ணࠬ:

                .
                .
                .
                asm   jz   NoDec;
                asm   dec  cx;
                asm   NoDec:
                .
                .
                .

TASM2 #2-5/              = 167 =


 㤥 ࠢ쭮 ஢. 筮,   -
室 ஥ ᥬ  ᯮ짮  ⢥ -
࠭  㭪権.

     ஥ 樨 ᥬ, ⫨  室, -
  ᮤঠ  ࠭, ஬ ⮪ . ਬ, ணࠬ-
:

                .
                .
                .
                asm   BaseValue  db  '0';
                .
                .
                .
                asm   mov   al,BYTE PTR BaseValue;
                .
                .
                .

,  ணࠬ:

                .
                .
                .
        BaseValue:
                asm   db  '0';
                .
                .
                .
                asm   mov   al,BYTE PTR BaseValue;
                .
                .
                .

஢  㤥. ⨬,  맮 ணࠬ  -
⠥ 室, ⮬  ⢥ ࠭  맮 㭪樨
  樨  ஥  ᥬ    㪠뢠  
㭪権      ⪨  ᥬ  (   ⪨ ). ᫨  
஥ ᥬ  뫪   㭪樨 ,  ।
  㭪樨    㪠뢠  ᨬ ન (
஡  ⮬ ᪠뢠  ࠧ "ન").




TASM2 #2-5/              = 168 =

    ஥ ᥬ  ࠧ ᪨  ६
-----------------------------------------------------------------

      ࡮      ஥  ᥬ
뫪         ६  ࠭  
[BP-02],   頥     祭
ࠧ (⨯ WORD PTR  BYTE PTR).  砥, :

                .
                .
                .
                int   i;
                .
                .
                .
                asm   mov   ax,i;
                .
                .
                .

뢮  䠩 ᥬ  :

                mov   ax,[bp-02]

     ஡   砥  , ⠪   ᯮ짮
ॣ  AX ᮮ頥 ࡮ ᥬ,   16-⮢ 뫪
 .   ⮣,  ⢨ 樨  ࠧ 
    ࠢ ࠧ஬ ࠭  ᯮ짮-
 ஥ ᥬ. ᬮਬ ᫥騩 ਬ:

                .
                .
                .
                int   i;
                .
                .
                .
                asm   mov   i,0;
                asm   inc   i;
                .
                .
                .

 ਭ :

                mov   [bp-02],0

TASM2 #2-5/              = 169 =

                inc   [bp-02]

         権   ᮤন ।
ࠧ,  ⮬ ࡮ ᥬ     ᥬ஢.  
⮣,    ࡮ ᥬ 頥  ᪮ -
쭮 ६,   ᯮ  ⢥ 筨  ਥ-
 ॣ,   㦭 㪠뢠 ࠧ ࠭.   ⮬ ᪠-
 ᫥ ਬ  룫拉 ᫥騬 ࠧ:

                .
                .
                .
                int   i;
                .
                .
                .
                asm   mov   WORD PTR i,0;
                asm   inc   BYTE PTR i;
                .
                .
                .




TASM2 #2-5/              = 170 =


室 ࠭ ॣ஢
-----------------------------------------------------------------

        ᯮ㥬    ஥  ᥬ-
  ॣ  BP, CS, DS  SS  ᮤঠ   祭,
   । 砫 믮   ஥  -
ᥬ. ᮡ ⮣ ࠢ  㤥 ਢ  -
਩ 襭 ணࠬ (crash)  १㧪 ⥬. -
  AX, BX, CX, DX, SI, DI, ES  䫠   ஥ -
ᥬ  ᢮ .


࠭  맮 㭪権 ॣ஢ ६
-----------------------------------------------------------------

      ࡮  ॡ, ⮡ ॣ DI   SI,    -
   ॣ஢ ६,  蠫  맮-
 㭪権.     㦭 ᯮ   ࠭
ॣ஢ DI  SI  ᯮ짮    ஥ ᥬ-
, ᪮  ࠭   砫 㭪権  ⠭-
   (    㤮 ᯮ짮 ஥ -
ᥬ).




TASM2 #2-5/              = 171 =


 ७ ॣ஢ ६
-----------------------------------------------------------------

     ᪮ ॣ஢ ६ ࠭  ॣ  SI  
DI, ,  ,  ਢ   䫨 -
 ॣ஢묨 ६묨   㫥  ஥  -
ᥬ,    ஬ DI  SI ᯮ  ⮬  㫥. ࡮
 । ⠪ ஡:  ᯮ짮 ॣ DI  
SI    ஥   ਢ   ᯮ짮 
ॣ  ࠭ ॣ஢ ६.

      ࡮  ᨨ 1.0 ࠭ 䫨  ॣ஢
६   ஥  ᥬ  ᯥ稢. ᫨
 ᯮ  1.0,  㦭   ࠧ  ࠭
ॣ  DI   SI ।  ᯮ짮  ஥  -
ᥬ,  ३    ᨨ .


⪨ ᯮ짮 ஥ ᥬ
-----------------------------------------------------------------

      ⨫ 㦥 쭮  ६  ᫥  ⮣,
 ࠡ⠥ ஥ ᥬ,  祭 ⥭樠 २-
   ᯮ짮.        ਪ  
஥ ᥬ ।⠢ ᮡ ४᭮ ।⢮  -
ப ᯥ஬ ⥩,   ⠪  ⪨.
  ᬮਬ  ⪨, ᫥ 祣  ᬮ ᤥ
뢮,    ணࠬ ᫥  ᯮ짮  ஥
ᥬ.




TASM2 #2-5/              = 172 =

        襭 ⥩ ७ᨬ  㦨
-----------------------------------------------------------------

       ।⢥  ணࠬ஢  
8086 -  ᠬ ⢮, ஥  ஥ ᥬ -
 䥪⨢ - 㬥蠥  ६    ᭮
२⢠ 몠 ,   ७ᨬ.  ᫨    ᯮ
 ணࠬ  몥  ஥ ᥬ,  쬠 ,
   ᬮ   ७  ணࠬ   -
   ᯮ짮 㣮  몠 .

     ஬ ⮣, ᥬ   ஢ 몮 
  ⮩ ᭮  ⭮ 室  ,    
ᯥ    ଠ஢ ணࠬ  몥 .   -
 ஥  ᥬ  饬 砥 ࠧ 㤭
   㦨 (஢  ஢ ணࠬ),
祬 室   몥 .

       ᯮ ஥   ᥬ,    
뤥    ⤥ 㫨  ⭮  ஡ -
஢.  ⮬ ணࠬ ⠭    㦨.  ஬
⮣, ࠧ  㤥  ஥  ᥬ  -
   몥 ,  ᫨   ७  ணࠬ  
 ।.

  
-----------------------------------------------------------------

      㫥 , ᮤঠ ஥  ᥬ,
믮 ⢥ , 祬   室-
  몠 .   ᭮ 易   ⥬,    ஥
 ᥬ  ஢  - ᭠砫 -
஬ ࡮ ,  ⥬ ࡮ ᥬ஬. ᫨ ࡮    㦤
୮  稭 , ᪮  ᯮ짮  -
ࠬ -b  -s,   㪠 (४⨢)  #pragma  inline,  
६  樨 ஥  ᥬ   㢥-
.   ,   㫥, ᮤঠ ஥-
    ᥬ,  ⥯  ।⠢ ᮡ ࠧ 
஡,  祬  뫮 ࠭,  ⠪  ࡮ ᥬ ࠡ⠥
ࠧ ॥, 祬  ࠭ ᨨ ᥬ஢.

 ᯮ짮 ⮫쪮  
-----------------------------------------------------------------

       㦥 㯮 ࠭,  ᯮ짮 -

TASM2 #2-5/              = 173 =

  ᥬ  -    㭨쭮  ।⢮   
TCC.EXE (ᨨ  ࡮  TC.EXE, ࠡ饩   -
  ப).   ࡮   ࠪ⨢ । ண-
ࠬ஢ TC.EXE ஥ ᥬ  ন.

                           ⨬樨
-----------------------------------------------------------------

      ᯮ짮 ஥ ᥬ ந室  -
   ࠢ ࡮   ணࠬ, ᪮ -
।⢥  室  ணࠬ  몥   砥  
ᥬ.  ।  ⥯  ,  ணࠬ, ࠡ-
騩  ᥬ,   ஢, ᫨ 㤥  -
  । ⥫ ⢨ (ਬ, ࠭
ॣ DS,      ).

      㣮 ஭, ࡮   ॡ, ⮡  ᯮ짮-
 ஥ ᥬ  ᮡ   ७ ࠢ-
  (᫨   뫮 ⠪,      뫮      짮
஥ ᥬ஬,    ᣥ஢  ᥬ
 ࡮ ).  㭪, ᮤঠ ஥ -
 ᥬ,  ࡮  "몫砥"    ⨬樨,
  ⥬ ᠬ ⭮⥫쭮 ᢮ ࠡ  ஥-
  ᥬ. ਬ,  ᯮ짮 ஥ -
ᥬ  "몫"   ⨬樨 ஥ -
室,  ᫨  ஥  ᯮ ॣ DI  SI,
  ॣ஢ ६.  ⠪ 筠 -
 ⨬樨  ⥫쭮 ⥯   ⥬,  
 ணࠬ,  ॠ  ᥬ,  ࠡ  -
쭮  ᪮.

     ᫨  ᯮ짮 ஥ ᥬ    
讥  祭 祭  ண  ⭮ ,
     ⥫  㭪樨, ᮤঠ騥
஥    ᥬ, 楫  몥 ᥬ ( 
 ᬥ訢   㭪樨 ஥ ᥬ    몮  ).
 ࠧ,    ஫   㭪樨, -
ᠭ 楫  ஥ ᥬ,  ࡮   㤥  -
ࠢ   㭪権, ॠ  몥 .  ⮬  ,
 ࡮  砥  ᢮    樨 -
襣   ࠭祭.




TASM2 #2-5/              = 174 =

                  ࠭祭  㦥 訡
-----------------------------------------------------------------

     ᪮ ࡮  믮   ஥ ᥬ-
 ᫠ ஢  訡, 訡  ஥  ᥬ-
  ᯮ ࡮ ᥬ஬,   ࡮ .   -
,  뢠 쭮 㤭 ⠭  -
 뤠 ࡮ ᥬ஬ ᮮ饭  訡    室
  몥 , ᪮  ᮮ饭  訡  뢮
 ப ᭮뢠  뢮 ࡮  䠩   -
 .ASM,    ᠬ 室  몠 .

     ਬ,  室 樨 ணࠬ TEST.C  (ணࠬ  
몥  ,  ᮤঠ饩 ஥  ᥬ) ࡮ ᥬ
 뢥 ᮮ饭  ४⭮ ࠧ ࠭  ப
23.   ᮦ,   23 ⭮   訡筮 ப 
䠩 TEST.ASM (஬筮 䠩,    ࡮ 
   ࠡ⪨  ࡮ ᥬ஬).   ᠬ -
 ᭨,    ப  ணࠬ  TEST.C  맢
訡.

      ⮣  ᥣ ᭠砫  訡 ப   -
筮 䠩 TEST.ASM,  ࠭  ᪥ -
஬ ࡮   ⮬ 砥, ᫨ ࡮ ᥬ 뤠 ᮮ饭
 訡.  .ASM ᮤন ᯥ樠 ਨ, -
騥 ப  䠩 ,  ன     
஢ ᥬ. ਬ, ப  ᥬ,  -
 ᫥ ਩:

            ; Line 15

(ப 15),   ப 15 室 䠩 .  ᫥
⮣,     䠩 .ASM ப,  맢 訡,
 । ᮮ⢥饩 ப  室 䠩   
ᯮ짮 㪠   ( ਨ)  ப.


࠭祭  ⫠
-----------------------------------------------------------------

     ᨨ  ࡮ ,    ॢ蠥 1.5,
    ஢ ଠ  ⫠  ஢ 室
 ( ଠ 室  ⮣, ⮡   ⫠  
  ᬠਢ  室    몥 )   㫥,
 ᮤঠ ஥    ᥬ.    ᯮ짮
஥  ᥬ    ࡮  ᨨ 1.5  

TASM2 #2-5/              = 175 =

࠭    ᥬ  祭  ଠ樨
  ⫠.  ⫠  ஢ 室  -
 祭,    ⮫쪮 ⫠ (㫥 , ᮤ-
 ஥  ᥬ)  ஢ ᥬ.

       ᨨ ࡮  ᯮ २⢠ ᯥ-
 । ࡮ ᥬ, ᯥ稢  ᯮ짮
࡮ ⫠稪 ⫠  ஢ 室    㫥,
ᮤঠ ஥  ᥬ, ⠪   㫥, ᠭ-
 楫  몥 .




TASM2 #2-5/              = 176 =

        ࠡ⪠    ᫥饥 ᯮ짮 ᥬ
-----------------------------------------------------------------

      ᢥ ᠭ  ⪮  ࠭祭 ᯮ짮-
  ஥  ᥬ  ,  ஥ -
ᥬ  ᯮ짮 ⮫쪮  砥 ࠩ 室.
   ⠪.  ࠧࠡ⪥ ணࠬ ஥ ᥬ  -
 ᫥ ⠯   ⢥ .

       ⪮ ஥ ᥬ ᢮  
  ஡:  ᯮ짮  ஥ ᥬ  -
⢥  横 ।஢-樨-⫠. 
  ,  ᯮ짮 ஥ -
ࠪ⨢ ।  㤭  宦 訡 樨  -
,  ࠧࠡ⪠ ணࠬ, ᮤঠ饩 ஥ 
ᥬ, ॡ, ⭮,  ६,  祬  ࠧࠡ⪠
ணࠬ,  ᠭ 楫  몥 .  ࠢ쭮 -
짮 ஥ ᥬ  ⥫쭮  -
⢮ ணࠬ.   ?

     ⢥ .  ࢮ ⠯ 㦭  ணࠬ  楫
 몥 ,  ᯮ २⢠ ࠪ⨢ ண-
ࠬ ।  TC.EXE.  ணࠬ 㤥 
⮢, ⫠  㤥 뤠 ࠢ १, ३-
  ᯮ짮   TCC.EXE  筨  -
ࠧ뢠 ᪨ ᪨ ணࠬ   ஥ ᥬ-
.  室   䥪⨢ ࠧࠡ    ⫠-
  ணࠬ,  ⥬ 뤥   ⤥  
 ३  ⮭  .




TASM2 #2-5/              = 177 =

              맮 㭪権 ࡮ ᥬ  ࡮ 
-----------------------------------------------------------------

     ᥬ   ࠤ樮 ᯮ ᮢ⭮: ⤥
㫨   楫   몥   ᥬ,  믮
 㫥   ᥬ஢ 㫥 ᥬ,  -
⥬    ⤥쭮 ᪮஢ 㫥   -
塞 䠩.  ⠪   㫨 ࡮ ᥬ-
  ࡮  (    . 7.3).

     믮塞 䠩 砥 ⥬ "ᬥ訢" 室 䠩-
   ᥬ.     :

        tcc _䠩1 _䠩.asm

 㪠뢠 ࡮ ,   㦭 ᭠砫 ஢ 䠩
_䠩_1.C  祭 ꥪ⭮ 䠩 _䠩_1.OBJ, -
⥬  맢  ࡮  ᥬ    ࠭樨  室  䠩
_䠩_2.ASM  䠩 _䠩_2.OBJ,  , , 맢 -
 TLINK      䠩  _䠩_1.OBJ    _䠩-
_2.OBJ  祭 믮塞 䠩 _䠩_1.XE.

 --------------------                --------------------
 | 室 䠩  |                | 室 䠩  |
 | 몥  FILE1.C |                | 몥 ᥬ |
 |                  |                |     FILE2.ASM    |
 --------------------                --------------------
          |                                    |
          v                                    v
     ----------                        -----------------
    ( ࡮  )                      ( ࡮ ᥬ )
     ----------                        -----------------
          |                          | ᥬ஢
          v                                    v
 --------------------                 -------------------
 |  ꥪ 䠩  |                 |  ꥪ 䠩 |
 |    FILE1.OBJ     |                 |     FILE2.OBJ   |
 --------------------                 -------------------
          |                                    |
          -----------------  -------------------
                          |  |
                          v  v
                       ----------
                      (   TLINK  )
                       ----------
                            |

TASM2 #2-5/              = 178 =

                            v
               ------------------------------
               | 믮塞 䠩 FILE1.EXE |
               ------------------------------

     . 7.3 , ᥬ஢     
࡮ , ࡮ ᥬ  ⨫ TLINK.

     쭠  뢠 祭     ண-
ࠬ, ᮤঠ ⥫쭮 ꥬ    ᥬ,  ᪮
   ᯮ짮  ࡮ ᥬ
 ணࠬ஢  몥 ᥬ   ᥬ୮  -
,  祢 ᫮ asm, ⥫쭮 ६  -
  ⭮   ⥫ থ   ᯮ짮-
 ஥ ᥬ.

       ࠧ  室  ᫥
業: ணࠬ, ࠡ騩  ᥬ,      
 ⠫ ࣠樨 䥩 몠    ᥬ. 
६  ࡮  ࠡ뢠 ᯥ䨪  ᥣ⮢, ।
ࠬ஢, 뫪  ६ , ࠭ ॣ஢ -
  .., ࠧ쭮 㥬 㭪樨, ᠭ  -
ᥬ,    (  )   ࠧ.

      ⢨ ࡮   ᥬ   ᭮
ᯥ.  -,  ࠧ     ᥬ 
ࠢ쭮 ,  㭪樨  ६      
   㯭 (᫨  室)  ⠫쭮 
. -,  ᥬ  ࠢ쭮 ࠡ  맮-
 㭪権,  ᮮ⢥ ᮣ襭 몠 ,  砥
 ᥡ   । ࠬࠬ,   祭  ᮡ-
 ࠢ ࠭ ॣ஢,   ॡ ਤন-
  㭪 .

      ⥯ 㯨  祭 ࠢ   ண-
ࠬ ࡮ ᥬ  ࡮ .




TASM2 #2-5/              = 179 =


᭮   䥩 ࡮ ᥬ  ࡮ 
-----------------------------------------------------------------

     ⮡ ᪮  㫨 ࡮   ࡮  ᥬ-
,   ᮡ ᫥騥  㭪:

     1.    ࡮ ᥬ   ᯮ짮  奬
          ᥣ⮢, ᮢ⨬  ࡮ .

     2.  ࡮   ࡮ ᥬ  ᮢ⭮ ᯮ짮
         ᮮ⢥騥 㭪樨   ६  ଥ, -
           ࡮ .

     3.   ஢ 㫥  믮塞 ணࠬ 㦭
         ᯮ짮 ⨫-騪 TLINK.

      祣    ⮬,   ⢨⥫쭮 -
  㫨  ࡮  ᥬ.   ᭥ ⮫쪮 ᭮
⮢, ᯥ稢  ࠧࠡ  㭪権  ࡮  ᥬ,
ᮢ⨬  .




TASM2 #2-5/              = 180 =


   ᥣ
-----------------------------------------------------------------

     ⮡  㭪 ᥬ     뢠  
,    ᯮ짮    ,   ணࠬ
 몥 ,  ⠪ ᮢ⨬   ᥣ  .  筮,
⮡  ,  ।  㫥 ᥬ, 뫨 㯭 
ணࠬ  몥  (   뫨  㯭    ணࠬ
ᥬ),   ணࠬ  ᥬ  ᮡ ᮣ-
襭 몠    ᥣ .

        ࠡ ᥣ⮢  ᥬ  -
  ॠ  쭮  ᫮.  , ࡮ ᥬ
ᠬ 믮   ࠡ   ॠ樨      
ᥣ⮢,  ᮢ⨬   ࡮ ,  ᯮ짮 饭
४⨢ । ᥣ⮢ (. ࠧ "⠭ ४⨢
। ᥣ⮢"   5,      饭-
 ४⨢ । ᥣ⮢).

         饭 ४⨢ । ᥣ⮢  ࡮ 
-----------------------------------------------------------------

     ४⨢ DOSSEG 㪠뢠 ࡮ ᥬ,  㦭  㯮-
冷稢 ᥣ  ᮮ⢥⢨  ᮣ襭ﬨ  㯮冷稢-
 ᥣ⮢  Intel.   ᮣ襭 ᮡ    ࡮
  (    㣨  த,  모 
Microsoft).

     ४⨢ .MODEL 㪠뢠 ࡮ ᥬ,    ᥣ,
ᮧ    饭 ४⨢ । ᥣ⮢,
  ᮢ⨬  ࠭      (ᢥ嬠,
, ⭮, ।, 让  ᢥ塮让)  ࠢ
砥  㬮砭 ⨯ (FAR  NEAR) 楤, ᮧ-
   ४⨢ PROC.  , ।   -
४⨢ .MODEL, ᮢ⨬  ﬨ ࡮   ᮮ⢥騬
.

     , 饭 ४⨢ ।  ᥣ⮢  .DATA,
.CODE,  .DATA?, .FARDATA, .FARDATA?  .CONST  ᥣ,
ᮢ⨬  ࡮ .

     ਬ, ᬮਬ ᫥騩    ࡮  ᥬ  
 DOTOTAL.ASM:

        DOSSEG               ;  㯮冷稢 ᥣ⮢,

TASM2 #2-5/              = 181 =

                             ; ਭ⮥ ମ Intel
        .MODEL   SMALL       ;    
                             ; (   )
        .DATA                ; 樠 ᥣ ,
                             ; ᮢ⨬  ࡮ 
        EXTRN   _Repetitions:WORD ; 譨 䨪
        PUBLIC  _StartingValue ; 㯥  㣨 㫥
_StartValue     DW   0
        .DATA?               ; 樠஢ ᥣ
                             ; , ᮢ⨬  ࡮ 
RunningTotal    DW   ?
        .CODE                ; ᥣ , ᮢ⨬ 
                             ; ࡮ 
        PUBLIC  _DoTotal
_DoTotal        PROC         ; 㭪 (   
                             ; 뢠   맮
                             ;  ⨯)
        mov     cx,[_Repetitions] ; 稪 믮
        mov     ax,[_StartValue]
        mov     [RunningTotal],ax ;  砫쭮
                             ; 祭
TotalLoop:
        inc     [RunningTotal] ; RunningTotal++
        loop    TotalLoop
        mov     ax,[RunningTotal] ;  筮
                             ; 祭 (१)
        ret
_DoTotal        ENDP
        END

     (।  ⪠  楤 DoTotal 㪠뢠  ᨬ-
  ન  (_), ⠪   筮 ॡ  ࡮ .
 ஡  뢠   ࠧ "ન".)

     ᠭ  ᥬ 楤 _DoTotal   ᯮ짮-
        뢠  ࡮   
:

        DoTotal();

     ⨬,   楤 DoTotal ।,   -
   㣮      ணࠬ   ।     ६
Repetitions. 筮,  ६ StartingValue , 
饤㯭,  ⮬    㯭  㣨  ணࠬ.
騩  ࡮  ( 뢠 SHOWTOT.C)  -
    DOTOTAL.ASM  ᯥ稢   DOTOTAL.ASM

TASM2 #2-5/              = 182 =

譨 :

  extern  int StartingValue;
  extern  int DoTotal(word);
  int  Repetitions;
  main()
  {
     int i;
     Repetitions = 10;
     StartingValue = 2;
     print("%d\n", DoTotal());
}

     ⮡ ᮧ  㫥 DOTOTAL.ASM  SHOWTOT.C 믮塞
ணࠬ SHOWTOT.EXE,  :

        tcc showtot dototal.asm

     ᫨   ⥫ ᪮ 楤 _DoTotal   ண-
ࠬ   몥  ,  ᯮ饩   ,  
諮    ४⨢ .MODEL  .MODEL COMPACT, 
᫨      ॡ  ᯮ짮   DOTATOL.ASM ᥣ
쭥 ⨯,    뫮  ᯮ짮 ४⨢ .FARDATA.

      ,  ᯮ짮 饭 ४⨢ ।-
  ᥣ⮢  ४⭮  㯮冷稢 ᥣ⮢,
    ᥣ⮢ 㤠  ⠢.




TASM2 #2-5/              = 183 =

            ४⨢ । ᥣ⮢  ࡮ 
-----------------------------------------------------------------

     ᭥ ⥯ ஡ ࣠樨 䥩 ࡮ ᥬ-
   몠 ,   ᯮ  ४⨢  ।
ᥣ⮢ ண ⨯ (⠭ ४⨢ । ᥣ-
⮢). ਬ,  ᫨    㫥 DOTOTAL.ASM 饭
४⨢ । ᥣ⮢ ४⨢ ண ⨯,   -
:

DGROUP  group    _DATA,_BSS
_DATA   segment  word public 'DATA'
        EXTRN   _Repetitions:WORD ; 譨 䨪
        PUBLIC  _StartingValue ; 㯥  㣨 㫥
_StartValue     DW   0
_DATA   ends
_BSS    segment word public 'BSS'
RunningTotal    DW   ?
_BSS    ends
_TEXT   segment byte public 'CODE'
        assume  cs:_TEXT.ds:DGROUP,ss:DGROUP
        PUBLIC  _DoTotal
_DoTotal        PROC         ; 㭪 (   
                             ; 뢠   맮
                             ;  ⨯)
        mov     cx,[_Repetitions] ; 稪 믮
        mov     ax,[_StartValue]
        mov     [RunningTotal],ax ;  砫쭮
                             ; 祭
TotalLoop:
        inc     [RunningTotal] ; RunningTotal++
        loop    TotalLoop
        mov     ax,[RunningTotal] ;  筮
                             ; 祭 (१)
        ret
_DoTotal        ENDP
_TEXT   ENDS
        END

       ४⨢ । ᥣ⮢ ண ⨯ 
⮫쪮 ,  ⠪  㦥 ⠥.  ⮬   ᯮ짮-
  ணࠬ  몥  ࠧ    㤭
.   ࣠樨 䥩  ࡮    饬  砥
 ᯮ짮  ४⨢ । ᥣ⮢  
२.  ᫨   ⥬     ᯮ짮  
࣠樨  䥩    ࡮   ४⨢ ।

TASM2 #2-5/              = 184 =

ᥣ⮢,  ਤ ஢ ४ ᥣ, -
⢥騥 ᯮ㥬    몥   . -
 ᯮ짮 ᥣ⮢  ࡮  ᮤন   "㪮⢥
짮⥫  ࡮ ".

     ⥩訩 ᯮᮡ । 室     
  ணࠬ    ࡮   ४⨢ ண ⨯ ⮨ 
⮬, ⮡ ᪮஢ ᭮  ணࠬ  ࡮  
㦭    ࠬ஬ -S.  ⮬ ࡮  ᣥ-
  室    몥 ᥬ.  ⮬  
   ४⨢, ᯮ㥬 ࡮ . ⠥ 
᪮஢      ᥬ. ਬ, ᫨  
:

        tcc -s showtot.c

  䠩 SHOWTOT.ASM, ᮤঠ騩:

        ifndef   ??version
?debug  macro
        endm
        endif
        name     showtot
_TEXT   segment byte public 'CODE'
DGROUP  group   _DATA,_BSS
        assume   cs:_TEXT.ds:DGROUP,ss:DGROUP
_TEXT   ends
_DATA   segment word public 'DATA'
_d@     label   byte
_d@w    label   word
_DATA   ends
_BSS    segment word public 'BSS'
_b@     label   byte
_b@w    label   word
        ?debug  C E91481D5100973688F77746F742E63
_BSS    ends
_TEXT   segment byte public 'CODE'
;       ?debug  L 3
_main   proc near
;       ?debug  L 6
        mov     word ptr DGROUP:_Repetitions,10
;       ?debug  L 7
        mov     word ptr DGROUP:_StartingValue,2
;       ?debug  L 8
        call    near ptr _DoTotal
        push    ax

TASM2 #2-5/              = 185 =

        mov     ax,offset DGROUP:_s@
        push    ax
        call    near ptr _printf
        pop     cx
        pop     cx
@1:
;       debug   L 9
        ret
_main   endp
_TEXT   ends
_BSS    segment word public 'BSS'
_Repetitions    label word
        db      2 dup (?)
        ?debug  C E9
_BSS    ends
_DATA   segment word public 'DATA'
_s@     label   byte
        db      37
        db      100
        db      10
        db      0
_DATA   ends
        extrn   _StartingValue:word
_TEXT   segment byte public 'CODE'
        extrn   _DoTotal:near
        extrn   _printf:near
_TEXT   ends
        public  _Repetitions
        public  _main
        end

     ४⨢  ।  ᥣ⮢ _DATA  (樠஢
ᥣ  ), _TEXT (ᥣ )  _BSS (樠஢-
 ᥣ ),  ⠪ ४⨢ GROUP  ASSUME  -
    ᥬ஢  , ⮬    ᯮ짮
(⠪,   㪠뢠).




TASM2 #2-5/              = 186 =

      祭  㬮砭:  室 㦠 ᥣ?
-----------------------------------------------------------------

        뢠  몠  㭪樨 ᥬ-
  ᯮ짮 (㦠)  饭   ॣ
DS / ES.   ᮮ⭮襭   祭ﬨ  ᥣ-
  ॣ஢   맮  ࡮ , ⠪   ᥬ
ᯮ २⢠ ⭮   ᥣ  ॣ-
஢.    ᬮਬ 祭 ᥣ ॣ஢   -
,  㭪 ᥬ 뢠  ࡮  ,    ⠪
ᮮ⭮襭  ᥣ묨 ॣࠬ,  砨,   㭪-
樨 ᥬ ॡ 㦠    ᥣ  -
஢.

      室  㭪 ᥬ  ࡮  ॣ CS   DS
  ᫥騥 祭,    ᯮ㥬 
 (ॣ SS ᥣ ᯮ  ᥣ ⥪,    ES
ᥣ ᯮ,  砫 ᥣ ॣ):


   祭 ॣ஢  室  ᥬ  ࡮ 
                                                  7.1
 -----------------------------------------------------------
              CS                          DS
 -----------------------------------------------------------
 嬠         _TEXT                    DGROUP
               _TEXT                    DGROUP
 ⭠         _TEXT                    DGROUP
 ।         _䠩_TEXT              DGROUP
          _䠩_TEXT              DGROUP
 塮    _䠩_TEXT   _뢠饣_䠩_DATA
 -----------------------------------------------------------

       "_䠩"  -          ᥬ,   
"_뢠饣_䠩" -      ࡮ ,  뢠饣
  ᥬ.

      ⭮   _TEXT  DGROUP ᮢ, ⮬
 室   㭪 ᮤন ॣ CS ࠢ ᮤন DS.
 ᯮ짮 ᢥ嬠,    ⭮    
 室  㭪 ᮤন SS ࠢ ᮤন ॣ DS.

        㭪樨  ᥬ, 뢠  ணࠬ 
몥 ,  室 㦠 ᥣ ॣ?  ⬥⨬  
砫,     ਤ ( ⮣, ⮣  ᫥
) 㦠 ॣ SS  CS:   쭨 맮, -

TASM2 #2-5/              = 187 =

室      ॣ CS ⮬᪨ ⠭ 
㦭 祭,  ॣ SS ᥣ 㪠뢠  ᥣ ⥪ 
  室 믮 ணࠬ    ᫥ (᫨ ⮫쪮
   ணࠬ,   "४砥" ⥪;  ⮬ -
砥  㦭 ⪮ ,   ).

      ES   ᥣ ᯮ짮 ⠪,   ॡ-
.     ⠭  ⠪ ࠧ, ⮡  㪠뢠
   쭨 ⨯ 饭,    㧨    ES  ᥣ-
-ਥ  ப 㭪樨.

      ॣ஬ DS  ⮨ .       
࡮ , ஬ ᢥ塮让, ॣ DS  室  㭪 㪠-
뢠  ᪨ ᥣ  (DGROUP),     
᫥.    㯠     쭨 ⨯ 饭 ᥣ
 ᯮ짮 ॣ ES,     ,  
⮣ ६ 㦭 ᯮ짮 ॣ DS (᫨  ᮡࠥ
⢫ ⥭ᨢ   ),  ᪫ 室-
 ᯮ짮  襩 ணࠬ ⢠ 権  -
䨪ᮬ ८। ᥣ. ਬ,    
쭥 ᥣ   ᫥ ᯮᮡ:

                  .
                  .
                  .
                  .FARDATA
Counter           DW    0
                  .
                  .
                  .
                  .CODE
                  PUBLIC  _AsmFunction
_AsmFunction      PROC
                  .
                  .
                  .
                  mov   ax,@FarData
                  mov   es,ax         ; ES 㪠뢠 
                                      ; ᥣ  
                                      ; 쭨 ⨯
                                      ; 饭
                  inc   es:[Counter]  ; 㢥 祭
                                      ; 稪
                  .
                  .
                  .

TASM2 #2-5/              = 188 =

_AsmFunction      ENDP
                  .
                  .
                  .



                  .
                  .
                  .
                  .FARDATA
Counter           DW     0
                  .
                  .
                  .
                  .CODE
                  PUBLIC  _AsmFunction
_AsmFunction      PROC
                  .
                  .
                  .
                  assume  ds:@FarData
                  mov   ax,@FarDAta
                  mov   ds,ax          ; DS 㪠뢠 
                                       ; ᥣ  
                                       ; 쭨 ⨯
                                       ; 饭
                  inc   [Counter]      ; 㢥 祭
                                       ; 稪
                  assume ds:@Data
                  mov   ax,@Data
                  mov   dx,ax          ; DS ᭮ 㪠뢠
                                       ;  DGROUP
                  .
                  .
                  .
_AsmFunction      ENDP
                  .
                  .
                  .

     ன ਠ   २⢮,    -
  쭥 ᥣ     ॡ ८।
ES:. ᫨  饭  쭥 ᥣ  㦠 ॣ
DS,  㡥    ⮬,   । 饭  㣨 ६
DGROUP   ⠭ (       ਢ

TASM2 #2-5/              = 189 =

ਬ).  ᫨   㭪樨  ᥬ   頥-
  DGROUP, । 室    ࠢ  易⥫쭮  㦭
⠭  ᮤন  DS, ⠪   ࡮  ࠧ㬥,
 ॣ DS  .

      ᯮ짮  㭪, 뢠  , ᢥ塮让
  ࠡ  ॣ஬ DS 㦭 ᪮쪮 -㣮.
 ᢥ塮让      ࡮    ᮢᥬ    ᯮ
DGROUP.   ⮣    ᢮   ᮡ⢥ ᥣ-
 ,   쭨 ᥣ⮬ ⭮⥫쭮 
㣨  㫥  ணࠬ ( ᮢ⭮ ᯮ㥬 
ᥣ ).  ᯮ짮 ᢥ塮让   
室   㭪 ॣ DS   ⠭ ⠪ ࠧ,
⮡  㪠뢠   쭨 ᥣ      -
   㭪樨, ਬ:

                  .
                  .
                  .
                  .FARDATA
                  .
                  .
                  .
                  .CODE
                  PUBLIC  _AsmFunction
_AsmFunction      PROC
                  push    ds
                  mov     ax,@FarData
                  mov     ds,ax
                  .
                  .
                  .
                  pop     ds
                  ret
_AsmFunction      ENDP
                  .
                  .
                  .

     ⨬,  室 ﭨ ॣ DS ࠭  
室    㭪  _AsmFunction   樨 PUSH  ।
室 ⠭   樨 POP.   ᢥ-
让    ࡮  ॡ, ⮡  㭪樨 -
﫨 ॣ DS.



TASM2 #2-5/              = 190 =


饤㯭  譨 䨪
-----------------------------------------------------------------

     ணࠬ ࡮ ᥬ  뢠 㭪樨    -
    譨 ६ . ணࠬ ࡮  
ࠧ  뢠 饤㯭 (PUBLIC) 㭪樨  ࡮  -
ᥬ     ६ ࡮ ᥬ. ᫥ ⮣,
  ࡮ ᥬ ⠭  ᮢ⨬    ࡮  
ᥣ ( ᠭ  । ࠧ), ⮡ ᮢ⭮ -
짮 㭪樨  ६ ࡮   ࡮ ᥬ, -
 ᮡ ᪮쪮  ࠢ.

                             ન
-----------------------------------------------------------------

     筮  ࡮  ।,   譨 ⪨  -
稭    ᨬ  ન  (_).  ࡮  ⮬᪨
砥 ᨬ ન    㭪権   -
 ६,   ᯮ   몠 , ⮬ 
  ᥬ      ન.  㦭
㡥,    뫪  ᥬ  㭪樨    ६
࡮  稭  ન.  㭪樨  ६ -
ᥬ,    饤㯭묨    頥
࡮ ,  ⠪ 稭  ᨬ ન.

     ਬ, ᫥ ணࠬ  몥 :

  extrn int  ToggleFlag();
  int   Flag;
  main()
  {
      ToggleFlag();
  }

ࠢ쭮   ᫥饩 ணࠬ  ᥬ:

            DOSSEG
            .MODEL  SMALL
            .DATA
            EXTRN   _Flag:word
            .CODE
            PUBLIC  _ToggleFlag
_ToggleFlag PROC
            cmp     [_Flag],0      ; 䫠 襭?
            jz      SetFlag        ; , ⠭ 

TASM2 #2-5/              = 191 =

            mov     [_Flag],0      ; ,  
            jmp     short EndToggleFlag ; 믮
SetFlag:
            mov     [_Flag],1      ; ⠭ 䫠
EndToggleFlag:
            ret
_ToggleFlag ENDP
            END

     ⨬,   ⪠,     뫮  ணࠬ 
몥  (ਬ,  SetFlag),  ॡ 㪠뢠 ᨬ -
ન.

     ,   ࠬ  ப -u    㪠-
  ࡮  ,  ⮡    ᯮ짮 ᨬ ન.
    筮 ਢ⥫ ᯮᮡ, 
 ⥪ ᯮ饩 ⥬ ࡮  ᪮஢  ࠧ-
襭 ᨬ ન.   ࠧ,    ॡ
    Borland 室   㫥  -
४஢   ࠬ஬ -u (.  "襭   -
 ᪠",  ᪠뢠  ࠬ -p,  -
頥 ᯮ짮 ᨬ ન  ࠧ稬  
 ய ᨬ).




TASM2 #2-5/              = 192 =


  ய ᨬ
-----------------------------------------------------------------

       䨪஢ ࡮ ᥬ 筮  ࠧ砥
  ய 㪢 (孨   ॣ).  ᪮
   ࠧ, ⥫쭮  ⠪ ࠧ稥    ࡮
ᥬ ( ࠩ    䨪஢,  ᮢ-
⭮ ᯮ ᥬ஬  ).    ᤥ    -
 ࠬ஢ /ML  /MX.

     ४⥫ (ࠬ)   ப  /ML  ਢ  
⮬,     ࡮ ᥬ   䨪  
ய ᨬ  ࠧ ( ࠧ묨). -
   ப /MX 㪠뢠 ࡮ ᥬ,  -
  ய ᨬ 㦭 ࠧ  饤㯭  (PUBLIC)
䨪,   譨   (EXTRN)  䨪  
(GLOBAL) 䨪   (COMM) 䨪.

                               ⮪
-----------------------------------------------------------------

       ணࠬ ࡮ ᥬ  ᢮ 
  ६    ࠧ (8, 16, 32   .
.),  饬 砥    ६  ᮮ⢥⢨
  ࠧ஬. ਬ, ᫨  뢠 ᫮  ⮢ -
६,  筮  ਢ  ஡:

                   .
                   .
                   .
 SmallCount        DB   0
                   .
                   .
                   .
                   mov   WORD PTR [SmallCount],0ffffh
                   .
                   .
                   .

     ⮬ , ⮡   ᥬ EXTRN,  ஬
뢠 ६ ,  ࠢ ࠧ  -
, ⠪   樨 ࠧ  㯠    ६  
࡮ ᥬ ᭮뢠    ᠭ.

     ᫨  ணࠬ  몥  ᮤন :

TASM2 #2-5/              = 193 =


        char c

  ᥬ:

                   .
                   .
                   .
  EXTRN            c:WORD
                   .
                   .
                   inc  [c]
                   .
                   .
                   .

 ਢ  쬠  訡, ᪮ ᫥ ⮣,
    몥  ६ c 㢥 । 256 ࠧ,
 祭 㤥 襭,  ⠪   ᠭ,  ६
ࠧ஬  ᫮,      OFFSET c + 1 㤥  㢥-
 ४⭮,  ਢ  ।᪠㥬 १⠬.

      ⨯    ᥬ  ᫥饥 -
⭮襭:

--------------------------------------------------------------
                                ᥬ
--------------------------------------------------------------
    unsigned char                                   byte
    char                                            byte
    enum                                            word
    unsigned short                                  word
    short                                           word
    unsigned int                                    word
    int                                             word
    unsigned long                                   dword
    long                                            dword
    float                                           dword
    double                                          qword
    long double                                     tbyte
    near*                                           word
    far*                                            dword
---------------------------------------------------------------

譨 쭨 䨪     ᥣ

TASM2 #2-5/              = 194 =

-----------------------------------------------------------------

     ᫨  ᯮ 饭 ४⨢ । ᥣ-
⮢,   ᠭ 䨪஢ EXTRN  ᥣ 쭥 ⨯
  ࠧ    ᥣ, ⠪   ࡮  ᥬ-
  ᬠਢ  䨪, ᠭ   ᥣ,
 易   ᥣ⮬.   ᢮ ⪨: -
 ᥬ   ஢  樨  -
, ᠭ,  譨 (EXTRN),     ᥣ  
⮬     砥  室 ᣥ஢ ।-
 ᥣ  ᮮ ,  뫠 ⪠   -
 ६,  ᥣ   㦥 ४ 祭-
.      ࡮ ᥬ   뫮  ⠪
譨 䨪 ࠢ ,        ᯥ
 ⥯ ஢ન  樨  ᥣ.

     ᫨  -⠪ ,   ᯮ짮   
ᠭ  譥 䨪 ᥣ  ४-
 । ᥣ⮢,  ⥬  ४⨢  EXTRN  
⮣  䨪  ᠭ ᥣ.  쭮 -
⥫쭮, ⮬ ᫨    ᯥ稢 㧪 ४-
⭮  祭  ᥣ   饭  ,   ᥣ
 ࠧ ᠭ  EXTRN    䨪஢  쭥
⨯        ᥣ⮢.  ।,  ਬ,    䠩
FILE1.ASM ᮤন ᫥饥:

                      .
                      .
                      .
                      .FARDATA
 FileVariable         DB   0
                      .
                      .
                      .

    䠩 FILE2.ASM,  ᮤন:

                      .
                      .
                      .
                      .DATA
                      EXTRN  FileVariable:BYTE
                      .CODE
 Start                PROC
                      mov   ax,SEG FileVariable
                      mov   ds,ax

TASM2 #2-5/              = 195 =

                      .
                      .
                      .

     SEG File1Variable  㤥   ४⭮  祭
ᥣ.  ४⨢ EXTRN ࠧ饭   ⢨ ४⨢
䠩 FILE2.ASM DATA, ⮬ ࡮ ᥬ ⠥,   -
  File1Variable    室   ᥣ DATA
䠩 FILE2.ASM,    쭥 ᥣ DATA.

      ᫥饬  FILE2.ASM SEG File1Variable  㤥  -
 ४⭮ 祭 ᥣ:

                      .
                      .
                      .
                      .DATA
 @CurSeg              ENDS
                      EXTRN   File1Variable:BYTE
                      .CODE
 Start                PROC
                      mov   ax,SEG File1Variable
                      mov   ds,ax
                      .
                      .
                      .

     ""  ⮨  ⮬,  ४⨢ @CurSeg ENDS  -
蠥  ᥣ  .DATA,  ⮬,   ६ FileVariable
뢠,  ,  ᥣ⭠  ४⨢    -
.




TASM2 #2-5/              = 196 =

                      ப 騪
-----------------------------------------------------------------

     ⥩訩 ᯮᮡ ᪮ 㫨 ࡮      ﬨ
࡮ ᥬ ⮨  ⮬, ⮡    -
 ࡮ , ᫥ 祣  믮  ⠫ ࠡ.  -
 㦭  ப ࡮  믮  室-
  , 맮 ࡮ ᥬ  ᥬ஢,   -
⥬  맮  ⨫ TLINK   ꥪ 䠩  -
塞 䠩. ।, ਬ,      ணࠬ,
  䠩  몥  MAIN.C  STAT.C  䠩  ᥬ-
 SUMM.ASM  DISPLAY.ASM.  ப:

        tcc main stat summ.asm display.asm

믮  䠩 MAIN.C  STAT.C, ᥬ஢ 䠩-
  SUMM.ASM    DISPLAY.ASM     ꥪ
䠩,  ⠪  樠樨   室  
㭪権  믮塞 䠩 MAIN.EXE.    䠩 ᥬ-
 㦭 ⮫쪮   ७ .ASM.

     ᫨  ᯮ ⨫ TLINK   ⮭  ०,  
㥬 ࡮ ᥬ஬ ꥪ 䠩 ।⠢ ᮡ
⠭ ꥪ 㫨  ࠡ뢠 ⠪,    ꥪ-
 㫨 .


⢨  ࡮ ᥬ஬  ࡮ 
-----------------------------------------------------------------

     ,   ,  㦭 ந   
ᮢ⨬    㫨 ᥬ, 㦭 ,   
  㭪樨 ᥬ, 뢠  .  㦭 -
஢  : 祭 । ࠬ஢, -
짮 ॣ஢   祭  뢠 ணࠬ.

                          । ࠬ஢
-----------------------------------------------------------------

     ࡮  । 㭪 ࠬ १ ⥪. । 맮-
  㭪樨  ࡮   ᭠砫  । ⮩ 㭪樨
ࠬ, 稭  ᠬ ࠢ ࠬ    ,  
⥪.   맮 㭪樨:

         .

TASM2 #2-5/              = 197 =

         .
         .
         Test(i, j, 1);
         .
         .
         .

  樨:

         mov   ax,1
         push  ax
         push  word ptr DGROUP:_j
         push  word ptr DGROUP:_i
         call  near ptr _Test
         add   sp,6

 ,  ࠢ ࠬ (祭  1),      ⥪
, ⥬ 㤠  ࠬ j , , i.

        㭪樨 ᥭ  ⥪ ࠬ   
室 ⠬,     ᯮ. ⮬ ।-
 ᫥  맮 㭪樨 ࡮  ࠨ 㪠⥫
⥪  ⭮  ᮮ⢥⢨  祭, ஥   ।
ᥭ  ⥪ ࠬ஢ (ࠬ, ⠪ ࠧ,  -
).  ।饬 ਬ  ࠬ (   )
  ⥪  6 , ⮬ ࡮   -
 6  㪠⥫ ⥪,  ⮡  ࠬ ᫥ -
  㭪樨 Test.    砥  ⮬,  
ᮣ襭 ࡮   㤠 ࠬ஢  ⥪ ⢥砥 -
뢠  ணࠬ  (.    ࠧ "襭  맮 
᪠").

     㭪樨 ᥬ    ࠬࠬ, ।-
  ⥪, ⭮⥫쭮 ॣ BP. ਬ, ।, 
㭪 Test  ।饬 ਬ  ।⠢  ᮡ  ᫥
㭪  ᥬ:

                     DOSSEG
                     .MODEL   SMALL
                     .CODE
                     PUBLIC   _Test
_Test                PROC
                     push   bp
                     mov    bp,sp
                     mov    ax,[bp+4]    ;  ࠬ 1
                     add    ax,[bp+6]    ; ਡ ࠬ 2

TASM2 #2-5/              = 198 =

                                         ;  ࠬ 1
                     sub    ax,[bp+8]    ;   㬬 3
                     pop    bp
                     ret
_Test                ENDP

       ,  㭪  Test  砥  ।  
ணࠬ    몥    ࠬ  १ ⥪, ⭮⥫쭮 BP.
(᫨  , BP   ᥣ ⥪.)  㤠  
,   ࠬ ⭮⥫쭮 BP?

      . 7.4 ,  룫廊  ⥪  ।  믮
ࢮ 樨  㭪樨 Test:

   i = 25;
   j = 4;
   Test(1, j, 1);

                             .                       .
                             .                       .
                             |                       |
                             |-----------------------|
                             |                       |
                             |-----------------------|
                SP -->       |          |
                             |-----------------------|
                SP + 2       |        25 (i)         |
                             |-----------------------|
                SP + 4       |        4 (j)          |
                             |-----------------------|
                SP + 6       |           1           |
                             |-----------------------|
                             |                       |
                             |-----------------------|
                             |                       |
                             .                       .

     . 7.4 ﭨ ⥪ । 믮 ࢮ 樨
㭪樨 Test.

     ࠬ 㭪樨 Test ।⠢ ᮡ 䨪஢  -
 ⭮⥫쭮 SP, 稭  祩,     -
,  ஬ ࠭  , ᥭ 㤠   -
. ᫥ 㧪 ॣ BP 祭 SP   -
  ࠬࠬ ⭮⥫쭮 BP. ,   ᭠砫 -
 BP,  ⠪   뢠饩 ணࠬ ।,   

TASM2 #2-5/              = 199 =

  BP    㤥.  ᥭ  ⥪ BP  
ᬥ饭  ⥪.   . 7.5  ﭨ ⥪ ᫥ -
 ᫥ ப :

                 .
                 .
                 .
                 push  bp
                 mov   bp,sp
                 .
                 .
                 .

                          .                       .
                          .                       .
                          |                       |
                          |-----------------------|
             SP -->       | BP 뢠饩 ண.  |  <-- BP
                          |-----------------------|
             SP + 2       |          |  BP + 2
                          |-----------------------|
             SP + 4       |        25 (i)         |  BP + 4
                          |-----------------------|
             SP + 6       |        4 (j)          |  BP + 6
                          |-----------------------|
             SP + 8       |           1           |  BP + 8
                          |-----------------------|
                          |                       |
                          |-----------------------|
                          |                       |
                          .                       .

     . 7.5 ﭨ ⥪ ᫥ 権 PUSH  MOVE.

     ࣠ । ࠬ஢ 㭪樨 १ ⥪  ᯮ-
    ᪨  ६ -  ⠭-
 ਥ  몥 .   , , ᪮쪮 -
஢  ணࠬ  몥 :  ᠬ  ࠬ  ᥣ
࠭   ⥪  ,  ।⢥ ᫥騬  -
  ⥪ ᮬ ,  ᫥騩 頥 ࠬ
࠭  ।⢥  ᫥  ᠬ   ࠬ  ..
᪮ 冷   ⨯  ।  ࠬ஢  ,  
ᥣ    ⥪.

     ࠭⢮  ᪨  ६  -
१ࢨ஢,     SP  ॡ㥬  ᫮ .  ਬ,

TASM2 #2-5/              = 200 =

࠭⢮  ᪮ 쭮 ᨢ ࠧ஬   100
   १ࢨ஢,  ᫨  㭪 Test  -
権:

                     .
                     .
                     .
                     push  bp
                     mov   bp,sp
                     sub   sp,100
                     .
                     .
                     .

   . 7.6.

                          .                       .
                          .                       .
                          |                       |
                          |-----------------------|
             SP -->       |                       |  BP - 100
                          |-----------------------|
                          |                       |
                          |-----------------------|
                          .                       .
                          .                       .

                          .                       .
                          .                       .
                          |                       |
                          |-----------------------|
             SP + 100     | BP 뢠饩 ண.  |  <-- BP
                          |-----------------------|
             SP + 102     |          |  BP + 2
                          |-----------------------|
             SP + 104     |        25 (i)         |  BP + 4
                          |-----------------------|
             SP + 106     |        4 (j)          |  BP + 6
                          |-----------------------|
             SP + 108     |           1           |  BP + 8
                          |-----------------------|
                          |                       |
                          |-----------------------|
                          |                       |
                          .                       .


TASM2 #2-5/              = 201 =

     . 7.6 ﭨ ⥪ ᫥ 権 PUSH, MOVE  SUB.

     ᪮   ⥪,  ࠭ ᪨  -
 ६, ।⠢ ᮡ  訥  , 祬 BP,
 饭  ᪨    ६  ᯮ
⥫쭮 ᬥ饭. ਬ, :

           mov   byte ptr  [bp-100]

   祭   ࢮ        ࠭    १ࢨ஢
100-⮢ ᨢ.  । ࠬ஢ ᥣ ᯮ-
 ⥫쭠  ⭮⥫쭮 ॣ BP.

       뤥 ࠭⢮  ᪨  
६ ᠭ  ᯮᮡ,  ࡮ ᥬ ।ᬮ-
७ ᯥ樠쭠  ४⨢ LOCAL,  ⢥  -
頥  뤥   ᢠ   ᪨ -
  ६.      楤  砥  ४⨢
LOCAL,  ࠧ㬥,   ।   楤-
 ᪨  ६. ਬ, ४⨢:

          LOCAL  LocalArray:BYTE:100,LocalCount:WORD=AUTO_SIZE

।  ᪨  ६   LocalArray    LocalCount.
LocalArray  ᠬ  ।⠢ ᮡ , ࠢ 
[BP-100],  LocalCount -  ⪠, ࠢ  [BP-102].  -
      ᯮ짮 ,   ६.  ⮬
   㦭 㤥   祭. AUTO_SIZE -   饥
᫮  (ꥬ ),  室  ࠭ ᪨
 ६.  ⮡ 뤥 ࠭⢮  -
  ६,  祭 㦭   SP.

     ਢ  ਬ  ⮣,    㦭  ᯮ짮  ४⨢
LOCAL:

                 .
                 .
                 .
 _TestSub        PROC
                 LOCAL
 LocalArray:BYTE:100,LocalCount:WORD=AUTO_SIZE
                 push  bp          ; ࠭ 㪠⥫ ⥪
                                   ; 뢠饩 ணࠬ
                 mov   bp,sp       ; ⠭ ᮡ⢥
                                   ; 㪠⥫ ⥪
                 sub   sp,AUTO_SIZE ; 뤥 ࠭⢮ 

TASM2 #2-5/              = 202 =

                                   ; ᪨ 
                                   ; ६
                 mov   [LocalCount],10 ; ⠭ ६
                                   ; LocalCount  祭 10
                                   ; (LocalCount   [BP-102])
                 .
                 .
                 .
                 mov   cx,[LocalCount] ;  祭
                                    ; (稪)  쭮
                                    ; ६
                 mov   al,'A'       ;  ᨬ 'A'
                 lea   bx,[LocalArray] ; 뫪  
                                    ; ᨢ LocalArray
                                    ; (LocalArray  [BP-100])
 FillLoop:
                 mov   [bx],al      ;  ᫥騩 
                 inc   bx           ; 뫪  ᫥騩 
                 loop  FillLoop     ; ࠡ ᫥騩 ,
                                    ; ᫨  
                 mov   sp,bp        ; ᢮ ,
                                    ; 뤥  -
                                    ;   ६
                                    ; ( ⠪ ᯮ짮
                                    ; add sp,AUTO_SIZE)
                 pop   bp           ; ⠭ 㪠⥫
                                    ; ⥪ 뢠饩 ணࠬ
                 ret
 _TestSub        ENDP
                 .
                 .
                 .

       ਬ ᫥    ,  ࢮ
  ᫥  ।  ᪮ 쭮 ६
।⠢ ᮡ ⨯   ⮩  ६:  BYTE,  WORD,
DWORD,  NEAR  ..  ஥  ᫥ ।  -
᪮ 쭮 ६ -  ᫮ ⮢ 㪠  -
, १ࢨ㥬   ६.    -
⥫  । ᯮ㥬 ᪨  ᨢ
(᫨  ᯮ). ᫨   ய饭,  १ࢨ-
   㪠 ⨯.   ⮣ LocalArray ⮨ 
100 ⮢ ࠧ஬  1 ,  LocalCount -   -
 ࠧ஬  ᫮ (. ਬ).

     ⬥⨬ ⠪,  ப  ४⨢ LOCAL   ਬ-

TASM2 #2-5/              = 203 =

  蠥  =AUTO_SIZE.  , 稭饥  
ࠢ⢠, 易⥫쭮. ᫨  ,  ⪠, ᫥-
   ࠢ⢠,  ⠭  祭 ᫠  
ॡ㥬 ᪮ 쭮 .    ⥬ ᯮ-
    뤥  ᢮   -
᪨  ६, ⠪  ४⨢ LABEL ⮫쪮 -
 ⪨              
.   , ४⨢ LOCAL  뤥   -
᪨  ६,    ⪨, -
     ᯮ짮   뤥 ,  ⠪  
㯠  ᪨  ६.

     祭 㤮 ᢮⢮ ४⨢ LOCAL  砥    ⮬,
    ⢨  ⮪ ᪨  ६ 
饣 ࠧ ᪨  ६  ࠭祭  ⮩
楤ன,  ன  ᯮ, ⮬   ᢮-
 ᯮ짮  ᪮ 쭮  ६    㣮
楤.

       ,   ४⨢ LOCAL  ।  
ᯮ짮  ⮬᪨  ६   . ⬥⨬,
  ᯮ짮  ப ४⨢ LOCAL    -
襭  㣮  祭  (.  9). (  
⠪   3 "ࠢ筮 㪮⢠",  ਢ -
⥫쭠 ଠ   ४⨢ LOCAL.)

     , ࡮  ࠡ⠥  ࠭栬 ⥪ ⠪ ,    
  ᠫ.    ᪮஢ ᪮쪮 㫥 ࡮
  ࠬ஬ -s  ᬮ,   ᥬ  
࡮    ⠬ ᮧ  ᯮ ࠭ ⥪.

         ४᭮,          㤭.
-, ⠪ ᯮᮡ 㯠  ࠬࠬ,  ஬ ᯮ-
 ﭭ ᬥ饭 ⭮⥫쭮 BP 筮  ⥭:
  ⮬    ⮫쪮  訡,  ᫨   㣮
ࠬ,  㣨 ᬥ饭 㪠⥫ ⥪    㭪樨  
.  ।, ਬ,  㭪 Test ਭ
 ࠬ:

        Test(Flag, i, j, 1);

      i 室  ᬥ饭 6,    ᬥ饭 4, j -  
ᬥ饭 8,   6  ..  ᬥ饭 ࠬ஢  ᯮ짮-
 ४⨢ EQU:

                    .

TASM2 #2-5/              = 204 =

                    .
                    .
Flag                EQU  4
AddParm1            EQU  6
AddParm2            EQU  8
SubParm1            EQU  10

                    mov   ax[bp+AddParm1]
                    add   ax,[bp+AddParm1]
                    sub   ax,[bp+SubParm1]
                    .
                    .
                    .

  ᬥ饭  ࠡ   쭮  ᫮.  
      쥧 ஡:   -
  쭨  ࠧ ᥭ   ⥪    
㢥稢   ,   ࠧ । 㪠⥫
        쭨   쭨  -
묨,  ᮮ⢥⢥. ࠡ⪠ 㭪樨,   ࠢ ᯥ-
宬 㤥 ᥬ஢  ࠢ쭮 ࠡ  㪠⥫ -
  ᯮ짮    뫮  쬠 ⮩
祩.

      ᥭ 譨.   ࡮  ᥬ  ।ᬮ७
४⨢  ARG,    ன   믮 ।
ࠬ஢  ணࠬ  ᥬ.

     ४⨢ ARG ⮬᪨  ࠢ ᬥ饭 
⥪    ६. ਬ:

           arg      FillArray:WORD,Count:WORD,FillValue:BYTE

        ࠬ: FillArray, ࠬ ࠧ஬ 
᫮, Count, ⠪ ࠬ ࠧ஬  ᫮  FillValue - -
  ࠧ஬    .  ४⨢  ARG    ⠭   
FillArray    祭 [BP+4] (ࠧ㬥,   室
 楤  ⨯),  Count -   祭  [BP+6],  
 FillValue -  祭 [BP+8].  ᮡ 業 ४-
⨢ ARG ⥬,    ᯮ짮 ।      -
 ⪨     祭,    ⠭-
.

     ਬ, ।,     㭪 FillSub  -
 뢠   ᫥騬 ࠧ:


TASM2 #2-5/              = 205 =

      main()
      {
      #define ARRAY_LENGTH 100
         char TestArray[ARRAY_LENGTH];
         FillSub(TestArray,ARRAY_LENGTH,'*');
      }

      FillSub ४⨢ ARG  ࠡ  ࠬࠬ    -
짮 ᫥騬 ࠧ:

_FillSub       PROC  NEAR
         ARG   FillArray:WORD,Count:WORD,FillValue:BYTE
         push  bp           ; ࠭ 㪠⥫ ⥪
                            ; 뢠饩 ணࠬ
         mov   bp,sp        ; ⠭ ᢮ ᮡ⢥
                            ; 㪠⥫ ⥪
         mov   bx,[FillArray] ;  㪠⥫ 
                            ; 塞 ᨢ
         mov   cx,[Count]   ;  塞 
         mov   al,[FillValue] ;  祭-⥫
FillLoop:
         mov   [bx],al      ;  ᨬ
         inc   bx           ; 뫪  ᫥騩 ᨬ
         loop  FillLoop     ; ࠡ ᫥騩 ᨬ
         pop   bp           ; ⠭ 㪠⥫ ⥪
                            ; 뢠饩 ணࠬ
         ret
_FillSub       ENDP

      ࠢ , 㤮 ࠡ  ࠬࠬ   ४-
⨢  ARG? ஬ ⮣, ४⨢ ARG ⮬᪨ 뢠 ࠧ-
 ࠧ ⮢   쭥 ⨯. 㣮 㤮-
  ⮨    ⮬,   ⪨, ।   ४⨢
ARG, ࠭祭   ⢨ ⮩ 楤ன,     -
,    室 ᯮ   䫨-
   ࠬ஢  ࠧ 楤.

     ⥫쭠 ଠ  ४⨢ ARG ᮤন  
3 "ࠢ筮 㪮⢠".




TASM2 #2-5/              = 206 =

                         ࠭ ॣ஢
-----------------------------------------------------------------

      ⢨ ࡮ ᥬ  ࡮  뢠 
ணࠬ  몥  㭪樨 ᥬ        
㣮,    ⮬   ࠭ ॣ BP, SP, CS, DS
 SS.    믮 㭪樨 ᥬ  ॣ  
,        뢠  ணࠬ  
  筮 ⠪ 祭,        맮.
 AX, BX, CX, DX  ES,  ⠪ 䫠  ந쭮 -
.

      DI  SI ।⠢ ᮡ ᮡ 砩, ⠪  
࡮    ᯮ  ॣ஢ ६. ᫨  -
㫥 ,  ண 뢠  㭪   ᥬ,  -
짮 ॣ஢ ६ ࠧ襭,    -
 ॣ SI  DI, ᫨  ,  ࠭   㦭. -
    ᥣ ࠭  ॣ, ᨬ  ⮣,
ࠧ襭   饭  ᯮ짮  ॣ஢  ६.
㤭  ࠭  ࠭஢,      ਤ 
  ᥬ  㣨 㫥  몥 ,   -
஢      ࠧ襭 ᯮ짮 ॣ஢
६.   ⮬   ,   㦭 ⠪
    ᥬ.

 祭
-----------------------------------------------------------------

     뢠  ணࠬ  몥  㭪樨    ᥬ,
⠪       㭪樨 ,    祭.  祭
㭪権  ᫥騬 ࠧ:

-----------------------------------------------------------------
 頥 祭     室 頥 祭
-----------------------------------------------------------------
unsigned char                                AX
char                                         AX
enum                                         AX
unsigned short                               AX
short                                        AX
unsigned int                                 AX
int                                          AX
unsigned long                                DX:AX
long                                         DX:AX
float                          ॣ 設 ⥪ ᮯ
                               8087 (ST(0))

TASM2 #2-5/              = 207 =

double                         ॣ 設 ⥪ ᮯ
                               8087 (ST(0))
long double                    ॣ 設 ⥪ ᮯ
                               8087 (ST(0))
near*                                        AX
far*                                         DX:AX
-----------------------------------------------------------------

      饬 砥 8-  16-⮢ 祭     -
  AX,   32-⮢ 祭 -  AX:DX ( ⮬ 訥 16
 祭 室  ॣ DX).  祭  饩 -
   ॣ ST(0),  ।⠢ ᮡ -
 設 ⥪ ᮯ 8087    ᮯ
8087, ᫨ ᯮ  権  饩 窮.

      ࠬ  ⮨  ᪮쪮  ᫮.  ,
騥   1  2 ,   ॣ AX,  -
  4  -  ॣ AX:DX. 塠⮢  
,  ॢ騥 4   ࠭   -
᪨ ,  ⮬   㪠⥫   -
᪨ .    㪠⥫, 㪠⥫  , -
   ⨯ (NEAR),     ॣ  AX,  
㪠⥫ 쭥 ⨯ -   ॣ஢ AX:DX.

      ᬮਬ 뢠  ணࠬ  몥  㭪-
    ᥬ     FindLastChar,  
頥 㪠⥫  ᫥ ᨬ ।  ப. 
몥  ⨯ ⮩ 㭪樨 룫拉  ᫥騬 ࠧ:

     extern char * FindLastChar(char * StringToScan);

 StringToScan -   ப,  ன   -
 㪠⥫  ᫥ ᨬ.

     㭪 FindLastChar  ᫥騩 :

                  DOSSEG
                  .MODEL  SMALL
                  .CODE
                  PUBLIC _FindLastChar
_FindLastChar            PROC
                  push  bp
                  mov   bp,sp
                  cld             ;  ப 樨 㦭
                                  ; 믮   אַ
                                  ; ࠢ

TASM2 #2-5/              = 208 =

                  mov   ax,ds
                  mov   es,ax     ; ⥯ ES 㪠뢠 
                                  ;  ᥣ 
                  mov   di,       ; ⥯ ES:DI 㪠뢠 
                                  ; 砫 । ப
                  mov   al,0      ;  㫥 ᨬ,
                                  ; 騩 ப
                  mov   cx,0ffffh ; ࠡ  ।
                                  ; 64-1 
                  repne scasb     ;  㫥 ᨬ
                  dec   di        ; ⠭ 㪠⥫
                                  ; ⭮  0
                  dec   di        ; 뫪 ⭮ 
                                  ; ᫥ ᨬ
                  mov   ax,dx     ;   AX 㪠⥫
                                  ;  ⨯
                  pop   bp
                  ret
_FindLastChar     ENDP
                  END

      १, 㪠⥫  । ப,  -
頥  ॣ AX.




TASM2 #2-5/              = 209 =

              맮 㭪権 ࡮ ᥬ  ࡮ 
-----------------------------------------------------------------

       ᬮਬ ਬ ணࠬ  ࡮ ,  뢠-
饩 㭪 ࡮ ᥬ.   ࡮ ᥬ  COUNT.ASM
ᮤন 㭪 LineCount,   頥 祭 稪
᫠ ப  ᨬ  । ப:

; 뢠   㭪  ᥬ    
;   ᫠ ப  ᨬ  饩 㫥
; "ப".
;
; ⨯ 㭪樨:
;      extern unsigned int LineCount(char * near StringToCount,
;             unsigned int near * CharacterCountPtr);
;
; :
;      char near * StringToCount: 㪠⥫  "ப", 
;      ன 㦭 믮  ப.
;
;      unsigned int near * CharacterCountPtr: 㪠⥫ 
;      楫 ६,   㦭  祭
;      稪
NEWLINE      EQU   0ah        ; ᨬ ॢ ப  
             DOSSEG
             .MODEL  SMALL
             .CODE
             PUBLIC  _LinaCount
_LineCount   PROC
             push  bp
             mov   bp,sp
             push  si         ; ࠭ ॣ஢
                              ; ६ 뢠饩
                              ; ணࠬ
             mov   si,[bp+4]  ; SI 㪠뢠  ப
             sub   cx,cx      ; ⠭ 祭
                              ; 稪 ᨬ  0
             mov   dx,cx      ; ⠭  0 稪
                              ; ப
LineCountLoop:
             lodsb            ;  ᫥騩 ᨬ
             and   al,al      ;  0?  ப?
             jz    EndLineCount ; , 믮
             inc   cx         ; ,  ᫥騩
                              ; ᨬ
             cmp   al,NEWLINE ;   ப?

TASM2 #2-5/              = 210 =

             jnz   LineCountLoop ; , ஢
                              ; ᫥騩 ᨬ
             inc   dx         ; ,   
                              ; ப
             jmp   LineCountLoop
EndLineCount:
             inc   dx         ;  ப, 
                              ; 蠥 㫥 ᨬ
             mov   [bx],cx    ;  祭 ६-
                              ; 稪
             mov   ax,dx      ;  稪 ப 
                              ; ⢥ 祭 稪
             pop   si         ; ⠭ ॣ஢
                              ; ६ 뢠饩
                              ; ணࠬ
             pop   bp
             ret
_LineCount         ENDP
             END

     騩   몥     CALLC.C  ।⠢
ᮡ ਬ 맮 㭪樨 LineCount:

  char * TestString="Line 1\nline 2\n Line3";
  extern unsigned int LineCount(char * StringToCount,
         unsigned int * CharacterCountPtr);
  main()
  {
      unsigned int LCount;
      unsigned int CCount;

      LCount = LineCount(TestString, &CCount);
      printf("ப: %d\nC: %d\n", LCount, CCount);
  }

              -
 ப:

        tcc -ms callc count.asm

       , 㭪 LineCount 㤥 ࠡ  ⮫쪮
   ணࠬ  몥 ,    ᯮ
  ,  ⠪   㣨  ࠧ 㪠⥫
  ᮢ    ⥪  .  ਢ  ਬ ᨨ 㭪樨
LineCount (COUNTLG.ASM),   㤥 ࠡ  ணࠬ 
,  ᯮ騬    (   : -

TASM2 #2-5/              = 211 =

 । 쭨 㪠⥫, 㭪 LineCount ⠪ -
ᠭ,  㭪 쭥 ⨯):

; 뢠   㭪  ᥬ   ᫠
; ப  ᨬ  饩 㫥 "ப".
;
; ⨯ 㭪樨:
;      extern unsigned int LineCount(char * far StringToCount,
;             unsigned int far * CharacterCountPtr);
;
; :
;      char far * StringToCount: 㪠⥫  "ப", 
;      ன 㦭 믮  ப.
;
;      unsigned int far * CharacterCountPtr: 㪠⥫ 
;      楫᫥ ६,   㦭 
;      祭 稪
NEWLINE      EQU   0ah        ; ᨬ ॢ ப  
             DOSSEG
             .MODEL  LARGE
             .CODE
             PUBLIC  _LinaCount
_LineCount   PROC
             push  bp
             mov   bp,sp
             push  si         ; ࠭ ॣ஢
                              ; ६ 뢠饩
                              ; ணࠬ
             push  ds         ; ࠭ ⠭
                              ; ᥣ 
             lds   si,[bp+6]  ; DS:SI 㪠뢠  ப
             sub   cx,cx      ; ⠭ 祭
                              ; 稪 ᨬ  0
             mov   dx,cx      ; ⠭  0 稪
                              ; ப
LineCountLoop:
             lodsb            ;  ᫥騩 ᨬ
             and   al,al      ;  0?  ப?
             jz    EndLineCount ; , 믮
             inc   cx         ; ,  ᫥騩
                              ; ᨬ
             cmp   al,NEWLINE ;   ப?
             jnz   LineCountLoop ; , ஢
                              ; ᫥騩 ᨬ
             inc   dx         ; ,   
                              ; ப

TASM2 #2-5/              = 212 =

             jmp   LineCountLoop
EndLineCount:
             inc   dx         ;  ப, 
                              ; 蠥 㫥 ᨬ
             les   bx,[bp+10] ; ES:BX 㪠뢠  祩,
                              ;  ன 頥
                              ; 祭 稪
             mov   es:[bx],cx ;  祭 ६-
                              ; 稪
             mov   ax,dx      ;  稪 ப 
                              ; ⢥ 祭 稪
             pop   ds         ; ⠭ ⠭
                              ; ᥣ  
             pop   si         ; ⠭ ॣ஢
                              ; ६ 뢠饩
                              ; ணࠬ
             pop   bp
             ret
_LineCount         ENDP
             END

     ணࠬ COUNTLG.ASM  ᪮  CALLC.C  
᫥饩  ப:

        tcc -ml callc countlg.asm




TASM2 #2-5/              = 213 =

            襭  맮, ᯮ騥  ᪠
-----------------------------------------------------------------

     ⠪, ⥯  㦥 ,  筮   । -
  㭪:  뢠  ணࠬ  ࠬ (ࠢ
)  ⥪, 뢠 㭪,   ࠬ   ⥪
(뢠  )  ᫥ 맮. ࡮   ⠪ ࠡ 
ᮣ襭, ਭ  ᪠. ᭮ ⨬ ᮣ襭  -
  । ᫥ ࠢ,  뢠 ࠬ ( -
) 뢠 ணࠬ.  ᯮ짮 ᮣ襭 -
  ࡮     ࠬ  ப -p 
祢 ᫮ pascal.

     ਢ ਬ 㭪樨  ᥬ,  ன ᯮ-
 ᮣ襭 ᪠:

;
; 뢠, : TEST(i, j ,k)
;
i       equ      8               ;  ࠬ
j       equ      6
k       equ      4               ; ࠢ ࠬ
;
                 DOSSEG
                 .MODEL   SMALL
                 .CODE
                 PUBLIC   TEST
TEST             PROC
                 push  bp
                 mov   bp,sp
                 mov   ax,[bp+i] ;  i
                 add   ax,[bp+j] ; ਡ  i j
                 sub   ax,[bp+k] ;   㬬 k
                 pop   bp
                 ret   6         ; , 
                                 ; 6  ࠬ஢
                                 ; (⪠ ⥪)
TEST             ENDP
                 END

      . 7.7  ﭨ ⥪ ᫥ 믮  -
樨 MOV BP,SP:
                          .                       .
                          .                       .
                          |                       |
                          |-----------------------|

TASM2 #2-5/              = 214 =

             SP -->       | BP 뢠饩 ண.  |  <-- BP
                          |-----------------------|
             SP + 2       |          |  BP + 2
                          |-----------------------|
             SP + 4       |          k            |  BP + 4
                          |-----------------------|
             SP + 6       |          j            |  BP + 6
                          |-----------------------|
             SP + 8       |          i            |  BP + 8
                          |-----------------------|
                          |                       |
                          |-----------------------|
                          |                       |
                          .                       .

     . 7.7 ﭨ ⥪ ᫥ 樨 MOV BP,SP.

     ⨬,   ⪨ ⥪    ।  ࠬ஢
ᯮ  RET 6.

     襭  맮 ᪠ ॡ ⠪, ⮡  -
  饤㯭 䨪 㪠뢠  孥 ॣ
  । ન. 祬  ॡ -
짮  ணࠬ   ᮣ襭  맮 ᪠? ண-
ࠬ, ᯮ ᮣ襭 ᪠,  筮 ᪮쪮
       ࠡ⠥ ॥, 祬 筠 ணࠬ
 몥 , ⠪   ⪨ ⥪  ࠬ஢  ॡ
믮  n  権 ADD SP.   ஡  ᮣ襭 
맮, ਭ  ᪠, ᪠뢠   8.




TASM2 #2-5/              = 215 =


맮 ࡮   ࡮ ᥬ
-----------------------------------------------------------------

       ਭ  믮 ᯥ樠    -
      㭪樨, ᠭ  ᥬ,   
ॡ 뢠  ᥬ 㭪樨, ᠭ  몥
.  뢠,  ᠬ   맢 㭪 ࡮  
㭪樨 ࡮ ᥬ, 祬 , ᪮  ஭  -
ᥬ  ॡ ᫥ ࠭ ⥪.  ᬮ-
ਬ ⪮ ॡ  맮 㭪権 ࡮   ࡮ ᥬ-
.

                     樠樨 
-----------------------------------------------------------------

     訬 ࠢ  맮   㭪権  ࡮
 ⮫쪮  ᥬ  ணࠬ,    -
 樠樨  (ᯮ   ⢥ ࢮ  -
  ).  ""  砥  ᥡ  ணࠬ-
,        ப  TC.EXE  
TCC.EXE,  ணࠬ,  ⢥ ࢮ 㥬 䠩 -
 ᯮ 䠩 C0T, C0S, C0C, C0M, C0L  C0H.

      饬 砥   ᫥ 뢠   㭪樨
࡮    ணࠬ,     㫥 樠-
樨 ࡮ , ⠪    㭪樨  ࡮  
  ࠢ쭮 ࠡ, ᫨  믮﫠   -
 樠樨. ᫨  ⢨⥫쭮  뢠  -
  㭪樨  ࡮      ⠪ ணࠬ,  । 
   樠樨(䠩 C0.ASM  ਡ⨢ -
 ࡮ )  ਮ   Borland 室  -
 몠 ,  ᫥ 祣  ᬮ ᯥ ࠢ 樠-
  㦭  㭪権.  㣮  室
⮨      ⮬,  ⮡  ᪮ 㦭 
㭪  ணࠬ  ᥬ,  뢠, ਬ,
X.ASM,    뢠  㭪.  
믮    ப ⨯:

        tlink x,x,,cm.lib

 m -  ࢠ 㪢    (t -  ᢥ嬠,
s  - , c - ⭠  ..). ᫨ TLINK 뤠 ᮮ饭 
। 䨪,       㭪
    樠樨  뢠 .


TASM2 #2-5/              = 216 =

           ਬ砭: 맮 ।塞  짮⥫  㭪権
      ,      ᢮ । 뢠  㭪樨
      몠 ,      ⥣,   ।⢥-
       맮  㭪権 .  ⢨  樠-
      樨    뢠 訡   ணࠬ ᥬ-
      ,   אַ  ᢥ 頥  
      㭪 .




TASM2 #2-5/              = 217 =


  ⮬,   ࠢ쭮  ᥣ
-----------------------------------------------------------------

       㦥 ਫ ࠭,  室  ᯥ稢,  ⮡
࡮   ࡮ ᥬ ᯮ짮      -
,  ⮡ ᥣ,   ᯮ  ࡮  ᥬ,
ᮢ    ⥬ ᥣ⠬,  ᯮ ࡮ . 㦭
 뢠 ⠪  ४⨢ EXTRN  譨  -
஢   ᥣ⮢   ࠢ쭮 ᥣ.

                           믮 맮
-----------------------------------------------------------------

      ࠧ "맮 㭪権 ࡮ ᥬ   ࡮  "  
㦥  㧭    ⮬,  ࡮  믮 ⮢  맮 
맮 㭪樨.  ⪮ ᬮ५ 堭 맮  㭪権  ,
    ࠧ  窨 ७ 맮 㭪権 ࡮   ࡮ -
ᥬ.

     ,  ॡ    । ࠬ஢   㭪
࡮  ,   ᥭ  ⥪ ᠬ ࠢ ࠬ ,
⥬ ᫥饣  浪 ࠬ  ⠪ ,     ⥪
    ᠬ   ࠬ. ᫥ ⮣ 㦭  -
 㭪. ਬ,  ணࠬ஢  ࡮   -
  筮 㭪樨 ࡮  strcpy  ஢ ப
SourceString  ப DestString  :

        strcpy(DestString, SourceString);

      믮 ⮣  맮  ᥬ 㦭  ᯮ짮-
 樨:

            lea   ax,SourceString     ; ࠢ ࠬ
            push  ax
            lea   ax,DestString       ;  ࠬ
            push  ax
            call  _strcpy             ; ᪮஢ ப
            add   sp,4                ;  ࠬ

      ன SP ᫥ 맮  뢠   ⥪  
ࠬ஢.

     ᫨  뢠 㭪 ,  ᯮ  ᮣ襭
᪠,      ⥪ ࠬ ᫥ ࠢ. ᫥ 맮
ࠨ 㪠⥫ ⥪ SP  ॡ.

TASM2 #2-5/              = 218 =


            lea   ax,DestString       ;  ࠬ
            push  ax
            lea   ax,SourceString     ; ࠢ ࠬ
            push  ax
            call  CTRCPY              ; ᪮஢ ப

      ᫥ 砥 筮 ࠧ㬥,    ४-
஢  㭪 strcpy  ࠬ஬ -p, ⠪   ⠭⭮
筮 ᨨ  㭪樨 ᯮ ᮣ襭  -
, ਭ  ,    ᪠. 㭪樨   -
,  ᠭ  ࠧ " 祭":  8-    16-⮢
祭      ॣ AX,  32-⮢ 祭 - 
AX:DX ( ⮬ 訥 16  祭 室  ॣ DX).
祭  饩 窮   ST(0) (ॣ 設
⥪ ᮯ 8087   ᮯ 8087, ᫨ -
  権  饩 窮).  -
 ࠧ ࠧ,  ᮮ⢥⢨   ࠧ஬.

     㭪樨  ࠭ ᫥騥 ॣ ( ⮫쪮  ):  SI,
DI,  BP, DS, SS, SP  CS.  AX, BX, CX, DX, ES  䫠 -
 ந쭮 .




TASM2 #2-5/              = 219 =

              맮  ࡮ ᥬ 㭪樨 ࡮ 
-----------------------------------------------------------------

       砥,    ॡ  맢  
࡮  ᥬ 㭪 ࡮ ,  室 믮-
 ᫮ ᫥, ᪮ ᫥ ࠧ   -
  , 祬  ᥬ. ᮡ  ⭮  
ᬥ蠭 ᫥,  ᯮ    祭    饩
窮   楫 ᫠.   㭪樨  믮 -
ࠧ ⨯  ॠ樨 䬥⨪  饩  窮  
.

      ᬮਬ ਬ ணࠬ   ᥬ,  
뢠 㭪 ࡮ , ⮡ 믮 ᫥  饩
窮. ᪨   ਬ  㭪  ࡮    ।
᫥⥫쭮  楫  ᥫ 㣮 㭪樨 ࡮ ᥬ,
 㬬 ᫠   ᢮ । 뢠   㭪
࡮   믮 ᫥  饩 窮 (᫥
। 祭).

      ணࠬ CALCAVG.C,  ॠ    ,  룫廊
᫥騬 ࠧ:

extern float Average(int far * ValuePtr, int NumberOfValues);
#define NUMBER_OF_TEST_VALUES 10
int TestValues(NUMBER_OF_TEST_VALUES) = {
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10
};

main()
{
       printf("। 䬥᪮ ࠢ: %f\n",
              Average(TestValues, NUMBER_OF_TEST_VALUES));
}
float IntDivide(int Divedent, int Divisor)
}
      return( (float) Divident / (float) Divisor );
}

  ணࠬ  ᥬ (AVERAGE.ASM)  :

;
; 뢠   㭪    ,
;  頥 । 䬥᪮ ᫥-
; ⥫쭮 楫 ᥫ.  믮 饣
;  뢠 㭪  IntDivide().

TASM2 #2-5/              = 220 =

;
; ⨯ 㭪樨:
;          extern float Average(int far * ValuePtr,
;                 int NumberOfValues);
;
; :
;          int far * ValuePtr:      ; ᨢ 祭 
;                                   ; ᫥ ।
;          int NumberOfValues:      ; ᫮ 祭 
;                                   ; ᫥ ।
               DOSSEG
               .MODEL   SMALL
               EXTRN    _IntDivide:PROC
               .CODE
               PUBLIC   _Average
_Average       PROC
               push  bp
               mov   bp,sp
               les   bx,[bp+4]       ; ES:BX 㪠뢠 
                                     ; ᨢ 祭
               mov   cx,[bp+8]       ; ᫮ 祭, 
                                     ;  㦭
                                     ; ᫨ ।
               mov   ax,0
AverageLoop:
               add   ax,es:[bx]      ; ਡ ⥪饥
                                     ; 祭
               add   ax,2            ; 뫪  ᫥饥
                                     ; 祭
               loop  AverageLoop
               push  WORD PTR [bp+8] ;  ᭮ ᫮
                                     ; 祭, ।
                                     ;  㭪 IntDivide
                                     ;  ࠢ ࠬ
               push  ax              ; । 㬬 
                                     ;  ࠬ
               call  _IntDivide      ; ᫨ ।
                                     ; 祭  饩
                                     ; 窮
               add   sp,4            ;  ࠬ
               pop   bp
               ret                   ; । 祭 
                                     ; ॣ 設
                                     ; ⥪ ᮯ
                                     ; 8087
_Average       ENDP

TASM2 #2-5/              = 221 =

               END

     ᭮ 㭪    몥   । 㪠⥫  ᨢ
楫 ᥫ TestValues   ᨢ   㭪    ᥬ
Average.  㭪  㬬 楫 ᥫ,  ⥬ ।-
  㬬  ᫮ 祭   㭪    IntDivide.  㭪
IntDivide ਢ 㬬  ᫮ 祭  ⨯  饩 -
   । 祭 (     -
  ,   ६   ᥬ  ⮣ ॡ 
᪮쪮 ப).  㭪 IntDivide 頥 ।  祭
(Average)    ॣ 設 ⥪ ᮯ 8087  ।
ࠢ ⭮ ᭮ 㭪樨.

     ணࠬ CALCAVG.C   AVERAGE.ASM    ᪮஢  
᪮  믮塞 ணࠬ CALCAVG.EXE   -
:

        tcc calcavg average.asm

     ⬥⨬,  㭪 Average 㤥 ࠡ   , ⠪
   让    室   室-
 , ⠪     । 㪠⥫  쭥
⨯.  প    (ᢥ塮让, 让 
।) 諮  ⮫쪮    ᮮ⢥  ४⨢
.MODEL.





TASM2 #2-5/              = 222 =

          8. 䥩 ࡮ ᥬ  ࡮ ᪠
-----------------------------------------------------------------

       ࡮  ᥬ  ।ᬮ७  ७     
।⢠,  騥     ᥬ  ணࠬ
࡮ ᪠.     ஡ ᪠      ⮬,
  㦭  ,  ⮡  ᯮ짮  ।⢠,
ਢ ⢮ ਬ஢     㡮  -
ଠ.

       祣  㦭  ᯮ짮  ࡮  ᥬ      ࡮
᪠?  設⢮  ணࠬ,      ,
 ॠ 楫  ࡮ ᪠.   ⫨稥    -
設⢠  㣨 ஢ ᪠, ࡮ ᪠  
  ᨢ Port[], Mem[], MemW[]  MemL[] ।⢥
  ᥬ ᠬ 設,    楤 Intr() 
MsDos()           ⥬  -뢮
(BIOS)  樮 ⥬ DOS.

      祣  ⮣  ॡ ᯮ짮 ᮢ⭮
  ࡮  ᪠  ᥬ?  ⮣   
稭: 믮 ண 讣 ᫠ 権, 
।⢥  ࡮ ᪠ 㯭,  ᯮ짮 २-
 ᮪ ᪮ ࠡ,      ᥬ.  (
࡮  ᪠  ࠡ⠥ 筮 , ⮬   ᠭ
 몥 ᥬ.)       ,    
ᯮ짮  ࡮ ᪠ २⢠ ᥬ.

           ਬ砭: ᫨  ᨨ ᯥ樠쭮  ਢ-
      ,       ࡮ ᪠ ᨨ 4.0 
      .




TASM2 #2-5/              = 223 =

                      奬  ࡮ ᪠
-----------------------------------------------------------------

     । ⥬,   筥    몥 ᥬ 
ࠡ  ࡮ ᪠,  ,   ᯮ
ଠ  .   ࡮ ᪠ ꥤ -
  ஭  ।  让  ,  뢠-
   5.     ᥣ , -
  ࣠    ६  -
 ⠭⠬ १ ॣ DS.    -
 ᢮ ᥣ ,  ᪨ ।塞  
 㢥稢  ࠧ ᥩ 㯭 .

     奬  ࡮ ᪠   . 8.1.

               訥  
----------------------------------------------------
|          䨪 ணࠬ ᥣ           |
|                  (256 )                      |
|--------------------------------------------------|
|                                                  |
|          ᥣ  ணࠬ           | ᨬ-
|                                                  |  ࠧ
|                                                  | ᥣ
|                                                  |  - 64
|--------------------------------------------------|
|           ᫥            |
|--------------------------------------------------|
|                                                  |
.                                                  .
.                                                  .
.                                                  .
|                                                  |
|--------------------------------------------------|
|              ࢮ            |
|--------------------------------------------------|
|                                                  |
|      ⥪ ᯮ饩 ⥬   |
|                                                  |
|--------------------------------------------------|<-- DS
|               ⠭              |
|- - - - - - - - - - - - - - - - - - - - - - - - - |<-- 
|                ⠭               | 䠩 .EXE
|--------------------------------------------------|<-- SS
|                        ^                         |  ⥪
|                        |                         | : 1

TASM2 #2-5/              = 224 =

|  ⥪ (㢥稢  ஭  ᮢ)  |  㬮-
|                                                  | : 16K
|                                                  | ᨬ:
|                                                  |  64
|--------------------------------------------------|
|    ᪨ ।塞       |  ࠭-
|    (㢥稢  ஭  ᮢ)     | 祭 
|                        |                         | ࠧ
|                        v                         |
|--------------------------------------------------|<-- HeapPtr
|                        ^                         | ᨬ
|                        |                         | ࠧ ᯨ-
|      ᮪ ᢮ ⥩ ᪨       |  ᢮
| ।塞  (㢥稢  ஭   | ⥩
|  ᮢ)                                 |
----------------------------------------------------
               訥  

     . 8.1 奬  ணࠬ ࡮ ᪠ ᨨ 5.0.




TASM2 #2-5/              = 225 =


䨪 ணࠬ ᥣ
-----------------------------------------------------------------

     䨪 ணࠬ ᥣ (PSP) ।⠢  ᮡ  -
  ࠧ஬  256 , ᮧ 樮 -
 MS-DOS  㧪 ணࠬ. ஬ ᥣ 祣  ᮤ-
  ଠ   ࠬ  ப,  ᯮ㥬 
맮 ணࠬ,  ꥬ 㯭    樮  ।
DOS (ᯨ᪥ ᯮ㥬 DOS ப ६).

      ᨨ 3.0 ࡮ ᪠  ᥣ   PSP    
,        ᥣ ⠫쭮 .    ⠪.  ࡮
᪠ ᨨ 4.0   ᭮ ணࠬ,  ᯮ㥬  
㫨    ⥪ ᯮ饩 ⥬  ࠧ ᥣ-
. ࡮ ᪠, ⠪ ࠧ, ࠭  ᥣ PSP  
।। 쭮 ६   PrefixSeg, -
 祬      ଠ樨  PSP.


 
-----------------------------------------------------------------

      ணࠬ ࡮ ᪠ ᮤন  ࠩ   
ᥣ  :     ᮤন  ᭮ ணࠬ,
  㣮 - ⥪ ᯮ饩 ⥬  (run-time  library).
஬  ⮣,  ணࠬ     室  ⤥쭮
ᥣ .     ᥣ    ࠧ 
64,    ணࠬ    ⠪ ꥬ,    
ॡ (᫨,  筮, ⠪ ꥬ   襬 
㯥).  ணࠬ,  ࠭ ᯮ짮 ૥, -
 ⥯   ண 믮  ஢ ணࠬ,
ॢ騥 64,    ண 믮 ࠭  
  (  ࡮ ᪠ 5.0  5.5   -
  ᯮ짮  ૥,    易  墠⪮ ,
饩  ࠧࠡ⪥  ணࠬ).  窨 ७ -
 ᥬ ᥣ ,      몥
ᥬ, 뢠 CODE  CSEG.




TASM2 #2-5/              = 226 =


  
-----------------------------------------------------------------

        ࡮ ᪠ ᫥  ᥣ⮬
 ⥪ ᯮ饩 ⥬.  ᮤন  64 樠-
஢  樠஢  - ⨯  ⠭
   ६.    ࡮ ᪠ 3.0, ⨯
⠭  ᠬ     ⠭⠬,    ।-
⠢  ᮡ  ६, 騥 ।। 祭 
㧪 ணࠬ.   ⫨稥  ࡮ ᪠ 3.0, ࡮ -
  ᨨ 4.0  頥 ⨯ ⠭  ᥣ -
.  ⮣  ࠧ頥    ᥣ    ,
      ॥, 祬    ࡮
᪠ 3.0.    뢠 DATA    DSEG
( ⨬       ࡮ ᥬ).


⥪
-----------------------------------------------------------------

      ࡮ ᪠ ᨨ 4.0   ᥣ   -
 室  ⥪. ⨬,  ⠪ ᯮ ⫨-
  ਭ⮣  ࡮ ᪠ 3.0. ⥪  ᪨ -
塞       .  ⥪
뤥 䨪஢ ꥬ .  㬮砭  16,  
  筮  設⢠ ணࠬ.    -
  ࠧ ⥪ 1 ( ⪨ ணࠬ)  -
ᨬ  64  ( ணࠬ, ⥭ᨢ ᯮ ४).
 ⥪  ᪨ ।塞      
   ४⨢  $M.

      設⢥ ணࠬ  ஢ 8086 㪠⥫ ⥪
稭   設 ⥪   祭  ஭ 
ᮢ.  맮 楤  㭪樨  ࡮  ᪠  筮
믮  ஢,  ⮡  㡥,  ⥪  ௠. 
஢  "몫"   ४⨢  {$S-}.




TASM2 #2-5/              = 227 =


᪨ ।塞  
-----------------------------------------------------------------

         ࡮ ᪠ 室 ᪨
।塞      (heap).  㬮砭 ᪨
।塞    ,  ᯮ짮 
ᥣ⮢ ,    ⥪.    ࠭祭  ࠧ
᪨  ।塞    ᯮ짮 -
४⨢ $M (  ⠪ ᯮ짮  ।饭 믮-
  ணࠬ,  ᫨  㯥  ꥬ ᪨
।塞  ).

        ᪨ ।塞   뤥 -
᪨    饭   楤ࠬ  New()   GetMem(), -
    ࠭  ("").    ᯮ  楤
Dispose    FreeMem,  ࡮ ᪠ ᨨ 4.0   ᫥
᢮ , ࠧ騥  ᪨ ।塞  -
 ,   ᯥ樠쭮  ,  -
뢠 ᯨ᪮ ᢮ ⥩ (free list). ᮪ ᢮
⥩, ࠧ ண   ॢ 64, 㢥稢 
஭  ᮢ, 稭  "設" ᪨  -
塞  .


ᯮ짮 ॣ஢  ࡮ ᪠
-----------------------------------------------------------------

     ࡮ ᪠   ᯮ짮 ॣ஢  -
  ࠭祭.   맮 楤  㭪樨  -
 ( ⠭) 祭 ⮫쪮  ॣ஢:  -
  ᥣ ⥪ (SS), ॣ ᥣ  (DS)  㪠-
⥫  (BP).  DS 㪠뢠   ᥣ -
  (  DATA),  SS -  ᥣ ⥪.  BP ᯮ-
   楤  㭪樨  뫪    ⨢-
樨  (activation record),  ।⠢ ᮡ ࠭⢮
 ⥪, ᯮ㥬  ࠬ஢,  ६  -
  ࠡ祩 .  ணࠬ । 室  -
ࠢ 㪠⥫ ⥪ (SP),        ࠬ-
஢.

                           쭨?
-----------------------------------------------------------------

     ᪮ ணࠬ ࡮ ᪠ ᮤন ᪮쪮 ᥣ-
⮢  ,    饭  楤ࠬ  㭪  ᯮ

TASM2 #2-5/              = 228 =

"ᬥ" 맮  (NEAR)  쭥  (FAR)  ⨯.    祬
ࠧ?   맮  ᯮ짮 ⮫쪮  饭
 ணࠬ,  室  ⮬  ᥣ,     ᥣ-
, 㤠    맮.    쭥 맮 
  ணࠬ,  室     -
.     室 ஬: 쭨 맮  
  믮 , 祬 .

      ணࠬ ணࠬ ࡮ ᪠    -
ᠭ (ࠧࠡ⠭   ᯮ짮 ஬) ⠪ -
ࠧ, ⮡  뢠 ⮫쪮       ᯮᮡ.
   ᫥ ? ணࠬ, ᠭ  䥩-
᭮  , ᥣ   쭨 ⨯, ⠪    
  뢠  㣨 㫥.  ணࠬ, ᠭ-
  ᭮ ணࠬ   ⮫쪮  ࠧ  ॠ-
樨    筮  ⨯. ( ணࠬ 
ਭ㤨⥫쭮  쭨 ⨯   ४⨢  -
 {$F+}.)

      ࠧࠡ⪥ ணࠬ  ᥬ,    
࡮  ᪠,      㡥,   ணࠬ 
ࠢ ⨯ 맮.  ࡮ c  ᮮ  訡,  ᫨
  몥 ᥬ  楤 (PROC),   , 
ᮮ⢥饥  ᠭ 譥 楤 ᯮ ⠪ -
ࠧ,     쭨 ⨯.




TASM2 #2-5/              = 229 =

          ⭮ ᯮ짮  c ࡮ ᪠ //

४⨢  $L  譨 ணࠬ
-----------------------------------------------------------------

      祢   ᯮ짮  ࡮  ᥬ  
࡮ ᪠ -  ४⨢  (࡮ ᪠) {$L} 
ᠭ   譥   (external)   ணࠬ.   ४⨢   {$L
MYFILE.OBJ}  ਢ  ⮬,  ࡮ ᪠ 㤥 ᪠ 䠩
ꥪ MYFILE.OBJ (䠩  ⠭⭮ ਣ  
ଠ MS-DOS)     襩 ணࠬ ࡮ ᪠-
.  ᫨  䠩  ४⨢ {$L} ७  㪠뢠,  
ࠧ㬥 ७ .OBJ.

      楤  㭪 ࡮  ᥬ,    
 ᤥ 㯭  ணࠬ ࡮ ᪠,  -
,  䨪 PUBLIC,     ᮮ⢥⢮  
ணࠬ ᠭ external (). ⠪ ᠭ 譥
楤  㭪樨   ࡮  ᪠  祭  ०饬
(forward) ᠭ:

     procedure AsmProc(a : integer; b : real); external;
     function AsmFunc(c : word; d : byte); external;

      ᠭ  ᮮ⢥⢮  ᫥騬  ᠭ  
ணࠬ ࡮ ᥬ:

CODE        SEGMENT BYTE PUBLIC
AsmProc     PROC NEAR
            PUBLIC AsmProc
            .
            .
            .
AsmProc     ENDP
AsmFunc     PROC FAR
            PUBLIC Bar
            .
            .
            .
AsmFunc     ENDP
CODE        ENDS

     ᠭ 譥 楤 ࡮ ᪠    室
  ᠬ  譥  ஢  ணࠬ   ,    
    ⭮襭  㣮  ᠭ  楤
  㭪樨. ⪠  楤  㭪   -

TASM2 #2-5/              = 230 =

 ஢ ਢ  訡 ⠯ 樨.

     ࡮ ᪠   ஢, ⮡ 㡥,    
楤,  ᠭ    ਡ⠬  NEAR  FAR, ᮮ⢥
  쭨 ணࠬ  ணࠬ ࡮ ᪠. -
᪨,        ஢,      ⪨ AsmProc 
AsmFunc  楤. ⮬      ᯥ,  ⮡
ᠭ  ᥬ  ᪠ 뫨 ࠢ묨.




TASM2 #2-5/              = 231 =

                           ४⨢ PUBLIC
-----------------------------------------------------------------

      ࡮ ᪠ 㯭 ⮫쪮  ⪨ ᥬ, 
     㫥    몥  ᥬ,    饤㯭
(PUBLIC). ⪨ ।⠢ ᮡ ⢥ ꥪ,  
  ।    몠  ᥬ  ࡮ ᪠. 
⮣,  饤㯭 ⪥   ᮮ⢥⢮ ᠭ
楤  㭪樨  ணࠬ ࡮ ᪠,  
뤠 ᮮ饭  訡. 祬  ॡ,  ⮡  饤-
㯭 ⪠ 뫠  ᠭ PROC.  ᠥ ࡮ ᪠-
,    ᠭ:

AsmLabel     PROC  FAR
             PUBLIC Bar


AsmLabel:
             PUBLIC Bar

.




TASM2 #2-5/              = 232 =

                            ४⨢ EXTRN
-----------------------------------------------------------------

      ࡮ ᥬ      楤,
㭪樨, ६  ⨯ ⠭ ࡮ ᪠, -
 뢠  ᠬ 譥 ஢ ணࠬ  , 
   . (⨬,   砥  ᥡ -
, ᠭ ᫥ ४⨢  {$L}  譨 -
ᠭ,  易      㫥.) ⪨   ⠭
࡮ ᪠  ᥬ 㯭.

     ।,  襬  ணࠬ  ࡮  ᪠  뢠
᫥騥  ६:

  var
      a : byte;
      b : word;
      c : shortint;
      d : integer;
      e : real;
      f : single;
      g : double;
      h : extended;
      i : comp;
      j : pointer;

      ணࠬ  몥 ᥬ     
ᥬ ⨬ ६   ᠭ EXTRN:

  EXTRN A : BYTE          ; 1 
  EXTRN B : WORD          ; 2 
  EXTRN C : BYTE          ;  ᥬ 祭   
                          ;    
  EXTRN D : WORD          ;   ᠬ
  EXTRN E : FWORD         ; 6-⮢ ⢨⥫쭮 祭
                          ; (ࠡ뢠 ணࠬ)
  EXTRN F : DWORD         ; 4-⮢ 祭  饩
                          ; 窮  ଠ IEEE
  EXTRN G : QWORD         ; 8-⮢ 祭  饩
                          ; 窮 ( 筮) 
                          ; ଠ IEEE
  EXTRN H : TBYTE         ; 10-⮢ 祭  饩
                          ; 窮  ६ ଠ
  EXTRN I : QWORD         ; 8-⮢ 楫   
                          ; ଠ IEEE (ᮯ 8087)
  EXTRN J : DWORD         ; 㪠⥫ ࡮ ᪠

TASM2 #2-5/              = 233 =


      ࠧ        楤ࠬ  
㭪  ࡮ ᪠,  . ।,  
  ࡮ ᪠,  룫廊 ᫥騬 ࠧ:

unit Sample;
{ ਬ ,  ஬ । ᪮ 楤
  ᪠, 뢠  楤  몥 ᥬ }

interface

procedure TestSample;

procedure PublicProc;  {  饭  
                          쭥 ⨯ }
inplementation

var
  A : word;

procedure AsmProc; external;
{$L ASMPROC.OBJ}

procedure PublicProc;
   begin { PublicProc }
     Writeln(' PublicProc');
   end   { PublicProc }

procedure NearProc;   {    ⨯ }
   begin { NearProc }
     Writeln('B NearProc');
   end;  { NearProc }

{$F+}
procedure FarProc     {   쭨 ⨯ ᮣ᭮
                        ४⨢  }
   begin { FarProc }
     Writeln('B FarProc');
   end   { FarProc }

{$F-}

procedure TestSample;
  begin { TestSample }
    Writeln('B TestSample');
    A := 10;

TASM2 #2-5/              = 234 =

    Writeln('祭 A । ASMPROC = ',A);
    AsmProc;
    Writeln('祭 A ᫥ ASMPROC = ',A);
  end   { TestSample };

end.

     楤 AsmProc 뢠  楤  PublicProc,  NearProc
 FarProc, ᯮ ४⨢ EXTRN ᫥騬 ࠧ:

DATA   SEGMENT WORD PUBLIC
       ASSUME  DS:DATA
       EXTRN   A:WORD                ; ६  
DATA   ENDS

CODE   SEGMENT BYTE PUBLIC
       ASSUME  CS:CODE
       EXTRN   PublicProc : FAR      ;  楤
                                     ; (ᯮ 㫥)
       EXTRN   NearProc   : NEAR     ;  楤
                                     ; (쭠  )
       EXTRN   FarProc    : FAR      ;  楤
                                     ; (쭠,  ,
                                     ;  )
AsmProc        PROC NEAR
               PUBLIC AsmProc
               CALL   FAR PTR PublicProc
               CALL   NearProc
               CALL   FAR PTR FarProc
               mov    cx,ds:A        ;  ६ 
                                     ; 
               sub    cx,2           ;  
               mov    ds:A,cx        ;   ⭮
               RET
AsmProc        ENDP
CODE           ENDS
               END

     ᭮ ணࠬ,  ஢  ணࠬ    -
ᥬ   ᪠, 룫廊 ᫥騬 ࠧ:

  program TSample;
  uses Sample;
  begin
      TestSample;
  end.

TASM2 #2-5/              = 235 =


     ⮡ ନ஢ ਬ ணࠬ     ,
ࠡ饣   ०  ப,  ᥬ, ᯮ
᫥騥  (  䠩):

     TASM ASMPROC
     TPC /B SAMPLE
     TSAMPLE

        ணࠬ     ணࠬ
࡮  ᪠  ᠬ 譥 ஢ 楤,    
㯠  ꥪ⠬, 騬 묨  ⭮襭  楤-
ࠬ   㭪 ᯮ짮 ᠭ EXTRN. ,  ண-
ࠬ   ࡮  ᥬ  맮  ணࠬ ࡮ ᪠
   ꥪ,  祭 ࠬ஢-६.




TASM2 #2-5/              = 236 =

           ࠭祭  ᯮ짮 ꥪ⮢ ⨯ EXTRN
-----------------------------------------------------------------

     ⠪ ⠢ 䨪 ࡮ ᪠,  -
஬   㯠  ꥪ   㫥 ᯮ  -
   窠,  ᮢ⨬  ᨭ⠪᪨ ࠢ ࡮ -
ᥬ  㤥, ⠪ ࠧ, ⢥࣭. ᠭ:

        EXTRN SYSTEM.Assing : FAR

ਢ  ⮬,  ࡮ ᥬ 뤠 ᮮ饭  訡.

      ⠪  㣨 ࠭祭  ᯮ짮  -
  ᪠  ꥪ⮢  EXTRN.  ࢮ   ⮨  ⮬,  
뫪  楤  㭪    믮  䬥-
᪨ 樨  ᠬ.  ࠧ, ᫨  :

        EXTRN PublicProc : FAR

  ᬮ   :

        call PublicProc + 42

     ஥ ࠭祭 ⭮  ⮬,   騪  ࡮
᪠    㤥 ᯮ 樨,  ࠧ ᫮
 , ⮬    ਬ ⠪ 樨   ꥪ-
⠬ EXTRN. ਬ, ᫨  :

        EXTRN i : WORD

  ᬮ ᯮ짮  㫥  ࡮  ᥬ  ࠦ
LOW i  HIGH i.

                 ᯮ짮 ४஢ ᥣ⮢
-----------------------------------------------------------------

     ࡮ ᪠  䠩 .EXE,      -
         㯭 . -
  ணࠬ ࠭ ⭮, 㤠 㤥 㦥 
ᥣ  ணࠬ, 騪 㪠뢠 稪 DOS.EXE, 
㦭  㧪 ᪮४஢  ணࠬ  뫪  ᥣ-
. ᫥ 믮  ४஢  뫪  ᥣ
(⠪,  CODE  DATA)  ᮤঠ ४ 祭.

      ணࠬ  ࡮ ᥬ    ᯮ짮  

TASM2 #2-5/              = 237 =

।⢮    祭  ᮢ  ꥪ⮢   ६ 믮.
।, ਬ,   襩 ணࠬ  ॡ  
祭  ॣ DS,     ࠭  横 室
ᮤন ⥪  ६   祭    ६  -
.   ⮣   ᯮ짮  ࡮ ᥬ-
 SEG:

                 .
                 .
                 .
                 mov   ax,SEG DATA  ;  ⢨⥫
                                    ;  쭮 祭
                                    ; DS ࡮ ᪠
                 mov   ds,ax        ;    DS 
                                    ; ᯮ짮 ࡮
                                    ; ᪠
                 .
                 .
                 .

       ணࠬ 㤥 㦠, DOS  ४-
⭮ 祭 SEG DATA אַ   ஬筮 ࠭ -
樨 MOV.       १㧪  ᥣ⭮
ॣ.

      ⮤ 㦭 ⠪ ᯮ짮, ⮡ ணࠬ  -
㦨  뢠  ࠭﫨 ଠ  쭮 ᥣ
 ࡮ ᪠.  DS  易⥫쭮  ६ 뢠-
 ᮤন 祭 DS ࡮ ᪠,    祭 㯠
 ६  ⨯ ⠭⠬ ࡮  ᪠    -
짮 㪠  ᫥⥫쭮.

                    ࠭ ᯮ㥬 
-----------------------------------------------------------------

      ࡮ ᪠  ।⢠, ᯥ稢騥  ࠭
ᯮ㥬 .  砥,   祭  १
䠩 .EXE  㤥   楤  㭪権,  -
  믮.  ᪮   ଠ樨  ᮤ-
 㫥 ࡮ ᥬ, ࡮ ᪠  믮 
 ⮫쪮 ࠭祭 ⨬.

     ࡮ ᪠ 㤥 ࠭   .OBJ  ⮬  ⮫쪮
  ⮬ 砥, ᫨   㯭 楤  㭪樨 ⮣
  饭. ᫨     楤  㭪

TASM2 #2-5/              = 238 =

 뫪,     ᯮ.

     ⮡  襩 䥪⨢ ᯮ짮  ।⢠
࡮ ᪠  ࠭ ᯮ㥬 ,  뫮 
ࠧ ணࠬ  ᥬ  訥 㫨,   -
ঠ    ⮫쪮 ᪮쪮 楤  㭪権.  
 ࡮ ᪠, ᫨    ᤥ, 㬥 ꥬ  -
襩 筮 ணࠬ.




TASM2 #2-5/              = 239 =


襭 ࡮ ᪠  । ࠬ஢
-----------------------------------------------------------------

     ࡮ ᪠ ᯮ  । ࠬ஢  ⥪  業-
ࠫ쭮   (,  砥 । 祭 ࠬ஢
 ୮, , ७ 筮    ᫮  ⨯,
⥪  䬥᪮ ᮯ). ࠬ ᥣ 
   ⥪  ⮬ 浪,   ஬    㪠뢠  
ᠭ  ணࠬ,  ᫥ ࠢ.   ࠧ  -
,   ࠬ ।⠢.


ࠬ-祭
-----------------------------------------------------------------

     ࠬ-祭 -  ࠬ, 祭 ண  
  ணࠬ,     ।.  ⫨稥 
 ஢, ࡮ ᪠  믮 ᫥ ஢-
   ⥪  ࠬ-祭:    ᭨, -
㥬 ⮤   ⨯.

                             ⨯
-----------------------------------------------------------------

     ࠬ-祭    ᪠  ⨯  (boolean,  char,
shortint,  byte, integer, word, longint, १ ⨯  -
 ⨯) ।  祭 १ ⥪  .  ᫨
ࠧ ꥪ ⠢ 1 ,    ⥪,  
16-⮢ ᫮,   騩 (訩)   ᫮  
ᮤন    ଠ樨.  (  뢠  , 
祭 ⮣  ࠢ 0,   ᨨ  3.0  ࡮  ᪠.)
᫨  ࠧ  ꥪ ࠢ  ⠬,     
⥪ " ". ᫨ ꥪ  ࠧ 4    (  -
),    ⥪,   16-⮢ ᫮.  ᮮ⢥-
  ⠭⮬ ஢ ਨ 8088  饥 (-
襥) ᫮   ⥪     ⥪ 訥 -
.

     ⨬,  ᫮ ⨯ (comp),   ⫨稥  楫  ⨯,
  ⠥  ᪠  ⨯ ( 窨 ७ । ࠬ-
஢).   ࠧ,  ࡮ ᪠ ᨨ 4.0 ࠬ--
  ⮣ ⨯ ।  ⥪  8087,     ⥪
業ࠫ쭮 .  ࡮ ᪠ ᨨ 5.0 祭 ⨯
comp ।  ⥪ 業ࠫ쭮 .


TASM2 #2-5/              = 240 =


⢥ 祭
-----------------------------------------------------------------

     ࠬ-祭 ⢥ ⨯ (real) ।, 
6   ⥪ ( ࡮ ᪠  ⨯ ।⠢ ᮡ 6--
⮢ ணࠬ-㫨㥬 ⨯  饩 窮).   -
⢥ ⨯,  ॢ騩 4 ,   । -
१ ⥪.




TASM2 #2-5/              = 241 =


 ᮯ 8087
-----------------------------------------------------------------

      ࡮ ᪠ ᨨ 4.0 ࠬ-祭  ⨯  ᮯ-
  8087  (  筮,  , ७ 筮 
᫮ ⨯) । १ ⥪ ᮯ,   १  ⥪
業ࠫ쭮  .      ⥪ ᮯ 8087 
㡨 ⮫쪮 6 ஢, ணࠬ ࡮ ᪠   -
।    6  ࠬ஢   ⨯ ᮯ 8087. ।
⮬  ணࠬ      ⥪  䬥-
᪮ ᮯ  ࠬ ⠪ ⨯.

     ࡮ ᪠ 5.0 ᯮ  । ࠬ஢ (-
   8087)   ᮣ襭,   ࡮ :  -
  ⥪ 業ࠫ쭮    㣨  ࠬ-
ࠬ.    ࠬ  ୮,  , ७
筮  ᫮ ⨯ (omp).


⥫
-----------------------------------------------------------------

     祭 ࠬ஢   ⨯ 㪠⥫   -
।⢥  ⥪,  㪠⥫ 쭥 ⨯: ᭠砫 ᫮,
ᮤঠ饥 ᥣ, ⥬ 㣮 ᫮, ᮤঠ饥 ᬥ饭. -
  訩 ,   ᮮ⢥⢨  ᮣ襭ﬨ 
Intel.   祭 ࠬ-㪠⥫  ணࠬ ࡮  -
ᥬ  ᯮ짮 樨 LDS  LES.


ப
-----------------------------------------------------------------

     ப ࠬ,  ᨬ  ࠧ,  筮 
     ⥪.   ⮣ ࡮ ᪠   ⥪
㪠⥫ (쭥 ⨯)  ப.  뢠 ணࠬ  
  ப,    뫠 㪠⥫. ᫨ 
室,  ணࠬ  ᮧ  ࠡ   -
.

     ⢥ ᪫祭  ⮣ ࠢ -  砩, 
ணࠬ  ४뢠 (૥) 㫥 A  ।  
ࠬ-祭  ப ⠭ ணࠬ  ४뢠-
 㫥 B.   ⮬ ⥪ ४뢠  砥 -
 , ᪮஢  ४⨢ {$O+} (᪠ -
૥).  ⮬ 砥 । ⥬,   㤥 ᤥ 맮    

TASM2 #2-5/              = 242 =

⥪  㤥 । ணࠬ  㫥 B,   ⥪  ப
⠭ १ࢨ ६ .   ஡ -
 ᮤন   6 ("૥")   "㪮⢥ 짮-
⥫  ࡮ ᪠" ᨨ 5.0  5.5.


  ᨢ
-----------------------------------------------------------------

       ᨢ,  騥 ஢ 1, 2  4 , 㡫-
 ।⢥  ⥪  ।,   ࠬ--
. ᫨ ᨢ    - 㣮 ࠧ (-
 3 ),    ⥪  㪠⥫    ᨢ  
.    ⮬  砥,  ᫨  ணࠬ   ⠪
,    ᮧ   .


⢠
-----------------------------------------------------------------

     ⢠,   ப,  筮    -
।⢥  ⥪.   ⮣  ⥪    㪠⥫  
⢮.     襣  ⢠ ᥣ ᮮ⢥-
   ⨯ ( ஦饣 ⨯)  浪
祭 0.

     ⢥ ᪫祭  ⮣ ࠢ -  砩, 
ணࠬ  ४뢠 (૥) 㫥 A  ।  
ࠬ-祭 ⠭-⢮ ணࠬ    ૥
㫥 B.  ⮬ ⥪ ४뢠    砥  
, ᪮஢  ४⨢ {$O+}(᪠ ૥).
 ⮬ 砥 । ⥬,  㤥 ᤥ 맮   ⥪ -
 । ணࠬ  㫥 B,  ⥪  ⢠-⠭
१ࢨ  ६ .    ஡ ଠ -
ন   6 ("૥")   "㪮⢥  짮⥫  
࡮ ᪠ 5.0".


ࠬ-६
-----------------------------------------------------------------

      ࠬ-६  (var) । 筮 ⠪:  
㪠⥫ 쭥 ⨯   ⢨⥫   .

                           ᯥ祭 ⥪

TASM2 #2-5/              = 243 =

-----------------------------------------------------------------

     ࡮ ᪠  ,    ।  ⮬ ࠢ 
ணࠬ  ࠬ  ⥪ 業ࠫ쭮   
㤠.

       ᯮᮡ ன ⥪.   ᯮ짮 -
 RET N ( N -  ᫮  ।,    -
ᥭ  ⥪, ࠬ஢),  ࠭    -
  (   )   ࠬ  ⥪ ।.
 孨 祭  ᯮ짮   ⨬樨 
᪮    ࠡ  ஬ 8086  8088 (ᠬ "-
"  ਨ),    ⨯ "  ᬥ-
"  稢  8 横  饭.   
⠪  ,  ⠪   POP    ⮫쪮
 .

           ਬ砭: ᫨  ᯮ ४⨢ .MODEL, PROC
       ARG,  ᥬ ⮬᪨    -
      樨 RET ᫮   ࠬ஢.




TASM2 #2-5/              = 244 =

                            ࠬࠬ
-----------------------------------------------------------------

      砥 ࠢ  ணࠬ  ࡮ ᥬ-
, 設 ⥪ 㤥 ᮤঠ   (  -
 ᫮,  ᨬ  ⮣,   ணࠬ 
 쭥),      室  ।  ࠬ.
(ਬ砭:  ᫥ ᮢ ࠬ஢ 㦭 ਭ 
 ॣ,  ⠪  BP,  ᮤন  ⠪ 
 ᥭ  ⥪.)

       ᭮ ⮤ 㯠  ࠬࠬ, ।-
 ࡮ ᪠ 襩 ணࠬ  ࡮  ᥬ. 
:

     - ᯮ짮  樨  ⥪ ॣ BP;
     -  祭 ࠬ஢ ᯮ짮 㣮    
        ॣ;
     -   ⥪  ,  ⥬ ࠬ.

       ன ⮤  ᫮,   ᪠    
᫥   ࠧ. ⨩ ⮤ ।ᬠਢ 祭
 ⥪  ࠭  ,  ⥬  祭  -
஢       ॣ.  ᥣ  ⮤ ࠡ⠥,
  ணࠬ  ॡ ࠭⢠   -
६.




TASM2 #2-5/              = 245 =

            ᯮ짮  樨  ⥪ ॣ BP
-----------------------------------------------------------------

         ᯮ㥬 ⮤ 㯠    -
ࠬ, ।  ࡮ ᪠  ࡮ ᥬ, -
  ⮬, ⮡ ᯮ짮  樨  ⥪ ॣ  BP.
ਬ:

CODE       SEGMENT
           ASSUME  CS:CODE
MyProc     PROC    FAR         ; procedure MyProc(i,j : integer);
           PUBLIC  MyProc
j          EQU WORD PTR [bp+6] ; j 室  ࠭ BP
                               ;  ᮬ 
i          EQU WORD PTR [bp+8] ; i ᯮ  j
           push  bp            ; 㦭 ࠭ BP 뢠饩
                               ; ணࠬ
           mov   bp,sp         ; BP ⥯ 㪠뢠  設
                               ; ⥪
           mov   ax,i          ; 㥬  i १ BP
           .
           .
           .

      ᫥ ᬥ襭  ⥪ ࠬ஢,    -
頥  ⠪  ࠧ, 㦭 ,  2  ᯮ
 ࠭ ॣ BP.

        ᯮ짮   ਬ  ࠢ-
.      ᤥ ணࠬ  ⭮.  
 ⮫쪮  ⮪: ᪮  믮 ⠪ த
ࠢ  ᯮ짮 ⮫쪮 ४⨢ EQU (  =), 
 室 䠩 ࡮ ᥬ   ᬮ  ८।-
 䨪 i  j.   ᯮᮡ   砥-
  ⮬, ⮡ ᯮ짮  ⥫  ࠬ஢,
⮡     﫨,   ᥬ஢  -
ணࠬ ᥬ ⤥쭮.




TASM2 #2-5/              = 246 =

                             ४⨢ ARG
-----------------------------------------------------------------

         ࠬࠬ १ ॣ  BP,  ࡮
ᥬ ।ᬠਢ ୠ⨢ ᫥ ᬥ饭  -
  믮 ⥪⮢ ᢠ.   ४⨢  ARG.  
ᯮ짮    楤 ४⨢ ARG ⮬᪨ ।-
 ᬥ饭 ࠬ஢ ⭮⥫쭮 ॣ BP.   
⠪ ࠧ  ࠬ஢  ᯮ    樨 RET.
᪮ 䨪, ᮧ  ४⨢ ARG, ।-
 ⮫쪮  ᮮ⢥饩 楤,      楤  
㭪樨     ॡ ᯮ짮 㭨  ࠬ-
஢.

     ,  㤥  룫拉  ਬ  ।饣  ࠧ,
᫨ ९ , ᯮ ४⨢ ARG:

CODE       SEGMENT
           ASSUME  CS:CODE
MyProc     PROC    FAR         ; procedure MyProc(i,j : integer);
                               ; external;
           PUBLIC  MyProc
           ARG j : WORD, i : WORD = RetBytes
           push  bp            ; 㦭 ࠭ BP 뢠饩
                               ; ணࠬ
           mov   bp,sp         ; BP ⥯ 㪠뢠  設
                               ; ⥪
           mov   ax,i          ; 㥬  i १ BP
           .
           .
           .

     ४⨢ ARG ࡮ ᥬ ᮧ  䨪-
  ࠬ஢ i  j.  ६ 믮 楤 ப:

        ARG j : WORD, i : WORD = RetBytes

⮬᪨ ࠢ 䨪 i    [WORD  PTR  BP+6],
䨪  j   [WORD PTR BP+8],  䨪 RetBytes - 
 4 (ࠧ    ࠬ஢).  祭 뢠-
    ᥭ  ⥪ 祭 BP,  ࠧ  :
᫨  楤 MyProc   ⨯,  i 뫮   ࠢ-
    祭  [BP+4], j -  [BP+6],  RetBytes ⠪ 뫮 
ࠢ 4 (  砥 楤 MyProc   믮-
   樨 RET RetBytes).


TASM2 #2-5/              = 247 =

      ᯮ짮 ४⨢ ARG 㦭 ,  ࠬ
    ⭮ 浪. ᫥ ࠬ -
楤  㭪樨 ࡮ ᪠ 㦭 ࠧ  ४⨢  ARG
  .

     ⭮⥫쭮 ᯮ짮 ४⨢ ARG    ࡮  ᪠
 ᤥ   砭.   ⫨稥    㣨  몮,
࡮ ᪠ ᥣ   ⥪ ࠬ-祭  ࠧ஬ 
,   16-⮢ ᫮.  ⮬ ᮮ ࡮ ᥬ 
⥫쭮   . ।, ਬ,   -
ᠫ 㭪, ᠭ ன  ᪠ 룫廊 ᫥騬 -
ࠧ:

        function MyProc(i, j : char) : string; external;

     ४⨢ ARG  ⮩ 㭪樨  뫠  룫拉 ⠪:

        ARG j:BYTE: 2, i:BYTE: 2 = RetBytes  RETURN  result:DWORD

      : 2 ᫥  㬥 室  㪠뢠  
⮣,  ⮡  ᮮ ᥬ,   䨪 -
  ⥪,  ᨢ  2  (,   砥, 訩
   ᮤন  ଠ).

      㭪樨, 饩 ப 祭 (  㭪-
),  ࠬ  RETURNS  ४⨢ ARG   ।
६, ࠢ  ⮬   ⥪, ஥  㪠뢠
 ६ १ 㭪樨. ६  RETURNS  ࠧ (
)  ࠬ஢. .  3 "ࠢ筮  㪮⢠",
  ४⨢ ARG ᪠뢠  ஡.




TASM2 #2-5/              = 248 =

                   ࡮ ᪠  ४⨢ .MODEL
-----------------------------------------------------------------

     ४⨢ .MODEL  ࠬ஬ TPASCAL  饭 ᥣ-
,     몮 প.   㦥 -
,  㦭 ᤥ  ணࠬ ᥬ, ⮡    뫮
ᯮ짮 楤  㭪樨 ᪠. ८ࠧ㥬 ਬ, -
   ४⨢ .MODEL  PROC:

               .MODEL   TPASCAL
               .CODE
MyProc         PROC     FAR i:BYTE,j:BYTE result:DWORD
               PUBLIC   MyProc
               mov      ax,i
               .
               .
               .
               ret

     ⨬,  ⥯  㦭  ࠬ    ⭮
浪.   ॡ ⠪  㣨 ஢. ᯮ짮-
  ४⨢ .MODEL 祢 ᫮ TPASCAL  ᯮ짮-
  ᮣ襭  ᪠,  ।   ᥣ⮢, 믮
樨 PUSH BP  MOV BP,SP   ⠪     
権 POP BP  RET N ( N - ᫮  ࠬ஢).

        ᯮ짮 㣮   ᭮ ॣ
-----------------------------------------------------------------

     ன ᯮᮡ 㯠  ࠬࠬ ⮨    ᯮ짮
 祭  ࠬ஢ 㣮   ᭮ -
 (BX, SI  DI). 㦭  ,      㬮砭
ᥣ  ॣ஬    ॣ  DS,   SS. -
⮬   ᯮ짮  ਤ ਬ 䨪  ८-
। ᥣ.

     ਢ ਬ ᯮ짮  祭  ࠬ஢  -
 BX:

CODE          SEGMENT
              ASSUME  CS:CODE
MyProc        PROC FAR         ; procedure MyProc(i,j : integer);
              PUBLIC MyProc
j          EQU WORD PTR SS:[BX+4] ; j 室  ࠭
                               ; BP  ᮬ 

TASM2 #2-5/              = 249 =

i          EQU WORD PTR SS:[bp+8] ; i ᯮ  j
           mov   bx,sp         ; BX ⥯ 㪠뢠  設
                               ; ⥪
           mov   ax,i          ; 㥬  i १ BX
           .
           .
           .

       ணࠬ,   讣 ᫠ 뫮   ࠬ-
, ⠪ ⮤   ६  . 祬? -
,   ⫨稥  BP,  ॣ BX  ॡ ⠭
  ணࠬ.

                   㭪樨  ࡮ ᪠
-----------------------------------------------------------------

      ᨬ  ⨯ १ 㭪樨 ࡮ ᪠ -
 ᢮ १ ࠧ묨 ᯮᮡ.

                㭪樨 ᪠୮ ⨯

      㭪樨 ᪠ ⨯    ॣ
業ࠫ쭮    ().  ⮢ 祭  
ॣ AL, 祭  ࠧ஬    2    -    ॣ  AX,
4-⮢ 祭 -   ॣ஢ DX:AX (襥 ᫮ -
  ॣ DX).

               㭪樨 ⢥ ⨯

      ᯮ㥬  ࡮ ᪠  6-⮢  ண-
ࠬ  㫨㥬  ⢥  ⨯    -
 .  饥 (襥) ᫮ 頥   DX,
। -  BX,   饥 -  AX.

             㭪樨 ⨯ ᮯ 8087

      ⨯, ᯮ ᮯ஬ 8087, -
  ॣ 設 ⥪ ST(0) (  ST).

                㭪樨 ப ⨯

      ப ⨯   ६ ࠡ祩
, 뤥塞 ࡮ ᪠ । 맮. ⥫ -
 ⨯      ⥪ । ᥭ ࢮ-
  ࠬ.  ⨬,      㪠⥫   

TASM2 #2-5/              = 250 =

ᯨ᪠ ࠬ஢.

           ਬ砭:  㤠  ⥪ 祭   १-
        㪠⥫,  ⠪   ࡮ ᪠ ,  ᫥
      맮  㤥 㯥.

                 㭪樨 ⨯ 㪠⥫

      㪠⥫       ॣ஢  DX:AX
(ᥣ:ᬥ饭).


뤥 ࠭⢠   
-----------------------------------------------------------------

      ணࠬ, ᠭ  ࡮ ᥬ,   뤥-
  ࠭⢮  ᢮ ᮡ⢥ ६,  -
 (᪨),   ࠭  ஬⪥  맮-
,  ⠪   ६ ( ᫥ 맮  ).
   㦤  ᫥ ࠧ.

              뤥 饤㯭 ᪮ 
-----------------------------------------------------------------

     ࡮ ᪠   ணࠬ ࡮ ᥬ १-
஢ ࠭⢮  ᪨ ६  ᥣ -
  (DATA  DSEG). ⮡ 뤥   ࠭⢮,
  ᯮ짮 ⠪ ४⨢,  DB, DW  .. -
ਬ:

   DATA        SEGMENT PUBLIc
   MyInt       DW      ?        ; १ࢨ஢ ᫮
   MyByte      DB      ?        ; १ࢨ஢ 
     .
     .
     .
   DATA        ENDS

     ६, 뤥塞 ࡮ ᥬ஬  ᥣ -
 ,    ࠭祭. -,  -
묨  "묨",  㯭 ணࠬ ࡮  -
 (   । 㪠⥫  ). -, 
   ।⥫쭮 樠஢,    ⨯
⠭. :


TASM2 #2-5/              = 251 =

   MyInt       DW      42        ;   樠
                                 ; MyInt 祭 42

 맮 訡     ணࠬ ࡮ ᪠-
,  MyInt  믮 ணࠬ  㤥  祭
42.

      ࠭祭  , ᠢ ६   ⨯-
  ⠭  ࡮  ᪠    ४⨢ EXTRN, 
ᤥ  㯭묨 ࡮ ᥬ.




TASM2 #2-5/              = 252 =

                      뤥 ६ 
-----------------------------------------------------------------

       ணࠬ  ࡮  ᪠    뤥  ⠪
६  ( ६)  ⥪  ६ 믮-
  맮. । ⮬ ࠢ    
 ᢮,  祭 ॣ BP ⠭.  ᫥-
饬 ਬ 楤 MyProc १ࢨ  ࠭⢮    
楫 ६ a  b:

CODE          SEGMENT
              ASSUME  CS:CODE   ; procedure MyProc(i : integer);
MyProc        PROC    FAR
              PUBLIC  MyProc
              LOCAL a : WORD, b : WORD = LocalSpace ; a  [bp-2]
                                ; b -  [bp-4]
i             equ   word ptr [bp+6] ; ࠬ i 室 
                                ; ࠭ BP  ᮬ
                                ; 
              push  bp          ; 㦭 ࠭ BP 뢠饩
                                ; ணࠬ
              mov   bp,sp       ; ⥯ BP 㪠뢠 
                                ; 設 ⥪
              sub   sp,LocalSpace ; १ࢨ஢ ࠭-
                                ;    ᫮
              mov   ax,42       ; 㧨  AX 砫쭮
                                ; 祭 A
              mov   a,ax        ;   A
              xor   ax,ax       ;  ॣ AX
              mov   b,ax        ; 樠஢ B 㫥
              mov   b,ax        ; 믮 㦭 ⢨
              .
              .
              .
              mov   sp,bp       ; ⠭ 室
                                ; 祭 SP
              mov   bp          ; ⠭ 室
                                ; 祭 ॣ BP
              ret   2
MyProc        ENDP
CODE          ENDS
              END

     ⨬,  ४⨢ ࡮ ᥬ  LOCAL  ᯮ
 ᮧ 䨪஢  뤥 ࠭⢠  -
 ६. :

TASM2 #2-5/              = 253 =


        LOCAL a : WORD, b : WORD = LocalSpace

 ६ 믮 楤 ᢠ 䨪 a -
  [BP-2], 䨪 b - 祭 [BP-4],  䨪
LocalSpace - ᫮ 4 (ࠧ   ६).  -
   ᮮ⢥饣   ᮧ 䨪-
஢, 뫠  ࠬ,   ᯮ짮  ᢠ-
 i 祭 [BP+6].

      ࠧ㬭  ᯮᮡ  樠樨    ६
砥    ⮬, ⮡  㬥襭 SP   ⥪ 
祭.  ࠧ,       SUB  SP,LocalSpace
ﬨ:

          mov   ax,42           ;  砫쭮 祭
                                ;  a
          push  ax              ;    a
          xor   ax,ax           ; 㫨 AX
          push  ax              ;   0  b

     ᫨  ᯮ  ᯮᮡ, 㦭 ⥫쭮  ᫥-
  ⥪!    ᫥  뫠  䨪 a  b ।
⥬,   ᥭ  ⥪.

     㣮  ⨬樨 ।ᬠਢ  ᯮ짮  -
樨 PUSH CONST  樠樨  ६ ( -
 ᯮ짮  稨 ஬ 80186,  80286    80386),
  ࠭  BP   ॣ  ᥭ   ⥪ (᫨
 ᯮ짮 ॣ).


ਬ ணࠬ  ᥬ  ࡮ ᪠
-----------------------------------------------------------------

       ࠧ    ਬ  ணࠬ  
몥  ᥬ,      뢠  ணࠬ ࡮
᪠.

   ணࠬ ⭠筮 ८ࠧ 饣 祭
-----------------------------------------------------------------

     ঠ騥  ࠬ num   ८ࠧ    ப
⭠      (byteCount * 2). ᪮ 
 ஦  ᨬ, ᨬ쭮 祭 byteCount ࠢ

TASM2 #2-5/              = 254 =

127  ( ஢).  ८ࠧ  㯯 ( 4 -
)  ⭠    ᪮ ᯮ㥬 ᫥-
⥫쭮 add-daa-adc-daa.

     楤 HexStr ᠭ ⠪,  뢠     
 맮 쭥 ⨯.  砥,   ᫥ -
  䥩᭮   ࡮ ᪠     -
४⨢  {$F+}.

CODE           SEGMENT
               ASSUME  cs:CODE,ds:NOTHING

; ࠬ (+2  ⮬ push bp)

byteCount      equ byte ptr  ss:[bp+6]
num            equ dword ptr ss:[bp+8]

;   १ 㭪樨 (+2  ⮬ push bp)

resultPtr      equ dword ptr ss:[bp+12]

HexStr         PROC FAR
               PUBLIC HexStr

               push  bp
               mov   bp,sp            ;  㪠⥫
                                      ; ⥪
               les   di,resultPtr     ;  
                                      ; १ 㭪樨
               mov   dx,ds            ; ࠭ DS ࡮
                                      ; ᪠  DX
               lds   si,sum           ;   ᫠
               mov   al,byteCount     ; ᪮쪮 ?
               xor   ah,ah            ; ᫮
               mov   cx,ax            ; ᫥ ᫮
                                      ;   CX
               add   si,ax            ;   襣
                                      ;  ᫠
               dec   si
               shl   ax,1             ; ᪮쪮 ?
                                      ; (2/)
               cld                    ; ࠭ ᫮ 
                                      ; (ࠡ  אַ
                                      ; ࠢ)
               stosb                  ;  ਥ - 
                                      ;  ப

TASM2 #2-5/              = 255 =

NextLoop:
               std                    ; ᪠஢ ᫮ 
                                      ; 襣  
                                      ; 襬
               lodsb                  ;  ᫥騩
                                      ; 
               mov   ah,al            ; ࠭ 
               shr   al,1             ; 뤥 
                                      ; 㯯 
               shr   al,1
               shr   al,1
               shr   al,1
               add   al,90h           ; ᯥ樠쭠 ᫥-
                                      ; ⥫쭮 ⭠-
                                      ; 筮 ८ࠧ
               daa                    ; ᯮ짮 権
                                      ; ADD  DAA
               adc   al,40h
               daa                    ; 㯯 ८ࠧ
                                      ;   ASCII
               cld                    ; ࠭ ASCII  ᫥㥬
                                      ; 
               stosb
               mov   al,ah            ;  ८ࠧ
                                      ;  襩 㯯
               and   al,0Fh
               add   al,90h
               daa
               adc   al,40h
               daa
               stosb
               loop  HexLoop          ; த,  
                                      ; 㤥 믮
               mov   ds,dx
               pop   bp
               ret   6                ; ࠬ 
                                      ; 6 
HexStr         ENDP
CODE           ENDS
               END

     ਬ  ணࠬ    ᪠,    ᯮ   㭪
HexStr,  ᫥騩 :

Program HexTest;
var

TASM2 #2-5/              = 256 =

  num : word;
{$F+}

function HexStr (var num; byteCount : byte) : string; external;

{$L HEXSTR.OBJ}

{$F-}
begin
  num := word;
  Writeln('८ࠧ ப  ⭠筮
।⠢: ', HexStr(num,Sizeof(num)),'*');
end.

      ஥  ᪠  ਬ஢  ணࠬ   ᪠  
ணࠬ  ᥬ  ᯮ  ᫥騥   
䠩:

     TASM HEXSTR
     TPC HEXTEST
     HEXTEST

     ᫨  ᯮ ४⨢ .MODEL,    ணࠬ  HexStr
  ᫥騬 ࠧ:

               .MODEL   TPASCAL
               .CODE
HexStr PROC FAR num:DWORD,byteCount:BYTE RETURNS resultPtr:DWORD
               PUBLIC HexStr
               les   di,resultPtr     ;  
                                      ; १ 㭪樨
               mov   dx,ds            ; ࠭ DS ࡮
                                      ; ᪠  DX
               lds   si,sum           ;   ᫠
               mov   al,byteCount     ; ᪮쪮 ?
               xor   ah,ah            ; ᫮
               mov   cx,ax            ; ᫥ ᫮
                                      ;   CX
               add   si,ax            ;   襣
                                      ;  ᫠
               dec   si
               shl   ax,1             ; ᪮쪮 ?
                                      ; (2/)
               cld                    ; ࠭ ᫮ 
                                      ; (ࠡ  אַ
                                      ; ࠢ)

TASM2 #2-5/              = 257 =

               stosb                  ;  ਥ - 
                                      ;  ப
NextLoop:
               std                    ; ᪠஢ ᫮ 
                                      ; 襣  
                                      ; 襬
               lodsb                  ;  ᫥騩
                                      ; 
               mov   ah,al            ; ࠭ 
               shr   al,1             ; 뤥 
                                      ; 㯯 
               shr   al,1
               shr   al,1
               shr   al,1
               add   al,90h           ; ᯥ樠쭠 ᫥-
                                      ; ⥫쭮 ⭠-
                                      ; 筮 ८ࠧ
               daa                    ; ᯮ짮 権
                                      ; ADD  DAA
               adc   al,40h
               daa                    ; 㯯 ८ࠧ
                                      ;   ASCII
               cld                    ; ࠭ ASCII  ᫥㥬
                                      ; 
               stosb
               mov   al,ah            ;  ८ࠧ
                                      ;  襩 㯯
               and   al,0Fh
               add   al,90h
               daa
               adc   al,40h
               daa
               stosb
               loop  HexLoop          ; த,  
                                      ; 㤥 믮
               mov   ds,dx            ; ⠭ DS
                                      ; ࡮ ᪠
               ret
HexStr         ENDP
CODE           ENDS
               END

      ⮬   ᯮ짮   ணࠬ  ᪠ 
  ᥬ஢ ୠ⨢ ਠ HexStr  ४-
஢ ணࠬ   ⮣   䠩.


TASM2 #2-5/              = 258 =

               ਬ  ᮤন  ६
-----------------------------------------------------------------

        楤   믮   ᮤ-
    ६ ࠧ count. ᫨ count  祭
0,    ⠥ ४஢ 64.

CODE        SEGMENT
            ASSUME cs:CODE,ds:NOTHING

; ࠬ (⨬,  - push bp ᬥ饭
; 㢥稢  2)

var1        equ    DWORD PTR ss:[bp+12]
var2        equ    DWORD PTR ss:[bp+8]
count       equ    WORD  PTR ss:[bp+6]

Exchange    PROC FAR
            PUBLIC Exchange
            cld                   ;   אַ ࠢ
            mov    dx,ds          ; ࠭ ॣ DS
            push   bp
            mov    bp,sp          ;   ⥪
            lds    si,var1        ;   
            les    di,var2        ;  ன 
            mov    cx,count       ;  ᫮ ६頥
                                  ; 
            shr    cx,1           ;  稪 ᫮
                                  ; (訩  -> ७)
            jnc    ExchangeWord   ; ᫨   ,
                                  ;   横
            mov    al,es:[di]     ;   
                                  ;  var2
            movsb                 ; ६   var1
                                  ;  var2
            mov    [si-1],al      ;  var2  var1
            jz     Finis          ; 믮, ᫨ 㦭
                                  ; 믮  ⮫쪮
                                  ;  
ExchangeWords:
            mov    bx,-2          ; BX -  㤮 
                                  ;  ࠭ -2
ExchangeLoop:
            mov    ax,es:[di]     ;  ᫮  var2
            movsw                 ; ६  var1
                                  ;  var2

TASM2 #2-5/              = 259 =

            mov    [bx][si,ax     ;  ᫮ var2 
                                  ; var1
            loop   ExchangeLoop   ;  count/2 ࠧ
Finis:
            mov    ds,dx          ;  ⭮ DS
                                  ; ࡮ ᪠
            pop    bp
            ret    10
Exchange    ENDP
CODE        ENDS
            END

     ணࠬ  ࡮   ᪠,      ᯮ   㭪
Exchange,  :

program TextExchange;

type
  EmployeeRecord = record
                     Name     :    string[30];
                     Address  :    string[30];
                     City     :    string[15];
                     State    :    string[2];
                     Zip      :    string[10];
                    end;

var
  OldEmployee, NewEmployee : EmployeeRecord;

{$F+}

procedure Exchange(var var1,var2; count : word); external;
{$L XCHANGE.OBJ}
{$F-}
begin
  with OldEmployee do
  begin
    Name := 'John Smith';
    Address := ' 123 F Street';
    City := 'Scotts Valley';
    State := 'CA';
    Zip := ' 90000-0000';
  end;
  with NewEmployee do
  begin
    Name := 'Mary Jones';

TASM2 #2-5/              = 260 =

    Address := ' 9471 41st Avenue';
    City := 'New York';
    State := 'NY';
    Zip := ' 10000-1111';
  end;
  Writeln('Before: ',OldEmployee.Name,' ',NewEmployee.Name);
  Exchange(OldEmployee,NewEmployee,sizeof(OldEmployee));
  Writeln('After: ',OldEmployeeName,' ',NewEmployee.Name);
  Exchange(OldEmployee,NewEmployee,sizeof(OldEmployee));
  Writeln('After: ',OldEmployeeName,' ',NewEmployee.Name);
end.

     ⮡ ନ஢    ணࠬ  ᪠ 
ᥬ, ᯮ ᫥騥   䠩:

        TASM XCHANGE
        TPC  XCHANGE
        XCHANGE

     ᫨ ᯮ짮 ४⨢ .MODEL,  ணࠬ Exchange 
ᥬ 㤥 룫拉 ᫥騬 ࠧ:

            .MODEL  TPASCAL
            .CODE
Exchange    PROC FAR var1:DWORD,var2:DWORD,count:WORD
            PUBLIC Exchange
            cld                  ;   אַ ࠢ
            mov    dx,ds         ; ࠭ DS
            push   bp
            mov    bp,sp         ;   ⥪
            lds    si,var1       ;   
            les    di,var2       ;  ன 
            mov    cx,count      ;  ᫮ ६頥
                                 ; 
            shr    cx,1          ;  稪 ᫮
                                 ; (訩  -> ७)
            jnc    ExchangeWord  ; ᫨   ,
                                 ;   横
            mov    al,es:[di]    ;   
                                 ;  var2
            movsb                ; ६   var1
                                 ;  var2
            mov    [si-1],al     ;  var2  var1
            jz     Finis         ; 믮, ᫨ 㦭
                                 ; 믮  ⮫쪮
                                 ;  

TASM2 #2-5/              = 261 =

ExchangeWords:
            mov    bx,-2         ; BX -  㤮 
                                 ;  ࠭ -2
ExchangeLoop:
            mov    ax,es:[di]    ;  ᫮  var2
            movsw                ; ६  var1
                                 ;  var2
            mov    [bx][si,ax    ;  ᫮ var2 
                                 ; var1
            loop   ExchangeLoop  ;  count/2 ࠧ
Finis:
            mov    ds,dx         ;  ⭮ DS
                                 ; ࡮ ᪠
            ret
Exchage     ENDP
CODE        ENDS
            END

       ᯮ짮   ணࠬ  ᪠    
ᥬ஢  ୠ⨢ ਠ 楤 Exchnge  -
஢ ணࠬ   ⮣   䠩.




TASM2 #2-5/              = 262 =

                 ਬ  樮 । DOS
-----------------------------------------------------------------

       㭪樨 EnvString  ᬮ ᬮ  -
 । DOS   ப  "s="   ,
᫨  .

DATA           SEGMENT PUBLIC
               EXTRN prefixSeg : Word  ;   PSP
DATA           ENDS
               SEGMENT PUBLIC
               ASSUME  cs:CODE,ds:DATA

EnvString      PROC FAR
               PUBLIC  EnvString
               push    bp
               cld                     ; ࠡ  אַ
                                       ; ࠢ
               mov     es,[prefixSeg]  ; ᬮ PSP
               mov     es,es:[2Ch]     ; ES:DI 㪠뢠 
                                       ; 樮 ।,
               xor     di,di           ;  ஢ 
                                       ; ࠭ ࠣ
               mov     bp,sp           ;  ப ࠬ஢,
               lds     si,ss:[bp+6]    ;  ᫥ 
                                       ; ᮬ 
               ASSUME  ds:NOTHING
               lodsb                   ; ᬮ 
               or      al,al           ;  ࠢ 0?
               jz      RetNul          ; , 
               mov     ah,al           ;  ⨢ 砥
                                       ; ࠭   AH
               mov     dx,si           ; DS:SI ᮤঠ 㪠⥫
                                       ;   ࠬ
                                       ; char
               xor     al,al           ; ᤥ  ࠢ 0
Compare:
               mov     ch,al           ;  ⨬, ⮡ 
                                       ; ᫥饣  ch=0
               mov     si,dx           ;  㪠⥫ 
                                       ; ᬮ७ ப
               mov     cl,ah           ;  
               mov     si,dx           ;  㪠⥫ 
                                       ; ப
               repe    cmpsb           ; ࠢ 
               jne     Skip            ; ᫨ ࠢ 㤠-

TASM2 #2-5/              = 263 =

                                       ;  ஡ ᫥-
                                       ;  ப
               cmp     byte ptr es:[di],'=' ; ࠢ
                                       ; 訫 ᯥ譮
                                       ; ᫥騩 ᨬ '='?
               jne     NoEqual         ; ᫨ ,   
                                       ; ᮢ
Found:
               mov     ax,es           ; DI:SI 㤥 㪠뢠
                                       ;    ப
               mov     ds,ax
               mov     si,di
               inc     si              ; "ன" ᨬ '='
               les     bx,ss:[bp+10]   ;  
                                       ; १
                                       ; 㭪樨
               mov     di,bx           ;    ES:DI
               inc     di              ;  
               mov     cl,255          ;  ᨬ
                                       ; 
CopyLoop:
               lodsb                   ;  
               or      al,al           ; ஢  0
               jz      Done            ; ᫨ 0, 믮
               stosb                   ;    १
               loop    CopyLoop        ; ६  255
                                       ; 
Done:          not     cl              ;  ࠭ 
                                       ; 㬥蠫  CL  255
               mov     es:[bx],cl      ; ࠭ 
               mov     ax,SEG DATE
               mov     ds,ax           ; ⠭ DS
               ASSUME  ds:DATA
               pop     bp
               ret     4
               ASSUME  ds:NOTHING
Skip:
               dec     di              ; ஢  0
NoEqual:
               mov     cx,7FFFh        ;  , ᫨
                                       ; 㦭
               sub     cx,di           ; 樮 ।
                                       ;   ॢ蠥
                                       ; 32
               jbe     RetNul          ; ᫨ , 
               repne   scasb           ; ᬮ ᫥騩

TASM2 #2-5/              = 264 =

                                       ; 0
               jcxz    RetNul          ; , ᫨  
               cmp     byte ptr es:[di],al ; ன 0  ப?
               jne     Compare         ; ᫨ , 
                                       ; ᭮
RetNul:
               les     di,ss:[bp+10]   ;  
                                       ; १
               stosb                   ; ࠭ ⠬ 0
               mov     ax,SEG DATA
               mov     ds,ax           ; ⠭ DS
               ASSUME  ds:DATA
               pop     bp
               ret     4
EnvString      ENDP
CODE           ENDS
               END

     ணࠬ  ᪠,  ᯮ 㭪  EnvString,
룫廊 ᫥騬 ࠧ:

program EnvTest;
{ ணࠬ  ப 樮 । }

var
  EnvVariable : string;
  EnvValue    : string;

{$F+}

function EnvString(s:string) : string; external;
{$L ENVSTRING.OBJ}
{$F-}
begin
  EnvVariable := 'PROMPT';
  EnvValue := EnvString(EnvVariable);
  if EnvValue = '' then EnvValue := '***   ***';
  Writeln('६ 樮 ।: ',
           EnvVariable,' 祭: ',EnvValue);
end.

     ⮡ ନ஢    ணࠬ  ᪠ 
ᥬ, ᯮ ᫥騥   䠩:

     TASM ENVSTR
     TPC ENVTEST

TASM2 #2-5/              = 265 =

     ENVTEST

     ᫨ ᯮ짮 ४⨢ .MODEL,  㭪 EnvString  
ᥬ 㤥 룫拉 ᫥騬 ࠧ:

               .MODEL   TPASCAL
               .DATA
               EXTRN prefixSeg : Word  ;   PSP
               .CODE
EnvString      PROC FAR  EnvVar:DWORD  RETURNS EnvVal:DWORD
               PUBLIC  EnvString
               push    bp
               cld                     ; ࠡ  אַ
                                       ; ࠢ
               mov     es,[prefixSeg]  ; ᬮ PSP
               mov     es,es:[2Ch]     ; ES:DI 㪠뢠 
                                       ; 樮 ।,
               xor     di,di           ;  ஢ 
                                       ; ࠭ ࠣ
               mov     bp,sp           ;  ப ࠬ஢,
               lds     si,ss:[bp+6]    ;  ᫥ 
                                       ; ᮬ 
               ASSUME  ds:NOTHING
               lodsb                   ; ᬮ 
               or      al,al           ;  ࠢ 0?
               jz      RetNul          ; , 
               mov     ah,al           ;  ⨢ 砥
                                       ; ࠭   AH
               mov     dx,si           ; DS:SI ᮤঠ 㪠⥫
                                       ;   ࠬ
                                       ; char
               xor     al,al           ; ᤥ  ࠢ 0
Compare:
               mov     ch,al           ;  ⨬, ⮡ 
                                       ; ᫥饣  ch=0
               mov     si,dx           ;  㪠⥫ 
                                       ; ᬮ७ ப
               mov     cl,ah           ;  
               mov     si,dx           ;  㪠⥫ 
                                       ; ப
               repe    cmpsb           ; ࠢ 
               jne     Skip            ; ᫨ ࠢ 㤠-
                                       ; , ஡ ᫥-
                                       ;  ப
               cmp     byte ptr es:[di],'=' ; ࠢ
                                       ; 訫 ᯥ譮

TASM2 #2-5/              = 266 =

                                       ; ᫥騩 ᨬ '='?
               jne     NoEqual         ; ᫨ ,   
                                       ; ᮢ
Found:
               mov     ax,es           ; DI:SI 㤥 㪠뢠
                                       ;    ப
               mov     ds,ax
               mov     si,di
               inc     si              ; "ன" ᨬ '='
               les     bx,ss:[bp+10]   ;  
                                       ; १ 㭪樨
               mov     di,bx           ;    ES:DI
               inc     di              ;  
               mov     cl,255          ;  ᨬ
                                       ; 
CopyLoop:
               lodsb                   ;  
               or      al,al           ; ஢  0
               jz      Done            ; ᫨ 0, 믮
               stosb                   ;    १
               loop    CopyLoop        ; ६  255
                                       ; 
Done:          not     cl              ;  ࠭ 
                                       ; 㬥蠫  CL  255
               mov     es:[bx],cl      ; ࠭ 
               mov     ax,SEG DATE
               mov     ds,ax           ; ⠭ DS
               ASSUME  ds:DATA
               pop     bp
               ret     4
               ASSUME  ds:NOTHING
Skip:
               dec     di              ; ஢  0
NoEqual:
               mov     cx,7FFFh        ;  , ᫨
                                       ; 㦭
               sub     cx,di           ; 樮 ।
                                       ;   ॢ蠥
                                       ; 32
               jbe     RetNul          ; ᫨ , 
               repne   scasb           ; ᬮ ᫥騩
                                       ; 0
               jcxz    RetNul          ; , ᫨  
               cmp     byte ptr es:[di],al ; ன 0  ப?
               jne     Compare         ; ᫨ , 
                                       ; ᭮

TASM2 #2-5/              = 267 =

RetNul:
               les     di,ss:[bp+10]   ;  
                                       ; १
               stosb                   ; ࠭ ⠬ 0
               mov     ax,SEG DATA
               mov     ds,ax           ; ⠭ DS
               ASSUME  ds:DATA
               ret     4
EnvString      ENDP
CODE           ENDS
               END

       ᯮ짮   ணࠬ  ᪠    
ᥬ஢  ୠ⨢  ਠ 㭪樨 EnvString  -
஢ ணࠬ   ⮣   䠩.

