Bitovno rastojanje
; NP koji određuje "bitovno rastojanje", za dva ; uneta karaktera. Bitovno rastojanje predstavlja ; broj pozicija na kojima se bitovi u ASCII zapisu ; razlikuju. ; koRoNAsTAvA / RiiIII8 / 20
.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? n db ? n1 db ? enter1 db ? njiri db ? rac db ? rac1 db ? vroom db ? .data novired db 13, 10, 0 .code start: ; vroom kao brojac pocinje na nuli i unosimo karaktere ; zajedno sa bh kao brojacem do 8 za binarnu vrednost mov vroom,'0' invoke StdIn, addr n, 1 invoke StdIn, addr enter1, 2 invoke StdOut, addr novired invoke StdIn, addr n1, 1 invoke StdIn, addr enter1, 2 invoke StdOut, addr novired mov bl,n mov cl,n1 mov bh,0 petlja: ; provera ako je bh inkrementiran preko nule i ; redno uzimanje cifre 0 ili 1 za prvi karakter inc bh cmp bh,8 jg kraj shl bl, 1 jc dalje mov rac,'0' bb1: ;redno uzimanje cifre 0 ili 1 za drugi karakter shl cl, 1 jc dalje1 mov rac1,'0' bb2: ; poredjenje te cifre i inkrementiranje vrednosti vroom ; ako se razlikuju i povratak na pocetak petlje mov al, rac cmp al, rac1 jne hexd jmp petlja dalje: mov rac,'1' jmp bb1 dalje1: mov rac1,'1' jmp bb2 hexd: inc vroom jmp petlja kraj: ;vracanje vrednosti vroom kao bitovne razdaljine invoke StdOut, addr vroom invoke ExitProcess, 0 predji proc invoke StdOut, addr novired ret predji endp end start
Test primeri: (Prokomentariši rešenja!)
C:\masm32\coRoNA\DoM20>5vikr B C 1 ( U navedenom primeru važi: zapis karaktera B je 01000010 (vidi ASCII tabelu), zapis karaktera C je 01000011. Binarni zapisi oba karaktera razlikuju se samo na nultoj poziciji. ) C:\masm32\coRoNA\DoM20>5vikr B A 2 ( U navedenom primeru važi: zapis karaktera B je 01000010 (vidi ASCII tabelu), zapis karaktera A je 01000001. Binarni zapisi oba karaktera razlikuju se na nultoj i prvoj poziciji. ) C:\masm32\coRoNA\DoM20>5vikr B a 3 ( U navedenom primeru važi: zapis karaktera B je 01000010 (vidi ASCII tabelu), zapis karaktera a je 01100001. Binarni zapisi oba karaktera razlikuju se na nultoj, prvoj, i petoj poziciji. )
Rešenje predložio: Viktor Radojević (+ Viktor Milivojević, Matija Obradović). Škola: Matematička gimnazija Kraljevo. Odeljenje: III-8. Koordinator Ukop(č)avanja: Jovan Pavlović. Ilustracija: Vera Molnar [France] (b 1924) - 'Hommage à Monet', 1983. Plotter drawing (21 x 27 cm).








