     ࡮ ᥬ 3.0/tasm/#2-2                               = 1 =

    13. ७ 樨..................................9
     䥪⨢  : ४⨢ SMART  NOSMART...........9
     ७ 樨 室................................10
     ⥫ 樨 横  80386...............11
     ⥫ 樨 ENTER  LEAVE........................11
     ⥫ 樨 .............................11
     ७ 樨 PUSH  POP..............................12
     樨 PUSH  POP  ᪮쪨 ࠭.................13
     ᯮ짮   PUSH  POP 㪠⥫..............13
     ᥭ  ⥪ ⠭ ( 8086)....................13
     ७ 樨 ᤢ..................................15
     ਭ㤨⥫쭮 ८। ᥣ⮢: 樨 SEGxx.....15
     ⥫ 樨 ࠡ  䫠.....................16
     ⥫ 樨 ࠡ  ⠬ ................17
      GETFIELD............................................19
     ⥫쭠  樨 ।⢥
      㬭.....................................................19
     ७ 室 権   80386.........20
     맮 楤  ࠬ ⥪.................................22
     뢠 楤, ᮤঠ騥 RETURNS.......................23
     맮 楤 ⮤  ꥪ⮢: CALL...METHOD.............23
     筠 ४  ⮤ ꥪ⮢: 
      JMP...METHOD..................................................25
     ⥫ 樨  ꥪ⭮ ணࠬ஢......25
    14. ᯮ짮 ப..............................26
     ⮢ ப.........................................26
     । ⥪⮢ ப   ४⨢ EQU......26
     ४⨢ ப ࠡ  ⥪⮢묨 ப.............27
     ४⨢ CATSTR...............................................28
     ४⨢ SUBSTR...............................................28
     ४⨢ INSTR................................................28
     ४⨢ SIZESTR..............................................28
     ਬ ப ࠡ  ⥪⮬...........................29
     ப, 騥  ᪮쪨 ப....................29
      ப, 饩  ᪮쪨 ப...............29
     ᯮ짮  ப ᨬ &........................30
     祭 ਥ  ⥫ ப.....................31
      ଠ 㬥.................................31
     ४⨢ EXITM................................................33
     ४⨢ GOTO  ந䨪 室..................33
     騥 ப, 騥  ᪮쪨 ப..............34
     맮 饩 ப, 饩  ᪮쪨 ப........36
     ࠫ ப  㣫 ᪮...........................37
      !.......................................................37
      ᫥ ࠦ %..................................38
     ८। 饩 ப, 饩  ᪮쪨
      ப.........................................................38
      饩 ப: ४⨢ PURGE...................38
     ।   ४ᨢ ப................39
     稪 ७ ப................................40
     ४⨢ WHILE................................................41
     ப ७ ப..................................41
     ।⢥ த४⨢ %..............................42

     ࡮ ᥬ 3.0/tasm/#2-2                               = 2 =

     祭 ७ ப  䠩 ⨭..............43
    15. ᯮ짮 ᫮ ४⨢........................44
     ⠪ ᫮ ४⨢....................................44
     ४⨢ ᫮ ᥬ஢ IFxxx......................45
     ४⨢ ᫮ ᥬ஢ ELSEIFxxx..................47
     ४⨢ 樨 ᮮ饭  訡 ERRxx..................48
     ᠭ  ४⨢...................................49
     ᫮ ४⨢ 樨 ᮮ饭  訡............49
     ᫮ ४⨢  ࠦﬨ...............................49
     ᫮ ४⨢  䨪஬...........................50
     ᫮ ४⨢  ⥪⮢묨 ப.......................52
     ᫮ 믮 室 ᥬ஬.........................56
     祭 ᫮ ४⨢  䠩 ⨭....................56
    16. 䥩  騪..............................58
     ᠭ 譨 䨪஢...............................58
     襭  ⭮ 몠...............................58
     ᠭ 饤㯭 䨪஢.........................58
     ᠭ 䨪஢ ⥪............................59
     । 譨 䨪஢............................60
     ᠭ  䨪஢............................60
     ।  ६...................................60
     祭 ⥪...........................................62
    17.  ⨭.....................................63
     ଠ ⨭................................................63
     騥 ४⨢ ࠢ ⨭...........................64
     ४⨢ ⨭ 砥 䠩...........................65
     ४⨢ 뢮  ᫮ ᥬ஢..............66
     ४⨢ 뢮  䠩 ⨭ ப...................67
     ४⨢ 뢮 ⨭ ४ 뫮..................67
     ࠬ  ଠ ⨭...........................69
    18. 䥩 ࡮ ᥬ  Borland C++...............73
     맮  Borland C++ 㭪権 ࡮ ᥬ..................74
     ᭮   䥩 ࡮ ᥬ  Borland
      C++...........................................................76
      ᥬ 㫥  ++..........................77
     ᯮ짮 Extern "C"  饭 ..............78
        ᥣ.......................................79
     饭 ४⨢ । ᥣ⮢  Borland C++.......79
      ४⨢ । ᥣ⮢  Borland C++...........80
     祭  㬮砭:  室 㦠 ᥣ?....83
     饤㯭  譨 䨪.........................86
     ન   ........................................86
     稬    ய ᨬ 
      䨪...............................................88
      ⮪.....................................................88
     譨 쭨 䨪.................................90
      ப 騪..................................91
     ⢨  ࡮ ᥬ஬  Borland C++...........93
     । ࠬ஢............................................93
     ࠭ ॣ஢..........................................101
      祭..............................................102
     맮 㭪樨 ࡮ ᥬ  Borland C++.................104
     ᠭ  몥 ᥬ 㭪権-⮢ ++...........108

     ࡮ ᥬ 3.0/tasm/#2-2                               = 3 =

     襭  맮, ᯮ騥  ᪠...............110
     맮 Borland C++  ࡮ ᥬ.........................111
        樠樨 ++..........................112
      ᥣ..............................................112
     믮 맮.............................................112
     맮  ࡮ ᥬ 㭪樨 Borland C++.................114
    19. 䥩 ࡮ ᥬ  ࡮ ᪠...........117
     ⭮  ࡮ ᪠ ᯮ짮 ..............118
     ४⨢  $L  譨 ணࠬ...............118
     ४⨢ PUBLIC..............................................119
     ४⨢ EXTRN...............................................119
     ࠭祭  ᯮ짮 ꥪ⮢ ⨯ EXTRN.............122
     ᯮ짮 ४஢ ᥣ⮢.........................123
     ࠭ ᯮ㥬 ...............................125
     襭 ࡮ ᪠  । ࠬ஢...............125
     ࠬ-祭............................................125
      ⨯................................................125
     ⢥ 祭.........................................126
      Single, Double, Extended  Comp  ⨯ ᮯ
      8087.........................................................126
     ⥫.....................................................126
     ப........................................................126
       ᨢ..............................................126
     ⢠.....................................................127
     ࠬ-६..........................................127
     ᯥ祭 ⥪.............................................127
       ࠬࠬ...........................................128
     ᯮ짮  樨  ⥪ ॣ BP...............128
     ४⨢ ARG.................................................129
     ࡮ ᪠  ४⨢ .MODEL..............................130
     ᯮ짮 㣮   ᭮ ॣ........131
      㭪樨  ࡮ ᪠............................131
     뤥 ࠭⢠   ...................132
     뤥 ᪮ ..................................132
     뤥 ६ ....................................133
     ਬ ணࠬ  ᥬ  ࡮ ᪠...........135
     ணࠬ ⭠筮 ८ࠧ 饣
      祭...................................................135
     ਬ  ᮤন  ६.....................138
     ਬ  樮 । DOS.........................141
  2. .............................................147
   ਫ A. 砭  ணࠬ஢.....................148
     饭 ४⨢ । ᥣ.....................148
     ணࠬ DOS.................................................150
     砭  ணࠬ ଠ EXE...........................151
     砭  ணࠬ ଠ COM...........................152
     ணࠬ Windows.............................................153
     砭  ᪨ 㥬 ⥪ Windows......153
     砭  ਪ ணࠬ Windows....................154
   ਫ B.  ᨭ⠪᪨ ࠢ ࡮ ᥬ......156
     ᪠ ࠬ⨪........................................156
     ࠬ⨪ ࠦ  ० MASM............................158
     ࠬ⨪ ࠦ  ० Ideal...........................160

     ࡮ ᥬ 3.0/tasm/#2-2                               = 4 =

     設⢮ 祢 ᫮.....................................162
     設⢮ 権  ० Ideal...........................162
     設⢮ 権  ० MASM............................162
     祢 ᫮  ।। 䨪..............163
     祢 ᫮ ४⨢.......................................163
   ਫ C.  ᮢ⨬.............................168
     -  室 ० ᥬ஢..................169
     ६ 樮 ।.................................170
     ଠ  Microsoft   ᥫ  饩
      窮.......................................................170
   ਫ D. ⨫ ࡮ ᥬ..........................171
     ⨫-८ࠧ⥫ H2ASH.................................171
   ਫ E. 饭  訡..............................174
     ଠ樮 ᮮ饭......................................174
     ।०騥 ᮮ饭  ᮮ饭  訡..............176
     32-bit segment not allowed without .386.......................176
     Argument needs type override..................................176
     Argument to operation or instruction has illegal size.........177
     Arithmetic overflow...........................................177
     ASSUME must be segment register...............................177
     Bad keyword in SEGMENT statement..............................177
     Can't add relative quantities.................................177
     Can't address with currently ASSUMEd segment registers........178
     Can't convert to pointer......................................178
     Can't emulate 8087 instruction................................178
     Can't make variable public....................................179
     Can't override ES segment.....................................179
     Can't subtract dissimilar relative quantities.................179
     Can't use macro name in expression............................179
     Can't use this outside macro..................................179
     Code or data emission to undeclared segment...................180
     Constant assumed to mean Immediate const......................180
     Constant too large............................................180
     CS not correctly assumed......................................180
     CS override in protected mode.................................181
     CS unreachable from current segment...........................181
     Declaration needs name........................................181
     Directive ignored in Turbo Pascal model.......................181
     Directive not allowed inside structure definition.............182
     Duplicate dummy arguments:_...................................182
     ELSE or ENDIF without IF......................................182
     Expecting METHOD keyword......................................183
     Expecting offset quantity.....................................183
     Expecting offset or pointer quantity..........................183
     Expecting pointer type........................................183
     Expecting record field name...................................183
     Expecting register ID.........................................183
     Expecting scalar type.........................................183
     Expecting segment or group quantity...........................184
     Extra characters on line......................................184
     Forward reference needs override..............................184
     Global type doesn't match symbol type.........................184
     ID not member of structure....................................185

     ࡮ ᥬ 3.0/tasm/#2-2                               = 5 =

     Illegal forward reference.....................................185
     Illegal immediate.............................................185
     Illegal indexing mode.........................................186
     Illegal instruction...........................................186
     Illegal instruction for currently selected processor(s).......186
     Illegal local argument........................................186
     Illegal local symbol prefix...................................186
     Illegal mcro argument........................................187
     Illegal memory reference......................................187
     Illegal number................................................187
     Illegal origin address........................................187
     Illegal override in structure.................................187
     Illegal override register.....................................188
     Illegal radix.................................................188
     Illegal register for instruction..............................188
     Illegal register multiplier...................................188
     Illegal segment address.......................................188
     Illegal use of constant.......................................189
     Illegal use of register.......................................189
     Illegal use of segment register...............................189
     Illegal USES register.........................................189
     Illegal version ID............................................189
     Illegal warning ID............................................189
     Instruction can be compacted with override....................190
     Invalid model type............................................190
     Invalid operand(s) to instruction.............................190
     Labels can't start with numeric characters....................190
     Line too long - truncated.....................................190
     Location counter overflow.....................................190
     Method call requires object name..............................191
     Missing argument list.........................................191
     Missing argument or <.........................................191
     Missing argument size variable................................191
     Missing COMM ID...............................................191
     Missing dummy argument........................................192
     Missing end quote.............................................192
     Missing macro ID..............................................192
     Missing module name...........................................192
     Missing or illegal language ID................................192
     Missing or illegal type specifier.............................193
     Missing table member ID.......................................193
     Missing term in list..........................................193
     Missing text macro............................................193
     Model must be specified first.................................193
     Module is pass-dependant - compatibility pass was done........193
     Name must come first..........................................194
     Near jump or call to different CS.............................194
     Need address or register......................................194
     Need angle brackets for structure fill........................194
     Need colon....................................................194
     Need expression...............................................195
     Need file name after INCLUDE..................................195
     Need left parenthesis.........................................195

     ࡮ ᥬ 3.0/tasm/#2-2                               = 6 =

     Need method name..............................................195
     Need pointer expression.......................................195
     Need quoted string............................................195
     Need register in expression...................................196
     Need right angle bracket......................................196
     Need right curly bracket......................................196
     Need right parenthesis........................................196
     Need right square bracket.....................................196
     Need stack argument...........................................197
     Need structure member name....................................197
     Not expecting group or segment quantity.......................197
     One non-null field allowed per union expansion................197
     Only one startup sequence allowed.............................198
     Open conditional..............................................198
     Open procedure................................................198
     Open segment..................................................198
     Open structure definition.....................................198
     Operand types do not match....................................199
     Operation illegal for static table member.....................199
     Pass-dependant construction encountered.......................199
     Pointer expression needs brackets.............................199
     Positive count expecting......................................200
     Record field too large........................................200
     Record member not found.......................................200
     Recursive definition not allowed for EQU......................200
     Register must be AL or AX.....................................200
     Register must be DX...........................................200
     Relative jump out of range by __ bytes........................201
     Relative quantity illegal.....................................201
     Reserved word used as symbol..................................201
     Rotate count must be constant or CL...........................201
     Rotate count out of range.....................................201
     Segment alignment not strict enough...........................202
     Segment attributes illegally redefined........................202
     Segment name is superfluous...................................202
     String too long...............................................202
     Symbol already defined:__.....................................203
     Symbol already different kind.................................203
     Symbol has no width or mask...................................203
     Symbol is not a segment or already part of a group............203
     Text macro expansion exceeds maximum line length..............203
     Too few operands to instruction...............................203
     Too many errors or warnings...................................204
     Too many initial values.......................................204
     Too many register multipliers in expression...................204
     Too many registers in expression..............................204
     Too many USES registers.......................................204
     Trailling null value assumed..................................205
     Undefined symbol..............................................205
     Unexpected end of file (no END directive).....................205
     Unknown character.............................................205
     Unmatched ENDP:_..............................................205
     Unmatched ENDS:_..............................................205

     ࡮ ᥬ 3.0/tasm/#2-2                               = 7 =

     User-generated error..........................................206
     Value out of range............................................206
     饭  ⠫ 訡.................................207
     Bad switch....................................................207
     Can't find @file __...........................................207
     an't locate file __..........................................207
     Error writing to listing file.................................207
     Error writing to object file..................................207
     File not found................................................207
     File was changed or deleted while assembly in progress........208
     Insufficient memory to process command line...................208
     Internal error................................................208
     Invalid command line..........................................208
     Invalid number after _........................................208
     Out of hash space.............................................208
     Out of memory.................................................209
     Out of string space...........................................209
     Too many errors found.........................................209
     Unexpected end of file (no END directive).....................209

     ࡮ ᥬ 3.0/tasm/#2-2                               = 8 =


     ࡮ ᥬ 3.0/tasm/#2-2                               = 9 =

                      13. ७ 樨
     

          ࡮ ᥬ ᯮ   ⠭    -
     権 Intel,  ਬ  ⥪饬 ࠭ . -
       ।⠢ ᮡ      権.  ஡
     祭   権      ⪮ ࠢ筮
     㪮⢥.

           䥪⨢  : ४⨢ SMART  NOSMART
     

          䥪⨢   砥,  ࡮ ᥬ -
      ।,   ᯮ짮 ࠧ 樨 
     䥪⨢, 祬     .  ਬ,    
        LEA  ⪮  ன -
      MOV:

          LEA AX,lval

       :

          MOV AX,OFFSET lval

          ࡮ ᥬ ।ᬠਢ ४⨢,  
      ᯮ짮 䥪⨢  .  ४⨢ -
       ᫥饩 ⠡:

                   ४⨢ 䥪⨢ 樨     13.1
     Ŀ
         ४⨢        祭                                  
     Ĵ
         SMART            蠥  䥪⨢ .    
                                                                    
         NOSMART          頥  䥪⨢ .    
     

           㬮砭   䥪⨢  ࠧ襭.  
       䥪⨢    ⮫쪮 ४⨢ SMART 
     NOSMART,   ४⨢ VERSION.

                 ਬ砭:  ४⨢ VERSION ஡ ᪠뢠-
               3.

           䥪⨢    ᫥騥 樨 -
     樨 :

          -  樨 LEA 樥 MOV, ᫨ ࠭ -
            樨 LEA  ⮩ .

          -   , 믮  㫥᪨ -
            権  ,. ਬ, AND AX,+02  AND AX,0002.


     ࡮ ᥬ 3.0/tasm/#2-2                              = 10 =

          -   樨  CALL  FAR  xxxx 樥 権
            PUSH CS, CALL NEAR xxxx,  楫  xxxx ᯮ
              ॣ CS.

          ᯮ짮 䥪⨢ 権 砥 ᠭ -
     䥪⨢ .   ⠭  樨  Intel  ⠪
     ७ ⠪ ࠧ,  ⮡     -
      ᯮ짮.  㦤  ᫥ ࠧ.

                     ७ 樨 室
     

          ᫮ 室,  ⠪   JC  JE   8086,
     80186  80286   ⮫쪮  (NAER),    室
     믮   ࠭  ᥣ    ﭨ -128  +127
      ⭮⥫쭮 ⥪饣 .   ࠭祭    
      ᫮  権 横,  ⠪  JCXZ  LOOP ( 
       Intel).

          ,   室,  ࡮ ᥬ  ஢
     ⥫ ᫥⥫쭮  室  室  -
     祭. ਬ,  ࡮  ᥬ  ८ࠧ -
     :

          JC xxx

      樨:

          JNC temptag
          JMP xxx

            ࠧ  ⥫ ᫥⥫쭮
     室     ४⨢ JUMPS,     ४⨢
     NOJUMPS.  㬮砭 ࡮ ᥬ    ।⢮.

            㪠뢠 ४⨢ JUMPS, ࡮ ᥬ १ࢨ-
      筮    ⥫ ᫥⥫쭮⥩ -
     室   ᫮ 室 ।.  । 䠪-
     ᪮ ﭨ  室  ।,  ⥫쭠 ᫥-
     ⥫쭮   .    ந室, ࡮ -
     ᥬ   譥 ࠭⢠  樨
     NOP.

          ⮡  ⥫ 権 NOP,  :

          - ᯮ짮 ८। ᫮  室, 
              ⥭, ਬ:

                    JC SHORT abc
                    ADD ax,ax
          abc:

          -  ࠬ  ப /m (஡   -

     ࡮ ᥬ 3.0/tasm/#2-2                              = 11 =

            뢠   2).

             ⥫ 樨 横  80386
     

             横    80386    ⢥ ॣ-
     -稪  ᯮ짮 ॣ CX   ECX. ⠭
      権 LOOP,  LOOPE,  LOOPZ,  LOOPNE  LOOPNZ 
     Intel 롨 ॣ-稪  ᭮ ⮣,    ⥪-
     騩 ᥣ    32-⮢  ᥣ⮬ (⮣ ᯮ ECX)
      16-⮢ (ᯮ ॣ CX).

          ࡮ ᥬ  ᯥ樠 樨,  㢥-
     稢  ।⢠ LOOP.  樨 LOOP,  LOOPE,  LOOPWZ,
     LOOPWNE  LOOPWNZ ᯮ  ⢥ 稪 ॣ CX,  -
     ᨬ    ⥪饣  ᥣ.  筮,  樨 LOOPD,
     LOOPDE,  LOOPDZ, LOOPDNE  LOOPDNZ ᯮ  ⢥ 稪
     ॣ ECX.

                  ⥫ 樨 ENTER  LEAVE
     

          樨 ENTER  LEAVE ᯮ  㤠   ⥪
      楤.   ᨬ  ⮣,  ⥪騩 ᥣ
      16-⮢  32-⮢,  ⠭ 樨  ENTER  
     LEAVE  ஢  ॣ BP  SP,  EBP  ESP.
     ᫨ ᥣ  -  32-⮢ ᥣ,  ᥣ ⥪ - 16-
     ⮢,   樨   室騬.

           ࡮  ᥬ  ।ᬮ७ 4 ⥫ -
     樨,  ᥣ 롨  ࠧ  ⥪, ᨬ
      ࠧ ᥣ . 樨 ENTERW  LEAVEW ᥣ 롨-
       ⢥ ॣ஢  ⥪ BP  SP,  a ENTERD  LEAVED
     - ॣ EBP  ESP.

                  ⥫ 樨 
     

          ⠭⭠  RET  ,  ᮮ⢥-
     騬 ࠧ 蠥 ⥪ 楤.   砥  ᥡ
       襭 楤,    ᯮ  -
     䥩 ᮣ襭 몠 ᮪ ஢.  ᫨  楤
     ᯮ ᮣ襭 NOLANGUAGE,   RET  ᨬ
      ᠭ  楤 (ᠭ   NEAR  FAR) 㤥 -
     ஢ ࠧ .   楤 NEAR ࡮ ᥬ -
         .   楤 FAR ࡮ -
     ᥬ     .  (  楤
     ᥣ   .)

          ࡮ ᥬ  砥   ᥡ ⥫ 樨,
          㦭 権  
     (  襭).  ᫥  ᫥饩 ⠡:


     ࡮ ᥬ 3.0/tasm/#2-2                              = 12 =

                            樨             13.2
     Ŀ
             㭪                                     
     Ĵ
        RETN           ᥣ   .          
                                                                   
        RETNF          ᥣ  쭨 .          
                                                                   
        RETCODE         , ⨯  ண  ᮮ⢥- 
                        ⥪饩 ࠭ .   
                       TINY, SMALL, COMPACT  TPASCAL  
                        .   MEDIUM,  LARGE, 
                       HUGE  TCHUGE - 쭨 .            
     

                    ७ 樨 PUSH  POP
     

          ࡮ ᥬ ন ᪮쪮 ७ 権
     PUSH  POP.  ७ ⢥ 㬥 ꥬ , -
     室    ७ ᫥⥫쭮 権
     PUSH   POP.



     ࡮ ᥬ 3.0/tasm/#2-2                              = 13 =

             樨 PUSH  POP  ᪮쪨 ࠭
     

            ப    ᪮쪮 権 PUSH 
     POP. ਬ:

          PUSH ax
          PUSH bx
          PUSH cx
          POP cx
          POP bx
          POP ax

       :

          PUSH ax bx cx
          POP cx bx ax

          ⮡ ࡮ ᥬ ᯮ 稥 ᪮쪨 ࠭-
        , 㦭 ⮡  ࠭   ᬠ-
     ਢ   ᥤ ࠭, ਬ :

          PUSH foo [bx]

      ਢ  । १, ᪮ foo,[bx] 
     foo[bx]   ⨬묨  ࠦﬨ.  ⮡  
     ⠫ ।,   ᯮ짮  㣫    
     ᪮, ਬ:

          PUSH [foo] [bx]

            ᯮ짮   PUSH  POP 㪠⥫
     

          ⠭ 樨 PUSH  POP   ࠭  ⥪
     쭨 㪠⥫,    ॡ  4     8086,
     80186  80286  6    80386.

          ࡮ ᥬ ᪠ 㪠   PUSH   POP
     ࠭-㪠⥫  ࠧ஬  DWORD   8086,  80186 
     80286  QWORD   80386.    㦨  ⠪
     樨, ࡮  ᥬ  樨 PUSH  POP 
      ⥩ ࠭.

              ᥭ  ⥪ ⠭ ( 8086)
     

             80186 80286  80386 । ᭮ 
     権  ᮤঠ  PUSH,     ⥪ -
     ।⢥ 祭,   8086 ⠪ 樨 .

           ࡮  ᥬ   ᯮ짮  樨
     PUSH ⠭    8086.   ⮬  ᫥-

     ࡮ ᥬ 3.0/tasm/#2-2                              = 14 =

     ⥫쭮 権,      १,    -
      PUSH c ࠭-⠭⮩   80186  .

                 ਬ砭:  ।⢮   ᯮ짮 ⮫-
              ࠧ襭 樨 䥪⨢ .

          ᫥⥫쭮 権,    ࡮ ᥬ -
       믮 樨 PUSH  ⠭⮩,  
      10 .     믮 ॥,  祬 믮
     ⮩  㭪樨,    믮 易   ३  ᮤন
     ॣ, ਬ:

          MOV ax, constant
          PUSH ax

           ᫥⥫쭮   ⮫쪮 6  ,    
      ⮣  ᮤন ॣ AX.



     ࡮ ᥬ 3.0/tasm/#2-2                              = 15 =

                      ७ 樨 ᤢ
     

           ᯮ짮  8086 樨 ᤢ RCL, RCR,
     ROL, ROR,  SHL,  SHR,  SAL  SAR   ਭ  ⠭
     横᪮  ᤢ,  ⫨   1.   ࠡ  
     80186,  80286  80386  ᯮ짮  ⠭  横᪮
     ᤢ  祭  255.

           ࡮ ᥬ 㦨  ᤢ  -
     祭 ⠭, 訬 1 ( 롮  8086), -
      ᮮ⢥饥 ᫮ 権 ᤢ  祭 -
     ⠭ 横᪮ ᤢ 1. ਬ, 樨:

          .8086
          SHL ax,4

      ᫥⥫쭮:

          SHL   ax,1
          SHL   ax,1
          SHL   ax,1
          SHL   ax,1

       ਭ㤨⥫쭮 ८। ᥣ⮢: 樨 SEGxx
     

           ࡮  ᥬ  ।ᬮ७  6  権,   
     ਢ  樨 ८। ᥣ.  樨 -
     ᫥  ᫥饩 ⠡:

                    樨 ८। ᥣ    13.3
     Ŀ
           祭                                      
     Ĵ
         SEGCS        䨪  ८। CS.
                                                                   
         SEGSS        䨪  ८। SS.
                                                                   
         SEGDS        䨪  ८। DS.
                                                                   
         SEGES        䨪  ८। ES.
                                                                   
         SEGFS        䨪  ८। FS.
                                                                   
         SEGGS        䨪  ८। GS.
     

             ᯮ짮   樨  ⠭  ⠪
     ﬨ,  XLATB,    ॡ 㬥⮢,  
     ᯮ짮 ८। ᥣ⮢, ਬ:

          SEGCS XLATB

     ࡮ ᥬ 3.0/tasm/#2-2                              = 16 =


          ⨬,   設⢥ 権  ୠ⨢
     ଠ,  ன,  ⮡ 㪠  室 ८।-
     ,    ⮩ 㬥:

          XLAT BYTE cs:[bx]

          ਢ  ਬ      .

              ⥫ 樨 ࠡ  䫠
     

          , ⮡  䥪⨢  㬥 ࠧ ,
        樨  ࠡ    䫠.  ਬ,  ᫨
     ⢥  १⮬   ⠭ ⭮
       AX,   䫠 ,     -
     , 祭  , :

          OR ax,1000h

        樨:

          OR, ah,10h

          ࡮ ᥬ ᯥ稢  4  ⥫  樨,
      ᯥ稢  㭪樮 .  
      ᫥饩 ⠡:

               䥪⨢ 樨 ࠡ  䫠     13.4
     Ŀ
             㭪        ⢥ 樨     
     Ĵ
         SETFLAG       ⠭             OR                 
                       () 䫠.                               
                                                                   
         MASKFLAG      ᪨஢          AND                
                        ()                                  
                       䫠.                                      
                                                                   
         TESTFLAG      ஢ઠ              TEST               
                       () 䫠.                               
                                                                   
         FLIPFLAG                  XOR                
                       () 䫠.                               
     

           樨  ᯮ짮   襭 쭮
     ᥩ, ਬ:

          FOO        RECORD R0:1,R1:4,R2:3,R3:1
             .
             .
             .

     ࡮ ᥬ 3.0/tasm/#2-2                              = 17 =

             TESTFLAG AX,R0

            ਬ TESTFLAG 㤥 ஢  䥪-
     ⨢ 樨, ᨬ  ⮣,    室 R0.

            ⥫ 樨 ࠡ  ⠬ 
     

          ࡮ ᥬ    ஢  ᯥ樠 ᫥-
     ⥫쭮 権   祭   祭  祭
      ⮢ ,     RECORD.  -
        , ᨬ  䠪᪮ ᯮ -
       .   ᯮ짮   ⠭  ஬ ENUM,
       몥 ᥬ   祭  ᮪  ஢
     쭮. ᮪   権 ਢ  ᫥饩 ⠡-
     :

         樨  ⠭  祭 祭    13.5
     Ŀ
            㭪                                      
     Ĵ
        SETFIELD      ⠭ 祭  .          
                                                                   
        GETFIELD       祭   .           
     

                             SETFIELD
     

           SETFIELD  , ⠭騩 祭
      .   ᨭ⠪:

          SETFIELD _ ॣ/_ਥ, ॣ_筨

      "_"  -   ,  "ॣ/_ਥ" 
     SETFIELD ।⠢ ᮡ ॣ      ⨯ BYTE
      WORD (DWORD   80386).  "_筨" 
      ॣ஬ ⮣   襣 ࠧ.  ᫨ 筨 -
     , 祬 ਥ,   ॣ-筨   襩 
     㣮 ॣ,  饣   ࠧ,    ਥ.  
      ॣ  뢠 ࠡ稬 ॣ஬.  ᯮ 
     ॣ  ᤢ 祭  ॣ-筨,   祬
      ࠢ  ਥ. ਬ:

          FOO        RECORD R0:1,R1:4,R2:3,R3:1
             .
             .
             .
             SETFIELD  F1  AX,BL     ; ࠡ稬 ॣ஬  BX
             SETFIELD  F1  AX,BH     ; ⨬!

          SETFIELD ᤢ ॣ-筨,  ⮡ 䥪⨢ ஢-
         ਥ,  믮  OR  頥 -

     ࡮ ᥬ 3.0/tasm/#2-2                              = 18 =

       ॣ-ਥ.

                ਬ砭:  SETFIELD 㭨⮦   ᮤন-
            ࠡ祣 ॣ.

          ⮡ 믮 ᢮ 㭪,  SETFIELD 
     䥪⨢   ७  ᫥⥫쭮  権   XOR,
     XCHG, ROL, ROR, OR  MOVZX.

           SETFIELD    ⠥   楫  ।
     믮   祭 樨 OR.  ᫨   室,
               ࠧ, ᯮ  
     MASKFLAG.



     ࡮ ᥬ 3.0/tasm/#2-2                              = 19 =

                            GETFIELD
     

           GETFIELD      . 
      ࠡ ⨢ 樨 SETFIELD.   ᫥騩
     ᨭ⠪:

          GETFIELD _ ॣ_ਥ, ॣ/_筨

      "_"  "ॣ_ਥ" ࠡ ⠪ ,   -
     樨 SETFIELD. "/_筨"  ᯮ짮 ⠪,
      "ॣ_筨"  樨 SETFIELD, ਬ:

          FOO        RECORD R0:1,R1:4,R2:3,R3:1
             .
             .
             .
             GETFIELD  F1  AX,BL     ; ࠡ稬 ॣ஬  BX
             GETFIELD  F1  AX,BH     ; ⨬!

                ਬ砭:  GETFIELD 㭨⮦   ᮤন-
            ࠡ祣 ॣ.

           GETFIELD  祭  ,  㦥  
     ॣ-筨      ,   ⠭  
     祭 ᮮ⢥  ॣ-ਥ.   㣨 -
      (஬ ࠡ祣)  䫠     -
     .

          ⮡ 믮 ᢮ 㭪,  GETFIELD 
     䥪⨢   ७  ᫥⥫쭮  権   MOV,
     XCHG, ROL  ROR.

      ⥫쭠  樨 ।⢥ 㬭
     

           䥪⨢ 樨 ᨢ ࡮ ᥬ  ᯥ-
     稢 ᯥ樠  ।⢥ 㬭. -
      FASTIMUL 蠥 ⨯ ஡,     ᮧ
     ᨢ .   8086  ।⢥-
      㬭 㯭.    ࠧ  㬭-
       ᯮ짮 ᤢ  ᫮ 믮  
     ⥫⢠ ⢥ ॥,  祬 ⠭⭠  ।-
     ⢥  IMUL.  ᭮ ⥪饣 祭 
      ࡮ ᥬ FASTIMUL 롨ࠥ    -
     䥪⨢ 㯭  ᫥⥫쭮 ᤢ  ᫮  -
     ।⢥ 樥 IMUL ⥪饣  (᫨   -
     ).  FASTIMUL  ᫥騩 ᨭ⠪::

          FASTIMUL ॣ_ਥ, ॣ/_筨, 祭

             祭  ୠ  IMUL,
     㯭   80186, 80286  80386. -ਥ -

     ࡮ ᥬ 3.0/tasm/#2-2                              = 20 =

       ॣ  ࠧ஬    ᫮ (  ᫮  ࠡ 
      80386).  "/_筨" -   ॣ  
       ,   ᮮ⢥⢮ ࠧ ਥ.
     "祭" -  䨪஢ ⠭   (⥫).

           FASTIMUL ᯮ  믮  ᢮ 㭪樨
      権 IMUL,  MOV,  NEG,  SHL, ADD  SUB.  ⮬
     ᮤন ॣ-筨 (  ) . 
       .

         ७ 室 権   80386
     

           80386   ࠡ  16-    32-ࠧ-
     來 ०.   ⠭ 樨   ࠧ ०-
       ࠧ .   ࡮ ᥬ  ࠧ஬  樨
      ࠢ   ᯮ㥬  ࠦ ८।-
      SMALL  LARGE.

           饬 砥,  ᫨    ᭮  ࠦ  ᯮ
     SMALL  LARGE,   ࠢ 樥 ᭮  -
     樨  ᨬ  ⮣,    16-  32-ࠧ-
     .

               ਬ砭:   ஡  ८। ࠧ 
           権 SMALL  LARGE ᪠뢠   5.

           SMALL  LARGE 㪠뢠  ᭮  ࠦ-
     ,    ࠢ ⥬,    믮 - 16-
      32-⮢.    ,  ࠧ 樨 ।-
        ⨯ ࠭,  ࡮ ᥬ ᠬ 롨ࠥ ࠧ -
     樨. ⢨ SMALL  LARGE   ᫥饩 ⠡.

                ਬ砭: ࡮ ᥬ 롨ࠥ  ࠧ  -
           樨,  ᯮ SMALL  LARGE,  ⮫쪮   㣮 -
           ଠ樨.



     ࡮ ᥬ 3.0/tasm/#2-2                              = 21 =

                    ⢨ 権 SMALL  LARGE      13.6
     Ŀ
                         ⢨                        
     Ĵ
      PUSH[SMALL/LARGE] ᥣ_ॣ   롨ࠥ,  ଠ ᥣ⭮-
                                    ॣ  (16-  32-ࠧ-
                                   ) ᯮ    樨
                                   PUSH.                           
                                                                   
      POP[SMALL/LARGE] ᥣ_ॣ    롨ࠥ,  ଠ ᥣ⭮-
                                    ॣ  (16-  32-ࠧ-
                                   ) ᯮ    樨
                                   POP.                            
                                                                   
      FSAVE[SMALL/LARGE] 㪠_  롨ࠥ,  ଠ  ﭨ
                                    饩   窮   (16-  
                                   32-ࠧ來) ࠭.      
                                                                   
      FRSTOR[SMALL/LARGE] 㪠_ 롨ࠥ,  ଠ  ﭨ
                                    饩   窮   (16-  
                                   32-ࠧ來) ⠭.
                                                                   
      FSTENV[SMALL/LARGE] 㪠_ 롨ࠥ,  ଠ  ﭨ
                                    饩   窮   (16-  
                                   32-ࠧ來) 뢠.     
                                                                   
      FLDENV[SMALL/LARGE] 㪠_ 롨ࠥ,  ଠ  ﭨ
                                    饩   窮   (16-  
                                   32-ࠧ來) 㦠.      
                                                                   
      LGDT[SMALL/LARGE] 㪠_   롨ࠥ,  ଠ 쭮
                                   ⠡ ਯ஢ (16-  32
                                   -ࠧ來) 㦠.        
                                                                   
      SGDT[SMALL/LARGE] 㪠_   롨ࠥ,  ଠ 쭮
                                   ⠡ ਯ஢ (16-  32
                                   -ࠧ來) ࠭.        
                                                                   
      LIDT[SMALL/LARGE] 㪠_   롨ࠥ,    ଠ  ⠡
                                   ਯ஢ 뢠 (16- 
                                   32-ࠧ來) 㦠.      
                                                                   
      SIDT[SMALL/LARGE] 㪠_   롨ࠥ,    ଠ  ⠡
                                   ਯ஢ 뢠 (16- 
                                   32-ࠧ來) ࠭.      
                                                                   
      JMP[SMALL/LARGE] 㪠_     ᮢ    ࠧ஬  
                                    ᫮  (DWORD)  롨ࠥ
                                    16-⮢  室  JMP
                                   ⨯  FAR  32-⮢ 室
                                   JMP ⨯ NEAR.                  
                                                                   
       CALL[SMALL/LARGE] 㪠_   ᮢ    ࠧ஬  

     ࡮ ᥬ 3.0/tasm/#2-2                              = 22 =

                                    ᫮  (DWORD)  롨ࠥ
                                    16-⮢     樥
                                   CALL  ⨯ FAR  32-⮢ -
                                   樥 CALL ⨯ NEAR.        
     

                    맮 楤  ࠬ ⥪
     

          ࡮ ᥬ ন  ७    樨
     CALL,      ।⢥ 뢠 楤,
     ᯮ騥 䥩 ᮣ襭 몮 ᮪ ஢.

          㬥 楤ࠬ,  ᯮ騬 䥩  ᮣ襭
     몮 ᮪ ஢,  । १ ⥪   ⥪. -
     । 맮 楤 뢠 ணࠬ    -
     㬥  ⥪.

          ᯮ㥬 楤ன  䥩  ᮣ襭 ।
     冷,  ஬ 㬥    ⥪.  -
      ᨪ,  ࠭  ᪠ 㬥   ⥪  ⮬
     浪,  ஬  㪠뢠.  몮   ++ 㬥
       ⥪  ⭮ 浪.

          ᯮ㥬 楤ன  䥩  ᮣ襭 ।
     ⠪,  㤠 㬥  ⥪ ᫥  맮  楤
     ᠬ 楤  뢠 ணࠬ.  몠   ++ ॡ,
     ⮡ ⥪ 頫 뢠 ணࠬ.     㣨  몠
     楤   ᠬ 㤠 㬥  ⥪ । ⮬
     ࠢ.

          ࡮ ᥬ   ७  樨  CALL  ᠬ
     믮    㭪樨  ᥭ 㬥⮢  ⥪  㦭
     浪  ⪮ ⥪.  맮 楤    ࠬࠬ  
     ᫥騩 ᨭ⠪:

          CALL ࠦ [] [,ᯨ᮪_㬥⮢]

      "ࠦ"  楫 樨 CALL, ""  -
     㥬  맮 몮 ᮣ襭.  ᫨      
     , ࡮  ᥬ  ᯮ  㬮砭 ,   
     ४⨢ MODEL.

                ਬ砭:  ४⨢ MODEL  ஡  ᪠-
           뢠   7.

          㬥, ᫨  , 㪠뢠 ᫥ 䨪-
      몠.  ⠪  㬥  ᯨ᪥ ᮢ   ᨭ-
     ⠪ᮬ,   ᯮ   ७  PUSH 
     POP.   ࠧ  㬥 묨, ਬ:

          CALL test PASCAL,ax,es OFFSET buffer,blen

     ࡮ ᥬ 3.0/tasm/#2-2                              = 23 =

          ᪮   ਬ 㪠 ᪠,  ࡮  ᥬ
     㤥  㬥  ⥪  ⮬ 浪,  ஬  㪠-
     .   ਬ ⥭ ᫥騬 :

          PUSH ax
          PUSH es OFFSET buffer
          PUSH word PTR blen
          CALL test

          맮 楤    ॡ,  ⮡  㬥 ᨫ 
     ⥪  ⭮ 浪.  ࡮ ᥬ   ⮬-
     , ⮬ 맮 :

          CALL test C,ax,es OFFSET buffer, word PTR blen

       १ ᫥騩 :

          PUSH word PTR blen
          PUSH es OFFSET buffer
          PUSH ax
          CALL test
          SUB sp,8

           맮 楤  㬥⠬ 㬥  ᯨ᪥ ᫥-
      ᥣ 㪠뢠   ⮬ 浪,  ஬  ᫥  -
      楤.    室  ࡮ ᥬ  
     冷  .

          㦭  뢠 ࠧ 㬥 묨,  
     㬥⮢ -  ஡.    ᨬ  ᮣ襭 㪠
     몠 ࡮ ᥬ   㬥  ⥪   ⭮
     浪,  冷 ⮢ 㬥   .

          ᫨    맮   ᯮ   䥩   ᮣ襭
     NOLANGUAGE, ࡮ ᥬ  稨  㬥 ᮮ頥
      訡.  㬥  楤 NOLANGUAGE   
      ४⨢ ARG,  맮 ⠪ 楤 ॡ 
     ᥭ 㬥⮢  ⥪.

                 뢠 楤, ᮤঠ騥 RETURNS
     

          楤, ।騥    ᢮ 㬥⮢  -
      祢 ᫮ RETURNS  ॡ  ⤥쭮  ᬮ७.
       㬥  ᯮ     祭  뢠
     ணࠬ.   ࠧ,  뢠 ணࠬ ᥣ 
       ⥪.  ⮡ ᯮᮡ⢮ ।  㬥⮢, -
        ᠭ 楤 ᫥ ४⨢ RETURNS,   ࡮ -
     ᥬ   ᯥ樠 ७ 樨 CALL.  । -
     樥 CALL    ࠧ   㬥    ⥪
     (PUSH),  ⮬    ⥪ (POP).

     ࡮ ᥬ 3.0/tasm/#2-2                              = 24 =

           맮 楤 ⮤  ꥪ⮢: CALL...METHOD
     
           CALL ७ ⠪ ࠧ,  ⮡ ন
     ⮤ ꥪ⮢. 맮 ⮤ ꥪ  ஢  -
     ।⢥ 맮  (  ᪨ ⮤),   ᢥ
     맮 ( 㠫 ⮤).

          ᪮   ᯮ짮 ᢥ 맮,  믮-
     騥 맮 樨    ᮤন  ॣ-
     ஢.  ⮬ 砥,  ᫨  ᯮ 맮 㠫쭮 -
     , ࡮ ᥬ    ᮮ⢥騥 ॣ-
     .
          ਢ ᨭ⠪ ७ CALL...METHOD:
          CALL 㪠⥫_ METHOD [_ꥪ:]_⮤
             [USES [ᥣ_ॣ:]ॣ_ᬥ饭] [__㬥]

      "㪠⥫_"   뢠  ꥪ. 
     ० MASM   ।  ꥪ, 易 
     ஬.  ⮬ 砥 ࡮ ᥬ  ᯮ짮
      "_ꥪ",  祬     -
      ꥪ.

           "_⮤" ᮤন  ⮤,    -
       ⭮  ꥪ.

                ਬ砭:  ⮬,   㠫  -
           ᪨ ⮤, ஡ ᪠뢠   8.

          ᫨ ⮤  㠫, ॡ ᢥ 맮,
      CALL...METHOD 믮 ᢥ 맮 १ ॣ
     ES:BX (ES:EBX   USE32  80386).  ᫨  
     ᯮ짮 㣨 ॣ,   ८।    
      USES.  "ᥣ_ॣ"  易⥫ ᯮ-
      ᥣ ॣ,  "ॣ_ᬥ饭" -  ॣ ᬥ-
     , ᯮ㥬  맮.

           ꥪ⮢, ᠭ   ⠡ NEAR, CALL...METHOD
     㦠 ⮫쪮 ॣ ᬥ饭.  ࡮ ᥬ ।,
      ᥣ ॣ ᥣ ⠭  ४⭮ 祭.

                 ਬ砭: 襩  ࠪ⨪ ணࠬ஢ -
             ᮮ⢥騩  맮  ⮤    ᢥ
            맮,    ,  뢠 ⮤ -
             ᪨.   䨪樨 ꥪ⮢ ⮤  -
              ᪨  㠫.

           "__㬥"  樨  CALL...METHOD  ᮤন
     易⥫ ᯥ䨪樨 몠  㬥⮢,  
      ଥ ᠭ  ।饬 ࠧ.

          맮 楤  ⮤    ++   ᪠ ॡ 筮,

     ࡮ ᥬ 3.0/tasm/#2-2                              = 25 =

     ⮡  ꥪ ।  ⢥ 㬥  ⥪.
     ஡  ⮬ ᪠뢠   18   19.

    筠 ४  ⮤ ꥪ⮢:  JMP...METHOD
     

          ࡮ ᥬ ᯥ稢  JMP...METHOD,  ᮮ-
      樨  CALL...METHOD.     ᫥騩 ᨭ-
     ⠪:

          JMP 㪠⥫_ METHOD [_ꥪ:]_⮤
             [USES [ᥣ_ॣ:]ॣ_ᬥ饭]

           JMP...METHOD      筠  樨
     CALL...METHOD,  ᪫祭 ⮣,  :

          -   樨 CALL  JMP;

          -   襭 楤  ⪨ ⥪  -
            । 樥 樨 JMP.

           JMP...METHOD      䥪⨢  
     筮 ४ᨨ (tail recursion).  ।祭  -
      饩  樨,     CALL...METHOD    
     ⭮ ⮤  ᫥饩 樥 RET.

       ⥫ 樨  ꥪ⭮ ணࠬ஢
     

           ᮧ    ꥪ ॡ 樠஢
     㪠⥫ ⠡  㠫 ⮤ ꥪ (᫨  ),
     ⮡  㪠뢠  ४ ⠡ 㠫 ⮤.  -
      TBLINIT   ᤥ  ⮬᪨.  -
       ᫥騩 ᨭ⠪:

          TBLINIT 㪠⥫__ꥪ

           "㪠⥫___ꥪ"  ।⠢ ᮡ -
      ꥪ, 㪠⥫ ⠡ 㠫 ⮤ ண 㦭
     樠஢.  TBLINIT ।,   
     ꥪ   ⨯ ⥪饣 ꥪ (㣨  ᫮,  -
     ।⢥ ।饥  । ꥪ । -
      ⨯,  樠 TBLINIT). ਬ:

          TBLINIT DS:ST

      樠 㪠⥫ ⠡ 㠫 ⮤ ꥪ DS:
     SI (᫨  ).




     ࡮ ᥬ 3.0/tasm/#2-2                              = 26 =

                      14. ᯮ짮 ப
     

          ப      䨪  
     ⥪⮢  ப    ,     ᯮ짮-
       ணࠬ.   ப 室  ࠬ ⮩
     ⠭.   ࡮ ᥬ  ம樨, ᯥ-
     騥    । ப.   ⠭ 
      ᯮ짮  ப  ᪮쪨 ப  -
     㬥⠬  ॢ頥 ।⢠ ࡮ ᥬ    祭
      㬥.     뢠,   ᯮ-
       ணࠬ ⥪⮢ ப  ப, -
     騥  ᪮쪨 ப.

                       ⮢ ப
     

          ⮢ ப -   䨪,  ।⠢騩
     ப ⥪⮢  ᨬ.    ࡮  ᥬ 㦨
     䨪  ࠦ (  㣨 ),  ⠢
       ⥪⮢ ᨬ. ਬ, ᫨ DoneMsg -  ⥪-
     ⮢ ப,   祭 "Returning to DOS",  ᫥-
     騩 :

          GoodBy    DB DoneMsg

       १:

          GoodBy    DB 'Returning to DOS'

        । ⥪⮢ ப   ४⨢ EQU
     

           ।  ⥪⮢ ப   ᯮ-
      ४⨢ EQU.ਢ ᨭ⠪ । ⥪⮢ -
     ப:

             EQU  ⥪⮢_ப

      "⥪⮢_ப" 뢠   ⥪⮢  ப  
      "".   뤥 ⥪    ⥪⮢
     ப  㣫 ᪮ (<>), ਬ:

          DoneMsg    DB <'Returning to DOS'>

          ᫨  ० MASM   ᪮,    ࡮  ᥬ
     㤥 ।,     ᢥ ⥪⮢ ப  ࠦ.
     ᫨  ᫨ ,  ࡮ ᥬ 㤥 ஢
     ⥪⮢  ப    ⥪⮢  ப  (⮡ ࠭
     ᮢ⨬ c MASM).  ⮡ ᯥ  ࠢ쭮  ।
     ⥪⮢ ப,  㦭  ᥣ      㣫 ᪮.
     ᬮਬ ᫥騥 訡,     ,  ᫨  
     ⮣  :

     ࡮ ᥬ 3.0/tasm/#2-2                              = 27 =


          Earth   EQU dirt        ; Earth = "dirt"
          Planet  EQU Earth       ; Planet = "dirt" (୮!)
          Planet  EQU <Earth>     ; Planet = "Earth" (୮!)

           ० Ideal  EQU ᥣ । ⥪⮢ -
     ப.

          ⮢ ப   ८।塞묨.  -
      ८।  ⥪⮢  ப  ⮬  㫥 㣮
     ⥪⮢ ப.

           ४⨢ ப ࠡ  ⥪⮢묨 ப
     

          ࡮ ᥬ ᯥ稢 ४⨢,    ࠡ-
       ⥪⮢묨 ப.   ४⨢ 㯭    ०
     Ideal     ᨩ  M510,  M520  T300 (  ४⨢
     VERSION).

          ப 㬥      ४⨢    
     ᫥騬:

          - ⥪⮢ ப, 祭  ᪮, ਬ, <abc>;

          -  ࠭ । ⥪⮢ ப;

          - ࠦ  ।騬 ᨬ %,  祭 ண
            ⭮ ᫮ ।⠢  ப   ⥪饣
            ᭮.



     ࡮ ᥬ 3.0/tasm/#2-2                              = 28 =

                            ४⨢ CATSTR
     

          ४⨢ CATSTR ।  ⥪⮢ ப -
     ⥬ ⥭樨 ப.   ᫥騩 ᨭ⠪:

           CATSTR ப[,ப]...

          ४⨢ CATSTR 믮 ⥭ ᫥-ࠢ. ࡮
     ᥬ ᮧ  ⥪⮢ ப   "".

                            ४⨢ SUBSTR
     

          ४⨢ SUBSTR  ।    ⥪⮢ ப,
       ப ப.    ᫥騩  ᨭ⠪-
     :

           SUBSTR ப,ࠦ_樨[,ࠦ_ࠧ]

           ⥪⮢ ப   "" ⮨  
     ப ,  稭饩  ᨬ  樨 "ࠦ_樨"  
      "ࠦ_".  ᫨   㪠뢠 "ࠦ_ࠧ-
     ",  ⥪⮢ ப ᮤন ⮪ ப,  -
       ᨬ  "ࠦ_樨". ࡮ ᥬ ᬠਢ-
       ᨬ ப   1.

                             ४⨢ INSTR
     

          ४⨢ INSTR  頥   ப  -
     .   ᫥騩 ᨭ⠪:

           INSTR [ࠦ_砫,]ப_1,ப_2

          ࡮ ᥬ ᢠ "" ᫮ 祭,  -
     ஥ ᮮ⢥  ࢮ  樨 ࢮ 宦 "ப_2" 
     "ப_1".  ᨬ "ப_1"   1. ᫨ "-
     _2"   "ப_1"  ᮤন,   ࡮ ᥬ 頥
     祭 0.  ᫨  㪠 "ࠦ_砫",   稭-
       ᨬ,  ⨬ ࠦ.  ᨬ ப
     室  樨 1.

                            ४⨢ SIZESTR
     

          ४⨢ SIZESTR  頥    ⥪⮢ ப
     (᫮ ᨬ  ப).   ᨭ⠪:

           SIZESTR ப

      "" ⠭  ᫮ 祭,  ࠢ  㪠-
      ப. 㫥 ப <>   0.

     ࡮ ᥬ 3.0/tasm/#2-2                              = 29 =


                  ਬ ப ࠡ  ⥪⮬
     

          騥 ਬ 뢠,  ࠡ  樨:

          VERSION T300
          ABC     EQU       <abc>                 ; ABC = "abc"
          ABC2    EQU       ABC                   ; ABC2 = "ABC"
          ABC     EQU       <det>                 ; ABC = "det"
                                                  ; (८।)
          ABC3    CATSTR    ABC2,<,>,ABC,<,>,ABC2 ;ABC3 = "ABC,DEF,
                                                  ; ABC"
          ABCLEN  SIZESTR   ABC                   ; ABCLEN = 3
          ABC3LEN SIZESTR   ABC3                  ; ABC3LEN = 11
          COMMA1  INSTR     ABC3,<,>              ; COMMA1 = 4
          COMMA2  INSTR     COMMA1+1,ABC3,<,>     ; COMMA2 = 8
          ABC4    SUBSTR    ABC3,5                ; ABC4 = "def,ABC"
          ABC5    SUBSTR    ABC3,5,3              ; ABC5 = "def"
          ABC6    EQU       3+2+1                 ; ABC6 = 6
                                                  ; (᫮
                                                  ; ᢠ)
          ABC7    EQU       %3+2+1                ; ABC7 = "6"
                                                  ; (⥪⮢
                                                  ; ப)
          ABC8    EQU       %COMMA1               ; ABC8 = "4"

               ப, 騥  ᪮쪨 ப
     

          ப, ﭨ  ᪮쪨 ப,    
     ।   ⥫ 樨, ४⨢  㣨 ப-
     ,     室    맮  ப-
     .     㪠 㬥 ப,   ࡮
     ᥬ 㤥 ⠢  ⥫ ப    祭
      㫥.

           ᪮쪮  ⨯  ப,    -
     쪨 ப.     ⠢      ப
     (  㣨),    㬥⮬ ப. -
        । ᫮  ࠧ  ⥫  ப.
     ,      ।   ,  -
      㤥  ࠧ 뢠.    ᨨ  饥 -
     । ⥫ ப.

             ப, 饩  ᪮쪨 ப
     

          ᨬ  ᮤন ⥫ ப,  ।⢮ -
     ⪨ ப  ࡮  ᥬ  ப,
       ᪮쪨 ப,   ᪮쪮 ப ⥪.
     ࡮ ᥬ    䨪  ⥫ -
     ப ⥪⮬,   맮 ப.  ।⢮

     ࡮ ᥬ 3.0/tasm/#2-2                              = 30 =

     뢠 ⠭ 㬥⮢.  䨪  ⥫ -
     ,      ,  뢠  ଠ묨
     (䨪⨢묨) 㬥⠬.  ।, ਬ,  䨪-
      foo -  ଠ 㬥  ᫥饬 ⥫ ப:

          PUSH foo
          MOV foo,1

          ᫨   맮    ப    ᢠ foo
     ⥪⮢ ப AX,  䠪᪨ 砥   ⥪ -
     :

          PUSH foo
          MOV AX,1

          ࠢ,  ࡮ ᥬ ᯮ   ᯮ-
      ଠ 㬥⮢,  筮 ᫮. ᬮਬ, -
     , ᫥騥 ப ⥫ ப,   ଠ 㬥
     foo  ᯮ:

          symfoo:
               DB 'It is foo time'

           饬 砥 ࡮ ᥬ   㤥  ᯮ  -
      㬥 ( ᯥ樠쭮 㪠)  ᫥ -
     :

          -     㣮 䨪;

          -   室  祪 ('  ");

          -   ०  Ideal,    㪠뢠 ᫥  
             祪.

                 ᯮ짮  ப ᨬ &
     

           &   ⥫ ப  ᯥ樠쭮 祭.  
     饬 砥  & ⤥  ଠ쭮 㬥  㦠饣
     ⥪,  祬 ࡮ ᥬ  ᯮ  
     ⠭. ᫨, ਬ,  ᫥饥 ⥫ ப:

          sym&foo:
               DB 'It is &foo time'

      ᫨    맮  ப ᢮ foo ⥪⮢
     ப party,  䠪᪨ 砥   ⥪ 㤥 ᫥-
     饥:

          symparty:
               DB 'It is party time'

           ⢥ 㣮 ਬ  ਢ ᫥騩:

     ࡮ ᥬ 3.0/tasm/#2-2                              = 31 =


          foo&sym:
               DB 'We are in O&foo&o'

          ᫨   맮  ப ᢮ foo ⥪-
      ப  hi,    䠪᪨  砥   ⥪ 㤥
     ᫥饥:

          hisym:
               DB 'We are in Ohio'

          ਢ ࠢ  ᨬ &:

          -  祭  窨 ப ᨬ &  ᯮ 
            ࠧ⥫;

          -  祭  窨 ப  ᫥ , -
            ஥  室  祭  窨 ப  ०
            Ideal, ᨬ &  ।⢮ ଠ쭮 㬥-
             (⮡  㬥  ᯮ);

          -  ७ ப ࡮ ᥬ  㤠  
            ᨬ &  㯯 ⠪ ᨬ.

          ᫥ 㭪     ப
     ம।, ॡ騥 ᨬ &. ࡮ ᥬ 㤥 㤠-
      ⮫쪮  ᨬ &  㯯.

               祭 ਥ  ⥫ ப
     

           ᮡ ᫮ ப  ⥫쭮 
      ⥫ ப ਨ,     
      ७.   ⠪ 㬥蠥 ꥬ 室  ࡮  -
     ᥬ  ࠡ⪨ ப .   ⮣ ᯮ
     ਩  ।饩   窮  ⮩  (  砫
     ப). ਬ, ᫥饥 ⥫ ப:

          ;;  ப  ਥ
          DB 'ப  ਥ'

     ਢ  祭   맮 ⮫쪮 ᫥饣 ⥪:

          DB 'ப  ਥ'

                ਬ砭: ਨ  筮 窮    ⮩
            맮  ப  ᥣ   -
           .

                      ଠ 㬥
     

           砫  ⥫  ப   ᥣ   

     ࡮ ᥬ 3.0/tasm/#2-2                              = 32 =

       ४⨢ LOCAL.  ४⨢ LOCAL 뢠  ᯥ樠
     ଠ 㬥,     ७ ப
     㤥 ᢠ 㭨쭮 ᨬ쭮 .

          ⠪ ४⨢ LOCAL  ⥫ ப 룫廊  ᫥-
     騬 ࠧ:

          LOCAL ଠ_㬥_1 [,ଠ_㬥_2]...

          ᫨  "ଠ_㬥", 㪠  ४⨢ LOCAL,
       ᮤন 䨪 쭮 䨪,   ᢠ
      㭨쭮  䨪 㤥      ??xxxx,  
     xxxx  ।⠢  ⭠筮  ᫮.   ⨢ 砥
     㭨쭮  ᨬ쭮    㤥        <_-
     䨪>xxxx.

                ਬ砭: ஡  ࠧ襭  -
           䨪஢   쭮 䨪  㧭  -
            11.

             ᯮ짮 ଠ 㬥 LOCAL  -
       ⥫ ப ⮪, ਬ:

          LOCAL @agn, @zero
             XOR dx,dx
             MOV cx,exp
             MOV ax,1
             JCXZ @zero
             MOV bx,factor
          @agn: MUL bx
             LOOP @agn
          @zero:



     ࡮ ᥬ 3.0/tasm/#2-2                              = 33 =

                             ४⨢ EXITM
     

          ४⨢ EXITM    ᯮ짮  ⥫ ப 
     ਭ㤨⥫쭮 襭 ᥬ஢ 砥 ⥫  -
     ப.   ᫥騩 ᨭ⠪:

          EXITM

           ࡮  ᥬ  㦨  ४⨢ EXITM  ⥫
     ப,  祭  室  , ᥬ-
      ७  ⥫  ப    ४頥.
      ⮣ ࡮ ᥬ 㤥 த ᥬ஢ -
      ᫥  ப.

           襭 ப  । ᫮  -
      ᯮ짮  EXITM  ४⨢ ᫮ ᥬ-
     ஢.

                ਬ砭: ४⨢  ᫮  ᥬ஢ -
           ஡ ᬠਢ   15.

              ४⨢ GOTO  ந䨪 室
     

          ᯮ짮 ४⨢ GOTO  ந䨪஢ 室
       ࠢ ᫥⥫쭮 ७ ப -
     ப.     楫 室     ⥫
     ப.    ப ப   ᫥-
     騩 ᨭ⠪:

          :䨪_室

           ७ ப  ந䨪 室
     뢠.

          ४⨢ GOTO ᮮ頥 ࡮ ᥬ,   㦭 ३
          室  ,     -  "䨪-
     _室".     GOTO   ᫮
     ᥬ஢. ਬ:

          IF foo
             GOTO tag1
          ENDIF
             DISPLAY "foo  祭 false!"
          :tag
                   ;  ப...
                   ; ࠡ⠥ , ᨬ  ⮣,
                   ; ࠢ foo false  true

                ਬ砭:     ᮧ    -
           짮  ४⨢ GOTO ᪮ 横. ᪮
           横  ਢ  ⮬,   ࡮ ᥬ ௠

     ࡮ ᥬ 3.0/tasm/#2-2                              = 34 =

           㯭    ४ ࠡ.

          ஡  ४⨢ ᫮ ᥬ஢ ᪠뢠-
        15.

            騥 ப, 騥  ᪮쪨 ப
     

          ࡮ ᥬ  뢠  ⥫ ப,  饩 
     ᪮쪨 ப ( ४⨢, 樨  㣨 ப-
     )  ᨬ  ப.   ᯮ짮 
     ப  ⢥  ४⨢  ࡮  ᥬ  砥  
     ணࠬ ⥫ ப ().   ࠧ  
     ᯮ짮 ப,    ᪮쪨  ப,  -
     쪮 ࠧ.

          ਢ ᨭ⠪  饩  ப   ᪮쪨 ப
     ० Ideal:

          MACRO  ᯨ᮪_ࠬ஢
           ⥫_ப
          ENDM

           ० MASM 饥 । ப    ᪮쪨
     ப  ᫥騩 ᨭ⠪:

           MACRO ᯨ᮪_ࠬ஢
           ⥫_ப
          ENDM

      ""  -   ।塞  ப  ᪮쪨
     ப. "_ப" ᮤন ,  ⠢
     ⥫ ७.  ப     -
     ⨬  ࡮ ᥬ (   ᫮).  ப-
      蠥 祢 ᫮ ENDM.

           ᫥饬   ਬ  ।  ப    
     PUSHALL,   맮 砥   ணࠬ ⥫ -
     , 饥   権 PUSH:

          PUSHALL MACRO
             PUSH AX BX CX DX
             PUSH DS SI
             PUSH ES DI
          ENDM

          "᮪_ࠬ஢" -    ᯨ᮪ ଠ 㬥⮢ (
     䨪஢) ப.   ᫥騩 ᨭ⠪:

          [ଠ_㬥  [,ଠ_㬥]...]

           ப   ᯮ짮  ᫮ ଠ
     㬥⮢ (᫨   㬥   ப,   த-

     ࡮ ᥬ 3.0/tasm/#2-2                              = 35 =

       㣮 ப  ᯮ짮 ᨬ /). ਬ:

          ADDUP MACRO dest,\       ; dest -   ଠ
                                   ; 㬥,  s1,s2 -
                                   ;  ன  ⨩
                                   ; 㬥 ப
             MOV dest,s1
             ADD dest,s2
          ENDM

           ଠ 㬥  ᫥騩 ᨭ⠪:

          _ଠ쭮_㬥[:⨯_㬥]

      "_㬥" -  ᨬ쭮 ,  ᯮ㥬  -
     ⠭ ( ) 䠪᪮ ࠬ,  । -
     ப   맮. 易⥫ "⨯_㬥"  -
     - ଠ   䠪᪮  ࠬ, ਭ
      맮 ப. ন ᫥騥 ⨯:



     ࡮ ᥬ 3.0/tasm/#2-2                              = 36 =

                       ଠ 㬥⮢           14.1
     Ŀ
                         祭                               
     Ĵ
       REQ                  㬥      㫥묨  
                              ஡.                  
                                                                   
       =<⥪⮢_ப>  祭  窨 ⥪⮢ ப 
                             ᯮ㥬  㬮砭  - 
                            祭 㬥 ( 䠪᪨ - 
                            㬥  㫥  ⮨  
                            ஡).                             
                                                                   
       VARARG               ᪨ 㬥  ⮨    - 
                            ⠫쭮  ஢맮, - 
                            㥬    ᯨ᮪  㬥⮢.   
                            ᯥ祭 ⮩ 樨 ᯮ- 
                             㣫 ᪮, .        
                                                                   
       REST                 ᪨ 㬥  ⮨    - 
                            ⠫쭮  ஢맮, - 
                            㥬   ।⢥ ⥪.   
     

         맮 饩 ப, 饩  ᪮쪨 ப
     

          ⮡ 맢  ப,  ᯮ  襩 ண-
     ࠬ   ⢥  ४⨢    ப.  ࡮ ᥬ
     ⠢   ⮩  窥  ( ⠭  ଠ
     㬥⮢) ⥫ ப.    맮  饩  ப,
     饩  ᪮쪨 ப, ᯮ ᫥騩 ᨭ⠪:

          _ப [㬥 [[,]㬥]...]

      "_ப" -  䨪 ப.  ᫨ 
     뢠 ப  㬥⠬,  ᯨ᮪ 㬥⮢ 㪠-
       ᫥    ப.      ᫮
     㬥⮢,     㬥   ப. 㬥-
      㦭 ⤥   㣠 묨  ஡.   -
     ७ ப ࡮ ᥬ     ଠ
     㬥  ம।  । 㬥⮬, ன
     㬥 -  㬥⮬  ..

           "㬥"  ।⠢ ⥪⮢ ப.   
       ⥪⮢ ப ᫥騬 ᯮᮡ:

          -  뢭 㯯 ᨬ,   ᮤঠ  ஡,
              稩;

          -   㯯  ᨬ,  뤥 㣫묨 ᪮ (<>),
              ᮤঠ ஡,   ;


     ࡮ ᥬ 3.0/tasm/#2-2                              = 37 =

          -   ᨬ  ।騬  !,   -
            ⭮ 祭 ᨬ  㣫 ᪮;

          -  ࠦ  ।騬 ᨬ %,  ஥ ।-
            ⠢ ⥪⮢ 祭 ࠦ,  ᮮ⢥饥 -
            饬 ࠭ ᭮.

                  ࠫ ப  㣫 ᪮
     

          ᯮ 㣫 ᪮  뤥 ࠫ쭮 ப,
     ᮤঠ饩 ᨬ-ࠧ⥫.    ᯮ짮  ᫥騩
     ᨭ⠪:

          <⥪>

      "⥪"       ப ࠬ,
      ᫨  ᮤন , ஡  ᨬ ⠡樨, -
      筮  ࠧ  ࠬ.  ᯮ  ,
        । 㬥,  ᮤঠ騩   ⠪ ᨬ-
     .

            ⠪ ᯮ짮  ,  ⮡ ࡮  -
     ᥬ ஢ ᨬ ࠫ쭮,  ਤ  ᯥ-
     쭮 祭. ਬ, ᫨   ।  ⢥ -
     ࠬ ஢맮    ⮩ (;),   ⮡ ।
        ,       㣫-
      ᪮ (<;>).   ८ࠧ 祭  ᪮ ப
      ⥪⮢ 㬥 ࡮ ᥬ 㡨ࠥ ⮫쪮   ஢
     㣫 ᪮.     뢠 ப,  ॡ
      㣫 ᪮,  㣮 ப.

                                 !
     

           !    뢠 ப  㬥⠬,
      ᮤঠ ᯥ樠 ᨬ.   ⮣ ᨬ -
     । 㣨 ᨬ ⭮ 祭 ⮣ ண ᨬ
      㣫 ᪮.  ਬ, !;  ⠪,  <;>. -
      騥 砨 ᯮ짮  ᨬ   ᫥-
     饩 ⠡:

                   ᯮ짮 ᯥ樠쭮 ᨬ !    14.2
     Ŀ
         ப           祭  १ ᨬ           
     Ĵ
         !>                       >                                
                                                                   
         !<                       <                                
                                                                   
         !!                       !                                
     


     ࡮ ᥬ 3.0/tasm/#2-2                              = 38 =

                       ᫥ ࠦ %
     

           % 㪠뢠 ࡮ ᥬ,  ࠦ 㦭 -
     ᫨. ᥬ ८ࠧ १ ࠦ   ASCII 
     ⥪騬 ᭮.  ᯮ  ᨬ,    ⢥
     ஠㬥   । ப,।⠢ ᫥-
      १,   ᠬ ࠦ.  ⮬ ᯮ ᫥-
     騩 ᨭ⠪:

          %ࠦ

      "ࠦ"       ࠦ (ᯮ騬 
     ⨬ ࠭  樨),   ⥪⮢ ப-
     . ᫨    ࠦ,   ᮧ ⥪⮬ 㤥 १
     ࠦ  ⥪騬 ᭮.  ᫨ "ࠦ" -  ⥪⮢
     ப,   ᮧ ⮬ 㤥 ⥪,   ।-
     ⠢  ⥪⮢   ப.  ਬ,  ᫥騩  ࠣ
     ணࠬ:

          DEFSYM               MACRO     NUM
          TMP_&NUM:
          ENDNUM

          TNAME            EQU       <JUNK> ; ।
                                            ; ⥪⮢ ப
          DEFSYM  %5+4
          DEFSYM  %TNAME

     ਢ  ᫥饬 ७:

          TMP_9:
          TMP_JUNK:

    ८। 饩 ப, 饩  ᪮쪨 ப
     

          騥 ப, 騥  ᪮쪨 ப,  
     ८।.   ।  ⮬᪨  ஥
     ।.  ।騥 ,   ப 㦥 뫠
     맢,  .    맮 ப,  ᫥
      ८।, ᯮ  ।.

               饩 ப: ४⨢ PURGE
     

           㤠  ப     ᯮ짮 ४⨢
     PURGE. ४⨢ PURGE  ᫥騩 ᨭ⠪:

          PURGE _ப, [_ப]...

          ४⨢ PURGE 㤠 ।  ப, 饩
      ᪮쪨 ப,    "_ப" ᫥ ᯮ짮-

     ࡮ ᥬ 3.0/tasm/#2-2                              = 39 =

      ४⨢ PURGE ࡮ ᥬ      
     䨪 PURGE  ப, ਬ:

          ADD MACRO a1,a2
             SUB a1,a2
          ENDM
             ADD ax,bx     ;  맮  SUB ax,bx
          PURGE ADD
             ADD ax,bx     ; ⥯   ப, ⮬
                           ;   ADD ax,bx

             ࠧ  㤠 ⮩ ४⨢ ᪮쪮 ப-
     , ࠧ   묨. ⬥⨬ ,  䨪-
       㤠  ப    ८। ⮫쪮 㣮
     ப.

             ।   ४ᨢ ப
     

            ⥫ ப    ᥡ -
     , 뢠騥  ।騥 㣨 ப. 쬥 ᫥-
     騩 ਬ:

          MCREATE         MACRO  opname, op1,op2,op3,op4,op5,op6,op7
             IFNB opname
                DO & opname MACRO op,count
                   IF count LE 4
                     REPT count
                       opname op,1
                     ENDM
                   ELSE
                     MOVE CL,count
                     opname op,CL
                  ENDIF
               EMDM                               ;  DOopname
             MCREATE op1,op2,op3,op4,op5,op6,op7  ; ४!
           ENDIF                      ;  if
          ENDM                        ;  ப MCREATE

          ᫥ 맮:

          MCREATE ror,rol,rcl,rcr,shl,sal,sar

      ᮧ  ⥫  ப DOror,  DOrol  ..,
       ᯮ짮 ᫥騬 ࠧ:

          DOshr         ax,5
          DOrcr         bx,3

          ᨢ ப   뢠  ᯨ᪮ ࠬ-
     ஢    ⠪ ࠧ,     ࠡ   -
      ᫮  ࠬ஢  (  0  ᨬ쭮 ᫠ ࠬ-
     ஢).  ⮣ ப  ᯮ짮   ࠬ

     ࡮ ᥬ 3.0/tasm/#2-2                              = 40 =

      믮   ७,   ⥬ 뢠 ᠬ ᥡ 
     ⠢訬 ࠬࠬ.    ४ᨨ  ⠥    
     ࠬ .   殢, 㤥 ᫥ ४  -
     ࠬ஢.

            뢠 ப ४ᨢ, ᥣ ॡ
     - ஢  ४ᨨ. 筮  稨 ।
     ࠬ    ⥫ ப      ᫮
      IFNB. ਢ ⮩ ਬ ४ᨢ ப:

          PUSH MACRO r1,r2,r3,r4,r5,r6,r7,r8
          IFNB r1
              PUSH r1
              PUSH r2,r3,r4,r5,r6,r7,r8
          ENDIF
          ENDM

                     稪 ७ ப
     

          ७ ⥫ ப   ᫮ ࠧ  -
      ᯮ짮 ४⨢ ७ REPT.  ⮣ ᯮ
     ᫥騩 ᨭ⠪:

          REPT ࠦ
             ⥫_ப
          ENDM

      "ࠦ"  㪠뢠  ࡮  ᥬ,  ᪮쪮 ࠧ 㦭
      ⥫ ப,    ४⨢  REPT  
     ENDM.  ᫥ "ࠦ"   ⠭. 
       ᮤঠ  䨪஢  ०騬 뫪.
     ⮡ ⬥      ७,  ᯮ  ४⨢
     ENDM. ਬ, ᫥騩 :

          REPT 4
              SHL ax,1
          ENDM

       १ ᫥饥:

          SHL  ax,1
          SHL  ax,1
          SHL  ax,1
          SHL  ax,1



     ࡮ ᥬ 3.0/tasm/#2-2                              = 41 =

                             ४⨢ WHILE
     

           ७ ⥫ ப  ⮣ ,  -
       ࠦ   ਬ 祭 0 (false),    -
     짮 த४⨢ WHILE.   ᫥騩 ᨭ⠪:

          WHILE ࠦ
             ⥫_ப
          ENDM

          ।  樥 ⥫ ப ࡮ ᥬ -
      "ࠦ".         ᪮
     横,  ਢ  ⮬,   ࡮  ᥬ  ௠
     㯭   ४ ࠡ.  ਢ ਬ ᯮ짮-
      ४⨢ WHILE:

          WHILE  1
                         ;; 祣  
          ENDM

                      ப ७ ப
     

           ७  ⥫  ப       
     ᯨ᪥   ᨬ  ப   ᯮ짮 -
     ४⨢ ७ IRP  IRPC.     ४⨢ ॡ
          ଠ쭮 㬥.  ਢ ᨭ⠪
     ४⨢ IRP:

          IRP ଠ_㬥, ᯨ᮪_㬥⮢
             ⥫_ப
          ENDM

          ४⨢ IRPC  ᫥騩 ᨭ⠪:

          IRP ଠ_㬥, ப
             ⥫_ப
          ENDM

        "ଠ_㬥" -  㬥,  ᯮ-
       ⥫ ப.  ⥫ ப ⬥砥 ENDM.

           ᨭ⠪ ४⨢ IRP  "ᯨ᮪_㬥⮢"  ⮨  
     ᯨ᪠ 㬥⮢,  ࠧ 묨. 㬥⠬  
      ⥪ (䨪, ப, ᫠  ..). ଠ 
     㬥  ᯨ᪥ 筠 ⮩,  ᠭ   맮-
      饩 ப,  饩  ᪮쪨 ப. ᮪ -
     㬥⮢ ᥣ 㦭   㣫 ᪮ (<>).

           ᨭ⠪  ४⨢ IRPC 㬥 ⮨   -
     . ப  ᮤঠ ⮫쪮 ᨬ, ᪮쪮  .


     ࡮ ᥬ 3.0/tasm/#2-2                              = 42 =

            㬥  ᨬ  ப  ࡮  ᥬ
     㤥    ⥫ ப, ⠢  -
     쭮 㬥  㬥    ᨬ (   室).
     ਬ:

          IRP reg <ax,bx,cx,dx>
             PUSH reg
          ENDM

      ᫥饥:

          PUSH  ax
          PUSH  bx
          PUSH  cx
          PUSH  dx

      ४⨢ IRPC:

          IRPC LUCKY,1379
             DB LUCKY
          ENDM

      ᫥饥:

          DB   1
          DB   2
          DB   3
          DB   4

          ᯮ ४⨢  IRPC  ⭮,  ᪮ ࡮ -
     ᥬ 頥  ᨬ  ப    ७  "
     ", ⮬ ப ப ७:

          IRPC CHAR,HELLO
               DB CHAR
          ENDM

        DB 'H','E'','L','L','O',  DB H,E,L,L,O ( 
     㪢    䨪.

                    ।⢥ த४⨢ %
     

          ।⢥ த४⨢  %      ப
     ⥪ ⠪,   ᫨   뫮 ⥫ ப.  ਢ 
     ᨭ⠪:

          # ப_⥫_ப

      "ப_⥫_ப"  ।⠢  ⥫  ப,
     ᯮ㥬  ।⢥ ७, ਬ:

          SEGSIZE EQU <TINY>

     ࡮ ᥬ 3.0/tasm/#2-2                              = 43 =

          LANGUAGE EQU <WINDOWS PASCAL>

          % MODEL SEGSIZE,LANGUAGE   ;  MODEL TINY,WINDOWS PASCAL

            祭 ७ ப  䠩 ⨭
     

          ७ ப,   ᪮쪨 ப, -
        䠩 ⨭.    ࡮ ᥬ ।-
     ७ ᫥饩 ४⨢:

          - .LALL

          - .SALL

          - .XALL

          - %MACS

          - %NOMACS

       ࠢ ⨭ ७.

                ਬ砭: ஡   ४⨢ ᪠뢠-
              17.




     ࡮ ᥬ 3.0/tasm/#2-2                              = 44 =

                 15. ᯮ짮 ᫮ ४⨢
     

             ᫮ ४⨢: ४⨢ ᫮
     ᥬ஢  ᫮ ४⨢ 樨 ᮮ饭  訡-
     .   ४⨢ ᫮ ᥬ஢   ࠢ-
      ⥬,    㤥 ᥬ஢  ணࠬ  -
      ᫮.

          ४⨢ ᫮ ᥬ஢    -
        ६ ᥬ஢ ᮮ饭  訡  㯫-
      । ᮡ⨩.  ࡮ ᥬ 뢮  ᮮ饭  
     訡  ࠭   䠩 ⨭  ।頥 ᮧ ꥪ-
     ⭮ 䠩.     뢠,    ᯮ짮
     騥 ᫮ ४⨢.

                    ⠪ ᫮ ४⨢
     

          ६ ४⨢ ᫮ ᥬ஢   ४-
     ⨢ IFxxx, ELSEIFxxx  ERRxxx.  ४⨢ ᯮ ⠪,
       ᫮  몠 ᮪ ஢.



     ࡮ ᥬ 3.0/tasm/#2-2                              = 45 =

                ४⨢ ᫮ ᥬ஢ IFxxx
     

             ᯮ짮  ४⨢ ᫮ ᥬ஢
     IFxxx  ।  ,   砥  ꥪ
     䠩  㤮⢮७ । ᫮ (⠪  ।-
      䨪  ⠭  -  祭).  ਢ
     ᨭ⠪  ᫮ ᥬ஢:

          IFxxx
            ⥫_᫮_true
          EMDIF

     
          IFxxx
            ⥫_᫮_true
          ELSE
            ⥫_᫮_false
          ENDIF

      IFxxx ।⠢ ᫥騥 ४⨢:

          IF
          IF1
          IF2
          IFDEF
          IFNDEF
          IFB
          IFNB
          IFIDN
          IFIDNI
          IFDIF
          IFDIFI

           ४⨢  ᫮  ᥬ஢  IFxxx   
     ⭮ ᫮,    ᫥ ண 砥 ⨭
     (true)   (false) 祭.  ᫨ ᫮   祭
     true,  믮 ᥬ஢  饭  ꥪ 䠩
      ᥬ㥬  "⥫_᫮_true". ᫨  ᫥-
      ᫮ 砥 祭 false,  ࡮ ᥬ ய-
      "⥫_᫮_true"   砥   ꥪ  䠩. 
     稥 ४⨢ ELSE, ᫨ ᫮  祭 false,  -
     ᥬ   뢮    ꥪ  䠩     "⥫_᫮-
     _false".  ᫨ ᫮  祭 true,    -
     . ᫮  蠥 ४⨢ ENDIF.

          ஬ ᮡ 砥 ४⨢ IF1  IF2 (   㤨
     )   ᠭ     ᪫騬:
      ꥪ 䠩 砥  "⥫_᫮_true",  "⥫_
     ᫮_false",     ६. ஬ ⮣, ᫨ 
     ᯮ  IFxxx...ELSE...ENDIF,    㤥 -
     ⥫쭮     ꥪ  䠩.  ᫨ ᯮ ଠ
     IFxxx...ENDIF,  "⥫_᫮_true"        

     ࡮ ᥬ 3.0/tasm/#2-2                              = 46 =

       ꥪ 䠩,  ᨬ  ᫮.

           ᯮ짮    ४⨢  IF   ELSE ४⨢
     ELSE ᥣ ᮮ⢥ 襩 ४⨢ IF.

           ᫥饬 ਬ test   䨪஬,  
     ࠢ 祭    (᫨ 䨪  ।,  
      ᮮ⢥騩  ) 䨪 color -
       㫥 祭,  ᫨ ᯫ 梥⭮,   ࠢ
     0, ᫨ ᯫ ஬.

            祭  䠪᪠  :

          .
          .
          .
          IFDEF test                     ; true, ᫨ test ।
             ; ࢠ      ; ᫨ test ।
          IF color                       ; true, ᫨ color <> 0
             ;   color           ; ᫨ color <> 0
          ELSE                           ;
                                         ;   ஬
                                         ; ᯫ ᫨ color = 0
          ENDIF                          ;
            ;        ; ᫨ test ।
          ELSE                           ;
           ; 㣮                   ; ᫨ test  ।
          ENDIF
          .
          .
          .

     Ŀ
        test     ।  ।   ।  ।
        color       0          0           0           0    
     Ĵ
                     㣮   㣮   
                     1         1                                
                                                                
     梥⭮/                       
                    color       2           2                   
     

          ᫨ 䨪 test  ।,  ᥬ 
       梥⭮ ᯫ (color),    ஬, ᪮
       祭   ᫮  ᥬ஢,    -
     ᥬ ⮫쪮  । 䨪 test.



     ࡮ ᥬ 3.0/tasm/#2-2                              = 47 =

              ४⨢ ᫮ ᥬ஢ ELSEIFxxx
     

            ᯮ짮 ४⨢  ᫮  ᥬ஢
     ELSEIFxxx   ᮪饭  ,    ॡ ᯮ짮
     ᪮쪮 ४⨢ IF. ४⨢ ELSEIFxxx ।⠢ ᮡ -
      ४⨢  ELSE,   ன ᫥  ४⨢
     IFxxx,     . ਬ:

          .
          .
          .
          IF mode EQ 0
             ;   mode = 0
          ELSEIF mode LT 5
             ;   coe = 1..4
          ELSE
             ;   mode = 5...
          ENDIF
          .
          .
          .

     ࠢ   ᫥騬:

          .
          .
          .
          IF mode EQ 0
             ;   mode = 0
          ELSE
           IF mode LT 5
             ;   coe = 1..4
          ELSE
             ;   mode = 5...
           ENDIF
          ENDIF
          .
          .
          .

            IFxxx ४⨢ ELSEIFxxx ᯮ짮 .



     ࡮ ᥬ 3.0/tasm/#2-2                              = 48 =

              ४⨢ 樨 ᮮ饭  訡 ERRxx
     

          ४⨢ ERRxxx    㤮⢮७ ।
     ᫮ ᮮ饭 짮⥫  訡.   ᫥騩 -
     騩 ᨭ⠪:

          ERRxxx [㬥] [ᮮ饭]

           ⮬  砥  ४⨢  ERRxxx ।⠢ - 
     ४⨢ ᫮  樨  ᮮ饭    訡  (⠪   
     ERRIFB, .ERRB  ..).

          "㬥" ।⠢  㬥,    ॡ-
       ४⨢  ᫥  ᫮.    ४⨢
     ॡ ࠦ,  㣨 ॡ ᨬ쭮 ࠦ,  -
      -    ⥪⮢ ࠦ.     ४⨢
       ॡ 㬥⮢.

          ᫨ 㪠 "ᮮ饭",    易⥫쭮 ᮮ-
     饭, ஥ 뢮  訡.  饭   -
     祭  窨 ('  ").

          ४⨢ 樨 ᮮ饭  訡  짮-
     ⥫᪮ ᮮ饭    訡,  ஥  뢮    ࠭  
     砥  䠩 ⨭ (᫨  )   ᯮ
     ४⨢  室 .  ᫨ ४⨢  ᮮ饭,  
     뢮   ⮩  ப ।⢥  訡. ਬ,
     ४⨢:

          ERRIFNDEF foo "foo  ।!"

     ᫨ 䨪 foo  ।  㦥 訡,  -
       樨 訡:

          User error: "foo  ।!"



     ࡮ ᥬ 3.0/tasm/#2-2                              = 49 =

                     ᠭ  ४⨢
     

             ᫥ ᠭ ४⨢.

           ᫮ ४⨢ 樨 ᮮ饭  訡
     

          ᫮묨 ४⨢ 樨 ᮮ饭  訡 -
      ४⨢ ERR  .ERR.  ४⨢ ᥣ  訡
       ॡ 㬥⮢,    ᮤঠ 易⥫쭮 -
     饭. ४⨢ .ERR  ᯮ짮 ⮫쪮  ० MASM.

                    ᫮ ४⨢  ࠦﬨ
     

           ४⨢  ᯥ稢 ᫮ ᥬ஢  -
      ᮮ饭  訡  ᭮  १⮢  ᫥  
     ࡮ ᥬ ࠦ.     ४⨢  ᫥-
      ࠦ   ⠭,      ᮤ-
      ० 뫮. ᫨  ᫥ ࠦ 砥
     0, ࡮ ᥬ ᬠਢ ࠦ,   (false). 
     ⨢ 砥  ᬠਢ  ⨭ (true).

           ᫥饩 ⠡  ४⨢ ᫮ ᥬ-
     , ᯮ騥 ࠦ.

        ४⨢ ᫮ ᥬ஢, ᯮ騥 ᮮ饭
                                                           15.1
     Ŀ
       ४⨢ IFxxx     ᥬ "⥫_᫮_true" ᫨:  
     Ĵ
       IF ࠦ          ᫥   ࠦ  砥 
                           祭 true.                          
                                                                   
       IFE ࠦ         ᫥   ࠦ  砥 
                           祭 false.                         
                                                                   
       ELSEIF ࠦ      ᫥   ࠦ  砥 
                           祭 true.                          
                                                                   
       ELSEIFE ࠦ     ᫥   ࠦ  砥 
                           祭 false.                         
     

           ᫥饩 ⠡   ४⨢  樨 ᮮ饭
      訡,   ᯮ ࠦ:

      ४⨢ 樨 ᮮ饭  訡, ᯮ騥 ࠦ


     ࡮ ᥬ 3.0/tasm/#2-2                              = 50 =

                                                         . 15.2
     Ŀ
       ४⨢ ERRxxx    ᮮ饭 user error, ᫨: 
     Ĵ
       ERRIF ࠦ     ᫥ ࠦ 砥 - 
                          祭 true.                              
                                                                   
       .ERRNZ ࠦ    ᫥ ࠦ 砥 - 
                          祭 true (⮫쪮  ० MASM).       
                                                                   
       ERRIFE ࠦ    ᫥ ࠦ 砥 - 
                          祭 false.                             
                                                                   
       .ERRE ࠦ     ᫥ ࠦ 砥 - 
                          祭 false (⮫쪮  ० MASM).      
     

                  ᫮ ४⨢  䨪஬
     

           ४⨢ ᯥ稢 ᫮ ᥬ஢   -
      ᮮ饭   訡  ᭮ ⮣,    ।-
         䨪஢.  䨪 -
       ࠦ  䨪ࠬ.

          ࠦ   䨪ࠬ -  ࠦ,  饥 
      䨪஢,  㫥᪨ 権 AND,  OR, NOT  㣫
     ᪮.   ࠦ  䨪ࠬ   䨪
       㫥᪮ 祭,   ᫥ ண
     砥 祭 true,  ᫨ 䨪  (।-
     ),  false,  ᫨ 䨪   ( ᫨  
     ।   㫥 ).  ࡮ ᥬ  
     祭, ᯮ 㫥᪨ 樨,   祭  筮
     祭 true    false.    ᢮ ⥩襩 ଥ ࠦ 
     䨪ࠬ ᮤন  ⢥ 䨪  
      ᫥ 祭 true,  ᫨  䨪 ।.
     ⠪᪨ ࠢ  ࠦ   䨪ࠬ 
     ⥬,   ᯮ  ࠦ ࡮ ᥬ.  -
     , ᫨ 䨪 foo ।,  䨪 bar - ,
       ᫥ ࠦ  䨪ࠬ  ᫥-
     騥 १:

         ᫥ ।  । 䨪஢


     ࡮ ᥬ 3.0/tasm/#2-2                              = 51 =

                                                           15.3
     Ŀ
         ࠦ  䨪ࠬ                     
     Ĵ
         foo                                True                   
                                                                   
         bar                                False                  
                                                                   
         not foo                            False                  
                                                                   
         not bar                            True                   
                                                                   
         foo OR bar                         True                   
                                                                   
         foo AND bar                        False                  
                                                                   
         NOT (foo AND bar)                  True                   
                                                                   
         NOT foo OR NOT bar                 True ( ,        
                                          (NOT foo) OR (NOT bar)   
     

           ᫥饩  ⠡   ४⨢,   ࠢ
     ᥬ஢  ᯮ ࠦ  䨪ࠬ:

     ४⨢, ᯮ騥 ࠦ  䨪ࠬ  15.4
     Ŀ
     ४⨢ IFxxx          ᥬ "⥫_᫮_true" ᫨
     Ĵ
     IFDEF ࠦ_        ᫥  ࠦ  砥
                              祭 true.                       
                                                                   
     IFNDEF ࠦ_       ᫥  ࠦ  砥
                              祭 false.                      
                                                                   
     ELSEIFDEF ࠦ_    ᫥  ࠦ  砥
                              祭 true.                       
                                                                   
     ELSEIFNDEF ࠦ_   ᫥  ࠦ  砥
                              祭 false.                      
     

           ᫥饩  ⠡   ४⨢ 뢮 ᮮ饭 
     訡,  ᯮ ࠦ  䨪ࠬ:



     ࡮ ᥬ 3.0/tasm/#2-2                              = 52 =

             ४⨢ 樨 ᮮ饭  訡       15.5
     Ŀ
     ४⨢ IFxxx          ᥬ "⥫_᫮_true" ᫨
     Ĵ
     ERRIFDEF ࠦ_     ᫥  ࠦ  砥
                              祭 true.                       
                                                                   
     .ERRDEF ࠦ_      ᫥  ࠦ  砥
                              祭  true  (⮫쪮     ०
                              MASM).                               
                                                                   
     ERRIFNDEF ࠦ_    ᫥  ࠦ  砥
                              祭 false.                      
                                                                   
     .ERRNDEF ࠦ_     ᫥  ࠦ  砥
                              祭  false  (⮫쪮      ०
                              MASM).                               
     

          ਬ, ᫥騥  ᫮  樨  ᮮ饭  訡
       ਢ  樨 訡   砥  ।
     foo  bar:

          ERRIFDEF foo AND bar
          ERRIFNDEF NOT ( foo AND bar )
          ERRIFBDEF NOT foo OR NOT bar

                ᫮ ४⨢  ⥪⮢묨 ப
     

           ४⨢ ᫮ ᥬ஢   ᮮ-
        訡  ᭮ ᮤন ⥪⮢ ப.  ⮢
     ப     ப,  祭    㣫  ᪮
     (<>),     ⥪⮢ ப  ।騬 ᨬ
     %. ਬ:

          <ABC>                ; ⥪⮢ ப ABC
          %foo                 ; ᮤন ⥪⮢ ப foo

                ਬ砭:  । ⥪⮢ ப  -
              ᪠뢠   14.

          ४⨢ ᫮ ᥬ஢,  ᯮ騥 ⥪⮢
     ப,   ᫥饩 ⠡:

                            ४⨢ ᫮


     ࡮ ᥬ 3.0/tasm/#2-2                              = 53 =

          ᥬ஢, ᯮ騥 ⥪⮢ ப   15.6
     Ŀ
      ४⨢ IFxxx       ᥬ "⥫_᫮_true", ᫨:
     Ĵ
      IFNB ⥪_ப     "⥪_ப"  ⮨   -
                            .                                 
                                                                   
      IFB ⥪_ப      "⥪_ப"  .               
                                                                   
      IFIDN ⥪_ப_1, "⥪_ப_1"   "⥪_ப_2"   
          ⥪_ப_2    .                             
                                                                   
      IFINDI ⥪_ப_1 "⥪_ப_1"   "⥪_ப_2"   
          ,⥪_ப_2    (ॣ ᨬ  -  
                            .                                
                                                                   
      IFDIF ⥪_ப_1, "⥪_ப_1"   "⥪_ப_2"   
          ⥪_ப_2    ࠧ.                              
                                                                   
      IFDEFI ⥪_ப_1 "⥪_ப_1"   "⥪_ப_2"   
          ,⥪_ப_2   ࠧ (ॣ ᨬ - 
                            .                                    
                                                                   
      ELSEIFNB ⥪_ப "⥪_ப"  ⮨  ஡. 
                                                                   
      ELSEIFB ⥪_ப  "⥪_ப"  .               
                                                                   
      ELSEIFIDN ⥪_- "⥪_ப_1"   "⥪_ப_2"   
       _1, ⥪_ப_2 .                             
                                                                   
                                                                   
      ELSEIDNI ⥪_-  "⥪_ப_1"   "⥪_ப_2"   
       _1,⥪_ப_2   (ॣ ᨬ -  
                            ).                                 
                                                                   
      ELSEIFDIF ⥪_- "⥪_ப_1"   "⥪_ப_2"   
       _1,⥪_ப_2  ࠧ.                              
                                                                   
      ELSEIFDIFI ⥪_ள "⥪_ப_1"   "⥪_ப_2"   
       -_1,⥪_ப_2 ࠧ (ॣ ᨬ -   
                            ).                                 
     

          ᯮ騥 ⥪⮢  ப ४⨢ 樨 ᮮ饭
      訡   ᫥饩 ⠡:

                        ४⨢ 뢮 ᮮ饭


     ࡮ ᥬ 3.0/tasm/#2-2                              = 54 =

            訡 ᯮ騥 ⥪⮢ ப         15.6
     Ŀ
     ४⨢ ERRxxx          ᮮ饭  訡, ᫨:
     Ĵ
     ERRIFNB ⥪_ப     "⥪_ப"    ⮨   
                              ஡.                            
                                                                   
     .ERRIFNB ⥪_ப    "⥪_ப"    ⮨   
                              ஡ (⮫쪮  ० MASM).   
                                                                   
     ERRIFB ⥪_ப      "⥪_ப" ⮨  ஡.  
                                                                   
     .ERRB ⥪_ப       "⥪_ப" ⮨    -
                              .                               
                                                                   
     ERRIFIDN ⥪_ப_1, "⥪_ப_1"   "⥪_ப_2" 
      ⥪_ப_2          .                           
                                                                   
     .ERRIDN ⥪_ப_1,  "⥪_ப_1"   "⥪_ப_2" 
      ⥪_ப_2           (⮫쪮  ० MASM).  
                                                                   
     ERRIFIDNI ⥪_ப_1 "⥪_ப_1"   "⥪_ப_2" 
      ,⥪_ப_2          (ॣ ᨬ -
                              ).                               
                                                                   
     .ERRIDNI ⥪_ப_1, "⥪_ப_1"   "⥪_ப_2" 
      ⥪_ப_2           (ॣ ᨬ -
                              ) - ⮫쪮  ० MASM.      
                                                                   
     ERRIFDIF ⥪_ப_1, "⥪_ப_1"   "⥪_ப_2" 
      ⥪_ப_2          ࠧ.                            
                                                                   
     .ERRDIF ⥪_ப_1,  "⥪_ப_1"   "⥪_ப_2" 
      ⥪_ப_2          ࠧ (⮫쪮  ० MASM).   
                                                                   
     ERIFDIFI ⥪_ப_1, "⥪_ப_1"   "⥪_ப_2" 
      ⥪_ப_2          ࠧ (ॣ ᨬ - 
                              ).                               
                                                                   
     .ERRFIFI ⥪_ப_1, "⥪_ப_1"   "⥪_ப_2" 
      ⥪_ப_2          ࠧ (ॣ ᨬ - 
                              ) - ⮫쪮  ० MASM.      
     

          ᯮ  ४⨢  ஢ન । ப-
      㬥⮢ (   ᯮ짮  ⮫쪮   -
     ப).

           ᯮ짮      ம।  ४⨢ IFB 
     IFNB  ।,  ।    ப  㦭
     ᫮ 㬥⮢.  ᫨  맮 ப  । ᫨-
       㬥⮢,  ࡮ ᥬ   ᮮ饭  
     訡.  㬥   묨.  -

     ࡮ ᥬ 3.0/tasm/#2-2                              = 55 =

     ,   । ப, ਭ ६
     ᫮ 㬥⮢. ਬ:

          .
          .
          .
          load MACRO addr, reg
             IFNB <reg>
                MOV reg,addr
             ELSE
                MOV ax,addr
             ENDIF
          ENDM
          .
          .
          .

             뢠  ப  ਬ,   load
     test,cx,    樨 mov cx,test,    맢
       load test,  ਢ  樨 樨 mov ax,test,
     ᪮ ன ࠬ .  ⠪ ᯮ짮 ४-
      ERRIFB  樨 ᮮ饭  訡, ᫨  맮 -
      ய饭 㬥:

          .
          .
          .
          load MACRO addr
             ERRIFNB <addr>
                MOV reg,addr
          ENDM
          .
          .
          .

          ᫨  ப 맢   load,    
     load test,  㤥 ஢ 訡.



     ࡮ ᥬ 3.0/tasm/#2-2                              = 56 =

                 ᫮ 믮 室 ᥬ஬
     

          騥 ४⨢  ᯥ稢  믮  ᫮ -
     ᥬ஢   訡  ᭮ ⥪饣 室 -
     ᥬ:

     Ŀ
         ४⨢ IFxxx    ᥬ "⥫_᫮_true", ᫨:
     Ĵ
         IF1               ࡮ ᥬ 믮  室.
         IF2               ࡮ ᥬ 믮 ன 室.
     

     Ŀ
         ४⨢ ERRxxx   訡 user error, ᫨:     
     Ĵ
         ERRIF1            ࡮ ᥬ 믮  室.
                                                                   
         .ERR1             ࡮  ᥬ 믮  室
                           (⮫쪮  ० MASM).               
                                                                   
         ERRIF2            ࡮ ᥬ 믮 ன 室.
                                                                   
         .ERR2             ࡮ ᥬ 믮 ன  室
                           (⮫쪮  ० MASM).               
     

          筮 ࡮ ᥬ ࠡ⠥  室 ᥬ.
     ᫨   ᯮ ।⢮ 室 ࠡ ࡮ ᥬ-
      (뢠   ࠬ஬  ப /m),     -
     室 ᯮ ᪮쪮 室.

          ᪮ ࡮  ᥬ  ᥣ 믮  ࠩ 
      室, ४⨢ ᫮ ᥬ஢ IF1 ᥣ 㤥
     ᥬ஢   ᢮  ᫮ ,   ४⨢ .ERR1 
     ERRIF1 ᥣ  ஢ ᮮ饭  訡  (  ⮫쪮
      ࢮ 室).

          ᫨   ᯮ     ४⨢   ࠧ蠥
     室 ࠡ,  ࡮ ᥬ 㤥 ஢  
       ⠪ ४⨢ ।० "Pass dependent construction"
     (",    室"),  ⮡ ।।  
      ᭮ ய᪥ .  ᫨  ࠧ 室
     ࠡ, ࡮ ᥬ 㤥 믮 筮  室  -
     ஢  ।० Vaximum compatibility pass was done (-
      室  楫 ᯥ祭 ᨬ쭮 ᮢ⨬).

               祭 ᫮ ४⨢  䠩 ⨭
     

          筮   ᫮  ᥬ஢       ᫮
     (false)   ⨭   砥.  ᯮ ४⨢ ࡮ -

     ࡮ ᥬ 3.0/tasm/#2-2                              = 57 =

     ᥬ  ࠬ  ப,     ८।-
     .

                ਬ砭:   ஡  ଠ  ᮤন 
            2   17.

     ࡮ ᥬ 3.0/tasm/#2-2                              = 58 =

                    16. 䥩  騪
     

           ணࠬ 筮   ᪮쪨 ᨬ
     ⥩ ,  뢠 ﬨ.  ࠡ뢠 
       㫥 ᨬ,   騪 (TLINK) ꥤ -
     祭    ᮧ 믮塞 䠩.  ⮬, 
     ᯮ짮 TLINK, ᪠뢠  㬥樨  ,
       ⠪ ,   ।    䠩  -
     ⥪,     .   -
      ᪠뢠  ⮬,   ᤥ.

                    ᠭ 譨 䨪஢
     

            ⠪,    ॡ ᯮ짮 -
      ६    楤    襩 ணࠬ.
     ࡮ ᥬ ᯥ稢 ᪮쪮 ४⨢,  -
        । 䨪  ⥪ ⠪ ࠧ, 
      ᬮ ᯮ짮  쭮,   ⠪ ᯮ짮 騥
     ६ (  뤥  騪).   -
      ⠪ ᮡ ⭮  祭  -
     ஢, ᪮  ࠧ 모    ॡ-
     .  ᫥騩 ᪮쪨 ࠧ  㤨  ४⨢ 
     ᮣ襭  .

                    襭  ⭮ 몠
     

            砥  䨪ࠬ,   -
      ᯮ짮 쭮,  㦭   ᯮ짮 ᯥ-
     䨪 몠.     ६  ।  ᫥騥
     ॡ:

          -  ᪠  㪠뢠 ᨬ  孥 ॣ;

          -   /++     稭  ᨬ ન
            (_). ⠫쭠   뢠 ᨬ  
            ॣ.

          ࠬ /m (ᠭ   2) ᮮ頥 ࡮ ᥬ,
         䨪஢ 㦭 ࠧ ॣ. -
      /mx (⠪ ᠭ   2) 㪠뢠,  ࠧ -
      ᨬ 㦭 ⮫쪮  譨  饤㯭  -
     ,    㣨 䨪  室 䠩 -
       孥 ॣ.    ᯮ      ࠬ
     ,   䨪஢, ᠭ  ᪠,   ᯥ-
     樠쭮 祭:  ਢ  ⮬,  ᬠਢ -
     䨪    㯭  騪,    䨪 
     孥 ॣ.

     ࡮ ᥬ 3.0/tasm/#2-2                              = 59 =

                 ᠭ 饤㯭 䨪஢
     
           ᠭ 饤㯭 䨪  ।,
         㯥  㣨 㫥. 饤㯭묨 -
       ᫥騥 ⨯ 䨪஢:

          -  ६;
          - ⪨ ணࠬ;
          - ᫮ ⠭, ।   EQU.

           ।  饤㯭 䨪஢  ᯮ-
      ४⨢ PUBLIC,   ᫥騩 ᨭ⠪:

          PUBLIC [] 䨪 [,[] 䨪] ...

      "" ।⠢ ᮡ C,  CPP,  PASCAL,  BASIC,  FORTRAN,
     PROLOG   NOLANGUAGE  । ᮣ襭 ⭮ 몠,
     ਬ塞   ६. ᯮ짮 ᯥ䨪 몠
      ४⨢ PUBLIC ६ ८। ६ ८।-
      ⥪ ⠭ 몠 ( 㬮砭 NOLANGUAGE,  ᫨ 㣮
         ४⨢ .MODEL).

          ࡮ ᥬ  뢠  䨪  ꥪ⭮ 㫥
     ⠪ ࠧ,   㤥 㯥 ᥬ 㣨 . ᫨ 
      ᤥ 䨪 饤㯭,   ᬮ  
      ⮫쪮  ⥪饣 , ਬ:

          PUBLIC XYPROC          ; 楤 饤㯭
          XYPROC PROC NEAR

                   ᠭ 䨪஢ ⥪
     

            ᯮ짮 䨪,  ᪨ -
      室  ᪨ 㥬 ⥪ (DLL).   -
      䨪஢,    㯭 ⠪  ࠧ,  -
      ४⨢ PUBLICDDL.   ᫥騩 ᨭ⠪:

          PUBLICDLL [] 䨪 [,[] 䨪] ...

          ࡮ ᥬ  뢠  䨪  ꥪ⭮ 䠩,
      ᪨ 㥬  室,  祬  
      㯭  㣨 ணࠬ. 䨪 "" ਢ 
     ਬ ᯥ᪨  몠 ᮣ襭  ⭮ 
     䨪. ⨬묨 ᯥ䨪ࠬ 몠  ᯥ-
     䨪 C, CPP, PASCAL, BASIC, FORTRAN, PROLOG  NOLANGUAGE.

     ਢ ਬ   ᯮ짮 PUBLICDLL:

          PUBLICDLL XYPROC          ; 楤 XYPROC 㯭 
          XYPOROXC PROC NEAR        ; ᪨ 㥬 窠
                                    ; 室

     ࡮ ᥬ 3.0/tasm/#2-2                              = 60 =


                   । 譨 䨪஢
     

          譨 䨪 -  䨪,  ।-
            ᯮ짮    .
      䨪       ᠭ      ४⨢
     PUBLIC. ४⨢ EXTRN  ᫥騩 ᨭ⠪:

          EXTRN । [,।] ...

      "।" 뢠 䨪   ᫥騩  -
     :

          []  [[稪_1]] :᫮_⨯ [:稪_2]

                   ᠭ  䨪஢
     

           䨪  ⠪,    饤-
     ,  ⮬   㦭 । PUBLIC  EXTRN.  ᫨ -
     ६ ।  㫥,       饤㯭.
     ᫨ ,     .   । 
     䨪஢   ᯮ짮 ४⨢ GLOBAL. ४-
      GLOBAL      ᨭ⠪,   ४⨢ PUBLIC  EXTRN
     ( ᨭ⠪ ᠭ  । ࠧ).

          ४⨢ GLOBAL    砥 䠩,  -
      㤥    室 㫨.  砥 䠩 -
     ন  ᮢ⭮ ᯮ㥬 ,  ।   -
      䨪.        㫥 뫠 
       ,  ४⨢ GLOBAL      ४⨢
     EXTRN, 뢠  㣮 ,  । .

          । ⥬,  ᯮ짮  -  室 , 
       䨪  GLOBAL.  ஬ ⮣ ⨬, 
        㬥⮢ ४⨢ GLOBAL ᯮ   ᨭ-
     ⠪,    ४⨢ EXTRN.

          ਢ ਬ:

          GLOBAL X:WORD, Y:BYTE
          X  DW 0                 ; 䨪 ⠫ 㯥 
                                  ; 㣨 
          mov  al, Y              ; ᠭ  譨

                      ।  ६
     

          騥 ६   譨 ६,   
       ⢥ ࠧ稥:  騥 ६ ।
     騪. 騥 ६ ६  ᠬ  -
       ६,     ᢮  砫

     ࡮ ᥬ 3.0/tasm/#2-2                              = 61 =

     祭.   樠஢ ६   뫠
      ᪮쪨 㫥.

           ।  饩 ६   ᯮ짮 -
     ४⨢ COMM.   ᫥騩 ᨭ⠪:

          COMM । [,।]...

           "।" 뢠 䨪   ᫥-
     騩 ଠ:

          [ﭨ] [] _䨪[[稪_1]]:
                                  ᫮_⨯ [稪_2]

       "ﭨ"   易⥫      FAR
      NEAR.  ᫨    "ﭨ",  㬮砭  -
      ᮮ⢥⢮ ᯮ㥬  .  ᫨     -
       饭 ४⨢ ᥣ樨,    㬮砭 -
       NEAR.    筮,      ।     
     㬮砭 ⠪ ᯮ NEAR,    㣨 - FAR.

           ""  :  C,  PASCAL, BASIC, FORTRAN, PROLOG
      NOLANGUAGE. ᯮ짮  ४⨢ COMM ᯥ䨪 -
      ६  ८। ⥪ ⠭ 몠 ( 㬮砭
         ४⨢ .MODEL).  ⨬,   ⮣,
     ⮡ ⢮   ।⢮,    易⥫쭮 ᯮ짮-
      ४⨢ .MODEL.

           "_䨪"   䨪, 
        騬,       ண  뤥 
     ⠯ .   ⮬   ⠪    樥
     ࠧ  ᨢ "稪_1",    뢠
      塞 ꥬ 饩 . ᫨  ⢥ ﭨ -
      FAR,  騪, ᯮ 祭 "稪_2", ⮡
     㪠,  ᪮쪮  ⮢  ࠧ஬, ࠢ ந-
       ᭮  ࠧ  ( ।  ⨯)
      "稪_1".  㬮砭 祭  "稪_1" ࠢ 1.

          "_⨯" -  ⨯  㬥.    
      ⨯,   ᫮ ࠦ  㪠⥫.   -
     ஡  ᨭ⠪ ᫮ ⨯ ᪠뢠   5.

          易⥫쭮 祭 "稪_2" ।, ᪮쪮 -
     ⮢ ।     ६.  ᫨    
     ,  ࠧ㬥 祭 1.  ꥬ , 뤥-
        饩  ६,  ࠢ  ந 祭 "-
     稪_2"  ,   "⨯",   祭 "稪_1".

           ० MASM,  ।,    騥  䨪,
     ᠭ   ᥣ,   㯭   -
      DS,    ᥣ  ⨬ ।. -
     ,       ⨫  DS ४⭮ 祭 ᥣ,
       뫪     ६  ᯮ  ८।

     ࡮ ᥬ 3.0/tasm/#2-2                              = 62 =

     ᥣ.  ० Ideal ࡮ ᥬ ४⭮ ஢, -
       騥 ६ 㥬묨,  ᯮ   ⥪-
      ᥣ ॣ஢, ᠭ  ४⨢ ASSUME.

          ਢ ਬ ᯮ짮 ४⨢ COMM:

          COMM buffer:BYTE:512        ;  ६  뤥-
                                      ;  512 
          COMM abc[41]:WORD:10        ;  ⠯  뤥-
                                      ;    820   (10 -
                                      ; ⮢  41 ᫮ )

          COMM FAR abc[41]:WORD:10    ;  ⠯  뤥-
                                      ;   10 ⮢   82  
                                      ; (2  * 41 )

                          祭 ⥪
     

           ⮬ 砥,    ,    室 䠩 㤥
     ᥣ ᯮ짮  ணࠬ  ⥪,   -
     짮 ४⨢ INCLUDELIB.  ४⨢  INCLUDELIB  ᮮ頥
     騪,   㦭  㪠 ⥪.   ०
     Ideal  ४⨢  ᫥騩 ᨭ⠪:

          INCLUDELIB "_䠩"     ;    窨!

       ० MASM:

          INCLUDELIB _䠩

      "_䠩" -   ⥪,     
       騪  ⠯ .  ᫨   㪠 
       䠩  ७,    騪  ࠧ㬥
     ७ .LIB.

          ਢ ਬ:

          INCLUDELIB "diskio"      ; 砥 DISKIO.LIB




     ࡮ ᥬ 3.0/tasm/#2-2                              = 63 =

                      17.  ⨭
     

           ⨭  ᯮ짮,       筮
     ,   ࡮ ᥬ  ᥬ஢ 
     樨  ४⨢. ᭮ ⮣ 䠩 ⠢  室
     䠩,   祭 让 ꥬ ᮯ஢饩 ଠ樨 
     १ ᥬ஢.  ࡮ ᥬ 뢮   
     樨 祭  設  ,   ⠪ ᬥ饭  ⥪饬
     ᥣ (  ப  設 ).  ஬ ⮣,  ࡮
     ᥬ 뢮  ⠡ ଠ  ⪠  ᥣ, -
     㥬  ணࠬ,  祭  ⨯  ⪨  -
     ਡ  ᥣ.

                ਬ砭: .    2 ᠭ ࠬ஢ -
            ப /l  /la.

          ࡮ ᥬ   ⠪   ஢ ⠡
     ४ 뫮   ⮪,  ᯮ㥬  室 䠩-
     ,  ன ,   ।  ⪠,    
       뫪.

                ਬ砭: .   2 ᠭ ࠬ 
           ப /c.

                           ଠ ⨭
     

           孥     ࠭ ⨭ 뢮 -
     , ᮤঠ騩  ࡮ ᥬ,   ன 믮-
      ᥬ஢ 䠩,    ६ ᥬ஢  
     ࠭  ⨭.

           ⨭ ᮤন  : ஢ ⨭ -
     室   ⠡ 䨪஢.  砫 뢮 室-
      ᥬ㥬   ,  ᮤঠ騬  䠩,  -
     ஬ 室  室  .  뢮  室  ᥬ
     ᮯ஢ ଠ樥  設 ,   ᥬ
     ࡮ ᥬ.    訡  ।०,  㦥 
      ᥬ஢,   ⨭ ।⢥ 
     ᮤঠ饩 訡 ப.

          ப   䠩 ⨭  ᫥騩 ଠ:

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

      <㡨>  뢠  ஢   砥 䠩
      ப  䠩 ⨭.

           <_ப> ᮤন  ப   䠩  ⨭
     (  ).  ப ᮡ   ᯮ-
      ४ 뫮 ࡮ ᥬ,    㪠뢠-
       ப. ,   <_ப>  ᮮ⢥-

     ࡮ ᥬ 3.0/tasm/#2-2                              = 64 =

      ࠬ  ப  室  .  ਬ,  ᫨      䠩
     砥 㣮 䠩  믮 ७,  -
       <_ப> த  㢥稢,    ⥪
     ப  室 䠩 ⠥ ⮩ .  ⮡ ८ࠧ -
      ப ⭮  ப 室 ,    -
       䠩 ⨭,    ⠪  ப  室  (
      譥 ,    ).

           <ᬥ饭> ।⠢ ᬥ饭  ⥪饬 ᥣ -
     砫 設 , ᣥ஢  ᮮ⢥饩 室
     ப ࡮ ᥬ஬.

           <設_>  뢠  䠪  ᫥⥫-
      ⭠ 祭 ࠧ஬    ᫮, -
       ᥬ஢  ᮮ⢥饩 室 ப  ᥬ-
     .

           <室_> -   室 ப ᥬ,
      ﬨ  ᥬ,     ᮤন.  室
     ப (ਬ ,  ᮤঠ ⮫쪮 ਨ)   -
       設 .   ப   ᮤঠ  
     <ᬥ饭>  <設_>,    ப.

                  騥 ४⨢ ࠢ ⨭
     

            ४⨢,     ࠢ 
     䠩 ⨭.  騥  ४⨢ ࠢ ⨭  
     ᥡ ᫥騥 ४⨢:

          - .LIST             ; ⮫쪮 ० MASM

          - .XLEST            ; ⮫쪮 ० MASM

          - %LIST

          - %NOLIST

          - %CTLS

          - %NOCTLS

          - %SYMS

          - %NOSYMS

          ४⨢ %LIST 뢮  䠩 ⨭  ப 室
     .   ४⨢  砥  㬮砭  ᮧ 䠩
     ⨭. ⮡  뢮  ⨭    ப  室
     , ᯮ ४⨢ %NOLIST. ਢ ਬ:

          %NOLIST            ;  ⨭
          INCLUDE MORE .INC

     ࡮ ᥬ 3.0/tasm/#2-2                              = 65 =

          %LIST              ; ࠧ ⨭

          ४⨢ .LIST  .XLIST ࠡ ⠪,  ४⨢ %LIST
      %NOLIST. ਢ ਬ:

          .LIST
          jmp xyz           ;  ப ᥣ 뢮
          .XLIST
          add dx,ByteVar    ;  ᮤন  ⨭

           ࠢ 祭  ⨭ ४⨢ ࠢ -
     ⨭   ᯮ짮 ४⨢ %CTL   %NOCTL. ४⨢
     %CTLS  ਢ  祭  ⨭ ४⨢ ࠢ ⨭-
      (⠪  %LIST,  %INCL  ..). 筮   ⨭  -
     .  ४⨢    ᫥ ப, -
     ⮬ ᠬ ४⨢  %CTLS    ⨭    뢮.  ४⨢
     %NOCTLS  ⢨ ४⨢ %CTLS  ⭮.  ᫥ -
      ४⨢ %NOCTLS  ᫥騥 ४⨢ ࠢ -
     ⨭    ⨭      ( ० ᯮ
     ࡮ ᥬ஬  㬮砭,   稭 ᥬ஢
     室 䠩). ਬ:

          %CTLS
          %NOLIST           ;  ४⨢  㤥 祭 
                            ; 室 䠩
          %NOCTLS
          %LIST             ;   㤥   ⨭

             祭   祭  䠩 ⨭ ⠡-
      䨪஢     ᯮ짮  ४⨢  %SYMS 
     %NOSYMS ( 㬮砭 ⠡ 䨪஢ 뢮). 
     㤥 뢮   䠩 ⨭.

          ਢ ᨭ⠪ ४⨢ %SYMS:

          %SYMS

          ४⨢ %NOSYMS  ᫥騩 ᨭ⠪:

          %NOSYMS

                  ४⨢ ⨭ 砥 䠩
     

           ⮬ 砥,     뢥  䠩 ⨭ -
     砥 䠩,   ࠧ     
      ४⨢  %INCL  %NOINCL.   㬮砭 砥 䠩
     筮   䠩 ⨭.  ४⨢ %NOINCL ਮ⠭-
      뢮   䠩 ⨭  ᫥ 砥 䠩,
       ᭮  㤥 ࠧ襭 ४⨢ %INCL.   -
     짮  稨  砥 䠩,   ᮤ-
     ,  ਬ,  । EQU,    -
     .

     ࡮ ᥬ 3.0/tasm/#2-2                              = 66 =


          ਢ ਬ:

          %INCL
          INCLUSE DEFS.INC        ; ᮤন 뢮  ⨭
          %NOINCL
          INCLUSE DEF1.INC        ; ᮤন  뢮  ⨭

             ४⨢ 뢮  ᫮ ᥬ஢
     

             室        ᮤঠ   ᫮
     ᥬ஢,   ⥫ 祭   ⨭
     ᥩ ଠ樨. 뢮  ᫮ ᥬ஢  -
        ,    筮   室-
      .    ࡮ ᥬ ।ᬮ७ ᫥騥 ४⨢
     뢮  ᫮ ᥬ஢:

          - .LFCOND            ; ⮫쪮  ० MASM

          - .SFCOND            ; ⮫쪮  ० MASM

          - ,TFCOND            ; ⮫쪮  ० MASM

          - %CONDS

          - %NOCONDS

          筮 ࡮ ᥬ  砥  ⨭  ᫮
     ᥬ஢.

          ४⨢ %CONDS  뢮   䠩 ⨭   -
      .  ⮬  䠩 ⨭ 뢮 ⠪  
      ᫮ false. ४⨢ .LFCOND ࠡ⠥ 筮 ४⨢
     .LFCOND. ४⨢ %NOCONDS ।頥 뢮   䠩 ⨭
      ᫮  ᥬ஢    ᫮  false.  ४⨢
     .SFCONDS ࠡ⠥ 筮 ४⨢ %NOCOND.  ᫨    
     ४ ०  뢮   ᫮ ᥬ஢,  -
      ४⨢ .TFCOND.

          ࢠ ४⨢ .TFCOND,  㦨 ࡮ ᥬ-
     , ࠧ蠥  뢮  ⨭   ᫮ ᥬ-
     . ᫨  ᯮ ࠬ   ப  /X,  
     ᫮ ᥬ஢   ᭠砫 뢮  ⨭,  
     ࢠ ४⨢ .TFCOND   뢮.    㦥-
        室  䠩  ४⨢ .TFCOND ﭨ 뢮 
     ᫮ ᥬ஢   ⭮.

           㪠    ४⨢   ४⨢  
     ⤥쭮 ப  室 .      ।-
     ⢥ ᫥騥   ४⨢  ᫮ ᥬ-
     .


     ࡮ ᥬ 3.0/tasm/#2-2                              = 67 =

             ४⨢ 뢮  䠩 ⨭ ப
     

          筮 ७   䠩  ⨭. 稥
     ⠪ ଠ樨  䠩 ⨭   祭 ,
        ,    室 .  ࡮ -
     ᥬ ।ᬮ७   ᪮쪮  ४⨢,    
       몫  ।⢮.  ᫥騥 ४⨢:

          - .LALL              ; ⮫쪮  ० MASM
          - .SALL              ; ⮫쪮  ० MASM
          - .XALL              ; ⮫쪮  ० MASM
          - %MACS
          - %NOMACS

          ४⨢ %MACS ࠧ蠥 ⨭  ७. 
     ᠬ   ४⨢  .LALL,     ࠡ⠥ ⮫쪮  ०
     MASM.   ᯮ짮  ४⨢   祭  -
     ७  䠩 ⨭.

          ४⨢ %MACS  ᫥騩 ᨭ⠪:

          %MACS

          ४⨢ .LALL    ᫥騬 ࠧ:

          .LALL

          ᫨     뢮  ஢ -
     , ᯮ ४⨢ %NOMACS  .SALL.  ⨬,    
     ४⨢   ᯮ짮  몫祭 뢮 -
       䠩 ⨭.

          ४⨢ %NOMACS  ᫥騩 ᨭ⠪:

          %NOMACS

          ४⨢ .SALL  ᫥騬 ࠧ:

          .SALL

          㯭  ० MASM ४⨢ .XALL    뢮-
       ⨭ ⮫쪮  ७,    
      .   ᫥騩 ᨭ⠪:

          .XALL

     ࡮ ᥬ 3.0/tasm/#2-2                              = 68 =

             ४⨢ 뢮 ⨭ ४ 뫮
     
           ⠡  䨪஢  ⨭ 뫮 筮 뢮
     让 ꥬ ଠ樨  ⪠, 㯯  ᥣ,  ⠬ 
     ᮮ頥,  । ᥣ, 㯯  ⪨    -
     . ଠ,  뢮  ⠡ ४ 뫮,
         室 ⪨  ᫥  室 믮
     ணࠬ   ⫠.

           ᪮쪮 ᯮᮡ ࠧ襭 祭  ଠ-
     樨  ४ 뫪  䠩 ⨭.   祭 -
     樨  ४ 뫪  ᥣ 䠩    ᯮ짮-
      ࠬ    ப  /c  (஡    
      2),    室  ४⨢, 騥 
     ࠧ     뢮  ४  뫮  ⤥
     ⥩ 室 .  ᫥騥 ४⨢:

          - .CREF                   ; ⮫쪮  ० MASM
          - .XCREF                  ; ⮫쪮  ० MASM
          - %CREF
          - %NOCREF
          - %CREFALL
          - %CREFREF
          - %CREFUREF

          ४⨢ %CREF  .CREF   ᮡ  ଠ  
     ४ 뫪     䨪  室 䠩,
     稭   窨. ४⨢ %CREF  .CREF ⬥ ⢨
     ४⨢ %NOCREF  .XCREF,    ᡮ ଠ樨 
     ४ 뫪.

          ४⨢ %CREF  .CREF  ᫥騩 ᨭ⠪:

          %CREF
     
          .CREF

          ४⨢ %NOCREF  .XCREF  ᨭ⠪:

          %NOCREF [䨪, ...]
     
          .XCREF [䨪, ...]

          ᫨   ᯮ ४⨢ %NOCREF  .XCREF  㪠
     䨪,  뢮  ४  뫮  頥  -

     ࡮ ᥬ 3.0/tasm/#2-2                              = 69 =

     . ᫨    㪠뢠     䨪஢,
      뢮 ४ 뫮 頥 ⮫쪮    -
     䨪஢.

          ४⨢ %CREFALL 뢮  ⨭ ४ 뫪 
      䨪஢. ४⨢ %CREFALL  ⢨ ।-
     饩 ४⨢  %CREFREF (饩 뢮  ⠡ ४-
      뫮  䨪஢,   뫪 ) 
     ⭮. ᫥ 㪠 ४⨢ %CREFALL  騥 -
       室 䠩 䨪       ⨭
     ४ 뫮.  ࡮  ᥬ  ᯮ    ० 
     㬮砭  砫 ᥬ஢ 室 䠩.

          ४⨢ %CREFALL,  %CREFREF   %CREFUREF    ᫥騩
     ᨭ⠪:

          %CREFALL

          %CREFREF

          %CREFUREF

                  ࠬ  ଠ ⨭
     

          ४⨢ ࠢ ଠ⮬ ⨭  ଠ 䠩
     ⨭.    ᯮ짮  ४⨢,  ⮡ ᯮ-
       ⨭  ᢮   ॡ.

          ४⨢ PAGE    ਭ ࠭ 䠩 ⨭-
        稭   ࠭.  ४⨢ PAGE ࠡ⠥ ⮫쪮 
     ० MASM.   ᫥騩 ᨭ⠪:

          PAGE [᫮_ப] [,᫮_⮫殢]
          PAGE +

      "᫮_ப"  ᫮ ப,  뢮  ࠭ -
     ⨭.  "᫮_⮫殢"  ਭ 祭    59  
     255   ᫮ ⮫殢  ࠭. ᫨    
      ࠬ஢,   ⥪ ⠭  ࠬ ⠥
      .  ⮡  ⮫쪮 ᫮ ⮫殢, 㪠 -
     । ⨬ ࠬ஬ ,  ⨢ 砥   ᫮
     ப.

          ᫨   㪠  ᫥ ४⨢ PAGE ᨬ  (+),  
     稭  ࠭,   ࠧ 㢥稢,   
     ࠭ ᭮ 稭  1. ᫨  ᯮ ४⨢ PAGE
      㬥⮢,   ⨭     ࠭  
       ࠧ.

          ४⨢ %PAGESIZE ࠡ⠥ ⠪,   ४⨢ PAGE,  
       稭  ࠭  ࠡ⠥   ० Ideal, ⠪
       ० MASM. ४⨢ %PAGESIZE  ᫥騩 ᨭ⠪:

     ࡮ ᥬ 3.0/tasm/#2-2                              = 70 =


          %PAGESIZE [᫮_ப] [,᫮_⮫殢]

          ४⨢ %NEWPAGE  ࠡ⠥  ४⨢ PAGE  㬥-
     ⮢. ப 室 ⥪ ᫥ ४⨢ %NEWPAGE  -
        䠩  ⨭    ࠭.  ४⨢ %PAGESIZE
      ᫥騩 ᨭ⠪:

          %NEWPAGE

          ४⨢ %BIN ⠭    ꥪ⭮    
     䠩 ⨭. ४⨢ %BIN  ᨭ⠪:

          %BIN ࠧ

      "ࠧ"  ⠭⮩.  ᫨   ᯮ  -
     ४⨢,    樨   䠩  ⨭    20
     権, ਬ:

          %BIN 12        ; ⠭ 12 権  ⨭

          ४⨢ %DEPTH  ⠭  ࠧ  㡨  䠩
     ⨭.  ४⨢  ᫥騩 ᨭ⠪:

          %DEPTH ࠧ

      "ࠧ" , ᪮ ⮫殢 㦭 १ࢨ஢  -
      㡨 䠩 ⨭.   㪠뢠 ஢ 
     砥 䠩 (INCLUDE)  ७.  ᫨    ⢥
     ࠧ  㪠 0,      䠩 ⨭  뢮.
     筮  ॡ  "ࠧ" > 2, ᪮  ⮬ 
     祭 㤥  뢮  㡨  99.   㬮砭  
      祭 1.

          ४⨢ %LINENUM  ࠧ  ஢ ப   䠩
     ⨭.  ४⨢  ᫥騩 ᨭ⠪:

          %LINENUM ࠧ

          ४⨢ %LINENUM      ,  ᪮쪮 権
        ப  䠩 ⨭.      "ࠧ"
      㪠뢠 ⠭. ᫨   ஢ -
      ⨭,   㬥 ࠧ  ஢ ப. ஬
     ⮣, ᫨    䠩 ᮤন  9999 ப,   ࠧ ⮣
       ॡ 㢥, ⮡   ᥪ. 
     㬮砭  ப  4 ⮫.

          ४⨢ %TRUNC  ᥪ ᫨誮   ⨭. 
      ᫥騩 ᨭ⠪:

          %TRUNC

           ꥪ⭮   䠩 ⨭  筮  -

     ࡮ ᥬ 3.0/tasm/#2-2                              = 71 =

       뢮 , 㥬 設⢮ 権  -
     ४⨢ 뤥 .   ⮣   ந  
      ४⨢ %BIN.  ᫨ ⤥쭠 ப 室  -
       , 祬  뢥   ப,  -
     ⮪ ⮬᪨ ᥪ  ⠪ ࠧ 㤥 . ᫨
         㥬 ,   ᯮ ४⨢
     %NOTRUNC (᫨誮    ப  ⮬ 㤥 ७ 
     ᫥).  ⨢ 砥 ᯮ ४⨢  %TRUNC.  
      ᯮ짮  樨  ४祭 ० -
     .

          ४⨢ %NOTRUNC  ᫥騩 ᨭ⠪:

          %NOTRUNC

          ४⨢ %PCNT  ࠧ  "ᥣ:ᬥ饭"  䠩-
      ⨭.   ᫥騩 ᨭ⠪:

          %PCNT ࠧ

      "ࠧ" -  ᫮ ⮫殢,    १ࢨ-
       ᬥ饭  ⥪饬 ᥬ㥬  ᥣ.  ࡮  -
     ᥬ ⠭  ࠧ,  ࠢ 4,    16-⮢
     ᥣ⮢  8  32-⮢ ᥣ⮢  80386. ४-
      %PCNT    ८।  ᯮ㥬  㬮砭
     祭.

          ४⨢ TITLE,    ᯮ짮 ⮫쪮  -
      MASM,    䠩 ⨭.   ४⨢ 
     ᫥騩 ᨭ⠪:

          TITLE ⥪

           "⥪" 㤥 뢮   孥    
     ࠭ ᫥  室 䠩  । , 
      ४⨢ SUBTTL.  ४⨢ TITLE  ᯮ짮   ண-
     ࠬ ⮫쪮  ࠧ.

          ४⨢ %TITLE ࠡ⠥ ⠪,   ४⨢ TITLE,  
      ᯮ짮    ० MASM,  ⠪   ०  Ideal.
      ४⨢  ᫥騩 ᨭ⠪:

          %TITLE "⥪"

          ४⨢ SUBTTL ࠡ⠥ ⮫쪮  ० MASM   -
      䠩 ⨭.   ᫥騩 ᨭ⠪:

          SUBTTL ⥪

           뢮  孥   ࠭ ᫥
      室  䠩    ᫥ ,   ४⨢
     TITLE.


     ࡮ ᥬ 3.0/tasm/#2-2                              = 72 =

          ४⨢ SUBTTL  㪠뢠   ணࠬ  ⮫쪮  ࠧ,
     ᪮쪮 ॡ.   ४⨢  , -
      㤥 뢮  ᫥饩 ࠭ ⨭.

          ४⨢ %SUBTTL ࠡ⠥ 筮 ४⨢  SUBTTL,  
       㪠뢠   ० Ideal,  ⠪   ० MASM.  
     ४⨢  ᨭ⠪:

          %SUBTTL "⥪"

          ४⨢ %TABSIZE   ⠡樨  䠩  ⨭-
     .  ४⨢  ᫥騩 ᨭ⠪:

          %TABSIZE ࠧ

      "ࠧ" -  ᫮ ⮫殢   ﬨ ⠡樨
      䠩 ⨭.  㬮砭  8 ⮫殢.

              室  ⥪    䠩  ⨭
      ᯮ짮 ४⨢ %TEXT,   ᨭ⠪:

          %TEXT ࠧ

      "ࠧ" -  ᫮ ⮫殢, ᯮ㥬  뢮  䠩-
      ⨭ 室 ப. ᫨ ࠧ 室 ப ॢ蠥
      ⮣ ,    㤥  ᥪ,  ७
      ᫥ ப,   ᨬ    ᯮ짮  ४⨢
     %TRUNC  %NOTRUNC.

          ⮡ ࠭      ࠬ   ࠢ  ⨭  
     16-஢ ⥪,   ᯮ짮 ४⨢  %PUSHCTL.  
     ࠭ ⮫쪮  ࠬ ࠢ ⨭,  
     ࠧ   (%INCL,  %NOINCL  ..).    
     ⨭  ࠭.  ४⨢ ᮡ   -
     ப,    뢠 ᯥ樠 ० ⨭,
      ⬥  襭 ७.

          ४⨢ %PUSHCTL  ᨭ⠪:

          %PUSHCTL

          ४⨢ %POPCTL  ⠭  ⥪ ࠬ ࠢ-
      ⨭   ᫥騩 ᨭ⠪:

          %POPCTL

           ४⨢ ⠭ ࠬ ࠢ ⨭
        祭,        ।  ᫥ ४⨢
     %PUSHCTL. 祭 ࠧ஢  ⨭ (%DEPTH, %PCNT  ..)
      ⠭.




     ࡮ ᥬ 3.0/tasm/#2-2                              = 73 =

             18. 䥩 ࡮ ᥬ  Borland C++
     

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

             ᯮ짮 ࡮ ᥬ  -
     ࠬ ++.  ⮩   뢠 ࠬ ᥬ-
     ⢠ Borland ++.   ࡮ ᥬ  ᯮ짮 ⠪
      ࡮ C++  ࡮ . ਢ  ⠡ ᮤন 祭
     ஢ ⮣ ᥬ⢠.

                       Borland ++           18.1
     Ŀ
       த    䠩                     
     Ĵ
      Borland ++         bcc.exe, bccx.exe, bc.exe  bcx.exe    
      ࡮ C++           tcc.exe  tc.exe                       
      ࡮ C            tcc.exe                                  
     

          ਬ, ᫨  ਬ,  ⮡    믮  
     ப:

          bcc -S plusone.cpp

       ࠡ⠥  ࡮ ++,       ᫥-
       ப:

          tcc -S plusone.cpp

          ᫨  䥩  ࡮ ᥬ஬  ᯮ ࡮
     ,    ࠭祭 ᯮ짮 ⮫쪮  
     ப.   砥  Borland ++  ࡮ ++     ࠡ
       ࠬ  ப, ⠪   ஬ ⥣-
     ஢ ।.

          Borland C++  訥    প  ᬥ蠭
     ணࠬ஢  ++   몥 ᥬ  ந쭮 -
       ।⠢  ,   楫  堭  ꥤ
     㫥  ᥬ   ++. 饥  ++ ।⢮ ஥-
      ᥬ஢     ⠢  ⥪ 
     몥 ᥬ אַ  㭪 ++.   믮 ᥬ-
     ஢ ஥    ࡮ ᥬ  -
      ᥬ Borland ++.  ,   ।⠥ ঠ -
     ᥬ  ணࠬ  ⤥ ,  ᠭ 楫-
       몥 ᥬ,  ᥬ஢    ࡮

     ࡮ ᥬ 3.0/tasm/#2-2                              = 74 =

     ᥬ  ⥬ ᪮  ﬨ Borland ++.

          砫    ᬮਬ  ᯮ짮 ஥  Borland
     C++ ᥬ.   ஡ 㤨  ⤥쭮 -
     ᥬ஢  ࡮ ᥬ 㫥  Borland C++   ᫥-
     㥬  맮 㭪権, ᠭ   ࡮ ᥬ-
     ,  ணࠬ, ᮧ  Borland C++.  ,  ᬮ-
     ਬ 맮 㭪権 Borland C++  ணࠬ  ࡮ ᥬ.

              맮  Borland C++ 㭪権 ࡮ ᥬ
     

          筮 C++   ᥬ ᮢ⭮ ᯮ ⥬ ᠭ
     ⤥ 㫥 楫  C++  ᥬ, 樨 -
      ++  ᥬ஢ 㫥 ᥬ   ᫥饩  ᮢ-
     ⭮    ࠧ쭮 ᠭ 㫥.   -
       . 1.18.



     ࡮ ᥬ 3.0/tasm/#2-2                              = 75 =


     Ŀ Ŀ
        室 䠩  몥 ++   室 䠩  ᥬ  
               _䠩.PP                _䠩.ASM         
      
                                                  
                                           ᥬ஢
             ͸              ͸
              Borland C++                 ࡮ ᥬ 
             ;              ;
                                                  
                                                  
     Ŀ Ŀ
          ꥪ 䠩 몠 ++     ꥪ 䠩 몠 ++   
               _䠩.OBJ                _䠩.OBJ         
      
                                                   
                                                   
                    Ŀ   
                                     
                                     
                             ͸
                                TLINK      
                             ;
                                    
                                    
                     Ŀ
                              믮塞 䠩       
                               _䠩.EXE         
                     

          . 1.18    樨,  ᥬ஢    
     Borland C++, ࡮ ᥬ  騪 TLINK

          믮塞 䠩 砥  "ᬥ" 㫥 ++  ᥬ-
     .  横   :

             bcc _䠩_1.cpp _䠩_2.asm

      㪠뢠 Borland C++,   㦭  ᭠砫  ஢
     䠩 _䠩_1.PP  䠩 _䠩_1.OBJ,  ⥬ 맢 -
      ᥬ  ᥬ஢ 䠩 _䠩_2.asm  _䠩-
     _2.obj, ,  ,  맢  騪 TLINK  
     䠩 _䠩_1.OBJ  _䠩_2.OBJ  䠩 _䠩.EXE.

             ᯮ짮    ணࠬ  
     訬 ꥬ   ᥬ, ⠪    ᯮ-
        ࡮ ᥬ  ணࠬ஢  -
      ᥬ     ᥬ୮ 㦥   祢 ᫮
     asm, ⥫쭮 ६      易묨    ++
     ந⥫묨 ⠬   ࠡ  ஥ ᥬ-
     ஬.


     ࡮ ᥬ 3.0/tasm/#2-2                              = 76 =

           ࠧ  室   ᫥ 業:
     ணࠬ, ࠡ騩  ᥬ஬,      -
     ⠫ ࣠樨 䥩  ++    ᥬ.    
     ६     ᯮ짮  ஥ ᥬ Borland C++
     ᠬ 믮 ᯥ䨪 ᥣ⮢, । ࠬ஢, 뫪
      ६ ++  ..,  ⤥쭮 㥬 㭪樨 ᥬ-
         (  )  ᠬ⥫쭮.

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

           ⥯ 㯨  祭 ࠢ   ண-
     ࠬ ࡮ ᥬ  Borland C++.

       ᭮   䥩 ࡮ ᥬ  Borland C++
     

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

          1.   ࡮ ᥬ  ᯮ짮 ᮣ-
               , ਭ  Borland C++.

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

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

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



     ࡮ ᥬ 3.0/tasm/#2-2                              = 77 =

                   ᥬ 㫥  ++
     

           楯樥 ++   ᭠    窨  ७
     몮 ⨯ .    騪  ࠡ-
      ᮣᮢ, ⮡ ࠭஢ ࠢ쭮 ⨯ ।-
       㭪ﬨ 㬥⮢. , 뢠 "४-
     ஢ " (name-mangling), ᯥ稢 室 ଠ
      ⨯ 㬥⮢.  "४஢ "   㭪-
     樨 ⠪ ࠧ, ⮡  ᫮ ଠ  ਭ 㭪-
     樥 㬥.

           ணࠬ   楫  ++,  ४஢ 
     ந室 ⮬᪨  ஧筮  ணࠬ. , 
        ᥬ     ᫥饩   
     ணࠬ  ++,   ᠬ 易 ᯥ ४஢ 
      㫥.   ᤥ, ᠢ  㭪  +  ᪮-
     ஢      ᥬ  㫥.  㥬    ⮬
     Borland ++  䠩 .ASM 㤥 ᮤঠ ࠢ .  ⥬
        ᯮ짮  ᠭ  ॠ쭮  ᥬ୮
     .

          ਬ, ᫥騩  ࠣ  ।  ࠧ-
      ᨨ 㭪樨   test:

          void test()
          {
          }

          void test( int )
          {
          }

          void test( int, int )
          {
          }

          void test( float, double )
          {
          }

          ᫨     ࠬ஬ -S,    
     ᮧ    室  䠩  몥 ᥬ (.ASM).    
     룫廊 (⢥ ⠫ ࠭):

          ;       void test()
          @testSqv       proc    near
                 push    bp
                 mov     bp,sp
                 popo    bp
                 ret
          @testSqv       endp


     ࡮ ᥬ 3.0/tasm/#2-2                              = 78 =

          ;       void test( int )
          @testSqi       proc    near
                 push    bp
                 mov     bp,sp
                 popo    bp
                 ret
          @testSqi       endp

          ;       void test( int, int )
          @testSqii      proc    near
                 push    bp
                 mov     bp,sp
                 popo    bp
                 ret
          @testSqii      endp

          ;       void test( float, double )
          @testSqfd      proc    near
                 push    bp
                 mov     bp,sp
                 popo    bp
                 ret
          @testSqfd      endp

            ᯮ짮 Extern "C"  饭 
     

                ᯮ짮  ᥬ 㭪
     ࠢ ,    ᭨,    룫拉
     ࠢ. ᯮ짮 ᪮४஢     
     ᥬ 㭪樨     ⬠  饬.
     Borland ++  ।    ணࠬ  ++  ⠭
      㭪権 ++,   ᫥饬 ਬ:

          extern "C" {
               int add(int *a, int b);
          }

           㭪樨,    䨣 ᪮,  
       ⨫ 몠 .   ᮮ⢥騥 ।
      ᥬ୮ 㫥:

                public _add
           _add proc

           ᥬ୮ 㭪樨   extern "C"  
        ஡   "⪮४஢묨 ".  ⮬
       ⠥ .



     ࡮ ᥬ 3.0/tasm/#2-2                              = 79 =

                           ᥣ
     

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

             ࠡ ᥣ⮢  ᥬ  -
      ॠ  쭮 ᫮.   ,  ࡮ ᥬ
     ᠬ 믮   ࠡ   ॠ樨      
     ᥣ⮢,  ᮢ⨬  Borland C++,  ᯮ짮 饭-
      ४⨢ । ᥣ⮢.

        饭 ४⨢ । ᥣ⮢  Borland C++
     

          ४⨢ .MODEL  㪠뢠 ࡮ ᥬ,   ᥣ,
     ᮧ   饭 ४⨢  । ᥣ⮢,
       ᮢ⨬  ࠭   (TINY - -
     ,  SMALL - ,  COMPACT -  ⭮,  MEDIUM  -  ।,
     LARGE让    HUGE  -  ஬)  ࠢ 砥 
     㬮砭 ⨯ (FAR  NEAR) 楤, ᮧ  ४⨢
     PROC.    ,  ।    ४⨢ .MODEL,
     ᮢ⨬  ﬨ Borland C++  ᮮ⢥騬 .

          , 饭 ४⨢ ।  ᥣ⮢  .DATA,
     .CODE,  .DATA?, .FARDATA, .FARDATA?  .CONST  ᥣ,
     ᮢ⨬  Borland C++.

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

             .MODEL   SMALL       ;    
                                  ; (   )
             .DATA                ; 樠 ᥣ ,
                                  ; ᮢ⨬  Borland C++
             EXTRN   _Repetitions:WORD ; 譨 䨪
             PUBLIC  _StartingValue ; 㯥  㣨 㫥
     _StartValue     DW   0
             .DATA?               ; 樠஢ ᥣ
                                  ; , ᮢ⨬  Borland C++
     RunningTotal    DW   ?
             .CODE                ; ᥣ , ᮢ⨬ 
                                  ; Borland C++
             PUBLIC  _DoTotal
     _DoTotal        PROC         ; 㭪 (   
                                  ; 뢠   맮
                                  ;  ⨯)
             mov     cx,[_Repetitions] ; 稪 믮

     ࡮ ᥬ 3.0/tasm/#2-2                              = 80 =

             mov     ax,[_StartValue]
             mov     [RunningTotal],ax ;  砫쭮
                                  ; 祭
     TotalLoop:
             inc     [RunningTotal] ; RunningTotal++
             loop    TotalLoop
             mov     ax,[RunningTotal] ;  筮
                                  ; 祭 (१)
             ret
     _DoTotal        ENDP
             END

          ᠭ   ᥬ 楤 _DoTotal  ᯮ짮-
          뢠  Borland C++  
     :

             DoTotal();

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

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

          ⮡ ᮧ  㫥 DOTOTAL.ASM  SHOWTOT.CPP 믮-
      ணࠬ SHOWTOT.EXE,  :

          bcc showtot.cpp dototal.asm

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

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


     ࡮ ᥬ 3.0/tasm/#2-2                              = 81 =

           ४⨢ । ᥣ⮢  Borland C++
     
          ᭥ ⥯ ஡ ࣠樨 䥩 ࡮ ᥬ-
         몠 ++,   ᯮ ४⨢ ।
     ᥣ⮢ ண ⨯ (⠭ ४⨢ । ᥣ-
     ⮢).  ਬ, ᫨    㫥 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

            ४⨢ । ᥣ⮢  ⮫쪮 -
     ,   ⠪  㦥 ⠥.   ⮬     ᯮ짮  
     ணࠬ   몥 ++ ࠧ    㤭 -
     .   ࣠樨 䥩  Borland C++  饬 砥  
     ᯮ짮    ४⨢ । ᥣ⮢  
     २.  ᫨   ⥬     ᯮ짮  
     ࣠樨 䥩  Borland C++  ४⨢ ।
     ᥣ⮢,  ਤ ஢ ४ ᥣ, -
     ⢥騥 ᯮ㥬    몥 ++  .

          ⥩訩 ᯮᮡ  ।,    ᥣ ४⨢
      ᨩ  롨      ⮩    
     ணࠬ Borland ++,  砥  樨  
     ணࠬ  Borland ++       ࠬ஬
     -S,  ⥬ ᠬ ⠢ Borland ++ ᣥ஢ ᥬ

     ࡮ ᥬ 3.0/tasm/#2-2                              = 82 =

      ᮮ⢥饩 ணࠬ  Borland ++.    ⮩  ᨨ
          ᬮ    ᥣ ४⨢,  -
     㥬 ࡮ C;   ᪮       ᥬ
      ணࠬ.

           ⠪  ᬮ,   룫拉 ᮮ⢥-
     騥  ४⨢,  ᪮஢   ࠧ ( -
     ࠬ -S)  ᯮ짮 TDUMP - ⨫, ⠢塞 ࡮ -
     ᥬ஬,  ⮡    ।  ᥣ.  -
      ᫥  ப:

         tdump -OI segdef module.obj



     ࡮ ᥬ 3.0/tasm/#2-2                              = 83 =

       祭  㬮砭:  室 㦠 ᥣ?
     

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

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

           祭 ॣ஢  室  ᥬ  Borland C++
                                                           18.2
         Ŀ
                      CS                          DS          
         Ĵ
          ⭠         _TEXT                    DGROUP         
                       _TEXT                    DGROUP         
          ⭠        _TEXT                    DGROUP         
          ।        _䠩_TEXT              DGROUP         
                  _䠩_TEXT              DGROUP         
          ஬      _䠩_TEXT   _뢠饣_䠩_DATA
         

           "_䠩" -     ᥬ,  "_-
     뢠饣_䠩" -    Borland C++, 뢠饣 
      ᥬ.

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

             㭪樨  ᥬ, 뢠  ணࠬ 
     몥 ++,  室 㦠 ᥣ ॣ?  ⬥⨬ 
     砫,     ਤ ( ⮣, ⮣  ᫥
     ) 㦠 ॣ SS  CS:   쭨 맮, -
     室   ॣ CS  ⮬᪨  ⠭  
     㦭 祭,  ॣ SS ᥣ 㪠뢠  ᥣ ⥪ 
      室 믮 ணࠬ    ᫥  (᫨ ⮫쪮
        ணࠬ,   "४砥" ⥪.  ⮬ -
     砥  㦭 ⪮ ,   ).

           ES   ᥣ ᯮ짮 ⠪,   ॡ-
     .     ⠭  ⠪ ࠧ, ⮡  㪠뢠

     ࡮ ᥬ 3.0/tasm/#2-2                              = 84 =

        쭨 ⨯ 饭,    㧨    ES  ᥣ-
     -ਥ  ப 㭪樨.

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

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

      :

                       .
                       .
                       .
                       .FARDATA
     Counter           DW     0
                       .
                       .
                       .

     ࡮ ᥬ 3.0/tasm/#2-2                              = 85 =

                       .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      ⠭ (    ਢ
     ਬ).  ᫨   㭪樨  ᥬ   頥-
        DGROUP,  । 室    ࠢ 易⥫쭮 㦭
     ⠭ ᮤন DS,  ⠪   Borland C++ ࠧ㬥-
     ,  ॣ DS  .

           ᯮ짮  㭪,  뢠  ++, ᢥ塮-
     让   ࠡ  ॣ஬ DS 㦭 ᪮쪮 --
     .   ᢥ塮让   Borland C++ ᮢᥬ  ᯮ-
      DGROUP.   ⮣     ᢮  ᮡ⢥
     ᥣ  ,    쭨 ᥣ⮬ ⭮⥫쭮
      㣨 㫥    ணࠬ  (  ᮢ⭮  ᯮ㥬
      ᥣ ).   ᯮ짮 ᢥ塮让 
       室  㭪 ॣ DS   ⠭ ⠪
     ࠧ,  ⮡  㪠뢠   쭨 ᥣ  
          㭪樨, ਬ:

                       .
                       .
                       .
                       .FARDATA
                       .
                       .

     ࡮ ᥬ 3.0/tasm/#2-2                              = 86 =

                       .
                       .CODE
                       PUBLIC  _AsmFunction
     _AsmFunction      PROC
                       push    ds
                       mov     ax,@FarData
                       mov     ds,ax
                       .
                       .
                       .
                       pop     ds
                       ret
     _AsmFunction      ENDP
                       .
                       .
                       .

          ⨬,   室 ﭨ ॣ DS ࠭ 
     室  㭪 _AsmFunction   樨  PUSH    ।
     室 ⠭   樨 POP.   ᢥ-
     让   Borland C++ ॡ, ⮡  㭪樨 -
     ࠭﫨 ॣ DS.

                 饤㯭  譨 䨪
     

          ணࠬ ࡮ ᥬ  뢠 㭪樨 ++  -
       譨 ६ .  ணࠬ Borland C++ -
      ࠧ  뢠 饤㯭 (PUBLIC)  㭪樨  ࡮
     ᥬ    ६ ࡮ ᥬ.  ᫥ -
     ,    ࡮ ᥬ ⠭ ᮢ⨬  Borland
     C++ ᥣ ( ᠭ  । ࠧ), ⮡ ᮢ⭮
     ᯮ짮 㭪樨  ६ Borland C++  ࡮ ᥬ,
     㦭 ᮡ ᪮쪮  ࠢ.

                         ન   
     

          ᫨    몥   ++,      譨  ⪨
       稭   ᨬ  ન (_).   
     ++ ⠢ ᨬ ન । ᥬ    譨
     㭪権   ६    ᯮ짮  ணࠬ  /++
     ⮬᪨,  ⮬  ॡ ⠢  ᠬ ⮫쪮  
     ᥬ .   㡥,   ᥬ -
     饭  㭪  ६  稭  ᨬ ન-
     ,    ஬ ⮣,    ⠢  ।  
     ᥬ 㭪権  ६,    騬  -
     뢠  ணࠬ  몥 /++.

          ਬ, ᫥ ணࠬ  몥  (link2asm.cpp):

           extrn int ToggleFlag();
           int Flag;

     ࡮ ᥬ 3.0/tasm/#2-2                              = 87 =

           main()
           {
               ToggleFlag();
           }

     ࠢ쭮     ᫥饩  ணࠬ     ᥬ
     (CASMLINK.ASM):

                 .MODEL  SMALL
                 .DATA
                 EXTRN   _Flag:word
                 .CODE
                 PUBLIC  _ToggleFlag
     _ToggleFlag PROC
                 cmp     [_Flag],0      ; 䫠 襭?
                 jz      SetFlag        ; , ⠭ 
                 mov     [_Flag],0      ; ,  
                 jmp     short EndToggleFlag ; 믮
     SetFlag:
                 mov     [_Flag],1      ; ⠭ 䫠
     EndToggleFlag:
                 ret
     _ToggleFlag ENDP
                 END

           ᯮ짮  ४⨢ EXTERN  PUBLIC ᯥ䨪
     몠  ࠢ쭮   ᫥饩 ணࠬ  ᥬ-
      (CSPEC.ASM):

                 .MODEL  SMALL
                 .DATA
                 EXTRN   C Flag:word
                 .CODE
                 PUBLIC  C ToggleFlag
     ToggleFlag  PROC
                 cmp     [Flag],0       ; 䫠 襭?
                 jz      SetFlag        ; , ⠭ 
                 mov     [Flag],0       ; ,  
                 jmp     short EndToggleFlag ; 믮
     SetFlag:
                 mov     [Flag],1       ; ⠭ 䫠
     EndToggleFlag:
                 ret
     ToggleFlag  ENDP
                 END

                ਬ砭: ⪨,        뫪 
           ணࠬ   (⠪,  SetFlag)  ॡ ।-
            ᨬ ન.

          ࡮ ᥬ  ⮬᪨         Flag   
     ToggleFlag   ꥪ 䠩  ।  ᨬ ન-
     .

     ࡮ ᥬ 3.0/tasm/#2-2                              = 88 =


      稬    ய ᨬ  䨪
     

            䨪஢ ࡮ ᥬ 筮  ࠧ砥
       ய 㪢 (孨   ॣ).  ᪮
      ++  ࠧ, ⥫쭮  ⠪ ࠧ稥   ࡮
     ᥬ ( ࠩ    䨪஢,  ᮢ-
     ⭮  ᯮ ᥬ஬  ++).    ᤥ  -
      ࠬ஢ /ML  /MX.

          ४⥫ (ࠬ)   ப  /ML  ਢ  
     ⮬,     ࡮ ᥬ   䨪  
     ய ᨬ  ࠧ ( ࠧ묨). -
        ப /MX 㪠뢠 ࡮ ᥬ,  -
        ய  ᨬ  (ᨬ  孥   ॣ)
     㦭 ࠧ  饤㯭 (PUBLIC) 䨪, 譨
     (EXTRN) 䨪  (GLOBAL) 䨪  -
      (COMM) 䨪.   設⢥ 砥 ᫥  ⠪
     ᯮ짮 ࠬ /ML.

                                ⮪
     

            ணࠬ ࡮ ᥬ  ᢮ 
       ६    ࠧ (8, 16, 32   .
     .),  饬 砥    ६  ᮮ⢥⢨
       ࠧ஬. ਬ, ᫨  뢠 ᫮  ⮢ -
     ६,  筮  ਢ  ஡:

                 .
                 .
                 .
     SmallCount  DB   0
                 .
                 .
                 .
                 mov   WORD PTR [SmallCount],0ffffh
                 .
                 .
                 .

          ⮬ , ⮡   ᥬ EXTRN,  ஬
     뢠 ६ ++,   ࠢ ࠧ  -
     ६,  ⠪   樨 ࠧ 㯠  ६ ++
     ࡮ ᥬ ᭮뢠    ᠭ.

          ᫨  ணࠬ  몥 ++ ᮤন :

             char c

       ᥬ:


     ࡮ ᥬ 3.0/tasm/#2-2                              = 89 =

                      .
                      .
                      .
     EXTRN            c:WORD
                      .
                      .
                      .
                      inc  [c]
                      .
                      .
                      .

      ਢ  쬠  訡, ᪮ ᫥ ⮣,
            몥  ++ ६ c 㢥 । 256
     ࠧ,  祭 㤥 襭,  ⠪   ᠭ,  -
       ࠧ஬    ᫮,      OFFSET c + 1 㤥
     㢥稢 ४⭮,  ਢ  ।᪠㥬 १-
     ⠬.


     ࡮ ᥬ 3.0/tasm/#2-2                              = 90 =


           ⨯    ++   ᥬ  ᫥饥
     ᮮ⭮襭:

     Ŀ
           ++                         ᥬ࠳
     Ĵ
         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     
     

                     譨 쭨 䨪
     

          ᫨  ᯮ 饭 ४⨢ । ᥣ-
     ⮢,   ᠭ 䨪஢ EXTRN  ᥣ 쭥 ⨯
       ࠧ    ᥣ, ⠪   ࡮  ᥬ-
       ᬠਢ  䨪, ᠭ   ᥣ,
      易   ᥣ⮬.   ᢮ ⪨: -
      ᥬ   ஢  樨  -
     , ᠭ,  譨 (EXTRN),     ᥣ  
     ⮬     砥 室  ᣥ஢ ।-
      ᥣ  ᮮ ,  뫠 ⪠   -
      ६,  ᥣ   㦥 ४ 祭-
     .      ࡮ ᥬ   뫮  ⠪
     譨 䨪 ࠢ ,        ᯥ
      ⥯ ஢ન  樨  ᥣ.

          ᫨  -⠪ ,   ᯮ짮   
     ᠭ  譥 䨪 ᥣ  ४-
      । ᥣ⮢,  ⥬  ४⨢  EXTRN  
     ⮣  䨪  ᠭ ᥣ.  쭮 -
     ⥫쭮, ⮬ ᫨    ᯥ稢 㧪 ४-
     ⭮  祭  ᥣ   饭  ,   ᥣ
      ࠧ ᠭ  EXTRN    䨪஢  쭥
     ⨯        ᥣ⮢.  ।,  ਬ,    䠩
     FILE1.ASM ᮤন ᫥饥:

                          .
                          .
                          .

     ࡮ ᥬ 3.0/tasm/#2-2                              = 91 =

                          .FARDATA
     FileVariable         DB   0
                          .
                          .
                          .

         䠩 FILE2.ASM,  ᮤন:

                          .
                          .
                          .
                          .DATA
                          EXTRN  FileVariable:BYTE
                          .CODE
     Start                PROC
                          mov   ax,SEG FileVariable
                          mov   ds,ax
                          .
                          .
                          .

          SEG FileVariable    㤥   ४⭮ 祭
     ᥣ.  ४⨢ EXTRN ࠧ饭   ⢨ ४⨢
     䠩 FILE2.ASM DATA,  ⮬ ࡮ ᥬ ⠥,  -
      FileVariable  室      ᥣ  DATA
     䠩 FILE2.ASM,    쭥 ᥣ DATA.

           ᫥饬  FILE2.ASM SEG FileVariable 㤥 
     ४⭮ 祭 ᥣ:

                          .
                          .
                          .
                          .DATA
     @CurSeg              ENDS
                          EXTRN   FileVariable:BYTE
                          .CODE
     Start                PROC
                          mov   ax,SEG FileVariable
                          mov   ds,ax
                          .
                          .
                          .

          ""  ⮨  ⮬,   ४⨢ @CurSeg ENDS -
     蠥  ᥣ  .DATA,  ⮬,   ६ FileVariable
     뢠,   ,   ᥣ⭠ ४⨢  -
     .

                      ப 騪
     

          ⥩訩 ᯮᮡ ᪮ 㫨 Borland C++  ﬨ

     ࡮ ᥬ 3.0/tasm/#2-2                              = 92 =

     ࡮ ᥬ ⮨  ⮬, ⮡    -
      Borland C++,  ᫥ 祣  믮  ⠫ ࠡ. 
      㦭  ப Borland C++  믮  
     室  , 맮 ࡮ ᥬ  ᥬ஢, 
     ⥬ 맮 ⨫ TLINK   ꥪ 䠩  -
     塞 䠩.  ।, ਬ,     ணࠬ,
       䠩  몥  MAIN.CPP  STAT.CPP  䠩  -
     ᥬ SUMM.ASM  DISPLAY.ASM.  ப:

             bcc main.cpp stat.cpp summ.asm display.asm

     믮   䠩 MAIN.CPP  STAT.CPP, ᥬ஢
     䠩 SUMM.ASM  DISPLAY.ASM     ꥪ
     䠩,  ⠪  樠樨 ++  室 
     㭪権  믮塞 䠩 MAIN.EXE.      䠩  -
     ᥬ 㦭 ⮫쪮   ७ .ASM.

          ᫨  ᯮ ⨫ TLINK   ⮭  ०,  
     㥬 ࡮ ᥬ஬ ꥪ 䠩 ।⠢ ᮡ
     ⠭ ꥪ 㫨  ࠡ뢠 ⠪,    ꥪ-
      㫨 ++.  ᠭ TLINK  ⮭ ० .  ਫ-
      .



     ࡮ ᥬ 3.0/tasm/#2-2                              = 93 =

          ⢨  ࡮ ᥬ஬  Borland C++
     

          ,   ,   㦭 ந  
     ᮢ⨬  ++ 㫨 ᥬ, 㦭 ,   
       㭪樨 ᥬ,  뢠   ++.    㦭
     ஠஢  :  祭 । ࠬ஢,
     ᯮ짮 ॣ஢   祭  뢠  ணࠬ-
     .

                           । ࠬ஢
     

          Borland C++ । 㭪 ࠬ  १  ⥪.  ।
     맮 㭪樨 ++ ᭠砫  । ⮩ 㭪樨 -
     ࠬ,  稭  ᠬ ࠢ ࠬ     ,  
     ⥪.  ++ 맮 㭪樨:

          .
          .
          .
          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.

              㭪樨 ᥭ  ⥪ ࠬ  
     室 ⠬,      ᯮ. ⮬ ।-
     ⢥  ᫥  맮 㭪樨 Borland C++ ࠨ 㪠-
     ⥫ ⥪ ⭮  ᮮ⢥⢨  祭, ஥  
     । ᥭ  ⥪ ࠬ஢ (ࠬ, ⠪ ࠧ, -
     뢠).   ।饬 ਬ  ࠬ (    
     )    ⥪  6 ,  ⮬ Borland C++ -
      祭 6  㪠⥫ ⥪,  ⮡   ࠬ
     ᫥ 饭  㭪樨 Test.    砥 
     ⮬,   ᮮ⢥⢨  ᯮ㥬묨  㬮砭 ᮣ襭ﬨ
     /C++  㤠 ࠬ஢  ⥪ ⢥砥 뢠  ண-
     ࠬ.

          㭪樨 ᥬ    ࠬࠬ, ।-
       ⥪, ⭮⥫쭮 ॣ BP. ਬ, ।, 

     ࡮ ᥬ 3.0/tasm/#2-2                              = 94 =

     㭪 Test  ।饬 ਬ  ।⠢  ᮡ  ᫥
     㭪  ᥬ (PRMSTACK.ASM):

                  .MODEL   SMALL
                  .CODE
                  PUBLIC   _Test
     _Test        PROC
                  push   bp
                  mov    bp,sp
                  mov    ax,[bp+4]    ;  ࠬ 1
                  add    ax,[bp+6]    ; ਡ ࠬ 2
                                      ;  ࠬ 1
                  sub    ax,[bp+8]    ;   㬬 3
                  pop    bp
                  ret
     _Test        ENDP

            ,  㭪  Test  砥  ।  
     ணࠬ  몥  ࠬ १ ⥪, ⭮⥫쭮 ॣ
     BP.  (᫨  , BP   ᥣ ⥪.)  㤠
      ,   ࠬ ⭮⥫쭮 BP?

           .  18.2 ,   룫廊 ⥪ । 믮
     ࢮ 樨  㭪樨 Test:

          i = 25;
          j = 4;
          Test(1, j, 1);

                              .                       .
                              .                       .
                              .                       .
                                                     
                              Ĵ
                                                     
                              Ĵ
                     SP              
                              Ĵ
                     SP + 2           25 (i)         
                              Ĵ
                     SP + 4           4 (j)          
                              Ĵ
                     SP + 6              1           
                              Ĵ
                                                     
                              Ĵ
                                                     
                              .                       .
                              .                       .
                              .                       .

          . 18.2 ﭨ ⥪ । 믮 ࢮ  -
     樨 㭪樨 Test

     ࡮ ᥬ 3.0/tasm/#2-2                              = 95 =


          ࠬ 㭪樨 Test ।⠢ ᮡ 䨪஢  -
      ⭮⥫쭮 SP, 稭  祩,     -
     ,  ஬ ࠭  , ᥭ 㤠   -
     . ᫥ 㧪 ॣ BP 祭 SP   -
       ࠬࠬ ⭮⥫쭮 BP. ,   ᭠砫 -
      BP,  ⠪   뢠饩 ணࠬ ।,   
       BP    㤥.  ᥭ  ⥪ BP  
     ᬥ饭  ⥪.  . 18.3  ﭨ ⥪ ᫥ -
      ᫥ ப :

           .
           .
           .
           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
                           Ĵ
                                                  
                           Ĵ
                                                  
                           .                       .
                           .                       .
                           .                       .

          . 18.3 ﭨ ⥪ ᫥ 権 PUSH  MOVE

          ࣠ । ࠬ஢ 㭪樨 १ ⥪  ᯮ-
        ᪨  ६ -  ⠭-
      ਥ  몥 ++.   , , ᪮쪮 -
     ஢  ணࠬ  몥 ++:  ᠬ  ࠬ ᥣ
     ࠭  ⥪  ,  ।⢥ ᫥騬   -
       ⥪ ᮬ ,  ᫥騩 頥 ࠬ
     ࠭ ।⢥ ᫥ ᠬ    ࠬ    ..
     ᪮  冷    ⨯  । ࠬ஢ ,  
     ᥣ    ⥪.

     ࡮ ᥬ 3.0/tasm/#2-2                              = 96 =


          ࠭⢮  ᪨  ६  -
     १ࢨ஢,     SP  ॡ㥬  ᫮ .  ਬ,
     ࠭⢮  ᪮ 쭮 ᨢ ࠧ஬   100
        १ࢨ஢,  ᫨  㭪 Test  -
     権:

          .
          .
          .
          push  bp
          mov   bp,sp
          sub   sp,100
          .
          .
          .

        . 18.4


     ࡮ ᥬ 3.0/tasm/#2-2                              = 97 =


                               .                       .
                               .                       .
                               .                       .
                                                      
                               Ĵ
                  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
                               Ĵ
                                                      
                               Ĵ
                                                      
                               .                       .
                               .                       .
                               .                       .

          . 18.4 ﭨ ⥪ ᫥ 権 PUSH,  MOVE  SUB

          ᪮   ⥪,  ࠭ ᪨  -
      ६, ।⠢ ᮡ  訥  , 祬 BP,
      饭  ᪨    ६  ᯮ
     ⥫쭮 ᬥ饭. ਬ, :

           mov   byte ptr  [bp-100]

      祭 ࢮ  ࠭ १ࢨ஢ 100-⮢-
       ᨢ.   । ࠬ஢ ᥣ ᯮ -
     ⥫쭠  ⭮⥫쭮 ॣ BP.

            뤥 ࠭⢮  ᪨  
     ६ ᠭ  ᯮᮡ,  ࡮ ᥬ ।ᬮ-
     ७ ᯥ樠쭠  ४⨢ LOCAL,  ⢥  -
     頥 뤥    ᢠ   ᪨ -
       ६.      楤  砥  ४⨢
     LOCAL,  ࠧ㬥,   ।   楤-
      ᪨  ६. ਬ, ४⨢:

     ࡮ ᥬ 3.0/tasm/#2-2                              = 98 =


          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 ; 뤥 ࠭⢮ 
                                       ; ᪨ 
                                       ; ६
                     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           ; ⠭ 㪠⥫
                                        ; ⥪ 뢠饩 ணࠬ

     ࡮ ᥬ 3.0/tasm/#2-2                              = 99 =

                     ret
     _TestSub        ENDP
                     .
                     .
                     .

            ਬ ᫥    ,  ࢮ
       ᫥  ।  ᪮ 쭮 ६
     ।⠢ ᮡ ⨯   ⮩  ६:  BYTE,  WORD,
     DWORD,  NEAR  ..  ஥  ᫥ ।  -
     ᪮ 쭮 ६ -  ᫮ ⮢ 㪠  -
     , १ࢨ㥬   ६.    -
     ⥫  । ᯮ㥬 ᪨  ᨢ
     (᫨  ᯮ). ᫨   ய饭,  १ࢨ-
        㪠 ⨯.   ⮣ LocalArray ⮨ 
     100 ⮢ ࠧ஬  1 ,  LocalCount -   -
      ࠧ஬  ᫮ (. ਬ).

          ⬥⨬ ⠪,  ப  ४⨢ LOCAL   ਬ-
       蠥  =AUTO_SIZE.  , 稭饥  
     ࠢ⢠, 易⥫쭮. ᫨  ,  ⪠, ᫥-
        ࠢ⢠,  ⠭  祭 ᫠  
     ॡ㥬 ᪮ 쭮 .    ⥬ ᯮ-
         뤥  ᢮   -
     ᪨  ६, ⠪  ४⨢ LABEL ⮫쪮 -
      ⪨              
     .   , ४⨢ LOCAL  뤥   -
     ᪨  ६,    ⪨, -
          ᯮ짮   뤥 ,  ⠪  
     㯠  ᪨  ६.

          祭 㤮 ᢮⢮ ४⨢ LOCAL  砥    ⮬,
         ⢨  ⮪ ᪨  ६ 
     饣 ࠧ ᪨  ६  ࠭祭  ⮩
     楤ன,  ன  ᯮ, ⮬   ᢮-
      ᯮ짮  ᪮ 쭮  ६    㣮
     楤.

            ,   ४⨢ LOCAL  ।  
     ᯮ짮  ⮬᪨  ६   . ⬥⨬,
       ᯮ짮  ப ४⨢ LOCAL    -
     襭  㣮  祭.

          , Borland  C++ ࠡ⠥  ࠭栬 ⥪ ⠪ ,  
       ᠫ.      ᪮஢  ᪮쪮  㫥
     Borland  C++   ࠬ஬ -S  ᬮ,    ᥬ
      Borland C++   ⠬ ᮧ  ᯮ ࠭
     ⥪.

              ४᭮,          㤭.
     -, ⠪ ᯮᮡ 㯠  ࠬࠬ,  ஬ ᯮ-
      ﭭ ᬥ饭 ⭮⥫쭮 BP 筮  ⥭:
       ⮬    ⮫쪮  訡,  ᫨   㣮

     ࡮ ᥬ 3.0/tasm/#2-2                             = 100 =

     ࠬ,  㣨 ᬥ饭 㪠⥫ ⥪    㭪樨  
     .  ।, ਬ,  㭪 Test ਭ
      ࠬ:

          Test(Flag, i, j, 1);

           i 室  ᬥ饭 6,    ᬥ饭 4, j -  
     ᬥ饭 8,   6  ..  ᬥ饭 ࠬ஢  ᯮ짮-
      ४⨢ EQU:

                         .
                         .
                         .
           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 ⥬,    ᯮ짮 ।      -
      ⪨     祭,    ⠭-
     .

     ࡮ ᥬ 3.0/tasm/#2-2                             = 101 =


          ਬ, ।,     㭪 FillSub  -
      뢠  ++ ᫥騬 ࠧ:

          extern "C" {
            void FillSub(
              char *FillArray,
              int Count,
              char FillValue);
          }

             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 ⮬᪨ 뢠 ࠧ-
      ࠧ ⮢   쭥 ⨯.

                          ࠭ ॣ஢
     

           ⢨ ࡮ ᥬ  Borland C++ 뢠
      ணࠬ  몥 ++ 㭪樨 ᥬ    
     㣮,    ⮬   ࠭ ॣ BP, SP, CS, DS
      SS.    믮 㭪樨 ᥬ  ॣ  
     ,        뢠  ணࠬ  
       筮 ⠪ 祭,        맮.

     ࡮ ᥬ 3.0/tasm/#2-2                             = 102 =

      AX, BX, CX, DX  ES,  ⠪ 䫠  ந쭮 -
     .

           DI  SI ।⠢ ᮡ ᮡ 砩, ⠪  
     Borland C++   ᯮ  ॣ஢ ६.  ᫨ 
     㫥 ++,   ண 뢠  㭪    ᥬ,
     ᯮ짮 ॣ஢ ६ ࠧ襭,    -
     ࠭ ॣ 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))                      
      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, ᫨ ᯮ  権  饩 窮.


     ࡮ ᥬ 3.0/tasm/#2-2                             = 103 =

           ࠬ  ⮨  ᪮쪮  ᫮.  ,
     騥  1  2 ,   ॣ AX,  -
       4  -  ॣ AX:DX. 塠⮢  
     ,  ॢ騥 4   ࠭   -
     ᪨ ,  ⮬   㪠⥫   -
     ᪨ .    㪠⥫, 㪠⥫  , -
          ⨯ (NEAR),    ॣ AX,  
     㪠⥫ 쭥 ⨯ -   ॣ஢ AX:DX.

           ᬮਬ 뢠    ணࠬ    몥  ++
     㭪  ᥬ     FindLastChar,  -
      頥 㪠⥫  ᫥ ᨬ । ப.
      몥 ++ ⨯ ⮩ 㭪樨 룫拉  ᫥騬 ࠧ:

          extern char * FindLastChar(char * StringToScan);

      StringToScan -   ப,  ன   -
      㪠⥫  ᫥ ᨬ.

          㭪 FindLastChar  ᫥騩 :

                       .MODEL  SMALL
                       .CODE
                       PUBLIC _FindLastChar
     _FindLastChar            PROC
                       push  bp
                       mov   bp,sp
                       cld             ;  ப 樨 㦭
                                       ; 믮   אַ
                                       ; ࠢ
                       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.

     ࡮ ᥬ 3.0/tasm/#2-2                             = 104 =


              맮 㭪樨 ࡮ ᥬ  Borland C++
     

            ᬮਬ ਬ ணࠬ  Borland C++,  -
     饩  㭪  ࡮  ᥬ.      ࡮   ᥬ
     COUNT.ASM ᮤন 㭪 LineCount,  頥 祭
     稪 ᫠ ப  ᨬ  । ப:

     ; 뢠  ++ 㭪  ᥬ    
     ;   ᫠ ப  ᨬ  饩 㫥
     ; "ப".
     ;
     ; ⨯ 㭪樨:
     ;      extern unsigned int LineCount(char * near StringToCount,
     ;             unsigned int near * CharacterCountPtr);
     ;
     ; :
     ;      char near * StringToCount: 㪠⥫  "ப", 
     ;      ன 㦭 믮  ப.
     ;
     ;      unsigned int near * CharacterCountPtr: 㪠⥫ 
     ;      楫 ६,   㦭  祭
     ;      稪
     NEWLINE      EQU   0ah        ; ᨬ ॢ ப  
                  .MODEL  SMALL
                  .CODE
                  PUBLIC  _LineCount
     __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 ;   ப?
                  jnz   LineCountLoop ; , ஢
                                   ; ᫥騩 ᨬ
                  inc   dx         ; ,   
                                   ; ப
                  jmp   LineCountLoop
     EndLineCount:
                  inc   dx         ;  ப, 

     ࡮ ᥬ 3.0/tasm/#2-2                             = 105 =

                                   ; 蠥 㫥 ᨬ
                  mov   [bx],cx    ;  祭 ६-
                                   ; 稪
                  mov   ax,dx      ;  稪 ப 
                                   ; ⢥ 祭 稪
                  pop   si         ; ⠭ ॣ஢
                                   ; ६ 뢠饩
                                   ; ணࠬ
                  pop   bp
                  ret
     _LineCount         ENDP
                  END

          騩   몥 ++   CALLCT.CPP  ।⠢-
      ᮡ ਬ 맮 㭪樨 LineCount:

          char * TestString="Line 1\nline 2\nline 3";
          extern "C" {
                 unsigned int LineCount(char * StringToCount,
                 unsigned int near * CharacterCountPtr); }
          main()
          {
             unsigned int LCount;
             unsigned int CCount;

             Lcount = LineCount(TestString, &CCount);
             printf("Lines: %d\nCharacters: %d\n", LCount, CCount);
          }

                   -
      ப:

             bcc -ms callct.cpp count.asm

            , 㭪 LineCount 㤥 ࠡ  ⮫쪮
        ணࠬ  몥 ++,   ᯮ
       ,  ⠪   㣨  ࠧ 㪠⥫
      ᮢ   ⥪  .  ਢ  ਬ  ᨨ  㭪樨
     LineCount (COUNTLG.ASM),   㤥 ࠡ  ணࠬ 
     ++, ᯮ騬    (   : -
      । 쭨 㪠⥫, 㭪 LineCount ⠪ -
     ᠭ,  㭪 쭥 ⨯):

     ; 뢠  ++ 㭪  ᥬ   ᫠
     ; ப  ᨬ  饩 㫥 "ப".
     ;
     ; ⨯ 㭪樨:
     ;      extern unsigned int LineCount(char * far StringToCount,
     ;             unsigned int far * CharacterCountPtr);
     ;
     ; :
     ;      char far * StringToCount: 㪠⥫  "ப", 
     ;      ன 㦭 믮  ப.

     ࡮ ᥬ 3.0/tasm/#2-2                             = 106 =

     ;
     ;      unsigned int far * CharacterCountPtr: 㪠⥫ 
     ;      楫᫥ ६,   㦭 
     ;      祭 稪
     NEWLINE      EQU   0ah        ; ᨬ ॢ ப  
                  .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         ; ,   
                                   ; ப
                  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


     ࡮ ᥬ 3.0/tasm/#2-2                             = 107 =

          ணࠬ COUNTLG.ASM  ᪮  CALLCT.CPP   -
      ᫥饩  ப:

          bcc -ml callct.cpp countlg.asm



     ࡮ ᥬ 3.0/tasm/#2-2                             = 108 =

           ᠭ  몥 ᥬ 㭪権-⮢ ++
     

             㭪-   ++  楫  
     몥  ᥬ,       .  ਬ,   㭪-
     樨- ᮢ ++   "⪮४஢" ,   
     ᯥ稢   ᮣᮢ ⨯  㭪-
     権    ८। 㭪権,   ᥬ-
       㭪     筮,    ++  
      㭪樨-.   㯠   ६-⠬  
      ⮢  ᥬ୮  । STRUC, ।-
     饥  ६-  筮 ᮢ騬  ࠧࠬ  
     ᯮ.  ᫨    ந,   -
     ⢮  㣨 ६-,  ந  
     .  ᫨    ந (஦), 
     ᯮ  ६-⮢      砥,
     ᫨   砥  ᥡ - 㠫 㭪樨.

          ᫨   㭪  ஥ ᥬ, Borland ++
        ᥡ  .  ᫨  ࠡ⠥  -
       ᥬ  ⤥쭮  (ਬ,  ।뢠 㦥 騩
     ),     ⮤,  騥  
     ࠡ.

           ।  䨪⨢ 㭪樨 ++  ᥬ୮
     㭪樨.   । 㤮⢮ 騪, ⠪  㤥
     ᮤঠ ⪮४஢  㭪樨-.   䨪⨢
     㭪 㤥 뢠 ᥬ 㭪  ।  -
     -  稥 ࠬ.    ᥬ  -
        㦭  ࠬ ।⢮ 㬥⮢,  -
                । .  
     ᥬୠ 㭪   ᠭ     ++    extern
     "C",    ਬ. ਬ (countadd.cpp):

     class count_add {
          //  ६- (private)
          int access_count;   // ᫮ 饭
          int count;          // ⥪騩 稪
        public:
             count_add(void) { access_count=0;
                              count=0;
                           }
             int  get_count (void) {return Count;}

             //  㭪樨,   䠪᪨ ᠭ 
             // ᥬ:

             void increment(void);
             void add(int what_to_add=-1);
              // ⬥⨬,  㬮砭  ⮫쪮
              //  맮 add;      add
          }


     ࡮ ᥬ 3.0/tasm/#2-2                             = 109 =

          extern "C" {
            //  ᮧ 㭨  ᫥ 
            // ᥬ ணࠬ ਡ   
            //  ᥬ୮ ணࠬ.  ⫨稥  
            // ᥬ஢, ࡮ ᥬ   ஡ 
            //  .
            void count_add_increment(int *count); //  ।
                                               // 㪠⥫ 
                                               // ६ count.
                                               // ᥬ 믮
                                               // 㢥祭.
            void count_add_add(int *count,int what_to_add);
          }

          void count_add::increment(void)
          {
            count_add_increment(&count);
          }

          void count_add(int what_to_add)
          {
            count_add(&count, int what_to_add);
          }

           ᥬ , ।騩 ணࠬ count_add
     _increment  count_add_add,    (COUNTADD.ASM):

          .MODEL small   ; 롮  small (   )
          .CODE
          PUBLIC _count_add_increment
     _count_add_increment  PROC
          ARG count_offset:word   ;  ६-
          push bp                 ; ࠭  ⨢樨
                                  ; 뢠饩 ணࠬ
          mov  bp,sp              ; ⠭ ᮡ⢥ 
                                  ; ⨢樨
          mov  bx,[count_offset]  ; 㧪 㪠⥫
          inc  word ptr [bx]      ; 祭 ६-
          pop  bp                 ; ⠭  ⨢樨
                                  ; 뢠饩 ணࠬ
     _count_add_increment  ENDP

          PUBLIC _count_add_add
     _count_add_add  PROC
          ARG count_offset:word,what_to_add:word
          push bp
          mov  bp,sp
          mov  bx,[count_offset]   ; 㧪 㪠⥫
          mov  ax,[what_to_add]
          add  [bx],ax
          pop  bp
          ret
     _count_add_add  ENDP

     ࡮ ᥬ 3.0/tasm/#2-2                             = 110 =


          end

          ᯮ  ⮤,    ᯮ  -
        । .   ᫨    㤠
     ६-,    ந  -
       㠫  㭪樨,    ॡ  ᥬ
     . ॠᥬ஢  㦭 ⮫쪮  砥 
      ६- count,   ᫨  室 ᤥ
           large.  ॠᥬ஢-
         室, ᪮  饭  ६-
     - count     ᥣ⮬  ᬥ饭.

             襭  맮, ᯮ騥  ᪠
     

          ⠪, ⥯  㦥 ,   筮  ++ । -
     ࠬ 㭪:  뢠 ணࠬ  ࠬ (ࠢ
     )  ⥪,  뢠 㭪,   ࠬ  ⥪
     (뢠  ) ᫥ 맮.  Borland C++  ⠪ ࠡ
      ᮣ襭, ਭ  ᪠. ᭮ ⨬ ᮣ襭 -
     ࠬ  ।  ᫥  ࠢ,   뢠 ࠬ (
     ⥪) 뢠 ணࠬ.   ᯮ짮  ᮣ襭
     ᪠   Borland C++    ࠬ  ப
     -p  祢 ᫮ pascal.

                ਬ砭:  ஡ ᮣ襭   ᪠
           ᬠਢ   19.

          ਢ ਬ 㭪樨  ᥬ,  ன ᯮ-
      ᮣ襭 ᪠:

     ;
     ; 뢠, : TEST(i, j ,k)
     ;
     i       equ      8               ;  ࠬ
     j       equ      6
     k       equ      4               ; ࠢ ࠬ
     ;
                      .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

     ࡮ ᥬ 3.0/tasm/#2-2                             = 111 =

                      END

          ⨬,   ⪨ ⥪    ।  ࠬ஢
     ᯮ  RET 6.

           .  18.5  ﭨ ⥪ ᫥ 믮 -
     樨 MOV BP,SP:

                           .                       .
                           .                       .
                           .                       .
                                                  
                           Ĵ
                  SP     BP 뢠饩 ண.     BP
                           Ĵ
                  SP + 2               BP + 2
                           Ĵ
                  SP + 4             k              BP + 4
                           Ĵ
                  SP + 6             j              BP + 6
                           Ĵ
                  SP + 8             i              BP + 8
                           Ĵ
                                                  
                           Ĵ
                                                  
                           .                       .
                           .                       .
                           .                       .

          . 18.5 ﭨ ⥪ ᫥ 樨 MOV BP,SP

          襭  맮 ᪠ ॡ ⠪, ⮡  -
       饤㯭 䨪 㪠뢠  孥 ॣ
       । ન. 祬  ॡ -
     짮  ணࠬ   ++  ᮣ襭    맮  ᪠?
     ணࠬ,  ᯮ ᮣ襭 ᪠,  筮 -
     쪮        ࠡ⠥  ॥,  祬  筠
     ணࠬ   몥 ++,  ⠪   ⪨ ⥪  ࠬ஢
      ॡ 믮 n 権 ADD SP.

                  맮 Borland C++  ࡮ ᥬ
     

             ਭ   믮 ᯥ樠  -
       ++ 㭪樨,  ᠭ  ᥬ,    
     ॡ 뢠  ᥬ 㭪樨, ᠭ  몥
     ++. 뢠,  ᠬ   맢 㭪 Borland C++
      㭪樨 ࡮ ᥬ,  祬 ,  ᪮  ஭
     ᥬ  ॡ ᫥ ࠭ ⥪.   -
     ਬ  ⪮ ॡ  맮 㭪権 Borland C++  ࡮
     ᥬ.


     ࡮ ᥬ 3.0/tasm/#2-2                             = 112 =

                      樠樨 ++
     

          訬 ࠢ  맮  㭪権 Borland
     C++ ⮫쪮  ᥬ  ணࠬ,     -
     㫥 樠樨  ++ (ᯮ   ⢥ ࢮ -
     㥬 ).   ""  砥  ᥡ  ண-
     ࠬ,       ப TC.EXE 
     TCC.EXE,  ணࠬ,  ⢥ ࢮ 㥬 䠩 -
      ᯮ 䠩 C0T, C0S, C0C, C0M, C0L  C0H.

           饬  砥   ᫥ 뢠  㭪樨
     Borland C++  ணࠬ,     㫥 樠-
     樨  Borland  C++,  ⠪       㭪樨
     Borland C++   ࠢ쭮 ࠡ, ᫨  믮﫠 -
        樠樨. ᫨  ⢨⥫쭮  -
       㭪樨 Borland C++  ⠪ ணࠬ,  ।-
          樠樨 (䠩 C0.ASM  -
     ⨢ ᪠ Borland C++)  ਮ   Borland  室-
         ⥪ 몠 ++,  ᫥ 祣  ᬮ ᯥ
     ࠢ 樠  㦭  㭪権.

           맮 ।塞  짮⥫  㭪権  ++,   
     ᢮ । 뢠  㭪樨 몠 ++,   
       ⥣,    ।⢥ 맮  㭪-
     権 ++.  ⢨  樠樨 ++  뢠 訡
       ணࠬ ᥬ,   אַ  ᢥ -
        㭪 ++.

                             ᥣ
     

            㦥 ਫ ࠭,  室  ᯥ稢,  ⮡
     Borland  C++    ࡮ ᥬ ᯮ짮     
     ,   ⮡ ᥣ,   ᯮ  ࡮ ᥬ-
     ,  ᮢ    ⥬ ᥣ⠬,   ᯮ Borland
     C++.  ࡮ ᥬ    tchuge, -
     ন  huge Borland C++. 祭    ᥣ-
     ⮢    ।饬 ࠧ.  㦭  뢠 ⠪
       ४⨢  EXTRN    譨 䨪஢  
     ᥣ⮢   ࠢ쭮 ᥣ.

                            믮 맮
     

          ,   ॡ    । ࠬ஢  㭪
     C++,   ᥭ  ⥪ ᠬ ࠢ ࠬ , ⥬
     ᫥饣  浪 ࠬ  ⠪ ,   ⥪  -
      ᠬ  ࠬ.  ᫥  ⮣  㦭    맢
     㭪. ਬ,  ணࠬ஢  Borland C++  맮
     筮 㭪樨 Borland C++ strcpy    ஢  ப
     SourceString  ப DestString  :


     ࡮ ᥬ 3.0/tasm/#2-2                             = 113 =

          strcpy(DestString, SourceString);

           믮 ⮣  맮  ᥬ 㦭  ᯮ짮-
      樨:

          lea   ax,SourceString            ; ࠢ ࠬ
          push  ax
          lea   ax,DestString              ;  ࠬ
          push  ax
          call  _strcpy                    ; ᪮஢ ப
          add   sp,4                       ;  ࠬ

           ன SP ᫥ 맮  뢠   ⥪  
     ࠬ஢.

               ᤥ  ᨬ   몠,
     ᯮ짮 ७  ࡮ ᥬ CALL:

          call 祭 [ [,㬥_1] ...]

      ""   -      C,  PASCAL,  BASIC,  FORTRAN,  PROLOG  
     NOLANGUAGE,  "㬥_n"   ⨬ 㬥 ணࠬ-
     ,    אַ 饭  ⥪ .

          ᯮ  ।⢮,  :

          lea   ax,SourceString
          lea   bx,DestString
          call  strcpy c,bx,ax

          ࡮ ᥬ  ⮬᪨ ⠢  饭 -
     㬥⮢  ⥪  ᫥⥫쭮, ਭ⮩  ++ (᭠砫 AX,
     ⥬ BX),  믮  맮 _strcopy (।  ++ ࡮ -
     ᥬ ⮬᪨ ⠢ ᨬ ન),   頥
     ⥪ ᫥ 맮.

          ᫨  뢠 㭪 ++,  ᯮ ᮣ襭
     ᪠,    ⥪ ࠬ ᫥ ࠢ.  ᫥  맮
     ࠨ 㪠⥫ ⥪ SP  ॡ.

          lea   ax,DestString              ;  ࠬ
          push  ax
          lea   ax,SourceString            ; ࠢ ࠬ
          push  ax
          call  CTRCPY                     ; ᪮஢ ப

              ,  ᯮ짮 ७
      ࡮ ᥬ CALL:

          lea   bx,DestString              ; ᠬ  ࠬ
          lea   ax,SourceString            ; ᠬ ࠢ ࠬ
          call  strcpy pascal,bx,ax


     ࡮ ᥬ 3.0/tasm/#2-2                             = 114 =

          ࡮ ᥬ ⮬᪨ ⠢  饭  -
     㬥⮢  ⥪  ᫥⥫쭮, ਭ⮩  ᪠ (᭠砫
     BX, ⥬ AX),  믮 맮 STRCPY (८ࠧ   孥
     ॣ,  ਭ  ᮣ襭 ᪠).

           ᫥ 砥 筮 ࠧ㬥,    ४-
     ஢  㭪 strcpy  ࠬ஬ -p, ⠪   ⠭⭮
     筮 ᨨ  㭪樨 ᯮ ᮣ襭  -
     , ਭ  ++,    ᪠.

          㭪樨 ++  ࠭ ᫥騥 ॣ ( ⮫쪮 ): SI,
     DI,  BP, DS, SS, SP  CS.  AX, BX, CX, DX, ES  䫠 -
      ந쭮 .

              맮  ࡮ ᥬ 㭪樨 Borland C++
     

            砥,     ॡ 맢  
     ࡮ ᥬ 㭪 Borland C++,   室 -
      ᫮ ᫥,  ᪮ ᫥ ࠧ  
     믮    ++,  祬  ᥬ.  ᮡ  ⭮ 
      ᬥ蠭 ᫥,  ᯮ  祭  -
     饩 窮  楫 ᫠.    㭪樨  믮
     ८ࠧ ⨯  ॠ樨 䬥⨪   饩  窮
      ++.

           ᬮਬ  ਬ ணࠬ  ᥬ,  
     뢠 㭪 Borland C++, ⮡ 믮 ᫥  -
     饩 窮.  ᪨   ਬ 㭪 Borland C++ -
     । ᫥⥫쭮 楫 ᥫ 㣮  㭪樨  ࡮  -
     ᥬ,    㬬  ᫠      ᢮ । 뢠
      㭪 Borland C++  믮 ᫥   饩
     窮 (᫥ । 祭).

           ணࠬ   CALCAVG.CPP,    ॠ        ++
     (CALCAVG.CPP), 룫廊 ᫥騬 ࠧ:

          #include <stdio.h>
          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 );

     ࡮ ᥬ 3.0/tasm/#2-2                             = 115 =

          }

       ணࠬ  ᥬ (AVERAGE.ASM)  :

          ;
          ; 뢠  ++ 㭪    ,
          ;  頥 । 䬥᪮ ᫥-
          ; ⥫쭮 楫 ᥫ.  믮 饣
          ;  뢠 㭪 ++ IntDivide().
          ;
          ; ⨯ 㭪樨:
          ;          extern float Average(int far * ValuePtr,
          ;                 int NumberOfValues);
          ;
          ; :
          ;          int far * ValuePtr:      ; ᨢ 祭 
          ;                                   ; ᫥ ।
          ;          int NumberOfValues:      ; ᫮ 祭 
          ;                                   ; ᫥ ।
                         .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

     ࡮ ᥬ 3.0/tasm/#2-2                             = 116 =

          _Average       ENDP
                         END

          ᭮ 㭪 (main)  몥 ++ ।  㪠⥫  
     ᨢ  楫  ᥫ  TestValues   ᨢ  㭪  -
     ᥬ Average.   㭪  㬬 楫 ᥫ,  -
     ⥬  ।  㬬  ᫮ 祭  㭪 ++ IntDivide.
     㭪 IntDivide ਢ 㬬  ᫮ 祭  ⨯  -
     饩 窮   । 祭 (    -
      ப  ++,    ६   ᥬ  ⮣ -
       ᪮쪮 ப).  㭪 IntDivide 頥 ।-
      祭 (Average)  ॣ 設 ⥪ ᮯ 8087
      । ࠢ ⭮ ᭮ 㭪樨.

          ணࠬ CALCAVG.CPP    AVERAGE.ASM  ᪮஢ 
     ᪮  믮塞 ணࠬ CALCAVG.EXE   -
     :

          bcc calcavg.cpp average.asm

          ⬥⨬,  㭪 Average 㤥 ࠡ   , ⠪
        让    室   室-
      , ⠪     । 㪠⥫  쭥
     ⨯.  প    (ᢥ塮让, 让 
     ।) 諮  ⮫쪮    ᮮ⢥  ४⨢
     .MODEL.

           २⢠ ७,  ᯥ稢 -
     ᨬ ࡮ ᥬ  몠, ᥬ   ।-
      ਬ    ᦠ (CONSISE.ASM):

             .MODEL  small,C
             EXTRN   C IntDivide:PROC
             .CODE
             PUBLIC  C Average
     Average        PROC C ValuePtr:DWORD, NumberOfValues:WORD
             les     bx,ValuePtr
             mov     cx,NumberOfValues
             mov     ax,0
     AverageLoop:
             add     ax,es:[bx]
             add     bx,2        ;⠭ 㪠⥫
                                 ; ᫥饥 祭
             loop    AverageLoop
             call    _IntDivide C,ax,NumberOfValues
             ret
     Average        ENDP
             END




     ࡮ ᥬ 3.0/tasm/#2-2                             = 117 =

          19. 䥩 ࡮ ᥬ  ࡮ ᪠
     

            ࡮  ᥬ  ।ᬮ७  ७     
     ।⢠,  騥     ᥬ  ணࠬ
     ࡮ ᪠.     ஡ ᪠      ⮬,
       㦭  ,  ⮡  ᯮ짮  ।⢠,
     ਢ ⢮ ਬ஢     㡮  -
     ଠ.

           設⢮ ணࠬ,     ,  
     ॠ 楫  ࡮ ᪠.   ⫨稥    設⢠
     㣨  ஢  ᪠,  ࡮ ᪠    -
      ᨢ Port[], Mem[], MemW[]  MemL[] ।⢥ -
          ᥬ  ᠬ  ,      楤
     Intr()  MsDos()      ⥬ --
      (BIOS)  樮 ⥬.

           祣  ⮣  ॡ ᯮ짮 ᮢ⭮
       ࡮  ᪠  ᥬ?  ⮣   
     稭: 믮 ண 讣 ᫠ 権, 
     ।⢥  ࡮ ᪠ 㯭,  ᯮ짮 २-
      ᮪ ᪮ ࠡ,      ᥬ.  (
     ࡮  ᪠  ࠡ⠥ 筮 , ⮬   ᠭ
      몥 ᥬ.)       ,    
     ᯮ짮  ࡮ ᪠ २⢠ ᥬ.



     ࡮ ᥬ 3.0/tasm/#2-2                             = 118 =

            ⭮  ࡮ ᪠ ᯮ짮 
     

           ᫥ ᮤন .

             ४⨢  $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

          ᠭ 譥 (external) 楤 ࡮  ᪠  
     室  ᠬ 譥 ஢ ணࠬ  ,   
           ⭮襭  㣮 ᠭ -
     楤  㭪樨.  ⪠  楤  㭪  -
      㣮 ஢ ਢ  訡 ⠯ 樨.

          ࡮ ᪠   ஢, ⮡ 㡥,    

     ࡮ ᥬ 3.0/tasm/#2-2                             = 119 =

     楤,  ᠭ    ਡ⠬  NEAR  FAR, ᮮ⢥
       쭨 ணࠬ  ணࠬ ࡮ ᪠. -
     ᪨,        ஢,      ⪨ AsmProc 
     AsmFunc  楤. ⮬      ᯥ,  ⮡
     ᠭ  ᥬ  ᪠ 뫨 ࠢ묨.

                            ४⨢ PUBLIC
     

           ࡮ ᪠ 㯭 ⮫쪮  ⪨ ᥬ, 
          㫥    몥  ᥬ,    饤㯭
     (PUBLIC). ⪨ ।⠢ ᮡ ⢥ ꥪ,  
       ।    몠  ᥬ  ࡮ ᪠. 
     ⮣,  饤㯭 ⪥   ᮮ⢥⢮ ᠭ
     楤  㭪樨  ணࠬ ࡮ ᪠,  
     뤠 ᮮ饭  訡. 祬  ॡ,  ⮡  饤-
     㯭 ⪠ 뫠  ᠭ PROC.  ᠥ ࡮ ᪠-
     ,    ᠭ:

          AsmLabel     PROC  FAR
                       PUBLIC Bar
     

          AsmLabel:
                       PUBLIC Bar

     .

            । ⠪ 䨪   PUBLIC ⮫쪮
      ᥣ CODE. ࡮ ᪠  ࠧ蠥 । -
     ஢ PUBLIC  ᥣ ,  ⮬ ᮧ    -
     ᥬ  㫨      ணࠬ  ࡮ ᪠
     ⠪     ᥣ .

                             ४⨢ EXTRN
     

           ࡮ ᥬ      楤,
     㭪樨, ६  ⨯ ⠭ ࡮ ᪠, -
      뢠  ᠬ 譥 ஢ ணࠬ  , 
        . (⨬,   砥  ᥡ -
     , ᠭ ᫥ ४⨢  {$L}  譨 -
     ᠭ,  易      㫥.) ⪨   ⠭
     ࡮ ᪠  ᥬ 㯭.

                ਬ砭:  砥  ᥡ  ६, 㪠
           ᫥  ४⨢  $L  ᠭ external,  -
              㫥.

          ।,  襬  ணࠬ  ࡮  ᪠  뢠
     ᫥騥  ६:

           var

     ࡮ ᥬ 3.0/tasm/#2-2                             = 120 =

               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       ; 㪠⥫ ࡮ ᪠

           ࠧ        楤ࠬ  
     㭪  ࡮ ᪠,  . ।,  
       ࡮ ᪠,  룫廊 ᫥騬 ࠧ:

          unit Sample;
          { ਬ ,  ஬ । ᪮ 楤
            ᪠, 뢠  楤  몥 ᥬ }

          interface

          procedure TestSample;

          procedure PublicProc;  {  饭  
                                    쭥 ⨯ }
          inplementation

          var
            A : word;

          procedure AsmProc; external;
          {$L ASMPROC.OBJ}

     ࡮ ᥬ 3.0/tasm/#2-2                             = 121 =


          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;
              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

     ࡮ ᥬ 3.0/tasm/#2-2                             = 122 =

                      mov    cx,ds:A        ;  ६ 
                                            ; 
                      sub    cx,2           ;  
                      mov    ds:A,cx        ;   ⭮
                      RET
       AsmProc        ENDP
       CODE           ENDS
                      END

          ᭮ ணࠬ,  ஢  ணࠬ    -
     ᥬ   ᪠, 룫廊 ᫥騬 ࠧ:

           program TSample;
           uses Sample;
           begin
               TestSample;
           end.

          ⮡ ନ஢ ਬ ணࠬ     ,
     ࠡ饣   ०  ப,  ᥬ, ᯮ
     ᫥騥  (  䠩):

          TASM ASMPROC
          TPC /B SAMPLE
          TSAMPLE

             ணࠬ     ணࠬ
     ࡮  ᪠  ᠬ 譥 ஢ 楤,    
     㯠  ꥪ⠬, 騬 묨  ⭮襭  楤-
     ࠬ   㭪 ᯮ짮 ᠭ EXTRN. ,  ண-
     ࠬ   ࡮  ᥬ  맮  ணࠬ ࡮ ᪠
        ꥪ,  祭 ࠬ஢-६.

            ࠭祭  ᯮ짮 ꥪ⮢ ⨯ EXTRN
     

          ⠪ 筥 䨪 ࡮ ᪠,   -
     ஬    㯠   ꥪ   㫥 ᯮ 
       窠, ᮢ⨬  ᨭ⠪᪨ ࠢ ࡮ -
     ᥬ  㤥, ⠪ ࠧ, ⢥࣭. ᠭ:

             EXTRN SYSTEM.Assing : FAR

     ਢ  ⮬,  ࡮ ᥬ 뤠 ᮮ饭  訡.

           ⠪  㣨 ࠭祭  ᯮ짮  -
       ᪠  ꥪ⮢  EXTRN.  ࢮ   ⮨  ⮬,  
     뫪  楤  㭪    믮  䬥-
     ᪨ 樨  ᠬ.  ࠧ, ᫨  :

             EXTRN PublicProc : FAR

       ᬮ   :

     ࡮ ᥬ 3.0/tasm/#2-2                             = 123 =


             call PublicProc + 42

          ஥ ࠭祭 ⭮  ⮬,   騪  ࡮
     ᪠    㤥 ᯮ 樨,  ࠧ ᫮
      , ⮬    ਬ ⠪ 樨   ꥪ-
     ⠬ EXTRN. ਬ, ᫨  :

             EXTRN i : WORD

       ᬮ ᯮ짮  㫥  ࡮  ᥬ  ࠦ
     LOW i  HIGH i.

                  ᯮ짮 ४஢ ᥣ⮢
     

          ࡮ ᪠  䠩 .EXE,      -
              㯭 . -
       ணࠬ ࠭ ⭮, 㤠 㤥 㦥 
     ᥣ  ணࠬ, 騪 㪠뢠 稪 DOS.EXE, 
     㦭  㧪 ᪮४஢  ணࠬ  뫪  ᥣ-
     . ᫥ 믮  ४஢  뫪  ᥣ
     (⠪,  CODE  DATA)  ᮤঠ ४ 祭.

           ணࠬ  ࡮ ᥬ    ᯮ짮  
     ।⢮    祭  ᮢ  ꥪ⮢   ६ 믮.
     ।, ਬ,   襩 ணࠬ  ॡ  
     祭  ॣ DS,     ࠭  横 室
     ᮤন ⥪  ६   祭    ६  -
     .   ⮣   ᯮ짮  ࡮ ᥬ-
      SEG:

          .
          .
          .
          mov   ax,SEG DATA          ;  䠪᪨
                                     ;  쭮 祭
                                     ; DS ࡮ ᪠
          mov   ds,ax                ;    DS 
                                     ; ᯮ짮 ࡮
                                     ; ᪠
          .
          .
          .

            ணࠬ 㤥 㦠, DOS  ४-
     ⭮ 祭 SEG DATA אַ   ஬筮 ࠭ -
     樨 MOV.       १㧪  ᥣ⭮
     ॣ.

           ⮤ 㦭 ⠪ ᯮ짮, ⮡ ணࠬ  -
     㦨  뢠  ࠭﫨 ଠ  쭮 ᥣ
      ࡮ ᪠.  DS  易⥫쭮  ६ 뢠-

     ࡮ ᥬ 3.0/tasm/#2-2                             = 124 =

      ᮤন 祭 DS ࡮ ᪠,    祭 㯠
      ६  ⨯ ⠭⠬ ࡮  ᪠    -
     짮 㪠  ᫥⥫쭮.



     ࡮ ᥬ 3.0/tasm/#2-2                             = 125 =

                     ࠭ ᯮ㥬 
     

           ࡮ ᪠  ।⢠, ᯥ稢騥  ࠭
     ᯮ㥬 .  砥,   祭  १
     䠩 .EXE  㤥   楤  㭪権,  -
       믮.  ᪮   ଠ樨  ᮤ-
      㫥 ࡮ ᥬ, ࡮ ᪠  믮 
      ⮫쪮 ࠭祭 ⨬.

          ࡮ ᪠ 㤥 ࠭   .OBJ  ⮬  ⮫쪮
       ⮬ 砥, ᫨   㯭 楤  㭪樨 ⮣
       饭. ᫨     楤  㭪
      뫪,     ᯮ.

          ⮡  襩 䥪⨢ ᯮ짮  ।⢠
     ࡮ ᪠  ࠭ ᯮ㥬 ,  뫮 
     ࠧ ணࠬ  ᥬ  訥 㫨,   -
     ঠ    ⮫쪮 ᪮쪮 楤  㭪権.  
      ࡮ ᪠, ᫨    ᤥ, 㬥 ꥬ  -
     襩 筮 ணࠬ.

             襭 ࡮ ᪠  । ࠬ஢
     

          ࡮ ᪠ ᯮ  । ࠬ஢  ⥪  業-
     ࠫ쭮   (,  砥 । 祭 ࠬ஢
      ୮, , ७ 筮    ᫮  ⨯,
     ⥪  䬥᪮ ᮯ). ࠬ ᥣ 
        ⥪  ⮬ 浪,   ஬    㪠뢠  
     ᠭ  ணࠬ,  ᫥ ࠢ.   ࠧ  -
     ,   ࠬ ।⠢.

                           ࠬ-祭
     

          ࠬ-祭 -  ࠬ, 祭 ண  
       ணࠬ,     ।.  ⫨稥 
      ஢, ࡮ ᪠  믮 ᫥ ஢-
        ⥪  ࠬ-祭:    ᭨, -
     㥬 ⮤   ⨯.

                              ⨯
     

          ࠬ-祭    ᪠  ⨯  (boolean,  char,
     shortint,  byte, integer, word, longint, १ ⨯  -
      ⨯) ।  祭 १ ⥪  .  ᫨
     ࠧ ꥪ ⠢ 1 ,    ⥪,  
     16-⮢ ᫮,    騩 (訩)  ᫮  
     ᮤন  ଠ樨. ᫨ ࠧ ꥪ ࠢ  -
     ⠬,       ⥪ " ". ᫨ ꥪ 
     ࠧ  4    ( 楫),     ⥪,   

     ࡮ ᥬ 3.0/tasm/#2-2                             = 126 =

     16-⮢ ᫮.   ᮮ⢥⢨  ⠭⮬ ஢ ਨ
     8088   饥 (襥) ᫮   ⥪  
       ⥪ 訥 .

                          ⢥ 祭
     

          ࠬ-祭 ⢥ ⨯ (real) ।, 
     6   ⥪ ( ࡮ ᪠  ⨯ ।⠢ ᮡ 6--
     ⮢ ணࠬ-㫨㥬 ⨯  饩 窮).   -
     ⢥ ⨯,  ॢ騩 4 ,   । -
     १ ⥪.

       Single, Double, Extended  Comp  ⨯ ᮯ 8087
     

          ࡮ ᪠  ᯮ    ᮣ襭  । -
     ஢  8087,    ᥬ⢮ ஢ Borland C++. -
       ।  १    ⥪  業ࠫ쭮 ,
       ⠫묨 ࠬࠬ.

                                ⥫
     

          祭 ࠬ஢   ⨯ 㪠⥫   -
     ।⢥  ⥪,  㪠⥫ 쭥 ⨯: ᭠砫 ᫮,
     ᮤঠ饥 ᥣ, ⥬ 㣮 ᫮, ᮤঠ饥 ᬥ饭. -
       訩 ,   ᮮ⢥⢨  ᮣ襭ﬨ 
     Intel.   祭 ࠬ-㪠⥫  ணࠬ ࡮  -
     ᥬ  ᯮ짮 樨 LDS  LES.

                                 ப
     

          ப ࠬ,  ᨬ  ࠧ,  筮 
          ⥪.   ⮣ ࡮ ᪠   ⥪
     㪠⥫ (쭥 ⨯)  ப.  뢠 ணࠬ  
       ப,    뫠 㪠⥫. ᫨ 
     室,  ணࠬ  ᮧ  ࠡ   -
     .

          ⢥ ᪫祭  ⮣ ࠢ -  砩, 
     ணࠬ  ४뢠 (૥) 㫥 A  ।  
     ࠬ-祭  ப ⠭ ணࠬ  ४뢠-
      㫥 B.   ⮬ ⥪ ४뢠  砥 -
      ,  ᪮஢    ४⨢  {$O+}  (᪠
     ૥).  ⮬ 砥 । ⥬,  㤥 ᤥ 맮  
     ⥪  㤥 । ணࠬ  㫥 B,   ⥪  ப
     ⠭ १ࢨ ६ .

                              ᨢ
     
            ᨢ,  騥 ஢ 1, 2  4 , 㡫-

     ࡮ ᥬ 3.0/tasm/#2-2                             = 127 =

      ।⢥  ⥪  ।,   ࠬ--
     . ᫨ ᨢ    - 㣮 ࠧ (-
      3 ),    ⥪  㪠⥫    ᨢ  
     .    ⮬  砥,  ᫨  ணࠬ   ⠪
     ,    ᮧ   .

                                ⢠
     

          ⢠,   ப,  筮    -
     ।⢥  ⥪.   ⮣  ⥪    㪠⥫  
     ⢮.     襣  ⢠ ᥣ ᮮ⢥-
        ⨯ ( ஦饣 ⨯)  浪
     祭 0.

          ⢥ ᪫祭  ⮣ ࠢ -  砩, 
     ணࠬ  ४뢠 (૥) 㫥 A  ।  
     ࠬ-祭 ⠭-⢮ ணࠬ    ૥
     㫥  B.    ⮬ ⥪ ४뢠  砥 
     , ஢  ४⨢ {$O+} (᪠ ૥).
      ⮬ 砥 । ⥬,  㤥 ᤥ 맮   ⥪ -
      । ணࠬ  㫥 B,  ⥪  ⢠-⠭
     १ࢨ  ६ .

                          ࠬ-६
     

           ࠬ-६  (var) । 筮 ⠪:  
     㪠⥫ 쭥 ⨯   ⢨⥫   .

                            ᯥ祭 ⥪
     

          ࡮ ᪠  ,    ।  ⮬ ࠢ 
     ணࠬ  ࠬ  ⥪ 業ࠫ쭮   
     㤠.

            ᯮᮡ ன ⥪.   ᯮ짮 -
      RET N ( N -  ᫮  ।,    -
     ᥭ  ⥪, ࠬ஢),  ࠭    -
       (   )   ࠬ  ⥪ ।.
      孨 祭  ᯮ짮   ⨬樨 
     ᪮    ࠡ  ஬ 8086  8088 (ᠬ "-
     "  ਨ),    ⨯ "  ᬥ-
     "  稢  8 横  饭.   
     ⠪  ,  ⠪   POP    ⮫쪮
      .

                ਬ砭: ᫨  ᯮ ४⨢ .MODEL, PROC
            ARG,  ᥬ ⮬᪨    -
           樨 RET ᫮   ࠬ஢.


     ࡮ ᥬ 3.0/tasm/#2-2                             = 128 =

                             ࠬࠬ
     

           砥 ࠢ  ணࠬ  ࡮ ᥬ-
     , 設 ⥪ 㤥 ᮤঠ   (  -
      ᫮,  ᨬ  ⮣,   ணࠬ 
      쭥),    室 । ࠬ.

                ਬ砭:  ᫥  ᮢ  ࠬ஢  㦭
           ਭ    ॣ,  ⠪  BP,  ᮤন
            ⠪   ᥭ  ⥪.)

            ᭮ ⮤ 㯠  ࠬࠬ, ।-
      ࡮ ᪠ 襩 ணࠬ  ࡮  ᥬ. 
     :

          - ᯮ짮  樨  ⥪ ॣ BP;

          -  祭 ࠬ஢ ᯮ짮 㣮    
             ॣ;

          -   ⥪  ,  ⥬ ࠬ.

            ன ⮤  ᫮,   ᪠    
     ᫥   ࠧ. ⨩ ⮤ ।ᬠਢ 祭
      ⥪  ࠭  ,  ⥬  祭  -
     ஢       ॣ.  ᥣ  ⮤ ࠡ⠥,
       ணࠬ  ॡ ࠭⢠   -
     ६.

             ᯮ짮  樨  ⥪ ॣ 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
                .
                .
                .

     ࡮ ᥬ 3.0/tasm/#2-2                             = 129 =


           ᫥ ᬥ襭  ⥪ ࠬ஢,    -
     頥  ⠪  ࠧ, 㦭 ,  2  ᯮ
      ࠭ ॣ BP.

             ᯮ짮   ਬ ᢠ-
     .   ᤥ ணࠬ  ⭮.   
     ⮫쪮  ⮪: ᪮  믮 ⠪ த -
     ᢠ   ᯮ짮  ⮫쪮  ४⨢ EQU (  =),  
      室 䠩 ࡮ ᥬ   ᬮ  ८।-
      䨪 i  j.   ᯮᮡ   砥-
       ⮬, ⮡ ᯮ짮  ⥫  ࠬ஢,
     ⮡   﫨,    ᥬ஢  -
     ணࠬ ᥬ ⤥쭮.

                              ४⨢ 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],

     ࡮ ᥬ 3.0/tasm/#2-2                             = 130 =

     䨪  j   [WORD PTR BP+8],  䨪 RetBytes - 
      4 (ࠧ    ࠬ஢).  祭 뢠-
         ᥭ  ⥪ 祭 BP,  ࠧ  :
     ᫨  楤 MyProc   ⨯,  i 뫮   ࠢ-
         祭  [BP+4], j -  [BP+6],  RetBytes ⠪ 뫮 
     ࠢ 4 (  砥 楤 MyProc   믮-
        樨 RET RetBytes).

           ᯮ짮 ४⨢ 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  ࠧ (
     )  ࠬ஢.

                    ࡮ ᪠  ४⨢ .MODEL
     

          ४⨢ .MODEL  ࠬ஬ TPASCAL  饭 ᥣ-
     ,    몮 প. 筮 ᯮ
        (large)   㦥 ,  㦭 ᤥ-
       ணࠬ ᥬ,  ⮡  뫮 ᯮ짮 -
     楤  㭪樨 ᪠. ८ࠧ㥬 ਬ, ᯮ   -
     ४⨢ .MODEL  PROC:

                    .MODEL   large, PASCAL
                    .CODE
     MyProc         PROC     FAR i:BYTE,j:BYTE result:DWORD
                    PUBLIC   MyProc
                    mov      ax,i

     ࡮ ᥬ 3.0/tasm/#2-2                             = 131 =

                    .
                    .
                    .
                    ret

          ⨬,  ⥯  㦭  ࠬ    ⭮
     浪.   ॡ ⠪  㣨 ஢. ᯮ짮-
       ४⨢ .MODEL 祢 ᫮  PASCAL  ᯮ짮-
       ᮣ襭  ᪠,  ।   ᥣ⮢, 믮
     樨 PUSH BP  MOV BP,SP   ⠪     
     権 POP BP  RETn ( 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  ᮬ 
     i          EQU WORD PTR SS:[bp+8] ; i ᯮ  j
                mov   bx,sp         ; BX ⥯ 㪠뢠  設
                                    ; ⥪
                mov   ax,i          ; 㥬  i १ BX
                .
                .
                .

            ணࠬ,   讣 ᫠ 뫮   ࠬ-
     , ⠪ ⮤   ६  . 祬? -
     ,   ⫨稥  BP,  ॣ BX  ॡ ⠭
       ணࠬ.

                    㭪樨  ࡮ ᪠
     

           ᨬ  ⨯ १ 㭪樨 ࡮ ᪠ -
      ᢮ १ ࠧ묨 ᯮᮡ.

                     㭪樨 ᪠୮ ⨯

           㭪樨 ᪠ ⨯    ॣ

     ࡮ ᥬ 3.0/tasm/#2-2                             = 132 =

     業ࠫ쭮    ().  ⮢ 祭  
     ॣ AL, 祭  ࠧ஬    2    -    ॣ  AX,
     4-⮢ 祭 -   ॣ஢ DX:AX (襥 ᫮ -
       ॣ DX).

                    㭪樨 ⢥ ⨯

           ᯮ㥬  ࡮ ᪠  6-⮢  ண-
     ࠬ  㫨㥬  ⢥  ⨯    -
      .  饥 (襥) ᫮ 頥   DX,
     । -  BX,   饥 -  AX.

                  㭪樨 ⨯ ᮯ 8087

           ⨯, ᯮ ᮯ஬ 8087, -
       ॣ 設 ⥪ ST(0) (  ST).

                     㭪樨 ப ⨯

           ப ⨯   ६ ࠡ祩
     , 뤥塞 ࡮ ᪠ । 맮. ⥫ -
      ⨯      ⥪ । ᥭ ࢮ-
       ࠬ.  ⨬,      㪠⥫   
     ᯨ᪠ ࠬ஢.

                ਬ砭:  㤠  ⥪ 祭   १-
             㪠⥫,  ⠪   ࡮ ᪠ ,  ᫥
           맮  㤥 㯥.

                      㭪樨 ⨯ 㪠⥫

           㪠⥫       ॣ஢  DX:AX
     (ᥣ:ᬥ饭).

               뤥 ࠭⢠   
     

           ணࠬ, ᠭ  ࡮ ᥬ,   뤥-
       ࠭⢮  ᢮ ᮡ⢥ ६,  -
      (᪨),   ࠭  ஬⪥  맮-
     ,  ⠪   ६ ( ᫥ 맮  ).
        㦤  ᫥ ࠧ.

                      뤥 ᪮ 
     

          ࡮ ᪠   ணࠬ ࡮ ᥬ १-
     ஢ ࠭⢮  ᪨ ६  ᥣ -
       (DATA  DSEG). ⮡ 뤥   ࠭⢮,
       ᯮ짮 ⠪ ४⨢,  DB, DW  .. -
     ਬ:

          DATA        SEGMENT PUBLIC

     ࡮ ᥬ 3.0/tasm/#2-2                             = 133 =

          MyInt       DW      ?        ; १ࢨ஢ ᫮
          MyByte      DB      ?        ; १ࢨ஢ 
            .
            .
            .
          DATA        ENDS

          ६, 뤥塞 ࡮ ᥬ஬  ᥣ -
      ,    ࠭祭. -,  -
     묨  "묨",  㯭 ணࠬ ࡮  -
      (   । 㪠⥫  ). -, 
        ।⥫쭮 樠஢,    ⨯
     ⠭. :

           MyInt       DW      42        ;   樠
                                         ; MyInt 祭 42

      맮 訡     ணࠬ ࡮ ᪠-
     ,  MyInt  믮 ணࠬ  㤥  祭
     42.

           ࠭祭  , ᠢ ६   ⨯-
       ⠭  ࡮  ᪠    ४⨢ EXTRN, 
     ᤥ  㯭묨 ࡮ ᥬ.

                       뤥 ६ 
     

            ணࠬ  ࡮  ᪠    뤥  ⠪
     ६  ( ६)  ⥪  ६ 믮-
       맮. । ⮬ ࠢ    
      ᢮,  祭 ॣ BP ⠭.  ᫥-
     饬 ਬ 楤 MyProc १ࢨ  ࠭⢮    
     楫 ६ a  b:

     CODE          SEGMENT
                   ASSUME  CS:CODE
     MyProc        PROC    FAR       ; procedure MyProc(i : integer);
                   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

     ࡮ ᥬ 3.0/tasm/#2-2                             = 134 =

                   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 ᯮ-
             ᮧ 䨪஢  뤥  ࠭⢠
             ६.

          :

             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   ॣ  ᥭ   ⥪ (᫨
      ᯮ짮 ॣ).



     ࡮ ᥬ 3.0/tasm/#2-2                             = 135 =

           ਬ ணࠬ  ᥬ  ࡮ ᪠
     

            ࠧ    ਬ  ணࠬ  
     몥  ᥬ,      뢠  ணࠬ ࡮
     ᪠.

     ணࠬ ⭠筮 ८ࠧ 饣 祭
     

          ঠ騥  ࠬ num   ८ࠧ    ப
     ⭠      (byteCount * 2). ᪮ 
      ஦  ᨬ, ᨬ쭮 祭 byteCount ࠢ
     127  ( ஢).  ८ࠧ  㯯 ( 4 -
     )  ⭠    ᪮ ᯮ㥬 ᫥-
     ⥫쭮 add-daa-adc-daa.

          楤 HexStr  (     䠩 HEX.ASM) ᠭ
     ⠪,   뢠     맮  쭥  ⨯.
      砥,   ᫥ 뢠  䥩᭮  -
      ࡮ ᪠    ४⨢  {$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             ; ᪮쪮 ?

     ࡮ ᥬ 3.0/tasm/#2-2                             = 136 =

                                           ; (2/)
                    cld                    ; ࠭ ᫮ 
                                           ; (ࠡ  אַ
                                           ; ࠢ)
                    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
                    pop   bp
                    ret   6                ; ࠬ 
                                           ; 6 
     HexStr         ENDP
     CODE           ENDS
                    END

          ਬ  ணࠬ    ᪠,    ᯮ   㭪
     HexStr,  ᫥騩 :

          Program HexTest;
          var
            num : word;

     ࡮ ᥬ 3.0/tasm/#2-2                             = 137 =

          {$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
       ᫥騬 ࠧ (䠩 HEXMOD.ASM):

                    .MODEL   large, PASCAL
                    .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                    ; ࠭ ᫮ 
                                           ; (ࠡ  אַ
                                           ; ࠢ)
                    stosb                  ;  ਥ - 
                                           ;  ப
     NextLoop:
                    std                    ; ᪠஢ ᫮ 
                                           ; 襣  
                                           ; 襬
                    lodsb                  ;  ᫥騩

     ࡮ ᥬ 3.0/tasm/#2-2                             = 138 =

                                           ; 
                    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  ४-
     ஢ ணࠬ   ⮣   䠩.

                ਬ  ᮤন  ६
     

             楤 (VAREXCH.ASM)   믮
      ᮤন  ६ ࠧ count. ᫨ count 
     祭 0,    ⠥ ४஢ 64.

     CODE        SEGMENT
                 ASSUME cs:CODE,ds:NOTHING

     ; ࠬ (⨬,  - push bp ᬥ饭
     ; 㢥稢  2)

     var1        equ    DWORD PTR ss:[bp+12]

     ࡮ ᥬ 3.0/tasm/#2-2                             = 139 =

     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
                 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
     (䠩 varexch.pas),  :

          program TextExchange;

          type
            EmployeeRecord = record
                               Name     :    string[30];
                               Address  :    string[30];

     ࡮ ᥬ 3.0/tasm/#2-2                             = 140 =

                               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';
              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  large, PASCAL
                 .CODE
     Exchange    PROC FAR var1:DWORD,var2:DWORD,count:WORD
                 PUBLIC Exchange
                 cld                  ;   אַ ࠢ
                 mov    dx,ds         ; ࠭ DS

     ࡮ ᥬ 3.0/tasm/#2-2                             = 141 =

                 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
                 mov    [bx][si,ax    ;  ᫮ var2 
                                      ; var1
                 loop   ExchangeLoop  ;  count/2 ࠧ
     Finis:
                 mov    ds,dx         ;  ⭮ DS
                                      ; ࡮ ᪠
                 ret
     Exchage     ENDP
     CODE        ENDS
                 END

            ᯮ짮   ணࠬ  ᪠    
     ᥬ஢  ୠ⨢ ਠ 楤 Exchnge  -
     ஢ ணࠬ   ⮣   䠩.

                  ਬ  樮 । DOS
     

            㭪樨 EnvString  ᬮ ᬮ  -
      । DOS   ப  "s="   ,
     ᫨  .

     DATA           SEGMENT PUBLIC
                    EXTRN prefixSeg : Word  ;   PSP
     DATA           ENDS
                    SEGMENT PUBLIC
                    ASSUME  cs:CODE,ds:DATA


     ࡮ ᥬ 3.0/tasm/#2-2                             = 142 =

     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            ; ᫨ ࠢ 㤠-
                                            ;  ஡ ᫥-
                                            ;  ப
                    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          ;  ᨬ
                                            ; 

     ࡮ ᥬ 3.0/tasm/#2-2                             = 143 =

     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         ; ᫨ , 
                                            ; ᭮
     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;

     ࡮ ᥬ 3.0/tasm/#2-2                             = 144 =


          {$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
          ENVTEST

          ᫨ ᯮ짮 ४⨢ .MODEL,   㭪 EnvString 
     ᥬ 㤥 룫拉 ᫥騬 ࠧ (ENVMOD.ASM):

                    .MODEL   large, PASCAL
                    .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           ;  ⨬, ⮡ 

     ࡮ ᥬ 3.0/tasm/#2-2                             = 145 =

                                            ; ᫥饣  ch=0
                    mov     si,dx           ;  㪠⥫ 
                                            ; ᬮ७ ப
                    mov     cl,ah           ;  
                    mov     si,dx           ;  㪠⥫ 
                                            ; ப
                    repe    cmpsb           ; ࠢ 
                    jne     Skip            ; ᫨ ࠢ 㤠-
                                            ; , ஡ ᫥-
                                            ;  ப
                    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           ; ᬮ ᫥騩

     ࡮ ᥬ 3.0/tasm/#2-2                             = 146 =

                                            ; 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
                    ret     4
     EnvString      ENDP
     CODE           ENDS
                    END

            ᯮ짮   ணࠬ  ᪠    
     ᥬ஢  ୠ⨢  ਠ 㭪樨 EnvString  -
     ஢ ணࠬ   ⮣   䠩.





     ࡮ ᥬ 3.0/tasm/#2-2                             = 147 =

                           2. 
     

           ᫥ ᮤন ਫ.



     ࡮ ᥬ 3.0/tasm/#2-2                             = 148 =

               ਫ A. 砭  ணࠬ஢
     

            ਫ ਢ ᭮ ଠ  -
      ணࠬ  묨 ﬨ   ଠ⠬ 믮-
      .

                饭 ४⨢ । ᥣ
     

           ᫥饩  ⠡   ᯮ㥬  㬮砭 
        ਡ ᥣ.

      ᯮ㥬  㬮砭 ᥣ  ⨯    TINY
                                                            A.1
     Ŀ
       ४⨢      ࠢ ஢     㯯
     Ĵ
     .CODE      _TEXT    WORD         PUBLIC      'CODE'     DGROUP 
     .FARDATA   FAR_DATA PARA         private     'FAR_DATA'        
     .FARDATA?  FAR_BSS  PARA         private     'FAR_BSS'         
     .DATA      _DATA    WORD         PUBLIC      'DATA'     DGROUP 
     .CONST     CONST    WORD         PUBLIC      'CONST;    DGROUP 
     .DATA?     _BSS     WORD         PUBLIC      'BSS'      DGROUP 
     STACK*     STACK    PARA         STACK       'STACK'    DGROUP 
                                                                    
         * -  STACK    ࠧ㬥  ࠧ饭   DGROUP  
     FARSTACK,   ४⨢ MODEL.                          
     

     ᯮ㥬  㬮砭 ᥣ  ⨯    SMALL
                                                            A.2
     Ŀ
       ४⨢      ࠢ ஢     㯯
     Ĵ
     .CODE      _TEXT    WORD         PUBLIC      'CODE'            
     .FARDATA   FAR_DATA PARA         private     'FAR_DATA'        
     .FARDATA?  FAR_BSS  PARA         private     'FAR_BSS'         
     .DATA      _DATA    WORD         PUBLIC      'DATA'     DGROUP 
     .CONST     CONST    WORD         PUBLIC      'CONST;    DGROUP 
     .DATA?     _BSS     WORD         PUBLIC      'BSS'      DGROUP 
     STACK*     STACK    PARA         STACK       'STACK'    DGROUP 
                                                                    
         * -  STACK    ࠧ㬥  ࠧ饭   DGROUP  
      FARSTACK,   ४⨢ MODEL.                         
     

                         ᯮ㥬  㬮砭
                 ᥣ  ⨯    MEDIUM


     ࡮ ᥬ 3.0/tasm/#2-2                             = 149 =

                                                            A.3
     Ŀ
       ४⨢      ࠢ ஢     㯯
     Ĵ
     .CODE      _TEXT WORD         PUBLIC      'CODE'            
     .FARDATA   FAR_DATA PARA         private     'FAR_DATA'        
     .FARDATA?  FAR_BSS  PARA         private     'FAR_BSS'         
     .DATA      _DATA    WORD         PUBLIC      'DATA'     DGROUP 
     .CONST     CONST    WORD         PUBLIC      'CONST;    DGROUP 
     .DATA?     _BSS     WORD         PUBLIC      'BSS'      DGROUP 
     STACK*     STACK    PARA         STACK       'STACK'    DGROUP 
                                                                    
         * -  STACK    ࠧ㬥  ࠧ饭   DGROUP  
      FARSTACK,   ४⨢ MODEL.                         
     

                         ᯮ㥬  㬮砭
                 ᥣ  ⨯    COMPACT
                                                            A.4
     Ŀ
       ४⨢      ࠢ ஢     㯯
     Ĵ
     .CODE      _TEXT    WORD         PUBLIC      'CODE'            
     .FARDATA   FAR_DATA PARA         private     'FAR_DATA'        
     .FARDATA?  FAR_BSS  PARA         private     'FAR_BSS'         
     .DATA      _DATA    WORD         PUBLIC      'DATA'     DGROUP 
     .CONST     CONST    WORD         PUBLIC      'CONST;    DGROUP 
     .DATA?     _BSS     WORD         PUBLIC      'BSS'      DGROUP 
     STACK*     STACK    PARA         STACK       'STACK'    DGROUP 
                                                                    
         * -  STACK    ࠧ㬥  ࠧ饭   DGROUP  
     FARSTACK,   ४⨢ MODEL.                          
     

                         ᯮ㥬  㬮砭
             ᥣ  ⨯    LARGE  HUGE
                                                            A.5
     Ŀ
       ४⨢      ࠢ ஢     㯯
     Ĵ
     .CODE      _TEXT WORD         PUBLIC      'CODE'            
     .FARDATA   FAR_DATA PARA         private     'FAR_DATA'        
     .FARDATA?  FAR_BSS  PARA         private     'FAR_BSS'         
     .DATA      _DATA    WORD         PUBLIC      'DATA'     DGROUP 
     .CONST     CONST    WORD         PUBLIC      'CONST;    DGROUP 
     .DATA?     _BSS     WORD         PUBLIC      'BSS'      DGROUP 
     STACK*     STACK    PARA         STACK       'STACK'    DGROUP 
                                                                    
         * -  STACK    ࠧ㬥  ࠧ饭   DGROUP  
     FARSTACK,   ४⨢ MODEL.                          
     

                         ᯮ㥬  㬮砭

     ࡮ ᥬ 3.0/tasm/#2-2                             = 150 =

        ᥣ  ⨯    HUGE (TCHUGE) Borland C++
                                                            A.6
     Ŀ
       ४⨢      ࠢ ஢     㯯
     Ĵ
     .CODE      _TEXT WORD         PUBLIC      'CODE'            
     .FARDATA   FAR_DATA PARA         private     'FAR_DATA'        
     .FARDATA?  FAR_BSS  PARA         private     'FAR_BSS'         
     .DATA      _DATA PARA         private     'DATA'            
     STACK*     STACK    PARA         STACK       'STACK'           
                                                                    
         * -  STACK    ࠧ㬥  ࠧ饭   DGROUP  
     FARSTACK,   ४⨢ MODEL.                          
     

                              ணࠬ DOS
     

          ணࠬ DOS  ।祭  ࠡ  ࠢ -
     樮 ⥬ DOS  뢠   ଠ:

          - ଠ .EXE;

          - ଠ .COM.

          ଠ EXE  ᯮ짮    DOS  ᥣ-
      ணࠬ.  ணࠬ    ᪮쪮 ᥣ⮢ 
      뫠  ᥣ  㯯 ᥣ⮢   .  
     ࠧ, ணࠬ .EXE  ॢ  ࠧ 64.

          ଠ COM ।⠢  ᮡ  筮  ⮩  ଠ.
     ணࠬ  ⠪ ଠ   ᮤঠ ᨬ 뫮 
      㯯  ᥣ⮢.   ࠧ, ணࠬ COM 筮 -
       ᯮ짮  TINY  ࠭祭  ࠧ 
       64 ⠬.

          ⮡ ந ணࠬ  DOS,    ॡ  騪
     (ਬ, TLINK)  ⨫ ஥ ணࠬ (ਬ, MAKE).
     ஡  ⨫ ᪠뢠  ਫ D.



     ࡮ ᥬ 3.0/tasm/#2-2                             = 151 =

                   砭  ணࠬ ଠ EXE
     

           㧪 ணࠬ EXE 樮 ⥬ ⠭-
      ॣ ᫥騬 ࠧ:

     Ŀ
                祭                                    
     Ĵ
         DS, ES        ন  ࠣ  䨪 ண- 
                       ࠬ ᥣ  ணࠬ (PSP).  PSP - 
                       ন ।  ணࠬ    
                       ப 㬥  㪠⥫  ப - 
                       樮 ।  ணࠬ.              
                                                                   
         CS:IP         ন 砫 ,   - 
                        END     㫥 ணࠬ,  
                        ४⨢ STARTUPCODE.                
                                                                   
         SS:SP         ন   ᫥  ᫮,  ஥ 
                         ணࠬ ᥣ ⥪.           
     

           ணࠬ  EXE         .
      ᯮ짮    , ᪮ 
     ᯥ稢   ஥  믮  頥 ணࠬ஢-
     . ਬ,  ᫨  襩 ணࠬ    ।
     ᯮ짮   64     ⥪,    
     ᯮ짮  TINY.

          ४⨢ STURTUPCODE  㫥  樨,  -
      ⮬᪨ 樠  室 ॣ,  ᮮ-
     騥 ࠭ .   ᯮ짮  ணࠬ  
     ࠭  ࠣ PSP  ᥣ ES.

            㦠 ணࠬ, 樮 ⥬ 뤥
     ணࠬ   襭  ⠢ .    ணࠬ,
        ᯮ ᪨ ।塞  ,
          ᢮ ᮡ⢥ ᪨  -
     塞 ,  ⠪   室.  㣨 ண-
     ࠬ  뤥  १ DOS.  ⮬ 砥 १ -
     ᮬ       DOS    ᢮  㯭
     樮 ⥬.

           室   ணࠬ  ᯮ  뢠  INT  21,
     㭪 4Ch.

             ਬ஬ ணࠬ EXEPROG.ASM 
     ਡ⨢ ᪥.  ⮡ ନ஢ ணࠬ EXE,  ᯮ-
      ⨫ MAKE.   ନ饬 䠩 MAKEFILE ᫥ 㪠
      㫨,  묨  ணࠬ, ਬ:

          EXECPROG.EXE:  EXECPROG.OBJ

     ࡮ ᥬ 3.0/tasm/#2-2                             = 152 =

             TLINK EXECPROG;
          EXECPROG.OBJ: EXECPROG.ASM
             TASM EXECPROG

                   砭  ணࠬ ଠ COM
     

          ணࠬ COM ।⠢ ᮡ ࠭祭  ᨨ  ண-
     ࠬ EXE.    ணࠬ  ଠ  COM   ।⠢ 
     ணࠬ EXE,     ணࠬ EXE  ।⠢  
     ணࠬ ଠ COM.   ᫥騥 ࠭祭:

          - ணࠬ COM ᫥   ᯮ짮  TINY.

          -  ணࠬ COM  ᯮ짮 ।। ᥣ-
             ⥪.

          - ணࠬ COM   ᮤঠ   뫮 
             ᥣ  㯯.   砥,  ணࠬ 
             ᮤঠ ।⢥ 쭨 맮   -
              ᥣ  .  楤  ணࠬ COM
             뢠  BEAR.

          - 믮  稭  ᬥ饭 100h    ᥣ
            .  ⮡  ந諮, 㪠  ⢥ ࢮ -
            樨 ᥣ  ४⨢ STURTUPCODE.

          ࡮ ᥬ 㦠 ணࠬ COM, 稭  ᬥ饭
     100h  䨪 ணࠬ ᥣ ணࠬ (PSP).   ⮣
     ४⨢ STARTUPCODE      TINY ⮬᪨ 頥 
     ணࠬ ORG 100h.

           㧪 ணࠬ COM ⠭ ᫥騥 ॣ-
     :

     Ŀ
                  祭                                  
     Ĵ
        CS,DS,ES,SS      ন  ࠣ  PSP ணࠬ. 
                                                                   
        IP               ⠭  祭 100h.          
                                                                   
        SP               ⠭  0FFFEh (᫥ ᫮ 
                          ᥣ ணࠬ.                     
     

          ᫨    ࠧ ⥪   ᥣ ணࠬ,
      㦭 ⠭  ⥪.  ⠪ ⥪ ᯮ -
     樠஢ ᥣ  (UDATASEG).

           ணࠬ  COM    ।     
     TINY,   ४⨢ CODESEG, DATASEG  UDATASEG  ࠧ-
         樠஢ .

     ࡮ ᥬ 3.0/tasm/#2-2                             = 153 =


              砥 ணࠬ EXE,    㦠 ணࠬ
     COM, ࡮ ᥬ 뤥    襭    ⠢
     .     DOS 㡥,     ᢮-
      ।७ 樠஢ .

              䠩-ਬ஬ COMPROPG.ASM,
         ਡ⨢ ᪠ ࡮ ᥬ.

           ⮡ ନ஢ ணࠬ COM, ᯮ ⨫ MAKE.
      ନ饬 䠩 MAEKFILE ᫥ 㪠  㫨,   -
     묨  ணࠬ, ਬ:

          COMPROG.COM:  COMPROG.OBJ
             TLINK COMPROG;
          COMPROG.OBJ: COMPROG.ASM
             TASM COMPROG

                           ணࠬ Windows
     

          ࡮ ᥬ    ᯮ짮  ᮧ ਪ
     ணࠬ Windows.  Windows  ࠡ   ॠ쭮  ०
     (   8086)   饭 ० ( 
     80286  ).  ࠧ ணࠬ, ᠭ  Windows,
      ࠡ   饭 ०.    ४⨢ CODESEG,
     DATASEG  UDATASEG ᫥ ⭮ ࠧ     -
     짮 ४⨢  WARN  PRO,  ⮡ ⬥  ஡ 
     㯮,     ६ ᥬ஢. -
     ,  ணࠬ 饭 ०  ᫥  ⠭-
      ᥣ ॣ  ᫥ 祭 ࠣ䮢 ᥣ-
     . 祭ﬨ  ᥣ⮢    饭  ०    
      ࠣ䮢.  ⮣ ᯮ ਯ, 
       ᫠  ਪ ணࠬ.

          ஬ ࡮ ᥬ  ࡮ ⫠稪  ᮧ 䥪-
     ⨢ ਪ ணࠬ Windows ॡ 㣨  ।⢠.  
     ⭮,     ᯮ ஬ Borland C++ (
     Microsoft C  2.6  Windows Software Dewelopment Kit).  ਪ
     ணࠬ Windows 筮 ॡ  ⨫-  -
     ᮢ (RC)  ⮢.    ⠪ 㯭 ⠭
     ⥪.   Windows  ⠪  室  騪  (ਬ,
     TLINK)  ⨫ ஥ ணࠬ (ਬ, MAKE).

           ਫ ᮤন ⥩訥 ४樨  ᮧ-
      ਪ ணࠬ Windows  ᪨ 㥬 -
     ⥪ (DLL).   ᠭ ਪ ணࠬ Windows -
          "㪮⢥  짮⥫  ++"  ᮮ⢥饩
     㬥樨  Windows.

         砭  ᪨ 㥬 ⥪ Windows
     
          ᪨ 㥬  ⥪ (DLL) ।⠢ ᮡ

     ࡮ ᥬ 3.0/tasm/#2-2                             = 154 =

     㯯 楤,     뢠  ਪ  ண-
     ࠬ Windows. ⥪ DLL  䥩 ਪ ண-
     ࠬ Windows.

          ⥪ DLL 믮 ⢮ 㭪権. ਬ,  -
        DLL  ࠪ⨢  ணࠬ DOS.    DLL 
       ।⢠ ࠡ  ࠭.

           ਡ⨢ ᪥ ࡮ ᥬ    ਬ
     ணࠬ   DLLPROG.ASM,   DLL.

           ஥ DLL  ᯮ짮 ⨫ MAKE. ନ-
     騩 䠩    ᥡ  㫨,    -
       DLL, ਬ:

          dllprog.dll: dllprog.obj dllprog.def
             TLINK dllprog,,,,dllprog
             RC dllprog.dll

          dllprog.obj: dllprog.asm
             TASM dllprog

            ஥ ॡ   ᫥饣  䠩
     । 騪 DLLPROG.DEF:

          LIBRARY DLLPROG
          EXETYPE WINDOWS
          CODE    PRELOAD MOVEABLE DISCARDABLE   ; CODE ਬ 
                                                 ; ᥣ⠬ _TEXT 
                                                 ;   CODE
          DATA    PRELOAD MOVEABLE SINGLE        ; DATE ਬ 
                                                 ; ᥬ ᥣ⠬ 
                                                 ; 㯯 DGROUP  
                                                 ;  DATA
                                                 ; ( 
                                                 ; SINGLE   DLL
          HEAPSIZE 0

              砭  ਪ ணࠬ Windows
     

          ਪ ணࠬ Windows      筠  DLL  
     ⢥ 楤ன        WinMain.  Windows  뢠
     WinMain  ᪠ 楤.  ਪ ணࠬ  筮
     ⠭ ,      ⢮ 
     ᪮ 樮 । Windows.

          ਬ ਪ ணࠬ  Windows        䠩
     WINPROC.ASM   ਡ⨢ ᪠ ࡮ ᥬ.   
     ਬ  뢮 ᮮ饭  ࠭ ᯮ 㭪樮
     , ᯥ稢 ।騬 ਬ஬ DLL.


     ࡮ ᥬ 3.0/tasm/#2-2                             = 155 =

           ஥ ਪ ணࠬ Wiondows  ᯮ짮-
      ⨫ MAKE.   ⮬  ନ饬 䠩 ᫥  㪠
      㫨, 㥬   ਪ ணࠬ:

          winproc.exe: winprog.obj winprog.def winprogg.res
             TLINK winprog,,,,winprog
             RC winprog.res

          winproc.res:winproc.rc
             RC -r winproc.rc

          winproc.obj: winprog.asm winprog.inc
             TASM winprog

             ஥  ॡ  ᯮ짮  ᫥饣
     䠩 । 騪 WINPROG.DEF:

          NAME            WINPROG
          EXETYPE         WINDOWS
          CODE            MOVEABLE DISCARDABLE
          DATA            MOVEABLE MULTIPLE DISCARDABLE
          STACKSIZE 5120                  ;   ਪ
                                          ; ணࠬ Windows

          ;-----------------------------------------------------------
          ; । 㥬 㭪樨. (  易⥫쭮, -
          ;    믮    ⥪    ⨯
          ; IMPORT.LIB  LIBW.LIB.)
          ;-----------------------------------------------------------
          IMPORTS  DLLPROG.SetHello




     ࡮ ᥬ 3.0/tasm/#2-2                             = 156 =

       ਫ B.  ᨭ⠪᪨ ࠢ ࡮ ᥬ
     

           ⮬ ਫ  ᠭ  ᨭ⠪  ࠦ  ࡮
     ᥬ, ᯮ   ஢   ଠ  -
     (BNF).  ::= 뢠 ᨭ⠪᪨  १.    
      ࠧ 稥 (...) 砥,   ।騩 -
        ७  ᫮  ࠧ.      ਫ
     뢠 ⠪ 祢 ᫮   設⢮.

                         ᪠ ࠬ⨪
     

     ⨬_ப ::=
           ய ⨬_ப
           _㭪樨 ⨬_ப
           ᫮_ப ⨬_ப
           䨪_ப ⨬_ப
           

     ய ::=
           ᨬ_஡ ய
           ᨬ_஡

     ᨬ_஡ ::=
            ࠢ騥 ᨬ, ᨬ > 128, ' '

     䨪_ப ::=
           䨪_ᨬ 䨪_ப_2

     䨪_ப_2 ::=
           䨪_ᨬ_2 䨪_ப_2
           

     䨪_ᨬ ::=
           $,%,_,?,ᨬ 䠢

     䨪_ᨬ_2 ::=
           䨪_ᨬ  

     ᫮_ப ::=
           _ப
           _ப

     _ப ::=
            㪢_஢_ᨬ
           '.' ⥫_⥯
            ⥫_⥯ ; 쪮  ० MASM  ४-
                                    ;  DD, DQ  DT

      ::=
           
          

     ࡮ ᥬ 3.0/tasm/#2-2                             = 157 =


      ::=
           0  9

     䠢⭮-஢_ᨬ ::=
           㪢_஢_ᨬ
          㪢 㪢_஢_ᨬ
          

     㪢 ::=
          㪢 䠢

     ⥫_⥯ ::=
          +
          -
          
          

     _ப ::=
          ப   窠; 窠,   窠

     _㭪樨 ::=
            ᨬ, ⫨   ᫥:
            ᨬ_஡,䨪_ᨬ,'"',"'"  

           窨  (.) ࠪ ࠧ ࠧ  ० MASM
       ० Ideal.   ᨬ  ॡ 㪠뢠  ᫠  
     饩 ⮩  ० MASM.  窠   室  ⠢
     ᨬ᪮   ० Ideal.  ० MASM  ⮣ ᨬ-
       稭 ᨬ᪨ ,  ஬ ⮣,  㭪-
     樨 ᯮ   ⢥ ᥫ  .

          ࠢ 樨 窨 (.):

          1.  ० Ideal 窠  ᥣ      
              㭪樨.

          2.   ० MASM 窠 ࠪ   ᨬ -
             䨪  ᫥ :

             ).     ᨬ  ப    拉
                   㣨  ᯥ樠 砥,  ਬ,  
                 ⠢ 譨 (EXTRN)   (PUBLIC)  ᨬ-
                  ,  ᮥ  ᫥饬   ᨬ-
                 ᪮  ,  ᫨  ᫥騩      ᨬ
                 ।⠢  ᮡ  䨪_ᨬ_2,   
                 । .

             ). ᫨     ᨬ    ப,  
                 ᫨ १饥    䨪 㤥 ।-
                 ⠢ ᮡ ।   䨪, ⮣
                 窠 ᮥ  砫 ᫥饣   -
                 䨪.

     ࡮ ᥬ 3.0/tasm/#2-2                             = 158 =

                   ࠬ⨪ ࠦ  ० MASM
     

          ⠪ ࠦ 稭  MASM_ࠦ.

     MASM_ࠦ ::=
          ࠦ_1

     _ࠦ_1 ::=
          SHORT _ࠦ_1
          .TYPE _ࠦ_1
          SMALL _ࠦ_1 (८ࠧ  16-⮢ ᬥ饭
                           [⮫쪮   386])
          LARGE _ࠦ_1 (८ࠧ  32-⮢ ᬥ饭
                           [⮫쪮   386])
          _ࠦ_2

     _ࠦ_2 ::=
          _ࠦ_3 OR _ࠦ_3...
          _ࠦ_3 OR _ࠦ_3...
          _ࠦ_3

     _ࠦ_3 ::=
          _ࠦ_4 AND _ࠦ_4...
          _ࠦ_4

     _ࠦ_4 ::=
          NOT _ࠦ_4
          _ࠦ_5

     _ࠦ_5 ::=
          _ࠦ_6 'EQ' _ࠦ_6...
          _ࠦ_6 'NE' _ࠦ_6...
          _ࠦ_6 'LT' _ࠦ_6...
          _ࠦ_6 'LE' _ࠦ_6...
          _ࠦ_6 'GT' _ࠦ_6...
          _ࠦ_6 'GE' _ࠦ_6...
          _ࠦ_6

     _ࠦ_6 ::=
          _ࠦ_7 '+' _ࠦ_7...
          _ࠦ_7 '-' _ࠦ_7...
          _ࠦ_7

     _ࠦ_7 ::=
          _ࠦ_8 '*' _ࠦ_8...
          _ࠦ_8 '/' _ࠦ_8...
          _ࠦ_8 'MOD' _ࠦ_8...
          _ࠦ_8 'SHR' _ࠦ_8...
          _ࠦ_8 'SHL' _ࠦ_8...
          _ࠦ_8

     _ࠦ_8 ::=

     ࡮ ᥬ 3.0/tasm/#2-2                             = 159 =

          + ࠦ_8
          - ࠦ_8
          ࠦ_12

     _ࠦ_10 ::=
          OFFSET 㪠⥫
          SEG 㪠⥫
          SIZE 䨪
          LENGTH 䨪
          WIDTH 䨪
          MASK 䨪
          THIS 楫_⨯
          䨪
          ( 㪠⥫ )
          [ 㪠⥫ ]

     _ࠦ_10 ::=
          _ࠦ_11 PTR _ࠦ_10
          _ࠦ_11
          OFFSET _ࠦ_10
          SEG _ࠦ_10
          LOW _ࠦ_10
          HIGH _ࠦ_10
          TYPE _ࠦ_10
          THIS _ࠦ_10

     _ࠦ_11 ::=
          _ࠦ_8 : _ࠦ_8...

     _ࠦ_12 ::=
          _ࠦ_13  [_ࠦ_13...(ࠧ㬥 ᫮,
                                         ⮫쪮 ᫨  '['  '(')
          _ࠦ_13  (_ࠦ_13...(ࠧ㬥 ᫮,
                                         ⮫쪮 ᫨  '['  '(')
          _ࠦ_13'.'_ࠦ_10

     _ࠦ_13 ::=
          LENGTH 䨪
          SIZE 䨪
          WIDTH 䨪
          MASK 䨪
          ( _ࠦ_1 )
          [ _ࠦ_1 ]
          _ࠦ_10



     ࡮ ᥬ 3.0/tasm/#2-2                             = 160 =

                   ࠬ⨪ ࠦ  ० Ideal
     

          ⠪ 稭,  id_ࠦ.

     id_ࠦ ::=

     㪠⥫

     i_⨯ ::=
          UNKNOWN
          BYTE
          WORD
          DWORD
          FWORD
          QWORD
          PWORD
          TBYTE
          SHORT
          NEAR
          FAR
          PROC
          DATAPTR
          CODEPTR
          _
          _⠡
          _᫥
          _
          TYPE 㪠⥫

     㪠⥫ ::=
          SMALL 㪠⥫               ; ᫨ 386
          LARGE 㪠⥫               ; ᫨ 386
          i_⨯ PTR 㪠⥫
          i_⨯ LOW 㪠⥫
          i_⨯ HIGH 㪠⥫
          i_⨯ 㪠⥫
          㪠⥫_2

     㪠⥫_2 ::=
          㪠⥫_3.䨪 ( 롮 
                                       )
          㪠⥫_3

     㪠⥫_3 ::=
          ࠦ:㪠⥫_3
          ࠦ

     ࠦ ::=
          SYMTYPE ࠦ ( । ⨯ ᨬ᪮-
            )
          ࠦ_2


     ࡮ ᥬ 3.0/tasm/#2-2                             = 161 =

     ࠦ_2 ::=
          ࠦ_3 OR ࠦ_3...
          ࠦ_3 OR ࠦ_3...
          ࠦ_3

     ࠦ_3 ::=
          ࠦ_4 AND ࠦ_4...
          ࠦ_4

     ࠦ_4 ::=
          NOT ࠦ_4
          ࠦ_5

     ࠦ_5 ::=
          ࠦ_6 Q ࠦ_6...
          ࠦ_6 NE ࠦ_6...
          ࠦ_6 LT ࠦ_6...
          ࠦ_6 LE ࠦ_6...
          ࠦ_6 GT ࠦ_6...
          ࠦ_6 GE ࠦ_6...
          ࠦ_6

     ࠦ_6 ::=
          ࠦ_7 + ࠦ_7...
          ࠦ_7 - ࠦ_7...
          ࠦ_7

     ࠦ_7 ::=
          ࠦ_8 * ࠦ_8...
          ࠦ_8 / ࠦ_8...
          ࠦ_8 MOD ࠦ_8...
          ࠦ_8 SHR ࠦ_8...
          ࠦ_8 SHL ࠦ_8...
          ࠦ_8

     ࠦ_8
          +ࠦ_8
          -ࠦ_8
          ࠦ_9

     ࠦ_9
          HIGH ࠦ_9
          LOW ࠦ_9
          ࠦ_10

     ࠦ_10
          OFFSET 㪠⥫
          SEG 㪠⥫
          SIZE 䨪
          LENGTH 䨪
          WIDTH 䨪
          MASK 䨪
          THIS 䨪

     ࡮ ᥬ 3.0/tasm/#2-2                             = 162 =

          䨪
          ⠭
          ( 㪠⥫ )
          [ 㪠⥫ ]  (ᥣ 砥 "ᮤন..")

                     設⢮ 祢 ᫮
     

           ,  ࡮ ᥬ ᯮ ப 室-
      ⥪.      ,  
     ਢ   ।᪠㥬  १⠬.  ᬮਬ,  ਬ,
     ᫥騩 ࠣ ணࠬ:

          NAME SEGMENT

          ᫨   ᠫ  ப,  뢠  ᥣ 
      NAME,   㤥 ࠧ஢. ࡮ ᥬ  ᯮ
     祢 ᫮ NAME ࠭,  祬 SEGMENT,  뢠   
     SEGMENT.

           饬 砥 । 祭 ப   ᭮  
      ᨬ ப.   ᨬ 室  ࢮ -
     樨,  ᨬ ࠢ   室  ன 樨.

                   設⢮ 権  ० Ideal
     

           ०  Ideal  ਬ  ᫥騥  ࠢ 設⢠
     権:

          1. 訩 ਮ (ਮ 1)   祢 ᫮-
               ࢮ 樨 ப.  ஢ 묨.

          2. 祢 ᫮  ன 樨 ப  ன -
               ᬠਢ   ।.

                   設⢮ 権  ० MASM
     

          ࠢ ᨭ⠪᪮    ப  ० MASM -
     ⥫쭮  ᫮, 祬  ० Ideal.    -
       ஢ ਮ:

          1. 訩 ਮ (ਮ 1) ᢠ ⤥
             祢 ᫮  ࢮ 樨 (⠪  NAME  %OUT).

          2. 騩  設 ਮ  (ਮ  2)  
              䨪, 㦥  ன 樨.

          3.  㣨 祢 ᫮  ࢮ 樨  -
             訩 (⨩) ਮ.

                ਬ砭:  ।  ࡮  ᥬ-

     ࡮ ᥬ 3.0/tasm/#2-2                             = 163 =

              祢 ᫮ ਮ 1  ਮ-
            3.  ⮬ 砥 祢 ᫮ ਮ 2  -
           訩 ਮ.

          ਬ,  ᫥饬 ࠣ :

          NAME SEGMENT

     NAME -    祢  ᫮  ࢮ  ਮ,    SEGMENT  -
     祢 ᫮ ண ਮ.  ࠧ, ࡮ ᥬ
     㤥 ஢  ப,   ४⨢ NAME,    
     ४⨢ SEGMENT.  㣮 ਬ:

          MOV INSTR,1

     MOV - 祢 ᫮ ਮ 3,  INSTR - 祢 ᫮ ਮ-
      2.  ࠧ, ࡮ ᥬ   -
        INSTR,      MOV (   
     ।).

            祢 ᫮  ।। 䨪
     

            ࠧ ਢ  祭  祢 ᫮
     ࡮ ᥬ. 祭  ᪮ ᫥ 祢 ᫮ 㪠뢠-
       ਮ (1  2)  ० MASM.  ਮ   祢
     ᫮ 㪠 ⮫쪮, ᫨   祭 1  2.   -
      祢 ᫮ ࠧ㬥 ਮ  3.  ࡮  ᥬ
     ᯮ 祢  ᫮  ⮫쪮  ⮬ 砥,  ᫨  室
     .  ० MASM 祢 ᫮ ਮ 1  3 ᥣ  -
       ࢮ 樨,  祢 ᫮ ਮ 2 -  ன
     樨.  M ᫥ 祢 ᫮ 㪠뢠,   -
     ⨬ ⮫쪮  ० MASM,   I 뢠 祢 ᫮, -
     㯭 ⮫쪮  ० Ideal.  ᫨ 㪢  㪠,  祢
     ᫮ ࠡ   ०.  ᫥ 祢 ᫮ -
     뢠 ਮ.

                     祢 ᫮ ४⨢
     

           ᫥饬  ᯨ᪥  ᮤঠ   祢 ᫮ ४⨢
     ࡮ ᥬ.  祢 ᫮ 㯯     ࡮
     ᥬ,    .

          騥 祢  ᫮  뫨     ࡮ ᥬ
     ᨨ 1.0.

            祢 ᫮ ࡮ ᥬ 1.0 (VERSION T100)
                                                            B.1
     Ŀ
         % (1)             %NOLIST           JZ             SETNLE  
         .186 (M)          NOLOCALS          LAHF           SETNO   
         .286 (M)          NOMASM51          LDS            SETNP   

     ࡮ ᥬ 3.0/tasm/#2-2                             = 164 =

         .286C (M)         %NOMACS           LEA            SETNS   
         .286P (M)         NOMULTERRS        LES            SETNZ   
         .287 (M)          NOSMART           LOCK           SETO    
         .386 (M)          %NOSYMS           LODS           SETP    
         .386C (M)         %NOTRUNCS         LODSB          SETPE   
         .386P (M)         NOWARN            LODSW          SETPO   
         .387 (M)          ORG               LOOP           SETS    
         .486 (M)          %OUT (1)          LOOPE          SETZ    
         .486C (M)         P186              LOOPNE         SHLD    
         .486P (M)         P286              LOOPNZ         SHRD    
         .8086 (M)         P286N             LOOPZ          STOSD   
         .8087 (M)         P286P             MOV            LOOPW   
         : (2)             P287              MOVS           LOOPWE  
         = (2)             P286              MOVSB          LOOPWNE 
         ALIGN             P386N             MOVSW          LOOPWNZ 
         .ALPHA            P386P             MUL            LOOPWZ  
         ARG               P387              NEG            F2XM1   
         ASSUME            P486              NOP            FABS    
         %BI               P486N             NOT            FADD    
         .CODE (M)         P8086             OR             FADDP   
         .CODESEG          P8087             OUT            FBLD    
         COMM (10)         PAGE              POP            FBSTP   
         COMMENT (1)       %PAGESIZE         PUSH           FCHS    
         %CONDS            %PCNT             PUSHF          FCLEX   
         CONST             PNO87             RCL            FCOM    
         .CONST (M)        %POPLCTL          RCR            FCOMP   
         .CREF (M)         PROC (2)          REP            FCOMPP  
         %CREF             %PUSHLCTL         REPE           FCOS    
         %CREFALL          PUBLIC (1)        REPNE          FDECSTP 
         %CREFREF          PURGE             REPNZ          FDISI   
         %CREFUREF         QUIRKS            REPZ           FDIV    
         %CTLS             .RADIX (M)        RET            FDIVP   
         .DATA (M)         RADIX             RETF           FDIVR   
         .DATA? (M)        RECORD (2)        RETN           FDIVRP  
         DATASEG           REPT (1)          ROL            FENI    
         DB                .SALL (M)         ROL            FFREE   
         DD                SEGMENT (2)       SAHF           FIADD   
         %DEPTH            .SEQ (M)          SAL            FICOM   
         DF (2)            .SFCOND (M)       SAR            FICOMP  
         DISPLAY           SMART             SBB            FIDIV   
         DOSSEG            .STACK (M)        SCAS           FIDIVR  
         DP (2)            .STARTUP (M)      SCASB          FILD    
         DQ (2)            STRUC (2)         SCASW          FIMUL   
         DT (2)            SUBTTL (1)        SHL            FINCSTP 
         DW (2)            %SUBTTL [        SHR            FINIT   
         ELSE (1)          %SYMS             STC            FIST    
         ELSEIF (1)        %TABSIZE          STD            FISTP   
         ELSEIF1 (1)       %TEXT             STI            FISUB   
         ELSEIF2 (1)       .TFCOND (M)       STOS           FISUBR  
         ELSEIFB (1)       TITLE (1)         STOSB          FLD     
         ELSEIFDEF (1)     %TITLE            STOSW          FLDCTW  
         ELSEIFDIF (1)     %TRUNC            SUB            FLDENV  
         ELSEIFDIFI (1)    UDATASEG          TEST           FLDLG2  

     ࡮ ᥬ 3.0/tasm/#2-2                             = 165 =

         ELSEIFE (1)       UFARDATA          WAIT           FLDLN2  
         ELSEIFIDN (1)     UNION (2)         WBINV          FLDL2E  
         ELSEIFIDNI (1)    USES              XCHG           FLDL2T  
         ELSEIFNB (1)      WARN              XLAT           FLDPI   
         ELSEIFNDEF (1)    .XALL (M)         XLATB          FLDZ    
         EMUL              .XCREF (M)        SOR            FMUL    
         END               .XLIST (M)        BOUND          FMULP   
         ENDIF (1)         USECS             ENTER          FNCLEX  
         ENDM              USEDS             INS            FNDSI   
         ENDP (2)          USESS             INSB           FNENI   
         ENDS (2)          USEES             INSW           FNINIT  
         EQU (2)           USEFS             LEAVE          FNOP    
         .ERR (1) (M)      USEFS             OUTS           FNSAVE  
         ERR               CATSTR (2)        OUTSB          FNSTCW  
         .ERR1 (1) (M)     INSTR (2)         OUTSW          FNSTENV 
         .ERR2 (1) (M)     SIZESTR (2)       POPA           FNSTSW  
         .ERRB (1) (M)     SUBSTR (2)        PUSHA          FPATAN  
         .ERRDEF (1) (M)   AAA               ARPL           FPREM   
         .ERRDIF (1) (M)   AAD               CTLS           FPTAN   
         .ERRDIFI (1) (M)  AAM               LAR            FRNDINT 
         .ERRE (1) (M)     AAS               LGDT           FRSTOR  
         .ERRIDN (1) (M)   ADC               LIDT           FSAVE   
         ERRIF             ADD               LLDT           FSCALE  
         .ERRDIF (1) (M)   AND               LMSW           FSQRT   
         .ERRDIFI (1) (M)  ARPL              LSL            FST     
         .ERRE (1) (M)     BSF               LTR            FSTCW   
         .ERRIDN (1) (M)   BSR               SGDT           FSTENV  
         ERRIF             BSWAP             SIDT           FSTP    
         ERRIF1            BT                SLDT           FSTSW   
         ERRIF2            BTC               SMSW           FSTSW   
         ERRIFB            BT                STR            FSUB    
         ERRIFDEF          BTR               VERR           FSUBP   
         ERRIFDIF          BTS               VERW           FSUBR   
         ERRIFDIFI         CALL              BSF            FSUBRP  
         ERRIFE            CBW               BSR            FTST    
         ERRIFDIDN         CDQ               BT             FUCOM   
         ERRIFDIDNI        CLC               BTC            FUCOMP  
         ERRIFNB           CLD               BTR            FUCOMPP 
         ERRIFNDEF         CLI               BTS            FWAIT   
         .ERRIFNB (1) (M)  CLTS              CDQ            FXAM    
         .ERRIFDEF (1) (M) CMC               CMPSD          FXCH    
         .ERRNZ (1) (M)    CMP               CWDE           FXTRACT 
         .EVEN             CMPS              INSD           FYL2X   
         EVENDATA          CMPS              IRETD          FYL2XP1 
         EXITM             CMPXCHG           IJECXZ         FSETPM  
         EXTRN (1)         CWD               LPS            FPCOS   
         .FARDATA          CWDE              LGS            FPREM1  
         FARDATA           DAA               LODSD          FPSIN   
         .FARDATA (M)      DAS               LOOPD          FPSINCOS
         .FARDATA? (M)     DEC               LOOPDE         FUCOM   
         GLOBAL (1)        DIV               LOOPDNE        FUCOMP  
         GROUP (2)         ESC               LOOPDNZ        FUCOMPP 
         %INCL             HLT               LOOPDZ                 

     ࡮ ᥬ 3.0/tasm/#2-2                             = 166 =

         IDEAL             IDIV              LSS                    
         IF (1)            IMUL              MOVSD                  
         IF1 (1)           IN                MOVSX                  
         IF2 (1)           INC               MOVZX                  
         IFb (1)           INS               OUTSD                  
         IFDEF (1)         INT               POPAD                  
         IFDIFI (1)        INVO              POPFD                  
         IFE (1)           IRET              PUSHAD                 
         IFIDN (1)         JA                PUSHFD                 
         FIDNI (1)         JAE               SCASD                  
         IFNB (1)          JB                SETA                   
         IFNDEF (1)        JBT               SETAE                  
         %INCTL (1)        JCXZ              SETB                   
         INCLUD (1)        JE                SETBE                  
         INCLUDELIB (1)    JG                SETC                   
         IRP (1)           JGT               OUTSD                  
         IRPC (1)          JL                POPAD                  
         JUMPS             JLE               POPFD                  
         LABEL (2)         JNA               PUSHAD                 
         .LALL (M)         JNAE              PUSHFD                 
         .LFCOND (M)       JNB               SCASD                  
         %LINUM            JNBE              SETA                   
         %LIST             JNC               SETAE                  
         .LIST (M)         JNE               SETB                   
         LOCAL             JNG               SETBE                  
         LOCALS            JNGE              SETC                   
         MASM              JNL               SETE                   
         %MACS             JNLE              SETG                   
         MACRO (2)         JNO               SETGE                  
         MODEL             JNP               SETL                   
         .MODEL (M)        JNC               SETLE                  
         MULTERRS          JNP               SETNA                  
         NAME (1)          JNS               SETNAE                 
         %NEWPAGE          JNZ               SETNB                  
         %NOCONDS          JO                SETNBE                 
         %NNOCREF          JP                SETNC                  
         %NOCTLS           JPE               SETNE                  
         NOEMUL            JPO               SETNG                  
         %NOINCL           JS                SETNGE                 
         NOJUMPS           JUMP              SETNL                  
     

           ࡮ ᥬ ᨨ 2.0  ন    祢
     ᫮ ᨨ 1.0  ᫥騬 ﬨ:

        祢 ᫮ ࡮ ᥬ ᨨ 2.0 (VERSION T200)
                                                            B.2
     Ŀ
        BSWAP              P486              STARTUPCODE            
        CMPXCHG            P486N             WBINVD                 
        INVD               PUBLICDLL(I)      XADD                   
        INVLPG             RETCODE                                  
     

     ࡮ ᥬ 3.0/tasm/#2-2                             = 167 =


           ࡮ ᥬ ᨨ 2.5  ন    祢
     ᫮ ᨨ 2.0  ᫥騬 ﬨ:

        祢 ᫮ ࡮ ᥬ ᨨ 2.5 (VERSION T250)
                                                            B.3
     Ŀ
       ENTERD              LEAVED                                   
       ENTERW              LEAVEW                                   
     

           ࡮ ᥬ ᨨ 3.0  ন    祢
     ᫮ ᨨ 2.5  ᫥騬 ﬨ:

        祢 ᫮ ࡮ ᥬ ᨨ 3.0 (VERSION T200)
                                                            B.4
     Ŀ
       CLRFLAG             LARGESTACK        TBLINIT                
       ENUM(2)             SETFIELD          TBLINST                
       FASTIMUL            SETFLAG           TBLPTR                 
       FLIPFLAG            SMALLSTACK        TESTFLAG               
       GETFIELD            TABLE(2)          VERSION                
       GOTO(1)                               WHILE(1)               
     




     ࡮ ᥬ 3.0/tasm/#2-2                             = 168 =

                   ਫ C.  ᮢ⨬
     

          ࡮ ᥬ  ० MASM  ᮪ ⥯  ᮢ⨬ 
     ᥬ஬ MASM ᨨ 5.2.  ⮯業⭠ ᮢ⨬ -
      ,   ஬  ⮫쪮 ६,  ..  ଠ쭠
     ᯥ䨪  몠 ,    ࠧ ᨨ MASM 
      ᮢ⨬   㣮.

           設⢠ ணࠬ  MASM  ࡮  ᥬ  
         ᮡ - ᫮.     
     ࡮ ᥬ  ।०騥 ᮮ饭    ᮮ饭
      訡 ⠬,     MASM  뫮,   筮 砥, 
     訡     ஠ᥬ஬  MASM.  -
     , MASM  㦨 訡  ᫥ :

               abc  EQU  [BP+2]
                    PUBLIC  abc

       ᫥ ꥪ .   ࡮ ᥬ -
      ,  ⠪  㣨 ᫥ 権,
      ஢  訡.

          ᫨  ᥬ஢ ணࠬ  짮⥫    
     ࡮ ᥬ  - 㤭,   -
      ᯮ짮 ४⨢ QUIRKS.  ਬ,  ᫨   
     ᫥饩  ப:

               TASM /JQUIRKS  MYFILE

     ணࠬ 㤥  ᥬ஢ ࠢ쭮,   ᫥  
     砫 室 䠩 ४⨢  QUIRKS.    ,  ᯮ
     ᢥ  ⮣ ਫ,  । ,   
     ॡ ४⨢ QUIRKS,  ᫥ ⮣ ९ ᮮ⢥-
     騥  ப 室 䠩 ⠪,  ⮡ ⯠ 室 -
     짮 ४⨢ QUIRKS.

           ᨬ쭮 ᮢ⨬  MASM  ᫥  ᯮ짮
     ४⨢ NOSMART  ० QUIRKS.



     ࡮ ᥬ 3.0/tasm/#2-2                             = 169 =

              -  室 ० ᥬ஢
     

           ⠭⭮ ० ࡮ ᥬ 믮 ᥬ஢-
         室,   MASM -   室.  ⮬ ࡮ -
     ᥬ -   ᥬ  ࠢ  MASM.  -
     室  ࡮  ᥬ   ਢ   ன 
     ᮢ⨬  MASM  ࠧ襭 뫮 ।    ࠡ⪥
     権,     室.   TASM  ࠬ -
      ப (/m),   ண   ᫮ -
     .  ᫨ ॡ ᯥ ᨬ ᮢ⨬  MASM, 
     㦭 㪠 室 ० (/m2). (.  2,  
     ࠬ 㦤  ஡.)

          ᯮ짮  ࠬ  ப 㤥 -
     ஢ ०,  ᮢ⨬  MASM ( 室),  -
      ᫥騥 樨:

          - ४⨢ IF1  IF2;

          - ४⨢ ERR1  ERR2;

          - 뫪 ।  IFDEF  IFNDEF;

          - ०騥 뫪  樥 .TYPE;

          - ४ᨢ । ᫠, ⠪, 

                   NMBR=NMBR+1;

          - ४ᨢ । ⥪⮢ ப  ⥪-
             ப,     ०騥  뫪,
            ⠪, :

                  LNAME   CATSTR   LNAME,<1>

          - ப,    ०騥 뫪.



     ࡮ ᥬ 3.0/tasm/#2-2                             = 170 =

                     ६ 樮 ।
     

           ࡮ ᥬ  ᯮ ६ ।   -
     । ࠬ஢, ᯮ㥬  㬮砭,  ⢥砥 -
     饬 室  Borland,  ᯮ㥬  ᮧ ணࠬ-
      த⮢.  ⮣ ࠬ, ᯮ㥬  㬮砭,
     ᫥   䠩 䨣樨,     ࠧ  ஥⮢
     ᮧ ᮮ⢥騥  䠩 䨣樨.

          ᫨   ᯮ짮 MASM  䨣஢ 㦭 -
     ࠧ ⥬  ᯮ짮   ६   樮   ।
     INCLUDE   MASM,    ᯮ짮 ⮩  ணࠬ  ࡮
     ᥬ஬ 㦭 ᮧ 䠩 䨣樨.      ࠬ,
       뫨  ᯥ஢,  ᯮ ६ । MASM,
     㦭  ।⢥   䠩  䨣樨.  ⠫,
     㪠  ६  INCLUDE,    䠩 䨣樨 
      ࠬ /I  ப.

      ଠ  Microsoft   ᥫ  饩 窮
     

           ࠭   ஠ᥬ MASM  ᥫ  饩
     窮  㬮砭 ᯮ짮 ଠ,  ᮢ⨬  ଠ-
     ⮬    ᥫ  饩 窮 ⠭ IEEE.   MASM ᨨ
     5.1 ᫠  饩 窮   ଠ IEEE,  -
      ४⨢ .MSFLOAT,    ன  ᯥ஢
     ᯮ짮 ࠭ ᯮ짮襣 ଠ  Microsoft.

           ࡮ ᥬ  ন  ଠ  ᥫ  
     饩 窮 , ᫥⥫쭮, .MSFLOAT    -
     ⨬ ४⨢.




     ࡮ ᥬ 3.0/tasm/#2-2                             = 171 =

                   ਫ D. ⨫ ࡮ ᥬ
     

          ࡮ ᥬ TASM ।⠢  ᥬ   ⮭-
       ⨫.    ᯮ짮   䠩 TASM,   ⠪
       㣨 䠩.

           ⠪ ⨫, :

           MAKE ( ⨫  TOUCH;  ⮭    ண-
            ࠬ);

           TLINK (騪);

           TLIB (⥪);

           TASMHELP (⨢ ࠢ筨);

           GREP (⨫ ᪠ ⥪  䠩);

           OBJXREF  (⨫    ࠡ   ४묨 뫪 
            ꥪ );

           TCREF (⨫  ࠡ  ४묨 뫪);

           H2ASH (⨫-८ࠧ⥫ 䠩 .h  䠩 .ash).

          ஡   ᯮ짮  ⨫  MAKE,  TOUCH,  TLINK,
     GREP, OBJXREF,  TASMHELP,  H2ASH    㧭  㬥樨 
     . TASMHELP ࠡ⠥ 筮 ⨫ THELP, ᠭ
     ன ⠪     㬥樨  .   ⮬,
      ᯮ짮 ⨫ TCREF  ⥪⮢ 䠩,    㧭
     䠩 㬥樨    ᪠  ࡮ ᥬ.  ⨫ H2ASH
     ⠪ 뢠  䠩  ᪠ ࡮  ᥬ,    -
        ⨫,   ஡ ᭥    -
     .

                     ⨫-८ࠧ⥫ H2ASH
     

          㫨    ++  ணࠬ 筮 ᮢ⭮ ᯮ -
     । ⨯      .         
     祭  䠩 (䠩-),   ᮤঠ
     । ⨯   ,  ᯮ㥬   ᪮쪨
     .      /++  筮   ७
     .H. ᥬ㥬 㫨 筮  䠩   -
      .ASH ( .INC).

          ணࠬ, ᮤঠ騥 㫨,  ᠭ  /++  㫨
     ࡮ ᥬ,     ᮢ⭮ ।-
      ⨯   . ⮬ ᯮᮡ ⨫ H2ASH.

          ⨫ H2ASH  ८ࠧ  䠩   /++  䠩

     ࡮ ᥬ 3.0/tasm/#2-2                             = 172 =

       몠  ᥬ.   室 䠩  ७
     .H 祭    १ 䠩  ७ .ASH ᠬ  -
     ঠ ணࠬ.  ᫨  맮 H2ASH  ᯮ ᫥騩
     ᨭ⠪:

          H2ASH [[ࠬ] <_䠩> [<_䠩> ...]]

         "_䠩"   㥬 䠩 -
     . ⨫ H2ASH ।,  ८ࠧ㥬 䠩 
      㬮砭 ७ .H.   ࠡ뢠 䠩 -
     ⢥騩 室 䠩  ७ .ASH.

          "ࠬ" ᮮ⢥ ࠬࠬ  ப -
      Borland  C++,    ⠪  ᯥ᪨  ࠬࠬ ⨫
     H2ASH ( ᮮ⢥ ࠬࠬ -q ࡮ ᥬ). .
     "㪮⢮ 짮⥫  Brland C++"  ⨢ ࠢ筨,
        ᠭ  ࠬ஢.

          ⨫ H2ASH ८ࠧ ᫥騥 樨:

          -  ᭮ ⨯ 몠 ;

          - ⨯ ENUM ( ⨯ ENUM TASM);

          - #IFDEF (  IFDEF ᥬ);

          - #DEFINE ( । EQU);

          -   ꥤ (    ꥤ  ࡮
            ᥬ);

          -   ⮢묨 ﬨ (  ᥬ RECORD);

          - । TYPEDEF ( TYPEDEF ᥬ);

          -     ⢥ ᫥   㠫
             ᮢ;

          -  ᮢ;

          - ८। 権.

          ⨫-८ࠧ⥫  ᫥騥 ࠭祭:

          -  ८ࠧ㥬  ,  믮塞    
            ;

          - ४⨢ #INCLUDE  室 䠩  ;

          -   뢮  ᥬ   䫨 ,  ⠪
             ࠢ  ⢨ ++ ⢥ ⫨ 
            ࠢ ᥬ (   ᯮ짮 ०
            Ideal);

     ࡮ ᥬ 3.0/tasm/#2-2                             = 173 =


          ८ࠧ⥫ H2ASH  ⮫쪮 砥 ࣠ -
     䥩   /++  몮 ᥬ ( ᨬ쭮 ந-
     ⥫쭮). H2ASH  ⮬᪨  ८ࠧ  ᠭ  
     ᮢ ++   ꥪ ᠭ ᥬ  -
      "᪮४஢"  ⮤.     
       몥 ᥬ  ४㥬  ᯮ짮 ᫥-
      楤:

          1.  ᠭ   䠩  몠 .

          2.  ᠭ 䠩     -⮬-
               㫨  몥 ,   ᯮ  
             .

          3. ᯮ ८ࠧ⥫ H2ASH  䠩    
             楫 祭  ꥪ⭮  䠩    ᥬ
             (   ⮬⨧஢    ନ-
             饣 䠩).

          4.   ꥪ  䠩   ᥬ  ,
              ᠭ ⮤  몥 ᥬ.

           ஡ ଠ  ⨫ H2ASH      
     ⥪⮢ 䠩 㬥樨  ᪠ ࡮ ᥬ.




     ࡮ ᥬ 3.0/tasm/#2-2                             = 174 =

                   ਫ E. 饭  訡
     

            ਫ ᠭ  ᮮ饭, 㥬 -
       ᥬ஬.  筮  ᮮ饭 뤠  ࠭,   
      ॠᮢ  䠩   ਭ    ⠭
     । DOS ॠ樨 ⮪, ..  㪠  ன-
     ⢠  䠩  ।騬   ᨬ  "  祬"  (>).
     ਬ:

                     TASM MYFILE > ERRORS

           ࡮ ᥬ  ᮮ饭 ᫥ ⨯:

          - ଠ樮 ᮮ饭;
          - ।०騥 ᮮ饭;
          - ᮮ饭  訡;
          - ᮮ饭  ⠫ 訡.

                        ଠ樮 ᮮ饭
     

          ࡮ ᥬ 筮 뢮  ଠ樮 ᮮ饭.
     -,  ᥣ 뤠 ଠ樮  ᮮ饭  ।-
     ⢥  । 砫 ᥬ஢ 짮⥫᪮ 室
     䠩 ( 䠩). ஬ ⮣, 뤠 ଠ樮 ᮮ饭
      砭 ᥬ஢  䠩. ਬ ଠ樮-
      ᮮ饭, 뤠  ᪥ ࡮ ᥬ:

     Turbo Assembler Version 3.0 Copyright(C) 1991 Borland
                              International Assembling file: TEST.ASM


     ࡮ ᥬ 3.0/tasm/#2-2                             = 175 =

     (࡮ ᥬ,  3.0, த  Borland, 1991.)

           砭  ᥬ஢ 室 䠩 뤠 ᮮ-
     饭  ⪮ ࠪ⨪  ᥬ஢.  -
     饭 룫廊 ᫥騬 ࠧ:

             Error messages: None
             Warning messages: None
             Passes: 1
             Remaining memory: 279K

             (饭  訡: 
             室: 1
             ।०騥 ᮮ饭: 
             ⠫ : 279)

             ଠ樮 ᮮ饭    -
       ப /T.  ଠ樮 ᮮ饭  
     ⮫쪮  砥 ⢨ 訡   ᥬ஢. 
     稨 訡 ࠬ /T  ﭨ  : ⠭
     ଠ樮 ᮮ饭  뤠  砫    
     ᥬ஢.



     ࡮ ᥬ 3.0/tasm/#2-2                             = 176 =

            ।०騥 ᮮ饭  ᮮ饭  訡
     

          ।०騥 ᮮ饭  뤠  ନ஢ -
     ⥫   ⥫  ᫥⢨ ᥬ஢
       室  䠩.  ।०饥 ᮮ饭 뤠,
     ਬ,    ,  ᯮ짮 Turbo Assembler -
     -,   , ⨬ 㬮砭  ਢ 
     ४ १⠬.  易⥫쭮 ஠-
      稭 ।० ᮮ饭,  ⮡   -
     樨 ୮ . 稥  ᮮ饭    -
       ꥪ⭮   Turbo Assembler.  ।०騥 ᮮ饭
      ᫥騩 ଠ:

                 **Warning** _䠩(_ப) ᮮ饭

          ᫨ ।०饥 ᮮ饭 뤠   ६ ७
     ப   ७,    㤥 ᮤঠ -
     ⥫ ଠ:   ப   ப,    -
     ᥬ஢ ன   ᮮ饭. ।०饥 -
     饭  ⮬ 砥  ᫥騩 ଠ:

           **Warning** _䠩(_ப)
                _ப(_ப__ப)ᮮ饭

           ⫨稥  ।० ᮮ饭,   ᮮ饭
      訡 砥,   ꥪ  ࡮ ᥬ -
       㤥,   ᥬ஢ 㤥   -
     . 筮 ᮮ饭  訡  ᫥騩 ଠ:

                 **Error** _䠩(_ப) ᮮ饭

          ᫨ ᮮ饭  訡 뤠  ६ ७ -
         ,    㤥 ᮤঠ ⥫ -
     ଠ:  ப    ப,    ᥬ஢
     ன   ᮮ饭. 饭  訡  ⮬ 砥
      ᫥騩 ଠ:

             **Error** _䠩(_ப)
                _ப(_ப__ப)ᮮ饭

            䠢⭮ 浪 ਢ ⥪ ।।⥫-
      ᮮ饭  ᮮ饭  訡:

         32-bit segment not allowed without .386
           (32-⮢ 䫠  ४⨢ .386  ᪠)

           ।⢮ ७.     .MODEL  -
      USE32  LARGESTACK.    뫮 ᮮ饭  "USE32  not
     allowed without .386").

         Argument needs type override
          (ॡ  㪠 ⨯ ࠭)

     ࡮ ᥬ 3.0/tasm/#2-2                             = 177 =


          ॡ  㪠 ࠧ,   ⨯,  ࠦ, .. 
        ।  ⥪. ਬ, 訡筮 -
      ᫥ :

            mov [bx],1

          訡 ⠪  த 筮 ४   樨
     PTR, 饩 ⠭ ࠧ ࠭:

           mov WORD PTR[bx],1

         Argument to operation or instruction has illegal size
          (࠭ 樨    ⨬ ࠧ)

           樨  㪠  ࠭,  騩 ⨯,  ⨬ 
      樨. ਬ:

           Q LABEL QWORD
           QNOT = NOT Q ; ࠭ 樨 栭  
                        ;  ⨯ QWORD

         Arithmetic overflow
          (䬥᪮ ९)

              ᫥ 祭 ࠦ. -
     ਬ:

           X = 20000h * 20000h ; १   32 

          筮  䬥᪨ 権 - 32 .

         ASSUME must be segment register
          ( ४⨢ ASSUME   㪠 ᥣ ॣ)

           ४⨢ ASSUME  㪠뢠 ⮫쪮 ᥣ ॣ-
     ,   ⠫  뢮  ᮮ饭  訡-
     . ਬ, 訡筮  ४⨢:

            ASSUME ax:CODE

         Bad keyword in SEGMENT statement
          (୮ 祢 ᫮   SEGMENT)

            ࠬ஢ ४⨢ SEGMENT:  ⨯ ࠢ, ⨯
     ꥤ  ⨯ ᥣ  ⨬ 祭.  -
     :

           DATA SEGMENT PAFA PUBLIC ;  PARA 㪠 PAFA

         Can't add relative quantities
          ( ᪫뢠 ⭮⥫ )


     ࡮ ᥬ 3.0/tasm/#2-2                             = 178 =

          ࠦ ᮤন  ᫮  ᮢ,  -
      ᫥ 樥. ਬ:

           ABC   DB  ?
           DEF   =  ABC  +  ABC  ; 訡:  ᪫뢠
                                 ;  ⭮⥫ 

            ⭮⥫ .   ⠭-
       ⭮⥫쭮 , ਬ:

           XYZ DB 5 DUP(0)
           XYZEND EQU $
           XYZLEN = SYZEND - XYZ    ; ᮢ襭 ୮
           XYZ2 = XYZ + 2           ; ⮦ ୮

         Can't address with currently ASSUMEd segment registers
          (    ⥪,  ⠭ ४⨢
          ASSUME, ᥣ ॣ஢)

           ࠦ ᮤন 뫪  ६,   㯠  
     ன  ᯥ஢ ᥣ ॣ. ਬ:

          DSEG SEGMENT
          ASSUME ds:DSEG
          mov si,MPTR ;  । ᥣ ॣ, 
                      ; ᯥ稫    ᥣ XSEG
          DSEG ENDS
          XSEG SEGMENT
          MPTR DW ?
          XSEG ENDS

         Can't convert to pointer
          ( ८ࠧ  㪠⥫)

           ࠦ      ८ࠧ  㪠⥫ 
     ,  ਬ,   樨 PTR:

               mov cl,[BYTE PTR al] ; AL  ८ࠧ
                                    ;  㪠⥫

         Can't emulate 8087 instruction
          (   ᮯ 8087)

           ࡮ ᥬ ࠬ஬  ப /E   -
      ४⨢ EMUL ⠭ ० 樨 㫨஢ -
      䬥⨪  饩 窮,  ⥪   -
       㫨஢. ਬ:

           EMUL
           FNSAVE [WPTR]  ;      㫨஢

             ন ࠬ 䬥⨪ 
     饩 窮.    FNSAVE, FNSTCW, FNSTENV  FNSTSW.

     ࡮ ᥬ 3.0/tasm/#2-2                             = 179 =


         Can't make variable public
          (६      PUBLIC)

          ६ 뫠  㦥 ࠭  ⠪ ࠧ,   㦥
        ।   (PUBLIC). ਬ:

          EXTRN ABC:NEAR
          PUBLIC ABC    ; 訡: ABC 㦥 ࠭ 
                        ;  ਡ⮬ EXTRN

         Can't override ES segment
          ( ८। ᥣ ES)

           ⥪饬  㪠 ॣ, ᯮ짮 ண 
       ⨬. ਬ:

          STOS DS:BYTE PTR[di]

             STOS   । 楫  ᪠
     ᯮ짮 ⮫쪮 ॣ ES.

         Can't subtract dissimilar relative quantities
          (⨬ ⠭ ⭮⥫ ᮢ)

          ࠦ ᮤন  ⠭   ᮢ, 
       ᮢ  ⨬.   ᮮ饭 뤠-
     , ਬ,  ⮬ 砥, ᫨  室  ࠧ ᥣ-
     . ਬ:

          SEG1
          SEGMENT
       A: SEG1
          ENDS
          SEG2
          SEGMENT B:
          mov ax,B-A ; ⨬, ᪮ A   室
                     ;  ࠧ ᥣ
          SEG2 ENDS

         Can't use macro name in expression
          (⨬ ᯮ짮    ப    ⢥
          ࠭ ࠦ)

           ப 㪠  ⢥ ࠭ ࠦ. -
     ਬ:

          MyMac MACRO
            ENDM
            mov ax,MyMac   ; 訡!

         Can't use this outside macro
          (ᯮ짮    ⨬  ம-

     ࡮ ᥬ 3.0/tasm/#2-2                             = 180 =

          )

           ம। 㪠 ४⨢,   ᪠
     ᯮ짮  ⮫쪮  ம।.   ⠪ ४⨢
     ⭮, ਬ, ENDM  EXITM. ਬ:

          DATA SEGMENT
            ENDM  ; 訡:  ம। ⨬

         Code or data emission to undeclared segment
          (  ᥣ    )

          , 騩   ,  ਭ  -
       ᥣ⮢,  ४⨢ SEGMENT. ਬ:

          ; ࢠ ப 䠩
            inc bx   ; 訡:  । ᥣ
            END

          ஢      ⮫쪮  -
     ᥣ.

         Constant assumed to mean Immediate const
          (⠭   ।⢥)

           ।०  ᮮ饭  뤠    ࠦ ⨯
     [0].   ० MASM  ࠦ   ।-
     ⢥ ⠭, ࠢ 0. ਬ:

          mov ax,[0]; 砥 mov ax,0,   mov ax,ds:[0]

         Constant too large
          (誮  ⠭)

          ⠭ ,  , ࠢ ଠ,  
     祭 ॢ蠥 ⨬   ० 稭. -
     ,  ᫠,  訥 0ffffh,  ᯮ짮, ᫨ ⮫쪮 -
     ४⨢  .386/.386P   .486/.486 ࠧ襭  
     386  i486.

         CS not correctly assumed
          (४⭮ 祭  ॣ CS)

           祭    맮   -
     室   室  㣮 ᥣ. ਬ:

           SEG1 SEGMENT
           LAB1 LABEL NEAR
           SEG1 ENDS
           SEG2 SEGMENT
           JMP  LAB1   ; 訡:  ᥣ 
           SEG2 ENDS


     ࡮ ᥬ 3.0/tasm/#2-2                             = 181 =

           訡  ⮫쪮  ० MASM.   ० Ideal
     ⠪ 室  맮  ४⭮.

         CS override in protected mode
          (८। ॣ CS  饭 ०)

           饭  ०  ᥬ஢   286,
     386  i486,  ⠭ ४⨢ 286, P386P  486, 
     ⥪饩   ॡ ८। ॣ CS. ਬ:

          P286
          .CODE
     CVAL DW ?
          mov CVAL,1 ;  ८। ॣ CS

           ।०饥 ᮮ饭  뤠,  ᫨    
     ப 㪠 ࠬ /.  饭 ० ,  
     ८। ॣ CS,   믮  ᯥ樠
     ⮢⥫ 権.

         CS unreachable from current segment
          (CS ⨦  ⥪饣 ᥣ)

           । ⪨     (:)   -
       ४⨢ LABEL  PROC ᥣ ॣ  㪠뢠 
     ⥪騩  ᥣ  㯯,  ᮤঠ  ⥪騩  
     ᥣ. ਬ:

          PROG1  SEGMENT
              ASSUME CS:PROG2
          START:    ; 訡: ୮ ⠭ ॣ CS

           訡  ⮫쪮  ० MASM.   ० Ideal
     ⠪ 室  맮 ࠡ뢠 ४⭮.

         Declaration needs name
          ( ४⨢   㪠 )

           㪠  䨪  ४⨢,   ன ᯥ-
     䨪   易⥫쭮. ਬ:

            PROC ; 訡:  ४⨢ PROC 㪠  易⥫쭮
                   ret
            ENDP

           ४⨢ ,  ⠪  SEGMENT, PROC  STRUC,
     易⥫쭮   㪠  䨪.  ० MASM
      㪠뢠 ।  ४⨢,    ० Ideal - ᫥
      ४⨢.

         Directive ignored in Turbo Pascal model
          ( ० TPASCAL ४⨢ )


     ࡮ ᥬ 3.0/tasm/#2-2                             = 182 =

          㫥 ᥬ,  ।祭  䥩   ࡮
     ᪠, ᯮ ⨬ ४⨢.  䥩 
     ࡮ ᪠ ᯥ ४⨢ .MODEL.   ஡
     䥩  ࡮ ᪠ 㦤   19.

         Directive not allowed inside structure definition
          (⨬ ४⨢  । )

            ।  㪠 ⨬  -
     ४⨢. ਬ:

            X STRUC
            MEM1 DB ?
               ORG $+4   ; 訡: ४⨢ ORG  㪠뢠
                         ;  
            MEM2 DW ?
            ENDS

           ।     ।  
       ७ ஢. ਬ:

           F00 STRUC
              F002 STRUC  ; 訡: ।  
              ENDS
           ENDS

           ⮣  ⮡  ᯮ짮      㣮
     ,  㦭 ᭠砫 ।   ,    ᫥
     ⮣  ன   㪠뢠  ࢮ.

         Duplicate dummy arguments:_
          (⨬ ᯮ짮       ଠ
          ࠬ஢)

           ४⨢ MACRO । ᪮쪮 ଠ ࠬ஢
      묨 . ਬ:

           XYZ   MACRO  A,A   ; 訡: 㡫  
                              ; ଠ ࠬ஢
              DB A
              ENDM

           ଠ ࠬ ம।    ࠧ-
      .

         ELSE or ENDIF without IF
          (ELSE  ENDIF  IF)

           ४⨢ ELSE  ENDIF  ୮ ४⨢ IF,  -
     饩 砫 ᫮ ᥬ㥬 . ਬ:

          BUF DB 10 DUP(?)
            ENDIF   ; 訡:  ୮ ४⨢ IFxxx

     ࡮ ᥬ 3.0/tasm/#2-2                             = 183 =


         Expecting METHOD keyword
          (ॡ 祢 ᫮ METHOD)

           ७ ୮   । ꥪ⮢
     ᫥ ஦饣 ꥪ ॡ 祢 ᫮ METHOD.

         Expecting offset quantity
          (ॡ  㪠 稭 ᬥ饭)

           ⢥  ࠭  ࠦ  㪠  ୮  祭
       ᬥ饭  ᥣ. ਬ:

          CODE SEGMENT
            mov ax,LOW CODE
          CODE ENDS

         Expecting offset or pointer quantity
          (ॡ  㪠 ᬥ饭  㪠⥫)

           ⢥  ࠭  ࠦ  㪠  ୮  祭
         ᬥ饭   ᯥ஢ ᥣ.
     ਬ:

           CODE SEGMENT
              mov ax,SEG CODE  ; 訡: ODE -  ᥣ,
                               ;     ᥣ
           CODE ENDS

         Expecting pointer type
          (࠭   㪠⥫)

          ࠭ ⥪饩      .  -
     :

          LES di,4 ; ୮, .. 4 - ⠭

         Expecting record field name
          (ॡ   )

           ᯮ짮   SETFIELD  GETFIELD  ᫥-
     饣  .

         Expecting register ID
          (ॡ 䨪 ॣ)

            USES  CALL...METHOD ॡ  ॣ-
     ஢.

         Expecting scalar type
          (࠭   ⠭⮩)

          ࠭ ⥪饩    ⠭. ਬ:

     ࡮ ᥬ 3.0/tasm/#2-2                             = 184 =


          BB  DB  4
            rol ax,BB   ; 訡:  ࠭ 樨 ROL
                        ;   ⠭

         Expecting segment or group quantity
          (  㪠  ᥣ  㯯)

              ᥣ   㯯  㪠  ,
     ஥ ⠪  . ਬ:

              DATA SEGMENT
                 ASSUME ds:F00  ; 訡: F00   
                                ; ᥣ  㯯
              F00 DW 0
              DATA ENDS

         Extra characters on line
          (譨 ᨬ  ப)

          ࠦ  ४ ᨭ⠪,   ᫥   ,
      ⮩  ப   譨 ᨬ. ਬ:

           ABC = 4 shl 3   3   ;   樨
                               ;   ன

           訡 筮  ᫥⢨  㣮  訡,  
     १ ன  ࠦ ०६ 稢-
      ࠡ ࠦ.

         Forward reference needs override
          (訡  ᯮ짮 㬮砭  뫪 ।)

           १  ᯮ짮 㬮砭  뫪 । 뫮
     १ࢨ஢  ,  祬   室. 
     訡   ⮣,    䨪,   㬮砭
     饥   室  맮, ८। 
     ணࠬ    쭨  .   訡  ⠪  
     ,    㪠 ᥣ (⫨  । 
     㬮砭)  㯠  ६. ਬ:

           ASSUME cs:DATA
           call A         ;  㬮砭 -  맮
        A PROC FAR        ;   ८।  쭨
           mov ax,MEMVAR  ;  ⭮,  ॡ 㣮 ᥣ
        DATA  SEGMENT
              MEMVAR DW ? ;  訡: ॡ ८।

           訡 ࠢ ⥬  㪠  ᥣ  
     ⨯ 室 FAR.

         Global type doesn't match symbol type
          (, 㪠  ४⨢ GLOBAL  ᮢ    ⢨-

     ࡮ ᥬ 3.0/tasm/#2-2                             = 185 =

          ⥫ ⨯  䨪)

           ।०饥 ᮮ饭 뤠, ᫨  ᨬ-
     ᪮  ४⨢ GLOBAL 室  ⮬  ᠬ ᥣ-
     ,  ।   䨪,   ⨯, 㪠-
       ४⨢ GLOBAL,   ᮢ   ⢨⥫  ⨯
     ⮣  䨪.

         ID not member of structure
          (䨪    )

           ० Ideal ᫥ 窨 (ᥫ  ) 㪠-
       䨪, ஥     .
     ਬ:

             IDEAL
          STRUC DEMO
             DB ?
          ENDS
          COUNT DW 0
             mov  ax,[(DEMO  bx).COUNT]  ; COUNT    
                                         ;  

          ᫥ 窨   㪠 ⮫쪮   ⮩  -
     ,  ன 㪠 । 窮.

           訡  筮   ᫥⢨ 㣮 訡,  
     १ ன  ࠦ ०६ 稢-
      ࠡ ࠦ.

         Illegal forward reference
          (⨬ 뫪 ।)

           䨪,  ஥ ந室 뫪,   -
       ।,    ᮮ⢥饩 ४⨢  ᪠ -
     짮 뫪 ।. ਬ:

          IF MYSYM   ; 訡: MYSYM   ।
                     ;
          ENDIF
          MYSYM EQU 1

          뫪 ।  ᯮ짮  ४⨢  IFxxx, 
     ⠪  ⢥ 稪 ࠦ  樨 DUP.

         Illegal immediate
          (⨬ ।⢥ ࠭)

           ᮤন  ।⢥ ࠭ (..  ⠭)
     ⠬,   ⨬. ਬ:

           mov 4,al


     ࡮ ᥬ 3.0/tasm/#2-2                             = 186 =

         Illegal indexing mode
          (⨬ ० 樨)

           ᮤন ࠭, ᯮ騩 ⨬ -
      ॣ஢. ਬ:

           mov al,[si+ax]

            ஢,  ᪫祭 80386, ⨬묨 -
     ﬨ  ॣ஢  ᫥騥: BX, BP, SI, DI,
     BX+SI, BX+DI, BP+SI, BP+DI.

         Illegal instruction
          (⨬ )

          ப 室 ணࠬ 稭   䨪,
     ஥     ४⨢,     .
     ਬ:

          move ax,4  ;   "MOV"

         Illegal instruction for currently selected processor(s)
          (⨬   ࠭  騩  -
           (஢))

          ப ணࠬ ᮤন ,     -
     ᥬ஢ ⥪騬 ஬. ਬ:

            .8086
          PUSH   1234h   ; ᥭ   ⥪ ।⢥
                         ; ࠭    8086 
                         ; ᪠

           ᥬ஢  室 䠩   ࡮ ᥬ-
       㬮砭  ࠧ襭    8086.  ᫨
     ⥫쭮 ᯮ짮 ७  ,  ।-
       ஢ 186/286/386,     㪠   
     ४⨢,  ࠧ  ᯮ짮     (186,  286,
     386).

         Illegal local argument
          (⨬  ࠬ)

           ४⨢  LOCAL   ம। 㪠 ࠬ,
      騩 ⨬  䨪. ਬ:

          X  MACRO
             LOCAL 123  ;   䨪
             ENDM

         Illegal local symbol prefix
          (⨬ 䨪    䨪஢)


     ࡮ ᥬ 3.0/tasm/#2-2                             = 187 =

           ४⨢  LOCALS ᯥ ⨬ 䨪 
        䨪஢. ਬ:

          LOCALS XYZ  ; 訡: ᪠ ⮫쪮 2 ᨬ

          䨪   䨪஢    ஢ 
      ᨬ  ।⠢ ᮡ ⨬  䨪.
     ਬ,  ⨬묨  ᫥騥 樨:  __, @@ (
     㬮砭    䨪஢ ᯮ 䨪
     @ @).

         Illegal mcro argument
          (⨬ ࠬ ப)

           ४⨢  MACRO    ଠ쭮  ࠬ ப
     㪠 ⨬  䨪. ਬ:

          X  MACRO 123 ; ⨬ ଠ ࠬ
             ENDM

         Illegal memory reference
          (⨬ 뫪  )

          ࠭  ᮤন 뫪   ,    -
     ⨬   ࠭. ਬ:

           mov [bx],BYTE PTR A   ; 訡: ⨬ 뫪
                                 ;    

              ࠭ ।⠢ ᮡ   -
     ,  ⨬   mov.   ᥬ⢠ -
     ஢ 8086 ⮫쪮   ࠭  뫠   -
     .

         Illegal number
          (⨬ ᫮)

          ᫮ ᮤন    ᨬ, ⨬  -
     ᥫ  ଠ. ਬ:

          Z = 0ABCGH

           G - ⨬ ᨬ  ⭠ ᥫ.

         Illegal origin address
          (⨬ 砫 )

           , ⨬  ⠭ ⥪饣 ᥣ⭮-
       ($).  ᪠ 㪠뢠 ⠭,  ࠦ,  -
     饥 稪  ($),   䨪  ⥪-
      ᥣ.

         Illegal override in structure

     ࡮ ᥬ 3.0/tasm/#2-2                             = 188 =

          (⨬ ८।  )

          ⪠ 樠஢  ,  ।  
      樨 DUP. 樠஢  ⮫쪮  童, -
      뫨   ᯮ짮 樨 DUP.

         Illegal override register
          (⨬ ८। ॣ)

           뫪   ᥣ । 稥  㪠 ॣ, 
     騩 ᥣ ॣ஬.  ᥣ ॣࠬ ⭮
     ᫥騥 ॣ: CS, DS, ES, SS,  ⠪ FS  GS  -
      80386. ਬ:

            mov dx:XYZ,1   ; DX   ᥣ ॣ஬

         Illegal radix
          (⨬ ᭮ ⥬ ᫥)

           ४⨢  .RADIX    ⢥ ᭮ ⥬ ᫥
     㪠 ⨬ ᫮. ਬ:

          .RADIX 7 ; ୮

          ᭮ ⥬ ᫥   ᫥騥  ᫠: 2,
     8, 10  16.  ᫮   筮, ᨬ
      ⥪饣 㬮砭  ᭮ ⥬ ᫥.

         Illegal register for instruction
          (⨬ ॣ  樨)

           ⢥  筨    樨 SETFIELD  GETFIELD -
     짮 ⨬ ॣ.

         Illegal register multiplier
          (⨬ 㪠 ⥫  ॣ)

          ⪠ 㬭  ॣ  - ᫮,   
     ⨬ 樥. ਬ:

          mov ax * 3,1

          ⢥ 砩,  ᪠ 㬭 ॣ 
     ⠭⭮ ࠦ -   । ⠡ ᭮-
      ࠭   80386.

         Illegal segment address
          (⨬ ᥣ )

           ᮮ饭  訡 뤠,  ᫨  樮஢
     ᥣ 㪠뢠 祭 ,  ॢ饥 65535.  -
     :


     ࡮ ᥬ 3.0/tasm/#2-2                             = 189 =

          F00 SEGMENT AT 12345h

         Illegal use of constant
          (⨬ ᯮ짮 ⠭)

           ࠦ  ᯮ  ⠭ ⠬,   ᯮ짮
     ⠭ ⨬. ਬ:

            mov bx+4,5

         Illegal use of register
          (⨬ ᯮ짮 ॣ)

           ࠦ 㪠뢠  ॣ ⠬,   ᯮ짮
     ॣ ⨬. ਬ:

            X = 4 shl ax ;  樨 SHL  㪠뢠 ॣ

         Illegal use of segment register
          (⨬ ᯮ짮 ᥣ⭮ ॣ)

           ࠦ   㪠뢠  ᥣ⭮ ॣ
     ⠬,   ᯮ짮 ᥣ⭮ ॣ ⨬.  -
     :

           ADD SS,4      ;   ADD  㪠뢠
                         ; ᥣ ॣ

         Illegal USES register
          ( ४⨢ USES 㪠 ⨬ ॣ)

           ⨬  ॣ   PUSH  POP  室
      室  楤. ⨬ ᫥騥 ॣ:

           AX            CX               DS               ES
           BX            DI               DX               SI

          ᫨ ४⨢  .386  .386 ࠧ襭  
     80386,    㪠뢠 32-⮢    ᫥
      ᥣ⮢.

         Illegal version ID
          (⨬ 䨪 ᨨ)

           訡 ந室,    ࠬ /U   
     VERSION 롨ࠥ ⨬ .

         Illegal warning ID
          (⨬ 䨪 ।०饣 ᮮ饭)

            ᨬ 䨪 ।०-
      ᮮ饭. ᮪  ⨬ 䨪஢ ।०-
      ᮮ饭 ਢ   2.

     ࡮ ᥬ 3.0/tasm/#2-2                             = 190 =


         Instruction can be compacted with override
          ( ᮪饭  ,  ᫨   㪠  ⨯
          )

          -  뫪 ।   䨪 -
       ᮤন ⥫  NOP.   ⮣ ⮡ ᮪-
          뫪 ।   㪠 ⨯ ᨬ-
     ᪮ . ਬ:

           jmp X ;  ⮩  㤥 뤠 ।०饥
                 ; ᮮ饭
           jmp SHORT X ;  㤥 뤠 ।०饣 ᮮ饭
       :

         Invalid model type
          (⨬  )

           ४⨢ .MODEL      㪠  ⨬
     祢 ᫮. ਬ:

          .Model GIGANTIC

           祭    ⨬ ᫥騥 祢
     ᫮: TINY, SMALL, COMPACT, MEDIUM, LARGE  HUGE.

         Invalid operand(s) to instruction
          (⨬ ࠭()   )

            㪠 ⨬  ࠭.  -
     :

           FADD ST(2), ST(3)

            FADD ⮫쪮   ⥪  ॣ    -
       , 㣮 ࠭   設 ⥪.

         Labels can't start with numeric characters
          (⪨   稭  ஢ ᨬ)

          㦥 , ஥    ⨬ ᫮, 
     ⨬  䨪. ਬ: 123XYZ.

         Line too long - truncated
          (ப ᫨誮  - ந 祭)

           ப 室 䠩 ᮤন   255 ᨬ.
     譨 ᨬ .

         Location counter overflow
          (९ 稪 )

          騩 ᥣ ,  ᫥騩    

     ࡮ ᥬ 3.0/tasm/#2-2                             = 191 =

     砫 ᥣ. ਬ:

          ORG 0FFF0h
          ARRAY DW 20 DUP (0)   ; ९

         Method call requires object name
          ( 맮 ⮤ 室  ꥪ)

           CALL...METHOD    ⨯ ꥪ   -
      㪠⥫.   㪠  ꥪ.

         Missing argument list
          ( ᯨ᮪ 㬥⮢)

           ४⨢ IRP  IRPC,  ।饩  ७,  
     㪠 ᯨ᮪ 㬥⮢  ଠ쭮 ࠬ. ਬ:

              IRP X    ;  ᯨ᪠ 㬥⮢
                 DB X
              ENDM

           ४⨢ IRP  IRPC 易⥫쭮   㪠  -
      ࠬ  ᯨ᮪ 㬥⮢.

         Missing argument or <
          ( 㬥,   㪠 㣫 ᪮ <)

           㪠 㣫 ᪮,    ࠦ
      㣫 ᪮ ⠬,   室. ਬ:

           if b  ;   㪠 ࠦ  㣫
                 ; ᪮

         Missing argument size variable
          ( ६  ࠧ  ࠬ஢)

           ४⨢ ARG  LOCAL  㪠  䨪 -
       ࠢ⢠   . ਬ:

           ARG  A:WORD,B:DWORD=   ; 訡,   ᫥ =
           LOCAL X:TBYTE=         ;   訡

           ४⨢ ARG  LOCAL ᫥  ࠢ⢠, ᫨  㪠-
     ,  易⥫쭮   㪠  ६   ࠧ
      ࠬ஢.

         Missing COMM ID
          ( 䨪  ४⨢ COMM)

           ४⨢ COMM  㪠  䨪 ।  ᯥ-
     䨪஬ ⨯. ਬ:

          COMM NEAR     ; 訡: 

     ࡮ ᥬ 3.0/tasm/#2-2                             = 192 =

                        ;  䨪 । "NEAR"

           ४⨢  易⥫쭮   㪠  -
     䨪.  䨪  ᯥ䨪 ⨯   ࠧ-
      稥 (:).

         Missing dummy argument
          ( ଠ ࠬ)

           ४⨢ IRP  IRPC, ।饩  , -
      ଠ ࠬ. ਬ:

          IRP
             DB X   ;  ଠ쭮 ࠬ
          ENDM

           ४⨢ IRP  IRPC 易⥫쭮   㪠 -
      ࠬ  ᯨ᮪ 㬥⮢.

         Missing end quote
          ( 뢠 窠)

            ப ⠭  뢠饩 窨.  -
     :

          DB  "abc        ;  窠   ABC
          mov al,'X       ;  窠 ᫥  

          ப ⠭  稢 ⮩  窮, -
     ன  稭.

         Missing macro ID
          ( 䨪 ப)

           ४⨢ MACRO,  ।饩  ப,  
     . ਬ:

            MACRO   ; 訡:  㪠  ப
             DB A
            ENDM

            । ப 㪠뢠 易⥫쭮.

         Missing module name
          (  )

           ४⨢ NAME  㪠  . ,  ४-
     ⨢ NAME  ⮫쪮  ० Ideal.

         Missing or illegal language ID
          (  ୮ 㪠 䨪 몠)

           ४⨢ .MODEL ୮ 㪠 䨪 몠.  -

     ࡮ ᥬ 3.0/tasm/#2-2                             = 193 =

     ஡ ᠭ  ४⨢  MODEL .    7 饣 㪮-
     ⢠.

         Missing or illegal type specifier
          (  ୮ 㪠 ᯥ䨪 ⨯)

               ୮ 㪠 易⥫ -
     ࠬ - 䨪 ⨯ (BYTE, WORD  ..) ਬ:

           RED LABEL XXX         ; 訡: ""  
                                 ; 䨪஬ ⨯

         Missing table member ID
          (ய饭 䨪  ⠡)

              CALL...METHOD  ᫥  祢  ᫮  METHOD
     ய饭  ꥪ.

         Missing term in list
          ( 童  ᯨ᪥ ࠬ஢)

           ० Ideal  ४⨢,  ᪠饩 㪠 ᪮쪨
     ࠬ஢ (⠪  EXTRN, PUBLIC  ..),  ࠬ
     ᫥   ,  ⤥ ࠬ   㣠. -
     ਬ:

            EXTRN XXX:BYTE,,YYY:WORD

           ०  Ideal  ࠬ   ᯨ᪥ ᥣ ࠧ
     ⮫쪮  ⮩,   ᯨ᪠ ⮩   .

         Missing text macro
          ( ⥪⮢ ப)

           ४⨢  㪠 易⥫ ࠬ - ⥪⮢ -
     ப. ਬ:

          NEWSTR  SUBSTR          ;  SUBSTR  
                                  ; 㪠 ࠬ

         Model must be specified first
          (砫   㪠  )

          ᯮ짮     饭  ᥣ  ४⨢  
     ।⥫쭮 ᯥ䨪樨  . ਬ:

          .CODE     ; 訡: ᭠砫 㦭 㪠 ४⨢
                    ; .MODEL

          । ᯮ짮 饭 ᥣ  ४⨢  
      㪠   ४⨢ .MODEL  .

         Module is pass-dependant - compatibility pass was done

     ࡮ ᥬ 3.0/tasm/#2-2                             = 194 =

          (   室.  믮 室, ᯥ稢騩
          ᮢ⨬  MASM)

           ।०饥   ᮮ饭  뤠,  ᫨  㦥
     ,   室,      ப  㪠
     ࠬ  /m.    ⮬ 砥 믮 室,  ᯥ稢騩
     ᮢ⨬  MASM.

         Name must come first
          (   㪠 )

           䨪  㪠 ᫥  ४⨢,  ⮣
        室 ।   ४⨢. ਬ:

          STRUC ABC      ; 訡: "ABC"   ।
                         ; 祢 ᫮ STRUC

           ० Ideal  䨪 㪠뢠 ᫥ 
     ४⨢,  ⮬  訡     ⪠  -
     ᥬ஢  ० MASM ணࠬ,  ।祭  ࠡ
      ० Ideal.

         Near jump or call to different CS
          (  室  맮 室  㣮 -
           ᥣ)

           ᮮ饭  訡  뤠    ⪥  ⢨
      맮  室  , ।  , 
     ॣ CS 㪠뢠  㣮 ᥣ.

         Need address or register
          (ॡ 㪠   ॣ)

           㪠 ன ࠭ ,  ..  ࠭ 㪠뢠
     ᫥ ⮩. ਬ:

           mov ax,   ;  ண ࠭

         Need angle brackets for structure fill
          (祭      㪠뢠  㣫 ᪮-
          )

            뤥      㪠 ᯨ᮪
     砫 祭. ਬ:

          STR1 STRUC
          M1 DW ?
          M2 DD ?
          ENDS
          STR1   ;  ᯨ᪠ 砫 祭

         Need colon
          (ॡ 稥)

     ࡮ ᥬ 3.0/tasm/#2-2                             = 195 =


           ४⨢ EXTRN, GLOBAL, ARG  LOCAL  稥
     । ᯥ䨪஬ ⨯ (BYTE, WORD  ..) ਬ:

           EXTRN X BYTE,Y:WORD ; ᫥   

         Need expression
          (ॡ 㪠 ࠦ)

          ࠦ ᮤন ,   ன  㪠 ࠭.
     ਬ:

           = 4 + * 6

         Need file name after INCLUDE
          ( ४⨢ INCLUDE   㪠  䠩)

           ४⨢ INCLUDE  㪠  䠩. ਬ:

          INCLUDE   ;  㪠,  䠩   祭

           ० Ideal  䠩   祭  窨.

         Need left parenthesis
          (  㣫 ᪮)

          饭   㣫  ᪮  ⠬,     ᪠
     ᨭ⠪ᮬ ࠦ. ਬ:

          DB 4 DUP 7

          ࠦ  樨 DUP 易⥫쭮   祭 
     㣫 ᪮.

         Need method name
          (ॡ  ⮤)

           CALL...METHOD  ॡ ᫥ 祢 ᫮ METHOD
      ⮤.

         Need pointer expression
          (ॡ ࠦ-㪠⥫)

           訡  ⮫쪮  ० Ideal   㪠뢠, 
     ࠦ   ᪮ ([])   㪠⥫  -
     . ਬ:

           mov ax,[word ptr]

           ० Ideal    ᪮  ᪠  㪠뢠
     ⮫쪮  ࠦ.

         Need quoted string

     ࡮ ᥬ 3.0/tasm/#2-2                             = 196 =

          (ॡ 㪠 ப  窠)

          訡   ࠬ ४⨢,    ।-
     ⠢ ᮡ ப,  祭  窨.   ० Ideal 
     鸞 ४⨢  ⢥ ࠬ 㪠뢠 ப  窠.
     ਬ:

          Ideal
          DISPLAY  " ᤥ"

         Need register in expression
          ( ࠦ ॡ 㪠  ॣ)

           ࠦ    㪠  ॣ ⠬,    
     易⥫.

         Need right angle bracket
          ( ࠢ 㣫 ᪮)

          ࠦ, ᯮ㥬  樠樨 , ꥤ-
       ,   稢 ࠢ 㣫 ᪮  (>)  -
     ୮     㣫 ᪮,  㪠뢠饩 砫 ᯨ᪠ -
     砫 祭. ਬ:

          MYSTRUC STRUCNAME <1,2,3

         Need right curly bracket
          (ॡ ࠢ 䨣ୠ ᪮)

           訡   ,  ⠡  , 
      },    .

         Need right parenthesis
          ( ࠢ 㣫 ᪮)

          ࠦ ᮤন  㣫 ᪮  ୮  ࠢ
     㣫 ᪮. ਬ:

             = 5 * (4 + 3

           ࠦ 易⥫쭮  ᮡ ᮮ⢥⢨ -
       ࠢ 㣫 ᪮.

         Need right square bracket
          ( ࠢ ⭠ ᪮)

          ࠦ, ।⠢饥 ᮡ 뫪    ,  㪠
      ࠢ ⭮ ᪮,   ᮮ⢥⢮ -
     뢠饩  ⭮ ᪮,  饩 砫 ࠦ.
     ਬ:

            mov ax,[SI   ; 訡:  뢠饩
                         ; ᪮ (]) ᫥ SI

     ࡮ ᥬ 3.0/tasm/#2-2                             = 197 =


           ࠦ 易⥫쭮  ᮡ ᮮ⢥⢨ -
       ࠢ  ᪮.

         Need stack argument
          ( 㪠 ⥪ ࠬ)

            䬥⨪  饩 ⮩    㪠  ன
     ࠭, .. ࠭, 㪠뢠 ᫥ ⮩. ਬ:

          FADD ST,

         Need structure member name
          ( 㪠   )

           ० Ideal ᫥ ᥫ     (..  ᫥
     窨)  㪠   ⮩ . ਬ:

           Ideal
          STRUC DEMO
           DB ?
          ENDS
          COUNT  DW 0
            mov,[(DEMO bx).]

           饭    ࠢ   窨  易⥫쭮
        㪠  ⮩ ,   ன ⮨ ᫥
      窨.

         Not expecting group or segment quantity
          (ᯮ짮  㯯  ᥣ ⨬)

             㯯   ᥣ ⠬,    ⨬.
     ਬ:

          CODE SEGMENT
             rol ax,CODE   ; 訡:   㪠뢠
                           ;  ᥣ

         One non-null field allowed per union expansion
          ( ७ ꥤ ᪠ 㪠뢠 ⮫쪮 -
            )

           樠樨  ꥤ,   ।   ४⨢
     UNION, 㪠   祭. ਬ:

           U  UNION
              DW ?
              DD ?
           ENDS
           UINST U <1,2>  ;訡:  㪠 <?,2>  <1,?>

           ꥤ  樠஢ ⮫쪮  .

     ࡮ ᥬ 3.0/tasm/#2-2                             = 198 =


         Only one startup sequence allowed
          (᪠ ⮫쪮  ४⨢ 樨   樠-
          樨)

           ᮮ饭  뤠,  ᫨   㫥 㪠  
     ४⨢ .STARTUP  STARTUPCODE.

         Open conditional
          ( ᫮ )

          㦥 ४⨢ END,    室 䠩.
      ᫮ ᥬ㥬 ,       ४⨢
      IFxxx,    ४⨢ ENDIF. ਬ:

          IF BIGBUF
          END        ;  ४⨢ ENDIF । ४⨢ END

           訡 筮 뤠,  ᫨  ४⨢ 砭
     ᫮  ENDIF, 訡筮 㪠 ४⨢ END.

         Open procedure
          ( 楤)

          㦥 ४⨢ END,    室 䠩.
       ᠭ 楤,   ४⨢ PROC,  
      ४⨢ END. ਬ:

            MYFUNC PROC
            END        ;  ४⨢ END । ४⨢ END

           訡 筮 뤠, ᫨  ४⨢  -
      楤 - ENDP 訡筮 㪠 ४⨢ END.

         Open segment
          ( ᥣ)

          㦥 ४⨢ END,    室 䠩.
      ᥣ,  ४⨢ SEGMENT,    ४-
     ⨢ ENDS. ਬ:

            DATA SEGMENT
                 END      ;  ४⨢ ENDS । ४⨢ END

           訡 筮 뤠, ᫨  ४⨢  ᥣ-
      - ENDS 訡筮 㪠 ४⨢ END.

         Open structure definition
          ( 㪠  । )

          㦥 ४⨢ END,    室 䠩.
       । ,  砫 ன 㪠 ४⨢
     STRUCTURE,  뫮 襭 ४⨢ ENDS. ਬ:

     ࡮ ᥬ 3.0/tasm/#2-2                             = 199 =


          X  STRUC
          VAL1 DW ?
          END      ;  ४⨢ ENDS । ४⨢ END

           訡 筮 뢮,  ᫨    ४⨢  
      ENDS 訡筮 㪠 ४⨢ END.

         Operand types do not match
          ( ᮢ ⨯ ࠭)

             ࠭   ᮢ  ⨯ 㣮
     ࠭     ⨬   .  -
     :

          ABC DB 5
          ...
          mov ax,ABC

         Operation illegal for static table member
          ( ᪮  ⠡   ᪠)

           祭  ᪮  ⠡ ᯮ짮-
       窨.   ᪠.

         Pass-dependant construction encountered
          (㦥 ,   室)

          ⢨      ᮢ   -
     室 ࡮ ᥬ. ਬ:

          IF1
                       ;  蠣 ᥬ஢
          ENDIF
          IF2
                       ;  蠣 ⨭
          ENDIF

          設⢮ 権,    묨 易  ᮮ饭,
       ᪮४஢  ⠪,  ⮡    ᮮ饭  祧.
     筮  ⮣ 筮  뫪 ।.

         Pointer expression needs brackets
          (᭮ ࠦ   祭   ᪮-
          )

           ०   Ideal  ࠭,  ᮤঠ騩    䨪,
     ।⠢饥 ᮡ 뫪  ,   祭   
     ᪮.  ० Ideal  ᪮  뫪  
     . ਬ:

          B DB 0
            mov al,B  ; ।०:  ० Ideal

     ࡮ ᥬ 3.0/tasm/#2-2                             = 200 =

                      ;   㪠 [B]

          ..  ० MASM  ᪮  易⥫,   
     ᮮ饭 뤠  ।०饥.

         Positive count expecting
          (稪   ⥫)

            ࠦ  DUP  ⢥ 稪 ७
     㪠 ⥫쭮 ᫮. ਬ:

            BUF  -1 DUP (?)   ; 訡: ⥫ 稪

          稪  樨 DUP   ࠢ   1.

         Record field too large
          (誮    )

           ।  㬬    ॢ蠥 32  -
     . ਬ:

            AREC  RECORD RANGE:12,TOP:12,BOTTOM:12

         Record member not found
          (  ᪨  )

              ⥫ 㪠 , 
         .

         Recursive definition not allowed for EQU
          (ᨢ ।  ⨬  ४⨢ EQU)

           ࠦ ४⨢ EQU ᮤন   ᠬ ,  -
     ஥ । ⮩ ४⨢. ਬ:

             ABC EQU TWOTIMES ABC

         Register must be AL or AX
          (⨬ 㪠 ⮫쪮 ॣ AL  AX)

          ७ ࠭ . ᪠ ᯮ짮 ⮫쪮 -
      AL  AX. ਬ:

           IN CL,dx   ; 訡:  ࢮ ࠭  IN
                      ; ᪠ 㪠뢠 ⮫쪮 ॣ AL  AX

         Register must be DX
          (⨬ 㪠 ⮫쪮 ॣ DX)

          ७ ࠭ . ᪠ ᯮ짮 ⮫쪮 -
      DX. ਬ:

           IN AL,cx  ; 訡:     㪠 ॣ DX

     ࡮ ᥬ 3.0/tasm/#2-2                             = 201 =


         Relative jump out of range by __ bytes
          ( 祭  ᫮  室  ॢ蠥 ⨬
          ।  __ )

           祭   ᫮ 室  室 
     ⨬ , ..  ਭ ࢠ (-127, +128)
      ⥪饣 .  32-⮢ ᥣ  祭 ᫮-
       室   室    -32767  +32768
       ⥪饣 .

         Relative quantity illegal
          (⨬ ⭮⥫ )

            ४⨢ ᮤন ࠭, 뫠騩  
      ⠪ ᯮᮡ,    뫪    ࠧ襭 
     ⠯ ᥬ஢.    뫪  ࡮ ᥬ 
     ⨬묨. ਬ:

         DATA SEGMENT PUBLIC
         X  DB 0
         IF OFFSET X GT 127 ;  ⠯ ᥬ஢
                            ;   ⥭

         Reserved word used as symbol
          (१ࢨ஢ ᫮ ᯮ  ⢥  -
          䨪)

           ணࠬ  짮⥫  ।   䨪,
     ᮢ饥    १ࢨ஢ ᫮  ࡮  ᥬ.
     ணࠬ 㤥 ᥬ஢ ࠢ쭮,  ८।
     १ࢨ஢  ࡮ ᥬ ᫮  ४.

         Rotate count must be constant or CL
          (稪     ᤢ      㪠  
          ⠭  ॣ CL)

            ᤢ  横᪮ ᤢ 㪠 ࠭, -
       ⠭  ॣ CL. ਬ:

          ROL  ax,DL   ; 訡: ॣ DL  㪠뢠
                       ;  ⢥ 稪

            ᤢ  横᪮ ᤢ   ⢥  ண
     ࠭  㪠뢠 ⮫쪮 ⠭  ॣ CL.

         Rotate count out of range
          (⨬ 祭  稪 ᤢ)

            ᤢ  横᪮ ᤢ ன ࠭ -
     蠥 ⨬ 祭. ਬ:

          .8086

     ࡮ ᥬ 3.0/tasm/#2-2                             = 202 =

          SHL  DL,3       ; 訡:    8086
                          ;  ᤢ ⮫쪮   ࠧ
          .286
          ROR  ax,40      ; 訡:  ᨬ쭮 ⨬
                          ; 祭  稪 ᤢ ࠢ 31

          ᨬ쭮 ⨬ 祭  稪 ᤢ    -
       8086 ࠢ 1,  㣨 ஢  -
        ࠢ 31.

         Segment alignment not strict enough
          (ࠢ ᥣ  筮 筮)

           ⨬  祭  ࠭ ࠢ ᥣ-
     .      ⥯ ,   ᯥ
       筮  ࠢ  祬 ,  ஥ 㪠  ४⨢
     SEGMENT. ਬ:

          DATA SEGMENT PARA
             ALIGN 32   ; 訡: PARA 砥 ⮫쪮 16
             ALIGN 3    ; 訡:   ⥯ 

         Segment attributes illegally redefined
          (⨬ ८। ਡ⮢ ᥣ)

          ४⨢ SEGMENT ୮ 뢠 㦥 । -
      ᥣ,   ⮬ 㪠뢠  祭    ਡ⮢
     ⮣ ᥣ. ਬ:

           DATA SEGMENT BYTE PUBLIC
           DATA ENDS
           DATA SEGMENT PARA         ; 訡: ࠭ 뫮 㪠
                                     ; ࠢ  
           DATA ENDS

           ୮  ⨨  ᥣ ਡ   
       ᠬ 祭,     饭. ᫨  -
      ⨨ ᥣ ਡ  㪠,   ᯮ -
       ।饣 ।.

         Segment name is superfluous
          ( ᥣ )

           ।०饥  ᮮ饭 뤠   , 
      ४⨢ .CODE 㪠  ᥣ,   ⥪饩  
      ᪠ ᯮ짮   ᥣ.

         String too long
          (誮  ப)

            窠 ப  ,  ॢ -
     쭮 ⨬ - 255 ᨬ.


     ࡮ ᥬ 3.0/tasm/#2-2                             = 203 =

         Symbol already defined:__
          ( 䨪 㦥 ।)

            䨪 㦥 뫮 ࠭    ⥬
      ᠬ ⨯. ਬ:

          BB DB 1,2,3
          BB DB ?   ; 訡: BB 㦥 ।

         Symbol already different kind
          ( 䨪 㦥   㣨 ⨯)

           䨪    뫮 ࠭   㣨
     ⨯, ਬ:

          BB DB 1,2,3
          BB DW ?  ; 訡: BB 㦥   ⨯ BYTE

         Symbol has no width or mask
          ( 䨪    ᯮ짮    
          WIDTH  MASK)

          ࠭ 樨  WIDTH    MASK    
        . ਬ:

          B DB 0
             mov ax,MASK B  ;     

         Symbol is not a segment or already part of a group
          ( 䨪    ᥣ  㦥 -
          ।  㯯)

            䨪 㦥 ।  㯯,   -
       ᥣ. ਬ:

          DATA SEGMENT
          DATA ENDS
          DGROUP GROUP DATA
          DGROUP2 GROUP DATA    ; 訡: DATA 㦥 ।  DGROUP

         Text macro expansion exceeds maximum line length
          (७ ⥪⮢ ப ॢ蠥 ᨬ쭮 -
          ⨬ )

           ᮮ饭  訡 뤠,  ७ ⥪⮢
     ப ॢ蠥 ᨬ쭮 ⨬ .

         Too few operands to instruction
          (   墠⠥ ࠭)

              㪠 襥 ᫮ ࠭.  -
     ਬ:


     ࡮ ᥬ 3.0/tasm/#2-2                             = 204 =

          ADD  ax  ;  ன ࠭

         Too many errors or warnings
          (誮  訡  ।०)

          饭  訡  뤠  .  ᨬ-
      ᫮ ᮮ饭  訡,  ஥ 뤠 ࡮ ᥬ-
     ஬,  ࠢ 100.  ᨬ쭮 ⨬ ᫮ 訡 ॢ-
     .  ᥬ஢ ணࠬ ⥬      㤥  த,
         ⮫쪮 ।०騥 ᮮ饭.

         Too many initial values
          (誮  砫 祭)

           樠樨   ꥤ  㪠 ᫨誮
      祭. ਬ:

          XYZ   STRUC
          A1  DB ?
          A2  DB ?
          XYZ   ENDS
          ANXYZ   XYZ <1,2,3>  ; 訡:  XYZ ।
                               ; ⮫쪮  

           樠樨     ꥤ  ᪠
     㪠뢠  祭,  祬 ᫮ ,    㪠뢠
      祭.

         Too many register multipliers in expression
          ( ࠦ ᮤন ᫨誮  ⥫  ॣ-
          ஢)

             80386 ᪠ 樥  -
     ࠭.  樥  㪠뢠  , 祬  
     ॣ. ਬ:

            mov EAX,[2*EBX+4*EDX]       ; ᫨誮 
                                        ; 樥⮢

         Too many registers in expression
          ( ࠦ 㪠 ᫨誮  ॣ஢)

           ࠦ 㪠   ᭮    -
      ॣ. ਬ:

          mov ax,[BP+SI+DI]   ;  ६ 㪠뢠 SI  DI

         Too many USES registers
          (誮  ॣ஢  ४⨢ USES)

           ४⨢ USES  ⥪饩 楤 㪠   8  -
     ஢.


     ࡮ ᥬ 3.0/tasm/#2-2                             = 205 =

         Trailling null value assumed
          (। 筮 ⮥ 祭)

          ४⨢ ।  (DB,  DW   ..)  稢
     ⮩. TASM    ⮥ 祭. ਬ:

           db  'ਢ',13,10   ;  ,   db'ਢ',13,10?

         Undefined symbol
          (䨪  ।)

           ᮤন 䨪,     ࠭ -
       室 䠩.

         Unexpected end of file (no END directive)
          (  䠩 ( ४⨢ END))

           室 䠩  ४⨢  END.  ४⨢  END
     易⥫쭮   㪠   室 䠩.

         Unknown character
          ( ᨬ)

           ப 室 ணࠬ ᮤন  ᨬ,  
      ਭ  ᨬ,  ⨬  ஥ ᨬ-
     ᪨   ࠦ  ࡮ ᥬ. ਬ:

           add  ax,!1      ; 訡:  ᪫⥫   -
                           ; ⨬ ᨬ

         Unmatched ENDP:_
          (ୠ ४⨢ ENDP:_)

           ४⨢ ENDP 㪠 ,  ᮢ饥   -
     ,  뢠  ४⨢. ਬ:

           ABC  PROC
           XYZ  ENDP   ; 訡:  XYZ   㪠 ABC


         Unmatched ENDS:_
          (ୠ ४⨢ ENDS:_)

           ४⨢  ENDS 㪠 ,   ᮢ饥   ᥣ-
     ,   뢠  ४⨢,   ᮢ饥 
         ꥤ,  稢饣 ⮩ ४-
     . ਬ:

         ABC  STRUC
         XYZ  ENDP    ; 訡:  XYZ   㪠 ABC
         DATA  SEGMENT
         CODE  ENDS   ; 訡:  CODE   㪠 DATA


     ࡮ ᥬ 3.0/tasm/#2-2                             = 206 =

         User-generated error
          (訡, ᣥ஢ 짮⥫)

          訡 뤠   १ 믮   ४⨢ -
     ஢ 訡. ਬ:

          .ERR   ;      訡

          USES has no effect without language
          (USES   ᯥ䨪樨 몠)

           ।०饥  ᮮ饭 뤠,  ᫨  USES
     ᯮ  ।⥫쭮 ᯥ䨪樨 몠.


         Value out of range
          (祭 ⠭ ॢ蠥 ⨬ 祭)

          ⠭ ।⠢ ᮡ,   , ᫮ ࠢ-
      ଠ.    祭 ॢ蠥 ⨬    
     ⭮ 砥 稭. ਬ:

            DB  400



     ࡮ ᥬ 3.0/tasm/#2-2                             = 207 =

                      饭  ⠫ 訡
     

            ⠫ 訡  ࡮  ᥬ  뤠
     ᮮ⢥饥  ᮮ饭    ᥬ஢  짮⥫᪮
     䠩  ४頥, ᨬ  ⮣ 祬 뫠 맢-
       訡.  ⮬ ࠧ ਢ 祭  ᮮ-
     饭  ⠫ 訡.

         Bad switch
          ( ࠬ-४⥫  ப)

            ப 㪠  ࠬ.  .    2,
       ஡ ᠭ ࠬ஢  ப.

         Can't find @file __
          (  䠩 ᪠ __)

            ப 㪠  饣 䠩 ᪠-
     .   ஢, 㪠    䠩.  ࡮ -
     ᥬ  㬮砭  ७  䠩 ᪠-
     .  ⭮  稭  ᮮ饭   ⢨
       ᪥      䠩,  ᮤঠ饣 ४-
      뫪.

         an't locate file __
          ( 㦥 䠩 __)

           ४⨢ INCLUDE 㪠  饣 䠩.  -
     ४⨢ INCLUDE .   10 饣 㪮⢠,   ᠭ
      ᪠ ࡮ ᥬ஬ 砥 䠩.  ᫨ 뤠
      ᮮ饭,  ஢, ࠢ쭮  㪠   䠩 
     ᪮   㯠.

         Error writing to listing file
          (訡    䠩 ⨭)

               䠩  ⨭   뫮 ௠
       ⮬ ᪥.

         Error writing to object file
          (訡    ꥪ 䠩)

              ꥪ⭮ 䠩   뫮 ௠
       ⮬ ᪥.

         File not found
          (  䠩)

             ப  㪠    饣 室
     䠩. ஢, ࠢ쭮  㪠  䠩, 祭  
     ᪠   㯠, ᫨ 䠩 室  ⠫, ⫨筮
      ⥪饣.

     ࡮ ᥬ 3.0/tasm/#2-2                             = 208 =


         File was changed or deleted while assembly in progress
          (     㭨⮦   ᥬ஢)

          - 㣠 ணࠬ, ਬ, १⭠ ⨢-
     㥬 ⨫,  㭨⮦  ࡮  ᥬ஬  䠩.  
     ࡮ ᥬ  ᪠ ୮ ⨥ 䠩, 
      ࠭ ᯥ譮 .

         Insufficient memory to process command line
          ( 墠⠥   ࠡ⪨  ப)

           ப    64,     ࠡ⪨
      墠⠥ 饩 .      ப
        ࡮ ᥬ  稨 襣 ꥬ -
     .

         Internal error
          (७ 訡)

           ᮮ饭      뤠   ଠ쭮 ࠡ
     ࡮ ᥬ.   䠩, 맢  ⮩
     訡,    ᮮ    ⤥  孨᪮  㦨  
     Borland.

         Invalid command line
          (⨬  ப)

          ७ ଠ  ப,    ன ᪠-
      ࡮ ᥬ. ਬ,  :

           NASM, MYFILE

      㪠 室 䠩,      ᥬ஢.  .
      2,   ஡ ᠭ  ப.

         Invalid number after _
          (⨬  ᫥ _)

          ୮ 㪠 䨪 ࠬ,   ୮ ᯥ-
     ஢ ᫮ ࠬ ᫥ .  .   2,  ᠭ
     ࠬ  ப.

         Out of hash space
          ( 墠⠥   -⠡)

            䨪,  ।塞  짮⥫-
     ᪮ ணࠬ,  ᮮ⢥   -⠡.  ⠡-
      ⠭   16384 ।塞 짮⥫  -
     䨪஢  ᫮ ᪠ ࡮ ᥬ   -
       ᢮ .  ᫨  ணࠬ 짮⥫ ।
     襥 ⢮  䨪஢,   㦭 㪠  -
       ப /,  ⮣ ⮡ ᯥ  -⠡-

     ࡮ ᥬ 3.0/tasm/#2-2                             = 209 =

      㦭 ᫮ ⮢  ᠭ ⮣ ⢠  ᨬ-
     ᪨ .

         Out of memory
          ( 墠⠥ )

           墠⠥  ᢮     ᥬ஢ 짮-
     ⥫᪮ 䠩. ஡ ᯮ짮 TASMX.

          ᫨  ⨢   -  १  
      ணࠬ,   ᫥     ᥬ஢-
      䠩.  ,   ॡ १㧨 ⥬, 
     ⮣ ⮡  ᢮ .

          㣮   ⮨   ⮬,  ⮡ ࠧ 室 䠩 
       ,   ९  室 䠩 ⠪  -
     , ⮡  ᥬ஢ ॡ  .  ⮣
      ணࠬ  ᫥  㪮  䨪஢,  㬥
     ᫮ ਥ  ப,  㬥 ᫮ 뫮  -
     ।.

         Out of string space
          ( 墠⠥   ப)

           墠⠥ ⨢   ࠭ ப:  -
     䨪஢,   䠩,  ଠ樨  ࠧ襭 ०
     뫮, ⥪⮢ ப.  ᪠ ᨬ 512 , 
       ॢᨫ  ꥬ. ஡ ᯮ짮  TASMX.

         Too many errors found
          (㦥 ᫨誮  訡)

          ᥬ஢ 짮⥫᪮ 䠩 ४饭, ᪮-
       ⮬ 䠩 ᮤন ᫨誮  訡. ,  
     ᠬ  訡  ⠪   ,   ⠪,  -
      䥪 "᭥ ". ਬ஬ ⠪ 訡   -
     ୮ ।  䨪,  ஥ ᯮ 
      ப ணࠬ.   ᠬ  ᤥ   訡
     (୮ ।    䨪),    ᮮ饭  
     訡 㤥 뤠   ப,    .

          ࡮ ᥬ ४頥 ᥬ஢ 䠩,   -
     饥 ᫮ 訡  ।० ᮮ饭 ⨣ 100.

         Unexpected end of file (no END directive)
          (  䠩 ( ४⨢ END))

             室  䠩  ४⨢ END.  
     室 䠩 易⥫쭮  稢 ४⨢ END.

