Zitat von
JnZn558:
Zitat von
Neutral General:
Ich denke mal das größte Problem ist, dass die Zeile
@str: db 'Hello World', $0
Vom Prozessor als Code
ausgeführt wird. Und was für ein AssemblerCode sich hinter 'Hello World' versteckt weiß erstmal niemand ;-)
ich hatte auch mal gedacht, das problem tritt vl bei
unicode auf, also hatte ich auch so geaendert
@str: dw 'Hello World', $0
aber leider weigert der compiler hier die arbeit
Damit ist gemeint, daß die CPU die Bytes des Strings als OPCodes interpretiert. Die Mindestforderung für Nichtabsturz ist, daß Du einen Sprung über den String machst:
Delphi-Quellcode:
begin
asm
push edx
jmp @@skip
@str:
db '
Hello World', $0
@@skip:
lea edx, @str
mov TAsm[eax].m_strAsm, edx
pop edx
end;
end;