;kód szegmens kod segment para public 'code' assume cs:kod,ds:adat,ss:verem,es:nothing start: mov ax,adat ;ds betoltese mov ds,ax ;ds beallitasa ;foprogram kezdodik mov ax, offset sor push ax mov ax, 4 ;sorozat hossza push ax mov ax, 5 ;n push ax call ndiv add sp, 6 mov ah,4ch ;kilepes mov al,00h ;visszateresi kod int 21h ;dos megszakitás ;eljárás amelyik meghatározza, h. hány n-el osztható ;szám van sorozatban. Az eredményt ax-be teszi. ;1. param: 16 bites előjeltelen sorozat eleje ;2. param: hossz ;3. param: n ndiv proc push bp ;bp mentése mov bp, sp ;bp = si push si bx cx dx;regiszterek mentése mov si, [bp+8];sorozat eleje mov cx, [bp+6];hossz mov bx, 0 ;számolja az n-el osztható elemeket kezd: mov ax, [si] ;ax-be a sor következő eleme mov dx, 0 ;a köv. div dx:ax-et osztja! div word ptr [bp+4] ;osztunk n-el cmp dx, 0 jne nemoszthato inc bx ;számláló növel nemoszthato: add si, 2 ;kov elem loop kezd mov ax, bx ;eredmény ax-be pop dx cx bx si;regiszterek visszatöltése pop bp ret ndiv endp kod ends ;adat szegmens adat segment para public 'data' sor dw 3, 5, 10, 4 adat ends ;verem szegmens verem segment para stack dw 256 dup (0) ;helyfoglalás verem ends end start