JMP mit DWord
-
Warum funktioniert dieser Code nicht?
jmp dword user_mem:0x0000 user_mem dw 0x2000
-
Der assembler schluckt ihn nicht? Wahrscheinlich, weil jmp keine Speicheradressen als Operanden akzeptiert.
-
Ne, der Assembler meckert noch nicht, aber es wird nicht zur Adresse 0x2000 gesprungen.
-
Wenn das im Real mode ist, wovon ich ausgehe, dann ist klar, dass er nicht dahin springt. Ein far-Jump springt zur Adresse
segment * 16 + offset
, wobei der Operand alssegment:offset
gelesen wird. Dein Code springt also nicht zu 0x2000, sondern zu 0x2000 * 16 = 0x20000.EDIT: Wobei mir gerade auffaellt, dass MrX wahrscheinlich damit recht hat, dass du keine Speicheradresse verwenden kannst. Wenn du NSAM nutzt duerfte die Instruktion, so wie sie dort steht, nach
Adresse von user_mem * 16 + 0
springen.