joker546645

2.7

Oct 26th, 2017
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .686
  2. .model flat
  3. extern _ExitProcess@4 : PROC
  4. extern _MessageBoxW@16 : PROC
  5. extern _MessageBoxA@16 : PROC
  6. extern __write : PROC
  7. extern __read : PROC
  8. public _main
  9.  
  10. .data
  11. tekst_pocz db 10, 'Prosz',0A9h,' napisa',86h,' jaki',98h,' tekst '
  12.            db 'i nacisn',0A5h,86h,' Enter', 10
  13. koniec_t   db ?
  14. magazyn    db 80 dup (?)
  15. magazyn_uni dw 80 dup (?)
  16. nowa_linia db 10
  17. liczba_znakow dd ?
  18.  
  19. male_polskie db 0A5h, 86h, 0A9h, 88h, 0E4h, 0A2h, 98h, 0ABh, 0BEh
  20. duze_polskie db 0A4h, 8Fh, 0A8h, 9Dh, 0E3h, 0E0h, 97h, 8Dh, 0BDh
  21. win_duze db 0A5h, 0C6h, 0CAh, 0A3h, 0D1h, 0D3h, 8Ch, 8Fh, 0AFh
  22. utf_duze    dw 0104h, 0106h, 0118h, 0141h, 0143h, 00D3h, 015Ah, 0179h, 017Bh
  23.  
  24.  
  25. tytul db 'tytul 1250', 0
  26. tytul_uni dw 'u','n','i', 0
  27.  
  28. .code
  29. _main:
  30.  
  31.     mov ecx, (OFFSET koniec_t) - (OFFSET tekst_pocz)
  32.     push ecx
  33.    
  34.     push OFFSET tekst_pocz
  35.     push 1
  36.     call __write
  37.  
  38.     add esp, 12
  39.  
  40.     push 80
  41.     push OFFSET magazyn
  42.     push 0
  43.     call __read
  44.     add esp, 12
  45.  
  46.     mov liczba_znakow, eax
  47.     mov ecx, eax
  48.     mov ebx, 0
  49.  
  50. ptl: mov dl, magazyn[ebx]
  51.      mov eax, 0
  52.  
  53.     zamiana: cmp dl, male_polskie[eax]
  54.              je wymiana
  55.              cmp dl, duze_polskie[eax]
  56.              je wymiana
  57.              jmp kolejne
  58.         wymiana: mov dl, Win_duze[eax]
  59.              mov magazyn[ebx], dl
  60.              mov dx, utf_duze[eax*2]
  61.              mov magazyn_uni[ebx*2], dx
  62.              mov dx, 0
  63.              jmp dalej
  64.         kolejne: inc eax
  65.                  cmp eax, 9
  66.                  jb zamiana
  67.    
  68.  
  69.  
  70.     cmp dl, 'a'
  71.     jb dalej
  72.     cmp dl, 'z'
  73.     ja dalej
  74.     sub dl, 20h
  75.  
  76. dalej:  mov magazyn[ebx], dl
  77.         mov magazyn_uni[ebx*2], dx
  78.         inc ebx
  79.         loop ptl
  80.    
  81.      
  82.     push 0
  83.     push OFFSET tytul
  84.     push OFFSET magazyn
  85.     push 0
  86.     call _MessageBoxA@16
  87.  
  88.     push 0
  89.     push OFFSET tytul_uni
  90.     push OFFSET magazyn_uni
  91.     push 0
  92.     call _MessageBoxW@16
  93.    
  94.     push 0
  95.     call _ExitProcess@4
  96.  
  97. END
Advertisement
Add Comment
Please, Sign In to add comment