    IBM PC

  p ..

 
==========

 



1.      IBM PC

     
       
     ASCII 
      
      
     
     
       
        
       

2.  

     
      
      
       :  
       :  
      
       :   
      
        
       

3.   

     
     
      
     
        
      
       
        
       

4.    

     
      
        
      
       
      
       
       
        
       

5.  

     
       
       (DB)
       (DW)
        (DD)
      ""  (DQ)
        (DT)
      
      () EQU
        
       

6.  COM-

     
       EXE-  COM-
      COM-
     COM-
     
        
       

7.    

     
      JMP
      LOOP
      
       
        (CALL)
      
     :   
      : AND, OR, XOR, TEST, NOT
     :     
       
      
        
       

8.    I:  

     
      : INT
      
      
        :  DOS
       :  DOS
     :   ASCII 
       :  DOS
     :        
        :  DOS
       :  DOS
       :  DOS
      CR, LF, TAB    
        
       

9.    II:  

     
      
      BIOS
     : , , 
      ASCII 
       / DOS
     BIOS INT 16H    
       
        
       

10.    III:   

     
      (-) 
      
        
     :     
        
       

11.  

     
        
     REP:   
     MOVS:  
     LODS:  
     STOS:  
     CMPS:  
     SCAS:  
       
      
       ()
     :      
        
       

12.  I:   

     
       
        
     
       DX:AX
     
      
      Intel 8087  80287
        
       

13.  II:  ASCII  BCD 

     
     ASCII 
     -  (BCD)
      ASCII    
         ASCII 
       
     :  
        
       

14.  

     
      
       
       
       () (XLAT)
     :    ASCII 
     :   
      TYPE, LENGTH  SIZE
        
       

15.   I: 

     
      
     
        (FAT)
        
       

16.   II:   DOS

     
       : FCB
      FCB    
     : FCB    
        
     : FCB    
      
     :    
       
     :   
       /
      
     :   
        
       

17.   III:   DOS

     
      ASCIIZ
           
       
     :     
     ASCII 
        DOS
        
       

18.   IV:  / BIOS

     
       BIOS
      
     :  BIOS   
        
       

19. 

     
        
       DOS  
     :    
      ASCII    
         DOS
       
        BIOS INT 17H
        
       

20. 

     
      
        
     
        
      LOCAL
       
      (&)
     : REPT, IRP  IRPC
      
      EXITM
     ,  IF  IFNDEF 
     ,  IFIDN 
        
       

21.   

     
      
      EXTRN  PUBLIC
     :  EXTRN  PUBLIC  
     :  PUBLIC   
     :    
      
      - - 
       - 
      C - 
        
       

22.  

     
     COMAND.COM
       
      COM-
      EXE-
      EXE-
         

23. BIOS  DOS 

     
      
     BIOS 
     DOS 
      DOS INT 21H
      
     
      

24.    

     
      
      
      

25.    

     
      
       
      
      
      
        



     1. ASCII 
     2. - 
     3.  
     4.    

   



 
__________________________________________________________________________

                    
      ,         IBM    PC,
   .       
    ,   
      . 
       .    
 , ,       
.  ,        ,  -  
    .
              ..
"     "  (1988),  .,  .
"-          IBM    PC"    (1987),
.. "  " (1987),
   ..  "-        
"  (1987).               
" "        
.                           
-,               
    ,    
    .
       ,        ,    
   IBM PC.        
     .
            
Framework.
        ,       
  .      
.




__________________________________________________________________________

           60-    c     
  ().          
                   "".
          ,  
          .      70-
   Intel 8008        
.
       1974            o
 Intel 8080.          
   .
      1978   Intel          -
Intel 8086,      8080    
      .      
        /
  Intel     8086  -  
8088,   1981         i      
.
         8088   c  80188,  
  8086 -  80186, 80286  80386,   
   c  .  
80286,    IBM AT   1984  .    
         Intel
   iAPX 86, iAPX 88, iAPX 86, iAPX286  iAPX386,  APX -
Intel Advanced Processor Architecture.
                p
              .  -,
,      ,      
      .  -,         
      ,  
        .    
        
 ,          ,        
,        
     .
               ,    
           .    
,   ,     
       .  ,    ,  
       , 
             
.             c  
 :

          -    IBM PC     
     c   -  64   .  ,  
     ,          
     .
          -     IBM PC.
          -  ,                ,
     ,   ,  .
          -    PC-DOS  MS-DOS,   
     .

     C      :

          -  .         
        ,   .
          -       .    
           PC,   
         .


                            
                          ----------------------
        -      y
   :          ,
       (),      
  .
         PC     
MS-DOS  Microsoft,     PC-DOS    IBM  PC.  
 : 2.0      (),
3.0        AT,   4.0            
 .     
 UNIX     PC XENIX     .


                                
                             ----------------
         :   ,  a    
       .      
      , 
      ,  p  
 .        ,    
             .    
,     .
               
 .         9, 11, 12,  14,
15, 19, 20  21.     8  10, 12  13,   15  
18,   22  25 c  .
          ,  :

          -  p  ;
          -       ;
          -            ,
       ;
          -          ,
       ,    ASCII       
     ,         ,        
     /;
          -     ,    
     ;
          -   ;
          -    .

                  -  
  .             
.


                           
                         ------------------------
                 ,       
   .



 1                    IBM PC
__________________________________________________________________________

        :       
  .


      
     ________________________________________________________________

                 
 .          .  
    ,              
   .
                      
 ,      ,  ,
  .      ,  
      .      
      ,    
  .2       .


        
     ________________________________________________________________

                
   .   ,       ,  
,    , , 512 .  
  p,      .
           .   
 ,       ,    ,    
   .            
     .
           ;   
          -      .     
         ,
   A   *.    256  
   :  " " (00000000)   "
" (11111111).  ,      
   A      01000001,      c  *  -
00101010 (   ).       
 ,   .
            ,    
        .    
 A    ,        *  -  .  
     ,     .  
       ,        
.            
 ,   ,    .
       ,    "",      
01000001   A.            A,
           .  
     01000001.     
 ,       ,     
 A.
            0  7  , 
    A:

                    :         7 6 5 4 3 2 1 0
                    :       0 1 0 0 0 0 0 1

      2     1024,      
  . ,     512  512 
1024, .. 524288 .
         PC             16-
,      16-     ,
   . 16- ()   .  
    0  15  ,      
PC:

          :   15 14 13 12 11 10 9 8  |  7 6 5 4 3 2 1 0
          :  0  1  0  1  0  0 0 0  |  0 1 0 0 0 0 1 1


     ASCII 
     ________________________________________________________________

           a
            ASCII  (American
National Standard Code for Information Interchange).  [  ""
 (. )].         01000001
  A.           
       .    8-    
ASCII-,    PC      256  ,
      .    .1    
 ASCII ,   .8       
256 .


      
     ________________________________________________________________

                      
 ,        2   
.     c     "BInary
digiT" ( ).
        ()       .
        
   .       
  :

                :      128 64 32 16 8 4 2 1
                :         1  1  1  1 1 1 1 1

      1,        -  2,
 - 4  ..              
  1 + 2 + 4 + ... + 128,  255 (2    - 1).
        01000001     1 
64, .. 65.  01000001    A! ,  
,    .  01000001  
  65,    A:

          -          
     ,    01000001           
       65;
          -          (    
      ),        ,  ,  ,
     ,  01000001     "".

               ,     
    .
          .    
8088   16-  ,  o      
16- . 2   16  1   65535,  
      32    (2  
 32  1  4294967295)   .


                            
                          ---------------------
              
.              
    :

                   0 + 0 = 0
                   1 + 0 = 1
                   1 + 1 = 10
               1 + 1 + 1 = 11

                     
. ,   01000001  00101010.  A   *?
,  65   42:

                            

               01000001                  65
               00101010                  42
               --------                 ---
               01101011                 107

     ,       01101011      107.
  :

                            

               00111100                  60
               00110101                  53
               --------                 ---
               01110001                 113


                            
                          ---------------------
             ,
           ()  .
            
  .  ..,     
                  1.
 :

                65:           01000001
               :           10111110
                1:             10111111  ( -65)

           10111111, 65   .
    ,       
 1.          
,    :     
 1:

                :  10111111
               :           01000000
                1:             01000001  ( +65)

      +65  -65   :

                                   01000001  (+65)
                                   10111111  (-65)
                                   --------
                              (1)  00000000

          .     
.  ,      p    ,
   .
        :   
      .  ,  ,  42     65.    
  42  00101010,  e  : - 11010110:

                         65        01000001
                      +(-42)       11010110
                       -----       --------
                         23    (1) 00010111

      23  .      
       .
           , 
 :          
00000001,    00000000?    
  -1.    11111111:

                                   00000001
                                   11111111
                                   --------
               :      (1) 00000000

       (1),   ,        11111111
  -1  :

                         0         00000000
                      -(+1)       -00000001
                       ----        --------
                        -1         11111111

                  c
 :

                        +3         00000011
                        +2         00000010
                        +1         00000001
                         0         00000000
                        -1         11111111
                        -2         11111110
                        -3         11111101

             
:         
 ,      .
               
    .12  13.


      
     ________________________________________________________________

     ,      p    
 (    ).  o 
      (  ),        
.         32  ,    
 ""       .  
              
 .    :

           :   0101 1001 0011 0101 1011 1001 1100 1110
           :    5    9    3    5   11    9   12   14

                  ,  
  ,  10=A, 11=B, 12=C,  13=D,  14=E,  15=F.  
    ,     
 :

                            59   35   B9   CE

         ""  0  F,      
 16,        e.   .1.1.
 ,        0 
15.

__________________________________________________________________________

           .  .   .            .  .   .

            0000    0       0               1000    8       8
            0001    1       1               1001    9       9
            0010    2       2               1010    10      A
            0011    3       3               1011    11      B
            0100    4       4               1100    12      C
            0101    5       5               1101    13      D
            0110    6       6               1110    14      E
            0111    7       7               1111    15      F
__________________________________________________________________________

     .1.1. ,    .


            .
        
 ,      .    
   DOS DEBUG      
  .
          ,   
  .   c  
.   ,     F 
 10,     16.

                        6    5    F    F   10   FF
                        4    8    1    F   10    1
                        -    -   --   --   --  ---
                        A    D   10   1E   20  100

      ,   .20   32,  .100 -
 256  .100 -  4096.
           ,  ,  
.4B,      .01001011,      ,    75
(   -            ).
 ,      .  
.         
 "H",  ,  25H (  37).  .   
    c  0-9,   ,  B8H  
0B8H.
      .2     p    
      .      c    
 PC,  x     .2.


     
     ________________________________________________________________

         ,            
, ..   ,    16  .  
                64
,       ,  c      
.    :

          1.             .        
     ,   .    
                 
                  .
        (CS)   .
          2.               .            
       ,        ,    
     .    (DS)   .
          3.             .       
           ,     
          .    
     (SS)   .

        ,      (ES),
     .      p.1.2   
     SS,  DS    CS.      
     .       
         
 .

__________________________________________________________________________

                           ================
                                D O S      
                --------  - - - - - - - -  
             SS   +->     
                + - - - +  - - - - - - - -   
             DS   +->    
                + - - - +  - - - - - - - -    
             CS   +->      
                L--------  - - - - - - - -  -
                                 
                                   
                           L================-
                                 
__________________________________________________________________________

     .1.2.   .


                c.
            .   
 (16-)      .0000  .FFFF   0
 65535.        ,  
       .  ,     
   0,   - 01      65535.
        , ,      
 .045F          
     0032.  p  ,    
  045F,          045F0,  ..    
.  a    :

                 DS:         045F0
               :            0032
                                   -----
                :     04622

        8086/8088         
?        16  .       
 ,          p  .  .FFF0
   65520 ( ) .   ,
      ,     .  
   c   . nnnn,   ,
       ( . ), .. .
nnnn0.    ,  .FFFF0     1048560 .
  e,      .F      1111,
        .
      80286  24       ,    FFFFF0
     16    ,      80386  
    .


     
     ________________________________________________________________

      8086/8088  14 ,    y
  ,               
 .            (16
)       .          
:
                  15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

       80286    80386          ,
   16-.     .


                     CS, DS, SS  ES
                  -------------------------------------
          64 ,  
  .     ,  c    
       p    
   .

          1.        CS.        
       .          
      (IP)   ,     
      .        
       CS.
          2.        DS.      
         .               ,
       ,          
     .
          3.        SS.       
        .
          4.        ES.      
           . 
           ES     DI.  
        ES,    
     .


                 : AX, BX, CX  DX
              ---------------------------------------------
                   
 " ".        ,
              o
.        (high),  a    -  
  (low).  ,      CX         
: CH  CL,          
.         CX, CH 
CL, :

                                MOV  CX,00
                                MOV  CH,00
                                MOV  CL,00

          1.        AX.   AX     
         -,      
             .  ,  
     ,         AX.
          ,      
        AX.

                             AX: | AH | AL |

          2.        BX.   BX   . 
        ,    
         ""      .      
       - .

                             BX: | BH | BL |

          3.        CX.  CX  .  
                
      .  CX    .

                             CX: | CH | CL |

          4.        DX.   DX    .  
             /      
               ,      
       DX  AX.

                             DX: | DH | DL |

            c  
  8-,   16-  .


                       : SP  BP
                     --------------------------------
       SP  BP       
 .        .

          1.        SP.     
       ,          .
          SS   .
          2.        BP.               
     :      .


                        : SI  DI
                      -----------------------------
                   
     .

          1.        SI.       
          .     
      SI    DS.
          2.        DI.      
         .     
     DI    ES.


                       : IP
                    ----------------------------------
       IP        ,       
.        ,     
            DOS  DEBUG    
 .


                              
                            ------------------
       16       
     .    
      .  
:

                                    

O ()                    
                          .
D ()               
                              (   
                            ).
I ()               .
T ( )               
                          .  ,   DOS DEBUG
                               ,     
                               
                             .
S ()                     
                          (0 - , 1 - ).
Z ()                        
                             (0 - ,  1 - 
                         ).
A ( )         3-   8- 
                                  
                         .
P ( )       8-  (1 -
                           0 -  ).
C ()                         ,   
                          ,       
                             .

             
O, S, Z,  C      ,      D
      .   
      p.


      PC
     ________________________________________________________________

                   :
c , ,  , ,  
 ()         
   .          
,             .  
  :

          -  (Intel);
          -   (ROM 40);
          -   (RAM  512    );
          -   -.

              ,
        (),        ,
    .
        ,   o
    ,    ,  
""     20 .
     ""      ,      
      .    8088    16-
,         o.  
8088   8086,        :  8088    8-
( 16-) ,         
,    .      
             .
 80286  80386     8086.
        .1.3     : o
 ()    ().      
,            .
    c -  (),
 y ()   .   
   ,           o
(  ,   ).

__________________________________________________________________________

              :     |  :  
                        |
             ---------T--------  |
                AH      AL     |
             +--------+--------+  |
                BH      BL     |
             +--------+--------+  |
                CH      CL     |
             +--------+--------+  |      
                DH      DL     |      
             +--------+--------+  |  -----------------
                    SP          |         CS       
             +-----------------+  |  +----------------+
                    BP          |         DS       
             +-----------------+  |  +----------------+
                    SI          |         SS       
             +-----------------+  |  +----------------+
                    DI          |         ES       
             L--------.---------  |  L-------T---------
                                 |              --------
                      .           |          .     -     
             =====================+==============>  <==> 8088
                      .           |          .      
                                 |              L--------
             ---------.--------  |      ----+---
              : -  |  ----+   1   
                      |     +-------+
                      |        2     
           ->+ - - - - - - - - +  |     +-------+
             :     |        3    ( )
                     |     +-------+
            + - - - - - - - - +  |        4   
                |     L--------
            L------------------  |  
            ------------------  |  
           L-+        <-+---
                       |
             L------------------  |
__________________________________________________________________________

     .1.3.     .


        :   , 
        :  -,
      ,       
  /.  -,      
     1 .
          .        
  ,            
.       4   ,     
,   " "     ,  
       .
                ,
         .    c  
                 
 /.           
 .          ,  
    .          
,   c .


                                  
                                 --------
            .    
   ()  ROM (read-only memory).  ROM  
  ,  p (        )
    .        ROM    
""     .
         ROM         
:          ROM     p
          (RAM)      
  (,  DOS).          
 ROM  BIOS (Basic Input/Output  System)    
/,     . (Basic  -  
 ,    ).  ROM     
       .
     ,       ,      RAM
(Random Access Memory)  , ..  ,   
,    .  RAM      
       .
        RAM        ,
              .    
      e    
,     ROM     DOS    RAM.
(    DOS,        DOS).
  o   DOS        
  DOS     .      
          RAM.    DOS  
  ,     ()    
.          RAM        
      ,      .      
    RAM.      
            ()  
  RAM.

                    .        
64     ,      
 RAM : 4    64  =  256.        
.   ,     c,    
    .
     RAM       ,    ROM  -  
.             ,
  .1.4,   256 RAM        
.          RAM   ,  
 640    ,     
    DOS.  ROM        768    o
  /   c   
.  ROM,      c  960    
,            ,    
     .

__________________________________________________________________________

                           
              .    .  -----------------------------
              0K      00000   RAM 256K           
                                        
                             +----------------------------+
              256K    40000   RAM 384K  - 
                                  I/O 
                             +----------------------------+
              640K    A0000   RAM 128K /      
                                       
                             +----------------------------+
              768K    C0000   ROM 192K     
                                         
                             +----------------------------+
              960K    F0000   ROM 64K   
                                         
                             L-----------------------------
__________________________________________________________________________

     .1.4.   .


        RAM    - .

             .      
00 -   .        
   .    1025.    
.    - 0401      .
   c  - 04    - 01.     
          :      
  ,      -      .  ,  
   .0401           5612  5613,
 :

                                 |01|04|
                                  |   |
                         5612,   5613
                            

      ,        
     .   
,     a,    
       .


        
     ________________________________________________________________

     -    ,     
  .     .

     -    ,     
    .

     - ASCII      .

     -    ,   :  0  
1,        .

     -        .
,  1111  2**3 + 2**2 + 2**1 + 2**0,  15.

     -      :  
     +1.

     -                
 .  .  0-9    A-F    
  0000  1111.

     -    :      
,               
    .       
     .

     -    , ,  
   .

     - ROM ()   RAM  ()          
.

     -      ()      
 .


       
     ________________________________________________________________

     1.1.        ASCII       
 . (  1     ):
) P, ) p, ) #, ) 5.

     1.2.      : ) 5, ) 13,
) 21, ) 27.

     1.3. C  :

               ) 00010101    ) 00111110    ) 00011111
                  00001101       00101001       00000001
                  --------       --------       --------

     1.4.       :  )
00010011, ) 00111100, ) 00111001.

     1.5.         
 : ) 11001000, ) 10111101, ) 10000000.

     1.6.  .   ) ASCII  Q, )  ASCII
 7, )   01011101, )  01110111.

     1.7.   . :

               ) 23A6   ) 51FD   ) 7779   ) EABE
                  0022         3       887      26C4
                  ----      ----      ----      ----

     1.8.  .       .
       .2.        
,    .         
: ) 19, ) 33, ) 89, ) 255, ) 4095, ) 63398.

     1.9.            ,        
   ,    .

     1.10.            :  )
  , )   , )   ,  )
 ,   )      ,  )  
 ?

     1.11.            
   ?



 2                                                 
__________________________________________________________________________

        :   ,      
.


     
     ________________________________________________________________

          DOS      
DEBUG,        ,       
   .      
              
   .
               
.          
            .
        ,       
 .         
      .
               c  
 .     -  IBM  PC    
     c DOS.


      
     ________________________________________________________________

           DOS       A.
  ,    ; e     ,
     Ctrl  Alt    Del.
        DOS    ,    
     ,     ,  
A     C      (  ).    
 ,   ,      Return.
   ,        
    .


       
     ________________________________________________________________

                   
  DOS DEBUG.       DEBUG
  Return,    DEBUG     
.             
,           DEBUG    
.    ,      o        
,  D -   .

          1.             .      
       .          
               ,
       .         
     .413  414      DEBUG  , 
       :

               400 -     ,        40
          (  ) 
               13 -     .   , 
            :

                        D 40:13  (  Return)

       ,     ,  
         ,    
   .    
 . , .    .

               . .   . .    . ()

                    8000           0080           128
                    0001           0100           256
                    8001           0180           384
                    0002           0200           512
                    8002           0280           640

          2.              .    ""
      ROM   . FE000.   ,  :

               D FE00:0 (  Return)

                
     .
          3.      ROM BIOS.  ROM BIOS   mm/dd/yy 
      .  FFFF5. 

               D FFFF:05 (  Return)

        ()      
        .

     ,   ,     D  (Display),
          .
   ,    D,  -  DEBUG
   ,    .
             DOS      Q
(Quit).                 DEBUG    
        .


       :  
     ________________________________________________________________

           -         
 ,             .
    :

                            

               B82301     .  0123  AX.
               052500     .  0025  AX.
               8BD8        AX  BX.
               03D8        AX  BX.
               8BCB        BX  CX.
               2BC8        AX  AX ( AX).
               90         .
               CB          DOS.

      ,      : , 
  .        
.                  
  .  , ,   
      . ,   
MOV - .B8,    - .8B.
             
 .      c  
  .          
 -   o DEBUG    Return.  
 DEBUG           
.           Ctrl  
PrtSc .
                  
 ,  :

               E CS:100 B8 23 01 05 25 00 ( Return)

      E  Enter ().  CS:100     ,
   ,  - .100 (256)       
.  (           DEBUG).
 E    p        
,    CS:100   CS:105.
       Enter:

               E CS:106 8B D8 03 D8 8B CB (Return)

    ,    CS:106    107,  108,
109, 10A  10B.   Enter:

               E CS:10C 2B C8 2B C0 90 CB (Return)

  ,     CS:10C    10D,  10E,  10F,  110    111.
     .      ,    
 ,    .
         -     .    p.2.1
    ,      E.         
      o.
       R         .  
            .  ,
,

                          AX=0000, BX=0000, ...

         DOS          
    .2.1.     IP  (
)        IP=0100,       
   100         .  (  
  E CS:100    .)
        .2.1    :

                         NV UP DI PL NZ NA PO NC

       :  ,   ,
 ,  ,  ,   ,  
        .             
.

__________________________________________________________________________

D>DEBUG
-E CS:100 B8 23 01 05 25 00
-E CS:106 8B D8 03 D8 8B CB
-E CS:10C 2B C8 2B C0 90 CB
-R
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=0100   NV UP EI PL NZ NA PO NC
13C6:0100 B8230         MOV     AX,0123
-T

AX=0123  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=0103   NV UP EI PL NZ NA PO NC
13C6:0103 052500        ADD     AX,0025
-T

AX=0148  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=0106   NV UP EI PL NZ NA PE NC
13C6:0106 8BD8          MOV     BX,AX
-T

AX=0148  BX=0148  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=0108   NV UP EI PL NZ NA PO NC
13C6:0108 03D8          ADD     BX,AX
-T

AX=0148  BX=0290  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=010A   NV UP EI PL NZ AC PO NC
13C6:010A 8BCB          MOV     CX,BX
-T

AX=0148  BX=0290  CX=0290  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=010C   NV UP EI PL NZ AC PO NC
13C6:010C 2BC8          SUB     CX,AX
-T

AX=0148  BX=0290  CX=0148  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=0100   NV UP EI PL NZ AC PO NC
13C6:010E 2BC0          SUB     AX,AX
-T

AX=0000  BX=0290  CX=0148  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=0110   NV UP EI PL ZR NA PO NC
13C6:0110 90            NOP
-T

AX=0000  BX=0290  CX=0148  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=0111   NV UP EI PL ZR NA PO NC
13C6:0111 CB            RETF
-
__________________________________________________________________________

     .2.1.   .


      R          0100    
 .   CS  .2.1      CS=13C6  (
       ),     
 :

               13C6:0100  B82301   MOV  AX,0123

          CS=13C6 ,            
      13C6   13C60.    13C6:0100    100
     (.)     13C6   CS.
          B82301 -  ,    CS:100.
          MOV AX,0123 -     ,  
          .               
     ,       
        .       
            .    
           
       AX.

         MOV      .      
  T ( )   Return.   
MOV               ,
,        .  ,      AX
  0123.      AX   B8
       2301.      
 B8    23          AX,  ..
  AL,   01 -     AX, ..
  AH:

                             AX: | 01 | 23 |

       IP:0103       
   :

               13C6:0103  052500   ADD  AX,0025

        T.      25  
 (AL)   AX  00   (AH)   AX, ..
 0025   AX.   AX  0148,   IP
0106 -  c   .
           T.        
  AX   BX          BX
   0148.   AX  e    
0148,   MOV   p          
.
        T      
  .     c  AX  
    BX,        0290.    
  p BX  CX,  AX  CX,      AX  
  .        ,        
 c  NZ  ( )  ZR (),      
  ( AX        0).
       T     NOP  RET,     
 .           
 D  :

               D CS:100

                   16  
  .  (32 . )    
  ASCII (          .  ).  
    ASCII       .
        .
          00      
 CS:100  CS:10F.    c   CS:110
 CS:11F.    ,          
CS:111,  Dump a        
 CS:100   CS:170.
                     
  IP        .    R  IP,
 100,        T.      
  Return.
      .2.2       D CS:100.  
     CS:100    111          
;      .

__________________________________________________________________________

-D CS:100
13C6:0100 B8 23 01 05 25 00 8B D8-03 D8 8B CB 2B C8 2B C0 .#..%.......+.+.
13C6:0110 90 CB 8D 46 14 50 51 52-FF 76 28 E8 74 00 8B E5 ...F.PQR.v(.t...
13C6:0120 B8 01 00 50 FF 76 32 FF-76 30 FF 76 2E FF 76 28 ...P.v2.v0.v..v(
13C6:0130 E8 88 15 8B E5 BF 36 18-12 FF 36 16 12 8B 76 28 ......6...6...v(
13C6:0140 FF 74 3A 89 46 06 E8 22-CE 8B E5 30 E4 3D 0A 00 .t:.F.."...0.=..
13C6:0150 75 32 A1 16 12 2D 01 00-8B 1E 18 12 83 DB 00 53 u2...-.........S
13C6:0160 50 8B 76 28 FF 74 3A A3-16 12 89 1E 18 12 E8 FA P.v(.t:.........
13C6:0170 CD 8B E5 30 E4 3D 0D 00-74 0A 83 06 16 12 01 83 ...0.=..t.......
-Q
__________________________________________________________________________

     .2.2.   .


          DEBUG  Q (Quit - ).  
    DOS         A>
 C>.       ,     
 c  Ctrl/PrtSc.


       :  
     ________________________________________________________________

                   ,
         (MOV    ADD).  
  ,    0123  0025  
   .        
      DS   .
                   ,    
c  :

                 DS     . .     

                  0000           2301           0    1
                  0002           2500           2    3
                  0004           0000           4    5
                  0006           2A2A2A         6, 7  8

     ,  .     ,    o,
, 23    0 (  )  , 01 -  
 1 (..   ).
            ,      
:

                            

A10000           ( ),    DS    
               0000,   AX.
03060200          ( ),    DS
                 0002,   AX.
A30400            AX  ,   DS
                 0004.
CB               DOS.

      ,        MOV    p
 : A1  A3.        ,
   ,   (  ), 
    (        )              
    .
        DEBUG         
  .       , 
   .
        E (Enter)   :

               E DS:00 23 01 25 00 00 00 ( Return)
               E DS:06 2A 2A 2A ( Return)

          ( )    
,  DS:00.  ,                
,   0123    2301,  a  0025    2500.  
 MOV     c,   
   2301  0123,  2500 - 0025.
           (***)    ,    
      D (Dump)  -    
   .
          ,     CS:100:

               E CS:100 A1 00 00 03 06 02 00
               E CS:107 A3 04 00 CB

            CS:100    CS:10A.  
        .   .2.3  
,    E.            
,      CS    DS    .    
           D  (Dump)
:

                 :     D DS:000 (Return)
                 :      D CS:100 (Return)

               ,        
   .2.3.     DS:00  DS:08   CS:100
 CS:10A    .2.3.

__________________________________________________________________________

D>DEBUG
-E DS:23 01 25 00 00
-E DS:2A 2A 2A
-E CS:100 A1 00 00 03 06 02 00
-E CS:107 A3 04 00 CB
-D DS:0
13C6:0000 23 01 25 00 00 9A 2A 2A-2A F0 F5 02 2C 10 2E 03 #.%...***...,...
13C6:0010 2C 10 BD 02 2C 10 B1 0D-01 03 01 00 02 FF FF FF ,...,...........
13C6:0020 FF FF FF FF FF FF FF FF-FF FF FF FF EF 0F 64 00 ..............d.
13C6:0030 61 13 14 00 18 00 C7 13-FF FF FF FF 00 00 00 00 a...............
13C6:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13C6:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20 .!...........
13C6:0060 20 20 20 20 20 20 20 20 00 00 00 00 00 20 20 20         .....
13C6:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00         ........
-R
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=0100   NV UP EI PL NZ NA PO NC
13C6:0100 A10000        MOV     AX,[0000]                 DS:0000=0123
-T

AX=0123  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=0103   NV UP EI PL NZ NA PO NC
13C6:0103 03060200      ADD     AX,[0002]                 DS:0002=0025
-T

AX=0148  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=0107   NV UP EI PL NZ NA PE NC
13C6:0107 A30400        MOV     [0004],AX                 DS:0004=9A00
-T

AX=0148  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13C6  ES=13C6  SS=13C6  CS=13C6  IP=0108   NV UP EI PL NZ NA PO NC
13C6:010A CB            RETF
-D DS:0
13C6:0000 23 01 25 00 00 9A 2A 2A-2A F0 F5 02 2C 10 2E 03 #.%...***...,...
13C6:0010 2C 10 BD 02 2C 10 B1 0D-01 03 01 00 02 FF FF FF ,...,...........
13C6:0020 FF FF FF FF FF FF FF FF-FF FF FF FF EF 0F 64 00 ..............d.
13C6:0030 61 13 14 00 18 00 C7 13-FF FF FF FF 00 00 00 00 a...............
13C6:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13C6:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20 .!...........
13C6:0060 20 20 20 20 20 20 20 20 00 00 00 00 00 20 20 20         .....
13C6:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00         ........
-Q
__________________________________________________________________________

     .2.3.   .


       R          
  .        ,    
  .    :

               13C6:0100      A10000    MOV  AX,[0000]

     ,   CS  13C6,  CS:100    
A10000.      MOV     
  [0000]   .     
    ,     .
          ,  

                               MOV AX,0000

o   AX    0000.
        T.   MOV AX,[0000]    c
,       ,    AX.
 2301    0123     AX.
       ADD  ,        T.  
    DS   0002    AX.
  AX    0123  0025, .. 0148.
       MOV [0004],AX        T.  
    AX       0004.  
       D  DS:00.  
   :

             : 23 01 25 00 48 01 2A 2A 2A
           :          00 01 02 03 04 05 06 07 08

 0148,      AX       
 04  05,      4801.      
.               
ASCII.  , .23 e   #,  .25 -   %.
   .  2A      (***).
            ,   
  .        
 () .
           D  DS:100  ,  
  .2.3.       Q        
.


      
     ________________________________________________________________

                    
    CS            IP.    ,
,     CS    .04AF  (  
04AF0),   IP  . 0023:

                          CS:      04AF0
                          IP:       0023
                                   -----
                :      04B13

     , ,   04B13  :

               A11200         MOV  AX,[0012]
               |
           04B13

     04B13        .  
            (A1)  o  
 - 3 .
           [0012]     a,
    DS ( )  c    
.    DS    .04B1  (      04B10),    
    c :

                     DS:      04B10
               :       0012
                              -----
            :      04B22

     ,       04B22    04B23    
:

               :         24        01
                                   |         |
               :           04B22     04B23

        24     04B22    
   AL,   01   04B23 -   AH.  AX
      0124.          
     IP  ,     
         IP    
  0026.    p          
 ,          CS  (04AF0)
     IP (0026), .. 04B16.


                              
                            ------------------
      8086, 80286  80386      ,  e  
    ,    .
       o    
4B22      .     
    ,      .  ,
,        ,    
c 04B23      AX:

                :  ||24|01||
                                       |
                           :  04B23

            4B22    4B23  
    4B23   AL.        
   4B24  4B25      4B23    
AH.    AX   0124.
        -     
     ,       
       .   ,  ,  -,  
                ,  
    , -,  
       ,          
  ,      .
     ,             
 ,            
     ,    ,    
        .      ,  ,
           -  
   .
        EVEN,     
     .


       :   
     ________________________________________________________________

                   
 (RAM),   . BIOS (  /)
  ROM    ,      p  .   
  BIOS   INT,   c      12H.  
 BIOS       AX        .
   DEBUG    INT 12H   RET    
:

                            E CS:100 CD 12 CB

 R (  Return)            
.  IP  0100,     INT 12H.
  T  (  Return)          
 BIOS  (    ,      
  ):

               STI
               PUSH  DS
               MOV   AX,0040
               MOV   DS,AX
               MOV   AX,[0013]
               POP   DS
               IRET

      AX          p
.       T    BIOS   
 .      RET        CB,
   .


       
     ________________________________________________________________

        DOS  2.0        
DEBUG      ,     . 
    .


                                 A
                               -----------
       A (Assemble)  DEBUG     
          .      
 :

               A 100 [Return]

                   
:0100.      ,   Return.
    ,    Return  
  .   :

               MOV  AL,25     [Return]
               MOV  BL,32     [Return]
               ADD  AL,BL     [Return]
               RET            [Return]

      :

               :0100      MOV  AL,25
               :0102      MOV  BL,32
               :0104      ADD  AL,BL
               :0106      RET

            .    
Return   .
      ,       .
   ,    .


                                 U
                               -----------
       U (Unassemble)      
.              
,     (    c  100    106).
:

               U 100,106 [ Return]

   

               :0100      B025      MOV  AL,25
               :0102      B332      MOV  BL,32
               :0104      00D8      ADD  AL,BL
               :0106      C3        RET

    ,    R  
      .    
T     .
       ,          
.       ,   
 ,      -      
.      DEBUG    
              
  .


                       
                   -----------------------------------
       DEBUG       
:

          1.             
        .   :

               -         :  DEBUG  n:  
          [Return]
               -           D    
             E,
               -   : W [Return]

          2.      DEBUG        
          .   :

               -   DEBUG,
               -      A  (assemble)    E  (enter)  
          ,
               -    :  N  .COM [Return].  
                COM  (.   .6         
          COM-),
               -         ,    
            ,         
          .       

               :0106      C3   RET

                   
          106 ()  100 (), .. 6.
               -   CX : R CX [Return]
               -      CX 0000 ( )
               -    - 6,
               -   : W [Return]

        DEBUG   "Writing nnnn bytes."  (
nnnn ).   nnnn  0,           
,     c.


        
     ________________________________________________________________

      DOS DEBUG       ,    
    .            
,    E ().     
                       
 .             
"" ,     DOS  DEBUG  
     .  -        
,     ,      ,
     .
    ,         ,  
, ,    E,   .  ,
         p  .      
    E  .    
   ,        
 (IP)  0100.    R  (register)    
   :

                              R IP [Return]

           IP    
.     0100     
 R ( IP). 0   ,    
 .   ,   T,    
 .
             -  ,    
      .   y 
      CS,  DS,  SP    SS,      
 .
         DOS    DEBUG.   
 :      o: 
(D),  (E),  (H),  (N),   (Q),    (R),
 (T)     (W).    o        
     .



       
     ________________________________________________________________

     2.1.    
          )  .  4629   AX;
          )  . 036A    AX.

     2.2. ,      :

               E CS:100 B8 45 01 05 25 00

      .   45  54.    E  
               ,   ..
  45  54.

     2.3. ,     :

               E CS:100 B8 04 30 05 00 30 CB

          )         ?  (    
        ).
          )         AX    
      0460,     6004.      
       ?
          )       
       .     ?

     2.4.      :

               B0 25 D0 E0 B3 15 F6 E3 CB

       :

          -  .  25   AL;
          -        AL           (
       AL  4A);
          -  .  15   BL;
          -    AL    BL.

    (E)        CS:100.  
,        .  
   D  CS:100        .  
  R     T     
   RET.       AX  
 ?

     2.5.          (E)      
 :

               :        25 15 00 00
                :  A0 00 00 D0 E0 F6 26 01 00 A3 02 00 CB

       :

          -          DS:00  (25)  
      AL;
          -    AL      (  
      4A);
          -  AL       DS:01 (15);
          -    AX   ,      
     DS:02.

          D      
   .    R    
T     (RET).       AX  
  0612.     D DS:00   ,
   DS:02    1206.

     2.6.      (2.5)        
     TRIAL.COM.

     2.7.   A ,    :

               MOV  BX,25
               ADD  BX,30
               SHL  BX,01
               SUB  BX,22
               NOP
               RET

              
 NOP.



 3                                           
__________________________________________________________________________

        :                 
   ,    .


     
     ________________________________________________________________

      .2             
.           
    .  ,   - 
        ,     ""
()                
.        ,
             
          .
        ,  
  ,    .    
    DOS EDLIN    
 .          
        ,      
.   ,  DOS LINK      
  ,   .
                    
    ,   .


         
     ________________________________________________________________

           ,  o
,     . p  
          (;)  
   ,   ,    ;  
.       , 
.
                 
  ,       :

     1.        ;    
     2.        ADD AX,BX  ;     

             
       ,      
    ,          
 .            
  ,          -        (    
).


      
     ________________________________________________________________

            :

               []      [()]

      ( ),    ( ) p 
        .    
  -  132  ,  ,        
    80    (       ).    
:

                       
               COUNT     DB        1    ;, ,  
                         MOV       AX,0 ;,  


                                  
                                 -------
             :

               :          A  Z   a  z
               :          0  9
               :     (?)
                               (.) (  )
                               " " (@)
                               (-)
                               ($)

              .  
           .  
  - 31 .  : COUNT, PAGE25, $E10. 
    .    ,  ,
AX, DI   AL            
  . ,  

               ADD  AX,BX

 "",  AX  BX   . ,  

               MOV  REGSAVE,AX

   REGSAVE        ,      
       .      .3      c    
  .


                                 
                                ---------
                
  .          (  )
 ,  o  .       
 , ,  (MOV)   (ADD).


                                 
                                ---------
               ,      
  )        ) ,   
      .           COUNTER
       :

                  

          COUNTER   DB   0    ;  (DB)   

              ,        
.    :

                                    

                    RET               ;
                     INC     CX        ; CX
                     ADD     AX,12     ; 12  AX

     ,                  
-    . ,  
     y .   ,  ,
 DOS EDLIN      .


     
     ________________________________________________________________

        ,   p 
      .         
    .             
          .  
       .    .24    
            
. .24     .


                 : PAGE  TITLE
              ----------------------------------------------
        ,        (
).      PAGE    TITLE         
.


               PAGE.       
,        ,      
   .     c  PAGE.  
  60     132   :

                               PAGE 60,132

              10    255,  
   -  60  132.        
PAGE 66,80.
     ,          60.      
,  60 ,      
           e.      
       , , 
  .            PAGE    
.             
p PAGE.


              TITLE.    ,        
    ()  ,    p
TITLE   :

                              TITLE   

                ,  
          .  ,    
  ASMSORT,                
    60 :

          TITLE ASMSORT -    

              SUBTTL,  
         ,    
.


                             SEGMENT
                           -------------------
               -
 .           
      . c  
  SEGMENT   :

                            
                      SEGMENT        []
                         .
                         .
                         .
                      ENDS

          ,      
          .      ENDS
  .     SEGMENT    ENDS    
 .   SEGMENT      ,
 ,   .

          1.            .      
      .    PARA,   
        .       
        16  ,  ..   .   nnn0.   
            PARA.
          2.           .      
                 
       (  .         "
     ").       :  STACK,  COMMON,
     PUBLIC, AT   MEMORY.      
     :
                         SEGMENT   PARA   STACK

                  
     ,    : PUBLIC, COMMON  MEMORY. 
     ,         ,
          .
          3.      .     ,         ,
                     
     :

                    SEGMENT   PARA   STACK   'Stack'

             .3.1.     
      SEGMENT    .


                               PROC
                             ----------------
          .    
          ,  
 PROC. ,      
:
               -   SEGMENT   PARA
               -  PROC      FAR       
                              .                   
                              .                   
                              .                   
                              RET                 
               -  ENDP
               -   ENDS

         ,      
     .    FAR  
 DOS,             
 .
      ENDP        ,  
   PROC.   RET        
     DOS.
          (. .7).


                              ASSUME
                            ------------------
        SS   ,   DS  
        CS      c  .
     .    
  ASSUME,      :

                
               ASSUME     SS:_,DS:__,CS:__

     , SS:_ ,     
     SS.         
.    ES            
.       ES,    
  ES:NOTHING.


                               END
                             ---------------
       ,  ENDS  ,    ENDP
 .   END      
:

                     
               END            [_]

          ,          
, ,      ,  
         ()  .  
        o    ,    
 PROC,   o  FAR.


       
     ________________________________________________________________

               ,      
    .        ,    WORDA
   :

          MOV  AX,BX     ;  BX   AX
          MOV  AX,WORDA  ;  WORDA   AX
          MOV  AX,[BX]   ;    
                         ;   BX   AX
          MOV  AX,25     ;  25   AX
          MOV  AX,[25]   ;    25

          ,  
  .


      
     ________________________________________________________________

               :  EXE    COM.
   EXE-,  COM-  
 .6.  DOS             
EXE-:  1)    ,   c  
 ,  2)       ,    
 DS,    , 3)    
  4)    DS   .
           DOS      
RET.  .3.1                
:

          1. ASSUME -    ,    
                      
      ;   , CODESG - CS, DATASG -  DS  
     STACKSG - SS.  DATASG  STACKSG     ,   
        :

          STACKSG  SEGMENT  PARA  STACK  Stack  'Stack'
          DATASG   SEGMENT  PARA  'Data'

              ,    
            . ,
                :  
        0,     ,   
         2  ..
          2.          
     256- (.100) ,      
       PSP.          DS    
            PSP.    
        ,    .  ,  RET
           DOS.
          3.      ,          
        (, ).      SUB
       AX,        AX,    
     PUSH     .
          4.    DOS           
      SS          CS.    
           DS      ,   
       DS     MOV,      
     .3.1.      "  .  
     II"     DS.
          5.  RET      
        DOS,      ,        
        PUSH DS.    
       INT 20H.

__________________________________________________________________________

     CODESG    SEGMENT PARA 'CODE'
     BEGIN     PROC FAR
1.             ASSUME    CS:CODESG,DS:DATASG,SS:STACKG
2.             PUSH      DS             ; DS  
3.             SUB       AX,AX          ;   AX
               PUSH      AX             ;   
4.             MOV       AX,DATASG      ; 
               MOV       DS,AX          ; DATASG  DS
               .
               .
               .
5.             RET                      ;  DOS
     BEGIN     ENDP
     CODESG    ENDS
               END       BEGIN
__________________________________________________________________________

     .3.1.  EXE-.


     ,            
 -  .       
  ,                  
 .


       
     ________________________________________________________________

     .3.2         
.        - STACKSG    -
CODESG.

__________________________________________________________________________

        page    60,132
TITLE   EXASM1  (EXE)   
;------------------------------------------------
STACKSG SEGMENT PARA SACK 'Stack'
        DB      12 DUP('STACKSEG')
STACKSG ENDS
;------------------------------------------------
CODESG  SEGMENT PARA 'Code'
BEGIN   PROC    FAR
        ASSUME  SS:STACKSG,CS:CODESG,DS:NOTHING
        PUSH    DS              ; DS  
        SUB     AX,AX           ; 
        PUSH    AX              ;  

        MOV     AX,0123H        ; .0123  AX
        ADD     AX,0025H        ; .25  AX
        MOV     BX,AX           ; AX  BX
        ADD     BX,AX           ; BX  AX
        MOV     CX,BX           ; BX  CX
        SUB     CX,AX           ; AX  CX
        SUB     AX,AX           ; AX
        NOP
        RET                     ;  DOS
BEGIN   ENDP                    ; 

CODESG  ENDS                    ; 
        END     BEGIN           ; 
__________________________________________________________________________

     .3.2.     .


     STACKSG        DB  (   ),    
 12   'STACKSEG'.         
p  ,       
      ,         
 .
     CODESG    ,    
ASSUME   .    ASSUME      SS  
STACKSG     CS    CODESG.    ,    
 ,     STACKSG    
   SS       CODESG  -        CS.
          
      SS    CS.    
    ,                  ,
,  ASSUME    p DS.
     ,   ASSUME - PUSH, SUB  PUSH  
        DS    
.  , ,    DOS,    
     DOS      .  (  
   ,    ).
          ,    p.2.1
  ,   .


        
     ________________________________________________________________

     -     "  "  .

     -        ENDS,      -
 ENDP,   -  END.

     -   ASSUME       
   .

     -  EXE- (   COM-, .  .6)  
  32   ,       
 PUSH, SUB  PUSH     DS   .


       
     ________________________________________________________________

     3.1.          
      ?

     3.2.     : ) PC_AT, ) $50, )  @$_Z,
) 34B7, ) AX?

     3.3.       ,      
?

     3.4.     END,    )
, ) , ) ?

     3.5.      .

     3.6.     RET  END.

     3.7.   ,       CDSEG,  DATSEG  
STKSEG .   ASSUME.

     3.8.             DS  
 .



 4                                 
__________________________________________________________________________

        :   ,     
.


     
     ________________________________________________________________

           ,            
  ,   ,  
    .    ,           
    .



      
     ________________________________________________________________

      .3.2                    ,
        .    
  DOS  EDLIN            
.         EDLIN,    
            DOS.  
    EDLIN        DOS         A   
    B.      
    ,   CHKDSK B:.   
       C:   B:.   
  EXASM1,  

               EDLIN :EXASM1.ASM [Return]

       DOS  EDLIN         "New
file"   "*-".    I      ,    
    ,    p   .3.2.
           ,  
 , ,   ,   ,
      y.        EDLIN 
    .
           .     E
( Return)    EDLIN.          
  , 

               DIR B:              (  )
            DIR B:EXASM1.ASM    (  )

           ,   
      .        
       .   
PRINT  (  DOS  2.0    ).  DOS          
   :

               PRINT B:EXASM1.ASM [Return]

      EXASM.ASM      -    
    .   p  
             
 .


        
     ________________________________________________________________

                      EXASM1.ASM
    ,       
.    p ,   
.          
   ,         
     .
                   
     OBJ-.       
   .2   x    .
     OBJ-        ,      
  .       OBJ-  
EXE  ()  ,      .      LINK,
   DOS,  :

          1.    OBJ- ,  
       .    
          ----R.
          2.  ,    ,            
           ()  ;
                    
       ,     , 
        .
          3.  EXE-    .

       OBJ- (  )    EXE-,  
 EXE-   . ,    
    EXE-,         ,
    OBJ-    OBJ-  
 EXE-.  ,           ,  
,  ,      ,         
EXE-       .  :    
EXE-        o     COM-.
 , ,   c        .  
    6.


      
     ________________________________________________________________

      ,     , 
          .      
     a.  ASM.EXE - 
         MASM.EXE  -
 .     ,     MASM
( .     ).
      ,        A,  
          B.     
   p C    A    B.    
     MASM ( ASM),     
     .   :

               source filename [.ASM]:
               object filename [filename.OBJ]:
               source listing [NUL.LST]:
               cross-reference [NUL.CRF]:

             ,    
    .        (       
)      : B:EXASM1.      
  ASM,     .
     -      (   
).  ,    B:.
       ,      
.       B   B:    
Return.
       ,       c  
.       B,  B:    
Return.
           ,       
   Return.      , 
    c OBJ, LST  CRF-.  
 ,  ,   ,      
 .

               source filename [.ASM]:B:EXASM1 [Return]
               object filename [filename.OBJ]:B: [Return]
               source listing [NUL.LST]:B: [Return]
               cross-reference [NUL.CRF]:B: [Return]

           , ,  
OBJ- -             .
      LST-,  ,      
   . CRF-    
,   ,          
.  ,    LST-  , 
  CRF-.
      .4 "   "  
()    1.0  2.0.
                  
    .    
      ,          
(, MOVE  MOV),       p  
.   ASM        ,      
  ,       ASM      
,    .    100   .
          ,   
        ,     
 (EXASM1.ASM)   .
      .4.1  ,      c
       EXASM1.LST.

__________________________________________________________________________

1                                page   60,132
2                        TITLE   EXASM1 (EXE)   
3                        ;-----------------------------------------------
4  0000                  STACKSG SEGMENT PARA SACK 'Stack'
5  0000  0C [                    DB      12 DUP('STACKSEG')
6            53 54 41 43
7            4B 53 45 47
8                       ]
9
10 0060                  STACKSG ENDS
11                       ;-----------------------------------------------
12 0000                  CODESG  SEGMENT PARA 'Code'
13 0000                  BEGIN   PROC    FAR
14                               ASSUME  SS:STACKSG,CS:CODESG,DS:NOTHING
15 0000  1E                      PUSH    DS       ; DS  
16 0001  2B C0                   SUB     AX,AX    ; 
17 0003  50                      PUSH    AX       ;  
18
19 0004  B8 0123                 MOV     AX,0123H ; .0123  AX
20 0007  05 0025                 ADD     AX,0025H ; .25  AX
21 000A  8B D8                   MOV     BX,AX    ; AX  BX
22 000C  03 D8                   ADD     BX,AX    ; BX  AX
23 000E  8B CB                   MOV     CX,BX    ; BX  CX
24 0010  2B C8                   SUB     CX,AX    ; AX  CX
25 0012  2B C0                   SUB     AX,AX    ; AX
26 0014  90                      NOP
27 0015  CB                      RET              ;  DOS
28 0016                  BEGIN   ENDP             ; 
29
30 0016                  CODESG  ENDS             ; 
31                               END     BEGIN    ; 
-------------------------------------------------------------------------
   Segments and Groups:
                N a m e           Size   Align    Combine   Class
   CODESG . . . . . . . . . . . . 0016   PARA     NONE      'CODE'
   STACKSG. . . . . . . . . . . . 0060   PARA     STACK     'STACK'

   Symbols:
                N a m e           Type   Value    Attr
   BEGIN. . . . . . . . . . . . . F PROC 0000     CODESG   Length=0016
__________________________________________________________________________

     .4.1.   .


                      
 PAGE  TITLE.  ,  SEGMENT, PROC, ASSUME 
END    .
               ,          
     .      
  .   .
                     0000.    
              p  
 SS           p.  
SEGMENT  16-      ,    
  .       .  DB,
      0000,    12      'STACKSEG';
   .0C ( 12)    .  
ASCII . (         
   ).        .0060,
    96 (128).
                  0000.  
          p  CS    
   .   ASSUME  
,   ,     
  PUSH DS -      (1E),      
.   SUB AX,AX    
(2B C0),     0001.     
  .      -,  -  
 .
       END   BEGIN,  e 
   PROC   0000.       ,  
     .
        EXASM1.LST,    PAGE
p 132     .    
  .      

               MODE LPT1:132,6


                          
                        -------------------------
                         
.          
        ,    .
     -          
 (    )  ,      
 (   ).   ,       
,    /N    MASM, .. MASM/N.


                          
                        -------------------------
                    
  ,    .        
    ,          ,    
   ,         
.
               p  
  ,   , ..   
       a  .   
     ,          
.
                 ,
     .              
          ,      
     .    ,  
, : OBJ, LST  CRF.


      
     ________________________________________________________________

           ,   c
 -      .    EXASM1.OBJ    
        .           
       ,    
    .  ,   
()      .      LINK
              (
)  .
          ,  
DOS   A,             B.  
     LINK    C.
  LINK    Return.       ,
        (  MASM),    
 :

                             

          Object Modules [.OBJ]:     B:EXASM1   EXASM1.OBJ
          Run file [EXASM1.EXE]:     B:         EXASM1.EXE
          List file [NUL.MAP]:       CON        EXASM1.MAP
          Libraries [.LIB]:          [Return]   

       -      ,  OBJ
 .
         -          (),   (
 A:EXASM1.EXE).   B: ,     
  .      (  ) 
   .
       ,  LINK    y -
NUL.MAP (..  MAP ). MAP-     
  ,     LINK.      
     .    CON  ,  
    ,     .    
                    
  .      MAP-    
:

               Start     Stop      Length    Name

               00000H    00015H    0016H     CODESG
               00020H    0007FH    0060H     STACKSG

               -    Return,     
 LINK          y.  
       DOS.
                y
    .            
 LINK.  .4   p  LINK.


      
     ________________________________________________________________

                (-!)
 .      .4.2                 
,      EXASM1.   EXE-
   B,     :

               B:EXASM1.EXE      B:EXASM1

     DOS ,     EXE ( COM),    
  .                
,      DEBUG. 

               DEBUG B:EXASM1.EXE

       DOS   DEBUG, ,     ,
  EXE-.         (-)  
 .     

               D SS:0

               12-    
STACKSEG.     

               D CS:0

          :

               1E2BC050B823010525008BD803 ...

      ,     
0123  0025      2301    2500  .  
          
.       ()        
     .

__________________________________________________________________________
__________________________________________________________________________

     .4.2.  ,    .


      R       p 
  T ().         
 PUSH   -       
DS   .
                  
 .        RET,      Q
(Quit - )    .
       dir,       :

               DIR B:EXASM1.*

              :  EXASM1.BAK
(      EXASM1.ASM         EDLIN),
EXASM1.ASM,   EXASM1.OBJ,    EXASM1.LST,    EXASM1.EXE        EXASM1.CRF.
         ,  
   .
     ,          
.          
    DOS  CHKDSK.      OBJ-,  CRF-,  BAK-   
LST-      ERASE ( DEL):

               ERASE B:EXASM1.OBJ, ...

       () ASM-        
EXE-  .
                   
.      c.



       
     ________________________________________________________________

      ,   .4.1,   ,  
   .        
,               
 -.
       2 (.2.3)        ,  
         .           .4.3
    ,           
     .     
  .

__________________________________________________________________________

1                             page   60,132
2                     TITLE   EXASM2 (EXE)    
3                     ;-------------------------------------------------
4  0000               STACKSG SEGMENT PARA SACK 'Stack'
5  0000  20 [                 DB      32 DUP(?)
6           ????
7               ]
8
9  0040               STACKSG ENDS
10                    ;-------------------------------------------------
11 0000               DATASG  SEGMENT PARA 'Data'
12 0000  00FA         FLDA    DW      250
13 0002  007D         FLDB    DW      125
14 0004  ????         FLDC    DW      ?
15 0006               DATASG  ENDS
16                    ;-------------------------------------------------
17 0000               CODESG  SEGMENT PARA 'Code'
18 0000               BEGIN   PROC    FAR
19                            ASSUME  CS:CODESG,DS:DATASG,SS:STACKSG,ES:NO
THING
20 0000  1E                   PUSH    DS          ; DS  
21 0001  2B C0                SUB     AX,AX       ;  
22 0003  50                   PUSH    AX          ;  
23 0004  B8 ---- R            MOV     AX,DATASG   ;  DATASG
24 0007  8E D8                MOV     DS,AX       ;   DS
25
26 0009  A1 0000 R            MOV     AX,FLDA     ; 0250  AX
27 000C  03 06 0002 R         ADD     AX,FLDB     ; 0125  AX
28 0010  A3 0004 R            MOV     FLDC,AX     ;   FLDC
29 0013  CB                   RET                 ;  DOS
30 0014               BEGIN   ENDP
31 0014               CODESG  ENDS
32                            END     BEGIN
------------------------------------------------------------------------
   Segments and Groups:
                N a m e           Size   Align    Combine   Class
   CODESG . . . . . . . . . . . . 0014   PARA     NONE      'CODE'
   DATASG . . . . . . . . . . . . 0006   PARA     NONE      'DATA'
   STACKSG. . . . . . . . . . . . 0040   PARA     STACK     'STACK'

   Symbols:
                N a m e           Type   Value    Attr
   BEGIN. . . . . . . . . . . . . F PROC 0000     CODESG   Length=0014
   FLDA . . . . . . . . . . . . . L WORD          0000     DATASG
   FLDB . . . . . . . . . . . . . L WORD          0002     DATASG
   FLDC . . . . . . . . . . . . . L WORD          0004     DATASG
__________________________________________________________________________

     .4.3.      .


         DW (Define Word -  c),
 32  ,          
   (?).         32  
    ,                
  ""  -     -
      .         
'STACKSEG'     p.3.2       
 DEBUG.
             :        32  .  
    ,         
             
.
        .4.3    DATASG,  
   0000.        
DW.  FLDA   ( ),   
250,     .00FA (.   ).
      FLDB            125,  p
    .007D.       
 - FA00    7D00  ,        c  
 DEBUG.
      FLDC         ,  
  (?).
            CODESG      
,    .  -,  ASSUME
   DATASG     DS.      
     ES,            
.  -,      PUSH,  SUB    PUSH,   
   ,       ,    
 :

               0004  B8 ---- R     MOV  AX,DATASG
               0007  8E D8         MOV  DS,AX

       MOV  DATASG   AX.  ,   
         -      
  DATASG.      :

               B8 ---- R

       ,         a
DATASG;         
        .    p    
    ,  c    
       R;       
  .
       MOV    AX      DS.
 ,     ASSUME,   
 DS   ,    ,      DS
  DATASG.
               .  -,
                DS,


               MOV  DS,DATASG ?

       ,         c
         DS.  ,      DS
   .
     -,     DS,    SS
 CS ? ,  SS  CS   
    ,        
 DS ,   ES,     .
            ,   c
      .        
         .  
                   .
,          
                ,  ,
  ,   .
       ,      ,
  .4.3,     .  
     DEBUG      ,    ,
     .


       
     ________________________________________________________________

                 
(CRF),         
 ,     .     
,     , o B:, , 
      B:

               cross-reference [NUL.CRF]:B: [Return]

         CRF-   p
  .            
 .     
CREF.     :

               Cref filename [.CRF]:
               List filename [cross-ref.REF]:

           CRF-,  ..  B:EXASM1.    
             .
     CRF           
EXASM1.REF   B.
                 DOS
PRINT.   4     CREF.

__________________________________________________________________________

          EXASM2  (EXE)    

          Symbol Cross Reference    (# is definition)     Cref-1

          BEGIN. . . . . . . . . . . .    18#    30     32

          CODE . . . . . . . . . . . .    17
          CODESG . . . . . . . . . . .    17#    19     31

          DATA . . . . . . . . . . . .    11
          DATASG . . . . . . . . . . .    11#    15     19    23

          FLDA . . . . . . . . . . . .    12#    26
          FLDB . . . . . . . . . . . .    13#    27
          FLDC . . . . . . . . . . . .    14#    28

          STACK. . . . . . . . . . . .     4
          STACKSG. . . . . . . . . . .     4#     9     19

          10 Symbols
__________________________________________________________________________

     .4.4.   .


      .4.4             ,
    .4.3.          c 
        p      
,       .    
    p.      n#
          LST-,    
.     ,      ,
    c   .  ,  CODESG  
 17      19  32.


        
     ________________________________________________________________

     -      OBJ-,   
- OBJ-   EXE-.

     -          (M)ASM,
LINK  CREF     Return.    
  .

     -  CREF    .

     -          .    
 CHKDSK          .    
     ,  
       .


       
     ________________________________________________________________

     4.1.   MASM        
   TEMPY.ASM    LST, OBJ  CRF,  ,
       B.

     4.2.     TEMPY  (    4.1)  )  
   DEBUG, )       
DOS.

     4.3.      :  )  file.BAK,
) file.ASM, ) file.LST,  )  file.CRF,  )  file.OBJ,  )  file.EXE,  )
file.MAP.

     4.4.       DS, , 
   - DATSEG.

     4.5.    :

          -  .30 ( )   AL;
          -    AL     ( SHL)
          -  .18 ( )   BL;
          -   AL  BL ( MUL BL).

        RET.       
  .     
    (  )           
.        .    
DEBUG,   ,     
() .

     4.6.     4.5 :

          -     (  DB)    
     FLDA,  .28,    FLDB,  .14;
          -     (  DW)    
     FLDC,   ;
          -    FLDA   AL     
     ;
          -    AL     FLDB (MUL
     FLDB);
          -     AX   FLDC.

                    .    
,         
DEBUG.



 5                                                  
__________________________________________________________________________

        :             
 .


    
     ________________________________________________________________

          ,   
  -.            
          :    ,
 DB  ,    DW  o  .  
                 ,
       .
                
, ..     , :

               MOV  AL,20H

          20    
  .       o  
 ,   ,      ,     
,   c.



       
     ________________________________________________________________

             :  -,
    , -,     c.  
   :

               []     Dn   

               (   
     ),           ,
         .     
      " "   3.
                : DB
     (), DW (), DD ( ), DQ ( )   DT
     ( ).
             , :

               FLD1      DB   25

          , 

               FLDB      DB   ?

         ,    
   :

               FLD3      DB   11, 12, 13, 14, 15, 16, ...

       c .
   FLD3    , 11,    FLD3+1  -  
, 12. (FLD3    FLD3+0).  

               MOV  AL,FLD3+3

   AL  14 (. 0E).     
    :

               []     Dn  - DUP () ...

         :

               DW   10 DUP(?)      ;  
               DB   5 DUP(14)      ; ,  .14
               DB   3 DUP(4 DUP(8)); 

                  8
(8888),         ,      p
 .
            .


                             
                           -------------------
               ,    ,
,     .    o
 ,  ,  'PC'        -  "PC".
            
ASCII.
               DB,    p
            
.  ,  DB     
       .    .5.1      
.

__________________________________________________________________________

                                 page    60,132
                         TITLE   EXDEF   (EXE)  
0000                     DATASG  SEGMENT PARA 'Data'

                         ;                - DB:
                         ;              ----------------------
0000  ??                 FLD1DB  DB     ?         ; 
0001  50 65 72 73 6F 6E  FLD2DB  DB     'Personal Computer' ;. 
      61 6C 20 43 6F 6D
      70 75 74 65 72
0012  20                 FLD3DB  DB     32        ; 
0013  20                 FLD4DB  DB     20H       ;. 
0014  59                 FLD5DB  DB     01011001B ; 
0015  01 4A 41 4E 02 46  FLD6DB  DB     01,'JAN',02,'FEB',03,'MAR' ;-
      45 42 03 4D 41 52
0021  33 32 36 35 34     FLD7DB  DB     '32654'   ; 
0026     0A [ 00 ]       FLD8DB  DB     10 DUP(0) ; 

                         ;                - DW:
                         ;              ----------------------
0030  FFF0               FLD1DW  DW     0FFF0H    ;. 
0032  0059               FLD2DW  DW     01011001B ; 
0034  0021 R             FLD3DW  DW     FLD7DB    ; 
0036  0003 0004 0007     FLD4DW  DW     3,4,7,8,9 ; 
      0008 0009
0040     05 [ 0000 ]     FLD5DW  DW     5 DUP(0)  ; 

                         ;                 - DD:
                         ;              -------------------------------
004A  ????????           FLD1DD  DD     ?         ; 
004E  43 50 00 00        FLD2DD  DD     'PC'      ; 
0052  3C 7F 00 00        FLD3DD  DD     32572     ; 
0056  11 00 00 00        FLD4DD  DD     FLD3DB - FLD2DB ; 
005A  0E 00 00 00 31 00  FLD5DD  DD     14,49     ; 
      00 00
                         ;              .   - DQ:
                         ;              ---------------------------------
0062  ????????????????   FLD1DQ  DQ     ?          ; 
006A  47 4D 00 00 00 00  FLD2DQ  DQ     04D47H     ;. 
      00 00
0072  3C 7F 00 00 00 00  FLD3DQ  DQ     32572      ;. 
      00 00
                         ;                 - DT:
                         ;              ----------------------------
007A  ?????????????????? FLD1DT  DT     ?          ; 
      ??
0084  43 50 00 00 00 00  FLD2DT  DT     'PC'       ; 
      00 00 00 00

008E                     DATASG  ENDS
                                 END
------------------------------------------------------------------------
Segments and Groups:
             N a m e     Size   Align    Combine   Class
DATASG . . . . . . . . . 008E   PARA     NONE      'DATA'

Symbols:
             N a m e      Type           Value    Attr
FLD1DB . . . . . . . . . L BYTE          0000     DATASG
FLD1DD . . . . . . . . . L DWORD         004A     DATASG
FLD1DQ . . . . . . . . . L QWORD         0062     DATASG
FLD1DT . . . . . . . . . L TBYTE         007A     DATASG
FLD1DW . . . . . . . . . L WORD          0030     DATASG
FLD2DB . . . . . . . . . L BYTE          0001     DATASG
FLD2DD . . . . . . . . . L DWORD         004E     DATASG
FLD2DQ . . . . . . . . . L QWORD         006A     DATASG
FLD2DT . . . . . . . . . L TBYTE         0084     DATASG
FLD2DW . . . . . . . . . L WORD          0032     DATASG
FLD3DB . . . . . . . . . L BYTE          0012     DATASG
FLD3DD . . . . . . . . . L DWORD         0052     DATASG
FLD3DQ . . . . . . . . . L QWORD         0072     DATASG
FLD3DW . . . . . . . . . L WORD          0034     DATASG
FLD4DB . . . . . . . . . L BYTE          0013     DATASG
FLD4DD . . . . . . . . . L DWORD         0056     DATASG
FLD4DW . . . . . . . . . L WORD          0036     DATASG
FLD5DB . . . . . . . . . L BYTE          0014     DATASG
FLD5DD . . . . . . . . . L DWORD         005A     DATASG
FLD5DW . . . . . . . . . L WORD          0040     DATASG  Length =0005
FLD6DB . . . . . . . . . L BYTE          0015     DATASG
FLD7DB . . . . . . . . . L BYTE          0021     DATASG
FLD8DB . . . . . . . . . L BYTE          0026     DATASG  Length =000A
__________________________________________________________________________

     .5.1.      .


                             
                           --------------------
                 
a .          .  
         
         -    .  
   .

                      .          
   0  9         D,  
  , , 125  125D.    ,  
    ,      
.  .  ,   125   .
7D.

                             .    
  .   0  F      H.
   ,         ,  
  .      0  9.  ,  2EH
 0FFFH,      2E  FF0F (
                         
).

                   .         
 0  1       B.      
        
 AND, OR, XOR  TEST.   12, . C   1100B 
         :  .  0C      0000  1100  
  ,     .

                       .     
     0    7      Q  O,
, 253Q.       .

                                         .
     ASM.

                 ,  ,
,  ,     DB  '12',  
 ASCII   .3132,    ,  o
 DB 12,      .0C.
     .5.1        
   .           ,
     ().


        (DB)
     ________________________________________________________________

         ,      ,    
  DB ( ).      p
DB      ,        
(. FLD2DB  FLD7DB  .5.1).   ,   FLD2DB
    'Personal Computer'.    
  ASCII   . .20   .
         DB          
  .           .    p.
  .      7F,    ""
  80    FF      .    
     +127  -128.
        .5.1     FLD3DB,  FLD4DB,
FLD5DB    FLD8DB.   FLD6DB      
,    .


        (DW)
     ________________________________________________________________

      DW  ,         
( ).    DW   , 
          ,  ,  ,    'PC'
 'CP'.           DW  
 .
        DW        
.        .  .  
 .      7FFF;  ""    
8000  FFFF   .    
    +32767  -32768.
          .5.1    FLD1DW    FLD2DW    
.    FLD3DW      -     
 FLD7DB.       0021 (R  
).     , ,   
 FLD7DB  0021.
      FLD4DW        .  ,
             o    (
).
        DW, DD  DQ      
.  ,           .
     12345      .3039,  
     3930.


         (DD)
     ________________________________________________________________

      DD  ,          c
(  ).               
,            (  .
).   .      7FFFFFFF;
 ""   80000000    FFFFFFFF    
.                 
+2147483647  -2147483648.
        .5.1  FLD3DD      .  
  FLD4DD       ,    
        FLD2DB.    FLD5DD    
 .
            DD    .
,        .
    12345   .00003039,  
  o   39300000.
           DD        .
            
 ,     FLD2DD   .


         (DQ)
     ________________________________________________________________

      DQ  ,      (
).         , 
           16  .  .  
  .    -        15  F.   
    ,  ,   .  1   15  
   :

               1152921504606846976

        . 5.1   FLD2DQ    FLD3DQ    
.          DQ  
.  ,                    
,     DD  DW.
               DQ  a
 DD  DW.


         (DT)
     ________________________________________________________________

      DT   ,     .
     "  "  
 (. .13).    DT   ,
        ;         
     a.
      .5.1          DT    
    .
       .5.1    .  X  c
        ,        LINK    MAP    
: "Warning: No STACK Segment" (:   
 ),   LINK  "There were 1  errors  detected"
( 1 ).        
 DEBUG    ,    .5.2.

__________________________________________________________________________

D:\ D>DEBUG D:EXDEF.EXE
-D
1421:0000 00 50 65 72 73 6F 6E 61-6C 20 43 6F 6D 70 75 74 .Personal Comput
1421:0010 65 72 20 20 59 01 4A 41-4E 02 46 45 42 03 4D 41 .er Y.JAN.FEB.MA
1421:0020 52 33 32 36 35 34 00 00-00 00 00 00 00 00 00 00 R32654..........
1421:0030 F0 FF 59 00 21 00 03 00-04 00 07 00 08 00 09 00 ..Y.!...........
1421:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 43 50 ..............CP
1421:0050 00 00 3C 7F 00 00 11 00-00 00 0E 00 00 00 31 00 ..<...........1.
1421:0060 00 00 00 00 00 00 00 00-00 00 47 4D 00 00 00 00 ..........GM....
1421:0070 00 00 3C 7F 00 00 00 00-00 00 00 00 00 00 00 00 ..<.............
-D
1421:0080 00 00 00 00 43 50 00 00-00 00 00 00 00 00 33 33 ....CP........33
1421:0090 3E 36 33 33 73 00 00 00-0A 0E 00 00 3E 63 63 30 >633s.......>cc0
1421:00A0 1C 06 63 63 3E 00 00 00-0A 0E 00 00 FF DB 99 18 ..cc>...........
1421:00B0 18 18 18 18 3C 00 00 00-0A 0E 00 00 63 63 63 63 ....<.......cccc
1421:00C0 63 63 63 63 3E 00 00 00-0A 0E 00 00 C3 C3 C3 C3 cccc>...........
1421:00D0 C3 C3 66 3C 18 00 00 00-0A 0E 00 00 C3 C3 C3 C3 ..f<............
1421:00E0 DB DB FF 66 66 00 00 00-0A 0E 00 00 C3 C3 66 3C ...ff.........f<
1421:00F0 18 3C 66 C3 C3 00 00 00-0A 0E 00 00 C3 C3 C3 66 .      
     ________________________________________________________________

      . 2.1   2       
. 

               MOV   AX,0123H

  .  0123   AX. 
      B82301,  B8    "
    AX", a       
 .         :      
   ,   -  .

             ,    
o         c  
    MOV, ,

                :     AMT1 DW   0123H
                :           MOV  AX,AMT1


                       
                    ----------------------------------
              .
,        ,  
 AL    :

               MOV  AL,0123H  ()

,    ,   ,  
  

               ADD  AX,25H    ( )

           ,  0025  
     2500.


                          
                        --------------------------
           ,  p,
0123H;  ,  ,  291  (       
.0123);  , , 100100011  (    
. 0123).
           ,      
:

        :     MOV, CMP.
      :            ADC, ADD, SBB, SUB.
      :                    RCL, RCR, ROL, ROR, SHL, SAR, SHR.
      :                AND, OR, TEST, XOR.

      .5.3         
.         
,     .     
      ,             
  .

__________________________________________________________________________

                              page    60,132
                      TITLE   EXIMM   (EXE)  . 
                      ;       (  ,
                      ;                      )
0000                  DATASG  SEGMENT PARA 'Data'
0000 ??               FLD1    DB      ?
0001 ????             FLD2    DW      ?
0003                  DATASG  ENDS

0000                  CODESG  SEGMENT PARA 'Code'
0000                  BEGIN   PROC    FAR
                              ASSUME  CS:CODESG,DS:DATASG

                      ;                  :
                      ;               ------------------------------
0000 BB 0113                  MOV     BX,275   ;
0003 3C 19                    CMP     AL,H     ;

                      ;                :
                      ;               -----------------------
0005 14 05                    ADC     AL,5     ;  
0007 80 C7 0C                 ADD     BH,12    ;
000A 1C 05                    SBB     AL,5     ;  
000C 80 2E 000 R 05           SUB     FLD1,5   ;

                      ;                  (  1 ):
                      ;               ---------------------------------
0011 D0 D3                    RCL     BL,1     ;   
0013 D0 DC                    RCR     AH,1     ;   
0015 D1 06 0001 R             ROL     FID2,1   ; 
0019 D0 C8                    ROR     AL,1     ; 
001B D1 E1                    SAL     CX,1     ; 
001D D1 FB                    SAR     BX,1     ;.  
001F D0 2E 0000 R             SHR     FLD1,1   ; 

                      ;                :
                      ;               -------------------
0023 24 2C                    AND     AL,00101100B ;AND ()
0025 80 CF 2A                 OR      BH,2AH   ;OR ()
0028 F6 C3 7A                 TEST    BL,7AH   ;TEST ()
002B 80 36 0000 R 23          OR      FLD1,23H ;XOR ()
0030                  BEGIN   ENDP
0030                  CODESG  ENDS
                              END
__________________________________________________________________________

     .5.3.    .


        ,      ,   
 (. .7)    (. .11).


      EQU
     ________________________________________________________________

      EQU    ,     ,
                 .
,        EQU:

               TIMES     EQU  10

,    TIMES,          
  .  ,    -            
  TIMES        10.  ,
  

               FIELDA    DB   TIMES DUP (?)

               FIELDA    DB   10 DUP (?)

     ,         EQU,  
  , :

               COUNTR    EQU  05
                         ...
                         MOV  CX,COUNTR

        COUNTR   MOV   05,  c
   ,     

               MOV  CX,05     ;  05

          EQU      ,    
   ,      COUNTR.  
       ,          
 EQU.  ,    EQU   
,      .      EQU  
  :

               1.   TP   EQU  TOTALPAY
               2.   MPY  EQU  MUL

  ,      p 
TOTALPAY.    ,   TP,   
  TOTALPAY.         
  MPY    MUL.


        
     ________________________________________________________________

     -                
 . ,      
 EMPWAGE.

     -       DB,   
             
 (-).

     -             .  .
, ,    AX   25    
. 25:

               ADD  AX,25     ; 25
               ADD  AX,25H    ; 37

     - ,   DW, DD  DQ      
     .

     -   DB     (AL, AH, BL 
..)  DW      (AX, BX, CX  ..). 
,   DD  DQ   .

     -              
:      -      (AL,    BH),
  -   (AX, BX).


       
     ________________________________________________________________

     5.1.              ,  
: ) DW, ) DD, ) DT, ) DB, ) DQ?

     5.2.            TITLE1,   
 RGB Electronics.

     5.3.             
  FLDA  FLDE:

          a)    ,      .    
       115;
          b)  ,  .  
      25;
          c)  ,   ;
          d)    ,          
       25;
          e)  DW,      16,  19,
     20, 27, 30.

     5.4.   .    ) DB '26'  )
DB 26.

     5.5.   .    ) DB 26H, ) DW
2645H, ) DD 25733AH, ) DQ 25733AH.

     5.6.      :

          )  320   AX;
          )   FLDB  ;
          )  . 40    BX;
          )  . 40   CX;
          )    FLDB    ;
          )    CH    .

     5.7.            
5.2,  5.3  5.6.       .   
 .          
   DEBUG.    LST-  (),      
     .       MODE
LPT1:132,6    .



 6                                               COM-
__________________________________________________________________________

        :      COM-    
    COM-.


     
     ________________________________________________________________

           ,            
EXE-.   LINK      
EXE-,        ()
p   512 .  ( .22   
).
               COM-.    
 COM-    COMMAND.COM.    EXE2BIN.COM  
  DOS  EXE-  COM-.   
    BIN  ()  ,           
"  EXE    in  (EXE-to-BIN)".    in-    
  COM-.


         EXE  COM-
     ________________________________________________________________

         ,    EXE2BIN    EXE-     COM-,
c        ,      
EXE-  ,   COM-.

                    .   EXE-       
,     COM-         
 64.  COM-  ,   EXE-; 
   -   COM-  512-    
EXE-.

                 .  EXE-   ,
    COM-   .   
      ,         
COM-,    .

                  .     EXE      
 ,   DS      .  
COM-            .  
      .

                 .  EXE-     
    DS.   COM-    ,
  ,    .   COM- 
,           
 (PSP), - 256- (. 100) ,    
  DOS   COM  EXE    
.       .  100    PSP,
     SEGMENT   ORG 100H.

             .     EXE    COM    
      OBJ-,        
EXE-.       EXE-,   
 .         COM-,
    :

                        Warning: No STACK Segment
               (:    )

           ,          
   .      EXE-    COM-
    EXE2BIN.  ,    EXE2BIN    
 A,      CALC.EXE  -      B.


               EXE2BIN B:CALC,B:CALC.COM

            EXE  ,      
  EXE.        (  CALC.COM).
    COM,  EXE2BIN     BIN, 
     COM.        
    OBJ-  EXE-.
          EXE-,  , 
,       COM .


      COM-
     ________________________________________________________________

      EXCOM1,    .6.1,      
.4.3,     COM-.   
    COM-:

          -     .
          -  ASSUME     
         .  CS    ,
                (PSP).
       ORG        100  (.)      
        PSP.
          -   ORG  100H        
       .       
        .
          -  JMP      ,    
     .

             :

               MASM [   ]
               LINK [   ]
               EXE2BIN B:EXCOM1,B:EXCOM1.COM
               DEL B:EXCOM1.OBJ,B:EXCOM1.EXE ( OBJ  EXE-)

      EXE-  COM- - 788  20  .  
   COM-,        
  COM-.       
(  )  RET  DEBUG B:EXCOM1.COM.
            , 
   JMP    .        
       ,
    .

__________________________________________________________________________

        page 60,132
TITLE   XCOM1  COM-    
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
        ORG     100H            ;   PSP
BEGIN:  JMP     MAIN            ;  
; ---------------------------------------------------
FLDA    DW      250             ; 
FLDB    DW      125
FLDC    DW      ?
; ---------------------------------------------------
MAIN    PROC    NEAR
        MOV     AX,FLDA         ; 0250  AX
        ADD     AX,FLDB         ; 0125  AX
        MOV     FLDC,AX         ;   FLDC
        RET                     ;  DOS
MAIN    ENDP
CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .6.1.  COM-.


       COM-
     ________________________________________________________________

      COM-  DOS          
o           p.
       64    ,    DOS
   SP   c -  .FFFE.    
 .  64        ,
 DOS     .     DOS  
    .
                   
 .    DIR   p 
     .
                       
COM-.


      
     ________________________________________________________________

           COM-    
   .   EXE2BIN  o,
           
 .        SEGMENT,
ASSUME  END.    ORG 100H,       
                
  .
         COM-           DEBUG
   D CS:100     . 
     RET;    
 Q .       INT  20H  
 RET.
       EXE- ,     COM-,
  .


        
     ________________________________________________________________

     -  COM-  64.

     - COM- ,   EXE-.

     - ,        COM-    
         DS.

     - ,          COM-  
 ORG 100H   SEGMENT       
  .

     -  EXE2BIN  EXE-    COM-,  
  COM   .

     -   DOS     COM-    
 ,   ,    .


       
     ________________________________________________________________

     6.1.    COM-?

     6.2.          ,    
  COM-?

     6.3.     COM-          
 ?

     6.4.             SAMPLE.EXE.
  DOS     COM-.

     6.5.     4.6   COM-,  
      DEBUG.



 7                                        
__________________________________________________________________________

        :        (  
)      .


     
     ________________________________________________________________

                     
.  ,              .
      ,        
    ,    ,
,          .  
   -     .
                   ,
              
.         
         .
           ,    
      
 .          
(     ):

                :  JMP
               :                 LOOP
                :     Jnnn (,,)
                :      CALL

     ,     : SHORT, NEAR   FAR.  
SHORT   ,  p    
.  NEAR  FAR     (CALL) 
 ,    ,    SHORT.    
       IP;    FAR
   CS.


      JMP
     ________________________________________________________________

              
 JMP.      , .. 
    .
      COM-  . 7.1   JMP.   p AX,
BX,  CX   1,          
:

                1   AX,
                AX  BX,
                   CX.

                  AX:
1,2,3,4...,  BX: 1,3,6,10...,     CX:  1,2,4,8...  
  ,   , A20: -  o,  
   (    BEGIN)      .  
   

               JMP  A20

   ,           c
 A20.  ,            
  .               
  -     .

__________________________________________________________________________

                        page 60,132
                TITLE   EXJUMP  (COM)     JMP
0000            CODESG  SEGMENT PARA 'Code'
                        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
0100                    ORG     100H

0100            MAIN    PROC    NEAR
0100  B8 0001           MOV     AX,01           ; AX,
0103  BB 0001           MOV     BX,01           ;              BX,
0106  B9 0001           MOV     CX,01           ;             CX
0109            A20:
0109  05 0001           ADD     AX,01           ; 01  AX
010C  03 D8             ADD     BX,AX           ; 01  BX
010E  D1 E1             SHL     CX,1            ; CX
0110  EB F7             JMP     A20             ;  A20
0112            MAIN    ENDP
0112            CODESG  ENDS
                        END     MAIN
__________________________________________________________________________

     .7.1.   JMP.


            :

               A20:   ADD   AX,01

   :

               A20:
                      ADD   AX,01

         A20            ADD.
   A20     - NEAR. : 
          .           A20
  -9        JMP,          
   - EBF7. EB         
  JMP,   F7  -        (-9).
 JMP  F7     (IP),  p  
   JMP (0112):

                                        . .
                :     274  112
                  JMP:      -9   F7 ( )
                                        ---  ---
                :          265  109

           - .109. 
     ,          
 .109.      JMP  
   .
      JMP      -128    +127      
SHORT.          
 00  FF.  JMP,   ,   FAR, 
                .
           
.  ,  JMP       .   
   JMP         p
(  ):

               A50:
                    ...
                    JMP  A50

    .          
  (  )

                    JMP  A90
                    ...
               A90:

      NEAR  FAR,      3-
 .   ,         
  ,    SHORT:

                    JMP  SHORT A90
                    ...
               A90:

        ,   , 
,          COM-.        
,       
.    DEBUG    COM- 
    .    AX  
08,  BX    CX      .24  (.36)    .80   (.128),
.       Q.


      LOOP
     ________________________________________________________________

      JMP    .7.1   .  
      .  
LOOP,        ,        
  CX.          LOOP      
  CX  1.    CX   ,  
  ,      ,        CX    0,
     LOOP .

__________________________________________________________________________

                         page 60,132
                 TITLE   EXLOOP  (COM)    LOOP
0000             CODESG  SEGMENT PARA 'Code'
                         ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
0100                     ORG     100H

0100             BEGIN   PROC    NEAR
0100  B8 0001            MOV     AX,01      ; AX,
0103  BB 0001            MOV     BX,01      ;              BX,
0106  BA 0001            MOV     DX,01      ;             DX
0109  B9 000A            MOV     CX,10      ; 
010C            A20:
010C  40                 INC     AX         ; 01  AX
010D  03 D8              ADD     BX,AX      ; AX  BX
010F  D1 E2              SHL     DX,1       ; DX
0111  E2 F9              LOOP    A20        ; CX  
                                            ; ,   
0113  C3                 RET                ; 
0114            BEGIN    ENDP
0114            CODESG   ENDS
                         END     BEGIN
__________________________________________________________________________

     .7.2.   LOOP.


        .7.2,        LOOP,
 ,     .7.1     ,
     .   MOV 
 CX  10.     LOOP   CX,  
             1      CX
  DX.    JMP  A20        LOOP      
  ADD AX,01   INC AX ( AX 
1).
       JMP,   LOOP   
  LOOP    A20,    
 .     LOOP          
  -128  +127 .         ,  
   "Relative jump out of range" ( 
).
          LOOP      
 ,   .7.1,     ,
    COM-.     
  DEBUG.       CX    
,  p AX, BX  DX     .  000B,
0042  0400.       Q.
          LOOP -    LOOPE
( LOOPZ)  LOOPNE ( LOOPNZ).        
 CX  1.  LOOPE        ,
  CX           (ZF=1).
 LOOPNE      ,      CX
       (ZF=0).


      
     ________________________________________________________________

            
   .    p    16    ,  
      .  
       ,      
 .         
(   ):

                :    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
               :           *  *  *  *  O  D I T S Z * A * P * C

           .

     CF (Carry Flag) -  .   "" (0 
1)          
    (. .12).

     PF (Parity Flag)  -    .        
p   .       
   0,   -  1.         
  .

     AF  (Auxiliary  Carry  Flag)  -           .
  1,           
   (  3)      .
          
ASCII     .

     ZF (Zero Flag) -  .        
a    .      ,  
       ,    -
      .       ,
,  ,   0  ""  (..  
  ),   e ""  (..      ).
   JE  JZ   .

     SF (SIgn Flag) -  .        
    (  )          p:
   0,      -  1.  
  JG  JL   .

     TF (Trap Flag) -      .        
 ,           
DEBUG.           c,    
       ,  ..      
     .

     IF (Interrupt Flag) -  .       
  ,   - .

     DF (DIrection Flag) -    .      
          .     
         SI    DI,  
   ,    -      
,      (. .11).

     OF (Overflow Flag)  -    .    
, ..     ()      
 .

         :    CMP            
   AF, CF, OF, PF, SF, ZF.  ,    
     .       
   BX  :

                         CMP  BX,00          ; BX  
                         JZ   B50            ;  B50  
                         .    (   )
                         .
               B50:      ...                 ;   BX=0

      BX   ,    CMP    
 ZF   ,    ( )  .
 JZ (,   )    ZF.    
 ZF,    ,    
,    , ..   B50.


       
     ________________________________________________________________

         ,    LOOP    
      CX      :      ,  
   ,     .    ,
             .    
          ,    
            
.  ,           
    .
      LOOP    .7.2        :
        CX,        
:

           LOOP      

                 LOOP A20                 DEC  CX
                                          JNZ  A20

      DEC    JNZ        LOOP:  
  CX  1      A20,   CX 
.   DEC        
  0    1.    JNZ        .  
      LOOP               
,   ,   : DEC  JNZ.
        JMP    LOOP        JNZ  c
        JNZ      A20,  
   .      
 -128  +127 .           
 "Relative jump out of range"  (    
).


                         
                     -------------------------------
              
    .    ,         
         
:   .      
    ;     :
,    .            
  ,        ,    
,   ,  .    
      .
        ,   AX   11000110,  
BX - 00010110. 

                         CMP  AX,BX

   AX    BX.      ,  
  AX ,    -  .


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

          JE/JZ     ,  /                     ZF
          JNE/JNZ   ,   /                ZF
          JA/JNBE   ,  /            ZF,CF
          JAE/JNB   ,    /          CF
          JB/JNAE   ,  /            CF
          JBE/JNA   ,    /          CF,AF

                .
, JB    JNAE              ,  
  JB  ,   JNAE.


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

          JE/JZ     ,  /                     ZF
          JNE/JNZ   ,   /                ZF
          JG/JNLE   ,  /        ZF,SF,OF
          JGE/JNL   ,    /      SF,OF
          JL/JNGE   ,  /        SF,OF
          JLE/JNG   ,    /      ZF,SF,OF

            (JE/JZ)     
 (JNE/JNZ)            
.  /      .


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

          JS        ,    ()       SF
          JNS       ,   ()        SF
          JC        ,    ( JB)   CF
          JNC       ,                      CF
          JO        ,                 OF
          JNO       ,                  OF
          JP/JPE    ,                    PF
          JNP/JP    ,                  PF

                 
  CX  .             p
     .       
 JCXZ      ,          
 CX  .
           .  , 
       ,   , 
  - ,   .      
,           .  
         ,  
    .  ,    JAE    JGE    
,   .


        CALL
     ________________________________________________________________

               o
,   :

               BEGIN     PROC FAR
                    .
                    .
               BEGIN     ENDP

      FAR     ,        
   ,   ENDP    .
  ,  ,          ,
      PROC    ENDP.      
    .7.3.

__________________________________________________________________________

                        -------------------------
                         CODESG  SEGMENT  PARA  
                        +------------------------+
                         BEGIN   PROC     FAR   
                                  .             
                                  .             
                                 CALL     B10   
                                 CALL     C10   
                                 RET            
                         BEGIN   ENDP           
                        +------------------------+
                         B10     PROC     NEAR  
                                  .             
                                  .             
                                 RET            
                         B10     ENDP           
                        +------------------------+
                         C10     PROC     NEAR  
                                  .             
                                  .             
                                 RET            
                         C10     ENDP           
                        +------------------------+
                         CODESG  ENDS           
                                 END      BEGIN 
                        L-------------------------
__________________________________________________________________________

     .7.3.  .


         :

          -  PROC   B10   C10      NEAR  
       ,               
     .       ,  
          NEAR.

          -          
      ENDP    .

          -      BEGIN   :
     CALL B10  CALL C10.         CALL  
        B10        .   
       RET,          
       CALL B10.    CALL      -
               C10,        
         RET.

          -  RET        .
      BEGIN    B10    C10,    
        BEGIN.          BEGIN
       DOS        RET
           DOS.      B10      
        RET,          B10
         C10.      C10    
      RET,     ,   
     C10   .

                   
  .   ,        CALL
  ,     -128  +127 .
          NEAR        
         .    
     CALL    
     RET  .


      
     ________________________________________________________________

                     
,  , -   PUSH       ,
       DOS,    EXE-  .
      o  . ,
 CALL        ,
     CALL,        
  .        RET  
             
   .
      ,  PUSH      
 .   POP         
.          SP  (..  
 )      .      
   RET  CALL   .    ,
       CALL  ,
     - .      
,            .    
       32   .
      PUSH, PUSHF, CALL, INT,  INTO      
   .  POP, POPF, RET  IRET 
 a    .
            EXE-      
  :

     DS  ES:          -      256
(.100)  ,       
.

     CS:      (   ).

     IP: .

     SS:   .

     SP:  ,    .  , 
  32  (64 ),  

                    DW   32 DUP(?)

SP  64,  .40.


        EXE-,     .7.4.
       .

__________________________________________________________________________

                      TITLE   CALLPROC (EXE)  
0000                  STACKSG SEGMENT PARA STACK 'Stack'
0000    20 [ ???? ]           DW      32 DUP(?)
0040                  STACKG  ENDS

0000                  CODESG  SEGMENT PARA 'Code'
0000                  BEGIN   PROC    FAR
                              ASSUME  CS:CODESG,SS:STACKSG
0000  1E                      PUSH    DS
0001  2B C0                   SUB     AX,AX
0003  50                      PUSH    AX
0004  E8 0008 R               CALL    B10     ; B10
                      ;       ...
0007  CB                      RET             ; 
0008                  BEGIN   ENDP
                              ;-------------------------------------
0008                  B10     PROC
0008  E8 000C R               CALL    C10     ; C10
                      ;       ...
000B  C3                      RET             ; 
000C                  B10     ENDP            ;  
                      ;---------------------------------------------
000C                  C10     PROC
                      ;       ...
000C  C3                      RET             ; 
000D                  C10     ENDP            ;  
                      ;---------------------------------------------
000D                  CODESG  ENDS
                              END     BEGIN
__________________________________________________________________________

     .7.4.     .


                 
  .    PUSH   SP  2  
   DS (   049f)      ,
..   4B00+3E.   PUSH    SP 
2     AX (0000)     4B00+3C.  
CALL B10   SP      
 (0007)        4B00+3A.    CALL  C10  
 SP         (000B)  
   4B00+38.
         C10  RET    000B    
(4B00+38),      IP    SP 
2.            
000B   , ..   B10.
      RET     B10      0007    
(4B00+3A),    IP     SP    2.    
      0007   
.   RET     0007      ,
   FAR.
             .  
     DEBUG.   
    0034  003F    SP:

                                                     SP

        :             0040
       PUSH DS  ( 049F)       049F   003E
       PUSH AX  ( 0000)      0000 049F   003C
       CALL B10 ( 0007)     0700 0000 049F   003A
       CALL C10 ( 000B)    0B00 0700 0000 049F   0038
       RET      ( 000B)    0700 0000 049F   003A
       RET      ( 0007)     0000 049F   003C
                                |    |    |    |    |    |
         :       0034 0036 0038 003A 003C 003E

         .  -,    
   ,  0007       0700.
-,   DEBUG            
    ,     IP,    
.


     :   
     ________________________________________________________________

                         
c   ,        ,
            o
  .        p  
           
   .          
 ,           .   .11 
         
     .
      EXE-,    .7.5,   c 
  ,  NAME1,  NAME2,  NAME3.     - 
   NAME1   NAME2      NAME2   
NAME3.          ,    
    MOV    . 
   .

__________________________________________________________________________

        page     65,132
TITLE   EXMOVE   (EXE)   
;------------------------------------------------------
STACKSG SEGMENT  PARA STACK 'Stack'
        DW       32 DUP(?)
STACKSG ENDS
;------------------------------------------------------
DATASG  SEGMENT  PARA 'Data'
NAME1   DB       'ABCDEFGHI'
NAME2   DB       'JKLMNOPQR'
NAME3   DB       'STUVWXYZ*'
DATASG  ENDS
;-------------------------------------------------------
CODESG  SEGMENT PARA 'Code'
BEGIN   PROC    FAR
        ASSUME  CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
        PUSH    DS
        SUB     AX,AX
        PUSH    AX
        MOV     AX,DATASG
        MOV     DS,AX
        MOV     ES,AX
        CALL    B10MOVE         ; JUMP 
        CALL    C10MOVE         ; CALL 
        RET                     ; 
BEGIN   ENDP

;         (JUMP-),
;          :
;       -----------------------------------------
B10MOVE PROC
        LEA     SI,NAME1        ; 
        LEA     DI,NAME2        ; NAME1  NAME2
        MOV     CX,09           ; 9 
B20:
        MOV     AL,[SI]         ;  NAME1
        MOV     [DI],AL         ;  NAME2
        INC     SI              ;   NAME1
        INC     DI              ;   NAME2
        DEC     CX              ;  
        JNZ     B20             ; > 0?  - 
        RET                     ;  = 0, 
B10MOVE ENDP                    ; 

;         (LOOP-),
;         LOOP:
;       -----------------------------------------;
C10MOVE PROC
        LEA     SI,NAME2        ; 
        LEA     DI,NAME3        ; NAME2  NAME3
        MOV     CX,09           ; 9 
C20
        MOV     AL,[SI]         ;  NAME2
        MOV     [DI],AL         ;  NAME3
        INC     DI              ;   NAME2
        INC     SI              ;   NAME3
        LOOP    C20             ; ,
                                ;   ,  
        RET                     ;  = 0, 
C10MOVE ENDP                    ; 
CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .7.5.   .


      BEGIN        
 B10MOVE  C10MOVE.   B10MOVE   
NAME1   NAME2.         ,  
        NAME1    
  ,   ..:

               NAME1:    A  B  C  D  E  F  G  H  I
                         |  |  |  |  |  |  |  |  |
               NAME2:    J  K  L  M  N  O  P  Q  R

    NAME1  NAME2   CX   9, 
 SI  DI        .      LEA
  a  NAME1  NAME2   SI  DI:

               LEA  SI,NAME1  ;  
               LEA  DI,NAME2  ;  NAME1  NAME2

       NAME1      
NAME2        SI    DI.  k    
 MOV ,            
,    c.  , 

               MOV  AL,[SI]

:        SI  (..NAME1)    
    AL.  

               MOV  [DI],AL

:    AL  ,   
DI (.. NAME2).
          SI  DI   
   SH.    CX   , 
    (  B20).     
SI  DI    1,    MOV      
 NAME1+1  NAME2+1.    ,   
  NAME1+8  NAME2+8.
      C10MOVE   B10MOVE    :
     NAME2   NAME3    LOOP
 DEC  JNZ.
     :  ,      .7.5,    
,             DEBUG.
     ,     .
     NAME2  NAME3   D DS:0.


       : AND, OR, XOR, TEST, NOT
     ________________________________________________________________

                  
       .  AND, OR,
XOR    TEST  -        .     
             
 ASCII (..13).            
     ,    CF, OF, PF, SF, ZF.

     AND:       1,    1; 
    - 0.

     OR:           1,    
 1;     0,   - 0.

     XOR:       0,      1,  
  1;     ( - 0   -  1)
  - 0.

     TEST:   AND- ,    .

               
        ,    
   .      AND,  OR    XOR
   :

                              AND       OR        XOR
                              0101      0101      0101
                              0011      0011      0011
                              ----      ----      ----
               :     0001      0111      0110

        , ,  AL  1100
0101,  BH  0101 1100:

     1.        AND  AL,BH     ;  AL 0100 0100
     2.        OR   BH,AL     ;  BH 1101 1101
     3.        XOR  AL,AL     ;  AL 0000 0000
     4.        AND  AL,00     ;  AL 0000 0000
     5.        AND  AL,0FH    ;  AL 0000 0101
     6.        OR   CL,CL     ;  SF  ZF

      3  4      .      5
     AL.    CMP 
 ,    OR   :

     1.        OR   CX,CX     ; CX  
               JZ   ...       ;,  
     2.        OR   CX,CX     ;   CX
               JS   ...       ;,  

      TEST        AND,    
 ,    .    :

     1.        TEST BL,11110000B   ;     BL
               JNZ  ...            ;  ?
     2.        TEST AL,00000001B   ; AL 
               JNZ  ...            ;  ?
     3.        TEST DX,OFFH        ; DX 
               JZ   ...            ;  ?

         NOT  p   
   ,     :    ,  
 - .  , ,  p  AL    1100  0101,  
 NOT AL      0011  1010.      .
 NOT        NEG,        
     ,        
     (. "  "
 .1.).


     :     
     ________________________________________________________________

                
 .  ,     ,  
,           .    
         ,
    (, YES    yes)        
  .     A  Z  .    41
 5A,       a    z    .      61    7A.
 p  ,     0       1
 :

                  :  76543210          :  76543210
                A:  01000001        a:  01100001
                Z:  01011010        z:  01111010

     COM-,    .7.6,        
TITLEX     ,    TITLEX+1.  
  BX  TITLEX+1      
   AH,   TITLEX+1.     
   .61   7A,   AND   5  0:

               AND  AH,11011111B

      ,     ( a   z),    .
            TITLEX,    
 BX        
  .

__________________________________________________________________________

                         TITLE   CASE    (COM) .   
0000                     CODESG  SEGMENT PARA 'CODE'
                                 ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
0001                             ORG     100H
0001  EB 1C 90           BEGIN:  JMP     MAIN
                         ; -------------------------------------------
0003  43 68 61 6E 67 65  TITLEX  DB      'Change to uppercase letters'
      20 74 6F 20 75 70
      70 65 72 63 61 73
      65 20 6C 65 74 74
      65 72 73
                         ; -------------------------------------------
011E                     MAIN    PROC    NEAR
011E  8D 1E 0104 R               LEA     BX,TITLEX+1  ;  .
0122  B9 001F                    MOV     CX,31        ; 
0125                     B20:
0125  8A 27                      MOV     AH,[BX]      ;  TITLEX
0127  80 FC 61                   CMP     AH,61H       ;
012A  72 0A                      JB      B30          ; 
012C  80 FC 7A                   CMP     AH,7AH       ; 
012F  77 05                      JA      B30          ; ?
0131  80 E4 DF                   AND     AH,11011111B ; - 
0134  88 27                      MOV     [BX],AH      ;  TITLEX
0136                     B30:
0136  43                         INC     BX           ; 
0137  E2 EC                      LOOP    B20        ;  31 
0139  C3                         RET
013A                     MAIN    ENDP
013A                     CODESG  ENDS
                                 END     BEGIN
__________________________________________________________________________

     .7.6.     .


         BX    
   .         
SI  DI.


         
     ________________________________________________________________

           ,      
   ,   :

          -    ;
          -       ;
          -    ;
          -     8  ( )  16  ( )
          -   ( )   ( ).

        1         c
,   1     CL.


                               
                             ----------------
               CF      
  .    c:

               SHR  ; ()  
               SHL  ; ()  
               SAR  ;  
               SAL  ;  

          SHR:

               MOV  CL,03          ;    AX:
               MOV  AX,10110111B   ; 10110111
               SHR  AX,1           ; 01011011   ;   1
               SHR  AX,CL          ; 00001011   ;   3

       SHR    AX    1  .
        CF,        
 AX  .   c  
AX    .    CF    1,
1, 0,        AX  .
          SAR:

               MOV  CL,03          ;    AX:
               MOV  AX,10110111B   ; 10110111
               SAR  AX,1           ; 11011011   ;   1
               SAR  AX,CL          ; 11111011   ;   3

      SAR          SHR:    
     .    ,    
    .    
  .
              .    p,
   SHL  SAL .
           ,    -
   2.        ,  
   .     (, 5
  7)        (2     3,    )    
  CF  1.   ,     
2  ,              ,  
      CL  2.
       ,      CF      JC
(,   ).


                         
                      -----------------------------
            ,    
        .     
  :

               ROR  ;  
               ROL  ;  
               RCR  ;    
               RCL  ;    

                     
  ROR:

               MOV  CL,03          ;    BX:
               MOV  BX,10110111B   ; 10110111
               ROR  BX,1           ; 11011011   ;   1
               ROR  BX,CL          ; 01111011   ;   3

        ROR          
    BX      .  
 ROR      .
       RCR  RCL         CF.    
     CF,     CF        
 .
      ,           
  .  ,    32-        
 DX:AX ,   16     DX,     -  
AX.    2    c  :

               SHL  AX,1      ;  
               RCL  DX,1      ;  DX:AX  2

       SHL     AX ,    
     CF.   RCL    
DX           CF.


      
     ________________________________________________________________

            :

          1.        ,      
     .
          2.              
       .  ,         
     p   (        .7.5),    c
           .    
        ,          LOOP.
         ,      
      :

              
            
          

           :

             
            

     :      
                  1
                  1:
                       ,    
                     , 

          3.         ,  
       .     25    (  )
       .
          4.    .    
                   "
     "     .
          5.     ,    
     ,       
                .  (,
      XLAT,   ).
          6.         ,
          .

                
 LEA,   SI   DI,    .  
    ,          
 .


        
     ________________________________________________________________

     -    (,  B20:)    
  NEAR.      .

     -       LOOP    
-128  +127 .          
.  .  01  7F     +1  +127,
 .  FF  80      -1    +128.      
     1    4  ,        
.         
 ( 50 ).

     -        LOOP,        CX
 .   LOOP     ,
     .

     -     ,    
 ,          .  ,    
 ,   ,   MOV,
    .  ,      ,
c             
,   .

     -         
   .

     -      CALL,       
 -  RET.      ,      ,
  ,       ,  
 RET             .
    ,        
   -   COM-.

     -      . :

               MOV  AX,SI
               MOV  AX,[SI]

  MOV    AX   SI.  
  MOV                
    SI.

     -            
,            
   .


       
     ________________________________________________________________

     7.1.        p
JMP, LOOP   ?         
?

     7.2.  JMP   .0624.    ,
 .      JMP: ) 27, ) 6B, ) C6.

     7.3.    12  : 1, 1, 2, 3, 5,
8, 13,... (       
  ).             LOOP.
  ,              DEBUG
 .

     7.4. ,   AX  BX   , a CX
 DX - .    CMP  (  )    
    :

          )   DX ,   CX?
          )   BX ,   AX?
          ) CX  ?
          )   ?
          )   BX   ,   AX?
          )   DX   ,   CX?

     7.5.           
 ?

          a)  ;
          )  ;
          )  ;
          )    ;
          )      .

     7.6.            ,    
.7.4,    BEGIN    RET?

     7.7.         PROC  p  
 FAR    NEAR?

     7.8.       ?

     7.9.  EXE-  A10  B10, B10  C10,  
C10  D10.  ,      DOS,
 ?

     7.10.  ,   BL  11100011     
BOONO    01111001.          BL   
 : ) XOR BL,BOONO; ) AND BL,BOONO; ) OR BL,BOONO; ) XOR
BL,11111111B; ) AND BL,00000000B.

     7.11.    .7.6 : )    
TITLEX  ; )     .

     7.12. ,     DX    10111001  10111001,  
p CL  -  03.        DX    
 : ) SHR DX,1; ) SHR DX,CL; ) SHL DX,CL; ) SHL  DL,1;
) ROR DX,CL; ) ROR DL,CL; ) SAL DH,1.

     7.13.      ,      ,  
  AX  10.

     7.14.    ,          "   
  ",          DX:AX    2.
  : )   4; )   4;  )  
48    DX:AX:BX  2.



 8                               I:  
__________________________________________________________________________

        :       ,  
    .


     
     ________________________________________________________________

             ,      
o           (    )    
        .     
      .  c  
    ,        
          ,         .    ,
           ,    ASCII
.
            INT  ().
         (
 )           .    
              
  .
                 
  INT 10H,       
BIOS.                 
        INT  21H,      
  DOS.  ,         
  ,           
   Return. p DOS INT 21H    
            
BIOS.
            (-, BW),
       .    .  9  10   
       .


      : INT
     ________________________________________________________________

      INT   ,     DOS
 BIOS               
    .    
         .      
          INT
  :

          -      2          
       ;
          -   TF  IF;
          -     2      
     CS  ;
          -      2          
      ;
          -    ;
          -              
          ,   INT.

           .    
             
.
           :  BIOS INT 10H 
 DOS  INT  21H                .  
        INT  10H
  INT 21H.


      
     ________________________________________________________________

              
               .  
, ,  25   (    0    24)    80
 (  0  79).      
    :

          ________________________________________________________
                                 .          . 
                                ______________      ______________
                               
          ________________________________________________________
                  00      00          00      00
                 00      79          00      4F
                       12     39/40        00     27/28
                   24      00          18      00
                  24      79          18      4F
          ________________________________________________________

      INT 10H           
 .        5-    
12- :

               MOV  AH,02     ;   
               MOV  BH,00     ; 0
               MOV  DH,05     ; 05
               MOV  DL,12     ; 12
               INT  10H       ;   BIOS

 02   AH   INT 10H   
 .          DX, 
  ( )   BH (  0).    
 .              
   MOV c  . :

               MOV  DX,050CH  ; 5,  12


      
     ________________________________________________________________

                        
   ("")        
   .    c ,
   .       
                  .
        DX,   07 -
  BH  0600H  AX.        
:

               MOV  AX,0600H  ;AH 06 ()
                              ;AL 00 ( )
               MOV  BH,07     ;  (/)
               MOV  CX,0000   ;  
               MOV  DX,184FH  ;  
               INT  10H       ;   BIOS

      06   AH    INT  10H    
  .     ;  
  ()   .     
        ,   .  184F,   
               
.                    -
,               
 .


        :   DOS
     ________________________________________________________________

               
 ,          
 .    ,     
 DOS,    p        ,
  DOS  2.0.       DOS      
,      DOS      
   .     DOS    
  ,          ,
  .


       :   DOS
     ________________________________________________________________

           DOS      
   ,     AH    09  (
 DOS)        DOS  INT  21H.     
          o  ($),    
 :

               NAMPRMP     DB   ' ?','$'
                           .
                           .
                           MOV  AH,09          ;   
                           LEA  DX,NAMPRMP     ;  .
                           INT  21H            ; DOS

  "$"        c
 (   ),  : ' ?$',   
  DB '$'.    ,    
      "$".    ,            
   ,       
,   "$"    .
      LEA    NAMPRMP   DX  
 DOS   .   NAMPRMP,   DX 
 LEA,  o,       
  DOS    DS  DX (DS:DX).


     :       ASCII
     ________________________________________________________________

       256   ASCII      ,  
    .  .  00   FF        
     ,           ASCII
.  20.
      .8.1  COM-,        
    ASCII.        ;  B10CLR,
C10SET  D10DISP.   B10CLR    ,      C10SET
        00,00.    D10DISP    
  CTR,          00  
 y  1      ,      
.  FF.

__________________________________________________________________________

        page    60,132
TITLE   ALLASC  (COM)    ASCII- 00-FF
CODESC  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG,ES:NOTHING
        ORG     100H
BEGIN:  JMP     SHORT MAIN
CTR     DB      00,'S'

;                :
;               ------------------
MAIN    PROC    NEAR
        CALL    B10CDR          ; 
        CALL    C10SET          ; 
        CALL    D10DISP         ;   
        RET
MAIN    ENDP
;                :
;               --------------
B10CLR  PROC
        MOV     AX,0600H
        MOV     BH,07
        MOV     CX,0000         ;  
        MOV     DX,184FH        ;  
        INT     10H
        RET
B10CLR  ENDP
;                  00,00:
;               -------------------------
C10SET  PROC
        MOV     AN,02
        MOV     BN,00
        MOV     DX,0000
        INT     10H
        RET
C10SET  ENDP
;                  ASCII :
;               -----------------------------
D10DISP PROC
        MOV     CX,256          ;256 
        LEA     DX,CTR          ; 
D20
        MOV     AH,09           ;  
        INT     21H
        INC     CTR             ; 
        LOOP    D20             ; CX,
                                ; ,   
        RET                     ;
D10DISP ENDP

CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .8.1.       ASCII


                     
.08  .0D     c,    
       . :
    (.8.1),    ,    
  COM-.      , ,
:ASCII.COM.
             (.00),
 " " (.01  02)      (.03,
04    05).    07     .   06  
  "",      .08  0D 
.    0D   " "      
().   .0E -      .
  .7F  .
                .   
   ,      
.08  0D.      ,  o  ,  ,
.08 (  )  0D ( ):

                    CMP  CTR,08H        ;  08?
                    JB   D30            ;  - 
                    CMP  CTR,0DH        ; / 0D?
                    JBE  D40            ;  - 
          D30:
                    MOV  AH,40H         ;  < 08
                    ...                 ;              > 0D
                    INT  21H
          D40:
                    INC  CTR


        :   DOS
     ________________________________________________________________

          ,      .  
,   DOS,         c
,  ,        
INT.  -,            
.        ,
    ; ,   
 .  -,        
,            
.
       ,            
 . LABEL      BYTE. 
     .    
,      -  .FF    255.  
    DOS        
.        ,        
 .

          NAMEPAR     LABEL     BYTE           ; :
          MAXLEN      DB        20             ;  
          ACTLEN      DB        ?              ;  
          NAMEFLD     DB        20 DUP (' ')   ;  

           LABEL      ,  
NAMEPAR  MAXLEN       a  .    
MASM                     
   STRUC. ,    ,   
,  ,      ,  
c      .24 " ".
             AH   -
10 (.  0AH),          (NAMEPAR    
)   DX   INT 21H:

               MOV  AH,0AH         ;  
               LEA  DX,NAMEPAR     ;   
               INT  21H            ; DOS

      INT          ,
    ,        c        
  ,          (20    
).          Return.
   (. 0D)      (NAMEFLD   
).  , ,    BROWN (Return),  c
   :

               .:  |20| 5| | R| O| W| N| #|  |  |  |  | ...
               .: |14|05|42|52|4F|57|4E|0D|20|20|20|20| ...

          (ACTLEN      )  
     -  05.    Return      
NAMEFLD +5.  #      ,  
. 0D    .     20
  .0D,       
  19 .


     :    
     ________________________________________________________________

     EXE-,   . 8.2,   , 
             .
     ,    
 Return       .    ,  
   TED SMITH:

          1.   09  2  4, 
          2.     40,  36

      SHR   E10CENT   09  o  ,
     2.     00001001    
00000100.  NEG      +4    -4.    ADD  
 40,    DL       -  36.  
    12   36       
 :

                12:     TED SMITH
                               |   |
               :       36  40

       E10CODE   ,      c
  (07)      :

               MOV  NAMEFLD[BX],07

          BX  ,  
 MOV ,     BX       NAMEFLD,
  07. ,    05  07      
 NAMEFLD+05 (     Return).      
 E10CODE    "$"      07.  
,   F10CENT      ,    p
  .

__________________________________________________________________________

        page    60,132
TITLE   CTRNAME (EXE)       
;--------------------------------------------------------
STSCKSG SEGMENT PARA STACK 'Stack'
        DW      32 DUP(?)
STACKSG ENDS
;--------------------------------------------------------
DATASG  SEGMENT PARA 'Data'
NAMEPAR LABEL   BYTE            ;  :
MAXNLEN DB      20              ; .  
NAMELEN DB      ?               ;   
NAMEFLD DB      20 DUP(' '),'$' ;      
PRIMPT  DB      'Name? ', '$'
DATASG  ENDS
;--------------------------------------------------------
CODESG  SEGMENT PARA 'Code"
BEGIN   PROC    FAR
        ASSUME  CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASC
        PUSH    DS
        SUB     AX,AX
        PUCH    AX
        MOV     AX,DATASC
        MOV     DS,AX
        MOV     ES,AX
        CALL    Q10CLR          ; 
A20LOOP:
        MOV     DX,0000         ;   00,00
        CALL    Q20CURS
        CALL    B10PRMP         ;  
        CALL    D10INPT         ; 
        CALL    Q10CLR          ; 
        CMP     NAMELEN,00      ; ?
        JE      A30             ;  - 
        CALL    E10CODE         ;  
                                ;   '$'
        CALL    F10CENT         ;  
        JMP     A20LOOP
        A30:
                RET             ;  DOS
BEGIN   ENDP
;                 :
;               --------------------
B10PRMP PROC    NEAR
        MUV     AN,09           ;   
        LEA     DX,PROMPT
        INT     21H
        RET
B10PRMP ENDP
;                  :
;               -----------------------
D10INPT PROC    NEAR
        MOV     AN,0AN          ; 
        LEA     DX,NAMEPAR
        INT     21H
        RET
D10INPT ENDP
;                  '$':
;              ------------------------------------
E10CODE PROC   NEAR
        MOV    BN,00           ;  Return (0D)
        MOV    BL,NAMELEN      ;  .  (07)
        MOV    NAMEFLD[BX],07
        MOV    NAMEFLD[BX+1],'$' ; 
        RET
E10CODE ENDP
;                   :
;              ------------------------------------
F10CENT PROC   NEAR
        MOV    DL,NAMELEN       ; :
        SHR    DL,1             ;    2,
        NEG    DL               ;  ,
        ADD    DL,40            ;  40
        MOV    DH,12            ; 
        CALL   Q20CURS          ; 
        MOV    AN,09
        LEA    DX,NAMEFLD       ;   
        INT    21H
        RET
F10CENT ENDP
;               :
;              --------------
Q10CLR  PROC   NEAR
        MOV    AX,0600H         ;  
        MOV    BH,30            ; (07  /)
        MOV    CX,0000          ; 00,00
        MOV    DX,184FH         ; 24,79
        INT    10H              ; BIOS
        RET
Q10CLR
;                (/):
;              ----------------------------------
Q20CURS PROC   NEAR             ;DX  
        MOV    AH,02            ;  
        MOV    BH,00            ; #0
        INT    10H              ; BIOS
        RET
Q20CURS ENDP

CODESG  ENDS
        END    BEGIN
__________________________________________________________________________

     .8.2.    .


                       Return
                   -----------------------------------
         ,           ,
   ,      o
   Return.      ,    
 Return,         y      
   :

                 (.):    |14|00|0D|...

              
Return          .  p  
    .


                            Return
                         -----------------------
                     ,
:   ,   ,   .  
, ,     Return  (.0D)  
  NAMEFLD        (.20).    NAMELEN  
   c      0D.  ,  ,
NAMELEN   05,    0D  NAMEFLD+5.  
    BX      NAMEFLD:

               MOV  BH,00               ;   BX
               MOV  BL,NAMELEN          ;  0005
               MOV  NAMEFLD[BX],20H     ; 0D  

        MOV        (.20)    ,
o    :      NAMEFLD     
 BX, .. NAMEFLD+5.


                            
                         -----------------------
                  
 ,      .    
  :

                            NAMEPAR (.)

          1. BROWN    |14|05|42|52|4F|57|4E|0D|20|20|20| ... |20|
          2. HAMILTON |14|08|48|41|4D|49|4C|54|4F|4E|0D| ... |20|
          3. ADAMS    |14|05|41|44|41|4D|53|0D|4F|4E|0D| ... |20|

      HAMILTON     BROWN. ,    ADAMS
  HAMILTON,     HAMIL.   Return  
 T.    - ON o    ADAMS.    
 NAMEFLD        :

                    MOV  CX,20               ; 20 
                    MOV  SI,0000             ;  
               B30:
                    MOV  NAMEFLD[si],20H     ;  
                    INC  SI                  ;  
                    LOOP B30                 ;20 

       SI   DI   BX.    
  ,           ,
      .  ,          NAMEFLD
    DB  (),           
,   WORD, a      
PTR (),   :

                    MOV  CX,10               ; 10 
                    LEA  SI,NAMEFLD          ; 
               B30:
                    MOV  WORD PTR[SI],2020H  ;  
                    INC  SI                  ; 
                    INC  SI                  ;  
                    LOOP B30                 ;10 

      MOV   B30       
 ,    SI.     p  
 LEA      SI          
 MOV   30,    , , 
:

               MOV  WORD PTR[NAMEFLD],2020H  ;

                 ,  
      .           c
    ,    
.


        :   DOS
     ________________________________________________________________

           ,      DOS  2.0
(      UNIX).      
   DOS,             
.        (file  handle),
 y   BX,     
/.     :

          0     (  ) CON
          1     (  ) CON
          2       ( ) CON
          3    /    AUX
          4       LPT1  PRN

      DOS    /  -  INT  21H,    
   AH: .3F -  , .40 -  .
  CX     /,    DX - 
 /.
             /  
  (CF)     AX      
,   .   o  
CF,    (   6)       AX.  
 AX         ,        ,  
     -     CF,  
          -      .
 o           ,
 o /  .
              - 
 ,      p.


       :   DOS
     ________________________________________________________________

             
 DOS:

               DISAREA   DB   20 DUP(' ')    ; 
                         ...
                         MOV  AH,40H         ;  
                         MOV  BX,01          ; 
                         MOV  CX,20          ;  
                         LEA  DX,DISAREA     ;  
                         INT  21H            ; DOS

      LEA    DX  DISAREA    DOS
 ,   .   
      (  ),     AX
   .      
,    y     .    
   CF    (   6)     AX.
    AX        ,    ,  
     -   CF.


                        :   
                       ----------------------------
         DEBUG        
.   DEBUG        A
100      (  )  p 100.  
,      DEBUG   ,               
 :

               100  MOV  AH,40
               102  MOV  BX,01
               105  MOV  CX,     (   )
               108  MOV  DX,10E
               10B  INT  21
               10D  RET
               10E  DB   ' '

         AH     
.  10F   DX -  DB,       
.
         ,       Return.    
 U (U  100,10D)        .  
  R   T      .    
 INT 21H    BIOS,       
10B   GO (G 10D)     RET.    
  .    Q   DOS.


       :  DOS
     ________________________________________________________________

       ,      
    DOS:

          INAREA    DB   20 DUP (' ')   ; 
                    MOV  AH,3FH         ;  
                    MOV  BX,00          ;  
                    MOV  CX,20          ;   
                    LEA  DX,INAREA      ;  
                    INT  21H            ; DOS

      LEA        INAREA      DX.
 INT ,     c  ,  
         
 CX (20   ).    Return ( .
0D)    .  ,    "PC Users
Group" INAREA  :

               PC Users Group, .0D, .0A

                 
 (.0D),     ,      (.0A),
    .            
           p   
.    c     ,  
       .
                 CF  (  
)    AX        ,    
.           14    2  
         ,  ..  16.    
       .  
        YES  NO,   
     p , , ,  .
         ,        
.       CF    AX  
  (6   ).     AX      
  ,   ,    
  -   CF.
         ,              ,
y   CX,     .  
,   CX  08,      "PC
Exchange".          "PC  Excha"    
         .      AX
   08.   INT     
  ,     ,        
 .   ,        
"ng",       ,   AX  
  05.        
 CF  .

                INT:      PC Excha       AX = 08
                INT:      ng,0D,0A      AX = 05

           ,  )  
 AX   ,       CX    )  
 AX  CX ,        - 0D  
0A.
       DOS    0AH     
  .          
.


                         :  
                        -------------------------
                   c
     DEBUG.    
  12 ,            .
  DEBUG            A 100 
  ,   c  100.   ,   DEBUG
,       .

               100  MOV  AH,3F
               102  MOV  BX,00
               105  MOV  CX,0C
               108  MOV  DX,10F
               10B  INT  21
               10D  JMP  100
               10F  DB   ' '

        AH    BX          c
,       CX      
 DX  10F -  DB     .      
   .
         ,       Return.    
 U 100,108         .
   R    T          MOV.
   10B,  G  10D        INT
(  BIOS   ).          ,
  Return.     AX,  
 CF    D 10F,     .
     Q.


        ,
            
     ________________________________________________________________

                    -
     ,      
:

                      ASCII        

               CR           13                      0DH
               LF           10                      0AH
               TAB          09                      09H

         -    
  ,      DOS. :

          MESSAGE   DB        09,'PC Users Group Annual Report',13,10
                    MOV       AH,40H              ;  
                    MOV       BX,01               ; 
                    MOV       CX,31               ; 
                    LEA       DX,MESSAGE          ; 
                    INT       21H                 ; DOS

       EQU        
 :

     CR             EQU       13                  ; EQU 0DH
     LF             EQU       10                  ; EQU 0AH
     TAB            EQU       09                  ; EQU 09H
     MESSAGE DB     TAB,  'PC Users Group Annual' DB 'Report', CR, LF


        
     ________________________________________________________________

     -  INT 10    BIOS      
   .    INT  21H        DOS  
       -.

     -          ,
 INT 21  INT 21H -      .

     -        A, BX,  CX  
DX   -.

     -   INT  21H        DOS  
- ($)        .  
    -   -. 
       .

     -           DOS      
.      INT  21H  ,      
   ,          
     .

     -                  DOS
   A  40,       BX  -  
 01.

     -               DOS
       3FH,        BX  -
  00.        
    .        ,
    .


       
     ________________________________________________________________

     8.1.        
    2540?

     8.2.         :  
12,  8.

     8.3.     ,   0-  12-
  79-  22- .

     8.4.              
 '  (//)'.     
.    : )    DOS, ) 
  DOS   .

     8.5.              
      8.4.      :  )  
  DOS, )    DOS   .

     8.6.             ,
       .

     8.7.            .8.2      
,  ,     :  )
  12     15;  )        
    0  15.

     8.8.    .8.2     
 DOS.   ,    .




 9                        II:  
__________________________________________________________________________

        :           ,
  ,  ,  ,         
-    .


     
     ________________________________________________________________

      .8            
      .         
   ,             
 -  ,  ,    .
     (  BIOS 10) ,  
  ,           .      
      c-     
     .


                            
                          ---------------------
                       4,
      .  B0000  (  ).     
:

          - 2    (25   80 );
          -  2    -,      ,
     ,    .


                       / 
                      -----------------------------
                 16
  ( ),    .B8000.  
        (    ASCII-)    
     ,      -  (BW)  .
   p ,   0  3
   80 c   0  7      40  .  
   - 0.         
   .


      
     ________________________________________________________________

      ,   ,      
  (  )        
 . -   8 :

                                            

               :         BL  R  G  B    I  R  G  B
                :     7   6  5  4    3  2  1  0

      RGB   ,      (red),
 (green)   (blue)        .    7  (BL)
 ,   3  (I)  -    .    
        ,  
     - (BW).
            o:

                                            
                                                    RGB       RGB
                (  )   000       000
                (  )         000       001
                (  )        000       111
                (  )   111       000

             ;       
            
      .           ,
    , ,    :

                   .      
                        
               0000 0000   00    ( )
               0000 0111   07      ()
               1000 0111   87      ()
               0000 1111   0F      ()
               0111 0000   70      ()
               1111 0000   F0      (. )

          ,   , 
     .      ,   
 .          INT
10H.        BL     -,  
 AH    :  06 ( ),  07  (
),  08  (   ),  09 (   ).
   p ,      ,  
    .       
.00,      .


      BIOS INT 10H
     ________________________________________________________________

      INT 10H    .    
AH  ,   .  c
  BX,  CX,  DX, SI  BP.    
.

     AH=00:  .     
          .     p    
      c   INT  10H.
    .   AL  
:

          00        40  25   -  
          01        40  25    i6-  
          02        80  25   -  
          03        80  25    16-  
          04        320  200  4-  
          05        320  200 -  
          06        640  200 -  
          07        80  25   -  
          08 - 0A      PCjr
          0D        320  200 16-   (EGA)
          0E        640  200 16-   (EGA)
          0F        640  350 -   (EGA)
          10        640  350 64-   (EGA)

     EGA (Enhanced  Graphics  Adapter)  -    
 .        
16-  :

               MOV  AH,00     ;  
               MOV  AL,03     ;   80  25
               INT  10H       ; BIOS

          ,      ,  
 BIOS INT 11H.      AX ,
   5  4   :

               01     40  25   -    
               10     80  25   -    
               11     80  25   -   - 

     ,     ,    p
   AX  INT 11H     .

     AH=01:   .          
 ASCII-.      
  .         INT
.   p    . 
INT 10H,          :    4-0  
 CH    ,   4-0   CL - 
.    p   :  0  13 
  EGA p   0  7    .
             
 :

               MOV  AH,01     ;  
               MOV  CH,00     ;  
               MOV  CL,13     ;  
               INT  10H       ; BIOS

                 
  .            
   , , 04/08, 03/10  ..  
 ,     .   12/13 (
)  6/7 ( )      .

     AH=02:   .     c 
         c    .
    0,      0   3    80
  .           
 AH  02,     BH            DX
   :

               MOV  AH,02          ;  
               MOV  BH,00          ; 0
               MOV  DH,      ;
               MOV  DL,     ;
               INT  10H            ; BIOS

     AH=03:    .    
    (  ),     p  ,
 :

               MOV  AH,03          ;  
               MOV  BH,00          ;  0
               INT  10H            ; BIOS

        DH    ,    DL
-  .    CH       c,    
 CL - .

     AH=04:    .   e 
      p.

     AH=05:   .       
        0    3.      40   25 
  8  ( 0  7),      80    25  -    4
 ( 0  3).

               MOV  AH,05          ;  
               MOV  AL,    ; 
               INT  10H            ; BIOS

     AH=06:   .      
      ,          
.             p  
,      ,     
 .       .
       06     .      
   AL  00          
 ,      .        
 AL        .  
   ,     .   
      :

               MOV  AX,0601H  ;    
               MOV  BH,07     ;: , -
               MOV  CX,0000   ;  00,00
               MOV  DX,184FH  ;  24,79 ( )
               INT  10H       ; BIOS

                     
    AL.   BH     
   , ,     
..     CX   DX        
.      :

          1.    ROW ()  0    
       .
          2.        .
          3. ,             (CMP
     ROW,22).
          4.  ,    ROW (INC ROW)  .
          5.  ,       ,  ROW
      .

     AH=07:   .      
               .
 AH   07,     p  
 06   .

     AH=08:  /    .   
      ,   ,     
    :

               MOV  AH,08     ;   ./.
               MOV  BH,00     ; 0 (  .)
               INT  10H       ; BIOS

     AL  ,     AH  -  
.             .00      
ASCII-.               c,   
    .

     AH=09:  /    .    
          ,
  ..    :

               MOV  AH,09          ; 
               MOV  AL,      ; 
               MOV  BH,    ;  (..)
               MOV  BL,     ;  
               MOV  CX,  ;  
               INT  10H            ; BIOS

  AL         .    
 CX      .    
       .  
   .        
 ""   :

               MOV  AH,09          ; 
               MOV  AL,03H         ; ( )
               MOV  BH,00          ; 0 (. )
               MOV  BL,0F0H        ;, 
               MOV  CX,05          ; 
               INT  10H            ; BIOS

        (      )      
          .      
       , 
   CX  01         AL
    .     CX      
,     LOOP.  ,   
           
( 02).
         BL       
.   7  0,       ,
  7  1,        XOR.

     AH=0A:      .   
  0A  09   ,     0A    
:

               MOV  AH,0AH         ; 
               MOV  AL,      ; 
               MOV  BH,    ;  ( )
               MOV  CX,  ;  
               INT  10H            ; BIOS

             DOS  INT  21H  
.

     AH=0E:        .           
 ,   .       
     AH  .    0E,    p  AL
  ,   (  )    
 BL       -   BH. 
 ( 07H),      (08H),      (0AH)  
  (0DH) ,          .
       ,      
 c,        
.

     AH=0F:    .      
 AL    (. AH=00),  p AH -  
   (20, 40  80),   BH -  .

     AH=13:       (    AT).    
    AT          
    :

               MOV  AH,13H         ;   
               MOV  AL,      ;0, 1, 2  3
               MOV  BH,    ;
               LEA  BP,       ;   ES:BP
               MOV  CX,       ; 
               MOV  DX,       ;  
               INT  10H            ; BIOS

        :
     0 -      ;
     1 -     ;
     2 -  ,      ;
     3 -  ,     .


     : ,   
     ________________________________________________________________

     ,   . 9.1,      
    .          ,
    ,      
40         :

               Name? Francis Bacon      Francis Bacon []
               |                        |
                0                 40

              
ROW (   )    COL  (  
).   INT 10H      .  
   ,      20-  .    
               
.

__________________________________________________________________________

        page     60,132
TITLE   NMSCROLL (EXE) , , 
; -------------------------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
        DW      32 DUP(?)
STACKSG SEGMENT PARA STACK 'Stack'
        DW      32 DUP(?)
STACKG  ENDS
; -------------------------------------------------------
DATASG  SEGMENT PARA  'Data'
NAMEPAR LABEL   BYTE            ;  :
MAXNLEN DB      20              ; .  
ACTNLEN DB      ?               ;   
NAMEFLD DB      20 DUP(' ')     ; 

COL     DB      00
COUNT   DB      ?
PROMPT  DB      'Name? '
ROW     DB      00
DATASG  ENDS
; -------------------------------------------------------
CODESG  SEGMENT PARA  'Code'
BEGIN   PROC    FAR
        ASSUME  CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
        PUSH    DS
        SUB     AX,AX
        PUSH    DS
        MOV     AX,DATASG
        MOV     ES,AX
        MOV     AX,0600H
        CALL    Q10CLR          ; 
A20LOOP:
        MOV     COL,00          ;  0
        CALL    Q20CURS
        CALL    B10PRMP         ;  
        CALL    D10INPT         ;   
        CMP     ACTNLEN,00      ; ? (.. )
        JNE     A30
        MOV     AX,0600H
        CALL    Q10CLR          ; ,   ,
        RET                     ;   
A30:
        CALL    E10NAME         ;   
        JMP     A20LOOP
BEGIN   ENDP
;                 :
;               --------------------
B10PRMP PROC    NEAR
        LEA     SI,PROMPT       ; 
        MOV     COUNT,05
B20:
        MOV     BL,70H          ;
        CALL    F10DISP         ; 
        INC     SI              ;   
        INC     COL             ; 
        CALL    Q20CURS
        DEC     COUNT           ; 
        JNZ     B20             ; n 
        RET
B10PRMP ENDP
;                  :
;               ----------------------
D10INPT PROC    NEAR
        MOV     AN,0AH
        LEA     DX,NAMEPAR
        INT     21H
        RET
D10INPT ENDP
;                    :
;               ----------------------------------
E10NAME PROC    NEAR
        LEA     SI,NAMEFLD      ; 
        MOV     COL,40          ; 
E20:
        CALL    Q20CURS         ; 
        MOV     BL,0FOH         ;  
        CALL    F10DISP         ; 
        INS     SI              ;   
        INS     COL             ;   
        DES     ACTNLEN         ;  
        JNZ     E20             ; n 
        CMP     ROW,20          ;  ?
        JAE     E30             ; 
        INC     ROW
        RET
E30:    MOV     AX,0601H        ;  --
        CALL    Q10CLR          ;  
        RET
E10NAME ENDP
;                  :
;               ----------------------
F10DISP PROC    NEAR            ;BL ()  
        MOV     AN,09           ;   
        MOV     AL,[SI]         ;   
        MOV     BH,00           ; 
        MOV     CX,01           ; 
        INT     10H             ; BIOS
        RET
F10DISP ENDP
;                :
;               --------------
Q10CLR  PROC    NEAR            ;AX   
        MOV     BH,07           ; /
        MOV     CX 0000
        MOV     DX,184FH
        INT     10H             ; BIOS
        RET
Q10CLR  ENDP
;                 (/):
;               ----------------------------------
Q20CURS PROC    NEAR
        MOV     AN,02
        MOV     BH,00
        MOV     DH,ROW
        MOV     DL,COL
        INT     10H
        RET
Q20CURS ENDP
CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .9.1. ,   .


          D10INPT   DOS INT  21H.
   BIOS INT 10H :

          1.          
       .
          2.  INT 10H ( 08)  08   AH  00   BH.
           AL.
          3.   AL    RETURN      
       ,           
     .
          4.   AL    .
          5.   AL   RETURN,   .
          6.        .
          7.     .
          8.    2.

               RETURN, 
 -   .


      ASCII 
     ________________________________________________________________

     ASCII-   128    255  (.  80-FF)      
     , , 
    .  ,    c  
  :

               .          

               DA          
               BF          
               C0          
               D9          
               C4         
               B3         

         INT 10H      
25   :

               MOV  AH,09          ;   
               MOV  AL,0C4H        ; 
               MOV  BH,00          ; 0
               MOV  BL,0FH         ; 
               MOV  CX,25          ;25 
               MOV  10H            ; BIOS

     ,        .      
 ,                 
  .  B3.            
 :

               .          

               B0           ( )
               B1          ( )
               B2           ( )

         ,      
  ,     
   .


       /  DOS
     ________________________________________________________________

             DOS,        
  .       AH  ,  ,
  INT 21H.

     AH=01:            .      
    AL.    AL    ,  
     ASCII-  c,  ,    
.       AL      ,    
     , , ,
F1  PgUp.    - ,   
  (.  "    "      
).      Ctrl/Break.

     AH=02:  .          
            p  DL.  
,        .

     AH=07:       .    
   01     :      
  , ..  ,    o      
Ctrl/Break.

     AH=08:            .     
   01     :      
  , ..  .

     AH=0B:   .    .
FF   AL,     ,       -
00.      01, 07  08,    
 .


          BIOS INT 16H
     ________________________________________________________________

      BIOS  INT  16H      ,    
      AH        
  .

     AH=00:  .      AL o
ASCII ,   ,   -   
AH. (-    ).    
   , ,     F1,        AL
 00.               
.

     AH=01:        .      
   (ZF=0),        ;
      -          AL       AH
      .

     AH=02:       .    
   AL      .417:

     
      7       (Ins)
      6        (Caps Lock) 
      5        (Num Lock) 
      4       (Scroll Lock) 
      3       Alt/Shift
      2       Ctrl/Shift
      1       Shift
      0       Shift


      
     ________________________________________________________________

          :

          1.  (-) :     a    z,
       0  9,  %, $, #  ..
          2.    :  ,  End,      ,
     , Return,  Del,  Ins,  PgUp,  PgDn  -
     .
          3.  : Alt,  Ctrl    Shift,    
        .

          -  ,    
    .      
    -    .
   , ,      
          ,  
  End            .
        
 .
         -  1 (Esc)  83 (Del)  
 .01    .53.      -     
   .  ,     
    00   AH      BIOS  
INT 16H:
               MOV  AH,00     ;   
               INT  16H       ; BIOS

              ,  
   .     (,    A)
      :

          1. ASCII-  A (.41)   AL;
          2. -   A (.1E)   AH.

         (, Ins)    
  :

          1.    AL;
          2. -   Ins (.52)   AH.

      ,     INT  16H    
    AL.   AL  ,    
 ,    ,      .
    :

               MOV  AH,00     ; 
               INT  16H       ; BIOS
               CMP  AL,00     ; ?
               JZ   exit      ;  - 


                                -
                               -----------
      .9.2  -    .
         *, +   -.  
"", ,    .2A    AL  
   -   AH       ,    
  : .09     8   .29  
   PrtSc.
         -  :

               CMP  AL,2AH    ;?
               JNE  EXIT1     ;  - 
               CMP  AH,09H    ; -?
               JE   EXIT2

__________________________________________________________________________

                            -

                  Alt/A - Alt/Z                   1E - 2C
                  F1 - F10                        3B - 44
                  Home                            47
                                      48
                  PgUp                            49
                                      4B
                                     4D
                  End                             4F
                                       50
                  PgDn                            51
                  Ins                             52
                  Del                             53
__________________________________________________________________________

     .9.2. -   


             0   c
0     (- 47):

               MOV  AH,00     ;   
               INT  16H       ;
               CMP  AL,00     ; ?
               JNE  EXIT1     ;  -- 
               CMP  AH,47H    ;-   Home?
               JNE  EXIT2     ;  -- 
               MOV  AH,02     ;
               MOV  BH,00     ; 
               MOV  DX,00     ;   0,0
               INT  10H       ; BIOS

       F1 - F10  -    .3B  
.44.           
F10:
               CMP  AH,44H    ; F10?
               JE   EXIT1     ; !

  EXIT1      .
       -          BASIC.
  IBM PC     -, 
    Alt, Ctrl  Shift.


        
     ________________________________________________________________

     -    4  , 2    
2      .

     -    16            
      -  (BW)  .    ,  
       ASCII-,      
   .

     - -         
    .      ,     
 .              RGB
  ,     .

     -   BIOS  INT  10H        :
 ,   ,  ,  
    .

     -      ,     
 ,      .

     -             ,  
     .

     -     INT  10H,          
,    .

     -    BIOS  INT  16H            
 .

     -           
 .

     -                   -,
  1 (Esc)  83 (Del),   .01  .53.

     -             
 AL  -    AH.

     -               
 AL  -    AH.


       
     ________________________________________________________________

     9.1.     )    ,  )
 , )    .

     9.2.          )         BW
(-)  80 ,  )   ,  
5       12 ,  )  
 10 ,  )           
 (. B1).

     9.3.  -       :  )
 , )  F3, ) Home, ) PgUp.

     9.4.   DEBUG,       
  AX       .    
   A 100 (Return).   :

               MOV  AH,00
               INT  16H
               JMP  100

  U 100,104,      G  104
    MOV    INT.      INT     
          .    
 AH   .      G  104,  ,
  ,   .    
 Q.

     9.5.       :   
 PgDn,       -  24 
 0.




 10                               III:   
__________________________________________________________________________

        :      ,    
     .


     
     ________________________________________________________________

                     
 .            p,
          (    p
  ):

          1.        (
      ),     .
          2.  ,    
      ,      .
        .
          3. RGB-,          
       - ,            
      .    , RGB-  
       .

                 (CGA   -
Color/Graphics Adapter)  16  ,   
.B8000, 8  -    8    .   
  8025        (0-3)  
  4  .     4025   
  (0-7)  2  .     
 (   ).        
                
   .
          (EGA  -  Enhanced  Graphics
Adapter)     ,   
    (CGA)        
  .    320200, 640200 
640350   .
                 :    
(-)  ,     
    .            .
     9    "p  BIOS  INT  10H"
(AH=0).           
  BIOS INT 10H,         
:
               MOV  AH,00  ;       MOV  AH,00  ;
               MOV  AL,03  ;+  MOV  AL,04  ; 
               INT  10H                 INT 10H     ; 


      (-) 
     ________________________________________________________________

               
   .       - (BW)   
     ,          
  .            
 ASCII  (256 ),    - (BW),     
 .           
16       .      
  16 .


                                  
                                 -------
         ,   . 
 ,    ,        ,  
  .         ,  
 16 :

                          I R G B                       I R G B
                    0 0 0 0                  1 0 0 0
                     0 0 0 1        -     1 0 0 1
                   0 0 1 0        -   1 0 1 0
                   0 0 1 1        -   1 0 1 1
                   0 1 0 0        -   1 1 0 0
                 0 1 0 1        - 1 1 0 1
                0 1 1 0                 1 1 1 0
                     0 1 1 0        -     1 1 1 1

                 o
 16 .          .
         ,     .
  ,     .


                               -
                              --------------
                        ,
p  .9.     ,   BL 
 (BLinking),  RGB -  ,    , I
-  :

                                               

               :          BL R  G  B    I  R  G  B
                :     7  6  5  4    3  2  1  0

               .    
  :

                     :  7  6  5  4  3  2  1  0
                                      BL R  G  B  I  R  G  B  .
                       0  0  0  0  0  0  0  0   00
                        0  0  0  0  0  0  0  1   01
                       0  0  0  1  0  1  0  0   14
                     0  0  1  0  0  0  1  1   23
          -    0  1  1  1  1  1  0  1   7D
            ,   1  0  1  0  1  0  0  0   A8

     -         -
(BW) .               
 INT 11H.   BW   07   .
            .
      ,      .
       INT  10H    AH=06,
AH=07  AH=09. ,      -
      :

               MOV  AH,09          ;   
               MOV  AL,'*'         ; 
               MOV  BH,00          ; 0
               MOV  BL,0DAH        ; 
               MOV  CX,05          ; 
               INT  10H            ; BIOS


      
     ________________________________________________________________

              
   -    (pixel).    
 (CGA)    :

          1.    (      ROM)  
      100   160  (..        ).  
            16    ,      
       "".     
       Motorola 6845 CRT.       
     : .3D4  3D5.
          2.                 
      200    320  .          
        (..    ).
          3.      200      640  .
               16    ,   
         - (BW) .   
       8  (..    ).  
         ,  - .

     ,     ROM    
  128 ASCII-.   INT  1FH        1
   ,   128 . (8  
).         ,  
 ,     p.


       
     ________________________________________________________________

                    ,
  0  3:

               :     |C1 C0|C1 C0|C1 C0|C1 C0|
               :     0     1     2     3

             ,    0    3.
  4    ,          4
  : 00, 01, 10  11.  p  00  
  16       01, 10,   11  
   .  p   :

               C1   C0         0       1

               0    0                     
               0    1                 
               1    0                 
               1    1              

            INT 10H.   p,
, ,              0,    
   :  ,  ,      .  ,
  10101010,   .    
  -       1,      :  ,  ,
  .  ,   00011011,   ,
,    .


                    BIOS INT 10H  
                  -------------------------------------
       AH=00    INT  10H      .
 AH=11  INT 10H        
  .    AH  :

     AH=00:  .         AH    04  
p AL     :

               MOV  AH,00     ;  
               MOV  AL,04     ; 320200
               INT  10H

                  
.        9.

     AH=0BH:   .      BH  
  BL:

          BH=00          
     p BL.     1  16  .  o 0
      F;
          BH=01      BL (0
      1):

               MOV  AH,0BH    ;  
               MOV  BH,01     ; 
               MOV  BL,00     ; 0 (, , .)
               INT  10H       ; BIOS

     ,   , ,     
 .         .
      AH=0BH         ,    ,
   0  ,   .

     AH=0CH:    .    0C      AH
             (    ).
,     320200        DX  
 ( 0  199),    CX -   ( 0
 319).   AL    ( 0  3):

               MOV  AH,0CH         ;  
               MOV  AL,        ; 
               MOV  CX,     ; 
               MOV  DX,      ; 
               INT  10H            ; BIOS

     AH=0DH:    .        
      .      DX      
  ( 0  199),    CX -  (
0  319).    AH    0D.   
   AL.


     :      
     ________________________________________________________________

     ,   .10.1,    INT  10H  
  ,            
 (40     320  ).        
   1      .          
    ,          
.

__________________________________________________________________________

TITLE   GRAPHIX (COM)    
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
        ORG     100H

MAIN    PROC    NEAR
        MOV     AN,00           ;  
        MOV     AL,0DH          ;  EGA (CGA=04)
        MOV     AH,0BH          ; 
        MOV     BH,00           ;
        MOV     BL,02           ;
        INT     10H
        MOV     BX,00           ; ,
        MOV     CX,00           ; 
        MOV     DX,00           ;  
A50:
        MOV     AH,0CH          ;  
        MOV     AL,BL           ; 
        INT     10H             ;BX, CX,  DX 
        INC     CX              ; 
        CMP     CX,320          ; 320?
        JNE     A50             ;  - ,
        MOV     CX,00           ;  -  
        INS     BL              ; 
        INS     DX              ; 
        CMP     DX,40           ; 40?
        JNE     A50             ;  - ,
        RET                     ;  - 
MAIN    ENDP
CODESG  ENDS
        END     MAIN
__________________________________________________________________________

     .10.1       .


                .
       DOS MODE (MODE
CO80)     COM  ,          
  INT 10H.


        
     ________________________________________________________________

     -      16            
  ().       
80        40 .

     -      ( 
 ROM),   (  )    (
- ).

     -      (        )
             
    (,   ).

     -            
(CGA)      ,            16
 ,      .


      
    _________________________________________________________________

    10.1.              
  (CGA)   ?

    10.2.        )   
-, )   , )    .

    10.3.      ,      ,
   .

    10.4.               
""    -    .

    10.5.        
) 320200   CGA  ) 640200   EGA.

    10.6.         .

    10.7.       12    13    
 .

    10.8.    .10.1 :  )  
  ; )  ; )   10  30; )   20
 300.



 11                                             
__________________________________________________________________________

        :              ,
    .


     
     ________________________________________________________________

     ,    ,      ,
      .  ,  ,    
    ,      .
,              ,    
    .    
            ,   
.             
 :

MOVS -                  
          ;
LODS -            AL        
           AX;
STOS -       AL  AX  ;
CMPS -        ,      
             ;
SCAS -       AL  AX   .

      REP       .


        
     ________________________________________________________________

                    
p            .  ,
  ""          
    ""       .  
 ,      ( 
    ).  ,     DI  SI 
 :

                                    

               MOVS      DI,SI               MOVSB     MOVSW
               LODS      AL,SI  AX,SI     LODSB     LODSW
               STOS      DI,AL  DI,AX     STOSB     STOSW
               CMPS      SI,DI               CMPSB     CMPSW
               SCAS      DI,AL  DI,AX     SCASB     SCASW

     ,      MOVS,    
 MOVSB  MOVSW.   ,  p DI  SI 
 ,            (
     LEA).    SI      
   - DS:SI.   DI      
  - ES:DI.  ,  MOVS, STOS, CMPS
 SCAS    ES (    DS).


     REP:    
     ________________________________________________________________

       ,        
  ,  REP       
.              ,
, REP MOVSB.     REP  
    CX.          
 REP    1    CX    .
 ,     .
          :

          -         CLD
       DF  0;
          -         STD
       DF  1.

             20      STRING1  
STRING2. ,    DS   ES    
 :

               STRING1   DB   20 DUP('*')
               STRING2   DB   20 DUP(' ')
                         ...
                         CLD                 ;  DF
                         MOV  CX,20          ;  20 
                         LEA  DI,STRING2     ;  ""
                         LEA  SI,STRING1     ;  ""
                         REP MOVSB           ; 

           CMPS    SCAS        
,          
 .       REP    
:

REP -                ,  CX   0;
REPZ  REPE -      ,   ZF  " 
                    ".     ZF,  
                            CX  0;
REPNE  REPNZ -    ,    ZF  " 
                        ".          ZF,
                      "  "   CX  0.

    8086,  80286    80386,        o
,   ,   ,   
   .


     MOVS:  
     ________________________________________________________________

      .7.5           
.            
.  MOVS   REP     CX  
     .
      ,    ,    ,   
p ES,    DI    , 
.      DS,    SI  
 .   ,      
 MOVS    ES    DS,
         DI  SI.
     DF  MOV  S    
   1 ( )   2 ( )  
DI  SI.
      ,    REP MOVSB:

                 JCXZ      LABEL2
     LABEL1:     MOV       AL,[SI]
                 MOV       [DI],AL
                 INC/DEC   DI        ;  
                 UNC/DEC   SI        ;  
                 LOOP      LABEL1
     LABEL2:     ...

        .11.1  C10MVSB      MOVSB
     NAME1   NAME2.  
 CLD        0      
  .         DF    
    CLD   .

__________________________________________________________________________

        page    60,132
TITLE   STRING  (EXE)    
; ---------------------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
        DW      32 DUP(?)
STACKG  ENDS
; ---------------------------------------------------
DATASG  SEGMENT PARA 'Data'
NAME1   DB      'Assemblers'    ; 
NAME2   DB      10 DUP(' ')
NAME3   DB      10 DUP(' ')
DATASG  ENDS
; ---------------------------------------------------
CODESG  SEGMENT PARA 'Code'
BEGIN   PROC    FAR             ; 
        ASSUME  CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
        PUSH    DS
        SUB     AX,AX
        PUSH    AX
        MOV     AX,DATASG
        MOV     DS,AX
        MOV     ES,AX
        CALL    C10MVSB         ; MVSB
        CALL    D10MVSW         ; LODS
        CALL    E10LODS         ; LODS
        CALL    F10STOS         ; CMPS
        CALL    H10SCAS         ; SCAS
        RET
BEGIN   ENDP
;                MOVSB:
;               -------------------
C10MVSB PROC    NEAR
        CLD
        LEA     SI,NAME1
        LEA     D1,NAME2
        MOV     CX,10           ; 10 
        REP MOVSB               ;  NAME1  NAME2
        RET
C10MVSB ENDP
;                MOVSW:
;               -------------------
D10MVSW PROC    NEAR
        CLD
        LEA     SI,NAME2
        LEA     DI,NAME3
        MOV     CX,05           ; 5 
        REP MOVSW               ;  NAME2  NAME3
        RET
D10MVSW ENDP
;                LODSW:
;               -------------------
E10LODS PROC    NEAR
        CLD
        LEA     SI,NAME1        ;  
        LODSW                   ;  NAME1  AX
        RET
E10LODS ENDP
;                STOSW:
;               -------------------
F10STOS PROC    NEAR
        CLD
        LEA     D1,NAME3
        MOV     CX,05
        MOV     AX,2020H        ; 
        REP STOSW               ;  NAME3
        RET
F10STOS ENDP
;                CMPSB:
;               -------------------
G10CMPS PROC    NEAR
        CLD
        MOV     CX,10
        LEA     SI,NAME1
        LEA     DI,NAME2
        REPE CMPSB              ; NAME1  NAME2
        JNE     G20             ; ?
        MOV     BH,01

G20:    MOV     CX,10
        LEA     SI,NAME2
        LEA     DI,NAME3
        REPE CMPSB              ; NAME2  NAME3
        JE      G30             ; ,  
        MOV     BL,02
G30:    RET
G10CMPS ENDP

;                SCASB:
;               -------------------
H10SCAS PROC    NEAR
        CLD
        MOV     CX,10
        LEA     DI,NAME1
        MOV     AL,'m'          ;  'm'
        REPNE SCASB             ;  NAME1
        JNE     H20             ;   - 
        MOV     AH,03
H20:    RET
H10SCAS ENDP

CODES   ENDS
        END     BEGIN
__________________________________________________________________________

     .11.1.   .


       LEA   SI   DI    
NAME1  NAME2  .        DS    ES    
  DATASG,        NAME1    NAME2
      ES:DI    DS:SI.   (COM        
  ES    DS).    MOV        CX
 10 -   NAME1    NAME2.    REP  MOVSB  
:

          -            NAME1  (
     p  ES:DI)            NAME2 (
      DS:SI).
          -   1    DI    SI    
     .
          -  CX  1.
          -    (      10  ),
        CX    .

       DF   ,   MOVSB  
   DI  SI,         
, ..    NAME1+1  NAME2+1  ..      DF
  1,   MOVSB      DI   SI,
    .            SI    DI
     , ..  NAME1+9
 NAME2+9 .
         D10MVSW  (.11.1)           MOVSW,
          .        MOVSW
    DS  SI  2,     
.            SI    
  NAME1+8,   DI - NAME2+8.


     LODS:  
     ________________________________________________________________

      LODS      AL     
AX  .      DS:SI.   
   DF      SI.
        LODS  ,   
  REP    .     MOV  
  LODS,  MOV       ,  
LODS  -    ,          SI.    
  LODS   ,    
 (    ),     
.
     ,   LODSB:

               MOV  AL,[SI]
               INC  SI

      .11.1   E10LODS      
LODSW.       :    
NAME1 ( As)    AL,     -    
AH.     AX   sA.


     STOS:  
     ________________________________________________________________

      STOS  ()   AL   AX  
    .        
ES:DI.       DF    STOS      
    DI  1     2  .
        STOS      REP  -  
   , ,    
.   (    c)    AX.
,   REP STOSB:

                    JCXZ      LABEL2
          LABEL1:   MOV       [DI],AL
                    INC/DEC   DI        ;  
                    LOOP      LABEL1
          LABEL2:   ...

      .11.1   F10STOS      
STOSW.      .  2020  ()      
 NAME3,     AL     ,  
  AH -  .         DI  
 NAME3+10.


     CMPS:  
     ________________________________________________________________

      CMPS        (
 DS:SI)     (   ES:DI).  
   DF    CMPS        
   SI  DI  1     2  .  CMPS
  AF, CF, OF, PF, SF  ZF.      
REP   CX     .  CMPS
      .
          ,      JEAN  
JOAN.       :

               J  :  J        
               E  :  O          (E  O)
               A  :  A        
               N  :  N        

                   N:N    -
p/.     " ",    ,  
    " ".         REP
  REPE,           ,  
  ,    CX    p  .  
    :

               REPE CMPSB

      .11.1   G10CMPS        
 CMPSB.           
NAME1  NAME2.     MOVSB    NAME1
  NAME2,    CMPSB            
    p/:    SF           0
()   ZF - 1().
           NAME2    NAME3.    
STOSW   NAME3 ,      CMPB  
         "/":    SF
  0 ()   ZF - 0 ( ).
          "/"   01 
 BH.       ""  
02   BL.         DEBUG  
,     G10CMPS  BX   
0102.
     !          CMPSB  
     .    CMPSW
      ,    p     CX
 5.    ,   CMPSW    
  . ,   SAMUEL  ARNOLD 
CMPSW   SA  AR  , ..  AS    RA.  
    ""    "",    ..    
.      CMPSW        
 ,    ,   DW, DD
 DQ.


     SCAS:  
     ________________________________________________________________

       SCAS        CMPS  ,       
()        .  
SCAS     ( p ES:DI)  
  AL  AX.       DF 
SCAS        DI   1    
  2  .   SCAS   AF, CF, OF, PF, SF 
ZF.     REP      CX 
SCAS     .
      SCAS  , ,   ,  
   ,        :
,   .
      .11.1  H10SCAS     NAME1    
 "m".     SCASB      ,  
  -  "  "      CX      ,  
  REPNE:

               REPNE SCASB

        NAME1   "Assemblers",     SCASB
  "m"   .       DEBUG
      H10SCAS     
AH  03   ,     "m"  .    REP
SCASB      CX  10  06.
      SCASW            
 AX.     LODSW  MOV    
 AX,  ,       AL,  
 -   AH.     SCAS       
,  o .


       
     ________________________________________________________________

                      
        ,  ,
             .    
         c
STRING     (&)     .    
SCASB   &  (          STRING+8),  
        DI      a
STRING+9.     &     
DI         .

               STRLEN    EQU  15             ;  STRING
               STRING    DB   'The time&is now'
                         ...
                         CLD
                         MOV  AL,'&'         ; 
                         MOV  CX,STRLEN      ;  STRING
                         LEA  DI,STRING      ;  STRING
                         REPNE SCASB         ;
                         JNZ  K20            ; ?
                         DEC  DI             ; -  
                         MOV  BYTE PTR[DI],20H  ; 
               K20:      RET


      
     ________________________________________________________________

          MOVSB    MOVSW    
                
  .    MOVS        
.  ,   FLDA  FLDB     (DB),
 
               REP  MOVS FLDA,FLDB

      FLDB   FLDA.  
      :

               REP  MOVS ES:BYTE PTR[DI],DS:[SI]

   DI  SI  FLDA  FLDB o  
.


      
     ________________________________________________________________

       STOS              
o      .      ,  
      ,        MOVS  
 .  ,      
 :

               ***---***---***---***---***--- . . .

 ,         ,    
     .        
   :

               PATTERN   DB   '***---'
               DISAREA   DB   42 DUP(?)
                         .
                         .
                         CLD
                         MOV  CX,21
                         LEA  DI,DISAREA
                         LEA  SI,PATTERN
                         REP MOVSW

    MOVSW       (**)
  PATTERN     DISAREA,   -    
(*-),   (--):

                    ***---***---
                    |     |
               PATTERN   DISAREA

    DI    DISAREA+6,  p SI -
PATTERN+6,      DISAREA.      MOVSW
  ,          DISAREA  
DISAREA+6,  DISAREA+2,  DISAREA+8,  DISAREA+4  DISAREA+10   ..  
        DISAREA:

                    ***---***---***---***---***--- . . . ***---
                    |           |           |            |
               PATTERN      DISAREA+6   DISAREA+12   DISAREA+42

               
   .     
  .


     :      
     ________________________________________________________________

     COM-,     .11.2,      
,        .        
 :

B10INPT -     30 ,   .
D10SCAS -   SCASB        
          ,   "".
E10RGHT -   MOVSB      
                     .    
          ACTNLEN         
              , :

                               JEROME KERN
                         OSCAR HAMMERSTEIN
                            RICHARD ROGERS

F10CLNM -   STOSW      .

__________________________________________________________________________

        page    60,132
TITLE   EXRING  (COM)  ,  
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
        ORG     100H
BEGIN:  JMP     SHORT MAIN
;--------------------------------------------------------
NAMEPAR LABEL   BYTE            ;  
MAXNLEN DB      31              ;. 
ACTNLEN DB      ?               ;  
NAMEFLD DB      31 DUP(' ')     ;

PROMPT  DB      'Name?', '$'
NAMEDSP DB      31 DUP(' '), 13, 10, '$'
ROW     DB      00
;--------------------------------------------------------
MAIN    PROC    NEAR            ; 
        MOV     AX,0600H
        CALL    Q10SCR          ; 
        SUB     DX,DX           ;   00,00
        CALL    Q20CURS
A10LOOP:
        CALL    B10INPT         ;   
        TEST    ACTNLEN,0FFH    ; ? (.. )
        JZ      A90             ;  - 
        CALL    D10SCAS         ; 
        CMP     AL,'*'          ;?
        JE      A10LOOP         ;  - 
        CALL    E10RGHT         ;  
        CALL    A10LOOP
A90:    RET
MAIN    ENDP
;                   :
;               -----------------------------
B10INPT PROC
        MOV     AH,09
        LEA     DX,PROMPT       ;  
        INT     21H
        RET
B10INPT ENDP
;                  :
;               -----------------------
D10SCAS PROC
        CLD
        MOV     AL,'*'
        MOV     CX,30           ;  - 30
        LEA     DI,NAMEFLD
        REPNE SCASB             ; ?
        JE      D20             ;  - ,
        MOV     AL,20H          ;   *  AL
D20:    RET
D10SCAS ENDP
;                    :
;               ------------------------------------
E10RGHT PROC
        STD
        SUB     CH,CH
        MOV     CL,ACTNLEN      ;  CX  REP
        LEA     SI,NAMEFLD      ;  
        ADD     SI,CX           ; 
        DEC     SI              ;  
        LEA     DI,NAMEDSP+30   ; .  
        REP MOVSB               ;  
        MOV     DH,ROW
        MOV     DL,48
        CALL    Q20CURS         ; 
        MOV     AH,09
        LEA     DX,NAMEDSP      ;   
        INT     21H
        CMP     ROW,20          ;  ?
        JAE     E20             ;  -
        INC     ROW             ;  ,
        JMP     E90
E20:
        MOV     AX,0601H        ;  -
        CALL    Q10SCR          ;  
        MOV     DH,ROW          ;  
        MOV     DL,00
        CALL    Q20CURS
E90:    RET
E10RGHT ENDP
;                 :
;               ----------------------
F10CLNM PROC
        CLD
        MOV     AX,2020H
        MOV     CX,15           ; 15 
        LEA     DI,NAMEDSP
        REP STOSW
        RET
F10CLNM ENDP
;                :
;               ----------------
Q10SCR  PROC                    ;AX   
        MOV     BH,30           ; ( 07  /)
        MOV     CX,00
        MOV     DX,184FH
        INT     10H
        RET
Q10SCR  ENDP
;                 (/):
;               ----------------------------------
Q20CURS PROC                    ;DX   
        MOV     AH,02
        SUB     BH,BH
        INT     10H
        RET
Q20CURS ENDP
CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .11.2.      .


        
     ________________________________________________________________

     -       MOVS,  STOS,  CMPS    SCAS    
  ES.

     -   (CLD)      (STD)     
   .

     -           DI    SI   
.  ,   MOVS   DI,SI,   
CMPS - SI,DI.

     -   CX       
,    .

     -          REP   MOVS 
STOS    (REPE  REPNE)   CMPS  SCAS.

     -        c
   CMPSW  SCASW.

     -             
   .  ,  ,   NAME1 
 10 ,          
  ,   LEA,   NAME1+9. 
       - NAME1+8.


       
     ________________________________________________________________

     11.1.        ) MOVSB, )
LODSB   )  STOSB      REP.     
   ) MOVSW, ) LODSW  ) STOSW   REP.

     11.2.  ,           ,
  .11.1.      ES. 
 MOVSB  MOVSW       .    
H10SCAS    NAME1      "mb".    
DEBUG   ,       
  .

     11.3.   :

               DATASG    SEGMENT   PARA
                         CONAME    DB   'SPACE EXPLORERS INC.'
                         PRLINE    DB   20 DUP(' ')

  , :

     )    CONAME  PRLINE  ;
     )    CONAME  PRLINE  ;
     )       CONAME   AX;
     )    AX     PRLINE+5;
     )     CONAME  PRLINE (   
        );
     )   CONAME   PRLINE,          
        .    ,      BH.

     11.4.   H10SCAS (.11.1) ,  
  NAME1   "er".    ,    
"er"     NAME1     :  /As/se/mb/le/rs/.  
     :

     )   SCASW ,    
          NAME1,   -   NAME1+1;
     )   SCASB    ""   
            "r".

     11.5.  ,  .  03,  04,  05    B4.
   20      .



 12                I:   
__________________________________________________________________________

        :     , ,   
  .


     
     ________________________________________________________________

       ,         (  10),
       (  2).    ,
 ,  16- ,  
  .
                 ,    ,
       .    
             
  .          
      ASCII .


       
     ________________________________________________________________

      ADD  SUB           ,
  .        
    :        
     1,          
 .    ,      ,      
 .
      .12.1     ADD    SUB,  
  .    B10ADD   ADD  
,        C10SUB    SUB    .   
    :

               / -;
               / -;
               / -;
               / -.;
               / -..

__________________________________________________________________________

        page    60,132
TITLE   EXADD   ()   
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
        ORG     100H
BEGIN:  JMP     SHORT MAIN
; --------------------------------------------
BYTEA   DB      64H                ; 
BYTEB   DB      40H
BYTEC   DB      16H
WORDA   DW      4000H
WORDB   DW      2000H
WORDC   DW      1000H
; --------------------------------------------
MAIN    PROC    NEAR               ; :
        CALL    B10ADD             ;  ADD
        CALL    C10SUB             ;  SUB
        RET
MAIN    ENDP
;                 :
;               --------------------
B10ADD  PROC
        MOV     AL,BYTEA
        MOV     BL,BYTEB
        ADD     AL,BL              ;  
        ADD     AL,BYTEC           ;  
        ADD     BYTEA,BL           ;  
        ADD     BL,10H             ;.  
        ADD     BYTEA,25H          ;.  
        RET
B10ADD  ENDP
;                 :
;               ---------------------
C10SUB  PROC
        MOV     AX,WORDA
        MOV     BX,WORDB
        SUB     AX,BX              ;  
        SUB     AX,WORDC           ;  
        SUB     WORDA,BX           ;  
        SUB     BX,1000H           ;.  pe.
        SUB     WORDA,256H         ;.  .
        RET
C10SUB  ENDP
CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .12.1.   ADD  SUB.


           -    ,    
o   .          
 WORDB    WORDA,   DW:

               MOV  AX,WORDA
               ADD  AX,WORDB
               MOV  WORDB,AX


                               
                              --------------
             .      
      , ..    -128    +127.
                 
  .  ,          AL,
    ,             AH.
,   AL  .60,   

               ADD  AL,20H

   AL    -  .80.      
              "".   
      ,     .80      1000  0000  
 . ..  ,  +128,   -128. 
    AL         
 AX.      CBW (Convert  Byte  to  Word  -
    )  .60   AL  .0060
  AX,         (0)      AH.
   ADD          AX    :
.0080,  +128:

               CBW            ; AL  AX
               ADD  AX,20H    ;  AX

          :      15  
,     -32768  +32767.   
   ,   .


                           
                         -----------------------
               +32767   
     .  
     .      -  
,  ,  - ,    .

__________________________________________________________________________

        page    60,132
TITLE   EXDBADD (COM)    
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
        ORG     100H
BEGIN:  JMP     SHORT MAIN
; -------------------------------------------
WORD1A  DW      0123H              ; 
WORD1B  DW      0BC62H
WORD2A  DW      0012H
WORD2B  DW      553AH
WORD3A  DW      ?
WORD3B  DW      ?
; -------------------------------------------
MAIN    PROC    NEAR               ;0 :
        CALL    D10DWD             ;  1
        CALL    E10DWD             ;  2
        RET
MAIN    ENDP
;                  :
;               ----------------------------
D10DWD  PROC
        MOV     AX,WORD1B          ;  
        ADD     AX,WORD2B
        MOV     WORD3B,AX
        MOV     AX,WORD1A          ;  
        ADC     AX,WORD2A          ;  
        MOV     WORD3A,AX
        RET
D10DWD  ENDP
;                 :
;              --------------------------
E10DWD  PROC
        CLC                        ;  
        MOV     CX,2               ; 
        LEA     SI,WORD1B          ;  DWORD1
        LEA     DI,WORD2B          ;  DWORD2
        LEA     BX,WORD3B          ;  
20:
        MOV     AX,[SI]            ;   AX
        ADC     AX,[DI]            ;  
        MOV     [BX],AX            ; 
        DEC     SI
        DEC     SI
        DEC     DI
        DEC     DI
        DEC     BX
        DEC     BX
        LOOP    20                ; 
        RET
E10DWD  ENDP
CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .12.2.   .


      .12.2  D10DWD       
    (WORD1A  WORD1B)        
 (WORD2A  WORD2B)          (WORD3A  
WORD3B).     :

               WORD1B          BC62
               WORD2B          553A
                              -----
               :         1119C

       -  .1119C        AX.  
     1.       
,    ,   ADD   
  ADC (ADd with Carry).      ,  
  CF  ,     1:

               WORD1A         0123
               WORD2A         0012
                      1
                              ----
               :         0136

          DEBUG      
     0136    AX,    p  
3601   WORD3A  9C11   WORD3B.
      .12.2  E10DWD     
  .                  
 .       c,   -
,  .          SI,  DI    BX
  2.    DEC        
.  

               SUB  reg,02

   , ..          ,  
    .
       ,        ADC.
      CLC  (CLear  Carry  -        )
    .      
: 1)   , 2)      
  3)    CX   .
          SBB  (SuBtract  with
Borrow  -      )      ADC.    
 E10DWD (.12.2)  ADC    SBB,      
.


        
     ________________________________________________________________

          , ,  ,  a
.              ,
,  ,  ,   .    
  ,        
.  ,   ,     
  ,   .
                   
 +32767      +65535.    
     .   ADD  SUB    
     ,    
 .         ,  
        .           
   249,   -   
-7:

                                  
               11111001            249            -7
               00000010              2            +2
                                   ---            --
               11111011            251            -5

          
 .  ,   +251     
-5    .    ,           
  .
      ""    ,    p  
 .   ""     ,  
                
         .  
             ,   
 :

                                    CF   OF
               11111100            252            -4
               00000101              5            +5
                                   ---            --
               00000001              1             1    1    0
                              ()

           , 
 :

                                    CF   OF
               01111001            121          +121
               00001011             11           +11
                                   ---          ----
               10000100            132          -124    0    1
                                          ()

                
,  :

                                    CF   OF
               11110110            246           -10
               10001001            137          -119
                                   ---          ----
               01111111            127          +127    1    1
                              ()  ()


     
     ________________________________________________________________

            MUL, 
  - IMUL (Integer  MULtiplication  -      ).
           
      .    
  :

     "             ".           AL,  
          .    
    AX.     p 
,     AH.

                       | AH |   AL   |            |    AX      |
          : |    ||     : ||

     "             ".         AX,  
 -      .      
   ,       :  
()       DX,      ()
   AX.       ,  
   DX.

                       |   AX   |          |   DX   ||   AX   |
           :||   : |.||.|
                                           |      |

          MUL    IMUL    .
  :

               MUL  MULTR

       MULTR    (DB),      
  AL      MULTR.    MULTR
   (DW),      
AX      MULTR.       ,
     ,    :

          MUL  CL  ;-:   AL, .  AX
          MUL  BX  ;-:  AX, .  DX:AX


                     :  MUL
                   ------------------------------------
      MUL (MULtiplication - )    .
 .12.3    C10MUL    :    ,
      .    MUL  .80
(128)  .47 (64).  .2000 (8192)   
AX.

__________________________________________________________________________

        page 60,132
TITLE   EXMULT  (COM)   
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
        OR6     100H
BEGIN:  JMP     SHORT MAIN
; -------------------------------------------
BYTE1   DB      80H
BYTE2   DB      40H
WORD1   DW      8000H
WORD2   DW      4000H
; -------------------------------------------
MAIN    PROC    NEAR               ; :
        CALL    C10MUL             ; . MUL
        CALL    D10IMUL            ; . IMUL
        RET
MAIN    ENDP
;                 MUL:
;               --------------------
C10MUL  PROC
        MOV     AL,BYTE1           ; * 
        MUL     BYTE2              ;   A
        MOV     AX,WORD1           ; * 
        MUL     WORD2              ;   DX:AX
        MOV     AL,BYTE1           ; * 
        SUB     A,A              ; . .  A
        MUL     WORD1              ;   DX:AX
        RET
C10MUL  ENDP
;                 IMUL:
;               ---------------------
D10IMUL PROC
        MOV     AL,BYTE1           ; * 
        IMUL    BYTE2              ;   A
        MOV     AX,WORD1           ; * 
        IMUL    WORD2              ; .  DX:AX
        MOV     AL,BYTE1           ; * 
        CBW                        ; . .  A
        IMUL    WORD1              ; .  DX:AX
        RET
D10IMUL ENDP

CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .12.3.    .


        MUL  .10000000  p DX:AX.
        MUL       
    BYTE1      .        
 ,       AH  .  (
  CBW    p AL      0
 1).  - .00400000    DX:AX.


                      :  IMUL
                    ----------------------------------
       IMUL  (Integer  MULtiplication  -       )
  .   .12.3   D10IMUL   
   ,      C10MUL,     MUL
  IMUL.
        IMUL  .80 ( )  
.40 (  ).    -  .E000    
 AX.       ,    MUL      
.2000,         MUL  IMUL.
 MUL  .80  +128,   IMUL -   -128.  
    -128    +64    -8192      .E000.
(  .000   ).
           IMUL     .8000    (
)    .2000  (   ).        -
.F0000000        DX:AX          
o .
         IMUL        
  BYTE1            AX.         
  ,            CBW  
          AH:  .80    p  AL
  .FF80   AX.      WORD1
     ,        
.    : .00400000   DX:AX -    
,         MUL,    
 .
      ,          
,   MUL   IMUL      .  ,  
       ,      MUL  
  ,   IMUL - .
         ,      DEBUG    
.

                                     :  
    2 (2,4,8   ..)      
       .          1  
     CL.      ,
     AL  AX:

                 2:     SHL  AL,1
                 8:     MOV  CL,3
                                   SHL  AX,CL


                           
                         ------------------------
         : "  "  "    ".
   ,        
 +32767.          
 .        
           .  
    :

                                   1365
                                    12
                                  -----
                                   2730
                                  1365
                                  -----
                                  16380

,           
.    13  65  12 , c :

                            13             65
                           12            12
                           ---            ---
                            26            130
                           13             65
                           ---            ---
                           156            780

     ,        13
 ,       15600:

                                  15600
                                   +780
                                  -----
                                  16380

            
,      ( )  
.

                                            .
 E10XMUL  .12.4      .  ,
MULTCND,      ,      .3206  
.2521.        (DW)   
(DD)             MOV,
       AX.   MULTPLR  .6400.
   ,  PRODUCT,      .  
 MUL  MULTPLR   c  MULTCND;  
- .0E80 E400   PRODUCT+2  PRODUCT+4.    MUL
 MULTPLR     MULTCND,    .
138A 5800.       :

                1:     0000 0E80 E400
                2:     138A 5800
                                   --------------
               :          138A 6680 E400

           ADD      ,    
c      ADC (ADd with Carry). 
           p  8086/8088,
 PRODUCT          8A13  8066
00E4.  ,         PRODUCT  
  0000.

__________________________________________________________________________

TITLE   EXDWMUL -   
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
        ORG     100H
BEGIN:  JMP     SHORT MAIN
; ---------------------------------------------
MULTCND DW      3206H           ; 
        DW      2521H
MULTPLR DW      6400H
        DW      0A26H
PRODUCT DW      0
        DW      0
        DW      0
        DW      0
; ---------------------------------------------
MAIN    PROC    NEAR            ; 
        CALL    E10XMUL         ; 1- 
        CALL    Z10ZERO         ; 
        CALL    F10XMUL         ; 2- 
        RET
MAIN    ENDP
;                   :
; -----------------------------------------------
E10XMUL PROC
        MOV     AX,MULTCND+2    ;  
        MUL     MULTPLR         ; 
        MOV     PRODUCT+4,AX    ; 
        MOV     PRODUCT+2,DX

        MOV     AX,MULTCND      ;  
        MUL     MULTPLR         ; 
        ADD     PRODUCT+2,AX    ;   
        ADC     PRODUCT,DX
        RET
E10XMUL ENDP
;                  :
; --------------------------------------------
F10XMUL PROC
        MOV     AX,MULTCND+2    ;-2 
        MUL     MULTPLR+2       ; * -2 
        MOV     PRODUCT+6,AX    ; 
        MOV     PRODUCT+4,DX

        MOV     AX,MULTCND+2    ;-2 
        MUL     MULTPLR         ; * -1 
        ADD     PRODUCT+4,AX    ;  
        ADC     PRODUCT+6,DX
        ADC     PRODUCT,00      ; 

        MOV     AX,MULTCND      ;-1 
        MUL     MULTPLR+2       ; * -2 
        ADD     PRODUCT+4,AX    ;  
       ADC     PRODUCT+6,DX
        ADC     PRODUCT,00      ; 
        MOV     AX,MULTCND      ;-1 
        MUL     MULTPLR         ; * -1 
        ADD     PRODUCT+2,AX    ;  
        ADC     PRODUCT,DX
        RET
F10XMUL ENDP
;                 :
; ----------------------------------------
Z10XMUL PROC
        MOV     PRODUCT,0000
        MOV     PRODUCT+2,0000
        MOV     PRODUCT+4,0000
        MOV     PRODUCT+6,0000
        RET
Z10XMUL ENDP

CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .12.4.  .


                "                          
    ".        
:

                      

                2        2
                2        1
                1        2
                1        1

    DX   AX      
   .          
 F10XMUL  .12.4.   MULTCND  .3206  2521,
 MULTPLR - .6400 0A26.     PRODUCT,
   .
                 
  ,     ,        
ADD/ADC     ADC,   0  
  PRODUCT.    ,    ADC   
 ,     .  
 ADC  0,   ,      1,    
.    ADD/ADC     ADC,
   PRODUCT         
       .
       138A 687C 8E5C CCE6     PRODUCT
     .         
  DEBUG.


        DX:AX
     ________________________________________________________________

                 
p  DX:AX   .    
,           
(, , )   CX. ,   
      .

                        4 
               MOV  CX,04     ;  4 
          C20: SHL  DX,1      ; DX  1  
               SHL  AX,1      ; AX  1  
               ADC  DX,00     ;  
               LOOP C20       ;
                        4 
               MOV  CX,04     ;  4 
          D20: SHR  AX,1      ; AX  1  
               SHR  DX,1      ; DX  1  
               JNC  D30       ;  ,
               OR   AH,10000000B  ;   1  AH
          D30: LOOP D20       ;

            ,  
 .         CL.
     4 ,       
 :

               MOV  CL,04     ;  
               SHL  DX,CL     ; DX   4 
               MOV  BL,AH     ; AH  BL
               SHL  AX,CL     ; AX   4 
               SHL  BL,CL     ; BL   4 
               OR   DL,BL     ; 4   BL  DL


     
     ________________________________________________________________

             DIV,  a
  - IDIV.       
.     :

            "            ".    
AX,   -       .  
    AH,   -  AL.     
   ( +255 (.FF)     
+127 (.7F)   ),          
.

                        |  AX   |           |  AH   |  AL   |
             : ||    : |||

             "                      ".  
    DX:AX,   -          
.         DX,      
 AX.         +32767
(.FFFF)     +16383 (.7FFF)  .

                   |   DX   ||   AX   |         |  AH   ||  AL   |
        : |.||.|  : ||||
                   |           |

    DIV  IDIV  . 
 :

               DIV  DIVISOR

       DIVISOR    (DB),    
   .    DIVISOR      (DW),  
      .
      , , 13  3,   4  1/3.  
 4,   - 1. ,    (    
 BASIC)       4,333....    
  (4)    (,333).  1/3  333...  
,     1    .


                      :  DIV
                    ----------------------------------
      DIV   .   .12.5    D10DIV
   :   ,   ,   
    .     DIV  .2000  (8092)
 .80 (128).     00       AH,  
 .40 (64) -   AL.
        DIV     BYTE1  
 .       ,    
    AH  .       -
.12    AH,   .05 -   AL.
        DIV   .1000    DX
  .0080   AX.
         DIV     
WORD1      DX.        .0000
   DX,   .0002 -   AX.

__________________________________________________________________________

        page    60,132
TITLE   EXDIV   (COM)   DIV  IDIV
CODESG  SEGMENT PARA 'Code'
        ORG     100H
BEGIN:  JMP     SHORT MAIN
; ---------------------------------------------
BYTE1   DB      80H           ;Data items
BYTE2   DB      16H
WORD1   DW      2000H
WORD2   DW      0010H
WORD3   DW      1000H
; ---------------------------------------------
MAIN    PROC    NEAR          ; 
        CALL    D10DIV        ;  DIV
        CALL    E10IDIV       ;  IDIV
MAIN    ENDP
;                  DIV:
; ---------------------------------------------
D10DIV  PROC
        MOV     AX,WORD1      ; / 
        DIV     BYTE1         ; :  AH:AL
        MOV     AL,BYTE1      ; / 
        SUB     AH,AH         ;    AH
        DIV     BYTE3         ; :  AH:AL

        MOV     DX,WORD2      ;  / 
        MOV     AX,WORD3      ;   DX:AX
        DIV     WORD1         ; :  DX:AX
        MOV     AX,WORD1      ; / 
        SUB     DX,DX         ;    DX
        DIV     WORD3         ; :  DX:AX
        RET
D10DIV  ENDP
;                  IDIV:
; ---------------------------------------------
E10IDIV PROC
        MOV     AX,WORD1      ; / 
        IDIV    BYTE1         ; :  AH:AL
        MOV     AL,BYTE1      ; / 
        CBW                   ;    AH
        IDIV    BYTE3         ; :  AH:AL

        MOV     DX,WORD2      ;  / 
        MOV     AX,WORD3      ;   DX:AX
        IDIV    WORD1         ; :  DX:AX
        MOV     AX,WORD1      ; / 
        CWD                   ;    DX
        IDIV    WORD3         ; :  DX:AX
        RET
E10DIV  ENDP
CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .12.5.    .


                       :  IDIV
                     --------------------------------
      IDIV (Integer DIVide)      .  
.12.5   E10IDIV         ,
    D10DIV,      DIV      IDIV.
     IDIV    .2000  (  )  
.80 ( ).     - . 00  
 AH ,   - .  C0 (-64) -    AL.    DIV,
   ,   +64.
                   
 :

            IDIV                

                      2              EE (-18)       FB (-5)
                      3            1000 (4096)    0080 (128)
                      4            0000           0002

   4    ,       
DIV.  ,        ,
  DIV  IDIV   p.  ,   
        ,        DIV    
 ,     IDIV  -    .  
 ,   DEBUG    .
      .      2 (2, 4, 
..)         .  
  ,      AX:

                 2:       SHR  AX,1

                 8:       MOV  CL,3
                                   SHR  AX,CL


                          
                       ---------------------------
         DIV      IDIV,        
p.   (    , 
   )   .  
 ,        ,    .
     .       1  
,   ,      .
        :    -  ,
     ,      (AH)  :  
 - ,      ,    (DX)
.     ,  1:

           :               

            :                0123        01     (1)23
             :  0001 4026      0001   (1)4026

           .      
  ,     DIV    IDIV
 .      p , 
DIVBYTE -  ,       AX. 
  ,  DIVWORD -  ,  
    DX:AX.

                                

               CMP  AH,DIVBYTE          CMP  DX,DIVWORD
               JNB          JNB  
               DIV  DIVBYTE             DIV  DIVWORD

       IDIV       ,    
,     ,      
 ,     NEG  
    .


                             
                           --------------------
        ,          
 .     ,    
                1.  
,     .   c ,
    AX,   -  BX,  
 CX:

                    SUB  CX,CX     ; 
               C20: CMP  AX,BX     ;  < ,
                    JB   C30       ;  
                    SUB  AX,BX     ;   
                    INC  CX        ; 
                    JMP  C20       ; 
               30: RET            ;  CX,   AX

         CX      ,    AX  -
o.             
.        DX:AX,   
  :

          1.   C20  AX  BX     DX.
          2.   SUB   SBB DX,00.

              :           
  .


      
     ________________________________________________________________

      NEG            
        .       NEG
      1. :

               NEG  AX
               NEG  BL
               NEG  BINAMT    ;(    )

        35- (  )    
 .  ,    DX:AX  32-
 .     NEG        
,        .  
     NOT:

               NOT  DX   ; 
               NOT  AX   ; 
               ADD  AX,1 ; 1  AX
               ADC  DX,0 ;   DX

        :  ,  
 ,       ,    
   .  ,        
,          .    ,      
,     ASCII-.    ASCII-    
  ,         
   .      .


      INTEL 8087  80287    
     ________________________________________________________________

          ,  
      Intel  8087  (  80287).     8087
   8088,     80287      
80286.            
                   ,
   .    
80-        ,      
     10    400  .      
      100    ,      
.
            
    ,             
 .           MASM,
   /E  /R, , MASM /R.


        
     ________________________________________________________________

     -               
p.       -128  +127.

     -           ADC    
   .       ,  
  CLC,     0.

     -     MUL   DIV     
IMUL  IDIV  .

     -           .     
  ,         .   ,
      AH  (  )    DX
( ).

     -              c.
    SHR      SAR
  .       SHL 
SAL.

     -      . , 
  FACTOR        (DB),    MUL FACTOR 
   AL,    DIV FACTOR     
AX.   FACTOR    (DW),    MUL FACTOR 
      AX,      DIV  FACTOR       
  DX:AX.


       
     ________________________________________________________________

           :

               DATAX     DW   0148H
                         DW   2316H
               DATAY     DW   0237H
                         DW   4052H

     12.1.       )    DATAX    
DATAY; )  ,    DATAX,    
 DATAY.

     12.2.    :

               STC
               MOV BX,DATAX
               ADC BX,DATAY

     12.3.      (MUL):  )    DATAX  
 DATAY;  )   ,     DATAX,  
DATAY.

     12.4.  ,  ,   ?

     12.5.     (DIV): )  DATAX  23; )
 ,    DATAX,   DATAY.

     12.6.        "      DX:AX"
         
   .        .



 13                             II:
                                       ASCII  BCD
__________________________________________________________________________

        :  ASCII  BCD          
      .


     
     ________________________________________________________________

                   
a       .      
.12,      ,    
  .            
   ASCII   c  .    
        ASCII.  ,   23 
    00010111  .17;    ASCII 
 c      25  ASCII-  p
 .3235.
        -       
ASCII-          
     ASCII-   
  .  ,      ,  
  p .1 - 12.
          ,    BASIC  
Pascal,            
()    .  ,     
  ()   .     
     ( )   (),
                  
 .


     ASCII-
     ________________________________________________________________

     ,   ,   ASCII-,  ,  
SAM        53414D,   1234 -
.31323334.       ,  , 
   ,     .    
            ,        
.31323334,   .
                         
      ASCII-:

AAA (ASCII Adjust for Addition -    ASCII-)
AAD (ASCII Adjust for Division -    ASCII-)
AAM (ASCII Adjust for Multiplication -    ASCII-)
AAS (ASCII Adjust for Subtraction -    ASCII-)

         
  AX.   ,   ASCII-    
   ,      ,    
     .


                           ASCII-
                        --------------------------
         8  4  ASCII-:

                         .     38
                                   34
                                   --
                         .     6C

         ASCII-,      
.  ,   6   6   .C: .C +
6  =  .12  -             .
   ,          ,
   AAA  .
       , ,   AX  .0038, 
 BX   -   .0034.    38    34        
ASCII-,   .    
 :

               ADD  AL,BL     ; 34  38
               AAA            ;   ASCII-

 AAA   .  (4 )   AL.   
   A  F      AF    1,        AL
  6,        AH    1,    AF      CF
  1.     AAA    0  
.    AL.  -   AX:

                 ADD:  006C
                 AAA:  0102

       ,           ASCII-,
       . :

               OR   AX,3030H  ; 3132

                   .
   ASCII-      ,  
      .   ,  
 .13.1       ASCII-    
.    :

__________________________________________________________________________

TITLE   ASCADD  (COM)    ASCII-
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
        ORG     100H
BEGIN:  JMP     SHORT MAIN
; -----------------------------------------------
ASC1    DB      '578'        ; 
ASC2    DB      '694'
ASC3    DB      '0000'
; -----------------------------------------------
MAIN    PROC    NEAR
        CLC
        LEA     SI,AASC1+2   ; ASCII-
        LEA     DI,AASC2+2
        LEA     BX,AASC1+3
        MOV     CX,03        ; 3 
A20:
        MOV     AH,00        ;  AH
        MOV     AL,[SI]      ; ASCII-
        ADC     AL,[DI]      ; ( )
        AAA                  ;  ASCII
        MOV     [BX],AL      ; 
        DEC     SI
        DEC     DI
        DEC     BX
        LOOP    A20          ; 3 
        MOV     [BX],AH      ; 
        RET
MAIN    ENDP
CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .13.1.   ASCII-.


          -     ADC,      
         ,        
     () .  CLC   CF   .
          -  MOV   AH   ,   
     AAA     .   ADC   p.
     ,      XOR  SUB  o 
     AH   CF.
          -           ,      
      p AH (00  01)    .
          -         01020702.   
       OR   AAA      ,
                CF,    p
      ADC.            
          PUSHF,   OR, ,
     ,     POPF:

               ADC  AL,[DI]   ;  
               AAA            ;  ASCII
               PUSHF          ; 
               OR   AL,30H    ;  
               POPF           ; 
               MOV  [BX],AL   ; 

       PUSHF  POPF    LAHF  (Load  AH
with Flags -      AH)    SAHF  (Store  AH  in  Flag
register -     AH   ).  LAHF
   AH    SF,  ZF,  AF,  PF    CF;      SAHF
      AH      .    
,  ,    AH            
.       ASCII-  -
    OR  .


                          ASCII-
                       ---------------------------
      AAS (ASCII Adjust for Subtraction -     
ASCII-)  a   AAA.    AAS  
 .  ( )   AL.     
A  F   AF  1,     AL  6,    
AH    1,    AF    CF   1.    
 AAS   0  .  p AL.
          ,      ASC1  
.38,   ASC2 - .34:

                1:                  AX      AF

                    MOV  AL,ASC1        ;0038
                    SUB  AL,ASC2        ;0034     0
                    AAS                 ;0004     0


                2:                  AX      AF

                    MOV  AL,ASC2        ;0034
                    SUB  AL,ASC1        ;00FC     1
                    AAS                 ;FF06     1

  1  AAS    .   2, 
     AL  .C,   AAS    6  
 AL  1    AH        1    AF    CF.
 (    -4)  .    FF06,
..    -4.


                          ASCII-
                       ---------------------------
       AAM  (ASCII  Adjust  for  Multiplication  -     
 ASCII-)           
ASCII-     AX.  ,  .      
                   
ASCII-.  (      IBM     
 p  ).  ,    ASCII-
31323334         01020304.  
,   ,       
  ,      o- ; 
     .
      AAM    AL  10 (.0A)  
   AH,     AL.  ,        AL
 .35,     CL - .39.   
    AL      CL        
ASCII-:

                                                            AX:
               AND  CL,0FH    ; CL  09
               AND  AL,0FH    ; AL  05        0005
               MUL  CL        ; AL  CL            002D
               AAM            ;  ..  0405
               OR   AX,3030H  ;  ASCII--    3435

 MUL  45 (.002D)   AX,      
AAM     10,   04   AH   
05   AL.   OR p      
  ASCII-.
       .13.2    
   .     AAM     
  ,             ,   
      .      
  - 0108090105.
         ,     
,      .             
   ASCII-        (.  
 " ASCII-   ").

__________________________________________________________________________

TITLE   ASCMUL  (COM)  ASCII-
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
        ORG     100H
BEGIN:  JMP     MAIN
; ---------------------------------------------
MULTCND DB      '3783'          ; 
MULTPLR DB      '5'
PRODUCT DB      5 DUP(0)
; ---------------------------------------------
MAIN    PROC    NEAR
        MOV     CX,04           ;4 
        LEA     SI,MULTCND+3
        LEA     DI,PRODUCT+4
        AND     MULTPLR,0FH     ; ASCII-
A20:
        MOV     AL,[SI]         ; ASCII-
                                ; ( LODSB)
        AND     AL,OFH          ; ASCII-
        MUL     MULTPLR         ;
        AAM                     ;  ASCII
        ADD     AL,[DI]         ; 
        AAA                     ; 
        MOV     [DI],AL         ; 
        DEC     DI
        MOV     [DI],AH         ; 
        DEC     SI
        LOOP    A20             ; 4 
        RET
MAIN    ENDP
CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .13.2.   ASCII-.


                           ASCII-
                        -------------------------
      AAD  (ASCII  Adjust  for  Division  -     
ASCII-)            ASCII-        
 . ,     
ASCII-     .   AAD
       AX. , 
 AX   3238  ASCII-      CL  
  37   ASCII-.     
  :
                                                            AX:
          AND  CL,0FH    ; CL  ..
          AND  AX,0F0FH  ; AX  ..    0208
          AAD            ;            001C
          DIV  CL        ;  7                    0004

 AAD   AH  10 (.0A),    p
20 (.14)   AL    AH.   001C  .
      28.             
  01  09.
        .13.3        
 .          
  .         AH   AAD
    AL.  p:  00090204 
  AH  02.
         ,        
   ,       
" ASCII-   ."

__________________________________________________________________________

TITLE   ASCDIV  (COM)  ASCII-
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
        ORG     100H
BEGIN:  JMP     SHORT MAIN
; ---------------------------------------------
DIVDND  DB      '3698'          ; 
DIVSOR  DB      '4'
QUOTNT  DB      4 DUP(0)
; ---------------------------------------------
MAIN    PROC    NEAR
        MOV     CX,04           ;4 
        SUB     AH,AH           ;   
        AND     DIVSOR,0FH      ; ASCII 3  
        LEA     SI,DIVDND
        LEA     DI,QUOTNT
A20:
        MOV     AL,[SI]         ; ASCII 
                                ; ( LODSB)
        AND     AL,0FH          ; ASCII 
        AAD                     ;  
        DIV     DIVSOR          ;
        MOV     [DI],AL         ; 
        INC     SI
        INC     DI
        LOOP    A20             ; 4 
        RET
MAIN    ENDP
CODEGS  ENDS
        END     BEGIN
__________________________________________________________________________

     .13.3.   ASCII-.


     -  (BCD)
     ________________________________________________________________

          ASCII-      
00090204.    ,        
,   0924.    - (BCD  -
Binary Coded Decimal) ( ).        
  0  9.  -     
ASCII-.
     , ,     0924      10  ,
    16 (..  .  ),  
.039C.
                  -
 (BCD-).          p
:

DAA  (Decimal Adjustment for Addition -    )
DAS  (Decimal Adjustment for Subtraction - .   .)

                      
.    ,      .13.4,  
       ASCII-    BCD-      .
  B10CONV    ASCII    BCD.        
   ,     .  , 
 ,    ,           
BCD-        ASCII-.     
     ASCII-.
       C10ADD                 BCD-.
  - 127263.

__________________________________________________________________________

TITLE BCDADD () .ASCII  BCD, 
CODESG  SEGMENT PARA "Code"
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
        ORG     100H
BEGIN:  JMP     SHORT MAIN
; -------------------------------------------
ASC1    DB      '057836'
ASC2    DB      '069427'
BCD1    DB      '000'
BCD2    DB      '000'
BCD3    DB      4 DUP(0)
; -------------------------------------------
MAIN    PROC    NEAR
        LEA     SI,ASC1+4          ;  ASC1
        LEA     DI,BCD1+2
        CALL    B10CONV            ; 
        LEA     SI,ASC2+4          ;  ASC2
        LEA     DI,BCD2+2
        CALL    B10CONV            ; 
        CALL    C10ADD             ; 
        RET
MAIN    ENDP
;                ASCII  BCD:
;               --------------------------
B10CONV PROC
        MOV     CL,04              ; 
        MOV     OX,03              ;  20:
        MOV     AX,[SI]            ; ASCII-apy
                                   (  LODSW)
        XCHG    AH,AL
        SHL     AL,CL              ; 
        SHL     AX,CL              ; ASCII-
        MOV     [DI],AH            ; BCD-
        DEC     SI
        DEC     SI
        DEC     DI
        DEC     DX
        JNZ     20
        RET
B10CONV ENDP
;                BCD-:
;               ------------------
C10ADD PROC
       XOR      A,A              ;0 A
       LEA      SI,BCD1+2          ;
       LEA      DI,BCD2+2          ; BCD
       LEA      BX,BCD3+3          ; 
       MOV      CX,03              ; 
       CLC
20:
       MOV      AL,[SI]            ; BCD1 ( LODSB)
       ADC      AL,[DI]            ; BCD2
       DAA                         ; 
       MOV      [BX],AL            ;3  BCD3
       DEC      SI
       DEC      DI
       DEC      BX
       LOOP     20                ; 3 
       RET
C10ADD ENDP

CODESG ENDS
       END      BEGIN
__________________________________________________________________________

     .13.4. BCD-  .


      ASCII-   
     ________________________________________________________________

                ASCII    BCD
         .        
          .
        ASCII-     
 ,    ASCII-   BCD-  ,  ,  
 :
             ,    ASCII-  
 10,           
   2.     :

          1.             ASCII-  
       .
          2.     .  ASCII-.
          3.  ASCII-  1, 10, 100 (.1, A, 64)   ..  
      .

          1234   ASCII-  
 :

                                   

               4  1 =                4              4
               3  10 =              30             1E
               2  100 =            200             C8
               1  1000 =          1000            3E8
               :                         04D2

     ,    .04D2      
1234.    .13.5         B10ASBI    
ASCII- 1234   .    ,    
ASCII-  4      ASCLEN.    
ASCII- ASCVAL-1     SI,      -      BX.
   B20  ASCII-   AL:

               MOV  AL,[SI+BX]

        ASCVAL-1      BX  (4),
..   ASCVAL+3 (    ASCVAL).    
   BX   1,      
  .         
BX,   CX, , ,     LOOP.    
     MULT10  10,     
 1,10,100   ..            ,
,         
SI  DI.

__________________________________________________________________________

TITLE   EXCONV () . ASCII  . -
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
        ORG     100H
BEGIN:  JMP     SHORT MAIN
; -------------------------------------------
ASCVAL  DB      '1234'             ; 
BINVAL  DB      0
ASCLEN  DB      4
MULT10  DB      1
; -------------------------------------------
MAIN    PROC    NEAR               ; :
        CALL    B10ASBI            ;  ASCII
        CALL    C10BIAS            ;  
        RET
MAIN    ENDP
;               -------------------------------
;                ASCII  :
;               -------------------------------
B10ASBI PROC
        MV     CX,10              ; 
        LEA     SI,ASCVAL-1        ; ASCVAL
        MOV     BX,ASCLEN          ; ASCVAL
20:
        MOV     AL,[SI+BX]         ; ASCII-
        AND     AX,000FH           ;  
        MUL     MULT10             ;   10
        ADD     BINVAL,AX          ;  
        MOV     AX,MULT10          ; 
        MUL     CX                 ;  
        MOV     MULT10,AX
        DEC     BX                 ;. ASCII-?
        JNZ     20                ;  - 
        RET
B10ASBI ENDP
;               -------------------
;               . .  ASCII:
;               -------------------
C10BIAS PROC
        MOV     CX,0010            ; 
        LEA     SI,ASCVAL+3        ; ASCVAL
        MOV     AX,BINVAL          ; . 
20:
        CMP     A,0010            ;   10?
        JB      30                ;  - 
        XOR     DX,DX              ;  
        DIV     CX                 ;  10
        OR      DL,30H
        MOV     [SI],DL            ; ASCII-
        OEC     SI
        JMP     20
C30:
        OR      AL,30H             ;3 c. 
        MOV     [SI],AL            ;  ASCII-
        RET
C10BIAS ENDP

CODESG  ENDS
        END    BEGIN
__________________________________________________________________________

     .13.5.  ASCII   .


         ASCII-
     ________________________________________________________________

      ,          
p,      ASCII-.    
           .        
         10 (.0A)   
  10.  ,       0   9,  
    ASCII-.          
.4D2    :

                                   

               4D2 : A        7B             4
                7B : A         C             3
                 C : A         1             2

    1 ,   .A,      .
            ASCII-,
   1234.         
    , .. 31323334.
      .13.5    C10BIAS      .4D2   (
   B10ASBI)  ASCII- 1234.   
 (.13.5)     p    
.


       
     ________________________________________________________________

               
.        12,345,          5    
         :

               :              12,345
                5:                 +5
                                   ------
                :  12,350 = 12,35

         12,3455,      50  
    .   12,34555   500
     :

               12,3455             12,34555
                   +50                 +500
               -------             --------
               12,3505 = 12,35     12,35055 = 12,35

 ,     ,   5000  
             ..        
         ,    12345    
.3039.  5  3039,  303E,    12350
  .   .      
    .181F,  1675 - ..     
    .       ,  
       .      
   10 (.A):

               .303E : .A = 4D3  .1235

 .4D3  ASCII-    1235.    o
       12,35,     
    .
               .  
      5      10,  
   :  50  p  100.  
 :   (5, 50, 500  ..)    
   (10, 100, 1000  ..).
     ,       p.


  :        
  _______________________________________________________________________

     ,   .13.6,       
                 
p   .     
   .    :

B10INPT           .  
              .
D10HOUR         ASCII    
          .
E10RATE        ASCII    
          .
F10MULT    ,    .    
                        
             .       ,
                      
            , , , ,  .
G10WAGE      ,        
            ASCII         
            ASCII-.
K10DISP            
M10ASBI    ASCII    (   
           )           
          .

__________________________________________________________________________

TITLE   SCREMP  (EXE)    ,
                      ;  
; ----------------------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
        DW      32 DUP(?)
STACKSG ENDS
; ----------------------------------------------------
DATASG  SEGMENT PARA 'Data'
HRSPAR  LABLE   BYTE            ;  
                                ;  :
MAXHLEN DB      6               ;---------------------
ACTHLEN DB      ?
HRSFLD  DB      6 DUP(?)

RATEPAR LABLE   BYTE            ;  
                                ;  :
MAXRLEN DB      6               ;---------------------
ACTRLEN DB      ?
RATEFLN DB      6 DUP(?)

MESSG1  DB      'Hours worked? ','$'
MESSG2  DB      'Rate of pay? ','$'
MESSG3  DB      'Wage = '
ASCWAGE DB      10 DUP(30H), 13, 10, '$'
ADJUST  DW      ?
ASCHRS  DB      0
ASCRATE DB      0
BINVAL  DW      00
BINHRS  DW      00
BINRATE DW      00
COL     DB      00
DECIND  DB      00
MULT10  DW      01
NODEC   DW      00
ROW     DB      00
SHIFT   DW      ?
TENWD   DW      10
DATASG  ENDS
; ----------------------------------------------------
CODESG  SEGMENT PARA 'Code'
BEGIN   PROC    FAR
        ASSUME  CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
        PUSH    DS
        SUB     AX,AX
        PUSH    AX
        MOV     AX,DATASG
        MOV     DS,AX
        MOV     ES,AX
        MOV     AX,0600H
        CALL    Q10SCR          ; 
        CALL    Q20CURS         ; 
A20LOOP:
        CALL    B10INPT         ;   
        CMP     ACTHLEN,00      ; ?
        JE      A30
        CALL    D10HOUR         ;  
        CALL    E10RATE         ;  
        CALL    F10MULT         ; 
        CALL    G10WAGE         ;  ASCII
        CALL    K10DISP         ;   
        JMP     A20LOOP
A30:
        MOV     AX,0600H
        CALL    Q10SCR          ; 
        RET                     ;  
BEGIN   ENDP
;                  
; ----------------------------------------------------
B10INPT PROC
        LEA     DX,MESSG1       ;   
        MOV     AH,09
        INT     21H
        LEA     DX,HRSPAR       ; 
        MOV     AH,0AH
        INT     21H
        CMP     ACTHLEN,00      ; ?
        JNE     B20
        RET                     ;  -  A20LOOP
B20:
        MOV     COL,25          ; 
        CALL    Q20CURS
        LEA     DX,MESSG2       ;   
        MOV     AH,09
        INT     21H
        LEA     DX,RATEPAR      ; 
        MOV     AH,0AH
        INT     21H
        RET
B10INPT ENDP
;                :
;               -----------------
D10HOUR PROC
        MOV     NODEC,00
        MOV     CL,ACTHLEN
        SUB     CH,CH
        LEA     SI,HRSFLD-1     ;  
        ADD     SI,CX           ; 
        CALL    M10ASBI         ;  
        MOV     AX,BINVAL
        MOV     BINHRS,AX
        RET
D10HOUR ENDP
;                :
;               ------------------
E10RATE PROC
        MOV     CL,ACTRLEN
        SUB     CH,CH
        LEA     SI,RATEFLD-1    ;  
        ADD     SI.CX           ; 
        CALL    M10ASBI         ;  
        MOV     AX,BINVAL
        MOV     BINRATE,AX
        RET
E10RATE ENDP
;               ,   :
;               -----------------------------
F10MULT PROC
        MOV     CX,05
        LEA     DI,ASCWAGE      ;  
        MOV     AX,3030H        ;   ASCII (30)
        CLD
        REP STOSW
        MOV     SHIFT,10
        MOV     ADJUST,00
        MOV     CX,NODEC
        CMP     CL,06           ;  6 
        JA      F40             ; ,  
        DEC     CX
        DEC     CX
        JLE     F30             ;,   3 
        MOV     NODEC,02
        MOV     AX,01
F20:
        MUL     TENWD           ;  
        LOOP    F20
        MOV     SHIFT,AX
        SHR     AX,1            ; 
        MOV     ADJUST,AX
F30:
        MOV     AX,BINHRS
        MUL     BINRATE         ; 
        ADD     AX,ADJUST       ; 
        ADC     DX,00
        CMP     DX,SHIFT        ;  
        JB      F50             ;   DIV?
F40:
        SUB     AX,AX
        JMP     F70
F50:
        CMP     ADJUST,00       ;  ?
        JZ      F80
        DIV     SHIFT           ; 
F70:    SUB     DX,DX           ; 
F80:    RET
F10MULT ENDP
;                 ASCII :
;               -----------------------------
G10WAGE PROC
        LEA     SI,ASCWAGE+7    ; . 
        MOV     BYTE PTR[SI],'.'
        ADD     SI,NODEC        ;  
G30:
        CMP     BYTE PTR[SI],'.'
        JNE     G35             ;,  ..
        DEC     SI
G35:
        CMP     DX,00           ; dx:ax < 10,
        JNZ     G40
        CMP     AX,0010         ;   
        JB      G50
G40:
        DIV     TENWD           ; - ASCII-
        OR      DL,30H
        MOV     [SI],DL         ; ASCII 
        DEC     SI
        SUB     DX,DX           ; 
        JMP     G30
G50:
        OR      AL,30H          ;  ASCII
        MOV     [SI],AL         ; 
        RET
G10WAGE ENDP
;                 :
;               ---------------------
K10DISP PROC
        MOV     COL,50          ; 
        CALL    Q20CURS
        MOV     CX,09
        LEA     SI,ASCWAGE
K20:                            ;  
        CMP     BYTE PTR[SI],30H
        JNE     K30             ; 
        MOV     BYTE PTR[SI],20H
        INC     SI
        LOOP    K20
K30:
        LEA     DX,MESSG3       ;  
        MOV     AH,09
        INT     21H
        CMP     ROW,20          ;  ?
        JAE     K80
        INC     ROW             ;  -  
        JMP     K90
K80:
        MOV     AX,0601H        ;  --
        CALL    Q10SCR          ;  
        MOV     COL,00          ;  
        CALL    Q20CURS
K90:    RET
K10DISP ENDP
;                ASCII-
;                 :
;               --------------------------
M10ASBI PROC
        MOV     MULT10,0001
        MOV     BINVAL,00
        MOV     DECIND,00
        SUB     BX,BX
M20:
        MOV     AL,[SI]         ;ASCII-
        CMP     AL,'.'          ;,  .
        JNE     M40
        MOV     DECIND,01
        JMP     M90
M40:
        AND     AX,000FH
        MUL     MULT10          ;  
        ADD     BINVAL,AX       ;  .
        MOV     AX,MULT10       ; 
        MUL     TENVD           ;  x 10
        MOV     MULT10,AX
        CMP     DECIND,00       ; ?
        JNZ     M90
        INC     BX              ;  -  
M90:
        DEC     SI
        LOOP    M20
                                ; 
        CMP     DECIND,00       ; .?
        JZ      M100            ;  --
        ADD     NODEC,BX        ;   
M100:   RET
M10ASBI ENDP
;                :
;               ----------------
Q10SCR  PROC    NEAR            ;AX   
        MOV     BH,30           ; (07  /)
        SUB     CX,CX
        MOV     DX,184FH
        INT     10H
        RET
Q10SCR  ENDP
;                :
;               -----------------
Q20CURS PROC    NEAR
        MOV     AH,02
        SUB     BH,BH
        MOV     DH,ROW
        MOV     DL,COL
        INT     10H
        RET
Q20CURS ENDP

CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .13.6.   .


               .    ,  
.13.6, c  ,          
 .    -      , 
        ,    10,  a      
ASCII-    10.        
           
 655350,     .   
          
     .

                    .     ,        
,   ,        
  ,           
.        
 0  9    .     
          .
           
XLAT (. .14).
           : 
,     ,  .


                           
                         ------------------------
                  
.       , ,  12,34-,
   -12,34.           
      .            
,                
 .          
       ASCII .
      ,        ,  
 ,  , ASCII-  ,    
       ,       .12
" ".      IMUL 
IDIV    .        
  ,    5.


        
     ________________________________________________________________

     - ASCII-      .   
   0  9,             
   .       
   .

     -   ASCII-          
 AAA;  ASCII- -     AAS.

     -       ASCII-,    
    " " ,   
     .          
    AAM.

     -    ASCII-,  :  1)  
     " " ,    
    2)          
AAD.

     -       
  ASCII-   .    
     ASCII-:      .30 
.39,       ()  ,  ,  
.


       
     ________________________________________________________________

     13.1. ,   AX  9  ASCII ,   
BX -7   ASCII .       
 :

          )   ADD  AX,33H         )   ADD  AX,BX
               AAA                      AAA
          )   SUB  AX,BX          )   SUB  AX,0DH
               AAS                      AAS

     13.2.  UNPAK  . 01040705     
.  ,      ASCII-,
.. 31343735.

     13.3.  ASCA   313733   ASCII-,    
 ASCB   35.              
ASCII-      ASCPRO.

     13.4.     13.3,    ASCA    ASCB  
    ASCQUO.

     13.5.    : )   ASCII
46328        .; ) 
 .    ASCII-.

     13.6.       ,      
  (INT 12H - .  .2),    
ASCII-        :

                 nnn .



 14                                                   
__________________________________________________________________________

        :         ,  
      .


     
     ________________________________________________________________

            
,  , , , .      
         -  XLAT.    ,
    -              ,
   .
             .
        . 
       .


      
     ________________________________________________________________

                
, ..         (
  ),                    
 .
     ,          -  
,     64-  :

               STACK     DW   64 DUP(?)

                  
:

               MONTAB    DB   'JAN','FEB','MAR', ... ,'DEC'
               COSTAB    DB   205,208,209,212,215,224,...

 MONTAB      ,    COSTAB  -
      .         
  (       ).  
           (
)        (  ),          
()     .  ,      
"Paper"         9  .    ,  
          .        
.

          STOKTBL DB 12,'Computers',14,'Paper....',17,'Diskettes'

      :

               STOKTBL   DB   12,  'Computers'
                         DB   14,  'Paper....'
                         DB   17,  'Diskettes'

                      
.


       
     ________________________________________________________________

     ,        -  03    
       March.  
        
 ,   .     
- September,     :

               MONTBL    DB   'January..'
                         DB   'February.'
                         DB   'March....'

     9  .      'January'  -
MONTBL+0, 'February' - MONTBL+9,  'March'  -  MONTBL+18.    
 03,    :

          1.      ASCII 33    
     03.
          2.     : 03 - 1 = 02
          3.      (9): 02  9 = 18
          4.   (18)     MONTBL;    
         : MONTBL+18.

__________________________________________________________________________

        page    60,132
TITLE   DIRECT  (COM)   
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,ES:CODESG
        ORG     100H
BEGIN:  JMP     SHORT MAIN
; ------------------------------------------------
THREE   DB      3
MONIN   DB      '11'
ALFMON  DB      '???','$'
MONTAB  DB      'JAN','FEB','MAR','APR','MAY','JUN'
        DB      'JUL','AUG','SEP','OKT','NOV','DEC'
; ------------------------------------------------
MAIN    PROC    NEAR            ; 
        CALL    C10CONV         ;  
        CALL    D10LOC          ;   
        CALL    F10DISP         ;   
        RET
MAIN    ENDP
;                ASCII   :
;               --------------------------------------
C10CONV PROC
        MOV     AH,MONIN        ;  
        MOV     AL,MONIN+1
        XOR     AX,3030H        ; ASCII 
        CMP     AH,00           ; 01-09?
        JZ      C20             ;  - 
        SUB     AH,AH           ;  -  AH,
        ADD     AL,10           ;    
C20     RET
C10CONV ENDP
;                  :
;               ---------------------------
D10LOC  PROC
        LEA     SI,MONTAB
        DEC     AL              ;  
        MUL     THREE           ; AL  3
        ADD     SI,AX
        MOV     CX,03           ; 
        CLD
        LEA     DI,ALFMON
        REP MOVSB               ; 3 
        RET
D10LOC  ENDP
;                  .:
;               --------------------------
F10DISP PROC
        LEA     DX,ALFMON
        MOV     AH,09
        INT     21H
        RET
F10DISP ENDP
CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .14.1.   .


      .14.1              
.          
 - .        MONIN.
,           
  ASCII-   MONIN.
                  
.             p
   ,          
 .
          ,   
    .           
,       :  1,
2, 3,...  106, 107, 108,...    5,  10,  15.  ,    
     .        
,   .


      
     ________________________________________________________________

               ,            
.      -         
 , , 134, 138, 141, 239  245.  
      ,    
.               
 .


                        
                    ----------------------------------
             
.  ,  ,      ,      
    ,   .        
   ,      .      
              (,    
,   ).       
    , :

               STOKNOS DB '101','107','109',...
               STOKDCR DB 'Excavators','Processors','Assemblers',...

   , :

               STOKTAB   DB   '101','Excavators'
                         DB   '107','Processors'
                         DB   '109','Assemblers'
                         ...

       .14.2          
 .        .  
              
STOKNIN     .     ,      
       . 
 ,     (A30)          
    DESCRN.
                  
 ,        ,
     .
      ,        ,  
   STOKNIN   AX.   STOKNIN 
 3233,  MOV       AX        
  3332.           
 ,      MOV      XCHG,
            AX,        
,  ..  3233.    CMP,        
,     ,      -  .
,   p    ,      
     .      
         XCHG,      
 MOV, ,   BX       
AX  BX  :

                    MOV  AX,STOKNIN
                    LEA  SI,STOKTAB
               C20:
                    MOV  BX,[SI]
                    CMP  AX,BX
                    JA  JB ...

                 
 .       ,  
   (          
)         .
            .14.2          
 .      o
             .  ,    
     REPE CMPSB,   
   p CX.

__________________________________________________________________________

        page    60,132
TITLE   TABSRCH (COM)  
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,ES:CODESG
        ORG     100H
BEGIN:  JMP     SHORT MAIN
; -----------------------------------------------
STOKNIN DW      '23'
STOKTAB DB      '05','Excavators'
        DB      '08','Lifters   '
        DB      '09','Presses   '
        DB      '12','Valves    '
        DB      '23','Processors'
        DB      '27','Pumps     '
DESCRN  10      DUP(?)
; -----------------------------------------------
MAIN    PROC    NEAR
        MOV     AX,STOKNIN      ;  
        XCHG    AL,AH
        MOV     CX,06           ;   
        LEA     SI,STOKTAB      ;  
A20:
        CMP     AX,[SI]         ; 
        JE      A30             ;  - ,
        ADD     SI,12           ;  -  
        LOOP    A20
        CALL    R10ERR          ;    
        RET
A30:
        MOV     CX,05           ;  
        LEA     DI,DESCRN       ;  
        INC     SI
        INC     SI              ; 
        REP MOVSW               ;  
        RET
MAIN    ENDP
;
R10ERR  PROC
;               <   >
        RET
R10ERR  ENDP

CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .14.2.  


                           
                        -------------------------
                
.   ,    o
,     :

                          -

                     0-1000.00           10               0,00
               1000,01-2500,00           15             050,00
               2500,01-4250,00           18             125,00
               4250,01-6000,00           20             260,00
               6000,01             23             390,00

            
 .       
   :

               TAXTBL    DD   100000,250000,425000,600000,999999

          ,      x
    :

          -    ,    
      ;
          -  ,      .

    :

                     : 100 -  -


                  
            --------------------------------------------------
             ,      
    REPE CMPS.  ,   
  (.14.2)     .  
STOKNIN      ,  STOKTAB - ,  
  c :

          : |123|035Excavators|038Lifters   |049Presses   | ...
                   |   |  |          |  |          |  |
          :  00  03 06         16 19         29 32

    .14.3      STOKTAB,    
 '999'        .    
        STOKNIN:

                STOKNIN    

               035            123       :  .-
               038            123       :  .-
               049            123       :  .-
               102            123       :  .-
               123            123       :  

     ,   CMPSB  .14.3        ,
        p SI  DI.
      CX   03,     
   SI  DI   03  00 .
        (035:123)      
,    SI  04, DI: 01, CX: 02.   
  SI    16,    DI:  00.  
 DI         STOKNIN.  
   ,          SI,
  ,    (,    )  
 .   CX   ,      
,     -  02.          SI
   CX   ,     
 :

                 SI  CMPSB             04
                CX                       02
                        10
                                                  --
                 .  16

        CX       ,      
 (   ),            :
   1, 2  3 .   
,   CX   00,    p SI  
  .

__________________________________________________________________________

        page    60,132
TITLE   TABSRCH (COM)  ,   CMPSB
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,ES:CODESG
        ORG     100H
BEGIN:  JMP     SHORT MAIN
; ----------------------------------------------------
STOKNIN DW      '123'
STOKTAB DB      '035','Excavators'       ; 
        DB      '038','Lifters   '
        DB      '049','Presses   '
        DB      '102','Valves    '
        DB      '123','Processors'
        DB      '127','Pumps     '
        DB      '999', 10 DUP(' ')       ; 
DESCRN  10      DUP(?)
; ----------------------------------------------------
MAIN    PROC    NEAR
        CLD
        LEA     SI,STOKTAB     ;  
A20:
        MOV     CX,03          ;  3 
        LEA     DI,STOKNIN     ;  
        REPE CMPSB             ;
        JE      A30            ;  - ,
        JA      A40            ;  -   
        ADD     SI,CX          ; CX  
        JMP     A20            ;  
A30:
        MOV     CX,05          ; 5 
        LEA     DI,DESCRN      ; 
        REP MOVSV              ;  
        RET
A40:
        CALL    R10ERR         ;    
        RET
MAIN    ENDP

R10ERR  PROC
;               <     >
        RET
R10ERR  ENDP

CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .14.3.      CMPSB


                      
                 ---------------------------------------
      ,      . 
                    
,  ,  .00;            
p .FF.          ,  
       .  ,
           .  
    SCAS.


       XLAT
     ________________________________________________________________

       XLAT                 
  .        XLAT      
     .        
      (IBM)        XLAT  
     ASCII  EBCDIC.
            0  9   
ASCII   EBCDIC.           ASCII    
.30-39,   EBCDIC - .F0-F9,        
OR.  ,      ASCII    
(.40)   EBCDIC.    XLAT     
,     256    ,    
EBCDIC  ASCII :

               XLTBL  DB   47 DUP(40H)    ;   EBCDIC
                      DB   0F0H,0F1H,0F2H,0F3H,...,0F9H  ;0-9 (EBCDIC)
                      DB   199 DUP(40H)   ;   EBCDIC

 XLAT        BX,    
 (,  ASCNO)    AL.      
   :

               LEA  BX,XLTBL
               MOV  AL,ASCNO
               XLAT

 XLAT     AL     
a  , ..      BX        AL.  ,
, ASCNO  00,          XLTBL+00  
 XLAT  00  .40  .     ASCNO  c
.32,          XLTBL+50.  
  .F2 (2   EBCDIC),   XLAT   
 AL.
        .14.4        
(2E)        (2D)      ASCII      EBCDIC  (4B      60
).       
.   ASCNO        31.5  
 ,  .2D33312E3520.     
  EBCNO   .60F3F14BF540.

__________________________________________________________________________

        page    60,132
TITLE   XLATE   (COM)   ASCII   EBCDIC
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,ES:CODESG
        ORG     100H
BEGIN:  JMP     MAIN
; ----------------------------------------------------
ASCNO   DB      '-31.5'
EBCNO   DB      6 DUP(' ')
XLTAB   DB      45 DUP(40H)
        DB      60H, 2DH
        DB      5CH
        DB      0F0H,0F1H,0F2H,0F3H,0F4H
        DB      0F5H,0F6H,0F7H,0F8H,0F9H
        DB      199 DUP(40H)
; ----------------------------------------------------
MAIN    PROC    NEAR           ; 
        LEA     SI,ASCNO       ;  ASCNO
        LEA     DI,EBCNO       ;  EBCNO
        MOV     CX,06          ;
        LEA     BX,XLTAB       ; 
A20:
        MOV     AL,[SI]        ; ASCII 
        XLAT                   ;
        MOV     [DI],AL        ;   EBCNO
        INC     DI
        INC     SI
        LOOP    A20            ; 6 
        RET
MAIN    ENDP
CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .14.4.  ASCII  EBCDIC.


     :  .  ASCII-
     ________________________________________________________________

__________________________________________________________________________

        page    60,132
TITLE   ASCHEX  (COM)  ASCII  .
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,ES:CODESG
        ORG     100H
BEGIN:  JMP     MAIN
; -----------------------------------------------
DISPROW DB      16 DUP('     '), 13
HEXSTR  DB      00
XLATAB  DB      30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
        DB      41H,42H,43H,44H,45H,46H
; -----------------------------------------------
MAIN    PROC    NEAR            ; 
        CALL    Q10CLR          ; 
        LEA     SI,DISPROW
A20LOOP:
        CALL    C10HEX          ;
        CALL    D10DISP         ;    
        CMP     HEXCTR,0FFH     ;  (FF)?
        JE      A50             ;  - 
        INC     HEXCTR          ;  -   
        JMP     A20LOOP
A50:    RET
MAIN    ENDP

C10HEX  PROC    NEAR            ;  .
        MOV     AH,00
        MOV     AL,HEXCTR       ; .
        SHR     AX,CL           ;  .
        LEA     BX,XLATAB       ;  
        MOV     CL,04           ;  
        XLAT                    ;  .
        MOV     [SI],AL         ;  

        MOV     AL,HEXCTR
        SHL     AX,CL           ;  
        XLAT
        MOV     [SI]+1,AL       ;  .
        RET                     ;  
C10HEX  ENDP

D10DISP PROC    NEAR            ;  
        MOV     AL,HEXCTR
        MOV     [SI]+3,AL
        CMP     AL,1AH          ; EOF?
        JE      D20             ;  - 
        CMP     AL,07H          ;/ 08?
        JB      D30             ;  - OK
        CMP     AL,10H          ;/ 0F?
        JAE     D30             ;  - OK
D20:
        MOV     BYTE PTR [SI]+3,20H
D30:
        ADD     SI,05           ;   
        LEA     DI,DISPROW+80
        CMP     DI,SI
        JNE     D40
        MOV     AH,40H          ;   
        MOV     BX,01           ; 
        MOV     CX,81           ; 
        LEA     DX,DISPROW
        INT     21H
        LEA     SI,DISPROW      ;  
D40:    RET
D10DISP ENDP

Q10CLR  PROC    NEAR            ; 
        MOV     AX,0600H
        MOV     BH,03           ; (07  /)
        MOV     CX,0000
        MOV     DX,184FH
        INT     10H
        RET
Q10CLR  ENDP

CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .14.5.  .  ASCII-


     ,   .14.5,        
ASCII-,      .  .  ,  ASCII-  
.53  -   S,        53 S.  
       1616:

               00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
               .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
               .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
               .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
               F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF

          .8.1,   ASCII-, o
  .     .   
ASCII,     . ,      
ASCII  .00,  01   ..    .00  .3030,
.01  .3031  ..
          HEXCTR    00.    
     1.    C10HEX    
HEXCTR   .  . ,   HEXCTR  .4F.
   .   4        
        XLATAB.      AL    
  .34.     .  F
    .46.    o  .3446,
     4F.
        DOS          (.40)  
.1A   ,        .
,       DOS (.09),  
   '$'  .
              .    
ASCII-.       .


     :   
     ________________________________________________________________

                    
      .   ,        
          
    .  ,      
    ,       
.       ,   
 ,      ,    
   .
             ,
  ,        .        ,
   ,        
  .  ,       
  ,              
    .      - 
  ,      .        
   .      ,
      .          
 1  2, 2  3  ..       
,   .      ,  
     ..    1-2,
2-3  ..      ,    
  .
         ,          SWAP    
:    (YES)   (NO):

          G10:      
          G20:    SWAP=NO
                    
          G30:    >  ?
                      :   
                           SWAP=YES
                    
                  ?
                      :   G30
                      :  SWAP=YES?
                           :    G20 ( .)
                           :  

     ,   .14.6,      
30 ,            
  .

__________________________________________________________________________

        page    60,132
TITLE   NMSORT  (EXE)    
; -----------------------------------------------
STACK   SGMENT  PARA STACK 'Stack'
        DW      32 DUP(?)
STACK   ENDS
; -----------------------------------------------
DATASG  SEGMENT PARA 'Data'
NAMEPAR LABEL   BYTE            ;  :
MAXNLEN DB      21              ; . 
NAMELEN DB      ?               ;   
NAMEFLD DB      21 DUP(' ')     ; 

CRLF    DB      13, 10, '$'
ENDADDR DW      ?
MESSG1  DB      'Name?', '$'
NAMECTR DB      00
NAMETAB DB      30 DUP(20 DUP(' ')) ; 
NAMESAV DB      20 DUP(?), 13, 10, '$'
SWAPPED DB      00
DATA    ENDS
; -----------------------------------------------
CODESG  SEGMENT PARA 'Code'
BEGIN   PROC    FAR
        ASSUME CS:CODESG,DS:DATDSG,SS:STACK,ES:DATASG
        PUSH    DS
        SUB     AX,AX
        PUSH    AX
        MOV     AX,DATASG
        MOV     DS,AX
        MOV     ES,AX
        CLD
        LEA     DI,NAMETAB
        CALL    Q10CLR          ; 
        CALL    Q20CURS         ; 
A20LOOP:
        CALL    B10READ         ;   
        CMP     NAMELEN,00      ;   ?
        JZ      A30             ;  -   
        CMP     NAMECTR,30      ; 30 ?
        JE      A30             ;  -   
        CALL    D10STOR         ;   
        JMP     A20LOOP
A30:                            ;  
        CALL    Q10CLR          ; 
        CALL    Q20CURS         ;   
        CMP     NAMECTR,01      ;  2 ?
        JBE     A40             ;  - 
        CALL    G10SORT         ; 
        CALL    K10DISP         ;   
A40:    RET                     ; 
BEGIN   ENDP
;                  ?
;               ----------------------
B10READ PROC
        MOV     AH,09
        LEA     DX,MESSG1       ;  
        INT     21H
        MOV     AH,0AH
        LEA     DX,NAMEPAR      ; 
        INT     21H
        MOV     AH,09
        LEA     DX,CRLF         ; CRLF
        INT     21H

        MOV     BH,00           ;   
        MOV     BL,NAMELEN      ;  
        MOV     CX,21
        SUB     CX,BX           ;  
B20:
        MOV     NAMEFLD[BX],20H ;  
        INC     BX
        LOOP    B20
        RET
B10READ ENDP
;                  :
;               ----------------------
D10STOR PROC
        INC     NAMECTR         ;   
        CLD
        LES     SI,NAMEFLD
        MOV     CX,10
        REP MOVSV               ;   
        RET
D10STOR ENDP
;                  :
;               -------------------------
G10SORT PROC
        SUB     DI,40           ;  
        MOV     ENDADDR,DI
G20:
        MOV     SWAPPED,00      ; 
        LEA     SI,NAMETAB      ; 
G30:
        MOV     CX,20           ; 
        MOV     DI,SI
        ADD     DI,20           ;   
        MOV     AX,DI
        MOV     BX,SI
        REPE CMPSB              ;   
        JBE     G40             ;  
        CALL    H10XCHG         ; 
G40:
        MOV     SI,AX
        CMP     SI,ENDADDR      ; ?
        JBE     G30             ;  - 
        CMP     SWAPPED,00      ; ?
        JNZ     G20             ;  - ,
        RET                     ;  -  
G10SORT ENDP
;                 :
;               ------------------------------
H10XCHG PROC
        MOV     CX,10
        LEA     DI,NAMESAV
        MOV     SI,BX
        REP MOVSW               ;  

        MOV     CX,10
        MOV     DI,BX
        REP MOVSW               ;  
                                ;   
        MOV     CX,10
        LEA     SI,NAMESAV
        REP MOVSW               ; 
                                ;    
        MOV     SWAPPED,01      ; 
        RET
H10XCHG ENDP
;                   :
;               ------------------------------------
K10DISP PROC
        LEA     SI,NAMETAB
K20:
        LEA     DI,NAMESAV      ;  
        MOV     CX,10
        REP MOVSV
        MOV     AH,09
        LEA     DX,NAMESAV
        INT     21H             ;  
        DEC     NAMECTR         ;  ?
        JNZ     K20             ;  -  ,
        RET                     ;  - 
K10DISP ENDP
;                :
;               --------------
Q10CLR  PROC
        MOV     AX,0600H
        MOV     BH,61H          ; (07  /)
        SUB     CX,CX
        MOV     DX,184FH
        INT     10H
        RET
Q10CLR  ENDP
;                :
;               -----------------
Q20CURS PROC
        MOV     AH,02
        SUB     BH,BH
        SUB     DX,DX           ;   00,00
        INT     10H
        RET
Q20CURS ENDP

CODESG  ENDS
        END     BEGIN
__________________________________________________________________________

     .14.6.   


      ,   
     ________________________________________________________________

             ,       
   .  ,     
    (   )
 ,      .        
 TYPE (), LENGTH ()  SIZE ()   
  .
           :

               TABLEX    DW   10 DUP(?) ;  10 

    TYPE        (DW  
  ),    LENGTH      DUP-  (10)  
 SIZE       (10    2  =  20).  
    :

               MOV  AX,TYPE TABLEX      ;AX=0002
               MOV  BX,LENGTH TABLEX    ;BX=000A  (10)
               MOV  CX,SIZE TABLEX      ;CX=0014  (20)

      LENGTH  SIZE        
  .  ,     SI    
    ,      
 :

               CMP  SI,SIZE TABLEX

       23 "     "    
  TYPE, LENGTH  SIZE.


        
     ________________________________________________________________

     -        ,      ,   
      .

     -      . ,  
     ,     . 
     :  ,  ,  
    p,       
 .           
  3,       -  2.   
      ,  ,      2
(SHL          ),      
 . (       -1).

     - ,   DB   ,   256,
  DW     .   CMP  CMPSW
,                     
.

     -         ,      
  ,         .    
         .
           
     .

     -           .
   ,       
   .


       
     ________________________________________________________________

     14.1.  ,     , 
 .

     14.2 ,    1,     
    ,        14.1.     
 .

     14.3     ,  
:
          )  : 06, 10, 14, 21, 24;
          )    :  ,  ,   ,
     , ;
          ) : 93.95, 82.25, 90.67, 85.80, 13.85.

     14.4    ,         
(ITEMIN)   (QTYIN)  .      
14.3,          ITEMIN.
      .      
(   )       .

     14.5      14.3,  :
)          ()  ;  )
      .



 15                                      I: 
__________________________________________________________________________

        :            
  ()      ,             
 .


     
     ________________________________________________________________

                     
  .          
 ()         (),  
  ,         
  .        
    .   c  5
1/4    40  ,  
 00  39.         
512  .
            ,   ,   
  .      ,    
      ,        -  ,  
        ,        
     .     
    .        
      .       o  
.   ,  ,     ,   
  ,      .   
              
:

       ---T---T--------T---T--------T---T-----   ---T---T-----
       #1দ#2দ#3...#n
       L--+---+------L--+---+------L--+---+------   L--+---+------

                      
       .        
   ,    5 1/4" .


      
     ________________________________________________________________

       :

           DOS                           
                                    
                               

           DOS 2.0          40         8         512        327 680
          DOS 2.0       40         9         512        368 640
              80        15         512      1 228 800
          3 1/2"              80         9         512        737 280

       :

                                             
                                    4-
                                     

          10         306         17        512      10 653 696
          20         614         17        512      21.377.024

         (),                
  .         0,  
 -  1.


       ()
     ________________________________________________________________

       ,                ,
  DOS       .
           
 .         
    :

            

               0     0     1         
               0     0     2-3        (FAT)
               0     0     4-7     
               1     0     1-3     
               1     0     4 ...    

              1-  
0-      .   
 0-  1- p,   1-  1- ,   0-
 2-   ..      
           .
     ,     .
        FORMAT /S   ,  
DOS IBMBIO.COM  IBMDOS.COM      .
      ,   512  (    512),    
 .     DOS     p  
 .      ,  ,    
   .     :

                     

0-7        ,    ,      .
                : .00 ,
              ,  .E5 -  , .2E
          -  .
8-10       
11         ,   :
          .00 -  ;
          .01 -    ;
          .02 - "" ;
          .04 -   DOS;
          .08 -  ;
          .10 - ;
          .20 -   (  ).
12-21       DOS.
22-23      ,        ,  
            :

                            ||

24-25          ,    
             :

                           |||

              1980         0  
          119,  -  1  12,   -  1  31.
26-27        .        
           .       (  COM-  DOS)
                  002.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            