Zusammenhang zwischen 32 Bit Mode und 32 Bit Registern



  • Bei FASM gibt es die Befehle use16 und use32.
    Meine Frage ist, was die genau bewirken.
    In der Doku steht, dass damit 16 bzw 32 Bit Code generiert wir.
    Ist damit gemeint, dass man nur im 32 Bit Mode eax und im 16 Bit Mode nur ax benutzen kann, oder ändert man damit alle Addressierung Arten?

    mfg



  • Wie du sicher weist kann die CPU in verschiedenen Modies operieren:

    RealMode/V86 Mode/Protect Mode.

    Du must dem Asembler mitteilen welcher Mode gerade aktuell sein soll.

    Dadurch wird auch die Breite der Register geändert.

    Im RealMode ist das 16 Bit -> AX,BX,CX......
    Im ProtectMode ist das 32 Bit -> EAX,EBX,ECX......

    Natürlich läst sich das alles ändern durch die PrefixByte 66/67.



  • gargyle schrieb:

    Du must dem Asembler mitteilen welcher Mode gerade aktuell sein soll.

    Noe. Das kann dem Assembler komplett egal sein, denn

    gargyle schrieb:

    Dadurch wird auch die Breite der Register geändert.

    Im RealMode ist das 16 Bit -> AX,BX,CX......
    Im ProtectMode ist das 32 Bit -> EAX,EBX,ECX......

    Ganz so einfach ist die Sache nicht.

    Der RealMode laeuft normalerweise mit 16Bit, das stimmt (gewisse Zwittermodi lasse ich mal aussen vor).

    Der ProtectedMode kann aber je nach Konfiguration der Descriptoren problemlos sowohl 16Bit als auch 32Bit Codesegmente ausfuehren und zwischen diesen hin und her springen.

    Fazit: Je nachdem, fuer welches System du programmierst, musst du schon selbst wissen, ob 16Bit oder 32Bit-Code erwartet wird. In Windows sind es zB. idR. 32Bit, in DOS zu Anfang auf jeden Fall 16Bit, und bei DPMI kommt es darauf an, wie du dein Hauptprogramm mit dem Extender verlinkst. 😉

    Fuer deine andere Frage hattest du schon einen eigenen Thread aufgemacht.
    Ich war deshalb mal so frei, deine Frage dazu hier mal zu loeschen. Poste sie halt ggF. in deinem anderen Thread nochmal.
    Am besten auch noch so, dass die Frage nicht in den Kommentaren des Codes versteckt ist, danke.



  • Noe. Das kann dem Assembler komplett egal sein, denn

    Erst Nachdenken . Dann Posten



  • gargyle schrieb:

    Noe. Das kann dem Assembler komplett egal sein, denn

    Erst Nachdenken . Dann Posten

    So sollte es ablaufen, richtig...
    Wolltest du damit irgendwas andeuten?


Anmelden zum Antworten