fasm - bios int 21h (ah = 1h) - problem



  • Hallo zusammen,

    seitdem Ich von meinem externen Floppy Laufwerk meinen Code booten lasse und den bios int 10h (ah = 0Eh) "video - teletype output" verwende,
    funktioniert int 21h (ah = 1h) "read character from standart input, with echo" für mich nicht mehr.

    mov ah, 1h
        int 21h
    

    Folgendes (int 21h (ah = 7h) "direct character input, without echo") funktioniert hier auch nicht.

    mov ah, 7h
    	int 21h
    	mov byte ptr input, al
    	mov si, input
    	mov ah, 0Eh
    	lodsb
    	int 10h
    

    Möglicherweise hat jemand einen Lösungsvorschlag?



  • Interrupt 21h ist die MS-DOS-API. "meinen Code booten lasse" klingt aber irgendwie danach, als seist du ohne Betriebssystem unterwegs, dann geht das natürlich nicht. Ansonsten musst du mal etwas genauer werden, fürchte ich.



  • Ja, genau das ist der Fall.

    Ich versuche quasi mit beiden Code-Beispielen es hinzubekommen, das meine Eingabe gleich auf dem Bildschirm ausgegeben wird. Also wie man es auch von jeder Konsole her kennt.

    Deshalb wunder Ich mich, das beide Beispiele von mir nicht funktionieren.

    Also es soll auch nicht mehr sein. Ich hoffe du kannst mir jetzt helfen?



  • Wenn du ohne OS unterwegs bist, kannst du schlecht auf OS-Interrupts zurueckgreifen.

    Entweder du benutzt dierekt int 10h Funktionen zur Ausgabe, oder du schreibst dierekt in den Video-Speicher schreiben.

    Im Allgemeinen kannst du dir auch mal dieses Tutorial ansehen. Da gehts um OS-Development allgemein, aber ist natuerlich auch was ueber die Video-Ausgabe drin.



  • Danke für diesen Hinweis.

    Btw Ich konnte mein Problem nun lösen.

    mov ah, 0h
    	int 16h
    

    ... muss Ich verwenden (BIOS int.)



  • Interrupt 21h: MS-DOS Funktionsverteiler

    Ich kann fast alle auswendig 😃 .

    Annsonten hier: http://de.wikibooks.org/wiki/Interrupts_80x86


Log in to reply