Wie kann der 8086 ein codesegment ändern?



  • Mal ne Frage, damit das Programm im Realmod ein Code Segment wechseln kann, muss es erst mal cs verändern, und dann IP, nur wenn ein der beiden verendert wurde, kann ja nicht mehr das andere verändert werden. Weil der darauf folgende Befehl nicht mehr erreicht werden kann, se ich da was falsch, oder macht der 8086 das anders?



  • einfach durch eine far CALL,RET oder JMP



  • farcall schrieb:

    einfach durch eine far CALL,RET oder JMP

    Genau, man braucht auch einen far ret, der Ip UND Segmentaddi gespeichert hat, um die Rückkehradresse zu berechnen.

    Am besten man schaut sich einfach mal (nicht zu weit, CS und IP merken!) schrittweise im Debugger an, was bei einem Interruptaufruf in einem realen (nicht emulierten) Dos-System vor sich geht.



  • Ä ja stimmt eigentlich... ich geh mal davon aus, das ret, call, ... Prozessor Befehle sind.



  • Zudem hab ich keinen Plan wie man einen Debugger einsetzt. Ich hab mir ein paar Videos in youtube angeschaut, nur werde ich aus denen auch ned schlau. Mein Buch verliert über das ganze leider nicht mal einen Absatz. Es steht drin das man aber den Debugger von Masm verwenden soll, und nicht den von Dos.
    Kann man den Debuger wirklich so einsetzten wie einen von C++ oder so ähnlich?
    Ja und wo bekomme ich einen Dissasembler her?
    Und was is der Unterschied zwischen Dissassembler, und Debuger, Dissassembler übersetzt doch eigentlich nur zurück... ich hab kein Plan.



  • Einen 'Debugger von Masm' gibt es nicht.
    Einen Debugger brauchst du so wieso nicht, da 16Bit Code der Bug selbst ist.
    Sollte dich das nicht abschrecken, google mal nach dem 'Turbo Debugger' oder schau hier mal rein.


Anmelden zum Antworten