Advertisement
Guest User

Untitled

a guest
Oct 15th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; wczytywanie i wyświetlanie tekstu wielkimi literami
  2. ; (inne znaki się nie zmieniają)
  3. .686
  4. .model flat
  5. extern _ExitProcess@4 : PROC
  6. extern __write : PROC ; (dwa znaki podkreślenia)
  7. extern __read : PROC ; (dwa znaki podkreślenia)
  8. public _main
  9. .data
  10. tekst_pocz db 10, 'Proszę napisać jakiś tekst '
  11. db 'i nacisnac Enter', 10
  12. koniec_t db ?
  13. magazyn db 80 dup (?)
  14. nowa_linia db 10
  15. liczba_znakow dd ?
  16. .code
  17. _main:
  18. ; wyświetlenie tekstu informacyjnego
  19. ; liczba znaków tekstu
  20.  mov ecx,(OFFSET koniec_t) - (OFFSET tekst_pocz)
  21.  push ecx
  22.  push OFFSET tekst_pocz ; adres tekstu
  23.  push 1 ; nr urządzenia (tu: ekran - nr 1)
  24.  call __write ; wyświetlenie tekstu początkowego
  25.  add esp, 12 ; usuniecie parametrów ze stosu
  26. ; czytanie wiersza z klawiatury
  27.  push 80 ; maksymalna liczba znaków
  28.  push OFFSET magazyn
  29.  push 0 ; nr urządzenia (tu: klawiatura - nr 0)
  30.  call __read ; czytanie znaków z klawiatury
  31.  add esp, 12 ; usuniecie parametrów ze stosu
  32. ; kody ASCII napisanego tekstu zostały wprowadzone
  33. ; do obszaru 'magazyn'
  34. ; funkcja read wpisuje do rejestru EAX liczbę
  35. ; wprowadzonych znaków
  36.  mov liczba_znakow, eax
  37. ; rejestr ECX pełni rolę licznika obiegów pętli
  38. mov ecx, eax
  39.  mov ebx, 0 ; indeks początkowy
  40. ptl: mov dl, magazyn[ebx] ; pobranie kolejnego znaku
  41.  cmp dl, 'a'
  42.  jb dalej ; skok, gdy znak nie wymaga zamiany
  43.  cmp dl, 'z'
  44.  ja dalej ; skok, gdy znak nie wymaga zamiany
  45.  sub dl, 20H ; zamiana na wielkie litery
  46. ; odesłanie znaku do pamięci
  47.  mov magazyn[ebx], dl
  48. dalej: inc ebx ; inkrementacja indeksu
  49.  loop ptl ; sterowanie pętlą
  50. ; wyświetlenie przekształconego tekstu
  51.  push liczba_znakow
  52.  push OFFSET magazyn
  53.  push 1
  54.  call __write ; wyświetlenie przekształconego
  55. tekstu
  56.  add esp, 12 ; usuniecie parametrów ze stosu
  57.  push 0
  58.  call _ExitProcess@4 ; zakończenie programu
  59. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement