已知在IBM Pc中,使用了8088 CPU和 一片8237 DMA控制器.并用8237 DMA控制器的通2道控制软盘的读写。假没需要从软盘读取 4kb的数据,将其放入到内存起始地址为28086H的缓冲区中,采用单字节增量 方式、正常时序。请给出施满足上述要求,对8237通道2初始化程序段。
时间: 2024-03-06 18:48:38 浏览: 28
对8237 DMA控制器进行初始化,可以采取以下步骤:
1. 设置控制字寄存器(Command Word Register,CWR)。
控制字寄存器的格式为:
Bit 0-2: 传输方式,01 表示单字节增量传输
Bit 3-4: 通道选择,10 表示通道 2
Bit 5-6: 存储器读写方向,01 表示写入存储器
Bit 7 : 内部/外部命令,0 表示内部命令
控制字寄存器的值为 00101001B,即 29H。
2. 设置模式寄存器(Mode Word Register,MWR)。
模式寄存器的格式为:
Bit 0-1: 传输类型,00 表示单次传输
Bit 2-3: 自动初始化方式,00 表示不自动初始化
Bit 4-5: 传输方向,10 表示从外设读取数据
Bit 6-7: 传输速率,00 表示最高速率
模式寄存器的值为 00010100B,即 14H。
3. 设置外设地址寄存器(Address Register,AR)。
外设地址寄存器的值为 02H,表示使用通道 2。
4. 设置计数器寄存器(Counter Register,CR)。
计数器寄存器的值为 4096-1,即 0FFFH。
5. 设置存储器地址寄存器(Memory Address Register,MAR)。
存储器地址寄存器的值为 28086H。
6. 启动传输。
启动传输需要向命令寄存器(Command Register,CR)写入 01H。
完整的初始化程序如下:
```
MOV DX, 0D00H ; 将 8237 DMA 控制器的基址端口地址 0D00H 存入 DX
MOV AL, 29H ; 控制字寄存器的值为 29H
OUT DX, AL ; 将控制字寄存器的值写入 8237 DMA 控制器的基址端口
INC DX ; 选择命令字寄存器
MOV AL, 01H ; 启动 DMA 传输
OUT DX, AL ; 将命令字寄存器的值写入 8237 DMA 控制器的基址端口
DEC DX ; 选择模式字寄存器
MOV AL, 14H ; 模式寄存器的值为 14H
OUT DX, AL ; 将模式寄存器的值写入 8237 DMA 控制器的基址端口
DEC DX ; 选择外设地址寄存器
MOV AL, 02H ; 外设地址寄存器的值为 02H
OUT DX, AL ; 将外设地址寄存器的值写入 8237 DMA 控制器的基址端口
DEC DX ; 选择计数器寄存器
MOV AX, 0FFFH ; 计数器寄存器的值为 0FFFH
OUT DX, AL ; 将计数器寄存器的低8位写入 8237 DMA 控制器的基址端口
DEC DX ; 选择计数器寄存器
MOV AL, AH ; 计数器寄存器的值为 0FFFH
OUT DX, AL ; 将计数器寄存器的高8位写入 8237 DMA 控制器的基址端口
DEC DX ; 选择存储器地址寄存器
MOV AX, 28086H ; 存储器地址寄存器的值为 28086H
OUT DX, AL ; 将存储器地址寄存器的低8位写入 8237 DMA 控制器的基址端口
DEC DX ; 选择存储器地址寄存器
MOV AL, AH ; 存储器地址寄存器的值为 28086H
OUT DX, AL ; 将存储器地址寄存器的高8位写入 8237 DMA 控制器的基址端口
```
这样,就完成了对8237 DMA控制器通道2的初始化,可以开始进行DMA传输了。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)