Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. .686
  2. .model flat
  3. extern _ExitProcess@4 : PROC
  4. extern __write : PROC ; (dwa znaki podkreślenia)
  5. extern __read : PROC ; (dwa znaki podkreślenia)
  6. extern _MessageBoxA@16 : PROC
  7. public _main
  8.  
  9. .data
  10.  
  11. tekst_pocz db 10, 'Prosze napisac jakis tekst '
  12. db 'i nacisnac Enter', 10
  13. koniec_t db ?
  14. magazyn db 80 dup (?)
  15. nowa_linia db 10
  16. liczba_znakow dd ?
  17.  
  18. magazyn_tyl db 80 dup (?)
  19. tytul db 'zadanie'
  20.  
  21. .code
  22. _main PROC
  23.  
  24. ; wyświetlenie tekstu informacyjnego
  25. ; liczba znaków tekstu
  26. mov ecx,(OFFSET koniec_t) - (OFFSET tekst_pocz)
  27. push ecx
  28. push OFFSET tekst_pocz ; adres tekstu
  29. push 1 ; nr urządzenia (tu: ekran - nr 1)
  30. call __write ; wyświetlenie tekstu początkowego
  31. add esp, 12 ; usuniecie parametrów ze stosu
  32.  
  33. ; czytanie wiersza z klawiatury
  34. push 2 ; maksymalna liczba znaków
  35. push OFFSET magazyn
  36. push 0 ; nr urządzenia (tu: klawiatura - nr 0)
  37. call __read ; czytanie znaków z klawiatury
  38. add esp, 12 ; usuniecie parametrów ze stosu
  39. ; kody ASCII napisanego tekstu zostały wprowadzone
  40. ; do obszaru 'magazyn'
  41.  
  42. ; funkcja read wpisuje do rejestru EAX liczbę
  43. ; wprowadzonych znaków
  44. mov liczba_znakow, eax
  45.  
  46. ; rejestr ECX pełni rolę licznika obiegów pętli
  47. mov ecx, eax
  48.  
  49. mov ebx, liczba_znakow; indeks początkowy
  50. sub ebx, 2
  51.  
  52. mov eax, 0
  53.  
  54. ptl: mov dl, magazyn[ebx] ; pobranie kolejnego znaku
  55.  
  56. cmp dl, 0a5h
  57. je zmien_a
  58.  
  59. cmp dl, 86h
  60. je zmien_c
  61.  
  62. cmp dl, 0a9h
  63. je zmien_e
  64.  
  65. cmp dl, 88h
  66. je zmien_l
  67.  
  68. cmp dl, 0e4h
  69. je zmien_n
  70.  
  71. cmp dl, 0a2h
  72. je zmien_o
  73.  
  74. cmp dl, 98h
  75. je zmien_s
  76.  
  77. cmp dl, 0abh
  78. je zmien_z_kreska
  79.  
  80. cmp dl, 0beh
  81. je zmien_z_kropka
  82.  
  83. jmp normal
  84.  
  85. zmien_a: mov magazyn_tyl[eax], 0b9h
  86. jmp dalej
  87.  
  88. zmien_c: mov magazyn_tyl[eax], 0e6h
  89. jmp dalej
  90.  
  91. zmien_e: mov magazyn_tyl[eax], 0eah
  92. jmp dalej
  93.  
  94. zmien_l: mov magazyn_tyl[eax], 0b3h
  95. jmp dalej
  96.  
  97. zmien_n: mov magazyn_tyl[eax], 0f1h
  98. jmp dalej
  99.  
  100. zmien_o: mov magazyn_tyl[eax], 0f3h
  101. jmp dalej
  102.  
  103. zmien_s: mov magazyn_tyl[eax], 9ch
  104. jmp dalej
  105.  
  106. zmien_z_kreska: mov magazyn_tyl[eax], 9fh
  107. jmp dalej
  108.  
  109. zmien_z_kropka: mov magazyn_tyl[eax], 0bfh
  110. jmp dalej
  111.  
  112. normal: mov magazyn_tyl[eax], dl
  113.  
  114. dalej:
  115. dec ebx
  116. inc eax
  117.  
  118.  
  119. ;loop ptl ; sterowanie pętlą
  120. dec ecx
  121. jnz ptl
  122.  
  123. push 0 ; stała MB_OK
  124. push OFFSET tytul
  125. push OFFSET magazyn_tyl
  126. push 0 ; NULL
  127. call _MessageBoxA@16
  128.  
  129. push 0
  130. call _ExitProcess@4 ; zakończenie programu
  131. _main ENDP
  132. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement