1) Was ist "Data"?
Bei mir kommt der Wert, der ggfs. auf 0 oder 255 zu ändern ist, aus EDX (ist -255..255) und der (ggfs. geänderte Wert wird in [esp] gespeichert.
Data comes from my earlier test
Code:
const
Count = 1000000;
DATA_LEN = 1024;
var
Data: array[0..DATA_LEN - 1] of Integer;
CData: array[0..DATA_LEN - 1] of Byte;
....
begin
Randomize;
for i := Low(Data) to High(Data) do
Data[i] := Random(256 * 3) - 256;
Data is filled with arbitrary values bigger than 255 and lower than 0.
2) zu "Ich war auch mal so frei, die non-volatilen Register korrekt zu sichern:"
no difference at all, both are correct, storing registers on stack by push and pop should be planned as First-In-Last-Out FILO, (same as Last-In-First-Out LIFO).