第七章作业参考答案1.8086/8088共有多少矢量号?每一个矢量号占用矢量表的几个字节空间?它们的内容含义是什么?中断矢量表定位于内存储器的何处?若中断矢量号N=19H,计算该中断程序的矢量在矢量表中的地址。答:8086/8088共有256个矢量号。每一个矢量号占用矢量表的4个字节空间,前2个字节内容表示中断服务子程序入口地址的偏移地址;后2个字节内容表示中断服务子程序入口地址的段地址。中断矢量表定位于内存储器的00000H~003FFH。当N=19H时,在矢量表中的地址为:0000:0064H.2.若中断矢量表地址00060H存放4200H,00062H中存放1080H,则对应的中断类型号是多少?中断服务程序的入口地址(逻辑地址)是多少?答:对应的中断类型号是18H。中断服务程序的入口地址(逻辑地址)是1080:4200H.3.什么是中断?PC机中有哪些类型中断?应用程序在修改中断矢量时,为什么要关中断?答:中断是指当CPU正常运行程序时,由于CPU内部事件或外设请求,引起CPU暂时中断当前正在运行的程序,转去执行请求中断的外设(或内部事件)的中断服务子程序,执行完中断服务子程序后,再返回原断点处继续执行被暂时中断的程序。PC机的中断类型:外部中断与内部中断。在应用程序修改中断矢量时,防止其它中断发生,因此需要关中断。4.8259A的ICW2设置了中断类型码的哪几位?说明对8259A分别设置ICW2为30H、34H、38H有什么区别?答:8259A的ICW2设置了中断类型码的高5位,低3位自动插入。当8259A对ICW2设置为30H时,说明中断类型码为30H~37H;当8259A对ICW2设置为34H时,中断类型码仍为30H~37H;当8259A对ICW2设置为38H时,说明中断类型码为38H~3FH;5.在由8086构成的最小方式系统中,有一片8259A构成中断控制系统。设在片内A0=0时的端口地址用P8259A表示,在片内A0=1时的端口地址用P8259B表示。若执行程序段:MOVDX,P8259A;初始化MOVAL,00011011BOUTDX,ALMOVDX,P8259BMOVAL,10001000BOUTDX,ALMOVAL,00001101BOUTDX,ALMOVAL,11000010B;OCW1OUTDX,AL试问:中断结束的方式是什么?中断级IR6的中断类型号是什么?IR1和IR2上有效的中断请求信号在IF=1时能否引起CPU的中断?答:中断结束的方式是一般EOI方式;中断级IR6的中断类型号是8EH;IR1不能引起中断而IR2可以引起中断。6.8259A的初始化命令字和操作命令字有什么区别?它们分别对应于编程结构中哪些内部寄存器?答:8259A的初始化命令字只在对芯片进行初始化时使用;而操作命令字在芯片工作过程中使用。初始化命令字有:ICW1、ICW2、ICW3和ICW4;操作命令字有:OCW1、OCW2和OCW3。7.一片8259A可以管理几级中断源?若系统有22级中断源,该采用什么措施?请具体画出8259A的接线原理图。答:一片8259A可以管理8级中断源;若系统有22级中断源,应采用芯片级联的措施;8.怎样用8259A的屏蔽字来禁止IR3和IR5引脚上的请求?又如何撤消该禁止命令?假设8259A的端口地址为93H、94H。解:利用OCW1禁止与允许中断MOVDX,0093HINAL,DXORAL,28HOUTDX,AL;禁止IR3和IR5MOVDX,0093HINAL,DXANDAL,0D7HOUTDX,AL;允许IR3和IR59.8253芯片的时钟信号CLK和门控信号GATE分别起什么作用?解:8253芯片的时钟信号CLK,在计数方式中是外部脉冲的输入;在定时方式中,是基准信号的输入。8253芯片的门控信号GATE,是控制定时/计数器正常工作的信号。10.织布机控制系统如图7.21所示,设8253的端口地址为80H~83H。(1)假设织布机每织0.5米发出一个正脉冲,要求每织120米触发剪裁设备把布剪断,试编写初始化程序。(2)假设系统提供的信号频率为1MHz,要求利用8253的其余通道产生0.1秒的周期信号,试编写相应的初始化程序。答:(1)MOVAL,10HMOVDX,0083HOUTDX,ALMOVDX,0080HMOVAL,240OUTDX,AL8086D0~D7WRRDA0A1A9~A2IO/M8253D0~D7WRRDA0OUT0A1CLK0GATE0CS织布机系统地址译码器+5V图7.21主8259从8259从8259IR0IR7IR0IR1IR2IR7………IR0IR7INTINT或MOVAL,30HMOVDX,0083HOUTDX,ALMOVDX,0080HMOVAX,240OUTDX,ALMOVAL,AHOUTDX,AL(2)参考设计方案:1MHZ的信号频率作为CLK1的输入,时间初值定为1000,OUT1的输出作为CLK2的输入,时间初值定为100,则OUT2输出的周期为0.1s.MOVDX,0083HMOVAL,74HOUTDX,ALMOVDX,0081HMOVAX,1000OUTDX,ALMOVAL,AHOUTDX,AL;初始化定时器1MOVDX,0083HMOVAL,0B4HOUTDX,ALMOVDX,0082HMOVAX,100OUTDX,ALMOVAL,AHOUTDX,AL;初始化定时器2答题时可以有不同的形式,只要满足初始化要求即可。11.在8086系统中有一片8253,其端口地址为80H、82H、84H、86H,可以使用的时钟信号为500KHz。(1)要求利用计数器0在GATE0触发信号作用下,由OUT0输出如图7.22所示信号,试编程实现。(2)利用计数器2在OUT2上产生周期为1298µs的方波信号,请编写初始化程序。(3)将计数器2的当前计数值读入AX寄存器,试编写程序段。500KHzGATE0OUT00.6ms解:(1)计数初值:0.6×500=300程序段:MOVDX,0086HMOVAL,30HOUTDX,AL;设置方式控制字MOVAX,300MOVDX,80HOUTDX,ALMOVAL,AHOUTDX,AL;写入计数初值(2)计数初值:1.298×500=649程序段:MOVDX,0086HMOVAL,0B6HOUTDX,AL;设置方式控制字图7.22MOVAX,649MOVDX,84HOUTDX,ALMOVAL,AHOUTDX,AL;写入计数初值(3)程序段:MOVDX,0086HMOVAL,0B0HOUTDX,AL;设置方式控制字MOVAL,80HOUTDX,AL;计数值锁存MOVDX,0084HINAL,DX;读出计数值MOVBL,ALINAL,DXMOVAH,ALMOVAL,BL12.下面是一个8253的初始化程序段。8253的控制口地址为46H,3个计数器端口地址分别为40H、42H、44H。在8253初始化之前,先将8259A的所有中断进行屏蔽,8259A的奇地址端口为81H。请对下面程序段加详细注释,并用十进制数表示出各计数器的初值。解:INI:CLI;关中断MOVAL,0FFHOUT81H,AL;对8259的IR0~IR7进行屏蔽MOVAL,36HOUT46H,AL;设置计数器0,方式3,二进制计数,写入16位MOVAL,0OUT40H,ALMOVAL,40HOUT40H,AL;写入计数器0的计数初值4000HMOVAL,54HOUT46H,AL;设置计数器1,方式2,二进制计数,只写低8位MOVAL,18HOUT42H,AL;写入计数器1的计数初值18HMOVAL,0A6HINI:CLIOUT46H,ALMOVAL,0FFHMOVAL,18HOUT81H,ALOUT42H,ALMOVAL,36HMOVAL,0A6HOUT46H,ALOUT46H,ALMOVAL,0MOVAL,46HOUT40H,ALOUT44H,ALMOVAL,40HMOVAL,80HOUT40H,ALOUT44H,ALMOVAL,54HOUT46H,AL;设置计数器2,方式3,二进制计数,只写高8位MOVAL,46HOUT44H,AL;写入计数器2的计数初值4600HMOVAL,80HOUT44H,AL;对计数器不起作用