Ich habe diesen Code:Was genau passiert, wenn ich die Enter-Taste in Bezug auf System_Read Interrupt, Assembly drücken?
section .bss
buff resb 1
readfromkeyboard:
mov eax,3 ;specify system read
mov ebx,0 ;specify standard in -> keyboard
mov ecx,buff ;where to store what is read
mov edx,1 ;read 1 byte
int 0x80 ;tell linux to do everything above
mov eax,4 ;sys_write
mov ebx,1 ;Standard output
mov ecx,buff ;what to print
mov edx,1 ;how long to print
int 0x80 ;tell linux to do everything above
der gut arbeitet.
Wenn ich den Prozess starte, beginnt der Cursor im Terminal zu blinken und ich kann Zeichen eingeben. An dieser Stelle kann ich beliebig viele Zeichen eingeben, außer wenn ich "ENTER" drücke, wird 1 Byte gelesen und im Terminal ausgedruckt.
Meine Frage ist, was geschieht intern als ich Zeichen eingeben und als ich Enter drücken .. Also schlug ich ‚a‘ in meiner Tastatur und sagen: ‚c‘, wo ist dies zur Zeit gespeicherten Daten? Befinden sie sich bereits im Speicherbereich, der in meinem Code mit "Buff" angesprochen wurde? Warum liest Linux, wenn ich auf trete Geben Sie ein?
@glglgl Danke für die Bearbeitung, aber warum der Kommentar "oh bitte"? –
Weil ich in meinen Kommentaren manchmal etwas zu hart bin. Ich entschuldige mich dafür. – glglgl
Die tty-Schicht führt im "canonical" -Modus eine Pufferung durch. Es kann über Terminologierufe deaktiviert werden. Vergleichen Sie "Katze" vs "Stty-Cicanon; Katze; Stty + Icanon" – ninjalj