
  

        ( .  2.1.2.  ),  
             -  ,    
    .
     ,              
                 ,
    DB  DW:

NUMBER DB 0          -  ,   
                         0   
                        NUMBER;
METKA  DW 1,20h      -   2  ,  
                            METKA  
                            1  20h;
    DB 10   DUP   (?)   -      10    
 ,      
 .

        :

STROKA  DB '    !$'
COMPLEX DW 2 dup ('')

     :

                         MOV METKA,0

      ,      :
    0      0      METKA ?  
  ,    
:
               MOV BYTE PTR METKA,0 -  ;
               MOV WORD PTR METKA,0 -  .

      ,     .
   DWORD  PTR       ,
..  4    .
        :               
     DS. ,
      ,    
   :

                       MOV ES:[4Ch],AX
                       MOV CS:WORD PTR METKA,0

            ,  
 ,   LEA:

    LEA SI,STROKA   -         SI    (  
 DS )  ,   
STROKA

    -       
OFFSET.

                     MOV SI,OFFSET STROKA

                    C 

             8086   
        ,   
  .   2 :

    1) ,      
():

                         MOV CHISLO,0

    2) ,       ,
        :

                     MOV BYTE PTR [SI],0

      :

    3)   ,       
   ,              
                ,
  ,    :

                       MOV [SI+04Ch],0
                       MOV AX,STROKA[BX]

                ,    
-,  -     .   
   .

              

    ,          8086   
  .  
 .

     ADD       
     :

                          ADD AX,10

     SUB       
    :

                   SUB BYTE PTR NUMBER,AL

     AND,  OR,  XOR        
 "", "", "-"     
     :

    AND AX,FFEFh -    AX 4- 
    OR  NUMBER,8001 -   1  0  15  NUMBER
    XOR BYTE PTR STR[SI],1 -  0- 

     NOT         (
) :

                            NOT CX

     CHR    CHL      
     (      ).  
    1  ,          
    1,            -   
CL.,        CL 
     ,      
.

    CHR AX,1 - c  AX  1  ;

    MOV CL,3
    CHL BYTE PTR NUMBER,CL -    
                               NUMBER  3 
                             .

       DIV    MUL    
16-,    32-  . 
         ( 16-
 )    {DX,AX}  (32-  ).
    . 
     :

    1) MUL  CH  -      8-.,  
  AL,    CH, 
  .

    2) MUL  BP  -   16-.,  
  ,    , 
   DX ( c  )   (  ).

    3) DIV  BL  -      8-.,  
  ,        BL,  
  AL,    -  .

    4) DIV  1234H-   16-., 
    {DX,AX},      32-
,    01234,     AX,  
DX.

,          
   .   
        
  8087,      
  .

                     

          IP
/            CS,           
            
.     
   MOV  ..    
            (  
 ).    :  
.     ,   
   , , PASCAL:

    GOTO <>; -  ;
    IF <> THEN GOTO <>; -   ;

          
 JMP:

    1)  -     IP;
    2)  -     CS:IP;
    3)    -      
         IP,        
         128    .

            
  (        ),  
,    :

    JMP NEWMET  -    NEWMET;

    MOV AX,100H
    JMP AX      -   ,   , ..
                    100.

      ,        
      .    
          JMP.
             
  .    
       :

                           DB 0EAH
                   NEWOFS  DW ?
                   NEWSEG  DW ?

                 ,
       NEWSWG,   
        NEWOFS,  ..     
               JMP
NEWSEG:NEWOFS. :

                      DB  0EAH
               NEWOFS DW  0FFF0H
               NEWSEG DW  0F000H

    ,     F000H:0FFF0H      BIOS 
      ,            
         ,
   RESET   .

         .
               
        .,  
 CARRY  1,  

                           JC METKA

        ,    
   . ,    
             
 ?
    -,   ,   
    ( . . 2.1.1. ):

                 1     0
    ----------------------------------------------------------
    CARRY                STC                    CLC
    DIRECTION            STD                    CLD
    INTERRUPT            STI                    CLI

    -,             
     .,  
 -        0,  
   1  ZERO (   0 )
 .
    -,          ,
               ,   
          .
 CMP  TEST.
     CMP    (    SUB  )      
 ,      . TST
   (  AND )   , 
   .    
      
 .   :

    JE  JZ   -   ;
    JA          -   ;
    JB  JC   -    (  CARRY=1 );
    JNE  JNZ -   .

         .,  JAE - 
   ,  JP - ,    
    ..
     ,       
    -.,    JB
   JC  JNAE.
    :

                           CMP AX,0
                           JZ  RAVNO
                           MOV AX,0
                    RAVNO:

         0,   
  RAVNO,    MOV AX,0.

                

          .
      ,  
   -     
:     1- ,  2-, 3-
    ..           
 : 3-, 2-  , , 1-.
         IBM  PC    ,
    (      )    
    SS:IP  (        ).
           ,      ,
        MS DOS
(c.  ).
           PUSH,    -
  .,        
     , 
 -    :

                           PUSH AX
                           PUSH BX
                             ...
                           POP  BX
                           POP  AX

       80286   
 PUSHA  POPA,      
        ,      
      
8086 ( . . 1.3. ).
              
   PUSHF  POPF.
        ,    
   :

                           PUSH CS
                           POP  DS

    ,           
  " ",  ..     
(      )       
.               
     ,    
               
:

                           PUSH SI
                           PUSH DI
                             ...
                           ADD  SP,4

           
       .
      CALL 
     (   : 
 )     . 
     RET   
           
.Ec    PROC FAR,  
   :  CS  IP,  PROC NEAR,
    IP.   :

                          MOV  AX,1
                          CALL ZEROAX
                  :
                          CMP  AX,0
                          JE   DALEE
                          CALL ZEROAX
                  DALEE:
                          ...
                          ZEROAX PROC NEAR
                          MOV AX,0
                          RET
                          ZEROAX ENDP

       CALL ZEROAX   
  ZEROAX,      0,  RET 
   ,     
ALL        CMP  AX,0.   AX 
   0.            
    ,        
 .,  ,  
    ZEROAX -  ,   
 CALL    .
     ,    CALL  
  :

                         MOV ,  OFFSET AAA PUSH 
                         JMP ZEROAX
                   AAA:

    ,a  RET:

                         POP  
                         JMP  

       
  .,      (  .
2.1.5. )    :

                         MOV  AX,0F000H
                         PUSH AX
                         MOV  AX,0FFF0H
                         PUSH AX
                         RETF

                  RET,
     :    IP  
CS.,         
CALL    RET (           
       ),         
      RET  :  RETN
 IP  RETF  CS,IP.
           -     
  (  .    ).      
         .  
         INT,    
    IRET.
       MSDOS  BIOS   
    .,    
   ,      AL, 
:

                          MOV AL,'*'
                          INT 29H

       20H    
    MSDOS.

                    2.1.7.  

 LOOP        0.
        ,      
,            ,
             .   LOOP
        :

                          MOV CX,10
                     METKA:
                             ...
                          LOOP METKA

     XCHG              
, :

                          XCHG AX,BX

     XCHG AX,AX  ,    ,    
  ,     
:  NOP.   NOP ,   ,  
 .
     INC    DEC        1    
.         ,  
   ADD  SUB       
  :

                      INC AX
                      DEC BYTE PTR [SI]

          
    IN    OUT.     
   -.

                   2.1.8.  

           16-
     .   
 , ..     
 MASM.     
      .
          ( ,   
    )      ,  ,    
PRINUM.ASM.         
   MSDOS:

                         MASM PRINUM;
                         LINK PRINUM;
                         EXE2BIN PRINUM.EXE PRINUM.COM

             TASM,          
   :

                         TASM PRINUM
                         TLINK PRINUM /T

               
PRINUM.COM,         
  16-  120.

                  CSEG SEGMENT
                  ASSUME CS:CSEG,DS:CSEG
 0100             ORG 100H
                  ;  
 0100            START:
 0100  B8 120A    MOV  AX,120AH  ;  
 0103  E8 0108 R  CALL PRINUM    ;   
 0106  CD 20      INT  20H       ;  
                  ;  
 0108             PRINUM PROC NEAR
 0108  B9 0004    MOV  CX,4      ;  4- 
 010B  BB 0010    MOV  BX,16     ;  
 010E            CIRCLE1:
 010E  BA 0000    MOV  DX,0      ;    
 0111  F7 F3      DIV  BX        ;   
 0113  52         PUSH DX        ;    
 0114  E2 F8      LOOP CIRCLE1   ;  
                  ;   ,   
                  ;     16.   -
                  ;     .
 0116  B9 0004    MOV  CX,4      ;  4- 
 0119            CIRCLE2:
 0119  5A         POP  DX        ;    
 011A  80 FA 0A   CMP  DL,10     ;     ?
 011D  73 06      JAE  D16       ;  >=10,   A-F
                  ;  
 011F            D10:
 011F  80 C2 30   ADD  DL,'0'    ;  0-9   
 0122  EB 04 90   JMP  PRINTIT   ;   
                  ;  
 0125            D16:
 0125  80 C2 37   ADD  DL,'A'-10 ;  10-15   
 0128            PRINTIT:
 0128  8A C6      MOV  AL,DH     ;     AL
 012A  CD 29      INT  29H       ;  
 012C  E2 EB      LOOP CIRCLE2   ;  
 012E  C3         RET            ;   
 012F             PRINUM ENDP
   ;
 012F             CSEG ENDS
                  END START

             
,     .

                   DEBUG

         MICROSOFT   
           MSDOS   
,    ,      .  
  ,     
.    ,      
 ,     , 
DEBUG  .
      

                     DEBUG  

           '-' ().   
    (  ),    ,
       .    
       ENTER.

    1)   U    
  ,   -
 :

-u
15FF:0100 60            PUSHA
15FF:0101 B82135        MOV     AX,3521
15FF:0104 CD21          INT     21
15FF:0106 891EB301      MOV     [01B3],BX
15FF:010A 8CC3          MOV     BX,ES
15FF:010C 891EB501      MOV     [01B5],BX
15FF:0110 BB1000        MOV     BX,0010
15FF:0113 8EC3          MOV     ES,BX
15FF:0115 BE0001        MOV     SI,0100
15FF:0118 8BFE          MOV     DI,SI
15FF:011A 26            ES:
15FF:011B 803D60        CMP     BYTE PTR [DI],60
15FF:011E B9B700        MOV     CX,00B7

                
      :,    
 ,   15FF:0100.     
             .
  16-            
 ,   ,,    
   .
                ,  
        ,  
:

                         U 0000:0000

          ,          
      .    
           ,      ""
      
      
:

-u 0:0
0000:0000 8A10          MOV     DL,[BX+SI]
0000:0002 1C01          SBB     AL,01
0000:0004 F4            HLT
0000:0005 06            PUSH    ES
0000:0006 7000          JO      0008
0000:0008 16            PUSH    SS
0000:0009 006903        ADD     [BX+DI+03],CH
0000:000C F4            HLT
0000:000D 06            PUSH    ES
0000:000E 7000          JO      0010
0000:0010 F4            HLT
0000:0011 06            PUSH    ES
0000:0012 7000          JO      0014
0000:0014 54            PUSH    SP
0000:0015 FF00          INC     WORD PTR [BX+SI]
0000:0017 F0            LOCK
0000:0018 29EB          SUB     BX,BP
0000:001A 00F0          ADD     AL,DH
0000:001C 7DEA          JGE     0008
0000:001E 00F0          ADD     AL,DH

    2)  D    
          ,    
.  16-      ,
 -       :

-d 0:500
0000:0500 00 00 20 20 00 00 20 20-53 59 53 07 00 00 ..  ..  SYS
0000:0510 00 00 00 00 00 00 00 28-89 16 02 00 96 82 .......(...
0000:0520 4D 53 DF 02 25 02 12 1B-FF 54 F6 0F 08 00 MS..%....T.
0000:0530 00 00 00 00 00 00 00 00-89 16 13 00 12 92 ...........
0000:0540 43 4F 4D 4D 41 4E 44 20-43 4F 4D 20 00 00 COMMAND COM
0000:0550 00 00 00 00 00 00 49 82-E8 16 70 02 E5 BA ......I...p
0000:0560 4E 55 20 20 20 20 20 20-20 20 20 10 00 00 NU
0000:0570 00 00 00 00 00 00 78 4F-FB 1C 6A 1B 00 00 ......xO..j

     ,      MICROSOFT ,  
         . 
  ,           
 ,  DEBUG    .

    3)  R    
  (    ):

AX=3521 BX=0339   CX=00B8   DX=0000  SP=FFEE  BP=0000  SI=0000
DI=0000 DS=15FF ES=0B12 SS=15FF CS=15FF IP=010A NV UP EI PL NZ
NA PO NC 15FF:010A 8CC3 MOV BX,ES

    4)  T     
,        
  .

    5)  G      
     . ,
            
,              
 , ,    .
    

                           G 

     ,    ,       
 :

-u
1563:03AA 50            PUSH    AX
1563:03AB 53            PUSH    BX
1563:03AC 52            PUSH    DX
1563:03AD 06            PUSH    ES
1563:03AE 57            PUSH    DI
1563:03AF 33C9          XOR     CX,CX
1563:03B1 8EC1          MOV     ES,CX
1563:03B3 33FF          XOR     DI,DI
1563:03B5 B82E12        MOV     AX,122E
1563:03B8 B200          MOV     DL,00
1563:03BA CD2F          INT     2F
1563:03BC 8C06B702      MOV     [02B7],ES
1563:03C0 893EB502      MOV     [02B5],DI
1563:03C4 B82E12        MOV     AX,122E
1563:03C7 B202          MOV     DL,02
1563:03C9 CD2F          INT     2F

-g 3BC

AX=122 BX=0000   CX=0000   DX=0000   SP=FFF2  BP=0000  SI=0000
DI=0C8C DS=1563 ES=0001 SS=1563 CS=1563 IP=03BC NV UP EI PL ZR
NA PE NC 1563:03BC 8C06B702 MOV [02B7],ES

        G    
         03h,      
   MSDOS,     
    .

    6)  Q     .
    .