计算机原理答案 下载本文

MOV [BX], AL ;数据存入缓冲区 INC BX ;修改指针 LOOP ONE ;100个数据尚未输入完成,转ONE继续 JMP DONE ;100个数据输入完成,转DONE结束程序 OVERTIME: LEA DX, ERROR MOV AH, 9 INT 21H ;响应超时,显示出错信息 DONE: MOV AX, 4C00H INT 21H ;返回OS CODE ENDS END START 11. 某输出设备数据端口、状态端口地址分别为220H, 221H。状态端口D0=1表示输出完成。将数据段中以STRING为首地址的20个字符(用七位ASCII代码存储)添加水平和垂直校验发送到该外部设备。用8086汇编语言编写完成上述功能的I/O程序。

汇编语言程序: DATA SEGMENT

STRING DB 20 DUP ( ? ) SUM DB 0 DATA ENDS ;

CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV CX, 20 LEA BX, STRING MOV SUM, 0 ; 垂直校验码初值为0 ONE: MOV DX, 221H ; DX置为状态端口地址 IN AL, DX TEST AL, 00000001B ;测试输出完成位 JZ ONE ;未完成,转ONE继续读取状态 MOV AL, [BX] ;从字符串取出一个字符的ASCII代码

AND AL, 07FH ;清除最高位,准备置入校验位 JPE OUTPUT ;判代码奇偶属性, OR AL, 80H ;奇数个“1”,最高位置1(偶校验) OUTPUT: MOV DX, 220H OUT DX, AL ;输出添加了校验位的代码 XOR SUM, AL ;生成垂直校验位 INC BX ;修改指针 LOOP ONE ;20个数据尚未输出完成,转ONE继续

MOV DX, 221H ;输出垂直校验代码

LAST: IN AL, DX TEST AL, 00000001B JZ LAST MOV AL, SUM MOV DX, 220H OUT DX, AL DONE: MOV AX, 4C00H INT 21H ;返回OS CODE ENDS END START 1. 什么叫中断?有哪几种不同类型的中断?

由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行处理该事件的一个程序。该程序执行完成后,CPU接着执行被暂停的程序。这个过程称为中断。

根据中断源的位置,有两种类型的中断。有的中断源在CPU的内部,称为内部中断。大多数的中断源在CPU的外部,称为外部中断。

根据中断引脚的不同,或者CPU响应中断的不同条件,也可以把中断划分为可屏蔽中断和不可屏蔽中断两种。

2. 什么是中断类型?它有什么用处?

用若干位二进制表示的中断源的编号,称为中断类型。

中断类型用来区分不同的中断,使CPU能够在中断响应时调出对应的中断服务程序进行中断处理。 3.

4. 什么是中断嵌套?使用中断嵌套有什么好处?对于可屏蔽中断,实现中断嵌套的条件是

什么?

CPU在处理级别较低的中断过程中,出现了级别较高的中断请求。CPU停止执行低级别中断的处理程序而去优先处理高级别中断,等高级别中断处理完毕后,再接着执行低级别的未处理完的中断处理程序,这种中断处理方式称为多重(级)中断或中断嵌套。

使用中断嵌套可以使高优先级别的中断得到及时的响应和处理。

对于可屏蔽中断,由于CPU在响应中断时已将IF清零,所以一定要在中断处理程序中加入开中断指令,才有可能进行中断嵌套。

5. 什么叫中断屏蔽?如何设置I/O接口的中断屏蔽?

用程序的方法使某些中断源的中断请求不能够发送到CPU,或者虽然能够发送但是不能得到响应,这种方法称为中断屏蔽。

在外设的接口内增设一个中断屏蔽触发器(可以用D触发器实现),该触发器的Q端与中断请求信号相“与”后连接到INTR。当Q = 0时,中断请求不能发往INTR。通过设定中断屏蔽触发器的状态,可以控制中断请求信号是否能够送到INTR端。

置IF= 0, 可以使80x86CPU不响应来自INTR的可屏蔽中断请求。

6. 什么是中断向量?中断类型为1FH的中断向量为2345H:1234H,画图说明它在中断向

量表中的安置位置。

中断服务程序的入口地址称为中断向量。中断类型为0000:007CH34H1FH,它的中断向量放置在1FH×4=0000: 7CH开始的位置上。0000:007DH12H0000:007EH45H如右图。

0000:007FH23H7.

8.

9. 8259A是怎样进行中断优先权管理的?

8259A通过以下两种途径实现对中断优先权的管理:

(1) 通过设置中断屏蔽寄存器IMR,可以屏蔽某些中断请求,从而动态地改变各请

求端的优先级别。

(2) 8259A响应某个中断请求之后,将ISR寄存器对应位置1。如果后续的中断请求

级别低于正在响应的中断请求,则该中断不能立即被响应。反之,如果新的中断请求级别高于正在响应的中断请求,则允许进行中断嵌套。中断服务结束时,应将ISR寄存器对应位清零。

10. 特殊全嵌套方式有什么特点?它的使用场合是什么?

特殊全嵌套方式一般用于级联方式下的8259A主片。

如果8259A主片在一次中断处理尚未结束时,收到了来自同一个引脚的第二次中断请求,并且该8259A采用普通全嵌套方式,则它不会响应来自同一个引脚的第二次中断请求。如果该8259A采用特殊全嵌套方式,就会响应该请求(中断嵌套),从而可以及时响应连接在同一从片8259A上,并且相对有较高优先级别的中断请求。 11. 12. 13. 某8086系统用3片8259A级联构成中断系统,主片中断类型号从10H开始。从片

的中断申请连主片的IR4和IR6引脚,它们的中断类型号分别从20H、30H开始。主、从片采用电平触发,嵌套方式,普通中断结束方式。请编写它们的初始化程序。

假设主片端口地址为10H,12H。从片的端口地址分别为 18H, 1AH和 1CH, 1EH。 ……

MOV AL, 00011001B ;主片ICW1 OUT 10H, AL ;电平触发,级连方式 MOV AL, 10H ;主片ICW2 OUT 12H, AL ;主片中断类型 MOV AL, 01010000B ;主片ICW3 OUT 12H, AL ;IR4,IR6连有从片 MOV AL, 00010001B ;主片ICW4 OUT 12H, AL ;特殊全嵌套,非自动中断结束

MOV AL, 00011001B ;从片ICW1 OUT 18H, AL ;电平触发,级连方式 MOV AL, 20H ;从片ICW2 OUT 1AH, AL ;从片中断类型 MOV AL, 00000100B ;从片ICW3 OUT 1AH, AL ;本片连接在主片IR4引脚上 MOV AL, 00000001B ;从片ICW4 OUT 1AH, AL ;非特殊全嵌套,非自动中断结束

MOV AL, 00011001B ;从片ICW1 OUT 1CH, AL ;电平触发,级连方式 MOV AL, 30H ;从片ICW2

OUT 1EH, AL ;从片中断类型 MOV AL, 00000110B ;从片ICW3 OUT 1EH, AL ;本片连接在主片IR6引脚上 MOV AL, 00000001B ;从片ICW4 OUT 1EH, AL ;非特殊全嵌套,非自动中断结束 注意:

(1) 由于8086系统有16根数据线,各8259A的端口地址均为偶数(假设各8259A

的数据线连接在8086系统的低8位数据线上)。

(2) 主片用特殊全嵌套,从片用一般全嵌套。

习 题 七

1. 8255A的方式选择控制字和C口按位控制字的端口地址是否一样,8255A怎样区分这两种控制字?写出A端口作为基本输入,B端口作为基本输出的初始化程序。 解:

(1) 8255A的方式选择控制字和C口按位控制字的端口地址一样,它们之间的区别在控制字的D7位(特征位)的值不同,8255A的方式选择控制字D7=1,而C口按位置位/复位控制字D7=0。

(2) 初始化程序:(设端口地址为,A口:200H,B口:201H,控制口:203H) MOV AL,90H MOV DX,203H OUT DX,AL

2. 用8255A的A端口接8位二进制输入,B端口和C端口各接8只发光二极管显示二进制数。编写一段程序,把A端口读入的数据送B端口显示,而C端口的各位则采用置0/置1的方式显示A端口的值。 解:(设端口地址为,A口:200H,B口:201H,C口:202H,控制口:203H)

MOV AL, 90H ;8255A初始化: MOV DX, 203H ;8255A各组方式0,A口输入 OUT DX, AL ; B、C口输出 MOV DX, 200H IN AL, DX ;读A口输入值 MOV DX, 201H OUT DX, AL ;送B口输出 MOV AH, AL ;A口输入值转存在AH中 MOV DX, 203H MOV CX, 08 ;CX置循环次数初值 MOV AL, 00H ;C端口置0/置1控制字初值

LPA: AND AL, 0FEH ;清除最低位

SHR AH, 1 ;A端口一位转入CF ADC AL, 0 ;A端口一位从CF转入命令字 OUT DX, AL ;A端口一位从送往C端口对应位 ADD AL, 02H ;形成下一个命令字 LOOP LPA ;处理C端口下一位

5. 8254定时/计数器的定时与计数方式有什么区别?8254在方式0工作时,各通道的CLK、

GATE信号有什么作用?各通道的控制字地址都相同,8254是怎样区分的? 解:

(1) 8254作为计数器使用时,对CLK端的输入脉冲进行单纯的减法计数,这时

CLK端输入的脉冲不作为计时基准。此外,用作计数器时,计数完成后必须重新初始化,只能使用一次。 8254作为定时器使用时,要求CLK端输入的脉冲必须作为时钟基准,通过对该基准时钟脉冲的计数来实现精确定时。用作定时器时,计数的过程周而往复,重复进行。 (2) 8254工作在方式0时,CLK端输入计数用的脉冲信号;GATE信号为高电平

时,对CLK端输入的脉冲进行计数;GATE信号为低电平时,暂停计数; GATE信号重新为高电平后,恢复原先的计数。 (3) 由8254的方式控制字中的D7、D6两位来选择计数通道。