PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XCHG oder MOV ?


Lord_Otter
10.08.2002, 20:04
Hi !
Ich habe schon oft den Befehl XCHG gesehen, wo ich eigentlich MOV erwartet habe.
Ist "XCHG AX,BX" vielleicht schneller als "MOV AX,BX" ?


Felix Kaiser
11.08.2002, 00:22
XCHG AX,BX vertauscht den Inhalt von AX und BX untereinander, ein MOV würde lediglich den Inhalt von BX auf AX kopieren. Man muss wissen was man braucht um zu entscheiden, was man nun letztendlich nimmt.

Lord_Otter
11.08.2002, 09:38
Das weiß ich.
Aber da, wo ich es gesehen hab', muss nur der Wert von BX nach AX kopiert werden. Dennoch wurde XCHG benutzt.
Also dachte ich, das hätte vielleicht einen Geschwindigkeitsvorteil.
Ist es jetzt so oder nicht ?

Nukacola
11.08.2002, 20:10
laut meiner Taktzyklen Tabelle die ich zugeben muss nicht mehr die neueste ist, benötigt ein mov reg,reg 2 Takzyklen ein xchg reg,reg 3 Taktzyklen..

frage beantwortet??
oder keine Ahnung von Takzyklen??

bye

Lord_Otter
12.08.2002, 11:42
Ja, danke !

Lord_Otter
12.08.2002, 20:46
Also, ich kann mir was unter Taktzyklen vorstellen, aber wenn mich jemand fragen würde, was das ist, wüsste ich keine Antwort. Kannst du das vielleicht mal enau erklären, damit ich das auh genauer weiß ?

Nukacola
12.08.2002, 21:07
Die Zeit die der Prozessor zur ausführung eines Maschienebefehls benötigt wird in Takzyklen angegeben.
Die Angabe ist im Gegensatz zu einer Zeitangbe unabhängig von der Taktfrequenz der CPU, da sich die Dauer der Taktzyklen aus dem Kehrwert der Taktfrequenz der CPU berechnen.

bye

Lord_Otter
13.08.2002, 11:39
Das, was es angibt, war mir schon klar.
Aber das mit dem Kehrwert ist das, was ich wissen wollte. Also Danke noch mal.

Marwin
09.10.2002, 10:34
Original geschrieben von Nukacola
laut meiner Taktzyklen Tabelle ... benötigt ein mov reg,reg 2 Takzyklen ...

Meine sagt mir, dass bei 486 mov reg,reg nur einen Taktzyklus benötigt (aber 2 Byte groß ist). Alle Prozessoren bis 386 haben 2 gebraucht.

MfG, Marwin

cre
16.01.2003, 13:27
nunja keine ahnung was du genau meinst aber
vieleicht isses ein handle speichern in den
source wie hier:


Start:

mov ah, 3Ch ;erstelle eine neue Datei (immer)
lea dx, filename ;Zeiger zum Dateinamen
xor cx, cx ;keine attribute
int 21h

xchg ax,bx ;schiebe das Handle in bx

mov ah, 40h ;schreibe etwas in die Datei
lea dx, Text ;was
soll hineingeschrieben werden ?
mov cx, (offset endText-offset Text)
;wieviel soll geschrieben werden ?
int 21h

mov ah, 3eh ;nun schließen wir die Datei wieder.. ;)
int 21h

mov ah, 3dh ;und nun wird es wieder geöffnet.. ;)
xor al, al ;nur zum lesen..
lea dx, filename
int 21h
jc ENDE ;ist carriage flag gesetzt beende das Ganze

xchg ax, bx ;speichern des Handles


vieleicht hilfts dir was
MfG cre