从表面到本质 分析一下

cuilll 2013-07-09 12:45:24
cin>>a;//执行 输入1 回车

我想问:
那个1是怎样放到指定的内存单元的????
恳求大神结合 组成原理,微机原理,操作系统,数字电路 方面的知识进行解答。从逻辑层面(相关函数,译码电路选择内存单元,写信号有效,相关关微命令序列 等等哈),给个大概思路的解答 不要求很详细,我只想懂起个大致思路。 我和我的小伙伴们期待您的回答!
...全文
181 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2013-07-10
  • 打赏
  • 举报
回复
键盘驱动、设备文件、标准输入…… 这样一层层抽象上来的。
BeanJoy 2013-07-09
  • 打赏
  • 举报
回复
前排占座等受教。
赵4老师 2013-07-09
  • 打赏
  • 举报
回复
按下键帽,和键帽固定在一起的键盘开关闭合,电路接通,经过防抖电路处理后的稳定电平被键盘处理芯片检测到并根据闭合点对应的行号和列号组合出硬件键盘扫描码保存到键盘硬件数据端口60h中。(未完待续)
xiangzhihappy 2013-07-09
  • 打赏
  • 举报
回复
学习了,讲的挺仔细的,赞~~~
www_adintr_com 2013-07-09
  • 打赏
  • 举报
回复
执行这条语句的时候, 操作系统发现缓冲区里面没有数据, 把进程挂起, 用户按下键盘, 触发 CPU 中断, 调用操作系统预先设置好的中断服务程序, 中断服务程序进行一些识别处理后把它交给键盘的驱动程序, 驱动程序检查状态, 翻译成一个键盘的编码, 然后操作系统查找输入时有焦点的窗口, 翻译成 WM_KEYDOWN, WM_CHAR, WM_KEYUP 等消息发送给窗口. 控制台窗口实际上是有 Win32 子系统的进程 csrss.exe 在管理, 它获得消息后把消息分发给窗口的 WNDPROC 函数, 这个函数把消息中对应的按键放到控制台的输入缓冲中, 并通过进程通信机制通知控制台所属的进程. 进程收到通知后, 从沉睡状态苏醒过来, 把控制台的输入缓冲放到 stdin 文件缓冲里面, 然后再读入到程序里面的变量 a 中去.
赵4老师 2013-07-09
  • 打赏
  • 举报
回复
键盘扫描码→键码==ASCII码→二进制码 《计算机组成原理》
南京南京C 2013-07-09
  • 打赏
  • 举报
回复
code层:程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。 过程:键盘中断-〉系统响应-〉获得键值-〉线程处理 其实你这么问倒是不好回答,你去看下键盘驱动以及信号流程就能对你的问题解释的很清楚了。
qzf362269994 2013-07-09
  • 打赏
  • 举报
回复
没研究过坐等受教
赵4老师 2013-07-09
  • 打赏
  • 举报
回复
《深入理解计算机系统》
赵4老师 2013-07-09
  • 打赏
  • 举报
回复
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告: 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步对应汇编一行! 单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。 VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧