fork download
  1. ;=============================================================================;
  2. ; ;
  3. ; Plik : arch2.asm ;
  4. ; Format : COM ;
  5. ; Cwiczenie : Kod U2 ;
  6. ; Autorzy : Bartosz Kapusta,Wojciech Kaszyński ,6 ,wtorek ,11:00 ;
  7. ; Data zaliczenia: 05.04.2011 ;
  8. ; Uwagi : Program wczytuje z klawiatury dwie liczby calkowite ;
  9. ; z przedzialu [-32768..32767] wprowadzane w postaci znakow ;
  10. ; ASCII, konwertuje je do 16-bitowej postaci obliczeniowej ;
  11. ; w kodzie U2, oblicza ich sume reprezentowana w 32-bitowej ;
  12. ; postaci kodu U2, a nastepnie dokonuje jej konwersji do ;
  13. ; postaci znakow ASCII i wyswietla ja w tej postaci na ;
  14. ; ekranie. ;
  15. ;=============================================================================;
  16.  
  17. .MODEL TINY
  18.  
  19. MAX_ZNAKOW EQU 6 ; maksymalna liczba znakow
  20. ; liczby wprowadzanej przez
  21. ; uzytkownika
  22. CRLF EQU 13,10 ; znak nowej linii
  23. ENTERR EQU 13 ; klawisz enter
  24.  
  25. KOD SEGMENT
  26. ORG 100h ; przesuniecie o 256 bajtow
  27. ASSUME CS:Kod ; jedyny segment programu wskazujacy na to ze program jest typu .com
  28.  
  29.  
  30. WczytajZnak MACRO
  31. ; Dzialanie:
  32. ; Makro wczytuje znak z klawiatury bez echa.
  33. ; Uzywane rejestry:
  34. ; AH
  35. mov ah, 08h
  36. int 21h
  37. ENDM
  38.  
  39. WyswietlZnak MACRO Znak
  40. ; Dzialanie:
  41. ; Makro wyswietla podany znak na ekranie.
  42. ; Parametry:
  43. ; Znak - znak do wyswietlenia
  44. ; Uzywane rejestry:
  45. ; AH, DL
  46. mov dl, Znak
  47. mov ah, 02h
  48. int 21h
  49. ENDM
  50.  
  51. WyswietlNapis MACRO Napis
  52. ; Dzialanie:
  53. ; Makro wyswietla podany napis zakonczony znakiem '$' na ekranie.
  54. ; Parametry:
  55. ; Napis - napis do wyswietlenia
  56. ; Uzywane rejestry:
  57. ; AH, DX
  58. mov dx, OFFSET Napis
  59. mov ah, 09h
  60. int 21h
  61. ENDM
  62.  
  63. WczytISkonwU2 MACRO Bufor, LiczbaZnakow
  64. local doit
  65. ; Dzialanie:
  66. ; Makro wczytuje z klawiatury znaki traktujac je jako liczbe
  67. ; w postaci ciagu znakow ASCII i konwertuje ja do postaci obliczeniowej
  68. ; w kodzie U2.
  69. ; Parametry:
  70. ; Bufor - bufor, gdzie umieszczane beda wczytywane znaki
  71. ; LiczbaZnakow - maksymalna liczba znakow do wczytania
  72. ; Wyjscie:
  73. ; CF - 0 gdy powodzenie, 1 gdy niepowodzenie
  74. ; AX - o ile CF=0 - skonwertowana liczba w kodzie U2
  75. ; Uzywane rejestry:
  76. ; BX, CX
  77. doit:
  78. mov bx, OFFSET Bufor ;wczytujemy poczatek bufora
  79. mov cx, LiczbaZnakow
  80. call WczytajLiczbe ;wykonujemy skok do wcztania liczby
  81. mov bx, OFFSET Bufor
  82. mov cx, LiczbaZnakow ;wczytujemy do rejestru cx ilosc znakow wpisanych przez uzytkownika
  83. call Zakres ;sprawdzamy zakres
  84.  
  85. jc doit ;skok jesli cf=1
  86. mov bx, OFFSET Bufor ;wczytujemy poczatek bufora ponownie ,liczba jest ok
  87. mov cx, LiczbaZnakow ;wczytujemy do rejestru cx ilosc znakow wpisanych przez uzytkownika
  88. call KonwertujLiczbe ;wykonujemy skok do konwertowania liczby
  89. ENDM
  90.  
  91. Sumuj MACRO Skladnik1, Skladnik2, Suma
  92.  
  93. mov ax, Skladnik1 ; pobierz pierwszy skladnik
  94. add ax, Skladnik2 ; dodaj drugi skladnik
  95. mov WORD PTR Suma, ax ; zapamietaj mlodsze slowo
  96. jmp druga ; wyniku w zmiennej
  97. pierwsza:
  98. jo ZFOF ; skok jesli wystapil nadmiar ZF=OF=1
  99. jmp ZF ; skok jesli ZF=1, OF=0
  100. druga:
  101. jz pierwsza ; skok jezeli zf=1
  102. jo ZF ; skok jesli wystapil nadmiar ZF=0,OF=1
  103. js ZFOF ; skok jesli liczba jest ujemna ,ZF=OF=0, SF=1
  104. jmp ZF ; a jak nie to dodatnia
  105.  
  106.  
  107.  
  108. ZFOF:
  109. mov WORD PTR Suma + 2, 0FFFFh
  110. jmp koniec_proc
  111. ZF:
  112. mov WORD PTR Suma + 2, 0 ; zapelnij zerem starsze bajty
  113. koniec_proc:
  114. ENDM
  115.  
  116. SkonwASCII MACRO Liczba, Bufor
  117. LOCAL Cyfra
  118. ; Dzialanie:
  119. ; Makro konwertuje liczbe z 32-bitowej postaci obliczeniowej do postaci
  120. ; ciagu znakow ASCII, ktore zapamietuje w buforze.
  121. ; Parametry:
  122. ; Liczba - konwertowana liczba w 32-bitowej postaci obliczeniowej
  123. ; Bufor - bufor, gdzie umieszczone beda znaki liczby po konwersji
  124. ; Uzywane rejestry:
  125. ; AX, BL, DI
  126.  
  127. push dx ; odkladamy rejestry wykorzystywane na stos
  128. mov ax, WORD PTR Liczba ; pobierz liczbe
  129. mov di, OFFSET Bufor ; ustaw wskaznik na poczatek
  130. ; bufora
  131. mov cx,0
  132. mov dx, WORD PTR Liczba + 2
  133. cmp dx, 0FFFFh ; porownujemy dx z 65535
  134. jne plus ; jezeli nie to oznacza ze liczba jest dodatnia poniewaz nie ma na poczatku '1'
  135. mov dl, 45 ;wkladamy do dl 45
  136. mov [di], dl
  137. inc di
  138. cmp ax, 0
  139. jne negacja
  140. mov dx, 54
  141. push dx ; zdejmujemy rejestry wykorzystywane w procedurze ze stosu
  142. inc cx ; zwiekszamy wskaznik
  143. jmp plus
  144. negacja:
  145. neg ax ;negujemy rejestr ax
  146. plus:
  147. mov dx, 0 ; zerujemy rejestr dx
  148. cmp ax, 10 ; czy liczba mniejsza niz 10?
  149. jb Cyfra ; tak - skocz
  150. mov bx, 10 ; wkladamy dzielnik do bx
  151. div bx ; dzielimy przez 10
  152. add dx, 48 ; skonwertuj starsza cyfre do postaci ASCII
  153. inc cx ; zwiekszamy wskaznik
  154. push dx ; odkladamy rejestr wykorzystywany na stos
  155. jmp plus
  156. Cyfra:
  157. add al, '0' ; skonwertuj cyfre do postaci ASCII
  158. mov [di], al ; zapamietaj otrzymany znak w buforze
  159. inc di ; zwieksz pozycje wskaznika
  160. znaczek:
  161. cmp cx, 0
  162. je koniec
  163. pop dx ; zdjemujemy rejestr ze stosu
  164. mov [di], dx ; zapamietaj otrzymany znak w buforze
  165. inc di ; zwiekszamy wskaźnik
  166. loop znaczek
  167. koniec:
  168. mov BYTE PTR [di], '$' ; oznacz koniec stringa
  169. pop dx ; zdjemujemy rejestr ze stosu
  170. ENDM
  171.  
  172. poczatek:
  173. jmp start ; skok do programu glownego
  174. Skladnik1 DW (?) ; pierwsza liczba
  175. Skladnik2 DW (?) ; druga liczba
  176. ileznakow DW (?) ; ilosc znakow wpisanych przez uzytkownika
  177. Suma DD (?) ; suma dwoch skladnikow
  178. Bufor1 DW MAX_ZNAKOW DUP (?) ; bufor dla pierwszego skladnika
  179. Bufor2 DW MAX_ZNAKOW DUP (?) ; bufor dla drugiego skladnika
  180. BuforWynik DB MAX_ZNAKOW + 2 DUP (?) ; bufora dla sumy dwoch skladnikow
  181. txtPowitanie DB "Program sumuje dwie liczby calkowite z zakresu " ; tekst wyswietlany przy uruchomieniu programu
  182. DB "[-32768..32767].$"
  183. txtZlec1 DB CRLF,"Podaj pierwsza liczbe: $" ;prosba o podanie pierwszej liczby
  184. txtZlec2 DB CRLF,"Podaj druga liczbe: $" ;prosba o podanie drugiej liczby
  185. txtZakresZly DB CRLF,"Podana przez Ciebie liczba znajduje sie poza zakresem! Podaj liczbe z przedzialu [-32768,32767] : $" ; wyswietlenie informacji o zlej liczbie wpisanej przez uzytkownika
  186. txtWynik DB CRLF,"Wynik wynosi: $" ; wyswietlenie informacji o wyniku dodawania
  187. minimum DB "32768" ; minimalna liczba ktora moze wpisac uzytkownik
  188. maximum DB "32767" ; maxymalna liczba ktora moze wpisac uzytkownik
  189.  
  190. Zakres PROC NEAR
  191. ; Dzialanie:
  192. ; Procedura sprawdza czy liczba podana przez uzytkownika znajduje sie w
  193. ; zakresie [-32768;32767]
  194. ; Uzywane rejestry:
  195. ; AX, CX, BX
  196. push ax ;odkladamy rejestr wykorzystywany w procedurze na stos
  197. mov cx, ileznakow ;wkladamy do rejestru ilosc znakow wpisanych przez uzytkownika
  198. cmp cx, 5 ; czy liczba ma 5 znakow ?
  199. jbe good ; jesli jest mniej lub 5 znakow to robimy skok do etykiety good
  200. mov al, [bx] ;czy ma 5 znakow ? jak tak to sprawdzamy dalej
  201. cmp al, '-' ;czy liczba ma '-'?
  202. je Sprawdzujemna ;jezeli jest'-' robimy skok do etykiety sprawdzujemna
  203. mov si, OFFSET maximum ;wkladamy do wskaznika wartosc maxymalna
  204. jmp spr
  205. Sprawdzujemna:
  206. mov si, OFFSET minimum ;wkladamy do wskaznika wartosc minimalna
  207. dec cx ; zmniejszamy wskaznik
  208. inc bx ; opuszczamy '-' wpisany przez uzytkownika
  209. cmp cx, 5 ; czy po opuszczeniu ma 5 znakow ?
  210. jb good ; jesli liczba ma mniej niz 5 znakow wykonujemy skok do etykiety good
  211. spr:
  212. mov al, [bx] ; wkladamy cyfre aktualnie znajdujaca sie w bx do rejestru al
  213. cmp al, [si] ; porownujemy liczbe z zakresem wartosci
  214. jb good ; jesli zakres jest ok , robimy skok do good
  215. cmp al, [si] ; porownujemy liczbe z zakresem wartosci
  216. ja bad ; jezeli zakres jest zly , robimy skok do bad
  217. inc bx ; zwiekszamy wskaznik
  218. inc si ; zwiekszamy wskaznik
  219. loop spr
  220. good:
  221. clc ; cf = 0
  222. jmp koniecsprawdzania ; zakres jest ok, konczymy sprawdzanie
  223. bad:
  224. WyswietlNapis txtZakresZly ; wyswietlamy informacje o wpisaniu przez uzytkownika liczby spoza zakresu
  225. stc ; cf = 1
  226. koniecsprawdzania:
  227. pop ax ; zdejmujemy rejestr wykorzystywany w procedurze ze stosu
  228. ret ; poprawne zakonczenie procedury
  229. Zakres ENDP
  230.  
  231. WczytajLiczbe PROC NEAR
  232. ; Dzialanie:
  233. ; Procedura wczytuje ciag znakow z klawiatury stanowiacych liczbe
  234. ; w postaci ASCII i zapisuje je do bufora. Przeprowadzana jest kontrola
  235. ; dopuszczalnosci wprowadzanych znakow.
  236. ; Wejscie:
  237. ; DS:BX - bufor
  238. ; CX - maksymalna liczba znakow do wczytania
  239. ; Wyjscie:
  240. ; Brak
  241.  
  242. push ax ; odloz rejestry wykorzystywane w procedurze
  243. push dx
  244.  
  245. kolejnyznak:
  246. WczytajZnak ; wczytaj znak bez echa
  247. cmp al, '-' ; czy znak jest minus?
  248. je ujemna ; tak - przejdz do zapamietania
  249. cmp al, '0' ; czy znak jest cyfra?
  250. jb kolejnyznak ; nie - ignoruj znak i przejdz do wczytania
  251. ; kolejnego
  252. cmp al, '9'
  253. ja kolejnyznak ; jesli znak jest wiekszy od 9 , ponownie wczytujemy znak
  254. dec cx ; zmniejszamy wskaznik
  255. ujemna:
  256. mov [bx], al ; tak - zapamietaj znak w buforze
  257. inc bx ; zwieksz pozycje wskaznika w buforze
  258. WyswietlZnak al ; wyswietl wczytany znak
  259. dec cx ; zmniejszamy wskaznik
  260. Wczytywanie:
  261. WczytajZnak ; wczytaj znak bez echa
  262. cmp cx, 4 ;jesli nie ma jeszcze zadnej cyfry nie sprawdzaj entera
  263. ja bezcrlf
  264. cmp al, ENTERR ; czy zostal wcisniety enter?
  265. jne bezcrlf ; jezeli nie ma to sprawdzamy dalej
  266. jmp loaded ; zostal wcisniety enter, konczymy wczytywanie
  267. bezcrlf:
  268. cmp al, '0' ; czy znak jest cyfra?
  269. jb Wczytywanie ; nie - ignoruj znak i przejdz do wczytania
  270. ; kolejnego
  271. cmp al, '9'
  272. ja Wczytywanie ; jesli wieksze od 9 , wczytujemy ponownie
  273. mov [bx], al ; tak - zapamietaj znak w buforze
  274. inc bx ; zwieksz pozycje wskaznika w buforze
  275. WyswietlZnak al ; wyswietl wczytany znak
  276. loop Wczytywanie ; przejdz do wczytania kolejnego znaku, o ile
  277. loaded: ; nie wczytano juz wszystkich
  278.  
  279. mov dx, MAX_ZNAKOW ; wkladamy do dx maxymalna ilosc znakow jaka moze wpisac uzytkownik
  280. sub dx, cx ; odejmujemy wartosc wskaznika w ktorym aktualnie sie znajduje od maxymalnej ilosci
  281. mov ileznakow, dx ; otrzymujemy ilosc znakow wpisanych przez uzytkownika
  282. cmp cx, 0 ;czy liczba 5-cyfrowa?
  283. jne endit ; jesli nie jest to konczymy
  284. Enterek:
  285. WczytajZnak ; jesli liczba jest 5-cyfrowa, to poczekaj
  286. cmp al, ENTERR ; na zatwierdzenie enterem
  287. jne Enterek ; jesli nie zostal wcisniety enter to czekamy na niego
  288. endit:
  289. pop dx ; odtworz rejestry wykorzystywane w procedurze
  290. pop ax
  291. ret
  292. WczytajLiczbe ENDP
  293.  
  294. KonwertujLiczbe PROC NEAR
  295. ; Dzialanie:
  296. ; Procedura konwertuje liczbe zapisana w buforze w postaci ciagu znakow
  297. ; ASCII do 16-bitowej postaci obliczeniowej w kodzie U2.
  298. ; Wejscie:
  299. ; DS:BX - bufor
  300. ; Wyjscie:
  301. ; CF - 0 gdy powodzenie, 1 gdy niepowodzenie
  302. ; AX - o ile CF=0 - skonwertowana liczba w kodzie U2
  303.  
  304. ;; DO ZROBIENIA:
  305. ;; Zmodyfikowac procedure umozliwoajac konwersje liczb z pelnego zakresu.
  306. ;; W przypadku stwierdzenia sytuacji uniemozliwiajacej poprawne konwersje
  307. ;; zwrocic informacje o niepowodzeniu ustawiajac znacznik CF.
  308. push dx ; odkladamy rejestry wykorzystywane w procedurze
  309. mov cx, ileznakow ; wkladamy do wskaznika ilosc znakow wpisanych przez uzytkownika
  310. mov si, bx
  311. mov al, [bx]
  312. cmp al, '-' ; czy liczba wpisana przez uzytkownika jest ujemna ?
  313. jne signit ; liczba jest dodatnia
  314. inc bx ; pomijamy znak '-' wpisany przez uzytkownika
  315. signit:
  316. dec cx ;zmniejszamy wskaznik
  317. dec cx ;zmniejszamy wskaznik
  318. mov ax, cx
  319. nextto:
  320. cmp cx, 0
  321. je next
  322. inc bx
  323. loop nextto
  324. next:
  325. mov cx, ax
  326. mov ax, 1
  327. mov dx, [bx]
  328. xor dh, dh
  329. sub dx, 48 ;zamieniam kod ascii na cyfre, odejmujac 48
  330. cmp cx, 0
  331. je endofconversion
  332. dalej:
  333. dec bx
  334. push bx ;wstawiamy ciag na stos
  335. push dx ;wstawiamy liczbe na stos
  336. mov dx, 10 ;ustalam mnoznik ax * 10
  337. mul dx ;mnoze ax
  338. mov dx, [bx] ;do dx przekladam znak
  339. mov dh, 0
  340. sub dx, 48 ;zamieniam kod ascii na cyfre
  341. push ax ; odkladam mnoznik
  342. mul dx ;mnoze ax razy znak
  343. pop bx ;pobieram mnoznik do bx
  344. pop dx ;pobieram liczbe
  345. add dx, ax ;dodaje do liczby wynik mnozenia
  346. mov ax, bx ;przywracam do ax mnoznik
  347. pop bx ;pobieram ciag znakow
  348. loop dalej
  349. endofconversion:
  350. mov al, [si]
  351. cmp al, '-' ; czy liczba wpisana przez uzytkownika jest ujemna ?
  352. jne dodatnia ; dodatnia
  353. neg dx
  354. dodatnia:
  355.  
  356. mov ax, dx
  357. clc ; ustaw znacznik, ze procedura zakonczyla sie
  358. ; poprawnie
  359. pop dx
  360. ret
  361. KonwertujLiczbe ENDP
  362.  
  363. Start:
  364. mov ax, seg kod
  365. mov ds, ax
  366. WyswietlNapis txtPowitanie ; wyswietl napis powitalny
  367. WyswietlNapis txtZlec1 ; wyswietl napis nakazujacy
  368. ; wprowadzenie 1-szej liczby
  369. WczytISkonwU2 Bufor1, MAX_ZNAKOW ; wczytaj liczbe z
  370. ; z klawiatury i
  371. ; skonwertuj do
  372. ; postaci U2
  373. jc Blad ; jezeli wystapil blad - skocz
  374. mov Skladnik1, ax ; w przeciwnym razie zapamietaj
  375. ; skonwertowana liczbe w zmiennej
  376. WyswietlNapis txtZlec2 ; wyswietl napis nakazujacy
  377. ; wprowadzenie 2-giej liczby
  378. wczytiskonwu2 bufor2, MAX_ZNAKOW ;konwersja2 Bufor2, MAX_ZNAKOW
  379. ; wczytaj liczbe z
  380. ; z klawiatury i
  381. ; skonwertuj do
  382. ; postaci U2
  383. jnc Zsumuj ; jezeli nie wystapil blad - skocz
  384. Blad:
  385. mov ax, 4C01h ; w przeciwnym razie zakoncz program
  386. int 21h ; z kodem powrotu oznaczajacym
  387. ; wystapienie bledu
  388. Zsumuj:
  389. mov Skladnik2, ax ; zapamietaj skonwertowana liczbe
  390. ; w zmiennej
  391. Sumuj Skladnik1, Skladnik2, Suma ; zsumuj obie
  392. ; wprowadzone liczby
  393. ; i zapamietaj wynik
  394. ; w zmiennej
  395. SkonwASCII Suma, BuforWynik ; skonwertuj wynik do postaci
  396. ; ASCII i zapamietaj w buforze
  397. WyswietlNapis txtWynik ; wyswietl napis informujacy o wyniku
  398. WyswietlNapis BuforWynik ; wyswietl wynik w postaci
  399. ; ASCII
  400. mov ax, 4C00h ; zakoncz program z kodem powrotu
  401. int 21h ; zakonczenia poprawnego
  402.  
  403. Kod ENDS ;koniec segmentu
  404.  
  405. END Poczatek ;wywolanie etykiety poczatek
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.asm:17: error: attempt to define a local label before any non-local labels
prog.asm:17: error: parser: instruction expected
prog.asm:22: error: bad syntax for EQU
prog.asm:25: error: parser: instruction expected
prog.asm:26: error: parser: instruction expected
prog.asm:27: error: parser: instruction expected
prog.asm:30: error: parser: instruction expected
prog.asm:39: error: parser: instruction expected
prog.asm:49: error: symbol `ENDM' redefined
prog.asm:51: error: parser: instruction expected
prog.asm:58: error: comma, colon or end of line expected
prog.asm:61: error: symbol `ENDM' redefined
prog.asm:63: error: parser: instruction expected
prog.asm:64: error: parser: instruction expected
prog.asm:78: error: comma, colon or end of line expected
prog.asm:81: error: comma, colon or end of line expected
prog.asm:86: error: comma, colon or end of line expected
prog.asm:89: error: symbol `ENDM' redefined
prog.asm:91: error: parser: instruction expected
prog.asm:95: error: comma, colon or end of line expected
prog.asm:109: error: comma, colon or end of line expected
prog.asm:112: error: comma, colon or end of line expected
prog.asm:114: error: symbol `ENDM' redefined
prog.asm:116: error: parser: instruction expected
prog.asm:117: error: parser: instruction expected
prog.asm:128: error: comma, colon or end of line expected
prog.asm:129: error: comma, colon or end of line expected
prog.asm:132: error: comma, colon or end of line expected
prog.asm:168: error: comma, colon or end of line expected
prog.asm:170: error: symbol `ENDM' redefined
prog.asm:178: error: comma expected after operand 1
prog.asm:179: error: comma expected after operand 1
prog.asm:180: error: comma expected after operand 1
prog.asm:190: error: parser: instruction expected
prog.asm:203: error: comma, colon or end of line expected
prog.asm:206: error: comma, colon or end of line expected
prog.asm:224: error: symbol `WyswietlNapis' redefined
prog.asm:224: error: parser: instruction expected
prog.asm:229: error: symbol `Zakres' redefined
prog.asm:229: error: parser: instruction expected
prog.asm:231: error: parser: instruction expected
prog.asm:246: error: symbol `WczytajZnak' redefined
prog.asm:258: error: symbol `WyswietlZnak' redefined
prog.asm:258: error: parser: instruction expected
prog.asm:261: error: symbol `WczytajZnak' redefined
prog.asm:275: error: symbol `WyswietlZnak' redefined
prog.asm:275: error: parser: instruction expected
prog.asm:285: error: symbol `WczytajZnak' redefined
prog.asm:292: error: symbol `WczytajLiczbe' redefined
prog.asm:292: error: parser: instruction expected
prog.asm:294: error: parser: instruction expected
prog.asm:361: error: symbol `KonwertujLiczbe' redefined
prog.asm:361: error: parser: instruction expected
prog.asm:366: error: symbol `WyswietlNapis' redefined
prog.asm:366: error: parser: instruction expected
prog.asm:367: error: symbol `WyswietlNapis' redefined
prog.asm:367: error: parser: instruction expected
prog.asm:369: error: symbol `WczytISkonwU2' redefined
prog.asm:369: error: parser: instruction expected
prog.asm:376: error: symbol `WyswietlNapis' redefined
prog.asm:376: error: parser: instruction expected
prog.asm:378: error: parser: instruction expected
prog.asm:391: error: symbol `Sumuj' redefined
prog.asm:391: error: parser: instruction expected
prog.asm:395: error: symbol `SkonwASCII' redefined
prog.asm:395: error: parser: instruction expected
prog.asm:397: error: symbol `WyswietlNapis' redefined
prog.asm:397: error: parser: instruction expected
prog.asm:398: error: symbol `WyswietlNapis' redefined
prog.asm:398: error: parser: instruction expected
prog.asm:403: error: parser: instruction expected
prog.asm:405: error: parser: instruction expected
stdout
Standard output is empty