第八至十章习题答案

更新时间:2024-03-18 10:33:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第八章 习题答案

P265

8.5中断向量表的功能是什么?叙述CPU利用中断向量表转入中断服务程序的过程。

答:中断向量表具有根据中断类型号存储相应中断服务程序入口地址的功能。CPU利用中断向量表转入中断服务程序的过程如下:由中断类型号n乘以4获得中断向量在中断向量表中的起始地址,然后把存储在低地址4n、4n+1两单元16位的中断服务程序入口偏移地址置入IP,把存储在高地址4n+2、4n+3两单元16位的中断服务程序入口段地址置入CS,最后跳转到中断服务程序。

8.6叙述可屏蔽中断的响应过程。

答:在开中断(IF=1)和INTR引脚有中断请求信号的情况下,可屏蔽中断响应过程如下: 1) 等待当前指令结束,然后进入中断响应周期; 2) 从微处理器外部的中断控制逻辑获得中断类型号; 3) 当前的PSW、CS、IP的内容依次压入堆栈; 4) 清除PSW中的IF位和TF位为0;

5) 把中断服务程序的入口地址置入IP和CS。

8.18 某8086系统用3片8259A级联构成中断系统,主片中断类型号从10H开始。从片的中断申请连主片的IR4和IR6引脚,它们的中断类型号分别从20H、30H开始。主、从片均采用上升沿触发,非自动中断结束方式。且主片采用特殊全嵌套方式,从片采用完全嵌套方式。请编写他们的初始化程序。

解:设8258A主片的端口地址为20H(A0=0)和 21H(A1=1),第一个8259A从片的端口地址为50H(A0=0)和 51H(A1=1),第二个8259A从片的端口地址为0A0H(A0=0)和 0A1H(A1=1),初始化程序如下:

主片:

MOV AL,00010001B;ICW1:边沿触发,级联

OUT 20H,AL

MOV AL,00010000B;ICW2:中断类型号10H~17H OUT 21H,AL

MOV AL,01010000B;ICW3:IR4和IR6连有从片

OUT 21H,AL

MOV AL,00010001B;ICW4:特殊全嵌套,非缓冲,非自动中断结束 OUT 21H,AL 从片1:

MOV AL,00010001B;ICW1:边沿触发,级联

OUT 50H,AL

MOV AL,00100000B;ICW2:中断类型号20H~27H OUT 51H,AL

MOV AL,00000100B;ICW3:INT引脚连主片IR4

OUT 51H,AL

MOV AL,00000001B;ICW4:完全嵌套,非缓冲,非自动中断结束

1

OUT 51H,AL 从片2:

MOV AL,00010001B;ICW1:边沿触发,级联

OUT 0A0H,AL

MOV AL,00110000B;ICW2:中断类型号30H~37H OUT 0A1H,AL

MOV AL,00000110B;ICW3:INT引脚连主片IR6

OUT 0A1H,AL

MOV AL,00000001B;ICW4:完全嵌套,非缓冲,非自动中断结束 OUT 0A1H,AL

8.19设8259A的端口地址为50H (A0=0) 和51H (A1=1),请给下面的8259A初始化程序加上 注释,说明各命令字的含义。

MOV AL, 13H

OUT 50H, AL MOV AL, 08H OUT 51H, AL MOV AL, 0BH OUT 51H, AL

解:

MOV AL, 13H ;ICW1, 边沿触发,单片,无ICW3 OUT 50H,AL MOV AL, 08H ;ICW2, 中断类型号08H~0FH; OUT 51H, AL MOV AL, 0BH ; 一般全嵌套,主片缓冲,中断非自动结束 OUT 51H, AL

8.20设8259A端口地址为20H和21H,怎样发送清除ISR3的命令? 解:

MOV AL, 63H ;OCW2, SL=1, EOI=1 OUT 20H, AL

8.22给定(SP)=0100H,(SS)=0300H,(PSW)=0240H,以及存储单元的内容(00020H)=0040H, (00022H)=0100H,在段地址为0900H及偏移地址为00A0H的单元中有一条中断指令INT 8,试问执行INT 8指令后,SP、SS、IP、PSW的内容是什么?栈顶的三个字是什么? 解:执行INT8之后,(SP)=00FAH,(SS)=0300H,(IP)=0040H,(PSW)=0040H。 由于INT8为双字节指令,所以栈顶的三个字从上到下分别是 00A2H,0900H,0240H。

第九章 习题答案

P292

9.1下列地址哪些能够分配给8253/8254的计数器0?为什么?(23H、54H、97H、51H、FCH、59H)

2

解:8253/8254的两根地址线要么接A1A0要么接A2A1,值只能为00 23H,00100011B,不可以分配;54H,01010100B,可以分配; 97H,10010111B,不可以分配;51H,01010001B,可以分配; FCH,11111100B,可以分配;59H,01011001B,可以分配;

9.2如果计数器0设定为方式0,GATE0=1,CLK0=1MHz,时常数为N=1000,请画出OUT0的波形。如果计数器1设定为方式1,其它参数与计数器0相同,画出OUT1的波形。 解:

图9.1 OUT0的输出波形

图9.2 OUT1的输出波形

9.3编程实现:将8253计数器0设置成方式4,并置时常数10000,然后处于等待状态,直到CE的内容≤1000后再向下执行。 解:

MOV DX, COUNTD ;写计算器0方式控制字 MOV AL, 00111000B OUT DX, AL

MOV DX, COUNTA MOV AX, 10000 ;写计算器0时常数 OUT DX, AL XCHG AH, AL OUT DX,AL

WAIT_CE: MOV DX, COUNTD

MOV AL, 00H ;写计数器0锁存命令 OUT DX, AL

MOV DX, COUNTA ;读回CE内容

3

IN AL, DX XCHG AL, AH IN AL, DX XCHG AL, AH CMP AX, 1000 ;大于1000,继续等待 JA WAIT_CE

9.8已知8254计数器0的端口地址为40H,控制字寄存器的端口地址为43H,计数时钟频率为2MHz,利用这一通道设计当计数到0时发出中断请求信号,其程序段如下,则中断请求信号的周期是 32.768 ms。

MOV AL,00110010B OUT 43H, AL MOV AL, 0FFH OUT 40H, AL OUT 40H, AL

解:时常数是0FFFFH, 即65535,时钟周期为1/2MHz=0.5us,中断信号的周期为(65535+1)*0.5=32768us=32.768ms

9.9若8254芯片可使用的8086端口地址为D0D0H~D0DFH,试画出系统设计连接图。设加到8254上的时钟信号为2MHz,

(1)利用计数器0~2分别产生下列三种信号:

① 周期为10us的对称方波 ② 每1s产生一个负脉冲 ③ 10s后产生一个负脉冲

每种情况下,说明8254如何连接并编写包括初始化在内的程序段。

(2)希望利用8086通过一专用接口控制8253的GATE端,当CPU使GATE有效开始,20us后在计数器0的OUT端产生一个正脉冲,试设计完成此要求的硬件和软件。 解:

(1) 选用D0D0H~D0DFH中的偶地址DODO,DOD2,DOD4,DOD6为基本地址作为8254的端口

地址,设8086工作在最小方式下。8254端口地址译码电路如下图:

4

? 计数器0输入端加2MHz的时钟信号,GATE0加+5V电压,输出OUT0信号为周期为10μs的对称方波。

初始化代码:

MOV DX,0D0D6H ;写计数器0工作方式 MOV AL,00010110B OUT DX,AL

MOV DX,0D0D0H ;写计数器0时常数 MOV AL,20 OUT DX,AL

?CLK0加2MHz的时钟信号,GATE0,GATE1加+5V电压,OUT0输出加到CLK1做时钟信号,OUT1输出为每1s产生一个负脉冲。 初始代码:

MOV DX,0D0D6H ;写计数器0的工作方式 MOV AL,00010110B OUT DX,AL

MOV DX,0D0D0H ;写计数器0的时常数 MOV AL,100 OUT DX,AL

MOV DX,0D0D6H ;写计数器1的工作方式 MOV AL,01110100B OUT DX,AL

MOV DX,0D0D2H ;写计数器1的时常数 MOV AX,20000 OUT DX,AL XCHG AL,AH OUT DX,AL

?CLK0加2MHz的时钟信号,GATE0,GATE1加+5V电压,OUT0输出加到CLK2做时钟信号,OUT2输出为10s后产生一个负脉冲。 初始代码:

5

本文来源:https://www.bwwdw.com/article/bz28.html

Top