Professional Documents
Culture Documents
Assembler
Assembler
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
%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
%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
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