Serielle Schnittstelle (DOS) per IN und OUT



  • [TASM]
    intel syntax

    ja ich möchte mal unter DOS die Serielle schnittstelle benutzen (wenn die antworten gut sind könnte es ja auch in die FAQ weil dort steht ja nur das zum Paralelen

    3F8h...3FFh (COM1)
    2F8h...2FFh (COM2)
    sind die Standard adressen

    die Funktionen

    IN DEST, PORT
    OUT PORT,SOURCE

    nur welche parameter brauche ich für die die Leitungen

    TxD
    RTS
    CTS

    RxD
    DCD
    RI

    DTR
    DSR
    GND (MASSE)

    tja also

    OUT 3F8h,?
    


  • TxD einschalten:
    in al, 0x3fb
    or al, 64
    out 0x3fb, al

    TxD ausschalten:
    in al, 0x3fb
    xor al, 64
    out 0x3fb, al

    DTR einschalten:
    in al, 0x3fc
    or al, 1
    out 0x3fc, al

    DTR ausschalten:
    in al, 0x3fc
    xor al, 1
    out 0x3fc, al

    RTS ein/ausschalten:
    genauso wie DTR, nur anstatt mit 1 mit 2 verknüpfen

    CTS, DSR, RI, DCD überprüfen:
    Adresse 0x3fe
    Testen, ob folgende Bits gesetzt sind:
    CTS 16
    DSR 32
    RI 64
    DCD 128

    Mit Aus meine ich den Zustand -12V, mit An den Zustand +12V.
    Keine Garantie auf das oben, ich habe es nicht ausprobiert, wenn ich aber keinen groben Denkfehler gemacht habe, sollte es funzen 😉
    Ach ja, ich habe nur die Befehle für COM1 hingeschrieben, für COM2 funktioniert das genauso, nur dass halt die anderen Adressen verwendet werden.



  • cool, danke
    hätte nicht so schnell mit ner antwort gerechnet, ich teste es heute oder morgen noch aus

    achso wie teste ich ob einzelne bits gesetzt sind?



  • Das geht mit cmp, test, bt... uvm.

    Hier wuerde ich "test" empfehlen.

    Um zu testen, ob Bit4 von al gesetzt ist:
    test al,16
    Wenn das Bit gesetzt ist, ist ZF=0.


Anmelden zum Antworten