You are on page 1of 4

;Napisati program kojim se unosi do devet pozitivnih jednocifrenih brojeva

i odreuje
;koliko je od unijetih brojeva parno, a koliko neparno. Prikazati
odgovarajue poruke.

%include 'assembler/asm_io.inc'
segment .data
pocetna_poruka db "Unesite devet pozitivnih cijelih brojeva",0,10
broj_parnih_msg db "Broj parnih je: ",0
broj_neparnih_msg db "Broj neparnih je: ",0

segment .bss
broj_parnih resd 1
broj_neparnih resd 1

segment .text
global asm_main
asm_main:
enter 0,0
pusha

mov dword[broj_parnih],0
mov dword[broj_neparnih],0

mov eax,pocetna_poruka
call print_string
call print_nl

xor edx,edx
mov ebx,2
mov ecx,9 ;Postavljanje inicijalnog brojaca

read_loop:
call read_int ;Ucitavanje cijelog broja, rezultat u eax

div ebx
cmp edx,0 ;Ovo znaci da je broj djeljiv sa 2, tj paran je
je broj_je_paran
inc dword[broj_neparnih]
jmp bypass

broj_je_paran:
inc dword[broj_parnih]

bypass:
nop
dump_mem 1,broj_parnih,1
loop read_loop;Vrti se dok ecx ne padne na nulu
;
; Ispisivanje rezultata.
;

mov eax,broj_neparnih_msg
call print_string
mov eax,[broj_neparnih];stampanje broja neparnih brojeva
call print_int
call print_nl

mov eax,broj_parnih_msg
call print_string
xor eax,eax
mov eax,[broj_parnih] ;Stampanje broja parnih brojeva
call print_int
call print_nl

popa
mov eax,0
leave
ret

;Sabrati prvih N brojeva i rezultat prikazati sa odgovarajucim tekstom

%include 'assembler/asm_io.inc'
segment .data
pocetna_poruka db "Unesite maksimalan broj do koga se vrsi sabiranje:
",0
rezultat_poruka db "Zbir svih brojeva do broja N je: ",0

segment .bss
ukupan_broj resd 1

segment .text
global asm_main
asm_main:
enter 0,0
pusha

mov eax,pocetna_poruka
call print_string

xor ecx,ecx
mov dword[ukupan_broj],0

call read_int
mov ecx,eax

for:
add dword[ukupan_broj],ecx
loop for

mov eax,rezultat_poruka
call print_string
mov eax,[ukupan_broj]
call print_int
call print_nl

popa
mov eax,0
leave
ret

;Unijeti niz od N<10 jednocifrenih brojeva, a zatim izbaciti sve koji su


neparni

%include 'assembler/asm_io.inc'
segment .data
poruka_1 db "Unesite 10 proizvoljnih brojeva",0
space db " ",0
djelilac dd 2
;niz dd 0,0,0,0,0,0,0,0,0
segment .bss
niz resd 9

segment .text
global asm_main
asm_main:
enter 0,0
pusha

mov eax,poruka_1
call print_string
call print_nl

mov ebx,0 ;Ovo je index niza


mov ecx,9
mov edx,niz ;Ovo je lokacija na koju se upisuje

read_loop:
call read_int
mov dword[niz + ebx],eax
inc ebx
loop read_loop

call print_nl

mov edx,0
mov ebx,0
mov ecx,9

process_loop:
mov eax,dword[niz+ebx]
div dword[djelilac]
cmp edx,0
jne izbaci_neparni
jmp dumb

izbaci_neparni:
mov eax,0
mov dword[niz+ebx],eax

dumb:
nop

inc ebx
loop process_loop

mov ebx,0
mov ecx,9

print_loop:
mov eax,dword[niz+ebx]
inc ebx
call print_int
call print_nl
loop print_loop

;dump_mem 1,niz,2
popa
mov eax,0
leave
ret

You might also like