8237A内部的地址寄存器和计数寄存器都是16位的寄存器,而其数据线只有8位。因此每次对8237A寄存器的读写需要分两步进行。先/后位字节触发器就是用来控制读/写的是16位寄存器的高8位还是低8位。一般说来,对寄存器的操作都是16位的。也就是说,每次对寄存器的操作必然为两步,如果第一步是对高字节,那么第二步就会对低字节;如果第一步是对低字节,那么第二步就会对高字节。因此,F/L触发器的自动翻转是合理的。

  主清除命令与硬件的RESET信号有相同的功能,它使屏蔽寄存器全置为1,禁止所有的DMA通道。同时使命令寄存器、状态寄存器、请求寄存器等寄存器以及先/后位字节触发器全部清零。8237A进入空闲周期,以便进行编程。

地址偏移量 寄存器
00H、02H、04H、06H 基地址和当前地址
01H、03H、05H、07H 基字节和当前字节
08H 命令寄存器/状态寄存器
09H 请求寄存器
0AH 通道屏蔽置位/复位寄存器
0BH 模式寄存器
0CH 软命令:清除先/后触发器
0DH 暂存寄存器 / 软命令:复位命令
0EH 软命令:清屏蔽寄存器
0FH 屏蔽寄存器(多通道)

表3-5 8237A各寄存器的地址分配