Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
128
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. nieznaleziono db '-1'
  11. tekst_pocz db 10, 'Proszę napisać jakiś 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. znak db ?,?
  18. od_ktorego dd ?
  19. od_ktorego_str db ?,?
  20. wynik db ?
  21. wynik2 db ?
  22.  
  23.  
  24. .code
  25. _main PROC
  26. ; wyświetlenie tekstu informacyjnego
  27. ; liczba znaków tekstu
  28.  mov ecx,(OFFSET koniec_t) - (OFFSET tekst_pocz)
  29.  push ecx
  30.  push OFFSET tekst_pocz ; adres tekstu
  31.  push 1 ; nr urządzenia (tu: ekran - nr 1)
  32.  call __write ; wyświetlenie tekstu początkowego
  33.  add esp, 12 ; usuniecie parametrów ze stosu
  34.  
  35.  
  36. ; czytanie wiersza z klawiatury
  37.  push 80 ; maksymalna liczba znaków
  38.  push OFFSET magazyn
  39.  push 0 ; nr urządzenia (tu: klawiatura - nr 0)
  40.  call __read ; czytanie znaków z klawiatury
  41.  add esp, 12 ; usuniecie parametrów ze stosu
  42.  mov liczba_znakow, eax
  43.  
  44.  push 2 ; maksymalna liczba znaków
  45.  push OFFSET znak
  46.  push 0 ; nr urządzenia (tu: klawiatura - nr 0)
  47.  call __read ; czytanie znaków z klawiatury
  48.  add esp, 12 ; usuniecie parametrów ze stosu
  49.  
  50.  push 2 ; maksymalna liczba znaków
  51.  push OFFSET od_ktorego_str
  52.  push 0 ; nr urządzenia (tu: klawiatura - nr 0)
  53.  call __read ; czytanie znaków z klawiatury
  54.  add esp, 12 ; usuniecie parametrów ze stosu
  55.  
  56.  mov ebx, 0
  57.  mov bl, od_ktorego_str
  58.  sub ebx, 30H
  59.  mov dh, znak
  60.  
  61.  
  62. ; rejestr ECX pełni rolę licznika obiegów pętli
  63.  mov ecx, liczba_znakow
  64.  ;mov ebx, 0 ; indeks początkowy
  65.  
  66.  
  67. ptl: mov dl, magazyn[ebx] ; pobranie kolejnego znaku
  68.  
  69.  cmp dl, znak
  70.  jz znal
  71.  inc ebx ; inkrementacja indeksu
  72.  
  73.  cmp ecx, ebx
  74.  jnz ptl
  75.  
  76.  push 2
  77.  push OFFSET nieznaleziono
  78.  push 1
  79.  call __write ; wyświetlenie przekształconego tekstu
  80.  add esp, 12 ; usuniecie parametrów ze stosu
  81.  jmp koniec
  82.  
  83.  znal:
  84.  cmp ebx, 10
  85.  jae dwie
  86.  
  87.  add bl, 30H
  88.  mov wynik, bl
  89.  push 1
  90.  push OFFSET wynik
  91.  push 1
  92.  call __write ; wyświetlenie przekształconego tekstu
  93.  add esp, 12 ; usuniecie parametrów ze stosu
  94.  jmp koniec
  95.  
  96.  dwie:
  97.  
  98.  mov edx, 0
  99.  mov eax, ebx
  100.  mov ecx, 10
  101.  div ecx
  102.  
  103.  add edx, 30H
  104.  mov wynik2, dl
  105.  
  106.  
  107.  add al, 30H
  108.  mov wynik, al
  109.  push 1
  110.  push OFFSET wynik
  111.  push 1
  112.  call __write ; wyświetlenie przekształconego tekstu
  113.  add esp, 12 ; usuniecie parametrów ze stosu
  114.  
  115.  
  116.  ;add dl, 30H
  117.  ;mov wynik2, dl
  118.  push 1
  119.  push OFFSET wynik2
  120.  push 1
  121.  call __write ; wyświetlenie przekształconego tekstu
  122.  add esp, 12 ; usuniecie parametrów ze stosu
  123.  
  124.  
  125.  
  126.  koniec:
  127.  push 0
  128.  call _ExitProcess@4 ; zakończenie programu
  129.  _main ENDP
  130. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement