汇编学习(6)

本文是汇编语言学习系列的第六部分,详细探讨了存储结构、工作原理以及在DOS环境下如何进行程序编写和测试。通过实例解析,帮助读者深化对汇编编程的理解。
摘要由CSDN通过智能技术生成


  每种输入输出设备都要通过一个硬件接口和CPU相连。这些接口和控制器都能支持输入输出指令IN、OUT与外部设备交换信息。这些信息包括控制、状态和数据三种不同性质的信息,它们必须按不同的端口地址分别传送。
 
  DMA方式即直接存储器存取(Direct Memory Access)方式,也称为成组数据传送方式。
计算机系统完成DMA传送的步骤如下:
  1. DMA控制器向CPU发出HOLD信号请求使用总线。
  2. CPU发出响应信号HOLD给DMA控制器,并将总线让出,这时CPU放弃了对总线的控制,而DMA控制器获得了总线控制权。
  3. 传输数据的存储器地址(在地址寄存器中)通过地址总线发出。
  4. 传输的数据字节通过数据总线进行传送。
  5. 地址寄存器增1,以指向下一个要传送的字节。
  6. 字节计数器减1。
  7. 如字节计数器非0,转向第3步。
  8. 否则,DMA控制器撤销总线请求信号HOLD,传送结束。

 

控制信息输出到I/O接口,通知接口和设备要做什么动作。例如,CPU向I/O接口发出启动信号或停止信号以控制外设的启停。

  状态信息从I/O接口输入到CPU,表示I/O设备当前所处的状态。对于输入设备,通常用准备好(READY)信号来表示外设已准备好输入数据。对于输出设备,通常用忙(BUSY)信号表示设备是否处于空闲状态,如为空闲状态,外设则接收CPU送来的信息,如为忙状态,CPU则要等待。

  数据信息是I/O设备和CPU真正要交换的信息。外设和接口之间的数据信息可以是串行的,也可以是并行的,相应的要使用串行接口或并行接口。不同的I/O设备要求传送的数据类型也是不同的,例如向显示器传送的数据必须是ASCⅡ码,而不能是二进制形式的数。

  80X86具有一系列简单而又灵活的输入/输出方式。一种是用IN和OUT指令直接在端口机上处理输入输出的程序直接控制I/O的方式,另外还有中断传送方式和DMA方式。

  DMA控制器(Intel 8237A)一般包括四个寄存器:控制寄存器,状态寄存器,地址寄存器和字节计数器,这些寄存器在信息传送之前应进行初始化,即系统程序在地址寄存器中设置要传送的数据块的首地址,在字节寄存器中设置要传送的数据长度(字节数),在状态控制寄存器中设置控制字,指出数据是输入还是输出,并启动DMA操作。每个字节传送后地址寄存器增1,字节计数器减1。

  DMA方式主要用于一些高速的I/O设备,如磁带、磁盘、模数转换器(A/D)等设备。这些设备传输字节或字的速率非常快,如磁盘的数据传输率约为每秒200,000字节,也就是说磁盘与存储器传送一个字节只需5微秒。对这类高速I/O设备,用执行输入输出指令的方法或完成一次次中断序列的方法来传输字节,将会造成数据的丢失,而DMA方式能使I/O设备直接和存储器进行成批数据的快速传送。每个字节一到达端口,就直接从接口送到存储器,同样,接口和它的DMA控制器也能直接从存储器取出字节并把它送到I/O设备去。


8.2.1 I/O端口

  计算机的外部设备和大容量存储设备都是通过接口连接到系统上,每个接口由一组寄存器组成,这些寄存器都分配有一个称为I/O 端口的地址编码。计算机的CPU和内存就是通过这些端口和外部设备进行通信的。

  在80X86微机中,I/O 端口编址在一个独立的地址空间中,这个I/O 空间允许设置64K(65536)个8位端口或32K(32768)个16位端口。


 表8.1 I/O 端口地址分配   

I/O地址
功能
00 - 0F
DMA控制器8237A
20 - 3F
可编程中断控制器8259A
40 - 5F
可编程中断计时器
60 - 63
8255A PPI
70 - 71
CMOS RAM
81 - 8F
DMA页表地址寄存器
93 - 9F
DMA控制器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值