.386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\masm32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib .data? karakter db ? enter1 db 2 dup(?) levo db ? desno db ? .data poruka db "Unesi karakter:", 0 poruka1 db "Jeste palindrom!", 0 poruka2 db "Nije palindrom!", 0 .code start: invoke StdOut,addr poruka invoke StdIn,addr karakter,1 invoke StdIn,addr enter1,2 MOV AL,karakter MOV CL,karakter ; AH ostaje 1 ako je karakter palindrom ; ako se u jednom paru elementi razlikuju on postaje 0 MOV AH,1 MOV BH,0 for1: ; 4 prolaza u petlji zato sto uzimamo po jedan bit s obe strane cmp BH,4 je kraj ADD BH,'1' ; provera da li su elementi sa leve strane 0 ili 1 shl AL,1 ; slucaj kada je s leve strane element 0 jc prvi MOV levo,'0' ;provera da li su elementi sa desne strane 0 ili 1 shr CL,1 jc drugi ;slucaj kada je s desne strane element 0 MOV desno,'0' jmp prekrajfor1 ; slucaj kada je s leve strane element 1 prvi: MOV levo,'1' shr CL,1 jc drugi MOV desno,'0' jmp prekrajfor1 ; slucaj kada je s desne strane element 1 drugi: MOV desno,'1' jmp prekrajfor1 prekrajfor1: MOV BL,levo ; gleda se da li je uzeti element s leve ; jednak uzetom elementu s desne strane cmp BL,desno je for1 MOV AH,0 ; prvi put kada naidjemo na par kom elementi nisu jednaki zavrsavamo ; s daljim proverama i stampamo poruku da broj nije palindrom jmp kraj kraj: cmp AH,1 je kraj1 invoke StdOut,addr poruka2 jmp kraj2 kraj1: invoke StdOut,addr poruka1 kraj2: invoke ExitProcess, 0 end start
C:\masm32\coRoNA\DoM20>4nem Unesi karakter: B Jeste palindrom! ( U navedenom primeru važi: zapis karaktera B je 01000010 (vidi ASCII tabelu), dakle, binarni zapis karaktera je palindrom. ) C:\masm32\coRoNA\DoM20>4nem Unesi karakter: b Nije palindrom! ( U navedenom primeru važi: zapis karaktera b je 01100010 (vidi ASCII tabelu), dakle, binarni zapis karaktera nije palindrom. ) C:\masm32\coRoNA\DoM20>4nem Unesi karakter: ~ Jeste palindrom! ( U navedenom primeru važi: zapis karaktera ~ je 01111110 (vidi ASCII tabelu), dakle, binarni zapis karaktera je palindrom. )
Rešenje predložio: Nemanja Bratić
(+ Mihajlo Trifunović, Đorđe Trifunović).
Škola: Matematička gimnazija Kraljevo.
Odeljenje: III-8.
Koordinator Ukop(č)avanja: Jovan Pavlović.
Ilustracija:
Vera Molnar [France] (b 1924) -
'2 Rangees de Rectangles', 1985.
Plotter drawing, ink on paper, (28 x 21 cm).