home *** CD-ROM | disk | FTP | other *** search
- ;
- ; Assembler-Funktion., die von C aus aufgerufen werden,
- ; SMALL-Speichermodell
- ; Berechnet den Durchschnitt mehrerer Integerzahlen und ruft
- ; dazu eine C-Funktion auf, die schließlich die Division
- ; durchführt.
- ;
- ; Prototyp:
- ; extern float Durchschnitt(int far * WertZgr, int AnzahlWerte);
- ;
- ; Eingabewerte:
- ; int far * WertZgr : ; Array mit Integer-Werten
- ; int AnzahlWerte: ; Anzahl der Werte
-
- DOSSEG
- .MODEL SMALL
- EXTRN _IntDivide:PROC
- .Code
- PUBLIC _Durchschnitt
- _Durchschnitt PROC
- push bp
- mov bp,sp
- les bx,[bp+4] ; ES:BX zeigt auf Array mit Werten
- mov cx,[bp+8] ; Anzahl an Werten für den Durchschnitt
- mov ax,0 ; Laufende Summe löschen
- Summe:
- add ax,es:[bx] ; Aktuellen Wert addieren
- add bx,2 ; Zeiger auf den nächsten Wert
- loop Summe
- push WORD PTR [bp+8] ; Anzahl an Werte auf den Stack
- push ax ; Summe übergeben
- call _IntDivide ; Durchschnittt als
- ; Fließkommazahl berechnen
- add sp,4 ; Parameter abräumen
- pop bp
- ret ; Der Durchschnitt ist im obersten
- ; 8087-Register
- _Durchschnitt ENDP
- END
-