🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
5 messages
5 total messages Started by Remek Thu, 27 Nov 2008 15:42
Operacje plikowe
#1863
Author: Remek
Date: Thu, 27 Nov 2008 15:42
39 lines
1993 bytes
Witam

Na stronie:

http://rudy.mif.pg.gda.pl/~bogdro/dos/a_kurs11.htm

są opisane funkcje plikowe pod DOS. Jeden z przykładów:

=========================================

 mov ah, 3ch   ; numer funkcji - utworzenie
 mov dx, nazwa ; adres nazwy pliku
 xor cx, cx    ; atrybuty. Zero oznacza normalny plik.
 int 21h       ; utworzenie pliku
 jc blad       ; sprawdzamy, czy nie ma błędu.

 mov [uchwyt], ax
 mov bx, ax    ; zapisujemy uchwyt

 mov ah, 3fh   ; numer funkcji - odczyt
               ; BX = uchwyt do pliku
 mov cx, 1024  ; ilość bajtów do odczytania
 mov dx, bufor ; adres bufora, do którego czytamy
 int 21h       ; czytamy z pliku
 jc blad       ; sprawdzamy, czy nie ma błędu.

 mov ah, 3eh   ; numer funkcji - zamknięcie pliku
               ; BX = uchwyt do pliku
 int 21h       ; zamykamy plik
 jc blad       ; sprawdzamy, czy nie ma błędu.

==========================================-

Pytanie brzmi: Co można wczytać z nowo utworzonego, lub wyczyszczonego
(funkcją 3Ch przerwania 21h) pliku, skoro wcześniej autor pisze:

"AH = 3Ch - utworzenie pliku (wymazanie, gdy już istnieje)."

Pozdrawiam  Remek
Re: Operacje plikowe
#1864
Author: Bogdan (bogdro)
Date: Fri, 28 Nov 2008 18:17
54 lines
2860 bytes
Remek pisze:
> Witam
> 
> Na stronie:
> 
> http://rudy.mif.pg.gda.pl/~bogdro/dos/a_kurs11.htm
> 
> są opisane funkcje plikowe pod DOS. Jeden z przykładów:
> 
> =========================================
> 
>  mov ah, 3ch   ; numer funkcji - utworzenie
>  mov dx, nazwa ; adres nazwy pliku
>  xor cx, cx    ; atrybuty. Zero oznacza normalny plik.
>  int 21h       ; utworzenie pliku
>  jc blad       ; sprawdzamy, czy nie ma błędu.
> 
>  mov [uchwyt], ax
>  mov bx, ax    ; zapisujemy uchwyt
> 
>  mov ah, 3fh   ; numer funkcji - odczyt
>                ; BX = uchwyt do pliku
>  mov cx, 1024  ; ilość bajtów do odczytania
>  mov dx, bufor ; adres bufora, do którego czytamy
>  int 21h       ; czytamy z pliku
>  jc blad       ; sprawdzamy, czy nie ma błędu.
> 
>  mov ah, 3eh   ; numer funkcji - zamknięcie pliku
>                ; BX = uchwyt do pliku
>  int 21h       ; zamykamy plik
>  jc blad       ; sprawdzamy, czy nie ma błędu.
> 
> ==========================================-
> 
> Pytanie brzmi: Co można wczytać z nowo utworzonego, lub wyczyszczonego
> (funkcją 3Ch przerwania 21h) pliku, skoro wcześniej autor pisze:

 Nie nic można wczytać. Liczba odczytanych bajtów będzie wynosić zero,
a flaga CF będzie ustawiona.

> "AH = 3Ch - utworzenie pliku (wymazanie, gdy już istnieje)."

 To prawda. Ale nie ten kod był główną ideą. Ten kod to raczej zbitka
trzech osobnych kodów - jednego tworzącego plik, jednego czytającego i
jednego zamykającego. Kod ten ma służyć jako przykład użycia tych
funkcji, a nie jako coś, co można uruchomić i zrobić coś ciekawego.
 Ale uwaga słuszna - albo rozbiję ten programik na trzy (lub dołożę
więcej), albo zmienię na coś trochę bardziej użytecznego.

-- 
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.JabberPL.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft
Re: Operacje plikowe
#1865
Author: Remek
Date: Sat, 29 Nov 2008 14:52
26 lines
1773 bytes
Użytkownik "Bogdan (bogdro)" napisał:

> To prawda. Ale nie ten kod był główną ideą. Ten kod to raczej zbitka
> trzech osobnych kodów - jednego tworzącego plik, jednego czytającego i
> jednego zamykającego. Kod ten ma służyć jako przykład użycia tych
> funkcji, a nie jako coś, co można uruchomić i zrobić coś ciekawego.
> Ale uwaga słuszna - albo rozbiję ten programik na trzy (lub dołożę
> więcej), albo zmienię na coś trochę bardziej użytecznego.

Jeśli mogę coś zaproponować, to moim zdaniem przydatne były by dwa
przykłady:

1.

- Utworzenie (otwarcie z wymazaniem) pliku.
- Zapis do tego utworzonego pliku.

2.

- Otwarcie istniejącego pliku w trybie umożliwiającym odczyt i zapis.
- Czytanie z pliku.
- ........  (jakieś operacje użytkownika, tu oczywiście bez konkretów).
- Zapis do pliku.


Pozdrawiam  Remek
Re: Operacje plikowe
#1866
Author: Bogdan (bogdro)
Date: Mon, 01 Dec 2008 18:04
33 lines
2163 bytes
Remek pisze:
> Użytkownik "Bogdan (bogdro)" napisał:
> 
>> To prawda. Ale nie ten kod był główną ideą. Ten kod to raczej zbitka
>> trzech osobnych kodów - jednego tworzącego plik, jednego czytającego i
>> jednego zamykającego. Kod ten ma służyć jako przykład użycia tych
>> funkcji, a nie jako coś, co można uruchomić i zrobić coś ciekawego.
>> Ale uwaga słuszna - albo rozbiję ten programik na trzy (lub dołożę
>> więcej), albo zmienię na coś trochę bardziej użytecznego.
> 
> Jeśli mogę coś zaproponować, to moim zdaniem przydatne były by dwa
> przykłady:
> 
> 1.
> 
> - Utworzenie (otwarcie z wymazaniem) pliku.
> - Zapis do tego utworzonego pliku.
> 
> 2.
> 
> - Otwarcie istniejącego pliku w trybie umożliwiającym odczyt i zapis.
> - Czytanie z pliku.
> - ........  (jakieś operacje użytkownika, tu oczywiście bez konkretów).
> - Zapis do pliku.

 Tak też właśnie zostało uczynione, wraz z dodaniem większej liczby
szczegółów odnośnie parametrów funkcji.

-- 
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.JabberPL.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft
Re: Operacje plikowe
#1867
Author: Remek
Date: Thu, 04 Dec 2008 12:27
17 lines
1900 bytes
Użytkownik "Bogdan (bogdro)" napisał:

> Tak też właśnie zostało uczynione, wraz z dodaniem większej liczby
> szczegółów odnośnie parametrów funkcji.

Wielkie dzięki! Przepraszam za zwłokę, ale mam cykliczne problemy z łączem.
A wracając do meritum. Problem pojawił się przy próbie napisania programu do
sortowania bąbelkowego, działającego w konsoli. Prosty wydawało by się
programik wymaga jednak sporo zachodu. Znajomość samego algorytmu jest
dalece niewystarczająca. Trzeba obejść parę pułapek. Wykrywać moment
zakończenia sortowania (to oczywiste), ale jeśli np. czytamy z pliku to co
jeśli oprócz cyfr/liczb pojawiają się inne znaki? Co jeśli dane są w pliku w
postaci wielu wierszy? Inna sprawa, że algorytm jest mocno nieefektywny i
powyżej 1 kB danych czas sortowania wyraźnie się wydłuża , do zawieszenia
programu włącznie.

Pozdrawiam  Remek
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads