微机原理课后习题答案(7)

2019-09-02 17:41

中断类型码,将它左移两位后,成为中断向的起始地址,存人暂存寄存器。 第二步:执行一个总线写周期,把标志寄存器的值推入堆栈。

第三步:中断允许标志IF 和单步标志TF 置成0,禁止了中断响应过程中有其他可屏 蔽中断进入,还禁止了中断处理过程中出现单步中断。

第四步:执行一个总线写周期,在这个周期内,将CS 的内容推入堆栈。 第五步:执行一个总线写周期,在这个周期内,将IP 的内容推入堆栈。

第六步:执行一个总线读周期,在这个周期内,把中断向量前两个字节作为中断处理 子程序入口地址的偏移量送到IP 寄存器中。

第七步:执行一个总线读周期,在这个周期中,把中断向量后两个字节作为中断子程 序入口地址的段值送到CS 寄存器中。

如果是可屏蔽中断或者软中断,则跳过第一步,而从第二步开始按次序执行到第七步。 8.13 软件中断有哪些特点?在中断处理子程序和主程序的关系上,软件中断和硬件中断有 什么不同之处?

【答】(1)软件中断用一条指令进入中断处理子程序,中断类型码由指令提供。进入中断时, 不需要执行中断响应总线周期,也不从数据总线读取中断类型码。不受中断允许标志IF 的影 响。不过,软件中断的一号中断受标志寄存器中另外一个标志既TF 的影响,只有TF 为1 时, 才能执行单步中断。

(2)正在执行软件中断时,如果有外部硬件中断请求,并且是非屏蔽中断请求,那么, 会在执行完当前指令后立即给予响应。 (3)软中断没有随机性。

8.14 8259A 的ICW2 设置了中断类型码的哪几位?说明对8259A 分别设置ICW2 为30H、38H、 36H 有什么差别?

【答】8259A 的ICW2 设置了中断类型为D7-D3 位。30H 和36H 对应的高五位为:00110,表示 的中断类型码相同;而38H 的高五位为:00111,与前面的两者不同

8.15 试按照如下要求对8259A 设置初始化命令字:系统中有一片8259A,中断请求信号用 边沿触发方式,下面要用ICW4,中断类型码为60H、61H、62H??67H,用特殊全嵌套方式, 不用缓冲方式,采用中断自动结束方式。8259A 的端口地址为96H、94H。 【答】初始化命令字的过程: MOV AL,13H

OUI 94H,AL ;设置ICW1 MOV AL,60H 35

OUT 96H,AL ;设置ICW2 MOV AL,13H

OUT 96H,AL ;设置ICW4

8.16 怎样用8259A 的屏蔽命令字来禁止IR3 和IR5 引腿上的请求?又怎样撤消这一禁止命 令?设8259A 的端口地址为93H、94H。

【答】从8259A 的奇地址端口(93H)进行设置来禁止IR3 和IR5 引腿上的请求,如下: IN AL,93H ;读取屏蔽寄存器OCW1 中的数据 OR AL,28H ;将IR3 和IR5 中对应位置1 OUT 93H,AL ;将OCW1 中置入新的数据 撤消这一禁令如下:

IN AL,93H ;读取屏蔽寄存器OCW1 中的数据 AND AL,0D7H ;清除IR3 和IR5 屏蔽位

OUT 93H,AL ;恢复原来的屏蔽位 习题九定时器/计数器8253

9.1 定时和计数有哪几种实现方法?各有什么特点?

【答】软件定时: 利用CPU 执行某一指令需要一定机器周期的原理,在软件编程时循环执行 一段指令,从而产生累积的定时。优点是不需要增加硬件。缺点是耗费CPU 资源,故软件定 时只适用于短时定时。而且,不同CPU 的时钟频率不同,同一段软件延时程序在不同的机器 上运行,可能结果不同,即兼容性不强。

硬件定时和计数:以硬件计数器构成,计数脉冲触发硬件计数器计数,如果计数脉冲的周期 固定,则计数同时产生定时。优点是不占用CPU 资源,定时精确,定时范围大。缺点是增加 一些硬件开销。

9.2 试说明定时器/计数器芯片Intel 8253 的内部结构。

【答】它由与CPU 的接口、一个控制寄存器以及三个16 位计数器所组成。每个计数器通过3 个引腿和外部联系,1 个为时钟输入端CLK,1 个为门控信号输入端GATE,别1 个为输出端OUT。 9.3 设8253 计数器0—2 和控制字的I/O 地址依次为F8H~FBH,说明如下程序的作用。 MOV AL, 33H OUT 0FBH,AL MOV AL,80H OUT 0F8H,AL MOV AL,50H OUT 0F8H,AL

【答】写入控制字后,输出端OUT 即以高电平作为起始电平,门控信号GATE 上升沿到来时, 边沿触发器受到触发,下一个时钟脉冲时,输出端OUT 变为低电平,并在计数到达0 以前一 直维持低电平,如果中间又来一个门控触发信号,按新的50H 计数值作减1 计数。 MOV AL,33H ;写控制字,定义计数器0 为模式1,计数值为四位BCD 码 OUT 0FBH,AL

MOV AL,80H ;写低位计数值80 OUT 0F8H,AL 36

MOV AL,50H ;写高位计数值50 OUT 0F8H,AL

9.4 8253 每个计数通道与外设接口有哪些信号线,每个信号的用途是什么? 【答】CLK 计数器的时钟输入 GATE 计数器的门脉冲控制输入 OUT 计数器的输出

9.5 定时/计数器芯片Intel 8253 占用几个端口地址?各个端口分别对应什么?

【答】4 个端口地址:片内选址为00 对应计数器0,片内选址为01 对应计数器1,片内选址 为10 对应计数器2,片内选址为11 对应控制寄存器。

9.6 填空:8253 每个通道有6 种工作方式可供选择。若设定某通道为方式0 后,其输 出引脚为低电平;当通道开始计数,信号端每来一个脉冲就减1;当减到0,则输出引 脚输出高电平,表示计数结束。8253 的CLK0 接1.5MHZ 的时钟,欲使OUT0 产生频率为 300kHZ 的方波信号,则8253 的计数值应为__5__,应选用的工作方式是3 。 n=1500000/300000=5

9.7 试按如下要求分别编写8253 的初始化程序,已知8253 的计数器0~ 2 和控制字I/O 地 址依次为04H~07H。

(l)使计数器1 工作在方式0,仅用8 位二进制计数,计数初值为128。 【答】

MOV AL,01010000B OUT 07H,AL MOV AL,128 OUT 05H,AL

(2)使计数器0 工作在方式1,按BCD 码计数,计数值为3000。 【答】

MOV AL,00110011B OUT 07H,AL MOV AX,3000H OUT 04H,AL MOV AL,AH OUT 04H,AL

(3)使计数器2 工在方式2,计数值为02F0H。 【答】

MOV AL,10110100B OUT 07H,AL MOV AX,02F0H OUT 06H,AL MOV AL,AH OUT 06H,AL 37

9.8 设一个8253 的计数器0 产生20ms 的定时信号,试对它进行初始化编程。 【答】设外部时钟频率为f=2MHZ, MOV AL,00110100B OUT CONTROL,AL MOV AX,40000 OUT PORT0,AL MOV AL,AH OUT PORT0,AL

9.9 让一个计数器3 工作在单稳态方式,让它产生脉冲宽度为15ms(设输入频率为2MHz)。 【答】

MOV AL,11110010B OUT CONTROL,AL MOV AX,30000 OUT PORT3,AL MOV AL,AH OUT PORT3,AL

9.10 请把一个8253 与8086CPU 相连,地址为2FF0~2FF3H。

【答】8086 的IO/M 和高位地址A19~A2 经过译码器输出(IO/M=1,A19~A2=00101111111100 时输出有效)连接8253 的CS,低位地址A1、A0 接8253 的A1、A0, RD、WR 接8253 的RD、 WR。AD7~AD0 接8253 的D7~D0。

9.11 某系统中8253 芯片的通道0~2 和控制端口地址分别为330H~333H。定义通道0 工作在

方式2,CLK 0 =2MHz,要求输出OUT 0 为1kHz 的速率波;定义通道l CLK l 输入外部计 数事件,每计满100 个向CPU 发出中断请求。试写出8253 通道0 和通道1 的初始化程序。 【答】MOV DX,333H MOV AL,00100101B

OUT DX,AL ;计数器0 方式设置 MOV DX,330H MOV AL,20H

OUT DX,AL ;计数器0 分频系数为2000 MOV DX,333H

MOV AL,01010100B

OUT DX,AL ;计数器1 方式设置 MOV DX,331H MOV AL,100

OUT DX,AL ;计数器1 的计数值为100

9.12 为了用8253 测量一个事件的持续时间长短,一般都将事件的持续时间转换成一定的脉 冲宽度,试设计测量此脉冲宽度时间的硬件电路和初始化编程。

【答】8253 计数器0 作为计数器,8255PC1 作为计数器输出,8255PC0 作为事件脉冲输入, 通过查询事件脉冲控制计数器计数。内存字单元COUH 和COUL 存计数值,乘以CLK0 的周期就 是事件的长 38

COUH DW 0 COUL DW 0

MOV AL,10000001B

OUT 63H,AL ;8255 方式设置 MOV 00010000B

OUT 43H,AL ;8253 方式设置

L1: IN AL,62H ;查询事件脉冲是否到来 TEST AL,01H

JZ L1 ;事件脉冲未到,继续查询

MOV AL,0 ;事件脉冲到来,启动8253 计数器0 定时 OUT 40H,AL

L2: IN AL,62H ;查询事件脉冲是否结束 TEST AL,01H

JZ STOP ;事件脉冲结束

TEST AL,02H ;查询8253 计数器0 定时

JZ L2 ;8253 计数器0 定时未到,继续查询事件脉冲 INC COUH ;8253 计数器0 定时到,计数单元高位字加1 MOV AL,0 ;再启动8253 计数器0 定时 OUT 40H

JMP L2 ;继续查询事件脉冲 STOP: MOV AL,00000000B

OUT 43H,AL ;事件脉冲结束,锁存8253 计数器0 的当前计数器值 IN AL,40H ;读8253 计数器0 的当前计数低字节 MOV AH,AL

IN AL,40H ;读8253 计数器0 的当前计数高字节 XCHG AH,AL

NEG AX ;获得计数单元低位字 MOV COUL,AX

9.13 利用8253 的记时功能,结合软件方法设计一个能记秒,分,小时的时钟。

【答】根据8253 计数器2 输入系统时钟为1.19MHz,分频输出为100Hz 的连续脉冲,引发中 断。

COU DB 0 ;0.01 秒计数单元 SEC DB 0 ;秒计数单元 MIN DB 0 ;分计数单元 HOU DB 0 ;小时计数单元

INIT: MOV AX,0 ;设置计数中断的中断向量 MOV DS,AX

MOV [54H*4],OFFSET INT54 MOV [54H*4+2],SEG INT54 STI

MOV AL,10110100B 39

OUT 43H,AL ;8253 计数器2 方式设置 MOV AX,11900

OUT 42H,AL ;写计数值低位 MOV AL,AH

OUT 42H,AL ;写计数值高位

INT54: STI ;每0.01 秒进入中断服务子程序 INC COU ; 0.01 秒计数单元加1 CMP COU,100 ;判断是否到1 秒 JNZ TORET MOV COU,0 INC SEC

CMP SEC,60 ;判断是否到1 分 JNE TORET MOV SEC,0 INC MIN

CMP MIN,60 ;判断是否到1 小时 JNE TORET MOV MIN,0 INC HOU

CMP HOU,24 ;判断是否到1 天 JNE TORET MOV HOU,0 TORET: IRET

9.14 试设计一个记时器方案,它应能对场内的长跑成绩进行记时,要求精度达1/100 秒, 且能记录运动员每跑一圈的成绩。

【答】8253 计数器0 作为定时器,为Mode3,根据CLK0 周期设定计数值(COUH、COUL)使其


微机原理课后习题答案(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2007年高考生物考试大纲新课标

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: