[ Pobierz całość w formacie PDF ]

poprawnie nawet w przypadku pliku tekstowego o rekordach zmiennej wielkości:
u
W tej cz¹Å›ci rozdziaÅ‚u zostanie przedstawiona procedura o nazwie , która pozwala
na załadowanie z pliku rysunku bitmapowego i wyświetlenie go na ekranie. Rysunek
bitmapowy może mieć maksymalnÄ… rozdzielczość 320×200 z 256 kolorami. Kod proce-
dury przedstawiono w listingu 12.5.
n Odczytanie i wyświetlenie pliku bitmapy
I

I

W czasie wywoÅ‚ania procedury rejestr musi wskazywać nazw¹ pliku zakoÅ„-
czoną pustym bajtem. Wewnątrz tej procedury wywoływana jest podprocedura
z biblioteki konsolidowanej. Praca programu jest przerywana, jeśli procedura
nie może otworzyć pliku. Kolejnym krokiem jest odczytanie rekordu nagłówka
bitmapy. Procedura zapisuje 54 bajty do buforu i wywołuje w celu
sprawdzenia poprawności nagłówka.
Procedura szuka ciągu na początku pliku. Program wywołuje teraz
w celu odczytania pełnego rekordu nagłówka bitmapy. Można tu odnalezć informacje
o przesuni¹ciu poczÄ…tku danych rysunku, liczbie kolorów oraz o rozdzielczoÅ›ci pionowej
i poziomej.
Procedura wczytuje do pami¹ci palet¹ graficznÄ…. Polega to na sprawdzeniu liczby
kolorów i załadowaniu pełnej palety do zmiennej. Procedura inicjalizuje kolorowy
tryb graficzny, a powoduje wyświetlenie rysunku bitmapowego. W czasie tego
procesu uwzgl¹dniany jest fakt, iż dane wewnÄ…trz plików BMP sÄ… zapisywane w odwrot-
nej kolejności. Program odczytuje kolejne wiersze rysunku, co oznacza jednak pewne spo-
wolnienie jego pracy.
Program odczytujący i wyświetlający plik bitmapy stanowi jedynie zarys techniki wyświe-
tlania bitmap, ale po rozbudowaniu tego programu o dodatkowe funkcje możliwe jest na
przykład umieszczenie rysunku w dowolnym miejscu ekranu.
I
n n n
JeÅ›li dany plik jeszcze nie istnieje, to co si¹ stanie, jeÅ›li za pomocÄ… funkcji
plik zostanie otwarty w trybie wyjścia?
JeÅ›li plik zostanie utworzony przez funkcj¹ , to czy b¹dzie możliwy odczyt
i zapis do tego pliku przed jego zamkni¹ciem? Co si¹ stanie, jeÅ›li plik zostanie
utworzony z atrybutem tylko do odczytu?
Jakie kroki należy wykonać, aby utworzyć nowy plik i mieć pewność, że istniejący
plik o tej samej nazwie nie zostanie skasowany?
Dla każdego z poniższych kodów bÅ‚¹dów, jakie sÄ… zwracane przez wywoÅ‚anie ,
napisz krótkie wyjaÅ›nienie przyczyny bÅ‚¹du:
Numer błędu Wywoływana funkcja
03h 56h (zmiana nazwy pliku)
05h 41h (usuni¹cie pliku)
06h 57h (ustawienie daty i czasu)
10h 3Ah (usuni¹cie katalogu)
11h 56h (zmiana nazwy pliku)
12h 4Eh (odnalezienie pierwszego szukanego pliku)
Co si¹ stanie po uruchomieniu nast¹pujÄ…cego kodu:
Czy w celu zamkni¹cia pliku należy użyć rejestru do wskazania jego nazwy?
Jaki b¹dzie efekt użycia nast¹pujÄ…cych instrukcji?
8 Wyobraz sobie, iż wywoÅ‚ano funkcj¹ (odczyt z pliku lub urzÄ…dzenia).
Znacznik został ustawiony, a rejestr ma wartość 6. Co to oznacza?
Wyobraz sobie, iż wywoÅ‚ano funkcj¹ z . DOS skasowaÅ‚ znacznik
i zwrócił wartość 20h w rejestrze . Co to oznacza?
0 JeÅ›li użyto funkcji do odczytu danych z klawiatury, a , to jaka b¹dzie
zawartość buforu wejściowego po wprowadzeniu poniższego ciągu:
Czy ciÄ…g zapisywany do konsoli przez funkcj¹ musi być zakoÅ„czony bajtem
o wartości zero?

Wyobraz sobie, że użyto funkcji do zapisania danych do pliku. Czy DOS
automatycznie zaktualizuje wskaznik pliku?
Jakie kroki należy wykonać, jeśli odczytano rekord z pliku i konieczne jest ponowne
zapisanie go w tym samym miejscu?
Czy jest możliwe przeniesienie wskaznika pliku wewnątrz pliku tekstowego?
Napisz kod pozwalający na umieszczenie wskaznika pliku w położeniu 20 bajtów
od końca pliku identyfikowanego przez uchwyt .
Jaka jest wartość przesuni¹cia dwudziestego rekordu w pliku, zawierajÄ…cego rekordy
o stałej wielkości 50 bajtów?
Jaki jest cel buforowania rekordów wejściowych?
8 Zakładając, iż w poniższych polach odwzorowanych bitowo bity 0.  4. zawierają
numer bloku, a bity 5.  7. stanowiÄ… numer pi¹tra, uzupeÅ‚nij poniższe wartoÅ›ci:
Celem poniższej procedury jest zapisanie zawartości buforu
do pliku identyfikowanego przez uchwyt . Zmienna zawiera
aktualną wielkość buforu. Jeśli na dysku nie ma już miejsca, to procedura powinna
wyÅ›wietlić odpowiedni komunikat. Jakie bÅ‚¹dy logiczne popeÅ‚niono w tej procedurze?
n n
Narz¹dzie .
Już od wielu lat programiÅ›ci używajÄ… narz¹dzia , które odczytuje specyfikator
pliku z wiersza poleceÅ„ (wÅ‚Ä…cznie ze znakami zast¹pczymi) i zmienia znaczniki
daty oraz czasu plików na aktualnÄ… dat¹ i godzin¹. Napisz taki program w j¹zyku
asembler. JeÅ›li użytkownik wpisze na przykÅ‚ad nast¹pujÄ…ce polecenie, to zostanÄ…
zaktualizowane wszystkie pliki z rozszerzeniem .ASM w aktualnym katalogu:
I
Narz¹dzie może być użyte na przykÅ‚ad do ustawienia wszystkich plików aplikacji
wysyÅ‚anych do klienta na t¹ samÄ… dat¹ i godzin¹.
Wyszukiwanie ciągów tekstowych.
Napisz program, który otwiera plik tekstowy zawierający co najmniej 60 kB tekstu
i wyszukuje w nim określony ciąg (niezależnie od wielkości liter). Ciąg i nazwa
pliku są wprowadzane w wierszu poleceń. Wyświetl na ekranie wszystkie wiersze
pliku tekstowego, w których pojawia si¹ dany ciÄ…g. Poszczególne wiersze powinny
być poprzedzone numerem danego wiersza, na przykład:
Ulepszone wyszukiwanie ciÄ…gu.
Rozbuduj program z poprzedniego zadania o nast¹pujÄ…ce funkcje:
Pozwól na użycie znaków zast¹pczych w specyfikacji pliku, dzi¹ki czemu ciÄ…g
b¹dzie wyszukiwany w wielu plikach tekstowych.
DoÅ‚Ä…cz opcj¹ wiersza poleceÅ„ do wyÅ›wietlania jedynie nazw plików. Ta opcja
powinna mieć postać w celu zachowania zgodnoÅ›ci z narz¹dziem
dostarczanym wraz z Turbo Assemblerem. Poniżej przedstawiono przykład
polecenia, które spowoduje wyświetlenie wszystkich plików .ASM zawierająych
ciÄ…g :
Wyświetlanie zawartości pliku.
Napisz program, który zapisuje plik tekstowy do pami¹ci i wyÅ›wietla pierwsze 24
wiersze tekstu. Zawartość buforu powinna być zapisywana bezpoÅ›rednio do pami¹ci
wideo, co pozwoli na znaczne zwi¹kszenie wydajnoÅ›ci. Program musi obsÅ‚ugiwać
nast¹pujÄ…ce polecenia klawiaturowe:
Klawisz Funkcja
PgUp Przewini¹cie w gór¹ o 24 wiersze
PgDown Przewini¹cie w dół o 24 wiersze
StrzaÅ‚ka w górÄ™ Przewini¹cie w gór¹ o jeden wiersz
StrzaÅ‚ka w dół Przewini¹cie w dół o jeden wiersz
Esc Wyjście do systemu
Tworzenie pliku umożliwiajÄ…cego bezpoÅ›redni dost¹p.
Napisz program tworzący plik zawierający informacje o studentach, które zostaną
wprowadzone poprzez konsol¹. Każdy rekord ma wielkość 27 bajtów. W pliku
powinno być co najmniej 20 rekordów. Format rekordu przedstawiono poniżej:

Oto przykÅ‚adowe dane dla programu. Prosz¹ dodać co najmniej 12 nowych rekordów:
Program do obsługi rekordów studentów.
Używając pliku z wcześniejszego zadania napisz program aktualizujący taki plik.
Program powinien wyÅ›wietlać nast¹pujÄ…ce menu:
Użytkownik może wybierać rekordy według ich numerów. Po wykonaniu zadania
okreÅ›lonego przez wybrane polecenie nast¹puje powrót do głównego menu. Przetestuj
program, wykonując wiele operacji dodawania, edycji i usuwania rekordów.
Rozbudowany program Sector Display.
W rozdziale 11. przedstawiono program Sector Display, który służył do
wyÅ›wietlania sektorów dysku. Dodaj teraz nowÄ… funkcj¹: wciÅ›ni¹cie klawisza F3
przez użytkownika ma powodować zapisanie sektora do pliku wyjściowego. Program
powinien poprosić o podanie nazwy pliku. Jeśli ten plik już istnieje, to dane należy [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • sp28dg.keep.pl