Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; wczytywanie i wyświetlanie tekstu wielkimi literami
- ; (inne znaki się nie zmieniają)
- .686
- .model flat
- extern _ExitProcess@4 : PROC
- extern __write : PROC ; (dwa znaki podkreślenia)
- extern __read : PROC ; (dwa znaki podkreślenia)
- public _main
- .data
- nieznaleziono db '-1'
- tekst_pocz db 10, 'Proszę napisać jakiś tekst '
- db 'i nacisnac Enter', 10
- koniec_t db ?
- magazyn db 80 dup (?)
- nowa_linia db 10
- liczba_znakow dd ?
- znak db ?,?
- od_ktorego dd ?
- od_ktorego_str db ?,?
- wynik db ?
- wynik2 db ?
- .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 80 ; 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
- mov liczba_znakow, eax
- push 2 ; maksymalna liczba znaków
- push OFFSET znak
- push 0 ; nr urządzenia (tu: klawiatura - nr 0)
- call __read ; czytanie znaków z klawiatury
- add esp, 12 ; usuniecie parametrów ze stosu
- push 2 ; maksymalna liczba znaków
- push OFFSET od_ktorego_str
- push 0 ; nr urządzenia (tu: klawiatura - nr 0)
- call __read ; czytanie znaków z klawiatury
- add esp, 12 ; usuniecie parametrów ze stosu
- mov ebx, 0
- mov bl, od_ktorego_str
- sub ebx, 30H
- mov dh, znak
- ; rejestr ECX pełni rolę licznika obiegów pętli
- mov ecx, liczba_znakow
- ;mov ebx, 0 ; indeks początkowy
- ptl: mov dl, magazyn[ebx] ; pobranie kolejnego znaku
- cmp dl, znak
- jz znal
- inc ebx ; inkrementacja indeksu
- cmp ecx, ebx
- jnz ptl
- push 2
- push OFFSET nieznaleziono
- push 1
- call __write ; wyświetlenie przekształconego tekstu
- add esp, 12 ; usuniecie parametrów ze stosu
- jmp koniec
- znal:
- cmp ebx, 10
- jae dwie
- add bl, 30H
- mov wynik, bl
- push 1
- push OFFSET wynik
- push 1
- call __write ; wyświetlenie przekształconego tekstu
- add esp, 12 ; usuniecie parametrów ze stosu
- jmp koniec
- dwie:
- mov edx, 0
- mov eax, ebx
- mov ecx, 10
- div ecx
- add edx, 30H
- mov wynik2, dl
- add al, 30H
- mov wynik, al
- push 1
- push OFFSET wynik
- push 1
- call __write ; wyświetlenie przekształconego tekstu
- add esp, 12 ; usuniecie parametrów ze stosu
- ;add dl, 30H
- ;mov wynik2, dl
- push 1
- push OFFSET wynik2
- push 1
- call __write ; wyświetlenie przekształconego tekstu
- add esp, 12 ; usuniecie parametrów ze stosu
- koniec:
- push 0
- call _ExitProcess@4 ; zakończenie programu
- _main ENDP
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement