Kor*_*gay 12 linux assembly system-calls
我有这个代码:
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
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
当我开始该过程时,光标将开始在终端中闪烁,我可以自由输入字符.此时我可以自由输入任意数量的字符,除非我点击"ENTER",将读取1个字节并将其打印在终端中.
我的问题是,当我输入字符并且点击时,内部发生了什么Enter.所以我在键盘上点击'a',然后说'c',此时数据存储在哪里?它们是否已经在我的代码中由'buff'处理的内存空间中?为什么Linux在我点击时会读取Enter?
输入到应用程序还有很长的路要走:
在某处发生了对线的处理,我认为它是在控制台层.在那里,您可以输入在行中处理的数据.
如果一个应用程序出现并读取,它会获得所需数量的字符,其余字符将保留用于下一次读取调用.
如果没有剩余,它将等到下一行完成 - 或者如果用户按下^D
,这意味着终止当前read()
呼叫.如果之前没有输入数据,则read()
返回0,表示EOF.在所有其他情况下,read()
返回到目前为止读取的字节数.
归档时间: |
|
查看次数: |
181 次 |
最近记录: |