Advertisement
Tobiasz931

My Little Assembler: AJ is best pony

Dec 9th, 2013
309
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 _MessageBoxA@16 : PROC
  5. extern _MessageBoxW@16 : PROC
  6. extern __write : PROC ; (dwa znaki podkreślenia)
  7. extern __read : PROC ; (dwa znaki podkreślenia)
  8. public _main
  9. .data
  10. tytul_Unicode db 'T',0,'e',0,'k',0,'s',0,'t',0,' ',0
  11.  db 'w',0,' ',0
  12. db 's',0,'t',0,'a',0,'n',0,'d',0,'a',0,'r',0
  13. db 'd',0,'z',0,'i',0,'e',0,' ',0
  14. db 'U',0,'n',0,'i',0,'c',0,'o',0,'d',0,'e',0
  15. db 0,0  
  16. tekst_Unicode db 'K',0,'a',0,'z',0,'d',0,'y',0
  17.  db ' ',0,'z',0,'n',0,'a',0,'k',0,' ',0
  18. db 'z',0,'a',0,'j',0,'m',0,'u',0,'j',0,'e',0
  19. db ' ',0
  20. db '1',0,'6',0,' ',0,'b',0,'i',0,'t',0,'o',0
  21. db 'w',0,0,0
  22. tytul_Win1250 db 'Tekst w standardzie Windows 1250', 0
  23. tekst_Win1250 db 'Kazdy znak zajmuje 8 bitow', 0
  24. tekst_pocz db 10, 'Proszę napisać jakiś tekst '
  25. db 'i nacisnac Enter', 10
  26. koniec_t db ?
  27. magazyn db 80 dup (?)
  28. nowa_linia db 10
  29. liczba_znakow dd ?
  30.  
  31. .code
  32. prog PROC
  33.     ; liczba znaków tekstu         =======WRITE=======
  34.     mov ecx,(OFFSET koniec_t) - (OFFSET tekst_pocz)
  35.     push ecx
  36.     push OFFSET tekst_pocz ; adres tekstu
  37.     push 1 ; nr urządzenia (tu: ekran - nr 1)
  38.     call __write ; wyświetlenie tekstu początkowego
  39.     add esp, 12 ; usuniecie parametrów ze stosu
  40.  
  41.     ; czytanie wiersza z klawiatury =======READ=======
  42.     push 80 ; maksymalna liczba znaków
  43.     push OFFSET magazyn
  44.     push 0 ; nr urządzenia (tu: klawiatura - nr 0)
  45.     call __read ; czytanie znaków z klawiatury
  46.     add esp, 12 ; usuniecie parametrów ze stosu
  47.  
  48.     push 0 ; stała MB_OK            =======MBA========
  49. ; adres obszaru zawierającego tytuł
  50.     push OFFSET tytul_Win1250
  51. ; adres obszaru zawierającego tekst
  52.     push OFFSET tekst_Win1250
  53.     push 0 ; NULL
  54.     call _MessageBoxA@16
  55.  
  56.     push 0 ; stala MB_OK            =======MBW========
  57. ; adres obszaru zawierającego tytuł 10
  58.     push OFFSET tytul_Unicode
  59. ; adres obszaru zawierającego tekst
  60.     push OFFSET tekst_Unicode
  61.     push 0 ; NULL
  62.     call _MessageBoxW@16
  63.  
  64.     ret
  65. prog ENDP
  66.  
  67. _main:
  68.     call prog
  69.     push 0
  70.     call _ExitProcess@4
  71. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement