AnsichtenMathe: Integer Basis
Mathematische Basis-Operationen + - * / ;=============================================================================== ;=============================================================================== ;=============================================================================== ;------------------------------------------------------------------------------- ;=============================================================================== comment * ---------------------------------------------------------------------- Infos: ------- XOR EAX, EAX ; EAX = 0 ist schneller als MOV EAX, 0 ; EAX = 0 ------------------------------------------------------------------------------ * ;=============================================================================== ;=============================================================================== ;======= Code-Deklaration ;------------------------------------------------------------------------------- .386 ; Minimal Anforderung an Prozessor ;.486 ; Minimal Anforderung an Prozessor ;.586 ; Minimal Anforderung an Prozessor ;.model flat, stdcall ; Flat-Memory Modell 32Bit option casemap :none ; Case-Sensitive ;=============================================================================== ;======= Includes von Externen Prozessen und APIs ;------------------------------------------------------------------------------- ;=============================================================================== ;======= Public-Deklaration von Prozessen die Extern sichtbar sind ;------------------------------------------------------------------------------- ;=============================================================================== ;======= Daten-Deklarationen ;------------------------------------------------------------------------------- .data ; Daten-Block Beginn ;=============================================================================== ;=============================================================================== ;=============================================================================== ;======= Code-Beginn ;------------------------------------------------------------------------------- .code ; Code-Block Begin ;=============================================================================== ;======= Proceduren für den Code ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- Test_Add PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 ADD EAX, Val2 ;@CheckOverflow RET Test_Add ENDP Test_Sub PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 SUB EAX, Val2 ;@CheckOverflow RET Test_Sub ENDP Test_Add1 PROC Public Val1:DWORD MOV EAX, Val1 INC EAX ;@CheckOverflow RET Test_Add1 ENDP Test_Sub1 PROC Public Val1:DWORD MOV EAX, Val1 DEC EAX ;@CheckOverflow RET Test_Sub1 ENDP Test_Mul PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV EBX, Val2 MUL EBX ; EDX:EAX = EAX * EBX ;@CheckOverflow RET Test_Mul ENDP Test_Div PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV EBX, Val2 XOR EDX, EDX ; EDX = 0 DIV EBX ; EAX = Quotient = EDX:EAX / EBX , EDX = Rest ;@CheckOverflow RET Test_Div ENDP Test_Mod PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV EBX, Val2 XOR EDX, EDX ; EDX = 0 DIV EBX ; EAX = Quotient = EDX:EAX / EBX , EDX = Rest ;@CheckOverflow MOV EAX, EDX ; EAX = EDX RET Test_Mod ENDP Test_MulSig PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV EBX, Val2 IMUL EBX ; EDX:EAX = EAX * EBX ;@CheckOverflow RET Test_MulSig ENDP Test_DivSig PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV EBX, Val2 XOR EDX, EDX ; EDX = 0 IDIV EBX ; EAX = Quotient = EDX:EAX / EBX , EDX = Rest ;@CheckOverflow RET Test_DivSig ENDP Test_ModSig PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV EBX, Val2 XOR EDX, EDX ; EDX = 0 IDIV EBX ; EAX = Quotient = EDX:EAX / EBX , EDX = Rest ;@CheckOverflow MOV EAX, EDX ; EAX = EDX RET Test_ModSig ENDP Test_NegSig PROC Public Val1:DWORD MOV EAX, Val1 NEG EAX RET Test_NegSig ENDP ;------------------------------------------------------------------------------- Test_Pow2 PROC Public Val1:DWORD MOV EAX, Val1 MUL EAX ; EDX:EAX = EAX * EAX ;@CheckOverflow RET Test_Pow2 ENDP Test_Pow3 PROC Public Val1:DWORD MOV EAX, Val1 MOV EBX, Val1 MUL EAX ; EDX:EAX = EAX * EAX MUL EBX ; EDX:EAX = EAX * EBX ;@CheckOverflow RET Test_Pow3 ENDP Test_Pow4 PROC Public Val1:DWORD MOV EAX, Val1 MUL EAX ; EDX:EAX = EAX * EAX MUL EAX ; EDX:EAX = EAX * EAX ;@CheckOverflow RET Test_Pow4 ENDP ;------------------------------------------------------------------------------- Test_ShtRgt PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV ECX, Val2 SHR EAX, CL ;! Kann nicht ECX sein ;@CheckOverflow RET Test_ShtRgt ENDP Test_ShtLft PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV ECX, Val2 SHL EAX, CL ;! Kann nicht ECX sein ;@CheckOverflow RET Test_ShtLft ENDP Test_ShtRgtSig PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV ECX, Val2 SAR EAX, CL ;! Kann nicht ECX sein ;@CheckOverflow RET Test_ShtRgtSig ENDP Test_ShtLftSig PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV ECX, Val2 SAL EAX, CL ;! Kann nicht ECX sein ;@CheckOverflow RET Test_ShtLftSig ENDP Test_RotRgt PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV ECX, Val2 ROR EAX, CL ;! Kann nicht ECX sein ;@CheckOverflow RET Test_RotRgt ENDP Test_RotLft PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV ECX, Val2 ROL EAX, CL ;! Kann nicht ECX sein ;@CheckOverflow RET Test_RotLft ENDP Test_RotRgtCary PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV ECX, Val2 ROR EAX, CL ;! Kann nicht ECX sein ;@CheckOverflow RET Test_RotRgtCary ENDP Test_RotLftCary PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 MOV ECX, Val2 ROL EAX, CL ;! Kann nicht ECX sein ;@CheckOverflow RET Test_RotLftCary ENDP ;------------------------------------------------------------------------------- Test_BitNot PROC Public Val1:DWORD MOV EAX, Val1 NOT EAX RET Test_BitNot ENDP Test_BitAnd PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 AND EAX, Val2 RET Test_BitAnd ENDP Test_BitOr PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 OR EAX, Val2 RET Test_BitOr ENDP Test_BitXor PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 XOR EAX, Val2 RET Test_BitXor ENDP Test_BitImp PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 NOT EAX OR EAX, Val2 RET Test_BitImp ENDP ;------------------------------------------------------------------------------- Test_Swap PROC Public Val1:DWORD, Val2:DWORD MOV EAX, Val1 XCHG EAX, Val2 RET Test_Swap ENDP ;------------------------------------------------------------------------------- ;=============================================================================== ;=============================================================================== |