Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Assembler und Zeiger (https://www.delphipraxis.net/60222-assembler-und-zeiger.html)

Neotracer64 4. Jan 2006 12:32

Re: Assembler und Zeiger
 
Du willst ja zur Marke springen und nicht dahin was in der Marke steht (geht auch nich).

Flocke 4. Jan 2006 13:49

Re: Assembler und Zeiger
 
Zitat:

Zitat von mumu
und was ist damit:

MOV BX,OFFSET Marke
JMP [BX] ;warum muss ich hier JMP BX anstatt JMP [BX] verwenden?!?!?!

Marke:

Weil beides geht!
Code:
jmp BX     ; <-- IP = BX
jmp [BX]   ; <-- IP = [DS:BX]
Die zweite Variante wird z.B. für switch/case-Statements benutzt.

Zitat:

Zitat von opfer.der.genauigkeit
Hi,

ich habe nur bescheidene ASM-Kenntnisse aber soweit ich weiß, empfiehlt sich der Befehl
lea. Lea ist in die elegantere Variante.

Code:
mov bx, offset Text ---> lea bx, text

LEA ist keine Variante von MOV sondern ein komplett anderer Befehl mit eigenem Opcode. Allerdings übersetzen einige Assembler "LEA BX, Const" mit Konstanten automatisch in "MOV BX, OFFSET Const".

jbg 4. Jan 2006 13:56

Re: Assembler und Zeiger
 
Um auf das [Variable] Problem nochmal zu sprechen zu kommen:
Der TASM bietet hierfür den IDEAL Modus an. Bei diesem muss man explizit die Dereferenzierung mittels eckigen Klammern vornehmen. Ohne Klammern ist sonst die Adresse gemeint.

Code:
.IDEAL

MyVar dw 0

mov ax, MyVar
mov [ax], 1460
mov cx, [MyVar]

mumu 4. Jan 2006 14:04

Re: Assembler und Zeiger
 
Zitat:

Zitat von jbg
Um auf das [Variable] Problem nochmal zu sprechen zu kommen:
Der TASM bietet hierfür den IDEAL Modus an. Bei diesem muss man explizit die Dereferenzierung mittels eckigen Klammern vornehmen. Ohne Klammern ist sonst die Adresse gemeint.

Code:
.IDEAL

MyVar dw 0

mov ax, MyVar
mov [ax], 1460
mov cx, [MyVar]

das wäre genau das, was ich brauchen könnte.
aber leider meldet er mir:
**Error** DEMO1.ASM(5) Illegal instruction

vielleicht liegts an meiner TASM Version? hab 1.01

jbg 4. Jan 2006 14:08

Re: Assembler und Zeiger
 
Zitat:

Zitat von mumu
TASM Version? hab 1.01

Das wurde IMHO ab Version 3.0 eingeführt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr.
Seite 2 von 2     12   

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