Anfängerfrage
-
In mein Lehrbuch stehen nur Beispiele für das Betriebssystem Windows. Ich habe versucht ein einfaches Programm für das Betriebssystem Linux zu schreiben. Bestimmt sind hier ein paar Fehler drinnen. Könnte man das ein bisschen vereinfachen? Und wie bekomme ich es hin, dass das Programm nur zehn Zeichen annehmen kann, also das nach dem dem zehnten Tastendruck Schluss ist?
;Ein Beispiel-Datei für AMD64 section .data frage: db 'Wie heißt Du?' laenge: equ $-frage meldung: db 'Hallo ' laenge2: equ $-meldung section .bss buffer resb 10 section .text global _start _start: ;Ausgeben mov rax, 4 mov rbx, 1 mov rcx, frage mov rdx, laenge int 80h ;Eingeben mov rax, 3 mov rbx, 0 mov rcx, buffer mov rdx, 10 int 80h ;Ausgeben mov rax, 4 mov rbx, 1 mov rcx, meldung mov rdx, laenge2 int 80h ;Ausgeben mov rax, 4 mov rbx, 1 mov rcx, buffer mov rdx, 10 int 80h ;Programm beenden mov rax, 1 mov rbx, 0 int 80h
-
Bestimmt sind hier ein paar Fehler drinnen.
Ich habe dein Programm nach 32 Bit und in AT&T Syntax umgeschrieben. Lief soweit auf Anhieb. Kann den Code noch mal posten, wenn du möchtest.
Könnte man das ein bisschen vereinfachen?
Ne, ich glaube, man kann in dem Codestück nichts vereinfachen und man kann es so lassen, wie es ist: geradlinig, ohne Schleifen, ohne Sprungmarken (was kann man sich denn noch wünschen ;).
Und wie bekomme ich es hin, dass das Programm nur zehn Zeichen annehmen kann, also das nach dem dem zehnten Tastendruck Schluss ist?
Ich glaube, am besten mit ner Schleife, die max. 10 mal durchläuft, und in der Schleife kann man noch eine Abbruchbedingung vorsehen für "Enter"-Taste.
-
Das funktioniert zwar, aber sobald ich mehr als 10 Zeichen eingebe, werden die restlichen Buchstaben, in der Shell-Konsole, als Befehl angesehen. Wie kann ich das Problem am geschicktesten lösen?