MOin
ich schon wieder
ich möchte einen string in eine Variable schreiben [unbestimmte länge]
und habe mir dazu folgenden code geschreiben
[str_get ist meine funktion um den string zu erstellen]
mov ax, 1000h ; Segmentregister updaten
mov ds, ax
mov es, ax
start:
      mov si, msg ; gben sie ihren namen ein: 
      call str_print
      
      mov SI, thxname
      call str_get
      
      mov si, msg2 ; ihr name ist: 
      call str_print
      mov si, thxname
      call str_print
      
      mov si, msg3 ; Press any key
      call getkey
      jmp restart
msg db "Bitte geben Sie ihren namen ein: ", 0
msg2 db 13, 10, "ihr name ist: ", 0
msg3 db "Press any key to reboot dein system", 0
thxname db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h
; ^^ habe ich erst mal gemacht damit ich
; sicher sein kann das speicher platz für  11 Zeichen da ist
; Stringausgabe
str_print:
       lodsb                  ; Byte laden
       or al,al
       jz short str_print_end ; 0-Byte? -> Ende!
       mov ah,0Eh             ; Funktion 0x0E
       mov bx,0007h           ; Atrribut-Byte
       int 10h                ; schreiben
       jmp str_print             ; n?chstes Byte
       str_print_end:
       retn
; Text eingabe Enter = Beenden
str_get:
        mov ah, 00h ; Funktion 00h
        int 16h     ; Ausfüren
        mov bl, 1Ch ; Enter
        cmp al, bl
        je short str_get_end ; Wenn Enter dann beenden
           mov [DS:SI], al   ; Speichere Zeichen
           inc SI
               mov ah, 0Eh   ; Ausgabe
               mov bx, 0007h
               int 10h
        jmp str_get          ; Neustart
        str_get_end:         ; String mit 0 Beenden
        inc SI
        mov al, 00h
        mov [DS:SI], al
        retn
; Warte auf einen Tastendruck
getkey:
       mov ah, 00h ; Funktion 0
       int 16h  ; Ausf?hren
       ret
restart:
       db 0EAh
       dw 0000h
       dw 0FFFFh
aber leider macht der code icht das was er soll
weil wenn ich nach der eingabe meines namens die Enter taste drücke springt der corser einfach an den anfang der zeile und läst mich die zeile einfach üeberschreiben