Texteingabe mit Bios int´s



  • Ich versuche im Realmode mithilfe der BIOS Interrupts eine Taste einzulesen und sie dann in einen string zu speichern.
    Das klappt solange solange ich nur einen Buchstaben hab bei einem String gehts nicht mehr.
    Was mach ich falsch?

    ;Das ist die Funktion die das erledigen soll
    CmdInput:
    
       mov ah, 0                
        int 0x16                    
    
        mov di,cmdline
        add di,cmdanzahl
         ;mov [bx],al
         stosb
    
       mov ax,[cmdanzahl]
       add ax,1
       mov [cmdanzahl],ax 
    ret
    
    ;Variablen
    cmdline db '                                                             ',0
    cmdanzahl dw 0
    


  • So wie es aussieht, ist der code fuer NASM.
    Dann ist die Zeile "add di,cmdanzahl" hier ein bisschen fehl am Platze:
    Variablenangaben ohne eckige Klammern geben das offset der Variable zurueck. (siehe Zeile "mov di,cmdline")

    Wenn Du eckige Klammern drumsetzt (z.B. add di,word [cmdanzahl]), wird der Inhalt der Variable zurueckgegeben.

    BTW:

    mov ax,[cmdanzahl]
       add ax,1
       mov [cmdanzahl],ax
    

    Scheint ein bisschen umstaendlich zu sein...
    Wie waers stattdessen hiermit?

    inc word [cmdanzahl]
    

Anmelden zum Antworten