Anfängerfrage zur Eingabe von Texten
-
Guten Morgen allerseits
Habe wieder Zeit Assembler zu lernen und stoße auf ein warscheinlich simples Problem. Hier ist der Code von meinem kleinen Porgramm.section .data eingabe: .ascii "" ausgabe: .ascii "Geben Sie einen Text ein: " .section .text .globl _start _start: mov $4, %eax mov $1, %ebx mov $ausgabe, %ecx mov $26, %edx int $0x80 mov $3, %eax mov $0, %ebx mov $eingabe, %ecx mov $80, %edx int $0x80 mov $4, %eax mov $1, %ebx mov $eingabe, %ecx mov $26, %edx int $0x80 mov $1, %eax mov $0, %ebx int $0x80
Und hier ist die entsprechende Ausgabe. Das Problem liegt jetzt daran, dass er nach der Ausgabe "Hallo" wieder den Text
"Sie einen Text ein: " ausgibt. Das liegt warscheinlich daran dass ich
die Länge des Strings nicht genau bestimmen kann aber wie mache ich das?
Hier die Ausgabe:Andy@linux-57s7:~> cd /home/Andy/Programmierung Andy@linux-57s7:~/Programmierung> as hallo.asm -o hallo.o hallo.asm: Assembler messages: hallo.asm:0: Warning: end of file not at end of a line; newline inserted Andy@linux-57s7:~/Programmierung> ld hallo.o -o hallo Andy@linux-57s7:~/Programmierung> ./hallo Geben Sie einen Text ein: Hallo Hallo Sie einen Text ein: Andy@linux-57s7:~/Programmierung>
PS: Programmiere unter Linux!
Danke
-
Der Buffer eingabe ist zu klein. Genauer gesagt, hat dieselbe Adresse wie der Buffer ausgabe (weil er leer ist).
Du musst folgendes machen:
.section .bss .lcomm eingabe, 80 .section .data ausgabe: .ascii "Geben Sie einen Text ein: " ...
-
Du kannst es auch so machen:
statt nix schreibst du für die Eingabe einen Dummytext wie "Politik in den Medien ist nicht viel mehr als nur Kasperletheater für Erwachsene". Dann kompilierst du dein Programm und lädst es in einen Hexeditor. Die betreffenden Dummytextzeichen ersetzt du mit 00. Dann musst du noch darauf achten, dass die Eingabe nicht zu lang wird, sonst überschreibt sie Programmcode. Also Eingabezeichenzahl mitzählen und die Eingabe bei Überzahl abbrechen bzw. nix mehr machen bis EOF oder so
-
nachtfeuer schrieb:
... Hexeditor ...
Das ist verrückt.
-
abc.w schrieb:
nachtfeuer schrieb:
... Hexeditor ...
Das ist verrückt.
nicht wenn man Multipass wartet
-
Den hier?
*scnr*
-