Einzelnen Beitrag anzeigen

Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#9

Re: Byte an bestimmter Speicherposition mit Assembler lösche

  Alt 30. Mai 2008, 18:08
Delphi-Quellcode:
procedure ByteLoeschen(p: Pointer; Index: Byte); assembler;
asm
  mov CL, DL
  mov EDX, 0FFFFFF00h
  sal Cl, 3 //Linksverschiebung mit Anhängen von Nullen, *2*2*2
  STC //setze Carry-Flag, um kein Bit zu verlieren
  rcl EDX, CL //Rechtsverschuebung mit Anhängen des Carry-Flags, setzt Carry-Flag
  and [EAX], EDX
end;

procedure ByteLoeschen2(p: Pointer; Index: Byte); assembler;
asm
  mov Byte [EAX + EDX], 0
end;
Funktionen sind nun so verändert, dass sie EBX nicht mehr verwenden (auch wenn keine Veränderung erfolgte).
Jemand eine Idee, warum EBX den selben Wert wie EDX enthielt (2. Parameter)? (nur aus meiner Neuier herraus )
  Mit Zitat antworten Zitat