我们知道,各种存储器都和CPU的地址线,数据线,控制线相连。CPU在操控它们的时候,把他们都当作内存来对待,把它们总地看做一个若干存储器单元组成的逻辑存储器,这个逻辑存储器称为内存地址空间

在PC系统中,和CPU通过总线相连的芯片除各种存储器外,还有一下3中芯片。

(1) 各种接口卡(例网卡,显卡,声卡)上的接口芯片,它们控制接口卡进行工作;

(2) 主板上上的接口芯片,CPU通过它们对部分外设进行访问;

(3) 其他芯片,用来存储相关的系统信息,或者进行相关的输入输出处理。

在这些芯片中,都有一组可有CPU读写的寄存器。这些寄存器他们在物理上可能处于不同芯片中,但是它们有两点相同。1.都和CPU的总线相连,当然这种连接是通过它们所在的芯片进行的,2.CPU对它们进行读或写的时候都通过控制向它们所在的芯片发出端口读写命令。由此可见从CPU的角度,将这些寄存器都当作端口,对它们进行统一编址,从而建立了一个统一端口地址空间。每一个端口在地址空间中都有一个地址。

CPU可以直接写以下3个地方的数据,但我们主要讨论端口的读写。

(1) CPU内部的寄存器

(2) 内存单元

(3) 端口

端口的读写。CPU通过端口地址来定位端口,因为端口所在的芯片和CPU通过总线相连,所以端口地址与内存地址通过地址总线来传送。在PC系统中,CPU最多可以定位64KB个不同的端口,端口的地址范围是0~65535。端口的读写指令只有两条:in和out分别用于端口读取数据和往端口写入数据。下图为CPU执行内存访问指令和端口访问指令时候总线的信息。

在in和out指令中,只能使用ax或者al来存放从端口中读入的数据或要发送到端口中的数据,访问8位端口时用al,访问16位端口时用ax。

shl和shr指令。Shl和shr是逻辑位移指令,后面的章节会用到先了解一下。

COMS RAM 中存储的时间信息。在CMOS RAM中,存放着当前的时间:年,月,日,时分,秒。这6个信息长度为1字节,存放单元为:

这些数据数是以BCD码的方式存放,BCD码是以4位二进制数表示十进制数码的编码方式,如下:

可见,一个字节可表示两个BCD码。则CMOS RAM存储时间信息的单元中,存储了用两个BCD码表示的两位十进制数,高4位的BCD码表示十位,低4位的BCD码表示个位,比如,00010100b表示14。

编程:在屏幕的中间显示当前的的月份。

本章我们学习了CPU对端口的读写操作实现对其他设备的控制,下一章来学习外中断在键盘上输入信息时CPU都发生了什么事情。

windows下对hid设备interrupt端口读写_读《汇编语言》第三版 第十四章 端口相关推荐

  1. QT在Windows下检测USB设备热拔插的思路

    一.问题描述: 使用QT开发视频会议时需要实现实时检测USB摄像头/麦克风拔插的功能,这里主要涉及到对一些Windows API的了解以及windows系统的设备管理识别不同种设备时的原理,在实现过程 ...

  2. Windows下获取视频设备的一种改进实现

    之前在https://blog.csdn.net/fengbingchun/article/details/102806822中介绍过在Windows下获取视频设备列表的方法.其实那种实现方法是有缺陷 ...

  3. 【正点原子Linux连载】第四十四章 设备树下的LED驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  4. 【正点原子MP157连载】第二十四章 设备树下的LED驱动实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  5. LINUX下USB1.1设备学习小记(2)_协…

    LINUX下USB1.1设备学习小记(2)_协议 (2009-03-27 14:40) 分类: 文章转载 USB协议: 先看USB接口 可以看出,在USB使用了4根线,分别为电源线,地线,信号线和差分 ...

  6. 【正点原子FPGA连载】第十四章SD卡读写TXT文本实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

  7. [转]Windows Shell 编程 第十四章【来源:http://blog.csdn.net/wangqiulin123456/article/details/7988010】...

    第十四章 设计Shell集成应用 有一些工具可以使应用程序更紧密地与Shell和底层系统进行集成.也就是说,用户可以象处理系统文档和程序那样处理你的文档和程序.例如,右击文件来显示可用功能列表等.Wi ...

  8. 现实迷途 第三十四章 响亮一巴(下)

    第三十四章 响亮一巴(下) 注:原创作品,请尊重原作者,未经同意,请勿转载,否则追究责任. 耳边响起的中文或英文的浪漫情歌,闪烁的霓虹灯灯光和点点的蜡烛烛光,精致的生日蛋糕,江北深情清唱的生日歌,以及 ...

  9. 韦东山 IMX6ULL和正点原子_「正点原子Linux连载」第四十四章设备树下的LED驱动实验...

    1)实验平台:正点原子Linux开发板 2)摘自<正点原子I.MX6U嵌入式Linux驱动开发指南> 关注官方微信号公众号,获取更多资料:正点原子 上一章我们详细的讲解了设备树语法以及在驱 ...

最新文章

  1. seaborn使用axes_dict函数获取displot函数生成的图像所有标题信息、使用set_title函数自定义设置多面板直方图标题(Multi-panel histogram‘s title)
  2. TCGAbiolinks包下载TCGA数据
  3. Listview 多个ViewHolder实现
  4. [crypto]-51.1-python的aes加解密/rsa生成密钥对/rsa加解密/hmac加密
  5. 计算机驱动空间不够,Win8.1系统如何释放驱动器空间解决可用空间不足问题
  6. mail、sendEmail发送邮件命令
  7. 什么是Redis的VM机制
  8. C#合成解析XML与JSON
  9. git remote 使用总结
  10. python解释器在语法上不支持什么编程_python解释器和编辑器的区别 - CSDN
  11. windows删除「WIN+R」的历史记录
  12. java是否安装outlook,Java程序定期检查ms Outlook是否有新邮件
  13. CentOS 5 常见的configure error的解决方法
  14. 互联网公司招聘--今日头条--产品经理-2017年笔试题1
  15. QLineEdit屏蔽扫描枪输入自带回车的方法
  16. HuffMan编码C语言实现
  17. ip变更造成的redis集群不可用的解决及数据备份和恢复
  18. mysql 重做日志 镜像_mysql重做日志 - osc_vr7hvjd2的个人空间 - OSCHINA - 中文开源技术交流社区...
  19. Debug:ValueError: malformed node or string
  20. 软件测试基础知识大全【乐搏TestPRO】

热门文章

  1. 苹果或推出粉色款iPhone 13;用户超 8 亿,拼多多再超阿里;贝索斯将于7月5日卸任亚马逊CEO|极客头条...
  2. “金三银四”跳槽需谨慎!
  3. 曝微软将发布基于 Excel 的低代码语言:Power Fx
  4. 毫秒间完成行为分析,飞猪端智能技术实践!
  5. 为什么我们没有选择Rust?
  6. 大咖说中台 | 中台不是“银弹”!
  7. 40 张图揭秘「键入网址发生了什么」
  8. 微软分拆小冰业务并独立发展,沈向洋任董事长
  9. 数据科学家在“新常态”下发生了怎样的转变?
  10. Go 语言之 defer 的前世今生