wraz z kolegą napisałem coś takiego co korzysta z C i oblicza a do x teraz tylko muszę to jakoś przerobić na log o ile wogóle da się to zrobić może ktoś ma jakiś pomysł?;>
) ja powoli tracę wiarę ;/
section .text use32
global _ax
_ax:
; po wykonaniu push ebp i mov ebp, esp;
; [ebp] old EBP location
; [ebp+4] return pointfrom procedure
; [ebp+8] the first parameter of the procedure
; [ebp+12] the second parameter of the procedure
;cd c:\borland\bcc55\bin
;nasmw -o axo.obj -f obj ax.asm
;bcc32 ax.c axo.obj
%idefine a [ebp+8] ;pierwszy parametr z C
%idefine x [ebp+12] ;drugi parametr z C
push ebp
mov ebp, esp
finit
fld dword a ;st2 wczytuje podstawe potegowania, czyli liczbe a
fld dword a ;st1 wczytuje podstawe potegowania, czyli liczbe a
fild dword x ;st0 wczytuje wykladnik potegowania, liczba x
fistp dword [xx] ;zapisuje st0 do [xx] i zdejmuje ze stosu, teraz st0=a st1=a
potega: ;do odpalenia petli potegowania w st0 i st1 musi byc podstawa potegowania > a
xor ax,ax ;zerowanie ax
mov ax,[xx] ;kopiowanie [xx] do ax, [xx] = x czyli wykladnik
petlap:
cmp ax,1 ;porownywanie ax z 1
je exitpo ;jesli jest rowne to skacze do exitpo
sub ax,1 ;odejmowanie od ax - 1
fmul st1 ;mnozenie st0 * st1
loop petlap ;powtarznie petli
exitpo:
;LEAVE = mov esp, ebp / pop ebp
leave
ret
xx dd 0