home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / tasm / chapxmpl.arc / DURCH.ASM < prev    next >
Encoding:
Assembly Source File  |  1988-10-09  |  1.4 KB  |  40 lines

  1. ;
  2. ; Assembler-Funktion., die von C aus aufgerufen werden,
  3. ; SMALL-Speichermodell
  4. ; Berechnet den Durchschnitt mehrerer Integerzahlen und ruft
  5. ; dazu eine C-Funktion auf, die schließlich die Division
  6. ; durchführt.
  7. ;
  8. ; Prototyp:
  9. ;     extern float Durchschnitt(int far * WertZgr, int AnzahlWerte);
  10. ;
  11. ; Eingabewerte:
  12. ;     int far * WertZgr :          ; Array mit Integer-Werten
  13. ;     int AnzahlWerte:             ; Anzahl der Werte
  14.  
  15.         DOSSEG
  16.         .MODEL  SMALL
  17.         EXTRN   _IntDivide:PROC
  18.         .Code
  19.         PUBLIC  _Durchschnitt
  20. _Durchschnitt   PROC
  21.         push    bp
  22.         mov     bp,sp
  23.         les     bx,[bp+4]          ; ES:BX zeigt auf Array mit Werten
  24.         mov     cx,[bp+8]          ; Anzahl an Werten für den Durchschnitt
  25.         mov     ax,0               ; Laufende Summe löschen
  26. Summe:
  27.         add     ax,es:[bx]         ; Aktuellen Wert addieren
  28.         add     bx,2               ; Zeiger auf den nächsten Wert
  29.         loop    Summe
  30.         push    WORD PTR [bp+8]    ; Anzahl an Werte auf den Stack
  31.         push    ax                 ; Summe übergeben
  32.         call    _IntDivide         ; Durchschnittt als
  33.                                    ; Fließkommazahl berechnen
  34.         add     sp,4               ; Parameter abräumen
  35.         pop     bp
  36.         ret                        ; Der Durchschnitt ist im obersten
  37.                                    ; 8087-Register
  38. _Durchschnitt   ENDP
  39.         END
  40.