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/SteuerzeichenDu ü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