版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第8 8章章 输入输出程序设计输入输出程序设计 CPUMEMI/O设备设备总线总线I/O接口接口CPU可以直接读写可以直接读写3 个地方的个地方的数据:数据:(1)CPU 内部的寄存器;内部的寄存器;(2)内存单元;)内存单元;(3)端口。)端口。CPU与与I/O接口进行通信是接口进行通信是通过接口电路内部的一组通过接口电路内部的一组寄存器实现的,这些寄存寄存器实现的,这些寄存器称为端口,包括:数据器称为端口,包括:数据端口、状态端口和命令端口。端口、状态端口和命令端口。2数据数据状态状态CPU接口接口外设外设控制控制 I/O I/O接口接口CPU与外设交换的信息类型:与外设交换的信息类型
2、:1、控制信息、控制信息命令寄存器命令寄存器2、状态信息、状态信息状态寄存器状态寄存器3、数据信息、数据信息数据寄存器数据寄存器端口的编址方式端口的编址方式 I/O端口与存储器统一编址端口与存储器统一编址 I/O端口单独编址(端口单独编址(80X86微微机)机)CPU与外设与外设不同外设具有的端口数各不相同,不同外设具有的端口数各不相同,计算机中为每一个端口都赋予一计算机中为每一个端口都赋予一个惟一编号个惟一编号称为称为端口地址端口地址(或或端口号端口号PORT)。 8086CPU采用采用I/O端口端口独立编址独立编址的的方式,采用方式,采用16位地址最多能管理位地址最多能管理64K个端口个端
3、口,即端口占即端口占64KB地址空地址空间,端口号为间,端口号为065535。必须使用。必须使用专门的专门的I/O指令指令访问端口。访问端口。3(只能用(只能用AX或或AL与端口传送信息)与端口传送信息) 输入指令输入指令 IN (I/O CPU) 长格式:长格式: IN AL, PORT (字节)(字节) IN AX, PORT (字)(字) 执行操作:执行操作:(AL) ( PORT ) (字节)(字节) (AX) ( PORT+1, PORT )(字)(字) 短格式:短格式: MOV DX, PORT IN AL, DX (字节)(字节) IN AX, DX (字)(字) 执行操作:执行
4、操作:(AL) ( (DX) ) (字节)(字节) (AX) ( (DX)+1, (DX) )(字)(字) PORT是端口地是端口地址址(00FFH)端口号端口号255时,时,先送到先送到DX输出指令输出指令 OUT (CPU I/O)长格式:长格式: OUT PORT, AL (字节)(字节) OUT PORT, AX (字)(字)功能:将寄存器中内容输出到指定端口。功能:将寄存器中内容输出到指定端口。短格式:短格式: MOV DX , PORT OUT DX, AL (字节)(字节) OUT DX, AX (字)(字)累加器专用传送指令IN/OUT4访问端口:访问端口: in al,60h
5、;从从60h号端口读入一个字节号端口读入一个字节 执行时与总线相关的操作:执行时与总线相关的操作: CPU通过地址线将地址信息通过地址线将地址信息60h发出;发出; CPU通过控制线发出端口读命令,选中端口所通过控制线发出端口读命令,选中端口所在的芯片,并通知它,将要从中读取数据;在的芯片,并通知它,将要从中读取数据; 端口所在的芯片将端口所在的芯片将60h端口中的数据通过数据端口中的数据通过数据线送入线送入CPU。 注意:在注意:在in和和out 指令中,只能使用指令中,只能使用 ax 或或al 来存来存放从端口中读入的数据或要发送到端口中的数据。放从端口中读入的数据或要发送到端口中的数据。
6、 过程演示过程演示561、查询方式、查询方式(程序控制方式程序控制方式)2 、中断方式、中断方式3 、DMA方式方式(直接存储器存取方式直接存储器存取方式/ /成组传送方式成组传送方式)8.1 I/O 设备的数据传送方式设备的数据传送方式71查询传送方式查询传送方式CPU和内存通过端口与外部设备进行通信。和内存通过端口与外部设备进行通信。CPU在在执行主程序过程中,当需要进行执行主程序过程中,当需要进行I/O操作时,很难保证输操作时,很难保证输入设备已经准备好了数据,或者是输出设备已经处在可以入设备已经准备好了数据,或者是输出设备已经处在可以接收数据的状态。因此,一般要在外部设备准备就绪并且接
7、收数据的状态。因此,一般要在外部设备准备就绪并且I/O接口已经做好数据传送的情况下,才能进行数据传送,接口已经做好数据传送的情况下,才能进行数据传送,这种传送方式称为查询传送方式。这种传送方式称为查询传送方式。开始开始结束结束读外设状态读外设状态准备好?准备好?传送数据传送数据N传送完?传送完?NYY 查询传送工作流程查询传送工作流程查询过程使查询过程使CPU很容易很容易与不同速度的外设实现与不同速度的外设实现速度配合,使接口电路速度配合,使接口电路十分简单,适用于较少十分简单,适用于较少数据传输情况下使用。数据传输情况下使用。82中断传送方式中断传送方式采用中断方式,采用中断方式, CPU执
8、行主程序,等待中断执行主程序,等待中断的发生。的发生。I/O设备与设备与CPU并行操作,进行数据传并行操作,进行数据传输的准备工作。当输入设备将数据准备好,或者输的准备工作。当输入设备将数据准备好,或者输出设备空闲时,便通过输出设备空闲时,便通过I/O接口向接口向CPU发申请发申请中断。中断。CPU在每执行完一条指令之后都会检查是在每执行完一条指令之后都会检查是否有中断请求,只要满足中断响应条件,否有中断请求,只要满足中断响应条件,CPU就就暂停执行当前的程序,转向执行中断处理程序,暂停执行当前的程序,转向执行中断处理程序,进行数据传送,等传送完成后,进行数据传送,等传送完成后,CPU返回到被
9、中返回到被中断的主程序,继续进行原来的工作。断的主程序,继续进行原来的工作。 中断服务程序中断服务程序中断服务程序中断服务程序发申请发申请发申请发申请中断源中断源93、DMA方式方式成组数据传送方式成组数据传送方式DREQHOLDHLDADACKCPUDMA控制器控制器存储器存储器I/O接口接口DMA传送方式传送方式主要由硬件主要由硬件DMA控制器实现其传送功能,用于一些控制器实现其传送功能,用于一些高速的高速的I/O设备设备(比如磁盘比如磁盘),能使,能使I/O设备直接与存储器设备直接与存储器进行成批数据的快速传送。进行成批数据的快速传送。10程序查询方式:程序查询方式:要占用要占用CPU大
10、量时间去查询大量时间去查询I/O设备的状态。设备的状态。 中断方式:中断方式:需要保护现场和恢复现场,数据传输由需要保护现场和恢复现场,数据传输由CPU完成。完成。DMA方式:方式:用用DMA控制器来控制存储器和控制器来控制存储器和I/O设备之间的数设备之间的数据传送时,并不经过据传送时,并不经过CPU,传输过程中,传输过程中CPU不占用总线,不占用总线,CPU处于原地等待。这样,传输时就不需要保存断点等额外处于原地等待。这样,传输时就不需要保存断点等额外操作了。另外,整个控制数据块传送的过程,包括地址增量操作了。另外,整个控制数据块传送的过程,包括地址增量和计数器减量的操作,都是由硬件控制完
11、成的,因而大大缩和计数器减量的操作,都是由硬件控制完成的,因而大大缩短了数据传送的控制时间,提高了整个系统的处理效率。短了数据传送的控制时间,提高了整个系统的处理效率。三种方式的比较三种方式的比较11 I/O 指令指令是主机与外设进行通信的最基本途径。是主机与外设进行通信的最基本途径。DOS 功能调用和功能调用和BIOS例行程序中的输入例行程序中的输入/ /输出功能也是由输出功能也是由IN和和OUT指令完成的。指令完成的。例:循环测试某例:循环测试某状态寄存器状态寄存器的的2位是否为位是否为1 AGAIN: AGAIN: IN AL, IN AL, STATUS_PORTSTATUS_PORT
12、 TEST AL, 00000100B TEST AL, 00000100B JZ AGAIN JZ AGAIN8.2 程序直接控制程序直接控制 I/O 方式方式 读读I/O状态状态准备好?准备好? 传送数据传送数据NYIN AL,DATA_PORTIN AL,DATA_PORT MOV AL, DATAOUT DATA_PORT, AL状态寄存器的端状态寄存器的端口地址口地址(00FFH)数据寄存器的端数据寄存器的端口地址口地址(00FFH)12轮流查询几种轮流查询几种I/O设备:设备:DEV1: INAL, STAT1TESTAL, STAT1_BITJZDEV2CALLFAR PTR P
13、ROC1DEV2: INAL, STAT2TESTAL, STAT2_BITJZDEV3CALLFAR PTR PROC2DEV3: INAL, STAT3TESTAL, STAT3_BITJZDEV1CALLFAR PTR PROC3优:程序安排或修改优:程序安排或修改 设备的优先次序设备的优先次序缺:查询等待浪费缺:查询等待浪费CPU大量有效时间大量有效时间使用使用I/O指令直接控指令直接控制输入输出比调用制输入输出比调用DOS功能或功能或BIOS例行例行程序效率更高,但其程序效率更高,但其对硬件的依赖性很大,对硬件的依赖性很大,所以一般的程序设计所以一般的程序设计还是尽可能使用还是尽可能
14、使用DOS或或BIOS功能调用。功能调用。13发声系统发声系统 为了具有音响输出能力,系统板上装有一个为了具有音响输出能力,系统板上装有一个2.25英寸的扬声器英寸的扬声器以及控制电路和驱动电路。控制电路能以位触发和定时器控制两以及控制电路和驱动电路。控制电路能以位触发和定时器控制两种不同的方式驱动扬声器发声。种不同的方式驱动扬声器发声。设备控制寄存器设备控制寄存器( 61h61h )1/0 01/0 0 控制其它外部设备控制其它外部设备与门与门放大器放大器2号定时器门控号定时器门控1 0(1 1)位触发方式)位触发方式 程序直接控制程序直接控制PPI(8255APPI(8255A可编程序外围
15、接口芯片可编程序外围接口芯片) )的输出控的输出控制寄存器(制寄存器(I/OI/O端口端口61H61H)的)的1 1位,使该位按所需的频率进行位,使该位按所需的频率进行1 1和和0 0的交替变化,从而控制开关电路产生一串脉冲波形,经放大后的交替变化,从而控制开关电路产生一串脉冲波形,经放大后驱动扬声器发声。如果控制这一串脉冲的脉宽和长度就可以产生驱动扬声器发声。如果控制这一串脉冲的脉宽和长度就可以产生不同频率和不同音长的声音。不同频率和不同音长的声音。14例例8.1:Sound 程序程序; -发声程序,发声程序, mov dx, 100 mov dx, 100 ;50;50个周期个周期, ,脉
16、冲持续的时间脉冲持续的时间 in al, 61hin al, 61h and al, 11111100b and al, 11111100b ; ;置置0 0、1 1位为位为0 0sound: xor al, 2 sound: xor al, 2 ; ;改变改变1 1位的值,与位的值,与1 1异或取反异或取反 out 61h, alout 61h, al mov cx, 2800 mov cx, 2800 ; ;控制延迟时间,即脉宽控制延迟时间,即脉宽wait1: loop wait1 wait1: loop wait1 ;8086CPUloop;8086CPUloop指令指令 ; ;执行执行
17、1717个时钟周期个时钟周期 ; ;延迟时间延迟时间28002800* *1717* *T T ;(T(T为主频的倒数为主频的倒数) ) dec dx dec dx jne sound jne sound ;假如系统频率为;假如系统频率为4.7MHZ4.7MHZ, ; ;得到延迟时间为得到延迟时间为10ms10ms 15 使用使用LOOP指令实现延迟的程序延迟时间依赖指令实现延迟的程序延迟时间依赖CPU主主频和频和LOOP指令的执行周期,为了建立一个与处理器指令的执行周期,为了建立一个与处理器无关的时间延迟,无关的时间延迟,IBM采用了一种利用硬件产生时间采用了一种利用硬件产生时间延迟的方法。
18、延迟的方法。 wait1: mov cx, 633 ;633* 15.08*10-6s =10ms call waitf ;调用延时调用延时15.08*10-6s dec bx ;BX 控制音频控制音频 jnz wait1 . 16利用硬件产生延迟的方法,与处理器无关利用硬件产生延迟的方法,与处理器无关 ;-利用端口利用端口61h的的PB4延时延时15.08*10-6s子程序子程序;-入口参数为入口参数为CX,必须装入,必须装入15.08*10-6s的倍数的倍数waitf proc nearpushaxwaitf1:inal, 61handal, 10hcmpal, ahje waitf1mo
19、vah, alloopwaitf1popaxretwaitf endp17(2)定时器触发方式)定时器触发方式可编程时间间隔定时器可编程时间间隔定时器8253/82548253/8254计数器计数器0:用于控制系统时钟正常运转,端口地:用于控制系统时钟正常运转,端口地址为址为40H。 计数器计数器1:用于存储器刷新:用于存储器刷新 ,端口地址为,端口地址为41H。 计数器计数器2:用于控制扬声器发声,端口地址为:用于控制扬声器发声,端口地址为42H。 公用的控制寄存器公用的控制寄存器:端口地址为:端口地址为43H188253/82548253/8254定时器作为发声源定时器作为发声源计数器计数
20、器2 的的G端与端与61H端口的端口的bit0位相连,将位相连,将61H端口的端口的bit0位置成位置成1,那,那么计数器么计数器2就被启动,此时将有一组信号从就被启动,此时将有一组信号从OUT端输出,信号的频率可以端输出,信号的频率可以用程序控制用程序控制(设初值设初值);若;若61H端口端口bit0位为位为0,则定时器被关闭,则定时器被关闭,OUT端就端就会恒定为会恒定为1。 系统系统19扬声器驱动扬声器驱动 与门用在这里相当一个与门用在这里相当一个“可控开关可控开关”,如果将,如果将61H端口端口的的bit0、bit1位都置成位都置成1,则相当于既打开了定时器又打开了,则相当于既打开了定
21、时器又打开了开关,这时候定时器产生的声音信号就会送到放大器推动喇开关,这时候定时器产生的声音信号就会送到放大器推动喇叭发声;称为叭发声;称为 定时器触发方式定时器触发方式 若将若将bit0位置位置0,则定时器关闭,此时,则定时器关闭,此时OUT端为端为1,这时,这时候如果连续改变候如果连续改变bit1位的状态,也可以从喇叭中听到声音,位的状态,也可以从喇叭中听到声音,这就是这就是位触发方式位触发方式;若将;若将bit1位置位置0,则开关关闭,此时即使,则开关关闭,此时即使打开定时器也不能听到声音。打开定时器也不能听到声音。 IN AL , 61H ;读状态读状态 MOV AH , AL ;保存
22、原状态,保存原状态,push ax OR AL , 00000011B ;置置bit0,bit1为为1 OUT 61H , AL . MOV AL , AH ;恢复原状态恢复原状态, pop ax OUT 61H , AL20扬声器发声通用子程序扬声器发声通用子程序21 call waitf ;调用延时调用延时15.08*10-6s22返回本节返回本节23演奏乐曲程序演奏乐曲程序音名CDEFGABCDEFGABC唱名12345671234567i频率(Hz)131147165175196220247262294330349392440492523低低中中高高242526返回本节返回本节27补充
23、知识: CMOS RAM 芯片PC机中有一个机中有一个CMOS RAM芯片,其有如下特芯片,其有如下特征:征: (1)包含一个实时钟和一个有)包含一个实时钟和一个有128个存储单元的个存储单元的RAM存储器。存储器。 (2)该芯片靠电池供电。)该芯片靠电池供电。 所以,关机后其内部的实时钟仍可正常工作,所以,关机后其内部的实时钟仍可正常工作, RAM 中的信息不丢失。中的信息不丢失。 (3) 128 个字节的个字节的 RAM 中,内部实时钟占用中,内部实时钟占用 00dh单元来保存时间信息,其余大部分分单元用于单元来保存时间信息,其余大部分分单元用于保存系统配置信息,供系统启动时保存系统配置信
24、息,供系统启动时BIOS程序读取。程序读取。 BIOS也提供了相关的程序,使我们可以在开机的时也提供了相关的程序,使我们可以在开机的时候配置候配置CMOS RAM 中的系统信息。中的系统信息。28补充知识: CMOS RAM 芯片CMOS RAM芯片特征:芯片特征: (4)该芯片内部有两个端口,端口地址为)该芯片内部有两个端口,端口地址为70h和和71h。 CPU 通过这两个端口读写通过这两个端口读写CMOS RAM。 (5)70h为地址端口为地址端口,存放要访问的,存放要访问的CMOS RAM单元的地址;单元的地址; 71h为数据端口为数据端口,存放从选定的,存放从选定的CMOS RAM 单
25、元中读取的数据,或要写入到其中单元中读取的数据,或要写入到其中的数据。可见,的数据。可见,CPU对对CMOS RAM的读写分两步的读写分两步进行。进行。比如:读比如:读CMOS RAM的的2号单元:号单元: 1、将、将2送入端口送入端口70h mov al, 2 out 70h, al 2、从、从71h读出读出2号单元的内容号单元的内容 in al, 71h29CMOS RAM中存储的时间信息在在CMOS RAM中,存放着当前时间:中,存放着当前时间: 秒:秒:00H 分:分:02H 时:时:04H 星期:星期:06H 日:日:07H 月:月:08H 年:年:09H这这6个信息的长度都为个信息
26、的长度都为1个字节。个字节。这些数据以这些数据以BCD码的方式存放:码的方式存放:数码:数码: 0 1 2 3 4 BCD码:码:0000 0001 0010 0011 0100数码:数码: 5 6 7 8 9 BCD码:码:0101 0110 0111 1000 100130CMOS RAM中存储的时间信息比如:比如: 数值数值26,用,用BCD码表示为:码表示为:0010 0110可见,一个字节可表示两个可见,一个字节可表示两个BCD码。码。 则则CMOS RAM存储时间信息的单元中,存储时间信息的单元中,存储了用两个存储了用两个 BCD码表示的两位十进制码表示的两位十进制数,高数,高 4
27、 位的位的BCD码表示十位,低码表示十位,低4 位的位的BCD 码表示个位。码表示个位。 比如:比如:00010100b表示表示14。31CMOS RAM中存储的时间信息编程:在屏幕上显示当前的月份。编程:在屏幕上显示当前的月份。 分析:这个程序主要做两部分工作:分析:这个程序主要做两部分工作: (1)从)从CMOS RAM的的8号单元读出当前月份的号单元读出当前月份的BCD码;码; (2)将用)将用BCD码表示的月份以十进制的形式显码表示的月份以十进制的形式显示到屏幕上。示到屏幕上。BCD 码值十进制数码值,则码值十进制数码值,则BCD码值码值30h十进制数对应的十进制数对应的ASCII码。
28、码。 从从CMOS RAM的的8号单元读出的一个字节中,号单元读出的一个字节中,包含了用两个包含了用两个 BCD 码表示的两位十进制数,高码表示的两位十进制数,高4位的位的 BCD码表示十位,低码表示十位,低 4位的位的 BCD码表示码表示个位。要分两次进行转换显示。个位。要分两次进行转换显示。 32 要读取要读取 CMOS RAM的信息,我们首先要向地址端的信息,我们首先要向地址端口口70h写入要访问的单元的地址:写入要访问的单元的地址: mov al,8 out 70h,al 然后从数据端口然后从数据端口71h中取得指定单元中的数据:中取得指定单元中的数据: in al,71h mov a
29、h,al ;al中为从中为从CMOS RAM的的 8 号单元读出的数据号单元读出的数据 mov cl,4 shr ah,cl ;ah中为月份的十位数码值中为月份的十位数码值 and al,00001111b ;ah中为月份的个位数码值中为月份的个位数码值 add ah,30h ;ah中为月份的十位数中为月份的十位数SACII码码 add al,30h ;ah中为月份的个位数中为月份的个位数SACII码码33请编程在屏幕上以“年/月/日时:分:秒”的格式,显示显示当前的日期、时间。 34中断:中断:使使cpu中止正在执行的程序而转去处理特殊事件的操作。中止正在执行的程序而转去处理特殊事件的操作。
30、中断源:中断源:引起中断的事件。引起中断的事件。8086/8088CPU最多有最多有256个中断源个中断源,这些中断源根据来自,这些中断源根据来自CPU的内部还是外部分为两大类:内部中的内部还是外部分为两大类:内部中断源和外部中断源。断源和外部中断源。外中断外中断(硬中断硬中断): 外设的外设的 I/O 请求请求 可屏蔽中断可屏蔽中断INTR 电源掉电电源掉电 / 奇偶错奇偶错 非屏蔽中断非屏蔽中断NMI所谓不可屏蔽中断是指该中断请求不能通过软件的方式对其屏蔽,一旦所谓不可屏蔽中断是指该中断请求不能通过软件的方式对其屏蔽,一旦出现出现NMI中断请求,中断请求,CPU必须立即响应。必须立即响应。
31、内中断内中断(软中断软中断): INT 指令指令 / CPU 错(除法错、溢出)错(除法错、溢出)/ 为调试程序设置的中断(为调试程序设置的中断(t、g命令)命令)8.3 中断传送方式中断传送方式35非屏蔽中断请求非屏蔽中断请求 中断逻辑中断逻辑INT nINTO除法错除法错单步单步 n 4 0 1CPU 2 NMI8259A可编程中断控制器可编程中断控制器(PIC)IR0 系统定时器系统定时器IR1 键盘键盘IR2 彩色彩色/图形接口图形接口IR3 保留保留IR4 串行通讯口串行通讯口IR5 保留保留IR6 软盘软盘IR7 打印机打印机INTR08090A0B0C0D0E0F80 x86 中
32、断源(中断源(图中引线端标示的数字为分配的图中引线端标示的数字为分配的终端类型号终端类型号N(0-255)):):8259A外部有外部有28个引脚。有个引脚。有9片片8259A可构成可构成64级中断源。级中断源。36 类型类型0的的(IP) 类型类型0的的(CS) 类型类型1的的(IP) 类型类型1的的(CS) 类型类型N的的(IP) 类型类型N的的(CS) 类型类型255的的(IP) 类型类型255的的(CS)0000000004 4*N003FC中断向量中断向量中断处理程序的入口中断处理程序的入口 地址(段址)地址(段址):(偏址)(偏址)中断向量表中断向量表:各类型(各类型(00FFH)
33、中断处理程序的入口地址表)中断处理程序的入口地址表37设置设置CPU中断允许位:中断允许位: FLAGS 中的中的 IF 位位 = 1 允许中断允许中断 ( STI 开中断)开中断) = 0 禁止中断禁止中断 ( CLI 关中断)关中断)设置中断屏蔽位:设置中断屏蔽位: 中断屏蔽寄存器的中断屏蔽位中断屏蔽寄存器的中断屏蔽位 = 0 允许允许I/O设备请求中断设备请求中断 = 1 禁止禁止I/O设备请求中断设备请求中断 7 6 5 4 3 2 1 0定时器定时器键键 盘盘 打印机打印机中断屏蔽寄存器中断屏蔽寄存器21H 7 6 5 4 3 2 1 0中断命令寄存器中断命令寄存器20H EOIMO
34、V AL, 20HOUT 20H, AL8259A中断的条件(中断的条件(从外设发出中断请求到从外设发出中断请求到CPU响应中断,有响应中断,有两个控制条件起决定性作用两个控制条件起决定性作用):):IN AL, 21HAND AL,0FDH OUT 21H,AL结束硬件中断结束硬件中断RSL38CPU中断过程:中断过程:(1)取中断类型:)取中断类型:CPU type N(2)保护现场:)保护现场:FLAGS、CS、IP入栈入栈(3)IF=0 (关中断关中断), TF=0(禁止单步中断)(禁止单步中断)(4)计算中断向量地址,取中断向量)计算中断向量地址,取中断向量:(:(4N) IP (4
35、N2) CS(5)转中断处理程序)转中断处理程序 以上步骤都由硬件完成。采用向量中断的方法,大大加快了以上步骤都由硬件完成。采用向量中断的方法,大大加快了中断处理的速度。因为计算机可直接通过中断向量表转向相应中断处理的速度。因为计算机可直接通过中断向量表转向相应的处理程序,而不需要的处理程序,而不需要CPU去逐个检测和确定中断原因。去逐个检测和确定中断原因。39 int指令指令格式:格式: int n ;n为中断类型码。为中断类型码。功能:是引发功能:是引发n号中断过程。号中断过程。CPU 执行执行int n过程如下:过程如下: (1)取中断类型码)取中断类型码n; (2)标志寄存器入栈,)标
36、志寄存器入栈,IF = 0,TF = 0; (3)CS、IP入栈;入栈; (4)(IP) = (n*4),(CS) = (n*4+2)。从此处转去执行从此处转去执行n号中断的中断处理程序。号中断的中断处理程序。40IRET指令可见,可见,int 指令的最终功能和指令的最终功能和call指令相似,都是调用指令相似,都是调用一段程序。一般情况下,系统将一些具有一定功能的一段程序。一般情况下,系统将一些具有一定功能的子程序,以中断处理程序的方式提供给应用程序调用。子程序,以中断处理程序的方式提供给应用程序调用。我们在编程的时候,可以用我们在编程的时候,可以用int指令调用指令调用这些子程序,这些子程
37、序,而在子程序中安排而在子程序中安排iret指令返回指令返回。我们将这样的中断处。我们将这样的中断处理子程序简称为中断例程。理子程序简称为中断例程。Iret指令的执行过程相当于:指令的执行过程相当于: pop ip pop cs pop flags41中断程序的编写步骤:中断程序的编写步骤: 中断处理程序的编写与子程序类似,先保护现场,再完成中断处理程序的编写与子程序类似,先保护现场,再完成功能,然后恢复现场,最后用功能,然后恢复现场,最后用IRET指令返回,返回地址指令返回,返回地址是中断发生时紧接着的下一条指令。是中断发生时紧接着的下一条指令。中断处理子程序:中断处理子程序:保存寄存器内容
38、保存寄存器内容如允许中断嵌套,则开中断如允许中断嵌套,则开中断 ( STI )中断处理功能中断处理功能关中断(关中断(CLI)送中断结束命令送中断结束命令( EOI )给中断命令寄存器给中断命令寄存器恢复寄存器内容恢复寄存器内容IRET中断返回中断返回主程序:主程序:1、设置中断向量、设置中断向量2、设置、设置 CPU 的中断允许位的中断允许位 IF3、设置设备的中断屏蔽位、设置设备的中断屏蔽位42注意:注意:程序员在编程的程序员在编程的时候可以调用系统设置时候可以调用系统设置好的中断例程,也可以好的中断例程,也可以自己编写中断处理程序。自己编写中断处理程序。中断类型号中断类型号0、1、3、4
39、是固定的内部中断,向是固定的内部中断,向量量2是非屏蔽中断,向量是非屏蔽中断,向量531是保留给系统使用是保留给系统使用的中断,向量的中断,向量32255则则是用户可用的中断。是用户可用的中断。用户可扩充自己需要用户可扩充自己需要的中断功能。的中断功能。43例例:为中断类型为中断类型 N 设置中断向量设置中断向量 MOV AX, 0 MOV AX, 0 MOV ES, AX MOV ES, AX ; ;中断向量表的段地址为中断向量表的段地址为00000000 MOV BX, N MOV BX, N* *4 4 ; ;计算类型计算类型N N的中断向量地址的中断向量地址 MOV AX, OFFSE
40、T MOV AX, OFFSET INTHAND INTHAND MOV ES: WORD PTRBX, AX MOV ES: WORD PTRBX, AX ;中断处理程序的中断处理程序的偏移地址偏移地址(N(N* *4)4) MOV AX, SEG MOV AX, SEG INTHANDINTHAND MOV ES: WORD PTRBX+2,AX MOV ES: WORD PTRBX+2,AX ; ;段地址段地址(N(N* *4+2)4+2) INTHAND: ; INTHAND: ;中断处理程序中断处理程序 IRET IRET44注意:在设置自己的中断向量时,应先保存原中断向量再设注意:
41、在设置自己的中断向量时,应先保存原中断向量再设置新的中断向量,在程序结束之前要恢复原中断向量。置新的中断向量,在程序结束之前要恢复原中断向量。一般是使用一般是使用DOS 功能调用(功能调用(21H)存取存取中断向量:中断向量:设置中断向量:设置中断向量:AH = 25HAL = 中断类型号中断类型号DS : DX = 中断向量中断向量INT 21H取中断向量:取中断向量:AH = 35HAL = 中断类型号中断类型号INT 21H返回时送返回时送 ES : BX = 中断向量中断向量45MOV AL, NMOV AL, NMOV AH, 35HMOV AH, 35HINT 21HINT 21H ; ; 取原中断向量取原中断向量PUSH ESPUSH ESPUSH BXPUSH BX ; ; 保存原中断向量保存原中断向量PUSH DSPUSH DSMOV AX, SEG INTHANDMOV AX, SEG IN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金融行业前台咨询工作总结
- 营销行业创新实践总结
- 无人驾驶技术的前景展望
- IT行业销售员工作总结
- 电力行业可再生能源发展顾问工作总结
- 书店美容院保安工作经验
- 金融行业中理财咨询顾问的工作要求
- 旅游行业导游培训总结
- 【八年级下册地理湘教版】专项04 时政地理
- 2024年税务师题库附参考答案【轻巧夺冠】
- 安全与急救学习通超星期末考试答案章节答案2024年
- 2024-2025学年度广东省春季高考英语模拟试卷(解析版) - 副本
- 2024电力安全工器具及小型施工机具预防性试验规程
- 基于单片机的2.4G无线通信系统
- 《建筑力学》期末机考资料
- 广东省广州市2023-2024学年三年级上学期英语期中试卷(含答案)
- DB11T 1282-2022 数据中心节能设计规范
- GB/T 44694-2024群众性体育赛事活动安全评估工作指南
- 【二年级】上册道德与法治-14 家乡物产养育我 教学设计(表格式)人教版道德与法治 二年级上册
- 陶笛欣赏课件
- IEC60068系列标准清单
评论
0/150
提交评论