• 端口



    CPU可以直接读写以下3个地方的数据:
    1.CPU内部的寄存器
    2.内存单元
    3.端口

    端口读写的的指令只有两条: in 和 out


    外中断
    CPU除了有运算能力外汇,还要有I/O(Input/Output,输入输出)能力。
    比如,我们按下键盘上的一个键,CPU最终要能够处理这个键。
    在使用文本编辑器时,按a键,我们可以看到屏幕上出现"a',是CPU将
    从键盘上输入的键所对应的字符送到显示器上的。


    PC机键盘的处理过程。
    1.键盘输入
    当按下一个键时,开关接通,键盘中一芯片产生一个扫描码,送入主板上的
    相关接口芯片寄存器中,该寄存器的端口地址为60h.
    当松开按下的键时,也产生一个扫描码,松开一个键产生的扫描码为断码,
    扫描码长度为一个字节,通码的第7位为0,断码的第7位为1,即:
    断码 = 通码 + 80H

    2.引发9号中断
    键盘的输入到达60h端口时,相关的芯片就会向cpu发出中断类型码为9的可
    屏蔽中断信息。CPU检测到该中断信息后,如果IF=1,则响应中断,引发
    中断过程,转去执行int9中断例程。

    3.执行int9中断例程。
    BIOS提供了int 9中断例程,用来进进行基本的键盘输入处理,主要的工作如下:

    a.读出60h端口中的扫描码.
    b.如果是字符键的扫描码,将该扫描码和它所对应的字符码(即ascii码)送入内存
    中的bios键盘缓冲区,如果是控制键(Ctrl)和切换键(如CapsLock) 的扫描码,
    则将其转变为状态字节(用二进制位记录控制键和切换键状态的字节)写入内存中存储
    状态字节的单元。
    c.对键盘系统进行相关的控制,比如,向相关芯片发出应答信息。

  • 相关阅读:
    fatal error: bits/c++config.h: No such file or directory
    linux 下Beyond Compare 安装
    TD 加载界面实现
    JPA 如何实现 insert ignore
    jsonp 未实现跨域的原因?
    Linux 常用命令
    rancher server偶发504问题排查
    docker清理none image
    docker构建权限问题
    docker containers logs clean
  • 原文地址:https://www.cnblogs.com/wucg/p/1932238.html
Copyright © 2020-2023  润新知