[汇编学习笔记][第十四章 端口]

第十四章 端口

和CPU相连的芯片,除了各种储存器外,还有一下三种芯片。

  • 各种接口卡(网卡,显卡)上的接口芯片,他们控制接口卡进行工作。
  • 主板上的接口芯片,CPU通过它们对部分外设进行访问。
  • 其他芯片,用来存储相关的系统信息,或进行相关的输入输出处理。

CPU可以直接读写一下三个地方数据

  • CPU内部的寄存器
  • 内存单元
  • 端口

14.1 端口的读写

  • CPU最多可以定位64KB个不同的端口
  • 端口的读写只能用inout两条命令

  • 访问端口

    in al,60h //从60h号端口读入一个字节
    
  • inout 指令中只能用al或ax读或写入端口。

  • 对256~65535端口进行读写时,端口号要放在dx

    mov dx,3f8h
    in al,dx
    out dx,al
    

14.2 CMOS RAM 芯片

PC机中,有一个CMOS RAM芯片,一般简称为CMOS,该芯片有如下特征。

  • 包含一个实时钟和一个有128个存储单元的RAM存储器
  • 该芯片靠电池 供电,所以关机后其内部的实时钟仍可工作,RAM信息不丢失。
  • 128个字节RAM中,内部实时钟占用0~0dh单元保存时间信息, 其余大部分单元用于保存系统配置信息,供系统启动时BIOS程序读取,BIOS也提供了相关的程序,使我们在开机的时候配置CMOS RAM的系统信息。
  • 该芯片由两个端口,端口地址为70h,和71h。CPU通过这两个端口来读写CMOS RAM
  • 70h地址端口,存放要访问的CMOS RAM单元的地址; 71h数据端口,存放从特定的CMOS RAM单元中读取的数据,或要写入其中的数据。可见,CPU对CMOS RAM的读写分两步进行,比如,读CMOS RAM的2号单元

    - 将2送入端口地址70h
    - 从端口71h读出2号单元的内容
    

14.3 shl和shr指令

  • shl al,1
  • 如果移动位数大于1,必须将移动位数放在cl

14.4 CMOS ROM中存储的时间信息

在CMOS ROM中,存放着当前的时间,这6个信息长度都为一个字节。

存放单元

  • 秒:0
  • 分:2
  • 时:4
  • 日:7
  • 月:8
  • 年:9

且这些数据都以BCD码存储

问:如何在屏幕显示月份信息

  • 从CMOS RAM的8号单元读出当前月份的BCD码

    mov al,8
    out 70h,al
    in al 71h
    
  • BCD码表示的月份以十进制的形式显示到屏幕上

    • BCD码值+30h=十进制对应的ASCLL码低

你可能感兴趣的:([汇编学习笔记][第十四章 端口])