N
karakterből álló sztringről,
közeli hívású eljárás
formájában.
Input: S
egy N
db. karaktert
tartalmazó sztring; T
egy 256 szóból
álló vektor; N
pozitív egész
változó.
Az eljárás S
és T
távoli címét, valamint N
értékét a vermen keresztül kapja:
mov ax,seg S
push ax
mov ax,offset S
push ax
mov ax,seg T
push ax
mov ax,offset T
push ax
mov ax,[N]
push ax
call STATISZTIKA
Output: T
vektor 0. szava azt tartalmazza, hogy
S
-ben hány db. 00h
kódú
bájt van. Hasonlóan T
1. szava jelzi azt,
hogy S
-ben hány db. 01h
kódú karakter található, stb. ...
(T
nincsen inicializálva 0-val, ezt meg kell tenni!
E mellett a vermet visszatérés előtt ki kell
takarítani!)
STATISZTIKA proc near
push bp
mov bp,sp
push bx cx si di ds es
pushf
lds si,[bp+10]
les di,[bp+6]
push di
mov cx,256
xor bx,bx
@TOROL:
mov word ptr es:[di],bx
add di,2
loop @TOROL
pop di
mov cx,[bp+4]
@CIKLUS:
mov bl,[si]
xor bh,bh
shl bx,1
inc word ptr es:[di+bx]
inc si
loop @CIKLUS
popf
pop es ds di si cx bx
pop bp
ret 10
STATISZTIKA endp
M
^N
értékének kiszámítására
("^" itt a hatványozást jelenti).
Input: M
a hatványalapot tartalmazó
előjeles, szó méretű egész
változó; N
a kitevőt megadó
nemnegatív, szó méretű egész
változó. Tegyük fel, hogy
M
^(N
-1) még elfér 16 biten!
Az eljárás M
és N
értékét a vermen
keresztül kapja meg:
sub sp,4
mov ax,[M]
push ax
mov ax,[N]
push ax
call HATVANY
Output: A 32 bites hatvány értékét a hívó által lefoglalt duplaszó területén kell elhelyezni a verembe. (0^0=1! A vermet visszatérés előtt ki kell takarítani!)
HATVANY proc near
push bp
mov bp,sp
push ax bx cx dx
pushf
mov dx,0
mov ax,1
mov cx,[bp+4]
jcxz @VEGE
mov ax,[bp+6]
cwd
dec cx
jcxz @VEGE
mov bx,ax
@CIKLUS:
imul bx
loop @CIKLUS
@VEGE:
mov [bp+8],ax
mov [bp+10],dx
popf
pop dx cx bx ax
pop bp
ret 4
HATVANY endp
N
! értékének
kiszámítása közeli hívású
rekurzív eljárás segítségével.
Input: N
nemnegatív egész
vátozó. Tegyük fel, hogy (N
-1)! még
elfér 16 biten! Az eljárás N
értékét a vermen keresztül kapja meg:
mov ax,[N]
push ax
call FAKT
Output: DX:AX
tartalmazza N
!
értékét. (0!=1 !)
FAKT proc near
push bp
mov bp,sp
pushf
mov ax,1
mov dx,0
cmp word ptr [bp+4],0000h
je @VEGE
mov ax,[bp+4]
dec ax
push ax
call FAKT
mul word ptr [bp+4]
@VEGE:
popf
pop bp
ret 2
FAKT endp
Módosítva: 2003. október 22.