Inhalt des Statusregisters



  • ich habe ein Programm entwickelt, dass mit push Befehlen die Inhalte von Registern rettet. Im Unterprogramm werden die Registerinhalte verändert. Nach dem Rücksprung ins Hauptprogramm werden diese Inhalte mit dem pop Befehl wiederhergestellt. Ich überprüfe die richtige Funktion des Programms, indem ich die Registerinhalte auf dem Bildschirm ausgeben lasse.

    Zusätzlich lasse ich mir auch den Inhalt vom Statusregister ausgeben. Kann ich den Wert des Statusregisters mit einem mov-Befehl verändern? Ist es besser die Werte dieses Registers unverändert zu lassen, und das Ändern dem Assembler zu überlassen?



  • Frager schrieb:

    Kann ich den Wert des Statusregisters mit einem mov-Befehl verändern?

    Nein.

    Ist es besser die Werte dieses Registers unverändert zu lassen, und das Ändern dem Assembler zu überlassen?

    Was hat der Assembler damit zu tun? Ob du die Flags sichern musst oder nicht hängt davon ab, ob du an den Stellen, wo das Unterprogramm aufgerufen wird, unveränderte Flags brauchst oder nicht.



  • falls du das statusreg ändern willst, musst du die entsprechende stelle im stack vor dem rücksprung manipuliern, das wird dann zurückgepoppt



  • Wie kann ich dem Statusregister einen Wert zuweisen (z. B. 01C4)?

    Kann ich die Statusregister mit den Befehlen push und pop retten oder gibts da andere Befehle?



  • mov ax, 01c4h
    push ax
    popf ; Flags poppen
    

    Das Pendant zu popf ist pushf. Die 32-bit-Flags pusht/poppt man AFAIK mit pushfd/popfd. Desweiteren gibt es auch noch sahf/lahf (store/load AH into/from flags), die aber nur die unteren 8 bit betreffen.


Anmelden zum Antworten