Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [asm] jmp +$0f (https://www.delphipraxis.net/149568-%5Basm%5D-jmp-%240f.html)

Bernhard Hartl 24. Mär 2010 08:36


[asm] jmp +$0f
 
im CPU-Fenster zeigt Delphi 7 den Assembler-Befehl
jmp +$0f

wenn ich diesen jedoch in einen asm Abschnitt innerhalb meines-Delphi Programmes verwenden will kommt die Compiler Fehlermeldung
"Invalid combination of opcode and operands"
Wie ist der korrekte Syntax im asm-Abschnitt innerhalb einer Pascal Unit der effektiv im compilierten code zum jmp +$0f führt

Danke

Bernhard

Neutral General 24. Mär 2010 08:45

Re: [asm] jmp +$0f
 
Hi,

Delphi-Quellcode:
// + Korrektur des NamenLozen (siehe unten)
asm
  jmp @hier + $0F
  @hier:
end;
Allerdings wäre ich mir nicht so sicher, dass du genau das brauchst..
Aber so funktioniert immerhin das, was du gewollt hast :mrgreen:

Namenloser 24. Mär 2010 09:41

Re: [asm] jmp +$0f
 
Zitat:

Zitat von Neutral General
Aber so funktioniert immerhin das, was du gewollt hast :mrgreen:

Müsste das Label nicht hinter der Anweisung stehen? Soweit ich weiß sind Sprungadressen immer relativ zu der Adresse, an der sich der Programmausführungspunkt nach dem Einlesen des Befehls befindet, also direkt nach dem JMP-OP-Code.
Delphi-Quellcode:
asm
  jmp @hier + $0F
  @hier:
end;
Es sei denn die Länge des Befehls ist bereits mit eingerechnet, versteht sich.

Neutral General 24. Mär 2010 09:44

Re: [asm] jmp +$0f
 
Stimmt, hast Recht. :?

himitsu 24. Mär 2010 09:48

Re: [asm] jmp +$0f
 
Ich vermute auch mal, daß er eigentlich sowas meint:
Delphi-Quellcode:
asm
  jmp @dort

  ...

  @dort:
  irgendwas // gewünschter Befehl, welcher angesprungen werden soll
Ein Vorteil ist auch, daß man nicht wissen muß, wieviele Byte die Befehle dazwischen lang sind.

Bernhard Hartl 24. Mär 2010 10:01

Re: [asm] jmp +$0f
 
Zitat:

Zitat von himitsu
Ich vermute auch mal, daß er eigentlich sowas meint:
Delphi-Quellcode:
asm
  jmp @dort

  ...

  @dort:
  irgendwas // gewünschter Befehl, welcher angesprungen werden soll
Ein Vorteil ist auch, daß man nicht wissen muß, wieviele Byte die Befehle dazwischen lang sind.

DANKE

- das ist die Lösung -

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz