+----------------------+ |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ň