dosseg
.model small
.stack 100h
.data
        emes    db      "Error X!!", 13, 10, 36
        fina    db      "data.txt", 0
        hand    dw      0
        buff    db      32000 dup(45)

.code
        mov     ax, @data
        mov     ds, ax
        mov     es, ax
        ;-------------------------
        mov     ax, 3d02h		; sluzba "Otevrit soubor" cteni+zapis
        lea     dx, fina		; adresa fina do dx
        int     21h			; zavolani sluzby
        mov     emes+6, 31h		; Upravime cislo chyby v hlasce
        ja      erro			; Doslo k chybe?
        mov     hand, ax		; Kdyz ne tak ulozime deskriptor soub.
        ;-------------------------
        mov     ax, 3400h		; sluzba zjisteni vlajek DOSu
        mov     bx, hand		; pro nas soubor
        lea     dx, buff		; a tenhle buffer
        int     21h			; zavolame sluzbu
        mov     emes+6, 32h		; Upravime cislo chyby v hlasce
        jc      erro			; Doslo k chybe?
        ;-------------------------
        mov     ax, 4200h		; Posunem se od zacatku
        mov     bx, hand		; v nasem souboru
        xor     cx, cx			; o nic * 64K
        xor     dx, dx			; + o nic
        int     21h			; zavolame sluzbu
        mov     emes+6, 33h		; Upravime cislo chyby v hlasce
        jc      erro			; Doslo k chybe?
        ;-------------------------
        mov     ax, 4000h		; Zapisem
        mov     bx, hand		; do naseho souboru
        mov     cx, 3200h       	; 512 bytu
        lea     dx, buff		; z bufferu
        int     21h			; zavolame sluzbu
        mov     emes+6, 34h		; Upravime cislo chyby v hlasce
        jc      erro			; Doslo k chybe?
        ;-------------------------
        mov     ax, 3E00h		; Zavrem
        mov     bx, hand		; nas soubor
        int     21h			; zavolame sluzbu
        mov     emes+6, 35h		; upravime cislo cyby v hlasce 
        jc      erro			; Doslo k chybe?
        ;-------------------------

fini:   mov     ax, 4C00h		; Konec
        int     21h			; zavolame sluzbu

erro:   mov     ax, 9000h		; Vypis na obrazovku
        lea     dx, emes		; nsi chybove hlasky
        int     21h			; zavolame sluzbu
        jmp     fini			; -> konec
end


