汇编语言第六章 输入输出和WIN32编程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第六章输入/输出和中断

和WIN32编程

前面已经讲过有关输入/输出的问题,主要是用DOS中断调用INT21H来完成键盘输入以及屏幕显示。对于计算机来说,仅有这种输入/输出还不够,因为DOS的中断调用无法实现对其它外设的控制。关于如何用汇编程序实现主机与外设之间的信息交换,将是本章的主要内容。包括:

输入输出指令的使用格式及功能;

主机与外部设备之间传送数据的方式;

中断的概念及中断处理程序设计;

WIN32程序设计基本方法与技术。

6.1I/O设备与数据传送方式

一.主机与外设之间数据的传送方式

计算机与外设之间传送数据有如下4中方式:

1.无条件传送方式:适合于CPU与外设同步的情况。直接传送,高速外设与主机之间数据传送。

2.查询传送方式:适合于低速外设与主机之间数据传送。

3.中断传送方式:适合于低速外设与主机之间数据传送。

4.直接存贮器(又称DMA)传送方式:适合于高速外存与主机的数据传送。

其中:无条件传送和查询传送,直接在端口上利用IN和OUT 指令传送数据。

中断传送:在DOS及BIOS层上通过系统功能调用的中断指令实现。

直接存贮方式:在端口上,采用通道技术实现。在计算机准备好接收,外设准备好传送数据时,外设向CPU发一个请求DMA 传送信号,此时CPU让出总线控制权,使外设与主存在短时间内成批传送数据。

二.外设与主机传送的接口与信息

1.端口与接口

计算机的外设都是通过接口连接到系统上,每个接口由一组寄存器组成,寄存器都有一个称为I/O端口的地址编码。

也就是,每一台外设都通过硬件接口与主机端口相连,并交换信息。

主机外设

CPU

内存I/O 存贮空间(端口)接口I/O 操作

接口的组成:设备状态寄存器、设备控制寄存器、数据寄存器。上述寄存器在I/O 空间中都有固定编码。

I/O 端口的地址空间:允许设置64K 个8位端口或32K 个16位端口。对I/O 空间的访问用IN 或OUT 两个指令。

I/O 端口地址分配,可以查手册。

如:40H ~43H 时钟/定时器,60H ~63H 为8255通讯芯片的接口。

2.外设与主机的信息交换

传送的信息分为三类:

1控制信息:CPU 把控制信息从端口输出到对应外设接口的控制寄存器中,告诉外设应做什么。

2状态信息:把外设的状态寄存器中的内容送到对应的端口中,以便CPU 了解外设状态。

3数据信息:需要交换的数据(8位、16位)。

6.2程序直接控制I/O方式

直接I/O方式有两种:

1无条件传送方式:不查询外设状态寄存器的状态,直接用IN或OUT指令实现CPU与外设信息传送。该方式的特点是:CPU与外设必须同步工作。

2查询传送方式:查询外设状态和控制寄存器中的内容,确定是否传送。特点:CPU与外设不同步。

一.IN和OUT指令

通过前面的学习,我们已经知道,外设与主机传送信息,必须用IN和OUT指令。

IN

外设主机

OUT

1.输入指令IN

功能:从外设寄存器取信息送入AX或AL。

4种形式:

IN AL,PORT功能:(PORT)→AL

IN AX,PORT功能:(PORT+1,PORT)→AX

IN AL,DX功能:([DX])→AL

IN AX,DX功能:([DX])→AX

由AL或AX决定取几个端口的内容。

2.输出指令OUT

功能:将AX或AL内容送到外设寄存器中。

4种形式:

OUT PORT,AL功能:(AL)→PORT

OUT PORT,AX功能:(AX)→PORT(2个8位口)

OUT DX,AL功能:(AL)→[DX]

OUT DX,AX功能:(AX)→[DX]

同样,由AL或AX决定送到几个端口。如:

IN AL,40H

OUT80H,AL

MOV DX,379H

IN AL,DX

注意:端口地址>255,就放到DX中。

二.程序直接控制传送方式

1.无条件传送方式

特点:不查询外设状态,直接用IN和OUT指令传送信息。采

用这种方式,必须保证外设与CPU在传送数据的过程中,具有相同速度(同步)。

例:扬声器发声程序。

已知扬声器的控制寄存器的端口地址为61H,硬件结构如下:

端口61H

7

1/00

2号定时器门控制其它外设

与门放大器

扬声器程序通过I/O指令,使设备控制寄存器的b1位为0或1(交替为0或1),与门的输入为0和1交替的电信号,输出为一个脉冲电流,经放大后,送扬声器使之发声。

STACK SEGMENT STACK

DB200DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK

BEGIN:MOV DX,100;开关次数100

IN AL,61H

AND AL,11111100B;最低2位变为0

S1:XOR AL,2;第1次b1为0,第2次b1为1

OUT61H,AL

MOV CX,140H;延时一段时间(声音频率)

WAIT1:LOOP WAIT1

DEC DX

JNE S1

MOV AH,4CH

INT21H

CODE ENDS

END BEGIN

2.查询传送方式

特点:查询外设状态,条件满足时传送。适合于低速外设与CPU传送信息。

1输入

输入之前,查询数据是否准备好,若准备好则输入,否则等待。

流程:

相关文档
最新文档