home *** CD-ROM | disk | FTP | other *** search
- ; -------------------------------------------------------------
- ; Assemblermodul zu _386.PAS
- ; Funktion: Stellt schnelle 386er Routinen zu Verfügung
- ;
- ; Autor: Sven Letzel
- ; Datum: 18.04.1993
- ;
- ; ASM -> OBJ: TASM _386
- ; -------------------------------------------------------------
-
- MODEL LARGE
-
- .CODE
- .386
- .387
-
- PUBLIC Sin387
- PUBLIC Cos387
- PUBLIC Mem386Copy
- PUBLIC Scan386
- PUBLIC SetBit
- PUBLIC ClearBit
-
- Sin387 PROC FAR
- FLD TBYTE PTR [ESP+04] ; in ST(0) laden
- FSIN ; berechnen
- RETF 0010
- Sin387 ENDP
-
-
- Cos387 PROC FAR
- FLD TBYTE PTR [ESP+04] ; in ST(0) laden
- FCOS ; berechnen
- RETF 0010
- Cos387 ENDP
-
-
- Mem386Copy PROC FAR
- MOV DX, DS
- XOR ESI, ESI
- XOR EDI, EDI
- LDS SI, [ESP+10] ; Quellzeiger laden
- LES DI, [ESP+06] ; Zielzeiger laden
- CLD
- MOVZX ECX, WORD PTR [ESP+04] ; Anzahl DWORDS
- REP MOVSD ; Kopieren
- MOV DS, DX
- RETF 0010
- Mem386Copy ENDP
-
-
- Scan386 PROC FAR
- XOR EDI, EDI
- LES DI, [ESP+10] ; Zeiger laden
- MOVZX ECX, WORD PTR [ESP+08] ; Länge laden
- MOV EAX, [ESP+04] ; gesuchten Wert holen
- CLD
- INC CX
- REPNE SCASD ; suchen solange ungleich
- OR CX, CX
- JZ @@2
- MOV AX, [ESP+08]
- SUB AX, CX ; Index nach AX
- INC AX
- @@1: RETF 0010
- @@2: XOR AX, AX
- JZ @@1
- Scan386 ENDP
-
-
- SetBit PROC FAR
- MOV EAX, [ESP+06]
- MOVZX EBX, WORD PTR [ESP+04] ; Bitposition
- BTS EAX, EBX ; setzen
- MOV EDX, EAX
- SHR EDX, 16
- RETF 0006
- SetBit ENDP
-
-
- ClearBit PROC FAR
- MOV EAX, [ESP+06]
- MOVZX EBX, WORD PTR [ESP+04] ; Bitposition
- BTR EAX, EBX ; löschen
- MOV EDX, EAX
- SHR EDX, 16
- RETF 0006
- ClearBit ENDP
-
- END
-