Zitat von
jbg:
Dabei handelt es sich nur um einen komplizierten Weg, um die Zahl 5 in das Word "i" zu schreiben.
Denn "DsDatenPointer DW OFFSET DsDatenPointer" erzeugt ein Word, dessen Inhalt der Offset dieses Words selbst ist. Und das ist wiederum der aktuelle Programmcodezähler $.
Und von diesem wird wieder DI abgezogen, womit wir wieder bei der Addresse von "i" landen. In in diesen wird dann die Zahl 5 gemovt.
... was nicht funktionieren wird, da es einen solchen Adressierungsmodus nicht gibt.
Zitat von
mumu:
danke
für die antworten jetzt hab ichs glaub ich kapiert. nur noch eine Frage dazu:
Zitat:
ein was versteh ich aber trotzdem noch nicht so ganz:
MOV WORD PTR [BX-DI],5
hätte es jetzt einen Unterschied gemacht folgendes zu schreiben: MOV BYTE PTR [BX-DI],5
transferriert MOV WORD PTR [BX,DI],5 ins Byte 1 von i 5 und ins Byte 2 auch 5, oder wie?
"MOV WORD PTR [BX,DI],5" gibt's nicht.
Im 16-Bit Modus gibt es nur eine begrenzte Zahl von Adressierungsmodi:
Code:
[BP]
[BX]
[SI]
[DI]
[BP+SI]
[BP+DI]
[BX+SI]
[BX+DI]
Jeweils optional mit Byte/Word-Displacement.