fork download
  1. ; wczytywanie i wyswietlanie tekstu wielkimi literami
  2. ; (inne znaki sie nie zmieniaja)
  3. .686
  4. .model flat
  5. extern _ExitProcess@4 : PROC
  6. extern __write : PROC ; (dwa znaki podkreslenia)
  7. extern __read : PROC ; (dwa znaki podkreslenia)
  8. extrn _MessageBoxA@16 : near
  9. extrn _MessageBoxW@16 : near
  10. public _main
  11.  
  12. .data
  13. tekst_pocz db 10, 'Prosze napisac jakis tekst '
  14. db 'i nacisnac Enter', 10
  15. koniec_t db ?
  16. magazyn db 80 dup (?)
  17. nowa_linia db 10
  18. liczba_znakow dd ?
  19. ;tytul db 'Wynik',0
  20.  
  21. .code
  22. _main:
  23.  
  24. ; wyswietlenie tekstu informacyjnego
  25.  
  26. ; liczba znaków tekstu
  27. mov ecx,(OFFSET koniec_t) - (OFFSET tekst_pocz)
  28. push ecx
  29.  
  30. push OFFSET tekst_pocz ; adres tekstu
  31. push 1 ; nr urzadzenia (tu: ekran - nr 1)
  32. call __write ; wyswietlenie tekstu poczatkowego
  33.  
  34. add esp, 12 ; usuniecie parametrów ze stosu
  35.  
  36. ; czytanie wiersza z klawiatury
  37. push 80 ; maksymalna liczba znaków
  38. push OFFSET magazyn
  39. push 0 ; nr urzadzenia (tu: klawiatura - nr 0)
  40. call __read ; czytanie znaków z klawiatury
  41. add esp, 12 ; usuniecie parametrów ze stosu
  42.  
  43. ; kody ASCII napisanego tekstu zostały wprowadzone
  44. ; do obszaru 'magazyn'
  45.  
  46. ; funkcja read wpisuje do rejestru EAX liczbe
  47. ; wprowadzonych znaków
  48.  
  49. mov liczba_znakow, eax
  50.  
  51. ; rejestr ECX pełni role licznika obiegów petli
  52. mov ecx, eax
  53. mov ebx, 0 ; indeks poczatkowy
  54. ptl: mov dl, magazyn[ebx] ; pobranie kolejnego znaku
  55. ; pobranie kolejnego znaku
  56.  
  57. cmp dl, 0A5H
  58. je a
  59. cmp dl, 86H
  60. je ci
  61. cmp dl, 0A9H
  62. je e
  63. cmp dl, 88H
  64. je l
  65. cmp dl, 0E4H
  66. je n
  67. cmp dl, 0A2H
  68. je o
  69. cmp dl, 98H
  70. je s
  71. cmp dl, 0ABH
  72. je z1
  73. cmp dl, 0BEH
  74. je z2
  75.  
  76. cmp dl, 20H ;spacja
  77. je spacja
  78.  
  79. cmp dl, 5CH ;nowa linia
  80. je linia
  81.  
  82. cmp dl, 'a'
  83. jb dalej ; skok, gdy znak nie wymaga zamiany
  84. cmp dl, 'z'
  85. ja dalej ; skok, gdy znak nie wymaga zamiany
  86. sub dl, 20H ; zamiana na wielkie litery
  87.  
  88. jmp zmiana
  89.  
  90. spacja: mov dl, 2EH
  91. jmp zmiana
  92.  
  93. linia:
  94. mov dh, magazyn[ebx+1]
  95. cmp dh, 6EH
  96. je zmiana2
  97. jmp zmiana
  98.  
  99.  
  100. zmiana2:
  101. mov dl, 0AH
  102. jmp zmiana
  103.  
  104. a: mov dl, 0A4H
  105. jmp zmiana
  106. ci: mov dl, 8FH
  107. jmp zmiana
  108. e: mov dl, 0A8H
  109. jmp zmiana
  110. l: mov dl, 9DH
  111. jmp zmiana
  112. n: mov dl, 0E3H
  113. jmp zmiana
  114. o: mov dl, 0E0H
  115. jmp zmiana
  116. s: mov dl, 97H
  117. jmp zmiana
  118. z1: mov dl, 8DH
  119. jmp zmiana
  120. z2: mov dl, 0BDH
  121. jmp zmiana
  122. zmiana:
  123. ; odesłanie znaku do pamieci
  124. mov magazyn[ebx], dl
  125. dalej: inc ebx ; inkrementacja indeksu
  126. cmp dl, 0AH
  127. jnz dalej_2
  128. inc ebx
  129. dalej_2: dec ecx
  130. jnz ptl ; sterowanie petla
  131.  
  132. ; wyswietlenie przekształconego tekstu
  133. push liczba_znakow
  134. push OFFSET magazyn
  135. push 1
  136. call __write ; wyswietlenie przekształconego tekstu
  137. add esp, 12 ; usuniecie parametrów ze stosu
  138. push 0
  139. call _ExitProcess@4 ; zakonczenie programu
  140. END
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
eee\nmm
compilation info
prog.asm:3: error: attempt to define a local label before any non-local labels
prog.asm:4: error: attempt to define a local label before any non-local labels
prog.asm:4: error: parser: instruction expected
prog.asm:5: error: identifier expected after EXTERN
prog.asm:6: error: identifier expected after EXTERN
prog.asm:7: error: identifier expected after EXTERN
prog.asm:8: error: parser: instruction expected
prog.asm:9: error: symbol `extrn' redefined
prog.asm:9: error: parser: instruction expected
prog.asm:10: error: parser: instruction expected
prog.asm:16: error: comma expected after operand 1
prog.asm:27: error: expecting `)'
prog.asm:30: error: comma, colon or end of line expected
prog.asm:38: error: comma, colon or end of line expected
prog.asm:54: error: comma, colon or end of line expected
prog.asm:94: error: comma, colon or end of line expected
prog.asm:124: error: comma, colon or end of line expected
prog.asm:134: error: comma, colon or end of line expected
stdout
Standard output is empty