Update: Okay, ich habe es jetzt hinbekommen. Der Code sieht so mit ShortString und ohne Zeigervariable aus. Man braucht den Operator OFFSET:
Delphi-Quellcode:
var
S: ShortString;
begin
S := '
Test';
asm
MOV EAX,OFFSET Output
MOV EDX,OFFSET S
CALL System.@Write0String
CALL System.@WriteLn
CALL System.@_IOTest
//CALL System.@ReadLn
//CALL System.@_IOTest
end;
Readln;
end.
Wenn ich jetzt aber den Aufruf von ReadLn auch in Assembler tätigen will, erhalte ich beim Aufruf von __IOTest immer einen Fehler. Warum, kann ich nicht Sagen, denn wenn ich mir die Debug-CPU ansehe, sieht das da genauso aus (bis auf den Redundanten Aufruf von MOV EAX..., allerdings auch mit kriege ich einen I/O-Fehler). Kannst du mir evtl. sagen was ich falsch mache?
Danke!