Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .686
- .model flat
- extern _ExitProcess@4 : PROC
- extern __write : PROC ; (dwa znaki podkreślenia)
- extern __read : PROC ; (dwa znaki podkreślenia)
- extern _MessageBoxA@16 : PROC
- public _main
- .data
- tekst_pocz db 10, 'Prosze napisac jakis tekst '
- db 'i nacisnac Enter', 10
- koniec_t db ?
- magazyn db 80 dup (?)
- nowa_linia db 10
- liczba_znakow dd ?
- magazyn_tyl db 80 dup (?)
- tytul db 'zadanie'
- .code
- _main PROC
- ; wyświetlenie tekstu informacyjnego
- ; liczba znaków tekstu
- mov ecx,(OFFSET koniec_t) - (OFFSET tekst_pocz)
- push ecx
- push OFFSET tekst_pocz ; adres tekstu
- push 1 ; nr urządzenia (tu: ekran - nr 1)
- call __write ; wyświetlenie tekstu początkowego
- add esp, 12 ; usuniecie parametrów ze stosu
- ; czytanie wiersza z klawiatury
- push 2 ; maksymalna liczba znaków
- push OFFSET magazyn
- push 0 ; nr urządzenia (tu: klawiatura - nr 0)
- call __read ; czytanie znaków z klawiatury
- add esp, 12 ; usuniecie parametrów ze stosu
- ; kody ASCII napisanego tekstu zostały wprowadzone
- ; do obszaru 'magazyn'
- ; funkcja read wpisuje do rejestru EAX liczbę
- ; wprowadzonych znaków
- mov liczba_znakow, eax
- ; rejestr ECX pełni rolę licznika obiegów pętli
- mov ecx, eax
- mov ebx, liczba_znakow; indeks początkowy
- sub ebx, 2
- mov eax, 0
- ptl: mov dl, magazyn[ebx] ; pobranie kolejnego znaku
- cmp dl, 0a5h
- je zmien_a
- cmp dl, 86h
- je zmien_c
- cmp dl, 0a9h
- je zmien_e
- cmp dl, 88h
- je zmien_l
- cmp dl, 0e4h
- je zmien_n
- cmp dl, 0a2h
- je zmien_o
- cmp dl, 98h
- je zmien_s
- cmp dl, 0abh
- je zmien_z_kreska
- cmp dl, 0beh
- je zmien_z_kropka
- jmp normal
- zmien_a: mov magazyn_tyl[eax], 0b9h
- jmp dalej
- zmien_c: mov magazyn_tyl[eax], 0e6h
- jmp dalej
- zmien_e: mov magazyn_tyl[eax], 0eah
- jmp dalej
- zmien_l: mov magazyn_tyl[eax], 0b3h
- jmp dalej
- zmien_n: mov magazyn_tyl[eax], 0f1h
- jmp dalej
- zmien_o: mov magazyn_tyl[eax], 0f3h
- jmp dalej
- zmien_s: mov magazyn_tyl[eax], 9ch
- jmp dalej
- zmien_z_kreska: mov magazyn_tyl[eax], 9fh
- jmp dalej
- zmien_z_kropka: mov magazyn_tyl[eax], 0bfh
- jmp dalej
- normal: mov magazyn_tyl[eax], dl
- dalej:
- dec ebx
- inc eax
- ;loop ptl ; sterowanie pętlą
- dec ecx
- jnz ptl
- push 0 ; stała MB_OK
- push OFFSET tytul
- push OFFSET magazyn_tyl
- push 0 ; NULL
- call _MessageBoxA@16
- push 0
- call _ExitProcess@4 ; zakończenie programu
- _main ENDP
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement