Hallo,
Der erste Parameter der Funktion wird in
eax/ax/al gespeichert, der Zweite in edx/dx/
dl.
D.h.
Zahl = eax
Bits =
dl
rol erfordert:
rol [register], cl
xchg tauscht die Werte von 2 8-Bit Registern.
Also tausche ich den Wert von
dl (Bits) mit cl und rolle dann eax (Zahl) mit cl (Bits).
Das Ergebnis einer Funktion steht in eax. Also brauche ich nichts weiter zu machen.
Delphi-Quellcode:
function rol(Zahl: Integer; Bits: Byte): Integer;
asm
// eax := Zahl;
// dl := Bits;
xchg cl,
dl // cl := dl;
rol eax, cl
// Result := eax rol cl;
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."