AnsichtenInhaltsverzeichnis Mathe: Integer Extra
Mathematische Extra-Funktionen für Integer Zahlen IntegerSign (Mit Vorzeichen);=== Abs, Wenn Val1: >0 Ret=1, =0 Ret=0, <0 Ret=-1 ;=== Abs(Val1) = Abs(Val1) MOV EAX, Val1 ; EAX = Val1 CMP EAX, 0 ; EAX <?> 0 JL short Jump_Neg ; If EAX < 0 Then Goto Jump_Neg SAR EAX, 31 ; Signet Bit auf Bit 1 verschieben (den Rest wegschneiden) JMP Jump_End Jump_Neg: ; Zahl ist Negativ XOR EAX, EAX ; EAX = 0 INC EAX ; EAX =- 1 (EAX = -1) Jump_End: ;=== Sig, Wenn Val1: >0 Ret=1, <=0 Ret=0 ;=== Sig(Val1) = Sig(Val1) MOV EAX, Val1 ; EAX = Val1 OR EAX, EAX ; EAX <?> 0 JZ short Jump_End ; If EAX = 0 Then Goto Jump_Neg MOV EAX, 1 ; EAX = 1 Jump_End: ;=== Sign, Wenn Val1: >=0 Ret=1, <=0 Ret=-1 ;=== Sign(Val1) = Sign(Val1) MOV EAX, Val1 ; EAX = Val1 SAR EAX, 31 ; Signet Bit auf Bit 1 verschieben (den Rest wegschneiden) JNZ short Jump_End ; If EAX <> 0 Then Goto Jump_Neg INC EAX ; EAX =- 1 (EAX = -1) Jump_End: UnSigned (Ohne Vorzeichen);=== Sign, Wenn Val1: >=0 Ret=1, <=0 Ret=-1 ;=== Sign(Val1) = Sign(Val1) MOV EAX, 1 ; UnSigned ist immer >= 0 Werte;=== Swap, Vertauscht 2 Werte ;=== OrderMax = OrderMax(Val1, Val2) MOV EBX, Val2 ; EBX = Val2 MOV EAX, Val1 ; EAX = Val1 XCHG EAX, EBX ; EAX <=> EBX Min Max;=== SelectMin, Gibt den kleineren Wert zurück ;=== SelectMin = SelectMin(Val1, Val2) MOV EBX, Val2 ; EBX = Val2 MOV EAX, Val1 ; EAX = Val1 CMP EAX, EBX ; Val1 <?> Val2 JLE short Jump1 ; If Val1 <= Val2 Then Goto Jump1 Jump2: ; =Val2 MOV EAX, EBX ; EAX = EBX Jump1: ; =Val1 ;=== SelectMax, Gibt den Groseren Wert zurück ;=== SelectMax = SelectMax(Val1, Val2) MOV EBX, Val2 ; EBX = Val2 MOV EAX, Val1 ; EAX = Val1 CMP EAX, EBX ; Val1 <?> Val2 JGE short Jump1 ; If Val1 >= Val2 Then Goto Jump1 Jump2: ; =Val2 MOV EAX, EBX ; EAX = EBX Jump1: ; =Val1 ;=== OrderMin, Organisiert den kleinere Wert zuerst ;=== OrderMin = OrderMin(Val1, Val2) MOV EBX, Val2 ; EBX = Val2 MOV EAX, Val1 ; EAX = Val1 CMP EAX, EBX ; Val1 <?> Val2 JLE short Jump1 ; If Val1 <= Val2 Then Goto Jump1 Jump2: ; =Val2 XCHG EAX, EBX ; EAX <=> EBX Jump1: ; =Val1 ;=== OrderMax, Organisiert den größere Wert zuerst ;=== OrderMax = OrderMax(Val1, Val2) MOV EBX, Val2 ; EBX = Val2 MOV EAX, Val1 ; EAX = Val1 CMP EAX, EBX ; Val1 <?> Val2 JGE short Jump1 ; If Val1 >= Val2 Then Goto Jump1 Jump2: ; =Val2 XCHG EAX, EBX ; EAX <=> EBX Jump1: ; =Val1
|