+----------------------+
                            |Assembler pro blbé č.2|
                            +----------------------+


            Minule  jsem  začal trošku složitějším příkladem, takže teď se
      vrátíme zpátky na zem a začnu klasickým Hello World. Tedy programem,
      který na obrazovce vypíše nápis "Hello World".

      MODEL SMALL
      .STACK 200
      .DATA
         Napis   db 'Hello World'
      .CODE
      START:
          mov ax, seg Napis       ;DS:DX ukazuje na napis
          mov ds, ax
          mov dx, offset Napis    ;DS:DX ukazuje na text
          mov ah, 9               ;funkce zobraz retezec
          int 21h
          mov ax, 4c00h           ;Konec programu, navrat do DOSu
          int 21h
      END START

            Objevuje  se  nám  tu  poprvé volání služby DOSu. To je to int
      21h.  Je  to  vyvolání  přerušení číslo 21h. Můžete si to představit
      jako  vyvolání  nějaké procedury číslo 21h. Tato procedura potřebuje
      parametry, aby věděla co má dělat. V našem případě jsou to parametry
      dva.  V AH zadáme číslo služby. V našem případě 9 což znamená výstup
      řetězce.  V  DS:DX  je  uložena  adresa  tohoto  řetězce. Řetězec se
      ukončuje znakem .
            Příkaz  mov  ax, seg Napis uloží do ax segmentovou část adresy
      proměnné Napis. mov dx, offset Nápis uloží do dx část offsetovou.

            Přerušení  int  21h umí spoustu věcí, které by se musely jinak
      programovat  ručně.  Umí  to  například  otevírat,  číst a zapisovat
      soubory.   Spouštět   další   programy.  Číst  klávesnici,  psát  po
      obrazovce,  atd... Toto přerušení se vyvolává vždy s číslem služby v
      AH a dalšími parametry v ostatních registrech.

                 Ukážeme si například využití služby číslo 30h
                              (Zjisti verzi DOSu)

      MODEL SMALL
      .STACK 200
      .DATA
         Napis   db 'Cislo verze DOSu je: '
      .CODE
      START:
          mov ax, seg Napis       ;DS:DX ukazuje na napis
          mov ds, ax
          mov dx, offset Napis    ;DS:DX ukazuje na text
          mov ah, 9               ;funkce zobraz retezec
          int 21h
          mov ah, 30h             ;funkce 30, zjisti verzi
          int 21h                 ;Hlavni cislo verze je ted v al
          add al, 48              ;prictu 48, abych dostal ascii kod cisla
          mov dl, al
          mov ah, 2               ;funkce tisk jednoho znaku z DL
          int 21h
          mov ax, 4c00h           ;Konec programu, navrat do DOSu
          int 21h
      END START

            Sežeňte  si někde program jménem SYSMAN, to je hypertext právě
      o  takových věcech. Mimo jiné je tu i seznam všech těchto přerušení.
      Dozvíte se, co musíte kam strčit a co, po skončení INT, kde hledat.

            Pro začátek jsem připravil seznam služeb pro práci se soubory,
      budeme je pořebovat příště.  Tady je 

            Takže  příště si skusíme napsat konvertor češtiny v assembleru
      a dozvíte se, jak se pracuje s procedurami.


            Pokud se se mnou budete chtít spojit máte dvě možnosti:
                                FIDO a internet.

                    Moje fidonetí adresa je 2:421/59.
                    A internetí je: SysOp@pizi.fido.cz

        Jó a taky mám vlastní WWW stránku, kde jsou všechny tyhle texty,
                             které píšu i do VÝHNĚ.
                   www.geocities.com\SiliconValley\Park\8209

                              Čaute příště PIŽI


            výheň