Text auf nächster Zeile nochmal ausgeben



  • Hallo,

    ich habe gerade erst mit Assembler angefangen und möchte, dass wenn ich einen Text bei diesem Programm schreibe und Enter drücke, dieser Text nochmal angezeigt wird.
    Also, wenn ich z.B. "Hallo" schreibe und Enter drücke, soll auf der nächsten Zeile nochmal "Hallo" angezeigt werden.

    org 0x100
    
    keyboard:
    mov ah, 1
    int 0x21
    cmp al, 0x1b
    je destroy
    mov byte[continue], 1
    cmp byte[continue], 1
    je keyboard
    
    destroy:
    mov ah, 0
    int 0x21
    
    continue db
    

    Wie könnte ich das hinbekommen?

    Danke!



  • Mit Carriage Return + Line Feed, wie die anderen Programme auf ASCII Basis auch.
    http://de.wikipedia.org/wiki/Steuerzeichen

    Du überwachst die Eingabe auf Enter und machst mit Hex 0A0D oder umgekehrt CRLN.

    Am besten schreibst du dir eine kleine Routine, die genau das macht,
    [asm]
    cmp al,0d
    call CRLF
    [asm]
    oder so oder du hängst 0A0D an den Eingabestring dran.

    Wenn du noch kein Call kannst, häng 0A0Dh an die Eingabe, ausgeben, dann stell den Zeiger auf den Stringanfang zurück und gib nochmal aus.



  • Hier bitte:

    org 0x100
    
    keyboard:
    	mov ah, 10
    	mov dx, buf
    	int 0x21
    	mov dx, crlf
    	mov ah, 9
    	int 0x21
    	movzx di, [buf+1]
    	cmp di, 0
    	je destroy
    	add di, (buf+2)
    	mov ax, 0x0a0d
    	stosw
    	mov al, 0x24
    	stosb
    	mov dx, (buf+2)
    	mov ah, 9
    	int 0x21
    	jmp keyboard
    destroy:
    	mov ah, 0
    	int 0x21
    
    crlf: db 0x0d,0x0a,0x24
    buf: db 80
    

    Es ist besser, sich ein Tutorial zu schnappen, und es von vorne bis hinten durchzuackern.

    viele grüße
    ralph



  • Danke! 🙂

    Mit dem Tutorial, naja, ich bin ein wenig lesefaul, aber ich werd's mir noch überlegen.



  • cunix schrieb:

    Danke! 🙂

    Mit dem Tutorial, naja, ich bin ein wenig lesefaul, aber ich werd's mir noch überlegen.

    Auf ein Hörbuch zu warten könnte ggf. aber sehr lange dauern. 😃

    Dirk


Anmelden zum Antworten