home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / das_buch / asemblr / asm / _386.asm next >
Encoding:
Assembly Source File  |  1993-06-05  |  2.3 KB  |  91 lines

  1. ; -------------------------------------------------------------
  2. ; Assemblermodul zu _386.PAS
  3. ; Funktion: Stellt schnelle 386er Routinen zu Verfügung
  4. ;
  5. ; Autor: Sven Letzel
  6. ; Datum: 18.04.1993
  7. ;
  8. ; ASM -> OBJ: TASM _386
  9. ; -------------------------------------------------------------
  10.  
  11. MODEL LARGE
  12.  
  13. .CODE
  14. .386
  15. .387
  16.  
  17. PUBLIC   Sin387
  18. PUBLIC   Cos387
  19. PUBLIC   Mem386Copy
  20. PUBLIC   Scan386
  21. PUBLIC   SetBit
  22. PUBLIC   ClearBit
  23.  
  24. Sin387      PROC  FAR
  25.             FLD   TBYTE PTR [ESP+04]      ; in ST(0) laden
  26.             FSIN                          ; berechnen
  27.             RETF  0010
  28. Sin387      ENDP
  29.  
  30.  
  31. Cos387      PROC  FAR
  32.             FLD   TBYTE PTR [ESP+04]      ; in ST(0) laden
  33.             FCOS                          ; berechnen
  34.             RETF  0010
  35. Cos387      ENDP
  36.  
  37.  
  38. Mem386Copy  PROC  FAR
  39.             MOV   DX, DS
  40.             XOR   ESI, ESI
  41.             XOR   EDI, EDI
  42.             LDS   SI, [ESP+10]            ; Quellzeiger laden
  43.             LES   DI, [ESP+06]            ; Zielzeiger laden
  44.             CLD
  45.             MOVZX ECX, WORD PTR [ESP+04]  ; Anzahl DWORDS
  46.             REP   MOVSD                   ; Kopieren
  47.             MOV   DS, DX
  48.             RETF  0010
  49. Mem386Copy  ENDP
  50.  
  51.  
  52. Scan386     PROC  FAR
  53.             XOR   EDI, EDI
  54.             LES   DI, [ESP+10]            ; Zeiger laden
  55.             MOVZX ECX, WORD PTR [ESP+08]  ; Länge laden
  56.             MOV   EAX, [ESP+04]           ; gesuchten Wert holen
  57.             CLD
  58.             INC   CX
  59.             REPNE SCASD                   ; suchen solange ungleich
  60.             OR    CX, CX
  61.             JZ    @@2
  62.             MOV   AX, [ESP+08]
  63.             SUB   AX, CX                  ; Index nach AX
  64.             INC   AX
  65. @@1:        RETF  0010
  66. @@2:        XOR   AX, AX
  67.             JZ    @@1
  68. Scan386     ENDP
  69.  
  70.  
  71. SetBit      PROC  FAR
  72.             MOV   EAX, [ESP+06]
  73.             MOVZX EBX, WORD PTR [ESP+04]  ; Bitposition
  74.             BTS   EAX, EBX                ; setzen
  75.             MOV   EDX, EAX
  76.             SHR   EDX, 16
  77.             RETF  0006
  78. SetBit      ENDP
  79.  
  80.  
  81. ClearBit    PROC  FAR
  82.             MOV   EAX, [ESP+06]
  83.             MOVZX EBX, WORD PTR [ESP+04]  ; Bitposition
  84.             BTR   EAX, EBX                ; löschen
  85.             MOV   EDX, EAX
  86.             SHR   EDX, 16
  87.             RETF  0006
  88. ClearBit    ENDP
  89.  
  90. END
  91.