汇编语言 第十四章 端口的读写

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

14.1 端口的读写

CPU 通过端口地址来定位端口。因为端口所在的芯片和 CPU 通过总线相连,所以端口地址和内存地址一样,通过地址总线来传送。PC 系统中,CPU 最多可以定位 64KB 个不同的端口。则端口地址的范围为 0~65535。

端口的读写指令只有两条:in 和 out。分别从端口读取和写入数据。

比较 CPU 执行内存访问指令和端口访问指令时,总线上的信息: 1. 访问内存:

mov ax,ds:[8]

  • CPU 通过地址线将地址信息 8 发出;
  • CPU 通过控制线发出内存读命令,选中存储器芯片,并通知它,将要从中读取数据;
  • 存储器将 8 号单元中的数据通过数据线送入CPU。
  1. 访问端口:

    in al,60h

    • CPU 通过地址线将地址信息 60h 发出;
    • CPU 通过控制线发出端口读命令,选中端口所在的芯片,并通知它,将要从中读取数据;
    • 端口所在的芯片将 60h 端口中的数据通过数据线送入 CPU。

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

14.2 CMOS RAM 芯片

CMOS 芯片的特征:

  1. 包含一个实时钟和一个有 128 个存储单元的 RAM 存储器(早期的计算机为 64 个字节)。
  2. 该芯片靠电池供电。所以,关机后其内部的实时钟仍可正常工作,RAM 中的信息不丢失。
  3. 128 个字节的 RAM 中,内部实时钟占用 0~0dh 单元来保存时间信息,其余大部分单元用于保存系统配置信息,供系统启动时 BIOS 程序读取。BIOS 也提供了相关的程序,可以在开机时配置 CMOS RAM 中的系统信息。
  4. 该芯片有两个端口,端口地址为 70h 和 71h。CPU 通过这两个端口来读写 CMOS RAM。
  5. 70h 为地址端口,存放要访问的 CMOS RAM 单元的地址;71h 为数据端口,存放从选定的 CMOS RAM 单元中读取的数据,或要写入其中的数据。

14.3 shl 和 shr 指令

shl 和 shr 是逻辑移位指令。

shl 是逻辑左移指令,它的功能是:

  • 将一个寄存器或内存单元中的数据向左移位;
  • 将最后移出的一位写入 CF 中;
  • 最低位用 0 补充。

如果移动位数大于 1 时,必须将移动位数放在 cl 中。

shr 是逻辑右移指令,它的功能是:

  • 将一个寄存器或内存单元中的数据向右移位;
  • 将最后移出的一位写入 CF 中;
  • 最低位用 0 补充。

如果移动位数大于 1 时,必须将移动位数放在 cl 中。

14.4 CMOS RAM 中存储的时间信息

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

时间
字节 0 2 4 7 8 9

这些数据以 BCD 码的方式存放。

十进制数码 0 1 2 3 4 5 6 7 8 9
BCD 码 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×