Problem mit mov
-
nach folgendem code steht in VAR nichts bzw. 0h
VAR db ? . . . mov VAR, dh
Wo ist denn hier der Fehler?
-
Der Fehler liegt in einer losen Schraube in Sektor Z der Server, die diese Seite hosten: http://www.catb.org/~esr/faqs/smart-questions.html
... Ist das eine ernst gemeinte Frage?
Falls ja, schlage ich vor, du denkst erst nochmal ernsthaft darueber nach.
Auch wie du sie so formulieren kannst, dass eine Antwort darauf moeglich ist, die dir vielleicht eher weiter hilft.
-
jaja. Ist ja gut. Hier wird man wieder sofort angeflamed. Wie soll ich das Problem denn genauer spezifizieren? ich deklariere eine Variable VAR, welche 1 Byte gross sein soll. Im register dx steht irgendeine zahl. jetzt versuche ich mit
mov VAR, dh
den Inhalt von dh in VAR zu schreiben. Funktioniet aber leider nicht. habe nicht sonderlich viel Assembler-Erfahrung, aber eigentlich sollte das doch gehn. Ist beides 8-bit und einer der beiden Operanten ist ein register.
-
Squawking schrieb:
jaja. Ist ja gut. Hier wird man wieder sofort angeflamed.
Ich nehme an, was abgeht, wenn ich flame, willst du nicht wissen.
Immerhin war das eine korrekte und sachliche Antwort auf deine Frage.Squawking schrieb:
Wie soll ich das Problem denn genauer spezifizieren?
Da gibt es 3 grobe Eckpunkte, die du beim Fragenstellen in der Software-Welt im Auge haben solltest:
Was genau willst du tun?
Wie hast du es genau versucht?
Was genau geschieht stattdessen?Mal abgesehen von dem "genau" hast du so wie so nur 2 der Punkte geschildert.
Squawking schrieb:
ich deklariere eine Variable VAR, welche 1 Byte gross sein soll. Im register dx steht irgendeine zahl. jetzt versuche ich mit
mov VAR, dh
den Inhalt von dh in VAR zu schreiben. Funktioniet aber leider nicht.Das ist zwar feiner ausformuliert, sagt aber eigentlich nicht mehr aus als dein erster Post.
Also genauer:
"Was willst du tun?"
Was fuer ein Ergebnis erwartest du genau von "den Inhalt von dh in VAR [...] schreiben"? (evtl. mal mehr code posten?) Wie ueberpruefst du das? Mit welchen Tools arbeitest du? ...[was immer dir zum klaeren des Problems noch von Bedeutung erscheint, gib dir mal Muehe statt zu flamen ;)]"Was genau geschieht stattdessen?"
"geht aber nicht" ist denkbar ungenau.
-
Angenommen VAR ist einer 8-bit variable und in dh steht FFh, dann erwarte ich, dass nach ausführung dieser Anweisung:
mov VAR, dh
in VAR FFh steht. Dies überprüfe ich, indem ich mir im debug-mode nach Ausführung genau dieser Anweisung den Inhalt von VAR anschaue. Hier steht dann anstatt FFh der Wert, den die Variable vorher schon hatte. Es ist also, als ob dieser Befehl agr nicht ausgeführt würde.
-
Na bitte, mit dieser Problembeschreibung ist es immerhin schon moeglich, konstruktiv zu raten. Wuerdest du jetzt noch mehr zum Kontext, in dem das Problem auftritt, preisgeben, waeren vielleicht sogar genaue(re) Antworten moeglich.
Am einfachsten waere mehr Code, falls nicht viel mehr als 50 Zeilen am besten komplett. Ansonsten zumindest genaue Speicheradresse von "VAR" und Inhalt der Segmentregister sowie Offset von "VAR".
Zudem verwendete Tools und System fuer das Programmiert wird.Ok, aber jetzt rate ich erstmal:
Du hast das Segmentregister DS nicht (richtig) initialisiert und schreibst deshalb schlussendlich mit diesem Befehl nicht an die erwartete reale Speicheradresse.
-
scheint richtig geraten. Habe ds irgendwo überschrieben. habe es jetzt vor meinem aufruf wieder zurückgesetzt. jetzt scheint es zu funktionieren. danke