= Deklarowanie danych zainicjalizowanych =
Sekcja .data zawiera dane zainicjalizowane.
Można w niej zadeklarować napisy, stałe numeryczne, itp.

Do deklarowania danych używa się słów kluczowych db i dw, dd.
db deklaruje argumenty jako bajty, dw jako słowa dwubajtowe a dd jako
czterobajtowe.

Napisy można podawać w pojedynczych apostrofach, zostaną zamienione na
odpowiedni ciąg bajtów kodu ASCII, np.
db 'ala ma kota'

Długość napisu (lub rozmiar innej danej w sekcji data) można uzyskać poprzez
wyliczenie odległości od końca do etykiety. Robi się to w ten sposób:

moj_napis: db 'bla bla'
dlugosc_mojego_napisu equ $-moj_napis

dlugosc_mojego_napisu jest w takim wypadku stałą (wyliczaną przez asembler w
trakcie kompilacji) i można ją załadować do rejestru lub odłożyć na stosie,
jak każdą inną stałą bezpośrednią.

= Instrukcje operujące na ciągach =
Istnieje zbiór instrukcji, które są dostosowane do operowania na ciągach
danych.
Dane wejściowe dla takich instrukcji są podawane w rejestrze ESI (stąd nazwa 
source index) a docelowe w rejestrze EDI (stąd nazwa destination index).
Każda instrukcja wykonuje jakąś operację, po czym zwiększa (lub zmniejsza)
rejestry ESI/EDI o rozmiar swoich danych - czyli przechodzi do kolejnej
danej wejściowej. 

Rejestry indeksowe są zwiększane, gdy wyzerowana jest flaga "destination" w
rejestrze znaczników (można ją wyzerować instrukcją CLD), a zmnieszane, gdy
jest ustawiona (można ją ustawić instrukcją STD).

Instrukcje które działają w ten sposób:
MOVSB/MOVSW/MOVSD - przenosi bajty/słowa/dwusłowa ze źródła do celu
CMPSB/CMPSW/CMPSD - porównuje bajt/słowo/dwusłowo źródłowe i docelowe i
     ustawia odpowiednio znaczniki
SCASB/SCASW/SCASD - porównuje ciąg docelowy z zawartością rejestru AL/AX/EAX
     i ustawia odpowiednio znaczniki
STOSB/STOSW/STOSD - zapisuje zawartość AL/AX/EAX do ciągu docelowego

Te instrukcje mogą łatwo zostać powtórzone zadaną liczbę razy (określoną
przez rejestr ECX) za pomocą przedrostka REP. Np. REP MOVSB kopiuje ECX
bajtów ze źródła do ciągu docelowego.

Do instrukcji ustawiających znaczniki można również użyć przedrostków REPE
(powtarzaj dopóki równe) i REPNE (powtarzaj dopóki nie jest równe). Wykonują
one instrukcje aż warunek zostanie spełniony lub ECX osiągnie 0.
Np. REPE CMPSB powtarza się dopóki źródło i cel są równe.

Zadania:
- Napisać program, który wczytuje ze stdin dane i zastępuje wszystkie znaki
spacji podkreśleniami a potem wypisuje.
- Napisać program, który wczytuje ze stdin dane i jeśli po kropce nie ma
litery "A", to następne 12 znaków zastępuje znakiem "X".
- Napisać program, który wczytuje ze stdin dane i dla każdej linii dłuższej
niż 80 znaków wypisuje ostatnie 10 znaków. Można
założyć, że każda linia ma nie więcej niż 256 znaków.
- Napisać program, który wczytuje dane z dwóch plików i porównuje je aż
znajdzie pierwszy różniący się bajt (coś jak program cmp).
